diff --git a/.php_cs b/.php_cs index 9908b553d..0495abb08 100644 --- a/.php_cs +++ b/.php_cs @@ -21,7 +21,9 @@ return PhpCsFixer\Config::create() 'not_operator_with_successor_space' => false, 'no_useless_else' => true, 'no_useless_return' => true, + 'no_unused_imports' => true, 'yoda_style' => false, + 'single_quote' => true, 'increment_style' => ['style' => 'post'], // 三元运算符的空格 'ternary_operator_spaces' => true, @@ -30,5 +32,15 @@ return PhpCsFixer\Config::create() ]) ->setFinder( PhpCsFixer\Finder::create() - ->in(__DIR__ . '/app') + ->exclude('addons') + ->exclude('docker') + ->exclude('docs') + ->exclude('library') + ->exclude('node_modules') + ->exclude('public') + ->exclude('resources') + ->exclude('storage') + ->exclude('templates') + ->exclude('vendor') + ->in(__DIR__) ); \ No newline at end of file diff --git a/app/Constant/ApiV2Constant.php b/app/Constant/ApiV2Constant.php index c2ade707c..eb6c9aa0f 100644 --- a/app/Constant/ApiV2Constant.php +++ b/app/Constant/ApiV2Constant.php @@ -100,6 +100,7 @@ class ApiV2Constant * @OA\Property(property="avatar",type="string",description="头像"), * @OA\Property(property="nick_name",type="string",description="昵称"), * @OA\Property(property="mobile",type="string",description="手机号"), + * @OA\Property(property="credit1",type="int",description="积分"), * @OA\Property(property="role_id",type="integer",description="会员套餐id"), * @OA\Property(property="role_expired_at",type="string",description="会员套餐到期时间"), * @OA\Property(property="role",type="object",ref="#/components/schemas/Role"), @@ -111,7 +112,7 @@ class ApiV2Constant */ public const MODEL_MEMBER_FIELD = [ 'id', 'avatar', 'nick_name', 'mobile', 'is_lock', 'is_active', 'role_id', 'role_expired_at', - 'invite_balance', 'role', 'is_password_set', 'is_set_nickname', + 'invite_balance', 'role', 'is_password_set', 'is_set_nickname', 'credit1', ]; /** * @OpenApi\Annotations\Schemas( @@ -252,7 +253,7 @@ class ApiV2Constant * ) */ public const MODEL_PROMO_CODE_FIELD = [ - 'id', 'code', 'expired_at', 'invited_user_reward', + 'id', 'code', 'expired_at', 'invited_user_reward', 'invite_user_reward', ]; /** @@ -288,4 +289,37 @@ class ApiV2Constant public const MODEL_NOTIFICATON_FIELD = [ 'id', 'notifiable_id', 'data', 'read_at', 'created_at', ]; + + /** + * @OpenApi\Annotations\Schemas( + * @OA\Schema( + * schema="UserCredit1Record", + * type="object", + * title="积分明细", + * @OA\Property(property="sum",type="integer",description="变动"), + * @OA\Property(property="remark",type="string",description="说明"), + * @OA\Property(property="created_at",type="integer",description="时间"), + * ), + * ) + */ + public const MODEL_CREDIT1_RECORD_FIELD = [ + 'sum', 'remark', 'created_at', + ]; + + /** + * @OpenApi\Annotations\Schemas( + * @OA\Schema( + * schema="CourseAttach", + * type="object", + * title="课程附件", + * @OA\Property(property="id",type="integer",description="id"), + * @OA\Property(property="name",type="string",description="附件名"), + * @OA\Property(property="size",type="integer",description="附件大小,单位:字节"), + * @OA\Property(property="extension",type="string",description="附件扩展"), + * ), + * ) + */ + public const MODEL_COURSE_ATTACH_FIELD = [ + 'id', 'name', 'size', 'extension', + ]; } diff --git a/app/Constant/FrontendConstant.php b/app/Constant/FrontendConstant.php index 04e490243..50aacba0d 100644 --- a/app/Constant/FrontendConstant.php +++ b/app/Constant/FrontendConstant.php @@ -52,4 +52,11 @@ class FrontendConstant const ORDER_GOODS_TYPE_BOOK = 'BOOK'; const API_GUARD = 'apiv2'; + + public const CREDIT1_REMARK_REGISTER = 'credit1_remark_register'; + public const CREDIT1_REMARK_WATCHED_COURSE = 'credit1_remark_watched_course'; + public const CREDIT1_REMARK_WATCHED_VIDEO = 'credit1_remark_watched_video'; + public const CREDIT1_REMARK_WATCHED_ORDER = 'credit1_remark_order'; + public const CREDIT1_REMARK_WATCHED_INVITE = 'credit1_remark_invite'; + public const CREDIT1_REMARK_WATCHED_OTHER = 'credit1_remark_other'; } diff --git a/app/Events/UserLoginEvent.php b/app/Events/UserLoginEvent.php index 1d5b10170..ef8f2a4df 100644 --- a/app/Events/UserLoginEvent.php +++ b/app/Events/UserLoginEvent.php @@ -11,13 +11,10 @@ namespace App\Events; -use Illuminate\Broadcasting\Channel; use Illuminate\Queue\SerializesModels; use Illuminate\Broadcasting\PrivateChannel; -use Illuminate\Broadcasting\PresenceChannel; use Illuminate\Foundation\Events\Dispatchable; use Illuminate\Broadcasting\InteractsWithSockets; -use Illuminate\Contracts\Broadcasting\ShouldBroadcast; class UserLoginEvent { diff --git a/app/Http/Controllers/Api/V2/CourseController.php b/app/Http/Controllers/Api/V2/CourseController.php index e4fcac5e2..29ff34e50 100644 --- a/app/Http/Controllers/Api/V2/CourseController.php +++ b/app/Http/Controllers/Api/V2/CourseController.php @@ -165,6 +165,10 @@ public function detail($id) // 课程视频观看进度 $videoWatchedProgress = []; + // 课程附件 + $attach = $this->courseService->getCourseAttach($course['id']); + $attach = arr2_clear($attach, ApiV2Constant::MODEL_COURSE_ATTACH_FIELD); + if ($this->check()) { $isBuy = $this->businessState->isBuyCourse($this->id(), $course['id']); $isCollect = $this->userService->likeCourseStatus($this->id(), $course['id']); @@ -173,7 +177,7 @@ public function detail($id) $videoWatchedProgress = array_column($userVideoWatchRecords, null, 'video_id'); } - return $this->data(compact('course', 'chapters', 'videos', 'isBuy', 'isCollect', 'videoWatchedProgress')); + return $this->data(compact('course', 'chapters', 'videos', 'isBuy', 'isCollect', 'videoWatchedProgress', 'attach')); } /** @@ -266,4 +270,31 @@ public function like($id) $status = $this->userService->likeACourse($this->id(), $course['id']); return $this->data($status); } + + /** + * @OA\Get( + * path="/course/attach/{id}/download", + * @OA\Parameter(in="path",name="id",description="课程附件id",required=true,@OA\Schema(type="integer")), + * summary="课程附件下载", + * tags={"课程"}, + * @OA\Response( + * description="",response=200, + * @OA\JsonContent( + * @OA\Property(property="code",type="integer",description="状态码"), + * @OA\Property(property="message",type="string",description="消息"), + * @OA\Property(property="data",type="object",description=""), + * ) + * ) + * ) + * @param $id + */ + public function attachDownload($id) + { + $courseAttach = $this->courseService->getAttach($id); + if (!$this->businessState->isBuyCourse($this->id(), $courseAttach['course_id'])) { + return $this->error(__('please buy course')); + } + $this->courseService->courseAttachDownloadTimesInc($courseAttach['id']); + return response()->download(storage_path('app/attach/' . $courseAttach['path'])); + } } diff --git a/app/Http/Controllers/Api/V2/LoginController.php b/app/Http/Controllers/Api/V2/LoginController.php index edee09727..0d9f911c5 100644 --- a/app/Http/Controllers/Api/V2/LoginController.php +++ b/app/Http/Controllers/Api/V2/LoginController.php @@ -11,8 +11,6 @@ namespace App\Http\Controllers\Api\V2; -use Socialite; -use Illuminate\Support\Str; use Illuminate\Http\Request; use App\Events\UserLoginEvent; use App\Constant\ApiV2Constant; diff --git a/app/Http/Controllers/Api/V2/MemberController.php b/app/Http/Controllers/Api/V2/MemberController.php index eb8af666e..200495f01 100644 --- a/app/Http/Controllers/Api/V2/MemberController.php +++ b/app/Http/Controllers/Api/V2/MemberController.php @@ -15,7 +15,6 @@ use Illuminate\Http\Request; use App\Constant\ApiV2Constant; use App\Businesses\BusinessState; -use App\Constant\FrontendConstant; use App\Exceptions\ApiV2Exception; use Illuminate\Support\Facades\Auth; use App\Services\Base\Services\ConfigService; @@ -24,6 +23,7 @@ use App\Services\Order\Services\OrderService; use App\Services\Course\Services\VideoService; use App\Services\Course\Services\CourseService; +use App\Services\Member\Services\CreditService; use App\Http\Requests\ApiV2\AvatarChangeRequest; use App\Http\Requests\ApiV2\MobileChangeRequest; use App\Services\Order\Services\PromoCodeService; @@ -37,6 +37,7 @@ use App\Http\Requests\ApiV2\InviteBalanceWithdrawRequest; use App\Services\Course\Interfaces\VideoServiceInterface; use App\Services\Course\Interfaces\CourseServiceInterface; +use App\Services\Member\Interfaces\CreditServiceInterface; use App\Services\Member\Services\UserInviteBalanceService; use App\Services\Order\Interfaces\PromoCodeServiceInterface; use App\Services\Member\Interfaces\SocialiteServiceInterface; @@ -788,15 +789,15 @@ public function inviteUsers(Request $request) 'list' => $list, 'total' => $total, ] = $this->userService->inviteUsers($page, $pageSize); - + $list = array_map(function ($item) { - $mobile = '******'.mb_substr($item['mobile'], 6); + $mobile = '******' . mb_substr($item['mobile'], 6); return [ 'mobile' => $mobile, 'created_at' => Carbon::parse($item['created_at'])->format('Y-m-d'), ]; }, $list); - + return $this->data([ 'total' => $total, 'data' => $list, @@ -826,12 +827,12 @@ public function withdrawRecords(Request $request) { $page = $request->input('page', 1); $pageSize = $request->input('page_size', 10); - + [ - 'list' => $list, + 'list' => $list, 'total' => $total, ] = $this->userInviteBalanceService->currentUserOrderPaginate($page, $pageSize); - + return $this->data([ 'total' => $total, 'data' => $list, @@ -839,33 +840,69 @@ public function withdrawRecords(Request $request) } /** - * @OA\Post( - * path="/member/withdraw", - * summary="邀请余额提现", - * tags={"用户"}, - * @OA\RequestBody(description="",@OA\JsonContent( - * @OA\Property(property="channel",description="渠道",type="string"), - * @OA\Property(property="channel_name",description="姓名",type="string"), - * @OA\Property(property="channel_account",description="账号",type="string"), - * @OA\Property(property="total",description="提现金额",type="integer"), - * )), - * @OA\Response( - * description="",response=200, - * @OA\JsonContent( - * @OA\Property(property="code",type="integer",description="状态码"), - * @OA\Property(property="message",type="string",description="消息"), - * @OA\Property(property="data",type="object",description=""), - * ) - * ) - * ) - * - * @param InviteBalanceWithdrawRequest $request - * @return void - */ + * @OA\Post( + * path="/member/withdraw", + * summary="邀请余额提现", + * tags={"用户"}, + * @OA\RequestBody(description="",@OA\JsonContent( + * @OA\Property(property="channel",description="渠道",type="string"), + * @OA\Property(property="channel_name",description="姓名",type="string"), + * @OA\Property(property="channel_account",description="账号",type="string"), + * @OA\Property(property="total",description="提现金额",type="integer"), + * )), + * @OA\Response( + * description="",response=200, + * @OA\JsonContent( + * @OA\Property(property="code",type="integer",description="状态码"), + * @OA\Property(property="message",type="string",description="消息"), + * @OA\Property(property="data",type="object",description=""), + * ) + * ) + * ) + */ public function createWithdraw(InviteBalanceWithdrawRequest $request) { $data = $request->filldata(); $this->userInviteBalanceService->createCurrentUserWithdraw($data['total'], $data['channel']); return $this->success(); } + + /** + * @OA\Get( + * path="/member/credit1Records", + * summary="积分明细", + * tags={"用户"}, + * @OA\Response( + * description="",response=200, + * @OA\JsonContent( + * @OA\Property(property="code",type="integer",description="状态码"), + * @OA\Property(property="message",type="string",description="消息"), + * @OA\Property(property="data",type="object",description="", + * @OA\Property(property="total",type="integer",description="总数"), + * @OA\Property(property="data",type="array",description="列表",@OA\Items(ref="#/components/schemas/UserCredit1Record")), + * ), + * ) + * ) + * ) + * @return \Illuminate\Http\JsonResponse + */ + public function credit1Records(Request $request, CreditServiceInterface $creditService) + { + /** + * @var CreditService $creditService + */ + + $page = $request->input('page', 1); + $pageSize = $request->input('page_size', 10); + + $list = $creditService->getCredit1RecordsPaginate($this->id(), $page, $pageSize); + $list = arr2_clear($list, ApiV2Constant::MODEL_CREDIT1_RECORD_FIELD); + + $total = $creditService->getCredit1RecordsCount($this->id()); + + return $this->data([ + 'total' => $total, + 'data' => $list, + ]); + } } diff --git a/app/Http/Controllers/Api/V2/OrderController.php b/app/Http/Controllers/Api/V2/OrderController.php index 4ea5e04c7..0fc429dba 100644 --- a/app/Http/Controllers/Api/V2/OrderController.php +++ b/app/Http/Controllers/Api/V2/OrderController.php @@ -13,7 +13,6 @@ use Illuminate\Http\Request; use App\Constant\ApiV2Constant; -use Illuminate\Support\Facades\Auth; use App\Services\Member\Services\RoleService; use App\Services\Member\Services\UserService; use App\Services\Order\Services\OrderService; @@ -179,8 +178,7 @@ public function createVideoOrder(Request $request) $videoId = $request->input('video_id'); $video = $this->videoService->find($videoId); if ($video['is_ban_sell'] === ApiV2Constant::YES) { - flash(__('this video cannot be sold')); - return back(); + return $this->error(__('this video cannot be sold')); } if ($video['charge'] === 0) { return $this->error(__('video cant buy')); diff --git a/app/Http/Controllers/Api/V2/OtherController.php b/app/Http/Controllers/Api/V2/OtherController.php index d7bf2b84f..a30b98df9 100644 --- a/app/Http/Controllers/Api/V2/OtherController.php +++ b/app/Http/Controllers/Api/V2/OtherController.php @@ -23,6 +23,7 @@ * @OA\Property(property="webname",type="string",description="网站名"), * @OA\Property(property="icp",type="string",description="备案信息"), * @OA\Property(property="user_protocol",type="string",description="用户协议url"), + * @OA\Property(property="user_private_protocol",type="string",description="隐私政策协议url"), * @OA\Property(property="aboutus",type="integer",description="关于我们url"), * @OA\Property(property="logo",type="object",description="logo",@OA\Property( * @OA\Property(property="logo",type="string",description="默认logo"), @@ -66,8 +67,6 @@ public function __construct(ConfigServiceInterface $configService) * ) * ) * ) - * - * @return void */ public function config() { @@ -76,6 +75,7 @@ public function config() 'webname' => $this->configService->getName(), 'icp' => $this->configService->getIcp(), 'user_protocol' => route('user.protocol'), + 'user_private_protocol' => route('user.private_protocol'), 'aboutus' => route('aboutus'), 'logo' => $this->configService->getLogo(), 'player' => [ diff --git a/app/Http/Controllers/Api/V2/PaymentController.php b/app/Http/Controllers/Api/V2/PaymentController.php index ac2b248bd..9e1729bb2 100644 --- a/app/Http/Controllers/Api/V2/PaymentController.php +++ b/app/Http/Controllers/Api/V2/PaymentController.php @@ -14,7 +14,6 @@ use Illuminate\Http\Request; use App\Constant\FrontendConstant; use App\Exceptions\SystemException; -use Illuminate\Support\Facades\Log; use App\Services\Base\Services\CacheService; use App\Services\Order\Services\OrderService; use App\Services\Base\Interfaces\CacheServiceInterface; diff --git a/app/Http/Controllers/Api/V2/RegisterController.php b/app/Http/Controllers/Api/V2/RegisterController.php index 2e87ea38c..bf047bed3 100644 --- a/app/Http/Controllers/Api/V2/RegisterController.php +++ b/app/Http/Controllers/Api/V2/RegisterController.php @@ -11,7 +11,6 @@ namespace App\Http\Controllers\Api\V2; -use Illuminate\Support\Str; use App\Constant\ApiV2Constant; use App\Exceptions\ApiV2Exception; use App\Http\Requests\ApiV2\RegisterRequest; diff --git a/app/Http/Controllers/Api/V2/VideoController.php b/app/Http/Controllers/Api/V2/VideoController.php index 009400682..77092e397 100644 --- a/app/Http/Controllers/Api/V2/VideoController.php +++ b/app/Http/Controllers/Api/V2/VideoController.php @@ -14,7 +14,6 @@ use Illuminate\Http\Request; use App\Constant\ApiV2Constant; use App\Businesses\BusinessState; -use Illuminate\Support\Facades\Auth; use App\Http\Requests\ApiV2\CommentRequest; use App\Services\Base\Services\ConfigService; use App\Services\Member\Services\UserService; diff --git a/app/Http/Controllers/Backend/Api/V1/CourseAttachController.php b/app/Http/Controllers/Backend/Api/V1/CourseAttachController.php new file mode 100644 index 000000000..303842486 --- /dev/null +++ b/app/Http/Controllers/Backend/Api/V1/CourseAttachController.php @@ -0,0 +1,45 @@ + + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + +namespace App\Http\Controllers\Backend\Api\V1; + +use Illuminate\Http\Request; +use App\Services\Course\Models\Course; +use App\Services\Course\Models\CourseAttach; +use App\Http\Requests\Backend\CourseAttachRequest; + +class CourseAttachController extends BaseController +{ + public function index(Request $request) + { + $courseId = $request->input('course_id'); + $course = Course::query()->where('id', $courseId)->firstOrFail(); + $attach = CourseAttach::query()->where('course_id', $courseId)->get(); + return $this->successData([ + 'data' => $attach, + 'course' => $course, + ]); + } + + public function store(CourseAttachRequest $request) + { + $data = $request->filldata(); + CourseAttach::create($data); + return $this->success(); + } + + public function destroy($id) + { + $attach = CourseAttach::query()->where('id', $id)->firstOrFail(); + $attach->delete(); + return $this->success(); + } +} diff --git a/app/Http/Controllers/Backend/Api/V1/DashboardController.php b/app/Http/Controllers/Backend/Api/V1/DashboardController.php index 1afb34832..d5501869e 100644 --- a/app/Http/Controllers/Backend/Api/V1/DashboardController.php +++ b/app/Http/Controllers/Backend/Api/V1/DashboardController.php @@ -11,7 +11,6 @@ namespace App\Http\Controllers\Backend\Api\V1; -use Carbon\Carbon; use App\Meedu\MeEdu; use App\Services\Member\Models\User; use App\Services\Order\Models\Order; diff --git a/app/Http/Controllers/Backend/Api/V1/MemberController.php b/app/Http/Controllers/Backend/Api/V1/MemberController.php index d49e7757b..33494af0a 100644 --- a/app/Http/Controllers/Backend/Api/V1/MemberController.php +++ b/app/Http/Controllers/Backend/Api/V1/MemberController.php @@ -25,6 +25,7 @@ use App\Http\Requests\Backend\MemberRequest; use App\Services\Member\Models\UserLikeCourse; use App\Services\Course\Models\CourseUserRecord; +use App\Services\Member\Models\UserCreditRecord; use App\Services\Member\Models\UserJoinRoleRecord; use App\Events\UserInviteBalanceWithdrawHandledEvent; use App\Services\Member\Models\UserInviteBalanceWithdrawOrder; @@ -108,6 +109,7 @@ public function update(Request $request, $id) 'is_lock', 'is_active', 'role_id', 'role_expired_at', 'invite_user_id', 'invite_balance', 'invite_user_expired_at', ]); + $data['role_id'] = (int)($data['role_id'] ?? 0); ($data['password'] ?? '') && $data['password'] = Hash::make($data['password']); $user->fill($data)->save(); return $this->success(); @@ -203,4 +205,16 @@ public function userInvite(Request $request, $id) 'data' => $data, ]); } + + public function credit1Records(Request $request, $id) + { + $records = UserCreditRecord::query() + ->where('user_id', $id) + ->where('field', 'credit1') + ->orderByDesc('id') + ->paginate($request->input('size', 20)); + return $this->successData([ + 'data' => $records, + ]); + } } diff --git a/app/Http/Controllers/Frontend/AjaxController.php b/app/Http/Controllers/Frontend/AjaxController.php index 9376bdf29..be34fba61 100644 --- a/app/Http/Controllers/Frontend/AjaxController.php +++ b/app/Http/Controllers/Frontend/AjaxController.php @@ -98,12 +98,9 @@ public function __construct( } /** - * 课程评论. - * * @param CourseOrVideoCommentCreateRequest $request * @param $courseId - * - * @return array + * @return \Illuminate\Http\JsonResponse */ public function courseCommentHandler(CourseOrVideoCommentCreateRequest $request, $courseId) { @@ -124,12 +121,9 @@ public function courseCommentHandler(CourseOrVideoCommentCreateRequest $request, } /** - * 视频评论. - * * @param CourseOrVideoCommentCreateRequest $request * @param $videoId - * - * @return array + * @return \Illuminate\Http\JsonResponse */ public function videoCommentHandler(CourseOrVideoCommentCreateRequest $request, $videoId) { @@ -150,8 +144,6 @@ public function videoCommentHandler(CourseOrVideoCommentCreateRequest $request, } /** - * 邀请码检测 - * * @param Request $request * @return \Illuminate\Http\JsonResponse * @throws \Illuminate\Contracts\Container\BindingResolutionException @@ -179,8 +171,6 @@ public function promoCodeCheck(Request $request) } /** - * 密码登录 - * * @param LoginPasswordRequest $request * @return \Illuminate\Http\JsonResponse */ @@ -205,8 +195,6 @@ public function passwordLogin(LoginPasswordRequest $request) } /** - * 手机号登录 - * * @param MobileLoginRequest $request * @return \Illuminate\Http\JsonResponse */ @@ -229,8 +217,6 @@ public function mobileLogin(MobileLoginRequest $request) } /** - * 注册 - * * @param RegisterPasswordRequest $request * @return \Illuminate\Http\JsonResponse */ @@ -255,8 +241,6 @@ public function register(RegisterPasswordRequest $request) } /** - * 修改密码 - * * @param PasswordResetRequest $request * @return \Illuminate\Http\JsonResponse */ @@ -273,10 +257,8 @@ public function passwordReset(PasswordResetRequest $request) } /** - * 手机号绑定 - * * @param MobileBindRequest $request - * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector + * @return \Illuminate\Http\JsonResponse * @throws \App\Exceptions\ServiceException */ public function mobileBind(MobileBindRequest $request) @@ -286,9 +268,6 @@ public function mobileBind(MobileBindRequest $request) return $this->success(); } - /** - * @return \Illuminate\Contracts\Routing\UrlGenerator|\Illuminate\Session\SessionManager|\Illuminate\Session\Store|mixed|string - */ protected function redirectTo() { $callbackUrl = session()->has(FrontendConstant::LOGIN_CALLBACK_URL_KEY) ? @@ -297,8 +276,6 @@ protected function redirectTo() } /** - * 修改密码 - * * @param MemberPasswordResetRequest $request * @return \Illuminate\Http\JsonResponse * @throws \Exception @@ -311,8 +288,6 @@ public function changePassword(MemberPasswordResetRequest $request) } /** - * 修改头像 - * * @param AvatarChangeRequest $request * @return \Illuminate\Http\JsonResponse */ @@ -324,8 +299,6 @@ public function changeAvatar(AvatarChangeRequest $request) } /** - * 修改昵称 - * * @param NicknameChangeRequest $request * @return \Illuminate\Http\JsonResponse * @throws \App\Exceptions\ServiceException @@ -338,8 +311,6 @@ public function changeNickname(NicknameChangeRequest $request) } /** - * 消息标记已读 - * * @param ReadAMessageRequest $request * @return \Illuminate\Http\JsonResponse */ @@ -351,8 +322,6 @@ public function notificationMarkAsRead(ReadAMessageRequest $request) } /** - * 邀请余额提现 - * * @param InviteBalanceWithdrawRequest $request * @return \Illuminate\Http\JsonResponse * @throws \App\Exceptions\ServiceException @@ -370,8 +339,6 @@ public function inviteBalanceWithdraw(InviteBalanceWithdrawRequest $request) } /** - * 收藏课程 - * * @param $id * @return \Illuminate\Http\JsonResponse */ diff --git a/app/Http/Controllers/Frontend/CourseController.php b/app/Http/Controllers/Frontend/CourseController.php index f1a89652a..b1a4103a7 100644 --- a/app/Http/Controllers/Frontend/CourseController.php +++ b/app/Http/Controllers/Frontend/CourseController.php @@ -149,6 +149,9 @@ public function show(Request $request, $id, $slug) $keywords = $course['seo_keywords']; $description = $course['seo_description']; + // 课程附件 + $attach = $this->courseService->getCourseAttach($course['id']); + // 是否购买 $isBuy = false; // 喜欢课程 @@ -195,7 +198,8 @@ public function show(Request $request, $id, $slug) 'isLikeCourse', 'firstVideo', 'scene', - 'videoWatchedProgress' + 'videoWatchedProgress', + 'attach' )); } @@ -242,4 +246,14 @@ public function buyHandler(Request $request) return redirect(route('order.pay', ['scene' => $paymentScene, 'payment' => $payment, 'order_id' => $order['order_id']])); } + + public function attachDownload($id) + { + $courseAttach = $this->courseService->getAttach($id); + if (!$this->businessState->isBuyCourse(Auth::id(), $courseAttach['course_id'])) { + abort(403, __('please buy course')); + } + $this->courseService->courseAttachDownloadTimesInc($courseAttach['id']); + return response()->download(storage_path('app/attach/' . $courseAttach['path'])); + } } diff --git a/app/Http/Controllers/Frontend/IndexController.php b/app/Http/Controllers/Frontend/IndexController.php index 053c16db0..f32c091b1 100644 --- a/app/Http/Controllers/Frontend/IndexController.php +++ b/app/Http/Controllers/Frontend/IndexController.php @@ -129,6 +129,12 @@ public function userProtocol() return v('frontend.index.user_protocol', compact('protocol')); } + public function userPrivateProtocol() + { + $protocol = $this->configService->getMemberPrivateProtocol(); + return v('frontend.index.user_private_protocol', compact('protocol')); + } + public function aboutus() { $aboutus = $this->configService->getAboutus(); diff --git a/app/Http/Controllers/Frontend/MemberController.php b/app/Http/Controllers/Frontend/MemberController.php index 9f9cdc7f5..30b002b6c 100644 --- a/app/Http/Controllers/Frontend/MemberController.php +++ b/app/Http/Controllers/Frontend/MemberController.php @@ -20,6 +20,7 @@ use App\Services\Order\Services\OrderService; use App\Services\Course\Services\VideoService; use App\Services\Course\Services\CourseService; +use App\Services\Member\Services\CreditService; use App\Services\Order\Services\PromoCodeService; use App\Services\Member\Services\SocialiteService; use App\Http\Requests\Frontend\Member\MobileBindRequest; @@ -30,6 +31,7 @@ use App\Services\Course\Interfaces\VideoServiceInterface; use App\Http\Requests\Frontend\Member\AvatarChangeRequest; use App\Services\Course\Interfaces\CourseServiceInterface; +use App\Services\Member\Interfaces\CreditServiceInterface; use App\Services\Member\Services\UserInviteBalanceService; use App\Services\Order\Interfaces\PromoCodeServiceInterface; use App\Services\Member\Interfaces\SocialiteServiceInterface; @@ -415,9 +417,6 @@ public function showPromoCodePage(Request $request) )); } - /** - * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector - */ public function generatePromoCode() { if (!$this->businessState->canGenerateInviteCode($this->user())) { @@ -429,11 +428,6 @@ public function generatePromoCode() return redirect(route('member.promo_code')); } - /** - * @param InviteBalanceWithdrawRequest $request - * @return \Illuminate\Http\RedirectResponse - * @throws \App\Exceptions\ServiceException - */ public function createInviteBalanceWithdrawOrder(InviteBalanceWithdrawRequest $request) { $total = $request->post('total'); @@ -446,4 +440,19 @@ public function createInviteBalanceWithdrawOrder(InviteBalanceWithdrawRequest $r flash(__('success'), 'success'); return back(); } + + public function credit1Records(Request $request, CreditServiceInterface $creditService) + { + /** + * @var CreditService $creditService + */ + $page = $request->input('page', 1); + $pageSize = 10; + $records = $creditService->getCredit1RecordsPaginate(Auth::id(), $page, $pageSize); + $total = $creditService->getCredit1RecordsCount(Auth::id()); + $records = $this->paginator($records, $total, $page, $pageSize); + + $title = __('title.member.credit1_records'); + return v('frontend.member.credit1_records', compact('title', 'records')); + } } diff --git a/app/Http/Controllers/Frontend/VideoController.php b/app/Http/Controllers/Frontend/VideoController.php index 144fc1303..acf3e7f96 100644 --- a/app/Http/Controllers/Frontend/VideoController.php +++ b/app/Http/Controllers/Frontend/VideoController.php @@ -96,6 +96,8 @@ public function show(Request $request, $courseId, $id, $slug) $scene = $request->input('scene'); $course = $this->courseService->find($courseId); $video = $this->videoService->find($id); + + // 视频浏览次数 $this->videoService->viewNumInc($video['id']); // 视频评论 diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php index 2b928b34d..16a8fb838 100644 --- a/app/Http/Kernel.php +++ b/app/Http/Kernel.php @@ -68,7 +68,7 @@ class Kernel extends HttpKernel ], 'api' => [ - 'throttle:60,1', + 'throttle:120,1', 'bindings', ], ]; diff --git a/app/Http/Requests/Backend/CourseAttachRequest.php b/app/Http/Requests/Backend/CourseAttachRequest.php new file mode 100644 index 000000000..29b6730dc --- /dev/null +++ b/app/Http/Requests/Backend/CourseAttachRequest.php @@ -0,0 +1,55 @@ + + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + +namespace App\Http\Requests\Backend; + +class CourseAttachRequest extends BaseRequest +{ + public function rules() + { + return [ + 'name' => 'required', + 'file' => 'required|mimes:zip,pdf,jpeg,jpg,gif,png,md,doc,txt,csv', + ]; + } + + public function messages() + { + return [ + 'name.required' => '请输入附件名', + 'file.required' => '请上传附件', + 'file.mimes' => '格式错误,仅支持:zip,pdf,jpeg,jpg,gif,png,md,doc,txt,csv格式', + ]; + } + + public function filldata() + { + $data = [ + 'course_id' => $this->input('course_id'), + 'name' => $this->input('name'), + 'only_buyer' => $this->input('only_buyer', 1), + ]; + + $path = $this->input('path'); + if ($this->hasFile('file')) { + $file = $this->file('file'); + $size = $file->getSize(); + $path = $this->file('file')->store(config('meedu.upload.attach.course.path'), ['disk' => config('meedu.upload.attach.course.disk')]); + $data['extension'] = $file->getClientOriginalExtension(); + $data['size'] = $file->getSize(); + $data['disk'] = config('meedu.upload.attach.course.disk'); + } + + $data['path'] = $path; + + return $data; + } +} diff --git a/app/Listeners/OrderCancelEvent/InviteBalanceResumeListener.php b/app/Listeners/OrderCancelEvent/InviteBalanceResumeListener.php index e11704fb3..09264127d 100644 --- a/app/Listeners/OrderCancelEvent/InviteBalanceResumeListener.php +++ b/app/Listeners/OrderCancelEvent/InviteBalanceResumeListener.php @@ -12,8 +12,6 @@ namespace App\Listeners\OrderCancelEvent; use App\Events\OrderCancelEvent; -use Illuminate\Queue\InteractsWithQueue; -use Illuminate\Contracts\Queue\ShouldQueue; class InviteBalanceResumeListener { diff --git a/app/Listeners/PaymentSuccessEvent/Credit1RewardListener.php b/app/Listeners/PaymentSuccessEvent/Credit1RewardListener.php new file mode 100644 index 000000000..69dd53453 --- /dev/null +++ b/app/Listeners/PaymentSuccessEvent/Credit1RewardListener.php @@ -0,0 +1,76 @@ + + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + +namespace App\Listeners\PaymentSuccessEvent; + +use App\Constant\FrontendConstant; +use App\Events\PaymentSuccessEvent; +use Illuminate\Queue\InteractsWithQueue; +use Illuminate\Contracts\Queue\ShouldQueue; +use App\Services\Base\Services\ConfigService; +use App\Services\Member\Services\CreditService; +use App\Services\Member\Services\NotificationService; +use App\Services\Base\Interfaces\ConfigServiceInterface; +use App\Services\Member\Interfaces\CreditServiceInterface; +use App\Services\Member\Interfaces\NotificationServiceInterface; + +class Credit1RewardListener implements ShouldQueue +{ + use InteractsWithQueue; + + /** + * @var ConfigService + */ + protected $configService; + + /** + * @var CreditService + */ + protected $creditService; + + /** + * @var NotificationService + */ + protected $notificationService; + + /** + * Credit1RewardListener constructor. + * @param ConfigServiceInterface $configService + * @param CreditServiceInterface $creditService + * @param NotificationServiceInterface $notificationService + */ + public function __construct(ConfigServiceInterface $configService, CreditServiceInterface $creditService, NotificationServiceInterface $notificationService) + { + $this->configService = $configService; + $this->creditService = $creditService; + $this->notificationService = $notificationService; + } + + /** + * Handle the event. + * + * @param PaymentSuccessEvent $event + * @return void + */ + public function handle(PaymentSuccessEvent $event) + { + $credit1 = $this->configService->getPaidOrderSceneCredit1(); + $credit = (int)($credit1 * $event->order['charge']); + if ($credit <= 0) { + // 未开启积分奖励 + return; + } + + $message = __(FrontendConstant::CREDIT1_REMARK_WATCHED_ORDER); + $this->creditService->createCredit1Record($event->order['user_id'], $credit, $message); + $this->notificationService->notifyCredit1Message($event->order['user_id'], $credit, $message); + } +} diff --git a/app/Listeners/PaymentSuccessEvent/InviteUserRewardListener.php b/app/Listeners/PaymentSuccessEvent/InviteUserRewardListener.php index b3a094b45..9f272200c 100644 --- a/app/Listeners/PaymentSuccessEvent/InviteUserRewardListener.php +++ b/app/Listeners/PaymentSuccessEvent/InviteUserRewardListener.php @@ -13,6 +13,8 @@ use Carbon\Carbon; use App\Events\PaymentSuccessEvent; +use Illuminate\Queue\InteractsWithQueue; +use Illuminate\Contracts\Queue\ShouldQueue; use App\Services\Base\Services\ConfigService; use App\Services\Member\Services\UserService; use App\Services\Base\Interfaces\ConfigServiceInterface; @@ -20,8 +22,9 @@ use App\Services\Member\Services\UserInviteBalanceService; use App\Services\Member\Interfaces\UserInviteBalanceServiceInterface; -class InviteUserRewardListener +class InviteUserRewardListener implements ShouldQueue { + use InteractsWithQueue; /** * @var UserService diff --git a/app/Listeners/PaymentSuccessEvent/OrderPaidStatusChangeListener.php b/app/Listeners/PaymentSuccessEvent/OrderPaidStatusChangeListener.php index 47c254d75..213cb4575 100644 --- a/app/Listeners/PaymentSuccessEvent/OrderPaidStatusChangeListener.php +++ b/app/Listeners/PaymentSuccessEvent/OrderPaidStatusChangeListener.php @@ -12,7 +12,6 @@ namespace App\Listeners\PaymentSuccessEvent; use App\Businesses\BusinessState; -use App\Events\PaymentSuccessEvent; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Contracts\Queue\ShouldQueue; use App\Services\Order\Services\OrderService; diff --git a/app/Listeners/PaymentSuccessEvent/PromoCodeListener.php b/app/Listeners/PaymentSuccessEvent/PromoCodeListener.php index 3e0aa7788..e0b393110 100644 --- a/app/Listeners/PaymentSuccessEvent/PromoCodeListener.php +++ b/app/Listeners/PaymentSuccessEvent/PromoCodeListener.php @@ -14,13 +14,22 @@ use App\Businesses\BusinessState; use App\Constant\FrontendConstant; use App\Events\PaymentSuccessEvent; +use Illuminate\Queue\InteractsWithQueue; +use Illuminate\Contracts\Queue\ShouldQueue; +use App\Services\Base\Services\ConfigService; use App\Services\Member\Services\UserService; +use App\Services\Member\Services\CreditService; use App\Services\Order\Services\PromoCodeService; +use App\Services\Member\Services\NotificationService; +use App\Services\Base\Interfaces\ConfigServiceInterface; use App\Services\Member\Interfaces\UserServiceInterface; +use App\Services\Member\Interfaces\CreditServiceInterface; use App\Services\Order\Interfaces\PromoCodeServiceInterface; +use App\Services\Member\Interfaces\NotificationServiceInterface; -class PromoCodeListener +class PromoCodeListener implements ShouldQueue { + use InteractsWithQueue; /** * @var PromoCodeService @@ -32,20 +41,44 @@ class PromoCodeListener */ protected $userService; + /** + * @var ConfigService + */ + protected $configService; + + /** + * @var CreditService + */ + protected $creditService; + + /** + * @var NotificationService + */ + protected $notificationService; + /** * PromoCodeListener constructor. * @param PromoCodeServiceInterface $promoCodeService * @param BusinessState $businessState * @param UserServiceInterface $userService + * @param ConfigServiceInterface $configService + * @param CreditServiceInterface $creditService + * @param NotificationServiceInterface $notificationService */ public function __construct( PromoCodeServiceInterface $promoCodeService, BusinessState $businessState, - UserServiceInterface $userService + UserServiceInterface $userService, + ConfigServiceInterface $configService, + CreditServiceInterface $creditService, + NotificationServiceInterface $notificationService ) { $this->promoCodeService = $promoCodeService; $this->businessState = $businessState; $this->userService = $userService; + $this->configService = $configService; + $this->creditService = $creditService; + $this->notificationService = $notificationService; } /** @@ -74,15 +107,22 @@ public function handle(PaymentSuccessEvent $event) return; } - // 修改用户上级 $orderUser = $this->userService->find($order['user_id']); if ($orderUser['invite_user_id'] === 0) { // 当前用户使用了优惠码,且没有上级 // 那么将该优惠码的注册设置为当前用户的上级 $this->userService->updateInviteUserId($orderUser['id'], $code['user_id'], $code['invite_user_reward']); + + // 邀请积分奖励 + if ($credit1 = $this->configService->getInviteSceneCredit1()) { + $message = __(FrontendConstant::CREDIT1_REMARK_WATCHED_INVITE); + $this->creditService->createCredit1Record($code['user_id'], $credit1, $message); + $this->notificationService->notifyCredit1Message($code['user_id'], $credit1, $message); + } } - // 记录用户使用invite promo_code的状态 + // 记录用户使用invite_promo_code的状态 + // 每个用户只能只能使用一次其它用户的邀请码 if ($orderUser['is_used_promo_code'] !== FrontendConstant::YES) { $this->userService->setUsedPromoCode($orderUser['id']); } diff --git a/app/Listeners/UserCourseWatchedEvent/UserCourseWatchedCredit1RewardListener.php b/app/Listeners/UserCourseWatchedEvent/UserCourseWatchedCredit1RewardListener.php new file mode 100644 index 000000000..a681a1b3b --- /dev/null +++ b/app/Listeners/UserCourseWatchedEvent/UserCourseWatchedCredit1RewardListener.php @@ -0,0 +1,73 @@ + + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + +namespace App\Listeners\UserCourseWatchedEvent; + +use App\Constant\FrontendConstant; +use App\Events\UserCourseWatchedEvent; +use Illuminate\Queue\InteractsWithQueue; +use Illuminate\Contracts\Queue\ShouldQueue; +use App\Services\Base\Services\ConfigService; +use App\Services\Member\Services\CreditService; +use App\Services\Member\Services\NotificationService; +use App\Services\Base\Interfaces\ConfigServiceInterface; +use App\Services\Member\Interfaces\CreditServiceInterface; +use App\Services\Member\Interfaces\NotificationServiceInterface; + +class UserCourseWatchedCredit1RewardListener implements ShouldQueue +{ + use InteractsWithQueue; + + /** + * @var ConfigService + */ + protected $configService; + + /** + * @var CreditService + */ + protected $creditService; + + /** + * @var NotificationService + */ + protected $notificationService; + + /** + * UserCourseWatchedCredit1RewardListener constructor. + * @param ConfigServiceInterface $configService + * @param CreditServiceInterface $creditService + * @param NotificationServiceInterface $notificationService + */ + public function __construct(ConfigServiceInterface $configService, CreditServiceInterface $creditService, NotificationServiceInterface $notificationService) + { + $this->configService = $configService; + $this->creditService = $creditService; + $this->notificationService = $notificationService; + } + + /** + * Handle the event. + * + * @param UserCourseWatchedEvent $event + * @return void + */ + public function handle(UserCourseWatchedEvent $event) + { + $credit1 = $this->configService->getWatchedCourseSceneCredit1(); + if ($credit1 <= 0) { + return; + } + $message = __(FrontendConstant::CREDIT1_REMARK_WATCHED_COURSE); + $this->creditService->createCredit1Record($event->userId, $credit1, $message); + $this->notificationService->notifyCredit1Message($event->userId, $credit1, $message); + } +} diff --git a/app/Listeners/UserCourseWatchedEvent/UserCourseWatchedListener.php b/app/Listeners/UserCourseWatchedEvent/UserCourseWatchedListener.php index 8e01b90a7..f7ed1dc05 100644 --- a/app/Listeners/UserCourseWatchedEvent/UserCourseWatchedListener.php +++ b/app/Listeners/UserCourseWatchedEvent/UserCourseWatchedListener.php @@ -12,11 +12,14 @@ namespace App\Listeners\UserCourseWatchedEvent; use App\Events\UserCourseWatchedEvent; +use Illuminate\Queue\InteractsWithQueue; +use Illuminate\Contracts\Queue\ShouldQueue; use App\Services\Course\Services\CourseService; use App\Services\Course\Interfaces\CourseServiceInterface; -class UserCourseWatchedListener +class UserCourseWatchedListener implements ShouldQueue { + use InteractsWithQueue; /** * @var CourseService diff --git a/app/Listeners/UserInviteBalanceWithdrawCreatedEvent/NotifyListener.php b/app/Listeners/UserInviteBalanceWithdrawCreatedEvent/NotifyListener.php index ab352f275..e537b6d40 100644 --- a/app/Listeners/UserInviteBalanceWithdrawCreatedEvent/NotifyListener.php +++ b/app/Listeners/UserInviteBalanceWithdrawCreatedEvent/NotifyListener.php @@ -11,8 +11,6 @@ namespace App\Listeners\UserInviteBalanceWithdrawCreatedEvent; -use Illuminate\Queue\InteractsWithQueue; -use Illuminate\Contracts\Queue\ShouldQueue; use App\Events\UserInviteBalanceWithdrawCreatedEvent; class NotifyListener diff --git a/app/Listeners/UserInviteBalanceWithdrawHandledEvent/NotifyListener.php b/app/Listeners/UserInviteBalanceWithdrawHandledEvent/NotifyListener.php index f63784e30..b67d06caa 100644 --- a/app/Listeners/UserInviteBalanceWithdrawHandledEvent/NotifyListener.php +++ b/app/Listeners/UserInviteBalanceWithdrawHandledEvent/NotifyListener.php @@ -12,14 +12,17 @@ namespace App\Listeners\UserInviteBalanceWithdrawHandledEvent; use App\Constant\FrontendConstant; +use Illuminate\Queue\InteractsWithQueue; +use Illuminate\Contracts\Queue\ShouldQueue; use App\Events\UserInviteBalanceWithdrawHandledEvent; use App\Services\Member\Services\NotificationService; use App\Services\Member\Services\UserInviteBalanceService; use App\Services\Member\Interfaces\NotificationServiceInterface; use App\Services\Member\Interfaces\UserInviteBalanceServiceInterface; -class NotifyListener +class NotifyListener implements ShouldQueue { + use InteractsWithQueue; /** * @var NotificationService diff --git a/app/Listeners/UserInviteBalanceWithdrawHandledEvent/RefundBalanceListener.php b/app/Listeners/UserInviteBalanceWithdrawHandledEvent/RefundBalanceListener.php index 6159da723..111df1067 100644 --- a/app/Listeners/UserInviteBalanceWithdrawHandledEvent/RefundBalanceListener.php +++ b/app/Listeners/UserInviteBalanceWithdrawHandledEvent/RefundBalanceListener.php @@ -12,12 +12,16 @@ namespace App\Listeners\UserInviteBalanceWithdrawHandledEvent; use App\Constant\FrontendConstant; +use Illuminate\Queue\InteractsWithQueue; +use Illuminate\Contracts\Queue\ShouldQueue; use App\Events\UserInviteBalanceWithdrawHandledEvent; use App\Services\Member\Services\UserInviteBalanceService; use App\Services\Member\Interfaces\UserInviteBalanceServiceInterface; -class RefundBalanceListener +class RefundBalanceListener implements ShouldQueue { + use InteractsWithQueue; + /** * @var UserInviteBalanceService */ diff --git a/app/Listeners/UserRegisterEvent/RegisterCredit1RewardListener.php b/app/Listeners/UserRegisterEvent/RegisterCredit1RewardListener.php new file mode 100644 index 000000000..2a8f09e9d --- /dev/null +++ b/app/Listeners/UserRegisterEvent/RegisterCredit1RewardListener.php @@ -0,0 +1,75 @@ + + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + +namespace App\Listeners\UserRegisterEvent; + +use App\Events\UserRegisterEvent; +use App\Constant\FrontendConstant; +use Illuminate\Queue\InteractsWithQueue; +use Illuminate\Contracts\Queue\ShouldQueue; +use App\Services\Base\Services\ConfigService; +use App\Services\Member\Services\CreditService; +use App\Services\Member\Services\NotificationService; +use App\Services\Base\Interfaces\ConfigServiceInterface; +use App\Services\Member\Interfaces\CreditServiceInterface; +use App\Services\Member\Interfaces\NotificationServiceInterface; + +class RegisterCredit1RewardListener implements ShouldQueue +{ + use InteractsWithQueue; + + /** + * @var ConfigService + */ + protected $configService; + + /** + * @var CreditService + */ + protected $creditService; + + /** + * @var NotificationService + */ + protected $notificationService; + + /** + * RegisterCredit1RewardListener constructor. + * @param ConfigServiceInterface $configService + * @param CreditServiceInterface $creditService + * @param NotificationServiceInterface $notificationService + */ + public function __construct(ConfigServiceInterface $configService, CreditServiceInterface $creditService, NotificationServiceInterface $notificationService) + { + $this->configService = $configService; + $this->creditService = $creditService; + $this->notificationService = $notificationService; + } + + /** + * Handle the event. + * + * @param UserRegisterEvent $event + * @return void + */ + public function handle(UserRegisterEvent $event) + { + $credit1 = $this->configService->getRegisterSceneCredit1(); + if ($credit1 <= 0) { + // 未开启注册送积分 + return; + } + + $message = __(FrontendConstant::CREDIT1_REMARK_REGISTER); + $this->creditService->createCredit1Record($event->userId, $credit1, $message); + $this->notificationService->notifyCredit1Message($event->userId, $credit1, $message); + } +} diff --git a/app/Listeners/UserRegisterEvent/RegisterIpRecordListener.php b/app/Listeners/UserRegisterEvent/RegisterIpRecordListener.php index cd56c6ed4..9e7efd1c5 100644 --- a/app/Listeners/UserRegisterEvent/RegisterIpRecordListener.php +++ b/app/Listeners/UserRegisterEvent/RegisterIpRecordListener.php @@ -13,11 +13,14 @@ use App\Events\UserRegisterEvent; use App\Jobs\UserRegisterIpToAreaJob; +use Illuminate\Queue\InteractsWithQueue; +use Illuminate\Contracts\Queue\ShouldQueue; use App\Services\Member\Services\UserService; use App\Services\Member\Interfaces\UserServiceInterface; -class RegisterIpRecordListener +class RegisterIpRecordListener implements ShouldQueue { + use InteractsWithQueue; /** * @var UserService diff --git a/app/Listeners/UserVideoWatchedEvent/UserVideoWatchedCredit1RewardListener.php b/app/Listeners/UserVideoWatchedEvent/UserVideoWatchedCredit1RewardListener.php new file mode 100644 index 000000000..677e00f94 --- /dev/null +++ b/app/Listeners/UserVideoWatchedEvent/UserVideoWatchedCredit1RewardListener.php @@ -0,0 +1,74 @@ + + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + +namespace App\Listeners\UserVideoWatchedEvent; + +use App\Constant\FrontendConstant; +use App\Events\UserVideoWatchedEvent; +use Illuminate\Queue\InteractsWithQueue; +use Illuminate\Contracts\Queue\ShouldQueue; +use App\Services\Base\Services\ConfigService; +use App\Services\Member\Services\CreditService; +use App\Services\Member\Services\NotificationService; +use App\Services\Base\Interfaces\ConfigServiceInterface; +use App\Services\Member\Interfaces\CreditServiceInterface; +use App\Services\Member\Interfaces\NotificationServiceInterface; + +class UserVideoWatchedCredit1RewardListener implements ShouldQueue +{ + use InteractsWithQueue; + + /** + * @var ConfigService + */ + protected $configService; + + /** + * @var CreditService + */ + protected $creditService; + + /** + * @var NotificationService + */ + protected $notificationService; + + /** + * UserCourseWatchedCredit1RewardListener constructor. + * @param ConfigServiceInterface $configService + * @param CreditServiceInterface $creditService + * @param NotificationServiceInterface $notificationService + */ + public function __construct(ConfigServiceInterface $configService, CreditServiceInterface $creditService, NotificationServiceInterface $notificationService) + { + $this->configService = $configService; + $this->creditService = $creditService; + $this->notificationService = $notificationService; + } + + /** + * Handle the event. + * + * @param UserVideoWatchedEvent $event + * @return void + */ + public function handle(UserVideoWatchedEvent $event) + { + $credit1 = $this->configService->getWatchedVideoSceneCredit1(); + if ($credit1 <= 0) { + return; + } + + $message = __(FrontendConstant::CREDIT1_REMARK_WATCHED_VIDEO); + $this->creditService->createCredit1Record($event->userId, $credit1, $message); + $this->notificationService->notifyCredit1Message($event->userId, $credit1, $message); + } +} diff --git a/app/Listeners/UserVideoWatchedEvent/UserVideoWatchedListener.php b/app/Listeners/UserVideoWatchedEvent/UserVideoWatchedListener.php index 73c392e46..6a0d19fbb 100644 --- a/app/Listeners/UserVideoWatchedEvent/UserVideoWatchedListener.php +++ b/app/Listeners/UserVideoWatchedEvent/UserVideoWatchedListener.php @@ -13,6 +13,8 @@ use App\Events\UserVideoWatchedEvent; use App\Events\UserCourseWatchedEvent; +use Illuminate\Queue\InteractsWithQueue; +use Illuminate\Contracts\Queue\ShouldQueue; use App\Services\Member\Services\UserService; use App\Services\Course\Services\VideoService; use App\Services\Course\Services\CourseService; @@ -20,8 +22,9 @@ use App\Services\Course\Interfaces\VideoServiceInterface; use App\Services\Course\Interfaces\CourseServiceInterface; -class UserVideoWatchedListener +class UserVideoWatchedListener implements ShouldQueue { + use InteractsWithQueue; /** * @var CourseService @@ -67,17 +70,24 @@ public function handle(UserVideoWatchedEvent $event) // 检测课程下的视频是否全部观看,全部观看完的话触发课程观看完成事件 $courseVideos = $this->videoService->getCourseList([$video['course_id']]); $courseVideoIds = array_column($courseVideos, 'id'); + + // 解析已看完的视频id数组 $recordVideos = $this->userService->getUserVideoWatchRecords($event->userId, $video['course_id']); - $recordVideoIds = array_column($recordVideos, 'video_id'); - $diff = array_diff($courseVideoIds, $recordVideoIds); + $recordVideoIds = []; + foreach ($recordVideos as $item) { + if ($item['watched_at']) { + $recordVideoIds[] = $item['video_id']; + } + } - // 课程进度计算 + // 求交集 + $diff = array_diff($courseVideoIds, $recordVideoIds); - if (!$diff) { - // 全部看完 + if (empty($diff)) { + // 交集为空说明全部看完了 event(new UserCourseWatchedEvent($event->userId, $video['course_id'])); } else { - $progress = (int) (round(count($recordVideoIds) / count($courseVideoIds), 2) * 100); + $progress = (int)(round(count($recordVideoIds) / count($courseVideoIds), 2) * 100); $this->courseService->setUserWatchProgress($event->userId, $video['course_id'], $progress); } } diff --git a/app/Meedu/MeEdu.php b/app/Meedu/MeEdu.php index f2f63d741..986da945c 100644 --- a/app/Meedu/MeEdu.php +++ b/app/Meedu/MeEdu.php @@ -13,5 +13,5 @@ class MeEdu { - const VERSION = 'v3.0'; + const VERSION = 'v3.1'; } diff --git a/app/Meedu/Setting.php b/app/Meedu/Setting.php index 58e65a9f8..d8a6f58f2 100644 --- a/app/Meedu/Setting.php +++ b/app/Meedu/Setting.php @@ -58,19 +58,9 @@ public function append($params) public function sync() { $saveConfig = $this->get(); - if (!isset($saveConfig['version'])) { - // 老版本的配置保存方式 - collect($this->get())->map(function ($item, $key) { - config([$key => $item]); - }); - } else { - // v1版本的配置保存方式 - if ((int)$saveConfig['version'] === self::VERSION) { - $arr = array_compress($saveConfig); - foreach ($arr as $key => $item) { - config([$key => $item]); - } - } + $arr = array_compress($saveConfig); + foreach ($arr as $key => $item) { + config([$key => $item]); } $this->specialSync(); } @@ -93,6 +83,8 @@ protected function specialSync(): void */ public function put(array $setting): void { + // 删除一些敏感信息 + $setting = $this->removePrivateConfig($setting); $this->files->put($this->dist, json_encode($setting)); } @@ -132,4 +124,19 @@ public function getCanEditConfig(): array ]; return $config; } + + protected function removePrivateConfig(array $config): array + { + unset($config['app']['key']); + unset($config['app']['cipher']); + unset($config['app']['log']); + unset($config['app']['log_level']); + unset($config['app']['providers']); + unset($config['app']['aliases']); + unset($config['app']['timezone']); + unset($config['app']['locale']); + unset($config['app']['fallback_locale']); + unset($config['app']['env']); + return $config; + } } diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 4482f8474..fca1a1089 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -11,7 +11,6 @@ namespace App\Providers; -use Carbon\Carbon; use App\Meedu\Setting; use Illuminate\Support\Facades\Schema; use Illuminate\Support\ServiceProvider; @@ -41,10 +40,6 @@ public function boot() */ public function register() { - if ($this->app->environment(['dev', 'local'])) { - $this->app->register(\Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider::class); - } - // 服务注册 $this->app->register(BaseServiceRegisterProvider::class); $this->app->register(MemberServiceRegisterProvider::class); diff --git a/app/Providers/EventServiceProvider.php b/app/Providers/EventServiceProvider.php index 536db5f7c..b2eca43da 100644 --- a/app/Providers/EventServiceProvider.php +++ b/app/Providers/EventServiceProvider.php @@ -27,6 +27,7 @@ class EventServiceProvider extends ServiceProvider '\App\Listeners\PaymentSuccessEvent\OrderPaidStatusChangeListener', '\App\Listeners\PaymentSuccessEvent\PromoCodeListener', '\App\Listeners\PaymentSuccessEvent\InviteUserRewardListener', + '\App\Listeners\PaymentSuccessEvent\Credit1RewardListener', ], 'App\Events\OrderCancelEvent' => [ '\App\Listeners\OrderCancelEvent\PromoCodeResumeListener', @@ -47,6 +48,7 @@ class EventServiceProvider extends ServiceProvider 'App\Events\UserRegisterEvent' => [ 'App\Listeners\UserRegisterEvent\WelcomeMessageListener', 'App\Listeners\UserRegisterEvent\RegisterIpRecordListener', + 'App\Listeners\UserRegisterEvent\RegisterCredit1RewardListener', ], 'App\Events\UserLoginEvent' => [ 'App\Listeners\UserLoginEvent\SafeAlertListener', @@ -61,9 +63,11 @@ class EventServiceProvider extends ServiceProvider ], 'App\Events\UserVideoWatchedEvent' => [ 'App\Listeners\UserVideoWatchedEvent\UserVideoWatchedListener', + 'App\Listeners\UserVideoWatchedEvent\UserVideoWatchedCredit1RewardListener', ], 'App\Events\UserCourseWatchedEvent' => [ 'App\Listeners\UserCourseWatchedEvent\UserCourseWatchedListener', + 'App\Listeners\UserCourseWatchedEvent\UserCourseWatchedCredit1RewardListener', ], ]; diff --git a/app/Services/Base/Services/ConfigService.php b/app/Services/Base/Services/ConfigService.php index ba7a53a84..9a71794c9 100644 --- a/app/Services/Base/Services/ConfigService.php +++ b/app/Services/Base/Services/ConfigService.php @@ -16,15 +16,56 @@ class ConfigService implements ConfigServiceInterface { + + /** + * @return int + */ + public function getWatchedVideoSceneCredit1():int + { + return (int)config('meedu.member.credit1.watched_video'); + } + + /** + * @return int + */ + public function getWatchedCourseSceneCredit1():int + { + return (int)config('meedu.member.credit1.watched_course'); + } + + /** + * @return int + */ + public function getPaidOrderSceneCredit1():int + { + return (int)config('meedu.member.credit1.paid_order'); + } + + /** + * @return int + */ + public function getRegisterSceneCredit1(): int + { + return (int)config('meedu.member.credit1.register'); + } + + /** + * @return int + */ + public function getInviteSceneCredit1(): int + { + return (int)config('meedu.member.credit1.invite'); + } + /** * 获取服务配置 * * @param string $app * @return array */ - public function getServiceConfig(string $app):array + public function getServiceConfig(string $app): array { - return config('services.'.$app, []); + return config('services.' . $app, []); } /** @@ -42,7 +83,7 @@ public function getName(): string * * @return string */ - public function getIcp():string + public function getIcp(): string { return config('meedu.system.icp', ''); } @@ -52,7 +93,7 @@ public function getIcp():string * * @return string */ - public function getPlayerCover():string + public function getPlayerCover(): string { return config('meedu.system.player_thumb', ''); } @@ -62,7 +103,7 @@ public function getPlayerCover():string * * @return array */ - public function getPlayer():array + public function getPlayer(): array { return config('meedu.system.player'); } @@ -89,6 +130,15 @@ public function getMemberProtocol(): string return config('meedu.member.protocol', ''); } + /** + * 获取用户隐私协议 + * @return string + */ + public function getMemberPrivateProtocol(): string + { + return config('meedu.member.private_protocol', ''); + } + /** * 关于我们 * @return string @@ -221,7 +271,7 @@ public function getAlipayPay(): array */ public function getCacheStatus(): bool { - return (int) config('meedu.system.cache.status') === FrontendConstant::YES; + return (int)config('meedu.system.cache.status') === FrontendConstant::YES; } /** @@ -351,7 +401,7 @@ public function getMeEduConfig(): array * * @return integer */ - public function getEnabledMobileBindAlert():int + public function getEnabledMobileBindAlert(): int { return (int)config('meedu.member.enabled_mobile_bind_alert', 0); } @@ -393,6 +443,6 @@ public function getTencentWechatMiniConfig(): array */ public function getAliyunPrivatePlayStatus(): bool { - return (int) config('meedu.system.player.enabled_aliyun_private') === 1; + return (int)config('meedu.system.player.enabled_aliyun_private') === 1; } } diff --git a/app/Services/Course/Models/CourseAttach.php b/app/Services/Course/Models/CourseAttach.php new file mode 100644 index 000000000..790caca85 --- /dev/null +++ b/app/Services/Course/Models/CourseAttach.php @@ -0,0 +1,27 @@ + + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + +namespace App\Services\Course\Models; + +use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\SoftDeletes; + +class CourseAttach extends Model +{ + use SoftDeletes; + + protected $table = 'course_attach'; + + protected $fillable = [ + 'course_id', 'name', 'path', 'only_buyer', 'download_times', 'extension', + 'disk', 'size', + ]; +} diff --git a/app/Services/Course/Services/CourseService.php b/app/Services/Course/Services/CourseService.php index 000be8d9e..33ba08907 100644 --- a/app/Services/Course/Services/CourseService.php +++ b/app/Services/Course/Services/CourseService.php @@ -14,6 +14,7 @@ use Carbon\Carbon; use App\Constant\FrontendConstant; use App\Services\Course\Models\Course; +use App\Services\Course\Models\CourseAttach; use App\Services\Base\Services\ConfigService; use App\Services\Course\Models\CourseChapter; use App\Services\Course\Models\CourseUserRecord; @@ -244,4 +245,32 @@ public function userLearningCoursesPaginate(int $userId, int $page, int $pageSiz return compact('list', 'total'); } + + /** + * 获取课程附件 + * @param int $courseId + * @return array + */ + public function getCourseAttach(int $courseId): array + { + return CourseAttach::query()->select(['name', 'id', 'extension', 'size', 'download_times'])->where('course_id', $courseId)->get()->toArray(); + } + + /** + * 课程附件下载次数自增 + * @param int $id + */ + public function courseAttachDownloadTimesInc(int $id): void + { + CourseAttach::query()->where('id', $id)->increment('download_times', 1); + } + + /** + * @param int $id + * @return array + */ + public function getAttach(int $id): array + { + return CourseAttach::query()->where('id', $id)->firstOrFail()->toArray(); + } } diff --git a/app/Services/Member/Interfaces/CreditServiceInterface.php b/app/Services/Member/Interfaces/CreditServiceInterface.php new file mode 100644 index 000000000..5e5e53344 --- /dev/null +++ b/app/Services/Member/Interfaces/CreditServiceInterface.php @@ -0,0 +1,16 @@ + + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + +namespace App\Services\Member\Interfaces; + +interface CreditServiceInterface +{ +} diff --git a/app/Services/Member/Models/UserCreditRecord.php b/app/Services/Member/Models/UserCreditRecord.php new file mode 100644 index 000000000..5bec91645 --- /dev/null +++ b/app/Services/Member/Models/UserCreditRecord.php @@ -0,0 +1,29 @@ + + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + +namespace App\Services\Member\Models; + +use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\SoftDeletes; + +class UserCreditRecord extends Model +{ + use SoftDeletes; + + public const FIELD_CREDIT1 = 'credit1'; + public const FIELD_CREDIT2 = 'credit2'; + + protected $table = 'user_credit_records'; + + protected $fillable = [ + 'user_id', 'field', 'sum', 'remark', + ]; +} diff --git a/app/Services/Member/Providers/MemberServiceRegisterProvider.php b/app/Services/Member/Providers/MemberServiceRegisterProvider.php index 8e853c573..acc9a1abe 100644 --- a/app/Services/Member/Providers/MemberServiceRegisterProvider.php +++ b/app/Services/Member/Providers/MemberServiceRegisterProvider.php @@ -13,13 +13,14 @@ use Illuminate\Support\ServiceProvider; use App\Services\Member\Services\RoleService; -use App\Services\Member\Services\UserService; +use App\Services\Member\Services\CreditService; use App\Services\Member\Services\DeliverService; use App\Services\Member\Proxies\UserServiceProxy; use App\Services\Member\Services\SocialiteService; use App\Services\Member\Services\NotificationService; use App\Services\Member\Interfaces\RoleServiceInterface; use App\Services\Member\Interfaces\UserServiceInterface; +use App\Services\Member\Interfaces\CreditServiceInterface; use App\Services\Member\Interfaces\DeliverServiceInterface; use App\Services\Member\Interfaces\SocialiteServiceInterface; use App\Services\Member\Proxies\UserInviteBalanceServiceProxy; @@ -36,5 +37,6 @@ public function register() $this->app->instance(NotificationServiceInterface::class, $this->app->make(NotificationService::class)); $this->app->instance(SocialiteServiceInterface::class, $this->app->make(SocialiteService::class)); $this->app->instance(UserInviteBalanceServiceInterface::class, $this->app->make(UserInviteBalanceServiceProxy::class)); + $this->app->instance(CreditServiceInterface::class, $this->app->make(CreditService::class)); } } diff --git a/app/Services/Member/Proxies/UserInviteBalanceServiceProxy.php b/app/Services/Member/Proxies/UserInviteBalanceServiceProxy.php index e5832f82d..e347c098f 100644 --- a/app/Services/Member/Proxies/UserInviteBalanceServiceProxy.php +++ b/app/Services/Member/Proxies/UserInviteBalanceServiceProxy.php @@ -11,9 +11,7 @@ namespace App\Services\Member\Proxies; -use Illuminate\Support\Facades\Auth; use App\Meedu\ServiceProxy\ServiceProxy; -use App\Meedu\ServiceProxy\Lock\LockInfo; use App\Services\Member\Services\UserInviteBalanceService; use App\Services\Member\Interfaces\UserInviteBalanceServiceInterface; diff --git a/app/Services/Member/Services/CreditService.php b/app/Services/Member/Services/CreditService.php new file mode 100644 index 000000000..c81bfa0fd --- /dev/null +++ b/app/Services/Member/Services/CreditService.php @@ -0,0 +1,56 @@ + + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + +namespace App\Services\Member\Services; + +use Illuminate\Support\Facades\DB; +use App\Services\Member\Models\User; +use App\Services\Member\Models\UserCreditRecord; +use App\Services\Member\Interfaces\CreditServiceInterface; + +class CreditService implements CreditServiceInterface +{ + public function createCredit1Record(int $userId, int $sum, string $remark = ''): void + { + DB::transaction(function () use ($userId, $sum, $remark) { + // 积分扣除 + User::query() + ->where('id', $userId) + ->increment(UserCreditRecord::FIELD_CREDIT1, $sum); + + UserCreditRecord::create([ + 'user_id' => $userId, + 'sum' => $sum, + 'remark' => $remark, + 'field' => UserCreditRecord::FIELD_CREDIT1, + ]); + }); + } + + public function getCredit1RecordsPaginate(int $userId, int $page, int $pageSize): array + { + return UserCreditRecord::query() + ->where('user_id', $userId) + ->where('field', UserCreditRecord::FIELD_CREDIT1) + ->forPage($page, $pageSize) + ->orderByDesc('id') + ->get() + ->toArray(); + } + + public function getCredit1RecordsCount(int $userId): int + { + return UserCreditRecord::query() + ->where('user_id', $userId) + ->where('field', UserCreditRecord::FIELD_CREDIT1) + ->count(); + } +} diff --git a/app/Services/Member/Services/NotificationService.php b/app/Services/Member/Services/NotificationService.php index d647e353c..67df63c49 100644 --- a/app/Services/Member/Services/NotificationService.php +++ b/app/Services/Member/Services/NotificationService.php @@ -19,6 +19,20 @@ class NotificationService implements NotificationServiceInterface { + /** + * @param int $userId + * @param int $credit1 + * @param string $message + */ + public function notifyCredit1Message(int $userId, int $credit1, string $message): void + { + /** + * @var User + */ + $user = User::findOrFail($userId); + $user->notify(new SimpleMessageNotification(sprintf('积分变动:%d,备注:%s', $credit1, $message))); + } + /** * @param int $id * @param string $orderId diff --git a/app/Services/Member/Services/UserService.php b/app/Services/Member/Services/UserService.php index e5bd11196..603e2fd1e 100644 --- a/app/Services/Member/Services/UserService.php +++ b/app/Services/Member/Services/UserService.php @@ -524,7 +524,7 @@ public function recordUserVideoWatch(int $userId, int $courseId, int $videoId, i if ($record) { if ($record->watched_at === null && $record->watch_seconds < $duration) { - // 如果有记录,那么在没有看完的情况下继续记录 + // 如果有记录[没看完 && 当前时间超过已记录的时间] $data = ['watch_seconds' => $duration]; $isWatched && $data['watched_at'] = Carbon::now(); $record->fill($data)->save(); diff --git a/bootstrap/app.php b/bootstrap/app.php index f2801adf6..38dd1078f 100755 --- a/bootstrap/app.php +++ b/bootstrap/app.php @@ -1,15 +1,13 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ $app = new Illuminate\Foundation\Application( realpath(__DIR__.'/../') diff --git a/config/app.php b/config/app.php index 98c3bfcdc..4a985c418 100644 --- a/config/app.php +++ b/config/app.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + return [ /* diff --git a/config/auth.php b/config/auth.php index 7c0767934..fa0689662 100644 --- a/config/auth.php +++ b/config/auth.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + return [ /* diff --git a/config/broadcasting.php b/config/broadcasting.php index 3ca45eaa8..434c6f9ac 100644 --- a/config/broadcasting.php +++ b/config/broadcasting.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + return [ /* diff --git a/config/cache.php b/config/cache.php index b87e12c5b..5c02f9551 100644 --- a/config/cache.php +++ b/config/cache.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + return [ /* diff --git a/config/captcha.php b/config/captcha.php index 2d0ec0c39..af953e9fc 100644 --- a/config/captcha.php +++ b/config/captcha.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + return [ 'characters' => '2346789abcdefghjmnpqrtuxyzABCDEFGHJMNPQRTUXYZ', diff --git a/config/cors.php b/config/cors.php index bbb621b90..ab007ef5a 100644 --- a/config/cors.php +++ b/config/cors.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + return [ /* diff --git a/config/database.php b/config/database.php index cab5d068f..2a71d1b00 100644 --- a/config/database.php +++ b/config/database.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + return [ /* diff --git a/config/filesystems.php b/config/filesystems.php index e1ee916e6..19daaa305 100644 --- a/config/filesystems.php +++ b/config/filesystems.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + return [ /* @@ -48,6 +57,11 @@ 'root' => storage_path('app'), ], + 'attach' => [ + 'driver' => 'local', + 'root' => storage_path('app/attach'), + ], + 'public' => [ 'driver' => 'local', 'root' => storage_path('app/public'), diff --git a/config/hashing.php b/config/hashing.php index bc5da3a6e..4f8ba801d 100644 --- a/config/hashing.php +++ b/config/hashing.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + return [ /* @@ -49,4 +58,4 @@ 'time' => 2, ], -]; \ No newline at end of file +]; diff --git a/config/jwt.php b/config/jwt.php index 6e2a006df..12ba15ef9 100644 --- a/config/jwt.php +++ b/config/jwt.php @@ -1,12 +1,12 @@ + * (c) XiaoTeng <616896861@qq.com> * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. */ return [ diff --git a/config/logging.php b/config/logging.php index 0a8b1d44e..17c459896 100644 --- a/config/logging.php +++ b/config/logging.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Monolog\Handler\StreamHandler; use Monolog\Handler\SyslogUdpHandler; @@ -89,4 +98,4 @@ ], ], -]; \ No newline at end of file +]; diff --git a/config/mail.php b/config/mail.php index bb92224c5..0c5ada686 100644 --- a/config/mail.php +++ b/config/mail.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + return [ /* diff --git a/config/meedu.php b/config/meedu.php index e4d1453e0..3128d75a2 100644 --- a/config/meedu.php +++ b/config/meedu.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + return [ // 配置文件存储路径 @@ -15,6 +24,8 @@ // 用户协议 'protocol' => '', + // 隐私协议 + 'private_protocol' => '', // 是否提醒绑定手机号 'enabled_mobile_bind_alert' => 0, @@ -62,6 +73,20 @@ // 订单抽成 'per_order_draw' => 0.01, ], + + // 积分 + 'credit1' => [ + // 注册送 + 'register' => 0, + // 看完课程 + 'watched_course' => 0, + // 看完视频 + 'watched_video' => 0, + // 支付订单 + 'paid_order' => 0, + // 邀请用户 + 'invite' => 0, + ] ], // 上传 @@ -78,6 +103,12 @@ 'access_key_secret' => '', ], ], + 'attach' => [ + 'course' => [ + 'disk' => 'attach', + 'path' => 'course', + ], + ], ], // 管理员配置 diff --git a/config/pay.php b/config/pay.php index d9248cecb..d191865b6 100644 --- a/config/pay.php +++ b/config/pay.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + return [ 'alipay' => [ // 支付宝分配的 APPID diff --git a/config/purifier.php b/config/purifier.php index fbc1c099e..5c34237f7 100644 --- a/config/purifier.php +++ b/config/purifier.php @@ -1,19 +1,12 @@ set('Core.Encoding', $this->config->get('purifier.encoding')); - * $config->set('Cache.SerializerPath', $this->config->get('purifier.cachePath')); - * if ( ! $this->config->get('purifier.finalize')) { - * $config->autoFinalize = false; - * } - * $config->loadArray($this->getConfig()); + +/* + * This file is part of the Qsnh/meedu. * - * You must NOT delete the default settings - * anything in settings should be compacted with params that needed to instance HTMLPurifier_Config. + * (c) XiaoTeng <616896861@qq.com> * - * @link http://htmlpurifier.org/live/configdoc/plain.html + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. */ return [ @@ -32,9 +25,9 @@ 'test' => [ 'Attr.EnableID' => 'true', ], - "youtube" => [ - "HTML.SafeIframe" => 'true', - "URI.SafeIframeRegexp" => "%^(http://|https://|//)(www.youtube.com/embed/|player.vimeo.com/video/)%", + 'youtube' => [ + 'HTML.SafeIframe' => 'true', + 'URI.SafeIframeRegexp' => '%^(http://|https://|//)(www.youtube.com/embed/|player.vimeo.com/video/)%', ], 'custom_definition' => [ 'id' => 'html5-definitions', @@ -102,4 +95,4 @@ ], ], -]; \ No newline at end of file +]; diff --git a/config/queue.php b/config/queue.php index 8c06fcc57..330391184 100644 --- a/config/queue.php +++ b/config/queue.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + return [ /* diff --git a/config/services.php b/config/services.php index b6d1eaac9..40b5cafe4 100644 --- a/config/services.php +++ b/config/services.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + return [ /* diff --git a/config/session.php b/config/session.php index 6d4747aeb..62c7e0e19 100644 --- a/config/session.php +++ b/config/session.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + return [ /* diff --git a/config/sms.php b/config/sms.php index 19835e6f7..3be60ebfb 100644 --- a/config/sms.php +++ b/config/sms.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + return [ 'default' => [ 'gateways' => [ @@ -29,4 +38,4 @@ ], ], ], -]; \ No newline at end of file +]; diff --git a/config/tencent.php b/config/tencent.php index cd636ab44..d3c2b8037 100644 --- a/config/tencent.php +++ b/config/tencent.php @@ -1,9 +1,12 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. */ return [ @@ -18,4 +21,4 @@ 'secret' => env('WECHAT_MINI_APP_SECRET', ''), ], ], -]; \ No newline at end of file +]; diff --git a/config/view.php b/config/view.php index 2acfd9cc9..21de3f15f 100644 --- a/config/view.php +++ b/config/view.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + return [ /* diff --git a/database/factories/AdFromFactory.php b/database/factories/AdFromFactory.php index 842f93adb..0a5d76131 100644 --- a/database/factories/AdFromFactory.php +++ b/database/factories/AdFromFactory.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Faker\Generator as Faker; $factory->define(\App\Services\Other\Models\AdFrom::class, function (Faker $faker) { diff --git a/database/factories/AdFromNumberFactory.php b/database/factories/AdFromNumberFactory.php index dcb4d2364..ea25463cb 100644 --- a/database/factories/AdFromNumberFactory.php +++ b/database/factories/AdFromNumberFactory.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Faker\Generator as Faker; $factory->define(\App\Services\Other\Models\AdFromNumber::class, function (Faker $faker) { diff --git a/database/factories/AdministratorFactory.php b/database/factories/AdministratorFactory.php index 86d241b68..e6f441777 100644 --- a/database/factories/AdministratorFactory.php +++ b/database/factories/AdministratorFactory.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Faker\Generator as Faker; $factory->define(\App\Models\Administrator::class, function (Faker $faker) { diff --git a/database/factories/AdministratorRoleFactory.php b/database/factories/AdministratorRoleFactory.php index 59e7d4d21..8e775ab3c 100644 --- a/database/factories/AdministratorRoleFactory.php +++ b/database/factories/AdministratorRoleFactory.php @@ -1,8 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ -use App\Model; use Faker\Generator as Faker; $factory->define(\App\Models\AdministratorRole::class, function (Faker $faker) { diff --git a/database/factories/AnnouncementFactory.php b/database/factories/AnnouncementFactory.php index 8bf16d931..a0750ee27 100644 --- a/database/factories/AnnouncementFactory.php +++ b/database/factories/AnnouncementFactory.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Faker\Generator as Faker; $factory->define(\App\Services\Other\Models\Announcement::class, function (Faker $faker) { diff --git a/database/factories/CourseCategoryFactory.php b/database/factories/CourseCategoryFactory.php index df4684e19..bf9a889f7 100644 --- a/database/factories/CourseCategoryFactory.php +++ b/database/factories/CourseCategoryFactory.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Faker\Generator as Faker; $factory->define(\App\Services\Course\Models\CourseCategory::class, function (Faker $faker) { diff --git a/database/factories/CourseChapterFactory.php b/database/factories/CourseChapterFactory.php index a23b74abf..548fb25f7 100644 --- a/database/factories/CourseChapterFactory.php +++ b/database/factories/CourseChapterFactory.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Faker\Generator as Faker; $factory->define(\App\Services\Course\Models\CourseChapter::class, function (Faker $faker) { diff --git a/database/factories/CourseCommentFactory.php b/database/factories/CourseCommentFactory.php index 332734233..c124e96e9 100644 --- a/database/factories/CourseCommentFactory.php +++ b/database/factories/CourseCommentFactory.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Faker\Generator as Faker; $factory->define(\App\Services\Course\Models\CourseComment::class, function (Faker $faker) { diff --git a/database/factories/CourseFactory.php b/database/factories/CourseFactory.php index d47d47094..704493c15 100644 --- a/database/factories/CourseFactory.php +++ b/database/factories/CourseFactory.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Faker\Generator as Faker; $factory->define(\App\Services\Course\Models\Course::class, function (Faker $faker) { diff --git a/database/factories/CourseUserRecordsFactory.php b/database/factories/CourseUserRecordsFactory.php index 284714aeb..3d6e82cb2 100644 --- a/database/factories/CourseUserRecordsFactory.php +++ b/database/factories/CourseUserRecordsFactory.php @@ -1,6 +1,13 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ use Faker\Generator as Faker; diff --git a/database/factories/IndexBannerFactory.php b/database/factories/IndexBannerFactory.php index 894ccbf86..d3761972f 100644 --- a/database/factories/IndexBannerFactory.php +++ b/database/factories/IndexBannerFactory.php @@ -1,6 +1,13 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ use Faker\Generator as Faker; diff --git a/database/factories/LinkFactory.php b/database/factories/LinkFactory.php index 63c0fd43e..5659a1855 100644 --- a/database/factories/LinkFactory.php +++ b/database/factories/LinkFactory.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Faker\Generator as Faker; $factory->define(\App\Services\Other\Models\Link::class, function (Faker $faker) { diff --git a/database/factories/NavFactory.php b/database/factories/NavFactory.php index 8d91e0206..3e1e27587 100644 --- a/database/factories/NavFactory.php +++ b/database/factories/NavFactory.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Faker\Generator as Faker; $factory->define(\App\Services\Other\Models\Nav::class, function (Faker $faker) { diff --git a/database/factories/OrderFactory.php b/database/factories/OrderFactory.php index 56b9af3c1..2a5363f17 100644 --- a/database/factories/OrderFactory.php +++ b/database/factories/OrderFactory.php @@ -1,8 +1,16 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Faker\Generator as Faker; use App\Services\Order\Models\Order; -use App\Services\Order\Models\OrderGoods; $factory->define(Order::class, function (Faker $faker) { return [ diff --git a/database/factories/OrderGoodsFactory.php b/database/factories/OrderGoodsFactory.php index ad4a9021e..8c769dab5 100644 --- a/database/factories/OrderGoodsFactory.php +++ b/database/factories/OrderGoodsFactory.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Faker\Generator as Faker; $factory->define(\App\Services\Order\Models\OrderGoods::class, function (Faker $faker) { diff --git a/database/factories/OrderPaidRecordFactory.php b/database/factories/OrderPaidRecordFactory.php index 14da97f20..f1924e97b 100644 --- a/database/factories/OrderPaidRecordFactory.php +++ b/database/factories/OrderPaidRecordFactory.php @@ -1,7 +1,16 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Faker\Generator as Faker; +use App\Services\Order\Models\OrderPaidRecord; $factory->define(OrderPaidRecord::class, function (Faker $faker) { return [ diff --git a/database/factories/PromoCodeFactory.php b/database/factories/PromoCodeFactory.php index 957a03248..865122982 100644 --- a/database/factories/PromoCodeFactory.php +++ b/database/factories/PromoCodeFactory.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Faker\Generator as Faker; $factory->define(\App\Services\Order\Models\PromoCode::class, function (Faker $faker) { diff --git a/database/factories/RoleFactory.php b/database/factories/RoleFactory.php index 634301f75..8b14cf228 100644 --- a/database/factories/RoleFactory.php +++ b/database/factories/RoleFactory.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Faker\Generator as Faker; $factory->define(\App\Services\Member\Models\Role::class, function (Faker $faker) { diff --git a/database/factories/SliderFactory.php b/database/factories/SliderFactory.php index a6de3d4e9..cef528639 100644 --- a/database/factories/SliderFactory.php +++ b/database/factories/SliderFactory.php @@ -1,8 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ -use App\Model; use Faker\Generator as Faker; $factory->define(\App\Services\Other\Models\Slider::class, function (Faker $faker) { diff --git a/database/factories/SocailiteFactory.php b/database/factories/SocailiteFactory.php index 338d2d87d..7406504d8 100644 --- a/database/factories/SocailiteFactory.php +++ b/database/factories/SocailiteFactory.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Faker\Generator as Faker; $factory->define(\App\Services\Member\Models\Socialite::class, function (Faker $faker) { diff --git a/database/factories/UserCourseFactory.php b/database/factories/UserCourseFactory.php index 4fd702470..a8a118966 100644 --- a/database/factories/UserCourseFactory.php +++ b/database/factories/UserCourseFactory.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Faker\Generator as Faker; $factory->define(\App\Services\Member\Models\UserCourse::class, function (Faker $faker) { diff --git a/database/factories/UserCreditRecordFactory.php b/database/factories/UserCreditRecordFactory.php new file mode 100644 index 000000000..1386f6439 --- /dev/null +++ b/database/factories/UserCreditRecordFactory.php @@ -0,0 +1,21 @@ + + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + +use Faker\Generator as Faker; + +$factory->define(\App\Services\Member\Models\UserCreditRecord::class, function (Faker $faker) { + return [ + 'user_id' => 0, + 'field' => 'credit1', + 'sum' => mt_rand(1, 1000), + 'remark' => $faker->name, + ]; +}); diff --git a/database/factories/UserFactory.php b/database/factories/UserFactory.php index 1c52b0cbe..239e37343 100644 --- a/database/factories/UserFactory.php +++ b/database/factories/UserFactory.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Faker\Generator as Faker; use App\Services\Member\Models\User; @@ -20,9 +29,9 @@ 'nick_name' => $faker->firstName . mt_rand(0, 100), 'mobile' => $faker->randomElement(['136', '188', '159']) . mt_rand(1000, 9999) . mt_rand(1000, 9999), 'password' => \Illuminate\Support\Facades\Hash::make('123456'), - 'credit1' => mt_rand(0, 10000), - 'credit2' => mt_rand(0, 10000), - 'credit3' => mt_rand(0, 10000), + 'credit1' => 0, + 'credit2' => 0, + 'credit3' => 0, 'is_active' => $faker->randomElement([User::ACTIVE_NO, User::ACTIVE_YES]), 'is_lock' => $faker->randomElement([User::LOCK_NO, User::LOCK_YES]), 'role_id' => 0, diff --git a/database/factories/UserInviteBalanceRecordFactory.php b/database/factories/UserInviteBalanceRecordFactory.php index 00e8662df..d6714c532 100644 --- a/database/factories/UserInviteBalanceRecordFactory.php +++ b/database/factories/UserInviteBalanceRecordFactory.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Faker\Generator as Faker; $factory->define(\App\Services\Member\Models\UserInviteBalanceRecord::class, function (Faker $faker) { diff --git a/database/factories/UserInviteBalanceWithdrawOrderFactory.php b/database/factories/UserInviteBalanceWithdrawOrderFactory.php index 69794bb43..fd9da890b 100644 --- a/database/factories/UserInviteBalanceWithdrawOrderFactory.php +++ b/database/factories/UserInviteBalanceWithdrawOrderFactory.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Faker\Generator as Faker; $factory->define(\App\Services\Member\Models\UserInviteBalanceWithdrawOrder::class, function (Faker $faker) { diff --git a/database/factories/UserLikeCourseFactory.php b/database/factories/UserLikeCourseFactory.php index 4b33dc748..520d3f3c7 100644 --- a/database/factories/UserLikeCourseFactory.php +++ b/database/factories/UserLikeCourseFactory.php @@ -1,6 +1,13 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ use Faker\Generator as Faker; diff --git a/database/factories/UserRoleJoinFactory.php b/database/factories/UserRoleJoinFactory.php index 32bd65194..8b15eeae7 100644 --- a/database/factories/UserRoleJoinFactory.php +++ b/database/factories/UserRoleJoinFactory.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Faker\Generator as Faker; $factory->define(\App\Services\Member\Models\UserJoinRoleRecord::class, function (Faker $faker) { diff --git a/database/factories/UserSocialiteFactory.php b/database/factories/UserSocialiteFactory.php index fb44538a1..1195b4d65 100644 --- a/database/factories/UserSocialiteFactory.php +++ b/database/factories/UserSocialiteFactory.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Faker\Generator as Faker; $factory->define(\App\Services\Member\Models\Socialite::class, function (Faker $faker) { diff --git a/database/factories/UserVideoFactory.php b/database/factories/UserVideoFactory.php index 741dd9520..6919f9cd1 100644 --- a/database/factories/UserVideoFactory.php +++ b/database/factories/UserVideoFactory.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Faker\Generator as Faker; $factory->define(\App\Services\Member\Models\UserVideo::class, function (Faker $faker) { diff --git a/database/factories/VideoCommentFactory.php b/database/factories/VideoCommentFactory.php index 4afa0c0b9..3fca987b6 100644 --- a/database/factories/VideoCommentFactory.php +++ b/database/factories/VideoCommentFactory.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Faker\Generator as Faker; $factory->define(\App\Services\Course\Models\VideoComment::class, function (Faker $faker) { diff --git a/database/migrations/2014_10_12_000000_create_users_table.php b/database/migrations/2014_10_12_000000_create_users_table.php index d075629e0..6f64b0f49 100644 --- a/database/migrations/2014_10_12_000000_create_users_table.php +++ b/database/migrations/2014_10_12_000000_create_users_table.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; diff --git a/database/migrations/2018_06_10_093350_create_course_table.php b/database/migrations/2018_06_10_093350_create_course_table.php index 344115af0..bdcd95f09 100644 --- a/database/migrations/2018_06_10_093350_create_course_table.php +++ b/database/migrations/2018_06_10_093350_create_course_table.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; diff --git a/database/migrations/2018_06_10_093941_create_video_table.php b/database/migrations/2018_06_10_093941_create_video_table.php index 0cf9f12e6..e533b4259 100644 --- a/database/migrations/2018_06_10_093941_create_video_table.php +++ b/database/migrations/2018_06_10_093941_create_video_table.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; diff --git a/database/migrations/2018_06_11_140429_create_administrators_table.php b/database/migrations/2018_06_11_140429_create_administrators_table.php index bf6c6582c..fc140751d 100644 --- a/database/migrations/2018_06_11_140429_create_administrators_table.php +++ b/database/migrations/2018_06_11_140429_create_administrators_table.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; diff --git a/database/migrations/2018_06_11_140557_create_administrator_roles_table.php b/database/migrations/2018_06_11_140557_create_administrator_roles_table.php index 0042b0343..fd9b53c15 100644 --- a/database/migrations/2018_06_11_140557_create_administrator_roles_table.php +++ b/database/migrations/2018_06_11_140557_create_administrator_roles_table.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; diff --git a/database/migrations/2018_06_11_140702_create_administrator_role_relation_tbale.php b/database/migrations/2018_06_11_140702_create_administrator_role_relation_tbale.php index 1cf6a8b51..3ab126415 100644 --- a/database/migrations/2018_06_11_140702_create_administrator_role_relation_tbale.php +++ b/database/migrations/2018_06_11_140702_create_administrator_role_relation_tbale.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; diff --git a/database/migrations/2018_06_11_140936_create_administrator_permissions_table.php b/database/migrations/2018_06_11_140936_create_administrator_permissions_table.php index abc7d7dc0..95a9c7bb0 100644 --- a/database/migrations/2018_06_11_140936_create_administrator_permissions_table.php +++ b/database/migrations/2018_06_11_140936_create_administrator_permissions_table.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; diff --git a/database/migrations/2018_06_11_141132_create_administrator_role_permission_relation_table.php b/database/migrations/2018_06_11_141132_create_administrator_role_permission_relation_table.php index 6dec91b1c..8d16445c7 100644 --- a/database/migrations/2018_06_11_141132_create_administrator_role_permission_relation_table.php +++ b/database/migrations/2018_06_11_141132_create_administrator_role_permission_relation_table.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; diff --git a/database/migrations/2018_06_24_055643_add_charge_column_for_videos_table.php b/database/migrations/2018_06_24_055643_add_charge_column_for_videos_table.php index 06f26a607..7de19a2e1 100644 --- a/database/migrations/2018_06_24_055643_add_charge_column_for_videos_table.php +++ b/database/migrations/2018_06_24_055643_add_charge_column_for_videos_table.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; diff --git a/database/migrations/2018_08_24_111310_create_sms_records_table.php b/database/migrations/2018_08_24_111310_create_sms_records_table.php index 942899c0b..0d90f866d 100644 --- a/database/migrations/2018_08_24_111310_create_sms_records_table.php +++ b/database/migrations/2018_08_24_111310_create_sms_records_table.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; diff --git a/database/migrations/2018_08_25_122014_create_course_comments_table.php b/database/migrations/2018_08_25_122014_create_course_comments_table.php index 314301d18..6783cf82f 100644 --- a/database/migrations/2018_08_25_122014_create_course_comments_table.php +++ b/database/migrations/2018_08_25_122014_create_course_comments_table.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; diff --git a/database/migrations/2018_08_25_122026_create_video_comments_table.php b/database/migrations/2018_08_25_122026_create_video_comments_table.php index 7da26765a..e1bdaa9c1 100644 --- a/database/migrations/2018_08_25_122026_create_video_comments_table.php +++ b/database/migrations/2018_08_25_122026_create_video_comments_table.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; diff --git a/database/migrations/2018_08_28_194051_create_user_course_table.php b/database/migrations/2018_08_28_194051_create_user_course_table.php index e803b72f3..9fefd1db5 100644 --- a/database/migrations/2018_08_28_194051_create_user_course_table.php +++ b/database/migrations/2018_08_28_194051_create_user_course_table.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; diff --git a/database/migrations/2018_08_28_201555_create_roles_table.php b/database/migrations/2018_08_28_201555_create_roles_table.php index ba89071bd..d71d115e4 100644 --- a/database/migrations/2018_08_28_201555_create_roles_table.php +++ b/database/migrations/2018_08_28_201555_create_roles_table.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; diff --git a/database/migrations/2018_08_28_201633_add_role_id_column_for_users_table.php b/database/migrations/2018_08_28_201633_add_role_id_column_for_users_table.php index 3555b4228..e257528c9 100644 --- a/database/migrations/2018_08_28_201633_add_role_id_column_for_users_table.php +++ b/database/migrations/2018_08_28_201633_add_role_id_column_for_users_table.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; diff --git a/database/migrations/2018_08_28_202328_create_user_join_role_records_table.php b/database/migrations/2018_08_28_202328_create_user_join_role_records_table.php index f8cbbbd03..bd4c014ae 100644 --- a/database/migrations/2018_08_28_202328_create_user_join_role_records_table.php +++ b/database/migrations/2018_08_28_202328_create_user_join_role_records_table.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; diff --git a/database/migrations/2018_08_29_202834_create_notifications_table.php b/database/migrations/2018_08_29_202834_create_notifications_table.php index fb16d5bcc..d858fa9b6 100644 --- a/database/migrations/2018_08_29_202834_create_notifications_table.php +++ b/database/migrations/2018_08_29_202834_create_notifications_table.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; diff --git a/database/migrations/2018_08_29_203905_create_jobs_table.php b/database/migrations/2018_08_29_203905_create_jobs_table.php index 58d771542..2f31b6526 100644 --- a/database/migrations/2018_08_29_203905_create_jobs_table.php +++ b/database/migrations/2018_08_29_203905_create_jobs_table.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; diff --git a/database/migrations/2018_08_30_200622_add_charge_column_for_user_course_table.php b/database/migrations/2018_08_30_200622_add_charge_column_for_user_course_table.php index f020439f5..5ff94c84e 100644 --- a/database/migrations/2018_08_30_200622_add_charge_column_for_user_course_table.php +++ b/database/migrations/2018_08_30_200622_add_charge_column_for_user_course_table.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; diff --git a/database/migrations/2018_08_30_202222_create_user_video_table.php b/database/migrations/2018_08_30_202222_create_user_video_table.php index 43c91781f..ad30ca837 100644 --- a/database/migrations/2018_08_30_202222_create_user_video_table.php +++ b/database/migrations/2018_08_30_202222_create_user_video_table.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; diff --git a/database/migrations/2018_09_03_202544_create_orders_table.php b/database/migrations/2018_09_03_202544_create_orders_table.php index 024353e27..98679c0eb 100644 --- a/database/migrations/2018_09_03_202544_create_orders_table.php +++ b/database/migrations/2018_09_03_202544_create_orders_table.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; diff --git a/database/migrations/2018_09_16_110336_create_email_subscriptions_table.php b/database/migrations/2018_09_16_110336_create_email_subscriptions_table.php index 81a41a4cf..8ebf4fb37 100644 --- a/database/migrations/2018_09_16_110336_create_email_subscriptions_table.php +++ b/database/migrations/2018_09_16_110336_create_email_subscriptions_table.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; diff --git a/database/migrations/2018_09_16_113005_create_announcements_table.php b/database/migrations/2018_09_16_113005_create_announcements_table.php index 2b3edf79e..97845dcf8 100644 --- a/database/migrations/2018_09_16_113005_create_announcements_table.php +++ b/database/migrations/2018_09_16_113005_create_announcements_table.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; diff --git a/database/migrations/2018_10_07_101347_add_aliyun_video_id_column_for_videos.php b/database/migrations/2018_10_07_101347_add_aliyun_video_id_column_for_videos.php index 88a018e0d..ab46617c5 100644 --- a/database/migrations/2018_10_07_101347_add_aliyun_video_id_column_for_videos.php +++ b/database/migrations/2018_10_07_101347_add_aliyun_video_id_column_for_videos.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; diff --git a/database/migrations/2018_10_23_101556_create_administrator_menus_table.php b/database/migrations/2018_10_23_101556_create_administrator_menus_table.php index d70330c85..b57cede07 100644 --- a/database/migrations/2018_10_23_101556_create_administrator_menus_table.php +++ b/database/migrations/2018_10_23_101556_create_administrator_menus_table.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; diff --git a/database/migrations/2018_10_26_102622_create_order_goods_table.php b/database/migrations/2018_10_26_102622_create_order_goods_table.php index 88a13a971..685f2119b 100644 --- a/database/migrations/2018_10_26_102622_create_order_goods_table.php +++ b/database/migrations/2018_10_26_102622_create_order_goods_table.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; diff --git a/database/migrations/2018_10_26_102656_adjust_orders_table.php b/database/migrations/2018_10_26_102656_adjust_orders_table.php index 3f8f8e5c1..4174325b1 100644 --- a/database/migrations/2018_10_26_102656_adjust_orders_table.php +++ b/database/migrations/2018_10_26_102656_adjust_orders_table.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; diff --git a/database/migrations/2018_11_22_194642_create_ad_froms_table.php b/database/migrations/2018_11_22_194642_create_ad_froms_table.php index 32d364f86..64c3d4d90 100644 --- a/database/migrations/2018_11_22_194642_create_ad_froms_table.php +++ b/database/migrations/2018_11_22_194642_create_ad_froms_table.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; diff --git a/database/migrations/2018_11_22_194828_create_ad_from_number_table.php b/database/migrations/2018_11_22_194828_create_ad_from_number_table.php index c10f216cd..8ba5d46c1 100644 --- a/database/migrations/2018_11_22_194828_create_ad_from_number_table.php +++ b/database/migrations/2018_11_22_194828_create_ad_from_number_table.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; diff --git a/database/migrations/2018_11_24_205824_create_links_table.php b/database/migrations/2018_11_24_205824_create_links_table.php index 5ecf85338..a23404b7d 100644 --- a/database/migrations/2018_11_24_205824_create_links_table.php +++ b/database/migrations/2018_11_24_205824_create_links_table.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; diff --git a/database/migrations/2018_12_06_082850_create_course_chapter_table.php b/database/migrations/2018_12_06_082850_create_course_chapter_table.php index 3eaf60612..1be33c14a 100644 --- a/database/migrations/2018_12_06_082850_create_course_chapter_table.php +++ b/database/migrations/2018_12_06_082850_create_course_chapter_table.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; diff --git a/database/migrations/2018_12_06_192345_add_sort_column_for_course_chapter_table.php b/database/migrations/2018_12_06_192345_add_sort_column_for_course_chapter_table.php index 49d66e7dd..4c1df48e0 100644 --- a/database/migrations/2018_12_06_192345_add_sort_column_for_course_chapter_table.php +++ b/database/migrations/2018_12_06_192345_add_sort_column_for_course_chapter_table.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; diff --git a/database/migrations/2018_12_06_192755_add_chapter_id_for_videos_table.php b/database/migrations/2018_12_06_192755_add_chapter_id_for_videos_table.php index 62fc33e7a..dff18fc0a 100644 --- a/database/migrations/2018_12_06_192755_add_chapter_id_for_videos_table.php +++ b/database/migrations/2018_12_06_192755_add_chapter_id_for_videos_table.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; diff --git a/database/migrations/2018_12_12_214600_create_navs_table.php b/database/migrations/2018_12_12_214600_create_navs_table.php index 45b572f18..b628884c8 100644 --- a/database/migrations/2018_12_12_214600_create_navs_table.php +++ b/database/migrations/2018_12_12_214600_create_navs_table.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; diff --git a/database/migrations/2018_12_12_221538_create_socialite_table.php b/database/migrations/2018_12_12_221538_create_socialite_table.php index 98cf64826..9cb5d126f 100644 --- a/database/migrations/2018_12_12_221538_create_socialite_table.php +++ b/database/migrations/2018_12_12_221538_create_socialite_table.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; diff --git a/database/migrations/2018_12_22_112124_add_duration_column_for_videos_table.php b/database/migrations/2018_12_22_112124_add_duration_column_for_videos_table.php index 7c391dc60..606bbca1a 100644 --- a/database/migrations/2018_12_22_112124_add_duration_column_for_videos_table.php +++ b/database/migrations/2018_12_22_112124_add_duration_column_for_videos_table.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; diff --git a/database/migrations/2018_12_25_222045_add_is_show_column_for_roles_table.php b/database/migrations/2018_12_25_222045_add_is_show_column_for_roles_table.php index b45366d0d..6768faf26 100644 --- a/database/migrations/2018_12_25_222045_add_is_show_column_for_roles_table.php +++ b/database/migrations/2018_12_25_222045_add_is_show_column_for_roles_table.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; @@ -27,6 +36,6 @@ public function down() { Schema::table('roles', function (Blueprint $table) { $table->dropColumn('is_show'); - }); + }); } } diff --git a/database/migrations/2019_02_19_200047_add_payment_column_for_orders_table.php b/database/migrations/2019_02_19_200047_add_payment_column_for_orders_table.php index efbe74918..e42f25b34 100644 --- a/database/migrations/2019_02_19_200047_add_payment_column_for_orders_table.php +++ b/database/migrations/2019_02_19_200047_add_payment_column_for_orders_table.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; diff --git a/database/migrations/2019_02_23_130633_create_failed_jobs_table.php b/database/migrations/2019_02_23_130633_create_failed_jobs_table.php index d432dff08..62d6e2aab 100644 --- a/database/migrations/2019_02_23_130633_create_failed_jobs_table.php +++ b/database/migrations/2019_02_23_130633_create_failed_jobs_table.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; diff --git a/database/migrations/2019_03_26_222210_add_tencent_video_id_column_for_videos.php b/database/migrations/2019_03_26_222210_add_tencent_video_id_column_for_videos.php index 19d0fcf98..1916c6a41 100644 --- a/database/migrations/2019_03_26_222210_add_tencent_video_id_column_for_videos.php +++ b/database/migrations/2019_03_26_222210_add_tencent_video_id_column_for_videos.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; diff --git a/database/migrations/2019_12_22_120342_change_course_comment_content_field.php b/database/migrations/2019_12_22_120342_change_course_comment_content_field.php index ec98784ba..9a8b86c44 100644 --- a/database/migrations/2019_12_22_120342_change_course_comment_content_field.php +++ b/database/migrations/2019_12_22_120342_change_course_comment_content_field.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; diff --git a/database/migrations/2019_12_22_120357_change_video_comment_content_field.php b/database/migrations/2019_12_22_120357_change_video_comment_content_field.php index 2b1420726..74a341eef 100644 --- a/database/migrations/2019_12_22_120357_change_video_comment_content_field.php +++ b/database/migrations/2019_12_22_120357_change_video_comment_content_field.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; diff --git a/database/migrations/2019_12_22_121813_change_course_description_field.php b/database/migrations/2019_12_22_121813_change_course_description_field.php index 599f62b43..d59638850 100644 --- a/database/migrations/2019_12_22_121813_change_course_description_field.php +++ b/database/migrations/2019_12_22_121813_change_course_description_field.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; diff --git a/database/migrations/2019_12_22_121825_change_video_description_field.php b/database/migrations/2019_12_22_121825_change_video_description_field.php index eb746cce6..ce33b5802 100644 --- a/database/migrations/2019_12_22_121825_change_video_description_field.php +++ b/database/migrations/2019_12_22_121825_change_video_description_field.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; diff --git a/database/migrations/2019_12_27_194525_alter_order_goods_table.php b/database/migrations/2019_12_27_194525_alter_order_goods_table.php index ce5db93ff..36cc1e667 100644 --- a/database/migrations/2019_12_27_194525_alter_order_goods_table.php +++ b/database/migrations/2019_12_27_194525_alter_order_goods_table.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; diff --git a/database/migrations/2020_01_08_121811_add_invite_column_for_users.php b/database/migrations/2020_01_08_121811_add_invite_column_for_users.php index 64ba91a61..49d223797 100644 --- a/database/migrations/2020_01_08_121811_add_invite_column_for_users.php +++ b/database/migrations/2020_01_08_121811_add_invite_column_for_users.php @@ -1,8 +1,17 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Illuminate\Support\Facades\Schema; +use Illuminate\Database\Schema\Blueprint; +use Illuminate\Database\Migrations\Migration; class AddInviteColumnForUsers extends Migration { diff --git a/database/migrations/2020_01_08_122439_create_promo_codes_table.php b/database/migrations/2020_01_08_122439_create_promo_codes_table.php index d5dbd41ce..63e023d9d 100644 --- a/database/migrations/2020_01_08_122439_create_promo_codes_table.php +++ b/database/migrations/2020_01_08_122439_create_promo_codes_table.php @@ -1,8 +1,17 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Illuminate\Support\Facades\Schema; +use Illuminate\Database\Schema\Blueprint; +use Illuminate\Database\Migrations\Migration; class CreatePromoCodesTable extends Migration { diff --git a/database/migrations/2020_01_08_145811_create_order_paid_records_table.php b/database/migrations/2020_01_08_145811_create_order_paid_records_table.php index ea5d6eb3e..e2e52aa8c 100644 --- a/database/migrations/2020_01_08_145811_create_order_paid_records_table.php +++ b/database/migrations/2020_01_08_145811_create_order_paid_records_table.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; diff --git a/database/migrations/2020_01_08_161753_create_user_invite_balance_records_table.php b/database/migrations/2020_01_08_161753_create_user_invite_balance_records_table.php index 59d557e19..348d52baf 100644 --- a/database/migrations/2020_01_08_161753_create_user_invite_balance_records_table.php +++ b/database/migrations/2020_01_08_161753_create_user_invite_balance_records_table.php @@ -1,8 +1,17 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Illuminate\Support\Facades\Schema; +use Illuminate\Database\Schema\Blueprint; +use Illuminate\Database\Migrations\Migration; class CreateUserInviteBalanceRecordsTable extends Migration { diff --git a/database/migrations/2020_01_11_162610_create_course_categories_table.php b/database/migrations/2020_01_11_162610_create_course_categories_table.php index 844e76ce3..9cf788828 100644 --- a/database/migrations/2020_01_11_162610_create_course_categories_table.php +++ b/database/migrations/2020_01_11_162610_create_course_categories_table.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; diff --git a/database/migrations/2020_01_11_165825_add_category_id_for_course_table.php b/database/migrations/2020_01_11_165825_add_category_id_for_course_table.php index d1516ac20..9efcd46d3 100644 --- a/database/migrations/2020_01_11_165825_add_category_id_for_course_table.php +++ b/database/migrations/2020_01_11_165825_add_category_id_for_course_table.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; diff --git a/database/migrations/2020_01_15_122836_create_invite_balance_withdraw_records_table.php b/database/migrations/2020_01_15_122836_create_invite_balance_withdraw_records_table.php index 36413e0e8..95175e04a 100644 --- a/database/migrations/2020_01_15_122836_create_invite_balance_withdraw_records_table.php +++ b/database/migrations/2020_01_15_122836_create_invite_balance_withdraw_records_table.php @@ -1,8 +1,17 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Illuminate\Support\Facades\Schema; +use Illuminate\Database\Schema\Blueprint; +use Illuminate\Database\Migrations\Migration; class CreateInviteBalanceWithdrawRecordsTable extends Migration { diff --git a/database/migrations/2020_01_30_170310_create_cache_table.php b/database/migrations/2020_01_30_170310_create_cache_table.php index 058afe69c..0f713cf67 100644 --- a/database/migrations/2020_01_30_170310_create_cache_table.php +++ b/database/migrations/2020_01_30_170310_create_cache_table.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; diff --git a/database/migrations/2020_02_05_164322_add_is_recom_column_for_courses_table.php b/database/migrations/2020_02_05_164322_add_is_recom_column_for_courses_table.php index 8c7cce187..d62984429 100644 --- a/database/migrations/2020_02_05_164322_add_is_recom_column_for_courses_table.php +++ b/database/migrations/2020_02_05_164322_add_is_recom_column_for_courses_table.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; diff --git a/database/migrations/2020_02_21_145619_create_sliders_table.php b/database/migrations/2020_02_21_145619_create_sliders_table.php index 02a1579bd..60f8a65d4 100644 --- a/database/migrations/2020_02_21_145619_create_sliders_table.php +++ b/database/migrations/2020_02_21_145619_create_sliders_table.php @@ -1,8 +1,17 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Illuminate\Support\Facades\Schema; +use Illuminate\Database\Schema\Blueprint; +use Illuminate\Database\Migrations\Migration; class CreateSlidersTable extends Migration { diff --git a/database/migrations/2020_02_21_152347_add_title_column_for_announcement_table.php b/database/migrations/2020_02_21_152347_add_title_column_for_announcement_table.php index ed5b29ccb..99e0bf0ad 100644 --- a/database/migrations/2020_02_21_152347_add_title_column_for_announcement_table.php +++ b/database/migrations/2020_02_21_152347_add_title_column_for_announcement_table.php @@ -1,8 +1,17 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Illuminate\Support\Facades\Schema; +use Illuminate\Database\Schema\Blueprint; +use Illuminate\Database\Migrations\Migration; class AddTitleColumnForAnnouncementTable extends Migration { diff --git a/database/migrations/2020_02_24_140733_add_user_count_column_for_course_table.php b/database/migrations/2020_02_24_140733_add_user_count_column_for_course_table.php index bc8ec5293..b8ad5f236 100644 --- a/database/migrations/2020_02_24_140733_add_user_count_column_for_course_table.php +++ b/database/migrations/2020_02_24_140733_add_user_count_column_for_course_table.php @@ -1,8 +1,17 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Illuminate\Support\Facades\Schema; +use Illuminate\Database\Schema\Blueprint; +use Illuminate\Database\Migrations\Migration; class AddUserCountColumnForCourseTable extends Migration { diff --git a/database/migrations/2020_02_24_140813_create_course_user_records_table.php b/database/migrations/2020_02_24_140813_create_course_user_records_table.php index 043125515..ef051ac3e 100644 --- a/database/migrations/2020_02_24_140813_create_course_user_records_table.php +++ b/database/migrations/2020_02_24_140813_create_course_user_records_table.php @@ -1,8 +1,17 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Illuminate\Support\Facades\Schema; +use Illuminate\Database\Schema\Blueprint; +use Illuminate\Database\Migrations\Migration; class CreateCourseUserRecordsTable extends Migration { diff --git a/database/migrations/2020_02_28_145527_add_is_password_set_column_for_users_table.php b/database/migrations/2020_02_28_145527_add_is_password_set_column_for_users_table.php index 553ac1cd2..11b339ec5 100644 --- a/database/migrations/2020_02_28_145527_add_is_password_set_column_for_users_table.php +++ b/database/migrations/2020_02_28_145527_add_is_password_set_column_for_users_table.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; diff --git a/database/migrations/2020_03_02_095800_add_is_set_nickname_column_for_users_table.php b/database/migrations/2020_03_02_095800_add_is_set_nickname_column_for_users_table.php index 1db4f228f..99c88ab9d 100644 --- a/database/migrations/2020_03_02_095800_add_is_set_nickname_column_for_users_table.php +++ b/database/migrations/2020_03_02_095800_add_is_set_nickname_column_for_users_table.php @@ -1,8 +1,17 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Illuminate\Support\Facades\Schema; +use Illuminate\Database\Schema\Blueprint; +use Illuminate\Database\Migrations\Migration; class AddIsSetNicknameColumnForUsersTable extends Migration { diff --git a/database/migrations/2020_03_04_133129_create_user_like_courses_table.php b/database/migrations/2020_03_04_133129_create_user_like_courses_table.php index e8a125e81..aaf5a184a 100644 --- a/database/migrations/2020_03_04_133129_create_user_like_courses_table.php +++ b/database/migrations/2020_03_04_133129_create_user_like_courses_table.php @@ -1,8 +1,17 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Illuminate\Support\Facades\Schema; +use Illuminate\Database\Schema\Blueprint; +use Illuminate\Database\Migrations\Migration; class CreateUserLikeCoursesTable extends Migration { diff --git a/database/migrations/2020_03_07_175130_create_index_banners_table.php b/database/migrations/2020_03_07_175130_create_index_banners_table.php index 56a52bd8b..ae2d9e010 100644 --- a/database/migrations/2020_03_07_175130_create_index_banners_table.php +++ b/database/migrations/2020_03_07_175130_create_index_banners_table.php @@ -1,8 +1,17 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Illuminate\Support\Facades\Schema; +use Illuminate\Database\Schema\Blueprint; +use Illuminate\Database\Migrations\Migration; class CreateIndexBannersTable extends Migration { diff --git a/database/migrations/2020_05_02_112023_create_user_video_watch_records_table.php b/database/migrations/2020_05_02_112023_create_user_video_watch_records_table.php index 0d10af846..50d354ae3 100644 --- a/database/migrations/2020_05_02_112023_create_user_video_watch_records_table.php +++ b/database/migrations/2020_05_02_112023_create_user_video_watch_records_table.php @@ -1,8 +1,17 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Illuminate\Support\Facades\Schema; +use Illuminate\Database\Schema\Blueprint; +use Illuminate\Database\Migrations\Migration; class CreateUserVideoWatchRecordsTable extends Migration { diff --git a/database/migrations/2020_05_02_112648_add_is_watched_column_for_user_course_records_table.php b/database/migrations/2020_05_02_112648_add_is_watched_column_for_user_course_records_table.php index b7dc492c8..2fe24a082 100644 --- a/database/migrations/2020_05_02_112648_add_is_watched_column_for_user_course_records_table.php +++ b/database/migrations/2020_05_02_112648_add_is_watched_column_for_user_course_records_table.php @@ -1,8 +1,17 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Illuminate\Support\Facades\Schema; +use Illuminate\Database\Schema\Blueprint; +use Illuminate\Database\Migrations\Migration; class AddIsWatchedColumnForUserCourseRecordsTable extends Migration { diff --git a/database/migrations/2020_05_10_161748_add_is_free_column_courses_table.php b/database/migrations/2020_05_10_161748_add_is_free_column_courses_table.php index 840e03c8f..809d336f6 100644 --- a/database/migrations/2020_05_10_161748_add_is_free_column_courses_table.php +++ b/database/migrations/2020_05_10_161748_add_is_free_column_courses_table.php @@ -1,8 +1,17 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Illuminate\Support\Facades\Schema; +use Illuminate\Database\Schema\Blueprint; +use Illuminate\Database\Migrations\Migration; class AddIsFreeColumnCoursesTable extends Migration { diff --git a/database/migrations/2020_05_10_161807_add_is_ban_sell_column_videos_table.php b/database/migrations/2020_05_10_161807_add_is_ban_sell_column_videos_table.php index ab20b27d3..779e89783 100644 --- a/database/migrations/2020_05_10_161807_add_is_ban_sell_column_videos_table.php +++ b/database/migrations/2020_05_10_161807_add_is_ban_sell_column_videos_table.php @@ -1,8 +1,17 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Illuminate\Support\Facades\Schema; +use Illuminate\Database\Schema\Blueprint; +use Illuminate\Database\Migrations\Migration; class AddIsBanSellColumnVideosTable extends Migration { diff --git a/database/migrations/2020_05_21_110416_add_is_used_promo_code_column_for_users.php b/database/migrations/2020_05_21_110416_add_is_used_promo_code_column_for_users.php index 0b9a2291e..84f87ba3d 100644 --- a/database/migrations/2020_05_21_110416_add_is_used_promo_code_column_for_users.php +++ b/database/migrations/2020_05_21_110416_add_is_used_promo_code_column_for_users.php @@ -1,8 +1,17 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Illuminate\Support\Facades\Schema; +use Illuminate\Database\Schema\Blueprint; +use Illuminate\Database\Migrations\Migration; class AddIsUsedPromoCodeColumnForUsers extends Migration { diff --git a/database/migrations/2020_05_21_135128_add_register_ip_column_for_users.php b/database/migrations/2020_05_21_135128_add_register_ip_column_for_users.php index 255dfad8d..3af2de971 100644 --- a/database/migrations/2020_05_21_135128_add_register_ip_column_for_users.php +++ b/database/migrations/2020_05_21_135128_add_register_ip_column_for_users.php @@ -1,8 +1,17 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Illuminate\Support\Facades\Schema; +use Illuminate\Database\Schema\Blueprint; +use Illuminate\Database\Migrations\Migration; class AddRegisterIpColumnForUsers extends Migration { diff --git a/database/migrations/2020_05_24_221058_add_progress_column_for_course_user_records_table.php b/database/migrations/2020_05_24_221058_add_progress_column_for_course_user_records_table.php index b3e7bb3dc..5e41fe163 100644 --- a/database/migrations/2020_05_24_221058_add_progress_column_for_course_user_records_table.php +++ b/database/migrations/2020_05_24_221058_add_progress_column_for_course_user_records_table.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; diff --git a/database/migrations/2020_06_08_153953_add_column_administrator_tables.php b/database/migrations/2020_06_08_153953_add_column_administrator_tables.php index 829ba0947..5926ef8fe 100644 --- a/database/migrations/2020_06_08_153953_add_column_administrator_tables.php +++ b/database/migrations/2020_06_08_153953_add_column_administrator_tables.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; diff --git a/database/migrations/2020_06_08_154009_add_column_adm_permissions_tables.php b/database/migrations/2020_06_08_154009_add_column_adm_permissions_tables.php index 7816000b0..f8ed75289 100644 --- a/database/migrations/2020_06_08_154009_add_column_adm_permissions_tables.php +++ b/database/migrations/2020_06_08_154009_add_column_adm_permissions_tables.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; diff --git a/database/migrations/2020_06_17_195229_create_user_credit_records_table.php b/database/migrations/2020_06_17_195229_create_user_credit_records_table.php new file mode 100644 index 000000000..85a9def73 --- /dev/null +++ b/database/migrations/2020_06_17_195229_create_user_credit_records_table.php @@ -0,0 +1,47 @@ + + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + +use Illuminate\Support\Facades\Schema; +use Illuminate\Database\Schema\Blueprint; +use Illuminate\Database\Migrations\Migration; + +class CreateUserCreditRecordsTable extends Migration +{ + /** + * Run the migrations. + * + * @return void + */ + public function up() + { + Schema::create('user_credit_records', function (Blueprint $table) { + $table->bigIncrements('id'); + $table->integer('user_id'); + $table->string('field')->default('')->comment('字段'); + $table->integer('sum')->default(0)->comment('变动额度'); + $table->string('remark')->default('')->comment('变动说明'); + $table->timestamps(); + $table->softDeletes(); + + $table->index(['user_id', 'field']); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('user_credit_records'); + } +} diff --git a/database/migrations/2020_06_20_001804_create_course_attach_tables.php b/database/migrations/2020_06_20_001804_create_course_attach_tables.php new file mode 100644 index 000000000..40786a6ce --- /dev/null +++ b/database/migrations/2020_06_20_001804_create_course_attach_tables.php @@ -0,0 +1,51 @@ + + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + +use Illuminate\Support\Facades\Schema; +use Illuminate\Database\Schema\Blueprint; +use Illuminate\Database\Migrations\Migration; + +class CreateCourseAttachTables extends Migration +{ + /** + * Run the migrations. + * + * @return void + */ + public function up() + { + Schema::create('course_attach', function (Blueprint $table) { + $table->bigIncrements('id'); + $table->integer('course_id'); + $table->string('name')->default('')->comment('附件名'); + $table->string('path')->default('')->comment('路径'); + $table->string('disk', 12)->default('')->comment('存储磁盘'); + $table->integer('size')->default(0)->comment('单位:byte'); + $table->string('extension', 12)->default('')->comment('文件格式'); + $table->tinyInteger('only_buyer')->default(1)->comment('只有购买者可以下载,1是,0否'); + $table->integer('download_times')->default(0)->comment('下载次数'); + $table->timestamps(); + $table->softDeletes(); + + $table->index(['course_id']); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('course_attach'); + } +} diff --git a/database/seeds/AdministratorPermissionSeeder.php b/database/seeds/AdministratorPermissionSeeder.php index df1788d3c..9556238b2 100644 --- a/database/seeds/AdministratorPermissionSeeder.php +++ b/database/seeds/AdministratorPermissionSeeder.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Illuminate\Database\Seeder; class AdministratorPermissionSeeder extends Seeder @@ -608,6 +617,13 @@ public function run() 'method' => 'GET', 'url' => 'member/\d+/detail/userInvite', ], + [ + 'group_name' => '用户', + 'display_name' => '用户积分明细', + 'slug' => 'member.detail.credit1Records', + 'method' => 'GET', + 'url' => 'member/\d+/detail/credit1Records', + ], [ 'group_name' => '用户', 'display_name' => '用户邀请余额提现记录列表', @@ -830,6 +846,29 @@ public function run() 'method' => 'GET', 'url' => 'statistic/courseWatchDuration', ], + + // 课程附件 + [ + 'group_name' => '课程附件', + 'display_name' => '课程附件列表', + 'slug' => 'course_attach', + 'method' => 'GET', + 'url' => 'course_attach', + ], + [ + 'group_name' => '课程附件', + 'display_name' => '课程附件创建', + 'slug' => 'course_attach.store', + 'method' => 'POST', + 'url' => 'course_attach', + ], + [ + 'group_name' => '课程附件', + 'display_name' => '课程附件删除', + 'slug' => 'course_attach.destroy', + 'method' => 'DELETE', + 'url' => 'course_attach/\d+', + ], ]; foreach ($permissions as $permission) { diff --git a/database/seeds/AdministratorSuperSeeder.php b/database/seeds/AdministratorSuperSeeder.php index 4b22ff927..af0df543d 100644 --- a/database/seeds/AdministratorSuperSeeder.php +++ b/database/seeds/AdministratorSuperSeeder.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Illuminate\Database\Seeder; class AdministratorSuperSeeder extends Seeder diff --git a/database/seeds/CourseVideoSeeder.php b/database/seeds/CourseVideoSeeder.php index 53f19e2ed..66b150c95 100644 --- a/database/seeds/CourseVideoSeeder.php +++ b/database/seeds/CourseVideoSeeder.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Illuminate\Database\Seeder; class CourseVideoSeeder extends Seeder diff --git a/database/seeds/DatabaseSeeder.php b/database/seeds/DatabaseSeeder.php index 768fb530a..481cd8bac 100644 --- a/database/seeds/DatabaseSeeder.php +++ b/database/seeds/DatabaseSeeder.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Illuminate\Database\Seeder; class DatabaseSeeder extends Seeder diff --git a/database/seeds/UserSeeder.php b/database/seeds/UserSeeder.php index 365c5cc7c..ce8e416af 100644 --- a/database/seeds/UserSeeder.php +++ b/database/seeds/UserSeeder.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + use Illuminate\Database\Seeder; class UserSeeder extends Seeder diff --git a/public/frontend/css/frontend.css b/public/frontend/css/frontend.css index 690f22d83..07884d304 100644 --- a/public/frontend/css/frontend.css +++ b/public/frontend/css/frontend.css @@ -3,4 +3,4 @@ * Copyright 2011-2019 The Bootstrap Authors * Copyright 2011-2019 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#0b76de;--secondary:#344962;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#38aecc;--dark:#1a2b3f;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:-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";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}*,:after,:before{-webkit-box-sizing:border-box;box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus:not(:focus-visible){outline:0!important}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0;text-decoration-skip-ink:none}address{font-style:normal;line-height:inherit}address,dl,ol,ul{margin-bottom:1rem}dl,ol,ul{margin-top:0}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#0b76de;text-decoration:none;background-color:transparent}a:hover{color:#074f95;text-decoration:underline}a:not([href]),a:not([href]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto}figure{margin:0 0 1rem}img{border-style:none}img,svg{vertical-align:middle}svg{overflow:hidden}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}select{word-wrap:normal}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem}.display-1,.display-2{font-weight:300;line-height:1.2}.display-2{font-size:5.5rem}.display-3{font-size:4.5rem}.display-3,.display-4{font-weight:300;line-height:1.2}.display-4{font-size:3.5rem}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.small,small{font-size:80%;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8e3}.list-inline,.list-unstyled{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:80%;color:#6c757d}.blockquote-footer:before{content:"\2014\A0"}.img-fluid,.img-thumbnail{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#6c757d}code{font-size:87.5%;color:#e83e8c;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#212529}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:576px){.container{max-width:540px}}@media (min-width:768px){.container{max-width:1230px}}@media (min-width:992px){.container{max-width:1230px}}@media (min-width:1200px){.container{max-width:1230px}}.container-fluid,.container-lg,.container-md,.container-sm,.container-xl{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1230px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1230px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1230px}}.row{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col,.col-1,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-10,.col-11,.col-12,.col-auto,.col-lg,.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-auto,.col-md,.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12,.col-md-auto,.col-sm,.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-auto{position:relative;width:100%;padding-right:15px;padding-left:15px}.col{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-1>*{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-2>*{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-3>*{-webkit-box-flex:0;-ms-flex:0 0 33.33333333%;flex:0 0 33.33333333%;max-width:33.33333333%}.row-cols-4>*{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-5>*{-webkit-box-flex:0;-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-6>*{-webkit-box-flex:0;-ms-flex:0 0 16.66666667%;flex:0 0 16.66666667%;max-width:16.66666667%}.col-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-1,.col-auto{-webkit-box-flex:0}.col-1{-ms-flex:0 0 8.33333333%;flex:0 0 8.33333333%;max-width:8.33333333%}.col-2{-ms-flex:0 0 16.66666667%;flex:0 0 16.66666667%;max-width:16.66666667%}.col-2,.col-3{-webkit-box-flex:0}.col-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-4{-ms-flex:0 0 33.33333333%;flex:0 0 33.33333333%;max-width:33.33333333%}.col-4,.col-5{-webkit-box-flex:0}.col-5{-ms-flex:0 0 41.66666667%;flex:0 0 41.66666667%;max-width:41.66666667%}.col-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-6,.col-7{-webkit-box-flex:0}.col-7{-ms-flex:0 0 58.33333333%;flex:0 0 58.33333333%;max-width:58.33333333%}.col-8{-ms-flex:0 0 66.66666667%;flex:0 0 66.66666667%;max-width:66.66666667%}.col-8,.col-9{-webkit-box-flex:0}.col-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-10{-ms-flex:0 0 83.33333333%;flex:0 0 83.33333333%;max-width:83.33333333%}.col-10,.col-11{-webkit-box-flex:0}.col-11{-ms-flex:0 0 91.66666667%;flex:0 0 91.66666667%;max-width:91.66666667%}.col-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-1{margin-left:8.33333333%}.offset-2{margin-left:16.66666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333333%}.offset-5{margin-left:41.66666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333333%}.offset-8{margin-left:66.66666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333333%}.offset-11{margin-left:91.66666667%}@media (min-width:576px){.col-sm{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-sm-1>*{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-sm-2>*{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-sm-3>*{-webkit-box-flex:0;-ms-flex:0 0 33.33333333%;flex:0 0 33.33333333%;max-width:33.33333333%}.row-cols-sm-4>*{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-sm-5>*{-webkit-box-flex:0;-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-sm-6>*{-webkit-box-flex:0;-ms-flex:0 0 16.66666667%;flex:0 0 16.66666667%;max-width:16.66666667%}.col-sm-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-sm-1{-webkit-box-flex:0;-ms-flex:0 0 8.33333333%;flex:0 0 8.33333333%;max-width:8.33333333%}.col-sm-2{-webkit-box-flex:0;-ms-flex:0 0 16.66666667%;flex:0 0 16.66666667%;max-width:16.66666667%}.col-sm-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-sm-4{-webkit-box-flex:0;-ms-flex:0 0 33.33333333%;flex:0 0 33.33333333%;max-width:33.33333333%}.col-sm-5{-webkit-box-flex:0;-ms-flex:0 0 41.66666667%;flex:0 0 41.66666667%;max-width:41.66666667%}.col-sm-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-sm-7{-webkit-box-flex:0;-ms-flex:0 0 58.33333333%;flex:0 0 58.33333333%;max-width:58.33333333%}.col-sm-8{-webkit-box-flex:0;-ms-flex:0 0 66.66666667%;flex:0 0 66.66666667%;max-width:66.66666667%}.col-sm-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-sm-10{-webkit-box-flex:0;-ms-flex:0 0 83.33333333%;flex:0 0 83.33333333%;max-width:83.33333333%}.col-sm-11{-webkit-box-flex:0;-ms-flex:0 0 91.66666667%;flex:0 0 91.66666667%;max-width:91.66666667%}.col-sm-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-sm-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-sm-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-sm-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-sm-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-sm-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-sm-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-sm-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-sm-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-sm-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-sm-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-sm-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-sm-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-sm-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-sm-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-sm-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333333%}.offset-sm-2{margin-left:16.66666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333333%}.offset-sm-5{margin-left:41.66666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333333%}.offset-sm-8{margin-left:66.66666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333333%}.offset-sm-11{margin-left:91.66666667%}}@media (min-width:768px){.col-md{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-md-1>*{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-md-2>*{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-md-3>*{-webkit-box-flex:0;-ms-flex:0 0 33.33333333%;flex:0 0 33.33333333%;max-width:33.33333333%}.row-cols-md-4>*{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-md-5>*{-webkit-box-flex:0;-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-md-6>*{-webkit-box-flex:0;-ms-flex:0 0 16.66666667%;flex:0 0 16.66666667%;max-width:16.66666667%}.col-md-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-md-1{-webkit-box-flex:0;-ms-flex:0 0 8.33333333%;flex:0 0 8.33333333%;max-width:8.33333333%}.col-md-2{-webkit-box-flex:0;-ms-flex:0 0 16.66666667%;flex:0 0 16.66666667%;max-width:16.66666667%}.col-md-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-md-4{-webkit-box-flex:0;-ms-flex:0 0 33.33333333%;flex:0 0 33.33333333%;max-width:33.33333333%}.col-md-5{-webkit-box-flex:0;-ms-flex:0 0 41.66666667%;flex:0 0 41.66666667%;max-width:41.66666667%}.col-md-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-md-7{-webkit-box-flex:0;-ms-flex:0 0 58.33333333%;flex:0 0 58.33333333%;max-width:58.33333333%}.col-md-8{-webkit-box-flex:0;-ms-flex:0 0 66.66666667%;flex:0 0 66.66666667%;max-width:66.66666667%}.col-md-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-md-10{-webkit-box-flex:0;-ms-flex:0 0 83.33333333%;flex:0 0 83.33333333%;max-width:83.33333333%}.col-md-11{-webkit-box-flex:0;-ms-flex:0 0 91.66666667%;flex:0 0 91.66666667%;max-width:91.66666667%}.col-md-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-md-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-md-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-md-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-md-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-md-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-md-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-md-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-md-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-md-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-md-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-md-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-md-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-md-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-md-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-md-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333333%}.offset-md-2{margin-left:16.66666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333333%}.offset-md-5{margin-left:41.66666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333333%}.offset-md-8{margin-left:66.66666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333333%}.offset-md-11{margin-left:91.66666667%}}@media (min-width:992px){.col-lg{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-lg-1>*{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-lg-2>*{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-lg-3>*{-webkit-box-flex:0;-ms-flex:0 0 33.33333333%;flex:0 0 33.33333333%;max-width:33.33333333%}.row-cols-lg-4>*{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-lg-5>*{-webkit-box-flex:0;-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-lg-6>*{-webkit-box-flex:0;-ms-flex:0 0 16.66666667%;flex:0 0 16.66666667%;max-width:16.66666667%}.col-lg-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-lg-1{-webkit-box-flex:0;-ms-flex:0 0 8.33333333%;flex:0 0 8.33333333%;max-width:8.33333333%}.col-lg-2{-webkit-box-flex:0;-ms-flex:0 0 16.66666667%;flex:0 0 16.66666667%;max-width:16.66666667%}.col-lg-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-lg-4{-webkit-box-flex:0;-ms-flex:0 0 33.33333333%;flex:0 0 33.33333333%;max-width:33.33333333%}.col-lg-5{-webkit-box-flex:0;-ms-flex:0 0 41.66666667%;flex:0 0 41.66666667%;max-width:41.66666667%}.col-lg-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-lg-7{-webkit-box-flex:0;-ms-flex:0 0 58.33333333%;flex:0 0 58.33333333%;max-width:58.33333333%}.col-lg-8{-webkit-box-flex:0;-ms-flex:0 0 66.66666667%;flex:0 0 66.66666667%;max-width:66.66666667%}.col-lg-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-lg-10{-webkit-box-flex:0;-ms-flex:0 0 83.33333333%;flex:0 0 83.33333333%;max-width:83.33333333%}.col-lg-11{-webkit-box-flex:0;-ms-flex:0 0 91.66666667%;flex:0 0 91.66666667%;max-width:91.66666667%}.col-lg-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-lg-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-lg-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-lg-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-lg-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-lg-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-lg-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-lg-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-lg-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-lg-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-lg-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-lg-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-lg-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-lg-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-lg-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-lg-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333333%}.offset-lg-2{margin-left:16.66666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333333%}.offset-lg-5{margin-left:41.66666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333333%}.offset-lg-8{margin-left:66.66666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333333%}.offset-lg-11{margin-left:91.66666667%}}@media (min-width:1200px){.col-xl{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-xl-1>*{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-xl-2>*{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-xl-3>*{-webkit-box-flex:0;-ms-flex:0 0 33.33333333%;flex:0 0 33.33333333%;max-width:33.33333333%}.row-cols-xl-4>*{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-xl-5>*{-webkit-box-flex:0;-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-xl-6>*{-webkit-box-flex:0;-ms-flex:0 0 16.66666667%;flex:0 0 16.66666667%;max-width:16.66666667%}.col-xl-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-xl-1{-webkit-box-flex:0;-ms-flex:0 0 8.33333333%;flex:0 0 8.33333333%;max-width:8.33333333%}.col-xl-2{-webkit-box-flex:0;-ms-flex:0 0 16.66666667%;flex:0 0 16.66666667%;max-width:16.66666667%}.col-xl-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-xl-4{-webkit-box-flex:0;-ms-flex:0 0 33.33333333%;flex:0 0 33.33333333%;max-width:33.33333333%}.col-xl-5{-webkit-box-flex:0;-ms-flex:0 0 41.66666667%;flex:0 0 41.66666667%;max-width:41.66666667%}.col-xl-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-xl-7{-webkit-box-flex:0;-ms-flex:0 0 58.33333333%;flex:0 0 58.33333333%;max-width:58.33333333%}.col-xl-8{-webkit-box-flex:0;-ms-flex:0 0 66.66666667%;flex:0 0 66.66666667%;max-width:66.66666667%}.col-xl-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-xl-10{-webkit-box-flex:0;-ms-flex:0 0 83.33333333%;flex:0 0 83.33333333%;max-width:83.33333333%}.col-xl-11{-webkit-box-flex:0;-ms-flex:0 0 91.66666667%;flex:0 0 91.66666667%;max-width:91.66666667%}.col-xl-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-xl-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-xl-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-xl-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-xl-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-xl-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-xl-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-xl-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-xl-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-xl-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-xl-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-xl-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-xl-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-xl-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-xl-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-xl-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333333%}.offset-xl-2{margin-left:16.66666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333333%}.offset-xl-5{margin-left:41.66666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333333%}.offset-xl-8{margin-left:66.66666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333333%}.offset-xl-11{margin-left:91.66666667%}}.table{width:100%;margin-bottom:1rem;color:#212529}.table td,.table th{padding:.75rem;vertical-align:top;border-top:1px solid #777}.table thead th{vertical-align:bottom;border-bottom:2px solid #777}.table tbody+tbody{border-top:2px solid #777}.table-sm td,.table-sm th{padding:.3rem}.table-bordered,.table-bordered td,.table-bordered th{border:1px solid #777}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-borderless tbody+tbody,.table-borderless td,.table-borderless th,.table-borderless thead th{border:0}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.table-hover tbody tr:hover{color:#212529;background-color:rgba(0,0,0,.075)}.table-primary,.table-primary>td,.table-primary>th{background-color:#bbd9f6}.table-primary tbody+tbody,.table-primary td,.table-primary th,.table-primary thead th{border-color:#80b8ee}.table-hover .table-primary:hover,.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#a4ccf3}.table-secondary,.table-secondary>td,.table-secondary>th{background-color:#c6ccd3}.table-secondary tbody+tbody,.table-secondary td,.table-secondary th,.table-secondary thead th{border-color:#95a0ad}.table-hover .table-secondary:hover,.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#b8bfc8}.table-success,.table-success>td,.table-success>th{background-color:#c3e6cb}.table-success tbody+tbody,.table-success td,.table-success th,.table-success thead th{border-color:#8fd19e}.table-hover .table-success:hover,.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b1dfbb}.table-info,.table-info>td,.table-info>th{background-color:#bee5eb}.table-info tbody+tbody,.table-info td,.table-info th,.table-info thead th{border-color:#86cfda}.table-hover .table-info:hover,.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}.table-warning,.table-warning>td,.table-warning>th{background-color:#ffeeba}.table-warning tbody+tbody,.table-warning td,.table-warning th,.table-warning thead th{border-color:#ffdf7e}.table-hover .table-warning:hover,.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe8a1}.table-danger,.table-danger>td,.table-danger>th{background-color:#f5c6cb}.table-danger tbody+tbody,.table-danger td,.table-danger th,.table-danger thead th{border-color:#ed969e}.table-hover .table-danger:hover,.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f1b0b7}.table-light,.table-light>td,.table-light>th{background-color:#c7e8f1}.table-light tbody+tbody,.table-light td,.table-light th,.table-light thead th{border-color:#98d5e4}.table-hover .table-light:hover,.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#b3e0ec}.table-dark,.table-dark>td,.table-dark>th{background-color:#bfc4c9}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#88919b}.table-hover .table-dark:hover,.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b1b7bd}.table-active,.table-active>td,.table-active>th,.table-hover .table-active:hover,.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,.075)}.table .thead-dark th{color:#fff;background-color:#343a40;border-color:#454d55}.table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#777}.table-dark{color:#fff;background-color:#343a40}.table-dark td,.table-dark th,.table-dark thead th{border-color:#454d55}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:hsla(0,0%,100%,.05)}.table-dark.table-hover tbody tr:hover{color:#fff;background-color:hsla(0,0%,100%,.075)}@media (max-width:575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-sm>.table-bordered{border:0}}@media (max-width:767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-md>.table-bordered{border:0}}@media (max-width:991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-lg>.table-bordered{border:0}}@media (max-width:1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;-webkit-transition:border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{-webkit-transition:none;transition:none}}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}.form-control:focus{color:#495057;background-color:#fff;border-color:#71b5f8;outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(11,118,222,.25);box-shadow:0 0 0 .2rem rgba(11,118,222,.25)}.form-control::-webkit-input-placeholder{color:#6c757d;opacity:1}.form-control::-moz-placeholder{color:#6c757d;opacity:1}.form-control::-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;font-size:1rem;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.form-control-lg{height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}select.form-control[multiple],select.form-control[size],textarea.form-control{height:auto}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*=col-]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{color:#6c757d}.form-check-label{margin-bottom:0}.form-check-inline{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#28a745}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(40,167,69,.9);border-radius:.25rem}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.was-validated .form-control:valid{border-color:#28a745;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3E%3Cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:#28a745;-webkit-box-shadow:0 0 0 .2rem rgba(40,167,69,.25);box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-valid,.was-validated .custom-select:valid{border-color:#28a745;padding-right:calc(.75em + 2.3125rem);background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right .75rem center/8px 10px,url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3E%3Cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3E%3C/svg%3E") #fff no-repeat center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem)}.custom-select.is-valid:focus,.was-validated .custom-select:valid:focus{border-color:#28a745;-webkit-box-shadow:0 0 0 .2rem rgba(40,167,69,.25);box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#28a745}.form-check-input.is-valid~.valid-feedback,.form-check-input.is-valid~.valid-tooltip,.was-validated .form-check-input:valid~.valid-feedback,.was-validated .form-check-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid~.custom-control-label,.was-validated .custom-control-input:valid~.custom-control-label{color:#28a745}.custom-control-input.is-valid~.custom-control-label:before,.was-validated .custom-control-input:valid~.custom-control-label:before{border-color:#28a745}.custom-control-input.is-valid:checked~.custom-control-label:before,.was-validated .custom-control-input:valid:checked~.custom-control-label:before{border-color:#34ce57;background-color:#34ce57}.custom-control-input.is-valid:focus~.custom-control-label:before,.was-validated .custom-control-input:valid:focus~.custom-control-label:before{-webkit-box-shadow:0 0 0 .2rem rgba(40,167,69,.25);box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.custom-control-input.is-valid:focus:not(:checked)~.custom-control-label:before,.custom-file-input.is-valid~.custom-file-label,.was-validated .custom-control-input:valid:focus:not(:checked)~.custom-control-label:before,.was-validated .custom-file-input:valid~.custom-file-label{border-color:#28a745}.custom-file-input.is-valid:focus~.custom-file-label,.was-validated .custom-file-input:valid:focus~.custom-file-label{border-color:#28a745;-webkit-box-shadow:0 0 0 .2rem rgba(40,167,69,.25);box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(220,53,69,.9);border-radius:.25rem}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3E%3Ccircle cx='6' cy='6' r='4.5'/%3E%3Cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3E%3Ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;-webkit-box-shadow:0 0 0 .2rem rgba(220,53,69,.25);box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-invalid,.was-validated .custom-select:invalid{border-color:#dc3545;padding-right:calc(.75em + 2.3125rem);background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right .75rem center/8px 10px,url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3E%3Ccircle cx='6' cy='6' r='4.5'/%3E%3Cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3E%3Ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3E%3C/svg%3E") #fff no-repeat center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem)}.custom-select.is-invalid:focus,.was-validated .custom-select:invalid:focus{border-color:#dc3545;-webkit-box-shadow:0 0 0 .2rem rgba(220,53,69,.25);box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545}.form-check-input.is-invalid~.invalid-feedback,.form-check-input.is-invalid~.invalid-tooltip,.was-validated .form-check-input:invalid~.invalid-feedback,.was-validated .form-check-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid~.custom-control-label,.was-validated .custom-control-input:invalid~.custom-control-label{color:#dc3545}.custom-control-input.is-invalid~.custom-control-label:before,.was-validated .custom-control-input:invalid~.custom-control-label:before{border-color:#dc3545}.custom-control-input.is-invalid:checked~.custom-control-label:before,.was-validated .custom-control-input:invalid:checked~.custom-control-label:before{border-color:#e4606d;background-color:#e4606d}.custom-control-input.is-invalid:focus~.custom-control-label:before,.was-validated .custom-control-input:invalid:focus~.custom-control-label:before{-webkit-box-shadow:0 0 0 .2rem rgba(220,53,69,.25);box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.custom-control-input.is-invalid:focus:not(:checked)~.custom-control-label:before,.custom-file-input.is-invalid~.custom-file-label,.was-validated .custom-control-input:invalid:focus:not(:checked)~.custom-control-label:before,.was-validated .custom-file-input:invalid~.custom-file-label{border-color:#dc3545}.custom-file-input.is-invalid:focus~.custom-file-label,.was-validated .custom-file-input:invalid:focus~.custom-file-label{border-color:#dc3545;-webkit-box-shadow:0 0 0 .2rem rgba(220,53,69,.25);box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-inline{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.form-inline .form-check{width:100%}@media (min-width:576px){.form-inline label{-ms-flex-align:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.form-inline .form-group,.form-inline label{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;align-items:center;margin-bottom:0}.form-inline .form-group{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .custom-select,.form-inline .input-group{width:auto}.form-inline .form-check{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;-ms-flex-negative:0;flex-shrink:0;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;color:#212529;text-align:center;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;-webkit-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{-webkit-transition:none;transition:none}}.btn:hover{color:#212529;text-decoration:none}.btn.focus,.btn:focus{outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(11,118,222,.25);box-shadow:0 0 0 .2rem rgba(11,118,222,.25)}.btn.disabled,.btn:disabled{opacity:.65}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#0b76de;border-color:#0b76de}.btn-primary.focus,.btn-primary:focus,.btn-primary:hover{color:#fff;background-color:#0963ba;border-color:#095cad}.btn-primary.focus,.btn-primary:focus{-webkit-box-shadow:0 0 0 .2rem rgba(48,139,227,.5);box-shadow:0 0 0 .2rem rgba(48,139,227,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#0b76de;border-color:#0b76de}.btn-primary:not(:disabled):not(.disabled).active,.btn-primary:not(:disabled):not(.disabled):active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#095cad;border-color:#0856a1}.btn-primary:not(:disabled):not(.disabled).active:focus,.btn-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-primary.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(48,139,227,.5);box-shadow:0 0 0 .2rem rgba(48,139,227,.5)}.btn-secondary{color:#fff;background-color:#344962;border-color:#344962}.btn-secondary.focus,.btn-secondary:focus,.btn-secondary:hover{color:#fff;background-color:#273649;border-color:#223041}.btn-secondary.focus,.btn-secondary:focus{-webkit-box-shadow:0 0 0 .2rem rgba(82,100,122,.5);box-shadow:0 0 0 .2rem rgba(82,100,122,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#344962;border-color:#344962}.btn-secondary:not(:disabled):not(.disabled).active,.btn-secondary:not(:disabled):not(.disabled):active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#223041;border-color:#1e2a38}.btn-secondary:not(:disabled):not(.disabled).active:focus,.btn-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-secondary.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(82,100,122,.5);box-shadow:0 0 0 .2rem rgba(82,100,122,.5)}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success.focus,.btn-success:focus,.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success.focus,.btn-success:focus{-webkit-box-shadow:0 0 0 .2rem rgba(72,180,97,.5);box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:not(:disabled):not(.disabled).active,.btn-success:not(:disabled):not(.disabled):active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.btn-success:not(:disabled):not(.disabled).active:focus,.btn-success:not(:disabled):not(.disabled):active:focus,.show>.btn-success.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(72,180,97,.5);box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info.focus,.btn-info:focus,.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info.focus,.btn-info:focus{-webkit-box-shadow:0 0 0 .2rem rgba(58,176,195,.5);box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:not(:disabled):not(.disabled).active,.btn-info:not(:disabled):not(.disabled):active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}.btn-info:not(:disabled):not(.disabled).active:focus,.btn-info:not(:disabled):not(.disabled):active:focus,.show>.btn-info.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(58,176,195,.5);box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning.focus,.btn-warning:focus,.btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.btn-warning.focus,.btn-warning:focus{-webkit-box-shadow:0 0 0 .2rem rgba(222,170,12,.5);box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:not(:disabled):not(.disabled).active,.btn-warning:not(:disabled):not(.disabled):active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}.btn-warning:not(:disabled):not(.disabled).active:focus,.btn-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-warning.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(222,170,12,.5);box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger.focus,.btn-danger:focus,.btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.btn-danger.focus,.btn-danger:focus{-webkit-box-shadow:0 0 0 .2rem rgba(225,83,97,.5);box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:not(:disabled):not(.disabled).active,.btn-danger:not(:disabled):not(.disabled):active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#bd2130;border-color:#b21f2d}.btn-danger:not(:disabled):not(.disabled).active:focus,.btn-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-danger.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(225,83,97,.5);box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-light{color:#fff;background-color:#38aecc;border-color:#38aecc}.btn-light.focus,.btn-light:focus,.btn-light:hover{color:#fff;background-color:#2d96b1;border-color:#2b8da6}.btn-light.focus,.btn-light:focus{-webkit-box-shadow:0 0 0 .2rem rgba(86,186,212,.5);box-shadow:0 0 0 .2rem rgba(86,186,212,.5)}.btn-light.disabled,.btn-light:disabled{color:#fff;background-color:#38aecc;border-color:#38aecc}.btn-light:not(:disabled):not(.disabled).active,.btn-light:not(:disabled):not(.disabled):active,.show>.btn-light.dropdown-toggle{color:#fff;background-color:#2b8da6;border-color:#28859c}.btn-light:not(:disabled):not(.disabled).active:focus,.btn-light:not(:disabled):not(.disabled):active:focus,.show>.btn-light.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(86,186,212,.5);box-shadow:0 0 0 .2rem rgba(86,186,212,.5)}.btn-dark{color:#fff;background-color:#1a2b3f;border-color:#1a2b3f}.btn-dark.focus,.btn-dark:focus,.btn-dark:hover{color:#fff;background-color:#0f1924;border-color:#0b121b}.btn-dark.focus,.btn-dark:focus{-webkit-box-shadow:0 0 0 .2rem rgba(60,75,92,.5);box-shadow:0 0 0 .2rem rgba(60,75,92,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#1a2b3f;border-color:#1a2b3f}.btn-dark:not(:disabled):not(.disabled).active,.btn-dark:not(:disabled):not(.disabled):active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#0b121b;border-color:#070c12}.btn-dark:not(:disabled):not(.disabled).active:focus,.btn-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-dark.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(60,75,92,.5);box-shadow:0 0 0 .2rem rgba(60,75,92,.5)}.btn-outline-primary{color:#0b76de;border-color:#0b76de}.btn-outline-primary:hover{color:#fff;background-color:#0b76de;border-color:#0b76de}.btn-outline-primary.focus,.btn-outline-primary:focus{-webkit-box-shadow:0 0 0 .2rem rgba(11,118,222,.5);box-shadow:0 0 0 .2rem rgba(11,118,222,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#0b76de;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled).active,.btn-outline-primary:not(:disabled):not(.disabled):active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#0b76de;border-color:#0b76de}.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(11,118,222,.5);box-shadow:0 0 0 .2rem rgba(11,118,222,.5)}.btn-outline-secondary{color:#344962;border-color:#344962}.btn-outline-secondary:hover{color:#fff;background-color:#344962;border-color:#344962}.btn-outline-secondary.focus,.btn-outline-secondary:focus{-webkit-box-shadow:0 0 0 .2rem rgba(52,73,98,.5);box-shadow:0 0 0 .2rem rgba(52,73,98,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#344962;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled).active,.btn-outline-secondary:not(:disabled):not(.disabled):active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#344962;border-color:#344962}.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(52,73,98,.5);box-shadow:0 0 0 .2rem rgba(52,73,98,.5)}.btn-outline-success{color:#28a745;border-color:#28a745}.btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success.focus,.btn-outline-success:focus{-webkit-box-shadow:0 0 0 .2rem rgba(40,167,69,.5);box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#28a745;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled).active,.btn-outline-success:not(:disabled):not(.disabled):active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:not(:disabled):not(.disabled).active:focus,.btn-outline-success:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-success.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(40,167,69,.5);box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-info{color:#17a2b8;border-color:#17a2b8}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info.focus,.btn-outline-info:focus{-webkit-box-shadow:0 0 0 .2rem rgba(23,162,184,.5);box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled).active,.btn-outline-info:not(:disabled):not(.disabled):active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:not(:disabled):not(.disabled).active:focus,.btn-outline-info:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-info.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(23,162,184,.5);box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-warning{color:#ffc107;border-color:#ffc107}.btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning.focus,.btn-outline-warning:focus{-webkit-box-shadow:0 0 0 .2rem rgba(255,193,7,.5);box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled).active,.btn-outline-warning:not(:disabled):not(.disabled):active,.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(255,193,7,.5);box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-danger{color:#dc3545;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger.focus,.btn-outline-danger:focus{-webkit-box-shadow:0 0 0 .2rem rgba(220,53,69,.5);box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled).active,.btn-outline-danger:not(:disabled):not(.disabled):active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(220,53,69,.5);box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-light{color:#38aecc;border-color:#38aecc}.btn-outline-light:hover{color:#fff;background-color:#38aecc;border-color:#38aecc}.btn-outline-light.focus,.btn-outline-light:focus{-webkit-box-shadow:0 0 0 .2rem rgba(56,174,204,.5);box-shadow:0 0 0 .2rem rgba(56,174,204,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#38aecc;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled).active,.btn-outline-light:not(:disabled):not(.disabled):active,.show>.btn-outline-light.dropdown-toggle{color:#fff;background-color:#38aecc;border-color:#38aecc}.btn-outline-light:not(:disabled):not(.disabled).active:focus,.btn-outline-light:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-light.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(56,174,204,.5);box-shadow:0 0 0 .2rem rgba(56,174,204,.5)}.btn-outline-dark{color:#1a2b3f;border-color:#1a2b3f}.btn-outline-dark:hover{color:#fff;background-color:#1a2b3f;border-color:#1a2b3f}.btn-outline-dark.focus,.btn-outline-dark:focus{-webkit-box-shadow:0 0 0 .2rem rgba(26,43,63,.5);box-shadow:0 0 0 .2rem rgba(26,43,63,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#1a2b3f;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled).active,.btn-outline-dark:not(:disabled):not(.disabled):active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#1a2b3f;border-color:#1a2b3f}.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(26,43,63,.5);box-shadow:0 0 0 .2rem rgba(26,43,63,.5)}.btn-link{font-weight:400;color:#0b76de;text-decoration:none}.btn-link:hover{color:#074f95;text-decoration:underline}.btn-link.focus,.btn-link:focus{text-decoration:underline;-webkit-box-shadow:none;box-shadow:none}.btn-link.disabled,.btn-link:disabled{color:#6c757d;pointer-events:none}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{-webkit-transition:opacity .15s linear;transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{-webkit-transition:none;transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{-webkit-transition:none;transition:none}}.dropdown,.dropleft,.dropright,.dropup{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty:after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-menu-left{right:auto;left:0}.dropdown-menu-right{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-left{right:auto;left:0}.dropdown-menu-sm-right{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-left{right:auto;left:0}.dropdown-menu-md-right{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-left{right:auto;left:0}.dropdown-menu-lg-right{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-left{right:auto;left:0}.dropdown-menu-xl-right{right:0;left:auto}}.dropup .dropdown-menu{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty:after{margin-left:0}.dropright .dropdown-menu{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty:after{margin-left:0}.dropright .dropdown-toggle:after{vertical-align:0}.dropleft .dropdown-menu{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";display:none}.dropleft .dropdown-toggle:before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty:after{margin-left:0}.dropleft .dropdown-toggle:before{vertical-align:0}.dropdown-menu[x-placement^=bottom],.dropdown-menu[x-placement^=left],.dropdown-menu[x-placement^=right],.dropdown-menu[x-placement^=top]{right:auto;bottom:auto}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#16181b;text-decoration:none;background-color:#f8f9fa}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#0b76de}.dropdown-item.disabled,.dropdown-item:disabled{color:#6c757d;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#212529}.btn-group,.btn-group-vertical{position:relative;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:1}.btn-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn-group:not(:first-child),.btn-group>.btn:not(:first-child){margin-left:-1px}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split:after,.dropright .dropdown-toggle-split:after,.dropup .dropdown-toggle-split:after{margin-left:0}.dropleft .dropdown-toggle-split:before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn-group>.btn input[type=checkbox],.btn-group-toggle>.btn-group>.btn input[type=radio],.btn-group-toggle>.btn input[type=checkbox],.btn-group-toggle>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;width:100%}.input-group>.custom-file,.input-group>.custom-select,.input-group>.form-control,.input-group>.form-control-plaintext{position:relative;-webkit-box-flex:1;-ms-flex:1 1 0%;flex:1 1 0%;min-width:0;margin-bottom:0}.input-group>.custom-file+.custom-file,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.form-control,.input-group>.custom-select+.custom-file,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.form-control,.input-group>.form-control+.custom-file,.input-group>.form-control+.custom-select,.input-group>.form-control+.form-control,.input-group>.form-control-plaintext+.custom-file,.input-group>.form-control-plaintext+.custom-select,.input-group>.form-control-plaintext+.form-control{margin-left:-1px}.input-group>.custom-file .custom-file-input:focus~.custom-file-label,.input-group>.custom-select:focus,.input-group>.form-control:focus{z-index:3}.input-group>.custom-file .custom-file-input:focus{z-index:4}.input-group>.custom-select:not(:last-child),.input-group>.form-control:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-select:not(:first-child),.input-group>.form-control:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label:after{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-append,.input-group-prepend{display:-webkit-box;display:-ms-flexbox;display:flex}.input-group-append .btn,.input-group-prepend .btn{position:relative;z-index:2}.input-group-append .btn:focus,.input-group-prepend .btn:focus{z-index:3}.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.btn,.input-group-append .input-group-text+.input-group-text,.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-prepend .input-group-text+.input-group-text{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-text input[type=checkbox],.input-group-text input[type=radio]{margin-top:0}.input-group-lg>.custom-select,.input-group-lg>.form-control:not(textarea){height:calc(1.5em + 1rem + 2px)}.input-group-lg>.custom-select,.input-group-lg>.form-control,.input-group-lg>.input-group-append>.btn,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-prepend>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.input-group-sm>.custom-select,.input-group-sm>.form-control:not(textarea){height:calc(1.5em + .5rem + 2px)}.input-group-sm>.custom-select,.input-group-sm>.form-control,.input-group-sm>.input-group-append>.btn,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-prepend>.input-group-text{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.input-group-lg>.custom-select,.input-group-sm>.custom-select{padding-right:1.75rem}.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child),.input-group>.input-group-append:not(:last-child)>.btn,.input-group>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child),.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text{border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;display:block;min-height:1.5rem;padding-left:1.5rem}.custom-control-inline{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;left:0;z-index:-1;width:1rem;height:1.25rem;opacity:0}.custom-control-input:checked~.custom-control-label:before{color:#fff;border-color:#0b76de;background-color:#0b76de}.custom-control-input:focus~.custom-control-label:before{-webkit-box-shadow:0 0 0 .2rem rgba(11,118,222,.25);box-shadow:0 0 0 .2rem rgba(11,118,222,.25)}.custom-control-input:focus:not(:checked)~.custom-control-label:before{border-color:#71b5f8}.custom-control-input:not(:disabled):active~.custom-control-label:before{color:#fff;background-color:#a1cefa;border-color:#a1cefa}.custom-control-input:disabled~.custom-control-label,.custom-control-input[disabled]~.custom-control-label{color:#6c757d}.custom-control-input:disabled~.custom-control-label:before,.custom-control-input[disabled]~.custom-control-label:before{background-color:#e9ecef}.custom-control-label{position:relative;margin-bottom:0;vertical-align:top}.custom-control-label:before{pointer-events:none;background-color:#fff;border:1px solid #adb5bd}.custom-control-label:after,.custom-control-label:before{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;content:""}.custom-control-label:after{background:no-repeat 50%/50% 50%}.custom-checkbox .custom-control-label:before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked~.custom-control-label:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label:before{border-color:#0b76de;background-color:#0b76de}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4' viewBox='0 0 4 4'%3E%3Cpath stroke='%23fff' d='M0 2h4'/%3E%3C/svg%3E")}.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label:before{background-color:rgba(11,118,222,.5)}.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label:before{background-color:rgba(11,118,222,.5)}.custom-radio .custom-control-label:before{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-label:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E")}.custom-radio .custom-control-input:disabled:checked~.custom-control-label:before{background-color:rgba(11,118,222,.5)}.custom-switch{padding-left:2.25rem}.custom-switch .custom-control-label:before{left:-2.25rem;width:1.75rem;pointer-events:all;border-radius:.5rem}.custom-switch .custom-control-label:after{top:calc(.25rem + 2px);left:calc(-2.25rem + 2px);width:calc(1rem - 4px);height:calc(1rem - 4px);background-color:#adb5bd;border-radius:.5rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-transform .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-transform .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out,-webkit-box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-switch .custom-control-label:after{-webkit-transition:none;transition:none}}.custom-switch .custom-control-input:checked~.custom-control-label:after{background-color:#fff;-webkit-transform:translateX(.75rem);transform:translateX(.75rem)}.custom-switch .custom-control-input:disabled:checked~.custom-control-label:before{background-color:rgba(11,118,222,.5)}.custom-select{display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem 1.75rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;vertical-align:middle;background:#fff url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right .75rem center/8px 10px;border:1px solid #ced4da;border-radius:.25rem;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-select:focus{border-color:#71b5f8;outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(11,118,222,.25);box-shadow:0 0 0 .2rem rgba(11,118,222,.25)}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#6c757d;background-color:#e9ecef}.custom-select::-ms-expand{display:none}.custom-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}.custom-select-sm{height:calc(1.5em + .5rem + 2px);padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.custom-select-lg{height:calc(1.5em + 1rem + 2px);padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.custom-file{display:inline-block;margin-bottom:0}.custom-file,.custom-file-input{position:relative;width:100%;height:calc(1.5em + .75rem + 2px)}.custom-file-input{z-index:2;margin:0;opacity:0}.custom-file-input:focus~.custom-file-label{border-color:#71b5f8;-webkit-box-shadow:0 0 0 .2rem rgba(11,118,222,.25);box-shadow:0 0 0 .2rem rgba(11,118,222,.25)}.custom-file-input:disabled~.custom-file-label,.custom-file-input[disabled]~.custom-file-label{background-color:#e9ecef}.custom-file-input:lang(en)~.custom-file-label:after{content:"Browse"}.custom-file-input~.custom-file-label[data-browse]:after{content:attr(data-browse)}.custom-file-label{left:0;z-index:1;height:calc(1.5em + .75rem + 2px);font-weight:400;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.custom-file-label,.custom-file-label:after{position:absolute;top:0;right:0;padding:.375rem .75rem;line-height:1.5;color:#495057}.custom-file-label:after{bottom:0;z-index:3;display:block;height:calc(1.5em + .75rem);content:"Browse";background-color:#e9ecef;border-left:inherit;border-radius:0 .25rem .25rem 0}.custom-range{width:100%;height:1.4rem;padding:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-range:focus{outline:none}.custom-range:focus::-webkit-slider-thumb{-webkit-box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(11,118,222,.25);box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(11,118,222,.25)}.custom-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(11,118,222,.25)}.custom-range:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(11,118,222,.25)}.custom-range::-moz-focus-outer{border:0}.custom-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#0b76de;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.custom-range::-webkit-slider-thumb:active{background-color:#a1cefa}.custom-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#0b76de;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-moz-range-thumb{-webkit-transition:none;transition:none}}.custom-range::-moz-range-thumb:active{background-color:#a1cefa}.custom-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-ms-thumb{width:1rem;height:1rem;margin-top:0;margin-right:.2rem;margin-left:.2rem;background-color:#0b76de;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-ms-thumb{-webkit-transition:none;transition:none}}.custom-range::-ms-thumb:active{background-color:#a1cefa}.custom-range::-ms-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:transparent;border-color:transparent;border-width:.5rem}.custom-range::-ms-fill-lower,.custom-range::-ms-fill-upper{background-color:#dee2e6;border-radius:1rem}.custom-range::-ms-fill-upper{margin-right:15px}.custom-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.custom-range:disabled::-webkit-slider-runnable-track{cursor:default}.custom-range:disabled::-moz-range-thumb{background-color:#adb5bd}.custom-range:disabled::-moz-range-track{cursor:default}.custom-range:disabled::-ms-thumb{background-color:#adb5bd}.custom-control-label:before,.custom-file-label,.custom-select{-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-control-label:before,.custom-file-label,.custom-select{-webkit-transition:none;transition:none}}.nav{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#0b76de}.nav-fill .nav-item{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;text-align:center}.nav-justified .nav-item{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;padding:.5rem 1rem}.navbar,.navbar .container,.navbar .container-fluid,.navbar .container-lg,.navbar .container-md,.navbar .container-sm,.navbar .container-xl{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-nav{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{-ms-flex-preferred-size:100%;flex-basis:100%;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:no-repeat 50%;background-size:100% 100%}@media (max-width:575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-xl{padding-right:0;padding-left:0}}@media (min-width:576px){.navbar-expand-sm{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-sm,.navbar-expand-sm .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal}.navbar-expand-sm .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-sm .navbar-collapse{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@media (max-width:767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-md,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-xl{padding-right:0;padding-left:0}}@media (min-width:768px){.navbar-expand-md{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-md,.navbar-expand-md .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal}.navbar-expand-md .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-md,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-md .navbar-collapse{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@media (max-width:991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-xl{padding-right:0;padding-left:0}}@media (min-width:992px){.navbar-expand-lg{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-lg,.navbar-expand-lg .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal}.navbar-expand-lg .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-lg .navbar-collapse{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media (max-width:1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-xl{padding-right:0;padding-left:0}}@media (min-width:1200px){.navbar-expand-xl{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-xl,.navbar-expand-xl .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal}.navbar-expand-xl .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-xl .navbar-collapse{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}.navbar-expand{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-lg,.navbar-expand>.container-md,.navbar-expand>.container-sm,.navbar-expand>.container-xl{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-lg,.navbar-expand>.container-md,.navbar-expand>.container-sm,.navbar-expand>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand .navbar-collapse{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand,.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.5)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.5);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3E%3Cpath stroke='rgba(0, 0, 0, 0.5)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-light .navbar-text{color:rgba(0,0,0,.5)}.navbar-light .navbar-text a,.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand,.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:hsla(0,0%,100%,.5)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:hsla(0,0%,100%,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:hsla(0,0%,100%,.25)}.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:hsla(0,0%,100%,.5);border-color:hsla(0,0%,100%,.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3E%3Cpath stroke='rgba(255, 255, 255, 0.5)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-dark .navbar-text{color:hsla(0,0%,100%,.5)}.navbar-dark .navbar-text a,.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group:first-child .list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card>.list-group:last-child .list-group-item:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-body{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;min-height:1px;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem}.card-subtitle,.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-header+.list-group .list-group-item:first-child{border-top:0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-bottom:-.75rem;border-bottom:0}.card-header-pills,.card-header-tabs{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img,.card-img-bottom,.card-img-top{-ms-flex-negative:0;flex-shrink:0;width:100%}.card-img,.card-img-top{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-deck .card{margin-bottom:15px}@media (min-width:576px){.card-deck{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{-webkit-box-flex:1;-ms-flex:1 0 0%;flex:1 0 0%;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group>.card{margin-bottom:15px}@media (min-width:576px){.card-group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap}.card-group>.card{-webkit-box-flex:1;-ms-flex:1 0 0%;flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.card-columns .card{margin-bottom:.75rem}@media (min-width:576px){.card-columns{-webkit-column-count:3;-moz-column-count:3;column-count:3;-webkit-column-gap:1.25rem;-moz-column-gap:1.25rem;column-gap:1.25rem;orphans:1;widows:1}.card-columns .card{display:inline-block;width:100%}}.accordion>.card{overflow:hidden}.accordion>.card:not(:last-of-type){border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.accordion>.card:not(:first-of-type){border-top-left-radius:0;border-top-right-radius:0}.accordion>.card>.card-header{border-radius:0;margin-bottom:-1px}.breadcrumb{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item:before{display:inline-block;padding-right:.5rem;color:#6c757d;content:"/"}.breadcrumb-item+.breadcrumb-item:hover:before{text-decoration:underline;text-decoration:none}.breadcrumb-item.active{color:#6c757d}.pagination{display:-webkit-box;display:-ms-flexbox;display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#0b76de;background-color:#fff;border:1px solid #dee2e6}.page-link:hover{z-index:2;color:#074f95;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:3;outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(11,118,222,.25);box-shadow:0 0 0 .2rem rgba(11,118,222,.25)}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link{z-index:3;color:#fff;background-color:#0b76de;border-color:#0b76de}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem;-webkit-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.badge{-webkit-transition:none;transition:none}}a.badge:focus,a.badge:hover{text-decoration:none}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#0b76de}a.badge-primary:focus,a.badge-primary:hover{color:#fff;background-color:#095cad}a.badge-primary.focus,a.badge-primary:focus{outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(11,118,222,.5);box-shadow:0 0 0 .2rem rgba(11,118,222,.5)}.badge-secondary{color:#fff;background-color:#344962}a.badge-secondary:focus,a.badge-secondary:hover{color:#fff;background-color:#223041}a.badge-secondary.focus,a.badge-secondary:focus{outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(52,73,98,.5);box-shadow:0 0 0 .2rem rgba(52,73,98,.5)}.badge-success{color:#fff;background-color:#28a745}a.badge-success:focus,a.badge-success:hover{color:#fff;background-color:#1e7e34}a.badge-success.focus,a.badge-success:focus{outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(40,167,69,.5);box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.badge-info{color:#fff;background-color:#17a2b8}a.badge-info:focus,a.badge-info:hover{color:#fff;background-color:#117a8b}a.badge-info.focus,a.badge-info:focus{outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(23,162,184,.5);box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.badge-warning{color:#212529;background-color:#ffc107}a.badge-warning:focus,a.badge-warning:hover{color:#212529;background-color:#d39e00}a.badge-warning.focus,a.badge-warning:focus{outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(255,193,7,.5);box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.badge-danger{color:#fff;background-color:#dc3545}a.badge-danger:focus,a.badge-danger:hover{color:#fff;background-color:#bd2130}a.badge-danger.focus,a.badge-danger:focus{outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(220,53,69,.5);box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.badge-light{color:#fff;background-color:#38aecc}a.badge-light:focus,a.badge-light:hover{color:#fff;background-color:#2b8da6}a.badge-light.focus,a.badge-light:focus{outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(56,174,204,.5);box-shadow:0 0 0 .2rem rgba(56,174,204,.5)}.badge-dark{color:#fff;background-color:#1a2b3f}a.badge-dark:focus,a.badge-dark:hover{color:#fff;background-color:#0b121b}a.badge-dark.focus,a.badge-dark:focus{outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(26,43,63,.5);box-shadow:0 0 0 .2rem rgba(26,43,63,.5)}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width:576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#063d73;background-color:#cee4f8;border-color:#bbd9f6}.alert-primary hr{border-top-color:#a4ccf3}.alert-primary .alert-link{color:#032343}.alert-secondary{color:#1b2633;background-color:#d6dbe0;border-color:#c6ccd3}.alert-secondary hr{border-top-color:#b8bfc8}.alert-secondary .alert-link{color:#090d12}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert-success hr{border-top-color:#b1dfbb}.alert-success .alert-link{color:#0b2e13}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info hr{border-top-color:#abdde5}.alert-info .alert-link{color:#062c33}.alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-warning hr{border-top-color:#ffe8a1}.alert-warning .alert-link{color:#533f03}.alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-danger hr{border-top-color:#f1b0b7}.alert-danger .alert-link{color:#491217}.alert-light{color:#1d5a6a;background-color:#d7eff5;border-color:#c7e8f1}.alert-light hr{border-top-color:#b3e0ec}.alert-light .alert-link{color:#123842}.alert-dark{color:#0e1621;background-color:#d1d5d9;border-color:#bfc4c9}.alert-dark hr{border-top-color:#b1b7bd}.alert-dark .alert-link{color:#000}@-webkit-keyframes progress-bar-stripes{0%{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{0%{background-position:1rem 0}to{background-position:0 0}}.progress{height:1rem;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress,.progress-bar{display:-webkit-box;display:-ms-flexbox;display:flex;overflow:hidden}.progress-bar{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;color:#fff;text-align:center;white-space:nowrap;background-color:#0b76de;-webkit-transition:width .6s ease;transition:width .6s ease}@media (prefers-reduced-motion:reduce){.progress-bar{-webkit-transition:none;transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent);background-size:1rem 1rem}.progress-bar-animated{-webkit-animation:progress-bar-stripes 1s linear infinite;animation:progress-bar-stripes 1s linear infinite}@media (prefers-reduced-motion:reduce){.progress-bar-animated{-webkit-animation:none;animation:none}}.media{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.media-body{-webkit-box-flex:1;-ms-flex:1;flex:1}.list-group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.list-group-item:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#0b76de;border-color:#0b76de}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:-1px;border-top-width:1px}.list-group-horizontal{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.list-group-horizontal .list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal .list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal .list-group-item.active{margin-top:0}.list-group-horizontal .list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal .list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media (min-width:576px){.list-group-horizontal-sm{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-sm .list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-sm .list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-sm .list-group-item.active{margin-top:0}.list-group-horizontal-sm .list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-sm .list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:768px){.list-group-horizontal-md{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-md .list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-md .list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-md .list-group-item.active{margin-top:0}.list-group-horizontal-md .list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-md .list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:992px){.list-group-horizontal-lg{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-lg .list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-lg .list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-lg .list-group-item.active{margin-top:0}.list-group-horizontal-lg .list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-lg .list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:1200px){.list-group-horizontal-xl{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-xl .list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xl .list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xl .list-group-item.active{margin-top:0}.list-group-horizontal-xl .list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xl .list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}.list-group-flush .list-group-item{border-right-width:0;border-left-width:0;border-radius:0}.list-group-flush .list-group-item:first-child{border-top-width:0}.list-group-flush:last-child .list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{color:#063d73;background-color:#bbd9f6}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#063d73;background-color:#a4ccf3}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#063d73;border-color:#063d73}.list-group-item-secondary{color:#1b2633;background-color:#c6ccd3}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#1b2633;background-color:#b8bfc8}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#1b2633;border-color:#1b2633}.list-group-item-success{color:#155724;background-color:#c3e6cb}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#155724;background-color:#b1dfbb}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}.list-group-item-info{color:#0c5460;background-color:#bee5eb}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#0c5460;background-color:#abdde5}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.list-group-item-warning{color:#856404;background-color:#ffeeba}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#856404;background-color:#ffe8a1}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}.list-group-item-danger{color:#721c24;background-color:#f5c6cb}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#721c24;background-color:#f1b0b7}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#721c24;border-color:#721c24}.list-group-item-light{color:#1d5a6a;background-color:#c7e8f1}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#1d5a6a;background-color:#b3e0ec}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#1d5a6a;border-color:#1d5a6a}.list-group-item-dark{color:#0e1621;background-color:#bfc4c9}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#0e1621;background-color:#b1b7bd}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#0e1621;border-color:#0e1621}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:hover{color:#000;text-decoration:none}.close:not(:disabled):not(.disabled):focus,.close:not(:disabled):not(.disabled):hover{opacity:.75}button.close{padding:0;background-color:transparent;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}a.close.disabled{pointer-events:none}.toast{max-width:350px;overflow:hidden;font-size:.875rem;background-color:hsla(0,0%,100%,.85);background-clip:padding-box;border:1px solid rgba(0,0,0,.1);-webkit-box-shadow:0 .25rem .75rem rgba(0,0,0,.1);box-shadow:0 .25rem .75rem rgba(0,0,0,.1);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);opacity:0;border-radius:.25rem}.toast:not(:last-child){margin-bottom:.75rem}.toast.showing{opacity:1}.toast.show{display:block;opacity:1}.toast.hide{display:none}.toast-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:.25rem .75rem;color:#6c757d;background-color:hsla(0,0%,100%,.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05)}.toast-body{padding:.75rem}.modal-open{overflow:hidden}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal{position:fixed;top:0;left:0;z-index:1050;display:none;width:100%;height:100%;overflow:hidden;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out;-webkit-transform:translateY(-50px);transform:translateY(-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{-webkit-transition:none;transition:none}}.modal.show .modal-dialog{-webkit-transform:none;transform:none}.modal.modal-static .modal-dialog{-webkit-transform:scale(1.02);transform:scale(1.02)}.modal-dialog-scrollable{display:-webkit-box;display:-ms-flexbox;display:flex;max-height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 1rem);overflow:hidden}.modal-dialog-scrollable .modal-footer,.modal-dialog-scrollable .modal-header{-ms-flex-negative:0;flex-shrink:0}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;min-height:calc(100% - 1rem)}.modal-dialog-centered:before{display:block;height:calc(100vh - 1rem);content:""}.modal-dialog-centered.modal-dialog-scrollable{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;height:100%}.modal-dialog-centered.modal-dialog-scrollable .modal-content{max-height:none}.modal-dialog-centered.modal-dialog-scrollable:before{content:none}.modal-content{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:1rem;border-bottom:1px solid #777;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.modal-header .close{padding:1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem}.modal-footer{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;padding:.75rem;border-top:1px solid #777;border-bottom-right-radius:calc(.3rem - 1px);border-bottom-left-radius:calc(.3rem - 1px)}.modal-footer>*{margin:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{max-height:calc(100% - 3.5rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-dialog-centered:before{height:calc(100vh - 3.5rem)}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width:1200px){.modal-xl{max-width:1140px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif;font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow:before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[x-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[x-placement^=top] .arrow,.bs-tooltip-top .arrow{bottom:0}.bs-tooltip-auto[x-placement^=top] .arrow:before,.bs-tooltip-top .arrow:before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[x-placement^=right],.bs-tooltip-right{padding:0 .4rem}.bs-tooltip-auto[x-placement^=right] .arrow,.bs-tooltip-right .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=right] .arrow:before,.bs-tooltip-right .arrow:before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[x-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[x-placement^=bottom] .arrow,.bs-tooltip-bottom .arrow{top:0}.bs-tooltip-auto[x-placement^=bottom] .arrow:before,.bs-tooltip-bottom .arrow:before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[x-placement^=left],.bs-tooltip-left{padding:0 .4rem}.bs-tooltip-auto[x-placement^=left] .arrow,.bs-tooltip-left .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=left] .arrow:before,.bs-tooltip-left .arrow:before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{top:0;left:0;z-index:1060;max-width:276px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif;font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover,.popover .arrow{position:absolute;display:block}.popover .arrow{width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow:after,.popover .arrow:before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top]>.arrow,.bs-popover-top>.arrow{bottom:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=top]>.arrow:before,.bs-popover-top>.arrow:before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=top]>.arrow:after,.bs-popover-top>.arrow:after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right]>.arrow,.bs-popover-right>.arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=right]>.arrow:before,.bs-popover-right>.arrow:before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=right]>.arrow:after,.bs-popover-right>.arrow:after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom]>.arrow,.bs-popover-bottom>.arrow{top:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=bottom]>.arrow:before,.bs-popover-bottom>.arrow:before{top:0;border-width:0 .5rem .5rem;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=bottom]>.arrow:after,.bs-popover-bottom>.arrow:after{top:1px;border-width:0 .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header:before,.bs-popover-bottom .popover-header:before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left]>.arrow,.bs-popover-left>.arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=left]>.arrow:before,.bs-popover-left>.arrow:before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=left]>.arrow:after,.bs-popover-left>.arrow:after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}.carousel{position:relative}.carousel.pointer-event{-ms-touch-action:pan-y;touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner:after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transition:-webkit-transform .6s ease-in-out;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}@media (prefers-reduced-motion:reduce){.carousel-item{-webkit-transition:none;transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-right,.carousel-item-next:not(.carousel-item-left){-webkit-transform:translateX(100%);transform:translateX(100%)}.active.carousel-item-left,.carousel-item-prev:not(.carousel-item-right){-webkit-transform:translateX(-100%);transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;-webkit-transition-property:opacity;transition-property:opacity;-webkit-transform:none;transform:none}.carousel-fade .carousel-item-next.carousel-item-left,.carousel-fade .carousel-item-prev.carousel-item-right,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{z-index:0;opacity:0;-webkit-transition:opacity 0s .6s;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{-webkit-transition:none;transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:.5;-webkit-transition:opacity .15s ease;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{-webkit-transition:none;transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:20px;height:20px;background:no-repeat 50%/100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3E%3Cpath d='M5.25 0l-4 4 4 4 1.5-1.5L4.25 4l2.5-2.5L5.25 0z'/%3E%3C/svg%3E")}.carousel-control-next-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3E%3Cpath d='M2.75 0l-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z'/%3E%3C/svg%3E")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:15;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{-webkit-box-sizing:content-box;box-sizing:content-box;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;-webkit-transition:opacity .6s ease;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators li{-webkit-transition:none;transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}@-webkit-keyframes spinner-border{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes spinner-border{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;border:.25em solid currentColor;border-right-color:transparent;border-radius:50%;-webkit-animation:spinner-border .75s linear infinite;animation:spinner-border .75s linear infinite}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@-webkit-keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1}}@keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;background-color:currentColor;border-radius:50%;opacity:0;-webkit-animation:spinner-grow .75s linear infinite;animation:spinner-grow .75s linear infinite}.spinner-grow-sm{width:1rem;height:1rem}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.bg-primary{background-color:#0b76de!important}a.bg-primary:focus,a.bg-primary:hover,button.bg-primary:focus,button.bg-primary:hover{background-color:#095cad!important}.bg-secondary{background-color:#344962!important}a.bg-secondary:focus,a.bg-secondary:hover,button.bg-secondary:focus,button.bg-secondary:hover{background-color:#223041!important}.bg-success{background-color:#28a745!important}a.bg-success:focus,a.bg-success:hover,button.bg-success:focus,button.bg-success:hover{background-color:#1e7e34!important}.bg-info{background-color:#17a2b8!important}a.bg-info:focus,a.bg-info:hover,button.bg-info:focus,button.bg-info:hover{background-color:#117a8b!important}.bg-warning{background-color:#ffc107!important}a.bg-warning:focus,a.bg-warning:hover,button.bg-warning:focus,button.bg-warning:hover{background-color:#d39e00!important}.bg-danger{background-color:#dc3545!important}a.bg-danger:focus,a.bg-danger:hover,button.bg-danger:focus,button.bg-danger:hover{background-color:#bd2130!important}.bg-light{background-color:#38aecc!important}a.bg-light:focus,a.bg-light:hover,button.bg-light:focus,button.bg-light:hover{background-color:#2b8da6!important}.bg-dark{background-color:#1a2b3f!important}a.bg-dark:focus,a.bg-dark:hover,button.bg-dark:focus,button.bg-dark:hover{background-color:#0b121b!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.border{border:1px solid #777!important}.border-top{border-top:1px solid #777!important}.border-right{border-right:1px solid #777!important}.border-bottom{border-bottom:1px solid #777!important}.border-left{border-left:1px solid #777!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-right-0{border-right:0!important}.border-bottom-0{border-bottom:0!important}.border-left-0{border-left:0!important}.border-primary{border-color:#0b76de!important}.border-secondary{border-color:#344962!important}.border-success{border-color:#28a745!important}.border-info{border-color:#17a2b8!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#38aecc!important}.border-dark{border-color:#1a2b3f!important}.border-white{border-color:#fff!important}.rounded-sm{border-radius:.2rem!important}.rounded{border-radius:.25rem!important}.rounded-top{border-top-left-radius:.25rem!important}.rounded-right,.rounded-top{border-top-right-radius:.25rem!important}.rounded-bottom,.rounded-right{border-bottom-right-radius:.25rem!important}.rounded-bottom,.rounded-left{border-bottom-left-radius:.25rem!important}.rounded-left{border-top-left-radius:.25rem!important}.rounded-lg{border-radius:.3rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-0{border-radius:0!important}.clearfix:after{display:block;clear:both;content:""}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}@media (min-width:576px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-sm-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:768px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-md-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:992px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-lg-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-xl-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media print{.d-print-none{display:none!important}.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-print-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive:before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9:before{padding-top:42.85714286%}.embed-responsive-16by9:before{padding-top:56.25%}.embed-responsive-4by3:before{padding-top:75%}.embed-responsive-1by1:before{padding-top:100%}.flex-row{-webkit-box-orient:horizontal!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-column,.flex-row{-webkit-box-direction:normal!important}.flex-column{-webkit-box-orient:vertical!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-row-reverse{-webkit-box-orient:horizontal!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-column-reverse,.flex-row-reverse{-webkit-box-direction:reverse!important}.flex-column-reverse{-webkit-box-orient:vertical!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-fill{-webkit-box-flex:1!important;-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-grow-0{-webkit-box-flex:0!important;-ms-flex-positive:0!important;flex-grow:0!important}.flex-grow-1{-webkit-box-flex:1!important;-ms-flex-positive:1!important;flex-grow:1!important}.flex-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}@media (min-width:576px){.flex-sm-row{-webkit-box-orient:horizontal!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-sm-column,.flex-sm-row{-webkit-box-direction:normal!important}.flex-sm-column{-webkit-box-orient:vertical!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-sm-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-sm-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-sm-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-sm-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-sm-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-sm-fill{-webkit-box-flex:1!important;-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-sm-grow-0{-webkit-box-flex:0!important;-ms-flex-positive:0!important;flex-grow:0!important}.flex-sm-grow-1{-webkit-box-flex:1!important;-ms-flex-positive:1!important;flex-grow:1!important}.flex-sm-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-sm-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-sm-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-sm-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-sm-center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-sm-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-sm-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-sm-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-sm-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-sm-center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-sm-baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-sm-stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-sm-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-sm-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-sm-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-sm-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-sm-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-sm-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-sm-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-sm-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-sm-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-sm-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-sm-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-sm-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:768px){.flex-md-row{-webkit-box-orient:horizontal!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-md-column,.flex-md-row{-webkit-box-direction:normal!important}.flex-md-column{-webkit-box-orient:vertical!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-md-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-md-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-md-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-md-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-md-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-md-fill{-webkit-box-flex:1!important;-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-md-grow-0{-webkit-box-flex:0!important;-ms-flex-positive:0!important;flex-grow:0!important}.flex-md-grow-1{-webkit-box-flex:1!important;-ms-flex-positive:1!important;flex-grow:1!important}.flex-md-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-md-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-md-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-md-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-md-center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-md-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-md-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-md-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-md-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-md-center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-md-baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-md-stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-md-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-md-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-md-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-md-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-md-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-md-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-md-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-md-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-md-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-md-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-md-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-md-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:992px){.flex-lg-row{-webkit-box-orient:horizontal!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-lg-column,.flex-lg-row{-webkit-box-direction:normal!important}.flex-lg-column{-webkit-box-orient:vertical!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-lg-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-lg-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-lg-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-lg-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-lg-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-lg-fill{-webkit-box-flex:1!important;-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-lg-grow-0{-webkit-box-flex:0!important;-ms-flex-positive:0!important;flex-grow:0!important}.flex-lg-grow-1{-webkit-box-flex:1!important;-ms-flex-positive:1!important;flex-grow:1!important}.flex-lg-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-lg-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-lg-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-lg-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-lg-center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-lg-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-lg-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-lg-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-lg-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-lg-center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-lg-baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-lg-stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-lg-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-lg-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-lg-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-lg-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-lg-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-lg-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-lg-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-lg-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-lg-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-lg-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-lg-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-lg-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:1200px){.flex-xl-row{-webkit-box-orient:horizontal!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-xl-column,.flex-xl-row{-webkit-box-direction:normal!important}.flex-xl-column{-webkit-box-orient:vertical!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-xl-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-xl-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-xl-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-xl-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-xl-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-xl-fill{-webkit-box-flex:1!important;-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-xl-grow-0{-webkit-box-flex:0!important;-ms-flex-positive:0!important;flex-grow:0!important}.flex-xl-grow-1{-webkit-box-flex:1!important;-ms-flex-positive:1!important;flex-grow:1!important}.flex-xl-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-xl-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-xl-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-xl-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-xl-center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-xl-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-xl-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-xl-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-xl-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-xl-center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-xl-baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-xl-stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-xl-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-xl-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-xl-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-xl-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-xl-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-xl-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-xl-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-xl-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-xl-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-xl-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-xl-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-xl-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}@media (min-width:576px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media (min-width:768px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media (min-width:992px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media (min-width:1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.fixed-top{top:0}.fixed-bottom,.fixed-top{position:fixed;right:0;left:0;z-index:1030}.fixed-bottom{bottom:0}@supports ((position:-webkit-sticky) or (position:sticky)){.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal}.shadow-sm{-webkit-box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important;box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow{-webkit-box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important;box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-lg{-webkit-box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important;box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{-webkit-box-shadow:none!important;box-shadow:none!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}.min-vw-100{min-width:100vw!important}.min-vh-100{min-height:100vh!important}.vw-100{width:100vw!important}.vh-100{height:100vh!important}.stretched-link:after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:auto;content:"";background-color:transparent}.m-0{margin:0!important}.mt-0,.my-0{margin-top:0!important}.mr-0,.mx-0{margin-right:0!important}.mb-0,.my-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.m-1{margin:.25rem!important}.mt-1,.my-1{margin-top:.25rem!important}.mr-1,.mx-1{margin-right:.25rem!important}.mb-1,.my-1{margin-bottom:.25rem!important}.ml-1,.mx-1{margin-left:.25rem!important}.m-2{margin:.5rem!important}.mt-2,.my-2{margin-top:.5rem!important}.mr-2,.mx-2{margin-right:.5rem!important}.mb-2,.my-2{margin-bottom:.5rem!important}.ml-2,.mx-2{margin-left:.5rem!important}.m-3{margin:1rem!important}.mt-3,.my-3{margin-top:1rem!important}.mr-3,.mx-3{margin-right:1rem!important}.mb-3,.my-3{margin-bottom:1rem!important}.ml-3,.mx-3{margin-left:1rem!important}.m-4{margin:1.5rem!important}.mt-4,.my-4{margin-top:1.5rem!important}.mr-4,.mx-4{margin-right:1.5rem!important}.mb-4,.my-4{margin-bottom:1.5rem!important}.ml-4,.mx-4{margin-left:1.5rem!important}.m-5{margin:3rem!important}.mt-5,.my-5{margin-top:3rem!important}.mr-5,.mx-5{margin-right:3rem!important}.mb-5,.my-5{margin-bottom:3rem!important}.ml-5,.mx-5{margin-left:3rem!important}.p-0{padding:0!important}.pt-0,.py-0{padding-top:0!important}.pr-0,.px-0{padding-right:0!important}.pb-0,.py-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.p-1{padding:.25rem!important}.pt-1,.py-1{padding-top:.25rem!important}.pr-1,.px-1{padding-right:.25rem!important}.pb-1,.py-1{padding-bottom:.25rem!important}.pl-1,.px-1{padding-left:.25rem!important}.p-2{padding:.5rem!important}.pt-2,.py-2{padding-top:.5rem!important}.pr-2,.px-2{padding-right:.5rem!important}.pb-2,.py-2{padding-bottom:.5rem!important}.pl-2,.px-2{padding-left:.5rem!important}.p-3{padding:1rem!important}.pt-3,.py-3{padding-top:1rem!important}.pr-3,.px-3{padding-right:1rem!important}.pb-3,.py-3{padding-bottom:1rem!important}.pl-3,.px-3{padding-left:1rem!important}.p-4{padding:1.5rem!important}.pt-4,.py-4{padding-top:1.5rem!important}.pr-4,.px-4{padding-right:1.5rem!important}.pb-4,.py-4{padding-bottom:1.5rem!important}.pl-4,.px-4{padding-left:1.5rem!important}.p-5{padding:3rem!important}.pt-5,.py-5{padding-top:3rem!important}.pr-5,.px-5{padding-right:3rem!important}.pb-5,.py-5{padding-bottom:3rem!important}.pl-5,.px-5{padding-left:3rem!important}.m-n1{margin:-.25rem!important}.mt-n1,.my-n1{margin-top:-.25rem!important}.mr-n1,.mx-n1{margin-right:-.25rem!important}.mb-n1,.my-n1{margin-bottom:-.25rem!important}.ml-n1,.mx-n1{margin-left:-.25rem!important}.m-n2{margin:-.5rem!important}.mt-n2,.my-n2{margin-top:-.5rem!important}.mr-n2,.mx-n2{margin-right:-.5rem!important}.mb-n2,.my-n2{margin-bottom:-.5rem!important}.ml-n2,.mx-n2{margin-left:-.5rem!important}.m-n3{margin:-1rem!important}.mt-n3,.my-n3{margin-top:-1rem!important}.mr-n3,.mx-n3{margin-right:-1rem!important}.mb-n3,.my-n3{margin-bottom:-1rem!important}.ml-n3,.mx-n3{margin-left:-1rem!important}.m-n4{margin:-1.5rem!important}.mt-n4,.my-n4{margin-top:-1.5rem!important}.mr-n4,.mx-n4{margin-right:-1.5rem!important}.mb-n4,.my-n4{margin-bottom:-1.5rem!important}.ml-n4,.mx-n4{margin-left:-1.5rem!important}.m-n5{margin:-3rem!important}.mt-n5,.my-n5{margin-top:-3rem!important}.mr-n5,.mx-n5{margin-right:-3rem!important}.mb-n5,.my-n5{margin-bottom:-3rem!important}.ml-n5,.mx-n5{margin-left:-3rem!important}.m-auto{margin:auto!important}.mt-auto,.my-auto{margin-top:auto!important}.mr-auto,.mx-auto{margin-right:auto!important}.mb-auto,.my-auto{margin-bottom:auto!important}.ml-auto,.mx-auto{margin-left:auto!important}@media (min-width:576px){.m-sm-0{margin:0!important}.mt-sm-0,.my-sm-0{margin-top:0!important}.mr-sm-0,.mx-sm-0{margin-right:0!important}.mb-sm-0,.my-sm-0{margin-bottom:0!important}.ml-sm-0,.mx-sm-0{margin-left:0!important}.m-sm-1{margin:.25rem!important}.mt-sm-1,.my-sm-1{margin-top:.25rem!important}.mr-sm-1,.mx-sm-1{margin-right:.25rem!important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem!important}.ml-sm-1,.mx-sm-1{margin-left:.25rem!important}.m-sm-2{margin:.5rem!important}.mt-sm-2,.my-sm-2{margin-top:.5rem!important}.mr-sm-2,.mx-sm-2{margin-right:.5rem!important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem!important}.ml-sm-2,.mx-sm-2{margin-left:.5rem!important}.m-sm-3{margin:1rem!important}.mt-sm-3,.my-sm-3{margin-top:1rem!important}.mr-sm-3,.mx-sm-3{margin-right:1rem!important}.mb-sm-3,.my-sm-3{margin-bottom:1rem!important}.ml-sm-3,.mx-sm-3{margin-left:1rem!important}.m-sm-4{margin:1.5rem!important}.mt-sm-4,.my-sm-4{margin-top:1.5rem!important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem!important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem!important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem!important}.m-sm-5{margin:3rem!important}.mt-sm-5,.my-sm-5{margin-top:3rem!important}.mr-sm-5,.mx-sm-5{margin-right:3rem!important}.mb-sm-5,.my-sm-5{margin-bottom:3rem!important}.ml-sm-5,.mx-sm-5{margin-left:3rem!important}.p-sm-0{padding:0!important}.pt-sm-0,.py-sm-0{padding-top:0!important}.pr-sm-0,.px-sm-0{padding-right:0!important}.pb-sm-0,.py-sm-0{padding-bottom:0!important}.pl-sm-0,.px-sm-0{padding-left:0!important}.p-sm-1{padding:.25rem!important}.pt-sm-1,.py-sm-1{padding-top:.25rem!important}.pr-sm-1,.px-sm-1{padding-right:.25rem!important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem!important}.pl-sm-1,.px-sm-1{padding-left:.25rem!important}.p-sm-2{padding:.5rem!important}.pt-sm-2,.py-sm-2{padding-top:.5rem!important}.pr-sm-2,.px-sm-2{padding-right:.5rem!important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem!important}.pl-sm-2,.px-sm-2{padding-left:.5rem!important}.p-sm-3{padding:1rem!important}.pt-sm-3,.py-sm-3{padding-top:1rem!important}.pr-sm-3,.px-sm-3{padding-right:1rem!important}.pb-sm-3,.py-sm-3{padding-bottom:1rem!important}.pl-sm-3,.px-sm-3{padding-left:1rem!important}.p-sm-4{padding:1.5rem!important}.pt-sm-4,.py-sm-4{padding-top:1.5rem!important}.pr-sm-4,.px-sm-4{padding-right:1.5rem!important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem!important}.pl-sm-4,.px-sm-4{padding-left:1.5rem!important}.p-sm-5{padding:3rem!important}.pt-sm-5,.py-sm-5{padding-top:3rem!important}.pr-sm-5,.px-sm-5{padding-right:3rem!important}.pb-sm-5,.py-sm-5{padding-bottom:3rem!important}.pl-sm-5,.px-sm-5{padding-left:3rem!important}.m-sm-n1{margin:-.25rem!important}.mt-sm-n1,.my-sm-n1{margin-top:-.25rem!important}.mr-sm-n1,.mx-sm-n1{margin-right:-.25rem!important}.mb-sm-n1,.my-sm-n1{margin-bottom:-.25rem!important}.ml-sm-n1,.mx-sm-n1{margin-left:-.25rem!important}.m-sm-n2{margin:-.5rem!important}.mt-sm-n2,.my-sm-n2{margin-top:-.5rem!important}.mr-sm-n2,.mx-sm-n2{margin-right:-.5rem!important}.mb-sm-n2,.my-sm-n2{margin-bottom:-.5rem!important}.ml-sm-n2,.mx-sm-n2{margin-left:-.5rem!important}.m-sm-n3{margin:-1rem!important}.mt-sm-n3,.my-sm-n3{margin-top:-1rem!important}.mr-sm-n3,.mx-sm-n3{margin-right:-1rem!important}.mb-sm-n3,.my-sm-n3{margin-bottom:-1rem!important}.ml-sm-n3,.mx-sm-n3{margin-left:-1rem!important}.m-sm-n4{margin:-1.5rem!important}.mt-sm-n4,.my-sm-n4{margin-top:-1.5rem!important}.mr-sm-n4,.mx-sm-n4{margin-right:-1.5rem!important}.mb-sm-n4,.my-sm-n4{margin-bottom:-1.5rem!important}.ml-sm-n4,.mx-sm-n4{margin-left:-1.5rem!important}.m-sm-n5{margin:-3rem!important}.mt-sm-n5,.my-sm-n5{margin-top:-3rem!important}.mr-sm-n5,.mx-sm-n5{margin-right:-3rem!important}.mb-sm-n5,.my-sm-n5{margin-bottom:-3rem!important}.ml-sm-n5,.mx-sm-n5{margin-left:-3rem!important}.m-sm-auto{margin:auto!important}.mt-sm-auto,.my-sm-auto{margin-top:auto!important}.mr-sm-auto,.mx-sm-auto{margin-right:auto!important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto!important}.ml-sm-auto,.mx-sm-auto{margin-left:auto!important}}@media (min-width:768px){.m-md-0{margin:0!important}.mt-md-0,.my-md-0{margin-top:0!important}.mr-md-0,.mx-md-0{margin-right:0!important}.mb-md-0,.my-md-0{margin-bottom:0!important}.ml-md-0,.mx-md-0{margin-left:0!important}.m-md-1{margin:.25rem!important}.mt-md-1,.my-md-1{margin-top:.25rem!important}.mr-md-1,.mx-md-1{margin-right:.25rem!important}.mb-md-1,.my-md-1{margin-bottom:.25rem!important}.ml-md-1,.mx-md-1{margin-left:.25rem!important}.m-md-2{margin:.5rem!important}.mt-md-2,.my-md-2{margin-top:.5rem!important}.mr-md-2,.mx-md-2{margin-right:.5rem!important}.mb-md-2,.my-md-2{margin-bottom:.5rem!important}.ml-md-2,.mx-md-2{margin-left:.5rem!important}.m-md-3{margin:1rem!important}.mt-md-3,.my-md-3{margin-top:1rem!important}.mr-md-3,.mx-md-3{margin-right:1rem!important}.mb-md-3,.my-md-3{margin-bottom:1rem!important}.ml-md-3,.mx-md-3{margin-left:1rem!important}.m-md-4{margin:1.5rem!important}.mt-md-4,.my-md-4{margin-top:1.5rem!important}.mr-md-4,.mx-md-4{margin-right:1.5rem!important}.mb-md-4,.my-md-4{margin-bottom:1.5rem!important}.ml-md-4,.mx-md-4{margin-left:1.5rem!important}.m-md-5{margin:3rem!important}.mt-md-5,.my-md-5{margin-top:3rem!important}.mr-md-5,.mx-md-5{margin-right:3rem!important}.mb-md-5,.my-md-5{margin-bottom:3rem!important}.ml-md-5,.mx-md-5{margin-left:3rem!important}.p-md-0{padding:0!important}.pt-md-0,.py-md-0{padding-top:0!important}.pr-md-0,.px-md-0{padding-right:0!important}.pb-md-0,.py-md-0{padding-bottom:0!important}.pl-md-0,.px-md-0{padding-left:0!important}.p-md-1{padding:.25rem!important}.pt-md-1,.py-md-1{padding-top:.25rem!important}.pr-md-1,.px-md-1{padding-right:.25rem!important}.pb-md-1,.py-md-1{padding-bottom:.25rem!important}.pl-md-1,.px-md-1{padding-left:.25rem!important}.p-md-2{padding:.5rem!important}.pt-md-2,.py-md-2{padding-top:.5rem!important}.pr-md-2,.px-md-2{padding-right:.5rem!important}.pb-md-2,.py-md-2{padding-bottom:.5rem!important}.pl-md-2,.px-md-2{padding-left:.5rem!important}.p-md-3{padding:1rem!important}.pt-md-3,.py-md-3{padding-top:1rem!important}.pr-md-3,.px-md-3{padding-right:1rem!important}.pb-md-3,.py-md-3{padding-bottom:1rem!important}.pl-md-3,.px-md-3{padding-left:1rem!important}.p-md-4{padding:1.5rem!important}.pt-md-4,.py-md-4{padding-top:1.5rem!important}.pr-md-4,.px-md-4{padding-right:1.5rem!important}.pb-md-4,.py-md-4{padding-bottom:1.5rem!important}.pl-md-4,.px-md-4{padding-left:1.5rem!important}.p-md-5{padding:3rem!important}.pt-md-5,.py-md-5{padding-top:3rem!important}.pr-md-5,.px-md-5{padding-right:3rem!important}.pb-md-5,.py-md-5{padding-bottom:3rem!important}.pl-md-5,.px-md-5{padding-left:3rem!important}.m-md-n1{margin:-.25rem!important}.mt-md-n1,.my-md-n1{margin-top:-.25rem!important}.mr-md-n1,.mx-md-n1{margin-right:-.25rem!important}.mb-md-n1,.my-md-n1{margin-bottom:-.25rem!important}.ml-md-n1,.mx-md-n1{margin-left:-.25rem!important}.m-md-n2{margin:-.5rem!important}.mt-md-n2,.my-md-n2{margin-top:-.5rem!important}.mr-md-n2,.mx-md-n2{margin-right:-.5rem!important}.mb-md-n2,.my-md-n2{margin-bottom:-.5rem!important}.ml-md-n2,.mx-md-n2{margin-left:-.5rem!important}.m-md-n3{margin:-1rem!important}.mt-md-n3,.my-md-n3{margin-top:-1rem!important}.mr-md-n3,.mx-md-n3{margin-right:-1rem!important}.mb-md-n3,.my-md-n3{margin-bottom:-1rem!important}.ml-md-n3,.mx-md-n3{margin-left:-1rem!important}.m-md-n4{margin:-1.5rem!important}.mt-md-n4,.my-md-n4{margin-top:-1.5rem!important}.mr-md-n4,.mx-md-n4{margin-right:-1.5rem!important}.mb-md-n4,.my-md-n4{margin-bottom:-1.5rem!important}.ml-md-n4,.mx-md-n4{margin-left:-1.5rem!important}.m-md-n5{margin:-3rem!important}.mt-md-n5,.my-md-n5{margin-top:-3rem!important}.mr-md-n5,.mx-md-n5{margin-right:-3rem!important}.mb-md-n5,.my-md-n5{margin-bottom:-3rem!important}.ml-md-n5,.mx-md-n5{margin-left:-3rem!important}.m-md-auto{margin:auto!important}.mt-md-auto,.my-md-auto{margin-top:auto!important}.mr-md-auto,.mx-md-auto{margin-right:auto!important}.mb-md-auto,.my-md-auto{margin-bottom:auto!important}.ml-md-auto,.mx-md-auto{margin-left:auto!important}}@media (min-width:992px){.m-lg-0{margin:0!important}.mt-lg-0,.my-lg-0{margin-top:0!important}.mr-lg-0,.mx-lg-0{margin-right:0!important}.mb-lg-0,.my-lg-0{margin-bottom:0!important}.ml-lg-0,.mx-lg-0{margin-left:0!important}.m-lg-1{margin:.25rem!important}.mt-lg-1,.my-lg-1{margin-top:.25rem!important}.mr-lg-1,.mx-lg-1{margin-right:.25rem!important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem!important}.ml-lg-1,.mx-lg-1{margin-left:.25rem!important}.m-lg-2{margin:.5rem!important}.mt-lg-2,.my-lg-2{margin-top:.5rem!important}.mr-lg-2,.mx-lg-2{margin-right:.5rem!important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem!important}.ml-lg-2,.mx-lg-2{margin-left:.5rem!important}.m-lg-3{margin:1rem!important}.mt-lg-3,.my-lg-3{margin-top:1rem!important}.mr-lg-3,.mx-lg-3{margin-right:1rem!important}.mb-lg-3,.my-lg-3{margin-bottom:1rem!important}.ml-lg-3,.mx-lg-3{margin-left:1rem!important}.m-lg-4{margin:1.5rem!important}.mt-lg-4,.my-lg-4{margin-top:1.5rem!important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem!important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem!important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem!important}.m-lg-5{margin:3rem!important}.mt-lg-5,.my-lg-5{margin-top:3rem!important}.mr-lg-5,.mx-lg-5{margin-right:3rem!important}.mb-lg-5,.my-lg-5{margin-bottom:3rem!important}.ml-lg-5,.mx-lg-5{margin-left:3rem!important}.p-lg-0{padding:0!important}.pt-lg-0,.py-lg-0{padding-top:0!important}.pr-lg-0,.px-lg-0{padding-right:0!important}.pb-lg-0,.py-lg-0{padding-bottom:0!important}.pl-lg-0,.px-lg-0{padding-left:0!important}.p-lg-1{padding:.25rem!important}.pt-lg-1,.py-lg-1{padding-top:.25rem!important}.pr-lg-1,.px-lg-1{padding-right:.25rem!important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem!important}.pl-lg-1,.px-lg-1{padding-left:.25rem!important}.p-lg-2{padding:.5rem!important}.pt-lg-2,.py-lg-2{padding-top:.5rem!important}.pr-lg-2,.px-lg-2{padding-right:.5rem!important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem!important}.pl-lg-2,.px-lg-2{padding-left:.5rem!important}.p-lg-3{padding:1rem!important}.pt-lg-3,.py-lg-3{padding-top:1rem!important}.pr-lg-3,.px-lg-3{padding-right:1rem!important}.pb-lg-3,.py-lg-3{padding-bottom:1rem!important}.pl-lg-3,.px-lg-3{padding-left:1rem!important}.p-lg-4{padding:1.5rem!important}.pt-lg-4,.py-lg-4{padding-top:1.5rem!important}.pr-lg-4,.px-lg-4{padding-right:1.5rem!important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem!important}.pl-lg-4,.px-lg-4{padding-left:1.5rem!important}.p-lg-5{padding:3rem!important}.pt-lg-5,.py-lg-5{padding-top:3rem!important}.pr-lg-5,.px-lg-5{padding-right:3rem!important}.pb-lg-5,.py-lg-5{padding-bottom:3rem!important}.pl-lg-5,.px-lg-5{padding-left:3rem!important}.m-lg-n1{margin:-.25rem!important}.mt-lg-n1,.my-lg-n1{margin-top:-.25rem!important}.mr-lg-n1,.mx-lg-n1{margin-right:-.25rem!important}.mb-lg-n1,.my-lg-n1{margin-bottom:-.25rem!important}.ml-lg-n1,.mx-lg-n1{margin-left:-.25rem!important}.m-lg-n2{margin:-.5rem!important}.mt-lg-n2,.my-lg-n2{margin-top:-.5rem!important}.mr-lg-n2,.mx-lg-n2{margin-right:-.5rem!important}.mb-lg-n2,.my-lg-n2{margin-bottom:-.5rem!important}.ml-lg-n2,.mx-lg-n2{margin-left:-.5rem!important}.m-lg-n3{margin:-1rem!important}.mt-lg-n3,.my-lg-n3{margin-top:-1rem!important}.mr-lg-n3,.mx-lg-n3{margin-right:-1rem!important}.mb-lg-n3,.my-lg-n3{margin-bottom:-1rem!important}.ml-lg-n3,.mx-lg-n3{margin-left:-1rem!important}.m-lg-n4{margin:-1.5rem!important}.mt-lg-n4,.my-lg-n4{margin-top:-1.5rem!important}.mr-lg-n4,.mx-lg-n4{margin-right:-1.5rem!important}.mb-lg-n4,.my-lg-n4{margin-bottom:-1.5rem!important}.ml-lg-n4,.mx-lg-n4{margin-left:-1.5rem!important}.m-lg-n5{margin:-3rem!important}.mt-lg-n5,.my-lg-n5{margin-top:-3rem!important}.mr-lg-n5,.mx-lg-n5{margin-right:-3rem!important}.mb-lg-n5,.my-lg-n5{margin-bottom:-3rem!important}.ml-lg-n5,.mx-lg-n5{margin-left:-3rem!important}.m-lg-auto{margin:auto!important}.mt-lg-auto,.my-lg-auto{margin-top:auto!important}.mr-lg-auto,.mx-lg-auto{margin-right:auto!important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto!important}.ml-lg-auto,.mx-lg-auto{margin-left:auto!important}}@media (min-width:1200px){.m-xl-0{margin:0!important}.mt-xl-0,.my-xl-0{margin-top:0!important}.mr-xl-0,.mx-xl-0{margin-right:0!important}.mb-xl-0,.my-xl-0{margin-bottom:0!important}.ml-xl-0,.mx-xl-0{margin-left:0!important}.m-xl-1{margin:.25rem!important}.mt-xl-1,.my-xl-1{margin-top:.25rem!important}.mr-xl-1,.mx-xl-1{margin-right:.25rem!important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem!important}.ml-xl-1,.mx-xl-1{margin-left:.25rem!important}.m-xl-2{margin:.5rem!important}.mt-xl-2,.my-xl-2{margin-top:.5rem!important}.mr-xl-2,.mx-xl-2{margin-right:.5rem!important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem!important}.ml-xl-2,.mx-xl-2{margin-left:.5rem!important}.m-xl-3{margin:1rem!important}.mt-xl-3,.my-xl-3{margin-top:1rem!important}.mr-xl-3,.mx-xl-3{margin-right:1rem!important}.mb-xl-3,.my-xl-3{margin-bottom:1rem!important}.ml-xl-3,.mx-xl-3{margin-left:1rem!important}.m-xl-4{margin:1.5rem!important}.mt-xl-4,.my-xl-4{margin-top:1.5rem!important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem!important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem!important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem!important}.m-xl-5{margin:3rem!important}.mt-xl-5,.my-xl-5{margin-top:3rem!important}.mr-xl-5,.mx-xl-5{margin-right:3rem!important}.mb-xl-5,.my-xl-5{margin-bottom:3rem!important}.ml-xl-5,.mx-xl-5{margin-left:3rem!important}.p-xl-0{padding:0!important}.pt-xl-0,.py-xl-0{padding-top:0!important}.pr-xl-0,.px-xl-0{padding-right:0!important}.pb-xl-0,.py-xl-0{padding-bottom:0!important}.pl-xl-0,.px-xl-0{padding-left:0!important}.p-xl-1{padding:.25rem!important}.pt-xl-1,.py-xl-1{padding-top:.25rem!important}.pr-xl-1,.px-xl-1{padding-right:.25rem!important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem!important}.pl-xl-1,.px-xl-1{padding-left:.25rem!important}.p-xl-2{padding:.5rem!important}.pt-xl-2,.py-xl-2{padding-top:.5rem!important}.pr-xl-2,.px-xl-2{padding-right:.5rem!important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem!important}.pl-xl-2,.px-xl-2{padding-left:.5rem!important}.p-xl-3{padding:1rem!important}.pt-xl-3,.py-xl-3{padding-top:1rem!important}.pr-xl-3,.px-xl-3{padding-right:1rem!important}.pb-xl-3,.py-xl-3{padding-bottom:1rem!important}.pl-xl-3,.px-xl-3{padding-left:1rem!important}.p-xl-4{padding:1.5rem!important}.pt-xl-4,.py-xl-4{padding-top:1.5rem!important}.pr-xl-4,.px-xl-4{padding-right:1.5rem!important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem!important}.pl-xl-4,.px-xl-4{padding-left:1.5rem!important}.p-xl-5{padding:3rem!important}.pt-xl-5,.py-xl-5{padding-top:3rem!important}.pr-xl-5,.px-xl-5{padding-right:3rem!important}.pb-xl-5,.py-xl-5{padding-bottom:3rem!important}.pl-xl-5,.px-xl-5{padding-left:3rem!important}.m-xl-n1{margin:-.25rem!important}.mt-xl-n1,.my-xl-n1{margin-top:-.25rem!important}.mr-xl-n1,.mx-xl-n1{margin-right:-.25rem!important}.mb-xl-n1,.my-xl-n1{margin-bottom:-.25rem!important}.ml-xl-n1,.mx-xl-n1{margin-left:-.25rem!important}.m-xl-n2{margin:-.5rem!important}.mt-xl-n2,.my-xl-n2{margin-top:-.5rem!important}.mr-xl-n2,.mx-xl-n2{margin-right:-.5rem!important}.mb-xl-n2,.my-xl-n2{margin-bottom:-.5rem!important}.ml-xl-n2,.mx-xl-n2{margin-left:-.5rem!important}.m-xl-n3{margin:-1rem!important}.mt-xl-n3,.my-xl-n3{margin-top:-1rem!important}.mr-xl-n3,.mx-xl-n3{margin-right:-1rem!important}.mb-xl-n3,.my-xl-n3{margin-bottom:-1rem!important}.ml-xl-n3,.mx-xl-n3{margin-left:-1rem!important}.m-xl-n4{margin:-1.5rem!important}.mt-xl-n4,.my-xl-n4{margin-top:-1.5rem!important}.mr-xl-n4,.mx-xl-n4{margin-right:-1.5rem!important}.mb-xl-n4,.my-xl-n4{margin-bottom:-1.5rem!important}.ml-xl-n4,.mx-xl-n4{margin-left:-1.5rem!important}.m-xl-n5{margin:-3rem!important}.mt-xl-n5,.my-xl-n5{margin-top:-3rem!important}.mr-xl-n5,.mx-xl-n5{margin-right:-3rem!important}.mb-xl-n5,.my-xl-n5{margin-bottom:-3rem!important}.ml-xl-n5,.mx-xl-n5{margin-left:-3rem!important}.m-xl-auto{margin:auto!important}.mt-xl-auto,.my-xl-auto{margin-top:auto!important}.mr-xl-auto,.mx-xl-auto{margin-right:auto!important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto!important}.ml-xl-auto,.mx-xl-auto{margin-left:auto!important}}.text-monospace{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace!important}.text-justify{text-align:justify!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}@media (min-width:576px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-light{font-weight:300!important}.font-weight-lighter{font-weight:lighter!important}.font-weight-normal{font-weight:400!important}.font-weight-bold{font-weight:700!important}.font-weight-bolder{font-weight:bolder!important}.font-italic{font-style:italic!important}.text-white{color:#fff!important}.text-primary{color:#0b76de!important}a.text-primary:focus,a.text-primary:hover{color:#074f95!important}.text-secondary{color:#344962!important}a.text-secondary:focus,a.text-secondary:hover{color:#192430!important}.text-success{color:#28a745!important}a.text-success:focus,a.text-success:hover{color:#19692c!important}.text-info{color:#17a2b8!important}a.text-info:focus,a.text-info:hover{color:#0f6674!important}.text-warning{color:#ffc107!important}a.text-warning:focus,a.text-warning:hover{color:#ba8b00!important}.text-danger{color:#dc3545!important}a.text-danger:focus,a.text-danger:hover{color:#a71d2a!important}.text-light{color:#38aecc!important}a.text-light:focus,a.text-light:hover{color:#257c92!important}.text-dark{color:#1a2b3f!important}a.text-dark:focus,a.text-dark:hover{color:#040609!important}.text-body{color:#212529!important}.text-muted{color:#6c757d!important}.text-black-50{color:rgba(0,0,0,.5)!important}.text-white-50{color:hsla(0,0%,100%,.5)!important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.text-decoration-none{text-decoration:none!important}.text-break{word-break:break-word!important;overflow-wrap:break-word!important}.text-reset{color:inherit!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media print{*,:after,:before{text-shadow:none!important;-webkit-box-shadow:none!important;box-shadow:none!important}a:not(.btn){text-decoration:underline}abbr[title]:after{content:" (" attr(title) ")"}pre{white-space:pre-wrap!important}blockquote,pre{border:1px solid #adb5bd;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}.container,body{min-width:992px!important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #dee2e6!important}.table-dark{color:inherit}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#777}.table .thead-dark th{color:inherit;border-color:#777}}body{background-color:#f8fafb;padding-top:70px;font-family:\\5FAE\8F6F\96C5\9ED1}input.form-control{height:48px!important}input.form-control:focus{outline:none;-webkit-box-shadow:none;box-shadow:none}button.btn{height:48px}a{color:#777}a:hover{text-decoration:none}.display-none{display:none}.c-primary{color:#0b76de!important}.c-fff{color:#fff!important}.c-2{color:#777!important}.bg-fff{background-color:#fff}.bg-1{background-color:#202020}.bg-f6{background-color:#f6f6f6}.bg-dark{background-color:#323232}.mb-10{margin-bottom:10px}.br-8{border-radius:8px}.br-50{border-radius:50%}.br-12{border-radius:12px}.br-top-8{border-top-left-radius:8px;border-top-right-radius:8px}.br-bottom-8{border-bottom-left-radius:8px;border-bottom-right-radius:8px}.border-f7f7f7{border-color:#eee!important}.pt-10px{padding-top:10px}.pb-10px{padding-bottom:10px}.pb-24px{padding-bottom:24px}.mt-120px{margin-top:120px}.fw-400{font-weight:400}.fs-14px{font-size:14px}.fs-18px{font-size:18px}.fs-24px{font-size:24px}.box-shadow1{-webkit-box-shadow:0 2px 20px 0 rgba(0,0,0,.05);box-shadow:0 2px 20px 0 rgba(0,0,0,.05)}.t1:hover{opacity:1!important;-webkit-box-shadow:rgba(45,45,45,.05) 0 2px 2px,rgba(49,49,49,.05) 0 4px 4px,rgba(42,42,42,.05) 0 8px 8px,rgba(32,32,32,.05) 0 16px 16px;box-shadow:0 2px 2px rgba(45,45,45,.05),0 4px 4px rgba(49,49,49,.05),0 8px 8px rgba(42,42,42,.05),0 16px 16px rgba(32,32,32,.05);transform:translateY(-4px);-webkit-transform:translateY(-4px);-moz-transform:translateY(-4px);-o-transform:translateY(-4px)}footer.footer-box{width:100%;height:auto;background:#0e0c1e;padding-top:30px}footer.footer-box p{font-size:14px;font-weight:400;margin-bottom:30px}footer.footer-box p,footer.footer-box p a{color:hsla(0,0%,100%,.3)}.auth-box{position:fixed;top:0;left:0;right:0;bottom:0;z-index:1111;background-color:rgba(0,0,0,.5);display:none}.auth-box #auth-box-content{background-color:#fff;padding:30px;border-radius:8px}.auth-box #auth-box-content .login-box .login-box-title{line-height:24px}.auth-box #auth-box-content .login-box .login-box-title .title{font-size:24px;font-weight:600;color:#333}.auth-box #auth-box-content .login-box .login-box-title .close-auth-box{float:right;line-height:24px;cursor:pointer}.auth-box #auth-box-content .login-box .login-box-title .close-auth-box:hover{-webkit-transform:rotate(1turn);transform:rotate(1turn);-webkit-transition:-webkit-transform 1s linear;transition:-webkit-transform 1s linear;transition:transform 1s linear;transition:transform 1s linear,-webkit-transform 1s linear}.auth-box #auth-box-content .login-box .login-box-menu{text-align:right;font-size:14px;font-weight:400;color:#0b76de;line-height:14px;padding-top:36px;padding-bottom:36px}.auth-box #auth-box-content .login-box .login-remember{font-size:14px;color:#999;line-height:14px}.auth-box #auth-box-content .login-box .login-remember .show-find-password{border-left:2px solid #d8d8d8;padding-left:5px;margin-left:5px;line-height:14px;cursor:pointer}.auth-box #auth-box-content .login-box .login-remember .show-register-box{cursor:pointer}.auth-box #auth-box-content .login-box .auth-box-errors{font-size:14px;font-weight:400;color:#ff4040;line-height:14px}.auth-box #auth-box-content .login-box .socialite-item{display:inline-block;width:44px;height:44px;margin-right:10px}.auth-box .show-login-box{cursor:pointer}.auth-box .cursor-pointer{cursor:pointer;color:#0b76de;opacity:.6}.auth-box .cursor-pointer:hover{opacity:1}.nav-box{position:absolute;top:0;left:0;right:0;z-index:1000;-webkit-box-shadow:0 4px 10px 0 hsla(240,3%,61%,.2);box-shadow:0 4px 10px 0 hsla(240,3%,61%,.2);padding-left:0;padding-right:0}.nav-box nav.navbar{padding:0}.nav-box nav .navbar-brand{margin-left:2.5%;margin-right:0}.nav-box nav .navbar-nav{margin-left:4.1%}.nav-box nav .nav-item{margin-right:34px;font-size:16px}.nav-box nav .nav-item a{color:#333}.nav-box nav .nav-item a.active{color:#0b76de;font-weight:800}.nav-box nav .nav-item a:hover{color:#0b76de}.nav-box nav .search-input{border-top-left-radius:20px;border-bottom-left-radius:20px;font-size:14px;height:40px!important}.nav-box nav .search-input::-webkit-input-placeholder{color:#999}.nav-box nav .search-button{border-top-right-radius:20px;border-bottom-right-radius:20px;height:40px!important}.nav-box nav .role-vip-button{width:80px;text-align:center;font-size:14px;font-weight:400;color:#e1a500;padding-top:13px;padding-bottom:13px}.nav-box nav .role-vip-button p{margin-bottom:0}.nav-box nav .message-button.active,.nav-box nav .message-button:hover,.nav-box nav .role-vip-button.active,.nav-box nav .role-vip-button:hover,.nav-box nav .user-avatar-button:hover{opacity:.6;text-decoration:none}.nav-box nav .message-button{position:relative;width:80px;text-align:center;font-size:14px;font-weight:400;color:#999;padding-top:13px;padding-bottom:13px}.nav-box nav .message-button p{margin-bottom:0}.nav-box nav .message-button .message-count{position:absolute;top:13px;right:13px;z-index:11;border-radius:6px;background-color:#ff4040;color:#fff;font-size:10px;padding-left:4px;padding-right:4px}.nav-box nav .user-avatar{margin-right:2.6%}.nav-box nav .user-avatar .user-avatar-button{display:inline-block;width:80px;height:auto;text-align:center;padding:15px 20px;cursor:pointer}.nav-box nav .user-avatar .user-avatar-button img{border-radius:20px}.nav-box nav .user-avatar .dropdown-menu{padding-top:0;padding-bottom:0;min-width:126px;left:-63px}.nav-box nav .user-avatar .dropdown-menu .dropdown-item{height:48px;width:126px!important;line-height:48px;font-size:14px;font-weight:400;padding:0 17px!important}.nav-box nav .user-avatar .dropdown-menu .dropdown-item:hover{background-color:rgba(11,118,222,.1)}.nav-box nav .user-avatar .dropdown-menu .dropdown-item.logout span{margin-left:-3px}.nav-box nav .user-avatar .dropdown-menu .dropdown-item img{margin-right:10px;margin-top:-1px}.nav-box nav .user-avatar .dropdown-menu .dropdown-item img.avatar{border-radius:10px}.nav-box nav .user-avatar .dropdown-menu .dropdown-item.vip{color:#e1a500}.nav-box nav .login-button,.nav-box nav .login-button-hover{width:80px;height:34px;border-radius:17px;background-color:#0b76de;text-align:center;line-height:34px;font-size:14px;font-weight:400;color:#fff;margin-left:10px;cursor:pointer;margin-right:2.6%}.nav-box nav .login-button:hover{text-decoration:none;-webkit-box-shadow:0 2px 4px 0 #e5e5e5;box-shadow:0 2px 4px 0 #e5e5e5}.nav-box nav .login-button-hover{background-color:#fff;color:#0b76de}.nav-box nav .login-button-hover:hover{-webkit-box-shadow:none;box-shadow:none;text-decoration:none}.member-nav-box{-webkit-box-shadow:0 0;box-shadow:0 0;background-color:#0b76de}.member-nav-box nav .nav-item a{color:#fff;opacity:.4}.member-nav-box nav .nav-item a:hover{color:#fff;opacity:1}.member-nav-box nav .message-button,.member-nav-box nav .message-button:hover{color:#fff}.member-nav-box nav .role-vip-button{opacity:.6}.member-nav-box nav .role-vip-button:hover{opacity:1}.member-nav-box nav .message-button p{opacity:.4}.member-nav-box nav .message-button:hover p{opacity:1}.slider-box{padding-top:30px;height:auto;background-color:#fff}.slider-box img{border-top-left-radius:8px;border-top-right-radius:8px}.course-menu-box{width:100%;height:72px;background:#fff;-webkit-box-shadow:0 4px 8px 0 #e5e5e5;box-shadow:0 4px 8px 0 #e5e5e5;border-radius:8px;margin-bottom:30px;padding-left:30px;padding-right:15px;margin-top:30px}.course-menu-box .menu-item{width:124px;height:72px;float:left;line-height:72px;font-size:16px;color:#666;cursor:pointer}.course-menu-box .menu-item a{color:#666}.course-menu-box .menu-item.active{font-weight:600}.course-menu-box .menu-item.active a{padding-bottom:21px;color:#0b76de;border-bottom:4px solid #0b76de}.course-menu-box .menu-item:hover{font-weight:600}.course-menu-box .menu-item:hover a{color:#0b76de;text-decoration:none}.category-box{width:100%;height:auto;float:left;padding-left:15px;padding-right:15px;margin-bottom:10px}.category-box .category-box-item{display:inline-block;width:auto;height:26px;line-height:26px;font-size:14px;font-weight:400;color:#999;padding-left:15px;padding-right:15px;margin-right:23px;margin-bottom:20px}.category-box .category-box-item:hover{text-decoration:none}.category-box .category-box-item.active,.category-box .category-box-item:hover{background-color:rgba(11,118,222,.2);border-radius:15px;color:#0b76de}.course-list-box{width:100%;height:auto;float:left}.course-list-box .course-list-item{width:280px;height:298px;float:left;margin-right:27px;margin-bottom:40px;background-color:#fff;border-radius:8px}.course-list-box .course-list-item:hover{-webkit-box-shadow:0 4px 20px 0 rgba(0,0,0,.08);box-shadow:0 4px 20px 0 rgba(0,0,0,.08)}.course-list-box .course-list-item .course-thumb{width:280px;height:210px;float:left}.course-list-box .course-list-item .course-thumb img{border-top-right-radius:8px;border-top-left-radius:8px}.course-list-box .course-list-item .course-title{width:100%;height:46px;float:left;background-color:#fff;padding-left:10px;padding-right:10px;line-height:46px;font-size:16px;word-break:keep-all;white-space:nowrap;overflow:hidden;color:#333}.course-list-box .course-list-item .course-category{width:100%;height:auto;float:left;background-color:#fff;padding-left:10px;padding-right:10px;padding-bottom:15px;border-bottom-right-radius:8px;border-bottom-left-radius:8px}.course-list-box .course-list-item .course-category .video-count-label{font-size:14px;color:#666;line-height:22px}.course-list-box .course-list-item .course-category .category-label{float:right;padding-left:8px;padding-right:8px;font-size:10px;line-height:22px;color:#fff;background-color:hsla(0,0%,40%,.4);border-radius:4px}.course-list-box .course-list-item.last{margin-right:-1px}.pagination{padding-top:20px;padding-bottom:20px}.friend-link-box{background-color:#140e23}.friend-link-box .friend-link-box-logo{padding-top:50px;padding-bottom:50px}.friend-link-box .friend-link-box-link{padding-bottom:50px}.friend-link-box .friend-link-box-link a{font-size:14px;font-weight:400;color:hsla(0,0%,100%,.6);margin-right:50px}.friend-link-box .friend-link-box-link a:hover{color:#fff;text-decoration:none}.video-item{cursor:pointer;-webkit-transition:opacity .4s ease-out,-webkit-box-shadow .3s ease-out,-webkit-transform .3s ease-out;transition:opacity .4s ease-out,-webkit-box-shadow .3s ease-out,-webkit-transform .3s ease-out;transition:box-shadow .3s ease-out,transform .3s ease-out,opacity .4s ease-out;transition:box-shadow .3s ease-out,transform .3s ease-out,opacity .4s ease-out,-webkit-box-shadow .3s ease-out,-webkit-transform .3s ease-out;-webkit-transition-delay:.1s;transition-delay:.1s;-webkit-transform:translateZ(0);transform:translateZ(0)}.video-item .video-item-box{width:100%;height:auto;float:right}.video-item .video-item-box .video-thumb-direct{width:100%;height:192px;float:left}.video-item .video-item-box .video-thumb{width:100%;height:192px;float:left;border-top-left-radius:8px;border-top-right-radius:8px;background-color:rgba(0,0,0,.6)}.video-item .video-item-box .video-thumb .video-thumb-img{border-top-left-radius:8px;border-top-right-radius:8px;position:relative;z-index:-1;width:100%;height:192px;float:left;color:#fff;text-align:center}.video-item .video-item-box .video-title{width:100%;height:auto;float:left;font-size:14px}.video-item .video-item-box .video-title span{margin:5px 10px 0}.video-item .video-item-box .video-extra{width:100%;height:auto;float:left;font-size:14px;line-height:20px}.video-item .video-item-box .video-extra span{margin:5px 10px 0}.video-item .video-item-box .video-list-box{width:100%;height:auto;float:left;border-top:1px dashed #f6f6f6}.video-item .video-item-box .video-list-box .video-list-box-item{width:100%;float:left;height:30px;line-height:30px;font-size:12px}.video-item .video-item-box .video-list-box .video-list-box-item div{height:30px}.video-item:hover .video-thumb{background-color:transparent}.role-item{cursor:pointer}.role-item .role-item-box{width:100%;height:auto;float:left}.role-item .role-item-box .name{font-size:36px;color:#212529}.role-item .role-item-box .price{font-size:36px;font-weight:800;color:#212529}.role-item .role-item-box .desc-item{font-size:12px;padding:0;margin-bottom:5px;color:#777}.user-banner-menu{background-color:#fff;line-height:36px}.user-banner-menu a{padding-left:15px;padding-right:15px;padding-bottom:15px}.user-banner-menu a.active,.user-banner-menu a:hover{text-decoration:none;color:#0b76de;border-bottom:3px solid #0b76de}.course-video-list{width:100%;height:auto;float:left}.course-video-list dd:hover{background-color:#0b76de}.course-video-list dd:hover a{color:#fff}.course-video-list dd.active a{color:#fff;font-weight:800;background-color:#0b76de}.course-category-item.active{color:#0b76de;font-size:1.2rem;font-weight:800}.comment-box .comment-user span.nickname{font-size:14px;line-height:30px}.comment-box .comment-user .v-tag{font-size:10px}.comment-box .comment-user .date{font-size:10px;line-height:18px}.comment-box .comment-content{padding-left:65px}.course-detail-banner,.course-detail-banner .breadcrumb{background-color:#1a1a1a}.course-detail-banner .breadcrumb a:hover{color:#999}.course-detail{color:#fff;position:relative;background-color:#242424}.course-detail .course-detail-thumb{width:510px;height:384px;float:left}.course-detail .course-detail-thumb-sm{display:none;width:100%;height:auto}.course-detail .course-detail-thumb-sm img{max-width:100%;height:auto}.course-detail .course-detail-box{padding:10px 20px}.course-detail .course-detail-box .course-detail-title h3{font-size:22px;font-weight:400;margin-bottom:10px;margin-top:10px}.course-detail .course-detail-box .course-detail-desc,.course-detail .course-detail-box .course-detail-info{color:#999}.course-detail .course-detail-box .course-detail-price{position:absolute;right:2%;height:auto;color:#999;bottom:0;padding-bottom:10px}.course-fixed-menu{position:fixed;top:40%;right:5%;width:60px;height:auto;z-index:11}.course-fixed-menu .course-fixed-menu-item{display:block;width:60px;height:60px;border-radius:30px;font-size:16px;text-align:center;line-height:60px;float:left;margin-bottom:10px;border:1px solid #fbfbfb;background-color:#fff;-webkit-box-shadow:0 4px 20px 0 rgba(0,0,0,.08);box-shadow:0 4px 20px 0 rgba(0,0,0,.08)}@media (max-width:767.98px){.course-fixed-menu,.index-course-banner{display:none}.user-banner-menu{width:100%}.user-banner-menu a{padding-right:0;padding-left:0;padding-bottom:5px;display:inline-block;width:100%;float:left}.user-banner-menu a.active{border-bottom:0}}.announcement-title{padding-top:30px;padding-bottom:30px;border-bottom:1px dashed #ddd;text-align:center}.announcement-title .announcement-intro{font-size:14px;color:#bbb}.announcement-content{padding:10px 20px}.member-menu-parent{background-color:#0b76de}.member-menu-parent .member-menu{padding-top:221px;background-image:url("/images/member-bg.png");background-position:bottom;background-repeat:no-repeat}.member-menu-parent .member-menu .member-menu-box{width:100%;height:71px;float:left;padding-top:7px}.member-menu-parent .member-menu .member-menu-box a{display:block;width:auto;height:24px;float:left;color:#fff;margin-right:60px;opacity:.4}.member-menu-parent .member-menu .member-menu-box a img{float:left}.member-menu-parent .member-menu .member-menu-box a .member-menu-item-title{display:inline-block;float:left;margin-left:10px;font-size:16px;font-weight:400}.member-menu-parent .member-menu .member-menu-box a .member-menu-item-title.vip{color:#ffdd34}.member-menu-parent .member-menu .member-menu-box a.active,.member-menu-parent .member-menu .member-menu-box a:hover{text-decoration:none;opacity:1}.member-menu-parent .member-menu .member-menu-box a.active .dot-box{display:block}.member-menu-parent .member-menu .member-menu-box a .dot-box{display:none;width:100%;height:6px;float:left;text-align:center;line-height:6px;padding-top:16px}.member-menu-parent .member-menu .member-menu-box a .dot-box .dot{display:inline-block;width:6px;height:6px;border-radius:3px;background-color:#fff;opacity:.6;line-height:6px}.member-dashboard{margin-top:30px;margin-bottom:30px;padding:40px;background-color:#fff;-webkit-box-shadow:0 4px 8px 0 #e5e5e5;box-shadow:0 4px 8px 0 #e5e5e5;border-radius:8px}.member-dashboard .user-info{width:350px;height:312px;float:left;background:#0b76de;border-radius:8px 0 0 8px;text-align:center;padding-top:40px}.member-dashboard .user-info .user-avatar{margin-bottom:40px}.member-dashboard .user-info .user-avatar img{border-radius:50px}.member-dashboard .user-info .user-nickname{font-size:18px;font-weight:400;color:#fff;line-height:18px;margin-bottom:40px}.member-dashboard .user-info .user-nickname .nickname-edit-button{display:inline-block;margin-left:15px;width:18px;height:18px;opacity:.6;line-height:18px}.member-dashboard .user-info .user-nickname .nickname-edit-button:hover{opacity:1}.member-dashboard .user-info .user-option .change-avatar-button{text-align:center;background:#ffcb00;border-radius:100px;font-size:14px;font-weight:400;color:#0b76de;line-height:14px;padding:10px 16px}.member-dashboard .user-info .user-option .change-avatar-button:hover{text-decoration:none;opacity:.8}.member-dashboard .user-vip{width:350px;height:312px;float:left;background:-webkit-gradient(linear,left top,left bottom,from(#323232),to(#2a2929));background:linear-gradient(180deg,#323232,#2a2929);border-radius:0 8px 8px 0;padding-top:40px;text-align:center}.member-dashboard .user-vip .vip-logo{margin-bottom:40px}.member-dashboard .user-vip .vip-logo-text{font-size:16px;font-weight:400;color:#ffcb00;line-height:16px;margin-bottom:41px;margin-top:1px}.member-dashboard .user-vip .vip-option .vip-option-button{text-align:center;background:#ffcb00;border-radius:100px;font-size:14px;font-weight:400;color:#323232;line-height:14px;padding:10px 16px}.member-dashboard .user-vip .vip-option .vip-option-button:hover{text-decoration:none;opacity:.8}.member-dashboard .user-socialite{width:360px;height:auto;float:left;margin-left:60px}.member-dashboard .user-socialite .alert-info{width:360px;height:42px;background:#fff9d7;-webkit-box-shadow:0 2px 4px 0 #e5e5e5;box-shadow:0 2px 4px 0 #e5e5e5;border-radius:21px;font-size:16px;font-weight:400;color:#de7a0b;line-height:22px;margin-bottom:20px;padding:10px 12px}.member-dashboard .user-socialite .option-item{width:100%;height:46px;float:left;padding-top:10px;padding-bottom:10px;line-height:26px}.member-dashboard .user-socialite .option-item .option-text{display:inline-block;width:80px;height:16px;float:left;font-size:16px;font-weight:400;color:#999;margin-right:30px}.member-dashboard .user-socialite .option-item .option-value{display:inline-block;width:auto;height:16px;float:left;font-size:16px;font-weight:400;color:#333}.member-dashboard .user-socialite .option-item .option-button{display:inline-block;width:58px;height:26px;float:right;background:#0b76de;border-radius:100px;font-size:14px;font-weight:400;color:#fff;line-height:14px;padding:6px 15px;text-align:center}.member-dashboard .user-socialite .option-item .option-button:hover{text-decoration:none;opacity:.8}.invite-user-box,.member-message-box,.my-orders{width:100%;height:auto;float:left;margin-top:16px;margin-bottom:80px}.invite-user-box .invite-user-item,.invite-user-box .member-message-item,.invite-user-box .orders-item,.member-message-box .invite-user-item,.member-message-box .member-message-item,.member-message-box .orders-item,.my-orders .invite-user-item,.my-orders .member-message-item,.my-orders .orders-item{position:relative;width:100%;height:72px;float:left;line-height:24px;padding:24px 30px;background-color:#fff;margin-bottom:1px}.invite-user-box .invite-user-item .red-dot,.invite-user-box .member-message-item .red-dot,.invite-user-box .orders-item .red-dot,.member-message-box .invite-user-item .red-dot,.member-message-box .member-message-item .red-dot,.member-message-box .orders-item .red-dot,.my-orders .invite-user-item .red-dot,.my-orders .member-message-item .red-dot,.my-orders .orders-item .red-dot{position:absolute;top:32px;left:11px;width:8px;height:8px;background:#ff4040;border-radius:4px;z-index:11}.invite-user-box .invite-user-item img,.invite-user-box .member-message-item img,.invite-user-box .orders-item img,.member-message-box .invite-user-item img,.member-message-box .member-message-item img,.member-message-box .orders-item img,.my-orders .invite-user-item img,.my-orders .member-message-item img,.my-orders .orders-item img{float:left}.invite-user-box .invite-user-item .invite-user-item-nickname,.invite-user-box .invite-user-item .message-content,.invite-user-box .invite-user-item .order-goods-title,.invite-user-box .member-message-item .invite-user-item-nickname,.invite-user-box .member-message-item .message-content,.invite-user-box .member-message-item .order-goods-title,.invite-user-box .orders-item .invite-user-item-nickname,.invite-user-box .orders-item .message-content,.invite-user-box .orders-item .order-goods-title,.member-message-box .invite-user-item .invite-user-item-nickname,.member-message-box .invite-user-item .message-content,.member-message-box .invite-user-item .order-goods-title,.member-message-box .member-message-item .invite-user-item-nickname,.member-message-box .member-message-item .message-content,.member-message-box .member-message-item .order-goods-title,.member-message-box .orders-item .invite-user-item-nickname,.member-message-box .orders-item .message-content,.member-message-box .orders-item .order-goods-title,.my-orders .invite-user-item .invite-user-item-nickname,.my-orders .invite-user-item .message-content,.my-orders .invite-user-item .order-goods-title,.my-orders .member-message-item .invite-user-item-nickname,.my-orders .member-message-item .message-content,.my-orders .member-message-item .order-goods-title,.my-orders .orders-item .invite-user-item-nickname,.my-orders .orders-item .message-content,.my-orders .orders-item .order-goods-title{width:auto;height:24px;display:inline-block;float:left;font-size:14px;font-weight:400;color:#333;margin-left:15px}.invite-user-box .invite-user-item .invite-user-item-date,.invite-user-box .invite-user-item .member-list-item-right,.invite-user-box .invite-user-item .member-message-date,.invite-user-box .member-message-item .invite-user-item-date,.invite-user-box .member-message-item .member-list-item-right,.invite-user-box .member-message-item .member-message-date,.invite-user-box .orders-item .invite-user-item-date,.invite-user-box .orders-item .member-list-item-right,.invite-user-box .orders-item .member-message-date,.member-message-box .invite-user-item .invite-user-item-date,.member-message-box .invite-user-item .member-list-item-right,.member-message-box .invite-user-item .member-message-date,.member-message-box .member-message-item .invite-user-item-date,.member-message-box .member-message-item .member-list-item-right,.member-message-box .member-message-item .member-message-date,.member-message-box .orders-item .invite-user-item-date,.member-message-box .orders-item .member-list-item-right,.member-message-box .orders-item .member-message-date,.my-orders .invite-user-item .invite-user-item-date,.my-orders .invite-user-item .member-list-item-right,.my-orders .invite-user-item .member-message-date,.my-orders .member-message-item .invite-user-item-date,.my-orders .member-message-item .member-list-item-right,.my-orders .member-message-item .member-message-date,.my-orders .orders-item .invite-user-item-date,.my-orders .orders-item .member-list-item-right,.my-orders .orders-item .member-message-date{float:right;width:126px;font-size:14px;font-weight:400;color:#999;line-height:24px;margin-right:60px}.invite-user-box .invite-user-item .member-message-read,.invite-user-box .invite-user-item .member-message-unread,.invite-user-box .member-message-item .member-message-read,.invite-user-box .member-message-item .member-message-unread,.invite-user-box .orders-item .member-message-read,.invite-user-box .orders-item .member-message-unread,.member-message-box .invite-user-item .member-message-read,.member-message-box .invite-user-item .member-message-unread,.member-message-box .member-message-item .member-message-read,.member-message-box .member-message-item .member-message-unread,.member-message-box .orders-item .member-message-read,.member-message-box .orders-item .member-message-unread,.my-orders .invite-user-item .member-message-read,.my-orders .invite-user-item .member-message-unread,.my-orders .member-message-item .member-message-read,.my-orders .member-message-item .member-message-unread,.my-orders .orders-item .member-message-read,.my-orders .orders-item .member-message-unread{float:right;width:28px;font-size:14px;font-weight:400;color:#ccc;line-height:24px}.invite-user-box .invite-user-item .member-message-unread,.invite-user-box .member-message-item .member-message-unread,.invite-user-box .orders-item .member-message-unread,.member-message-box .invite-user-item .member-message-unread,.member-message-box .member-message-item .member-message-unread,.member-message-box .orders-item .member-message-unread,.my-orders .invite-user-item .member-message-unread,.my-orders .member-message-item .member-message-unread,.my-orders .orders-item .member-message-unread{color:#0b76de}.invite-user-box .invite-user-item .order-goods-status,.invite-user-box .member-message-item .order-goods-status,.invite-user-box .orders-item .order-goods-status,.member-message-box .invite-user-item .order-goods-status,.member-message-box .member-message-item .order-goods-status,.member-message-box .orders-item .order-goods-status,.my-orders .invite-user-item .order-goods-status,.my-orders .member-message-item .order-goods-status,.my-orders .orders-item .order-goods-status{margin-right:0}.promo_code_banner{width:100%;height:auto;float:left;margin-top:30px;margin-bottom:30px}.promo_code_banner .promo_code_balance{width:527px;height:280px;float:left;background:#323232;border-top-left-radius:8px;border-bottom-left-radius:8px}.promo_code_banner .promo_code_balance .promo_code_code{width:100%;height:auto;float:left;margin-top:70px;line-height:30px;margin-bottom:78px}.promo_code_banner .promo_code_balance .promo_code_code .title{width:90px;font-size:18px;font-weight:400;color:hsla(0,0%,100%,.6);margin-left:80px}.promo_code_banner .promo_code_balance .promo_code_code .code{font-size:30px;font-weight:600;color:#fff;margin-left:50px}.promo_code_banner .promo_code_balance .promo_code_balance_info{width:100%;height:auto;float:left;line-height:30px}.promo_code_banner .promo_code_balance .promo_code_balance_info .title{width:90px;font-size:18px;font-weight:400;color:hsla(0,0%,100%,.6);margin-left:80px}.promo_code_banner .promo_code_balance .promo_code_balance_info .balance{font-size:30px;font-weight:600;color:#fff;margin-left:50px}.promo_code_banner .promo_code_balance .promo_code_balance_info .balance small{font-size:18px;font-weight:600}.promo_code_banner .promo_code_balance .promo_code_balance_info .withdraw-button{display:inline-block;width:88px;height:34px;margin-left:46px;background:#ffdd34;border-radius:100px;text-align:center;font-size:14px;font-weight:400;color:#323232;line-height:34px}.promo_code_banner .promo_code_balance .promo_code_balance_info .withdraw-button:hover{text-decoration:none;opacity:.6}.promo_code_banner .promo_code_intro{width:673px;height:280px;float:left;background:#ffdd34;border-bottom-right-radius:8px;border-top-right-radius:8px}.promo_code_banner .promo_code_intro .promo_code_intro_title{width:100%;height:auto;float:left;margin-top:30px;line-height:66px;font-size:18px;font-weight:400;color:#242323}.promo_code_banner .promo_code_intro .promo_code_intro_title img{margin-left:50px;margin-right:20px}.promo_code_banner .promo_code_intro .promo_code_intro_content{width:100%;height:auto;float:left;padding-left:50px;margin-top:20px;font-size:14px;font-weight:400;color:#242323;line-height:32px}.promo_code_banner .promo_code_intro .promo_code_intro_content p{margin-bottom:5px}.my-courses{margin-top:30px}.my-videos{margin-top:30px;width:100%;height:auto;float:left}.my-videos .my-videos-item{width:100%;height:auto;float:left;background-color:#fff;margin-bottom:30px;border-radius:8px}.my-videos .my-videos-item .course-title{width:100%;height:auto;float:left;padding:30px 20px;font-size:16px;font-weight:500;color:#333;line-height:16px}.my-videos .my-videos-item .course-title .course-info-link{float:right;font-size:16px;font-weight:400;color:#0b76de;line-height:16px}.my-videos .my-videos-item .course-title .course-info-link:hover{text-decoration:none}.my-videos .my-videos-item .video-item{display:block;width:100%;height:auto;float:left;padding:15px 30px}.my-videos .my-videos-item .video-item .player{display:inline-block;width:24px;height:24px;float:left;margin-right:15px}.my-videos .my-videos-item .video-item .video-title{display:inline-block;float:left;font-size:16px;font-weight:400;color:#333}.my-videos .my-videos-item .video-item .duration{float:right;font-size:16px;font-weight:400;color:#999}.course-banner{width:100%;height:264px;background-image:url("/images/member-bg.png");background-position:bottom;background-repeat:no-repeat;padding-top:70px;background-color:#0b76de}.course-banner .nav-bar{height:14px;font-size:14px;font-weight:400;line-height:14px;margin-bottom:30px}.course-banner .nav-bar,.course-banner .nav-bar a{color:hsla(0,0%,100%,.6)}.course-banner .nav-bar a:hover{color:#fff;text-decoration:none}.course-info-box{width:100%;height:300px;float:left;margin-top:-150px;background-color:#fff;border-radius:8px 8px 0 0;padding:30px}.course-info-box .course-thumb{width:320px;height:240px;float:left;margin-right:50px;position:relative}.course-info-box .course-thumb .course-thumb-img{border-radius:4px}.course-info-box .course-thumb .paid{width:100px;height:100px;position:absolute;bottom:0;right:0;z-index:33}.course-info-box .course-info{width:750px;height:auto;float:left}.course-info-box .course-info .course-title{height:24px;font-size:24px;font-weight:500;color:#333;line-height:24px;letter-spacing:1px;margin-bottom:20px}.course-info-box .course-info .course-title .like-button{display:inline-block;height:24px;width:auto;float:right;color:#ccc;line-height:24px;font-size:14px;font-weight:400;cursor:pointer}.course-info-box .course-info .course-title .like-button img{float:left;margin-right:10px}.course-info-box .course-info .course-title .like-button span{float:left;display:inline-block}.course-info-box .course-info .course-description{width:750px;height:90px;font-size:16px;font-weight:400;color:#666;line-height:30px;margin-bottom:40px}.course-info-box .course-info .course-extra-info{width:100%;height:auto;float:left;margin-top:18px}.course-info-box .course-info .course-extra-info .course-price{display:inline-block;float:left;height:50px;line-height:50px;font-size:30px;font-weight:600;color:#ff4040;margin-right:50px}.course-info-box .course-info .course-extra-info .course-price small{font-size:24px}.course-info-box .course-info .course-extra-info .buy-course-button{display:inline-block;float:left;padding-left:20px;padding-right:20px;background-color:rgba(11,118,222,.2);border-radius:20px;font-size:16px;font-weight:400;color:#0b76de;line-height:40px;margin-right:30px;margin-top:5px}.course-info-box .course-info .course-extra-info .buy-course-button:hover{text-decoration:none;opacity:.6}.course-info-box .course-info .course-extra-info .join-role-alert-link{display:inline-block;width:auto;height:40px;margin-top:5px;color:#e1a507;vertical-align:middle}.course-info-box .course-info .course-extra-info .join-role-alert-link img{display:inline-block;float:left;line-height:1;margin-top:7px;margin-right:5px}.course-info-box .course-info .course-extra-info .join-role-alert-link span{display:inline-block;float:left;width:auto;height:16px;font-size:16px;font-weight:400;line-height:1;margin-top:12px}.course-info-box .course-info .course-extra-info .join-role-alert-link:hover{color:rgba(225,165,7,.6)}.course-info-box .course-info .course-extra-info .buy-course-button{background-color:#0b76de;color:#fff}.course-chapter{width:100%;height:auto;float:left;margin-bottom:80px}.course-chapter .course-chapter-title{width:100%;height:auto;float:left;padding:30px;font-size:16px;font-weight:500;color:#333;line-height:16px}.course-chapter .course-videos-box{width:100%;height:auto;float:left}.course-chapter .course-videos-box .course-videos-item{display:-webkit-box;display:-ms-flexbox;display:flex;width:100%;height:auto;float:left;padding:18px 30px;background-color:#fff;cursor:pointer}.course-chapter .course-videos-box .course-videos-item.active,.course-chapter .course-videos-box .course-videos-item:hover{background-color:rgba(11,118,222,.1)}.course-chapter .course-videos-box .course-videos-item.active .player-icon,.course-chapter .course-videos-box .course-videos-item:hover .player-icon{background-image:url("/images/icons/player-hover.png")}.course-chapter .course-videos-box .course-videos-item.first{border-top-right-radius:8px;border-top-left-radius:8px}.course-chapter .course-videos-box .course-videos-item.last{border-bottom-right-radius:8px;border-bottom-left-radius:8px}.course-chapter .course-videos-box .course-videos-item .player-icon{width:24px;height:24px;margin-top:3px;float:left;background-image:url("/images/icons/player.png");background-size:100% 100%;margin-right:15px}.course-chapter .course-videos-box .course-videos-item .video-title{-webkit-box-flex:1;-ms-flex:1;flex:1;width:auto;padding-right:28px;font-size:16px;font-weight:400;color:#333;line-height:30px}.course-chapter .course-videos-box .course-videos-item .video-title:hover{text-decoration:none}.course-chapter .course-videos-box .course-videos-item .video-title .free-label{padding-left:8px;padding-right:8px;line-height:22px;margin-top:4px;background:#ff4040;border-radius:4px;font-size:12px;font-weight:400;color:#fff}.course-chapter .course-videos-box .course-videos-item .video-duration{width:70px;text-align:right;height:16px;font-size:16px;font-weight:400;color:#999;line-height:24px}.recom-courses-title{font-size:18px;font-weight:500;color:#333;line-height:27px}.comment-box,.recom-courses-title{width:100%;height:auto;float:left;margin-bottom:30px}.comment-box .comment-title{width:100%;height:16px;float:left;font-size:16px;font-weight:500;color:#333;line-height:16px;margin-bottom:30px;padding-left:30px;padding-top:20px}.comment-box .comment-input-box{width:100%;height:auto;float:left;background-color:#fff;padding:30px;-webkit-box-shadow:0 4px 8px 0 #e5e5e5;box-shadow:0 4px 8px 0 #e5e5e5;border-radius:8px}.comment-box .comment-input-box .comment-button{float:right;margin-top:20px;-webkit-box-shadow:0 4px 8px 0 #e5e5e5;box-shadow:0 4px 8px 0 #e5e5e5;border-radius:20px;font-size:16px;font-weight:400;color:#fff;line-height:40px;padding-left:36px;padding-right:36px;background-color:#0b76de;border:0}.comment-box .comment-input-box .comment-button:focus{outline:none}.comment-list-box{width:100%;height:auto;float:left;margin-bottom:50px}.comment-list-box .comment-list-item{width:100%;height:auto;float:left;margin-bottom:10px;background:#fff;-webkit-box-shadow:0 4px 8px 0 #e5e5e5;box-shadow:0 4px 8px 0 #e5e5e5;border-radius:8px;padding:20px 30px}.comment-list-box .comment-list-item .comment-user-avatar{width:70px;height:70px;float:left;margin-right:20px}.comment-list-box .comment-list-item .comment-user-avatar img{border-radius:35px}.comment-list-box .comment-list-item .comment-content-box{width:1050px;height:auto;float:left}.comment-list-box .comment-list-item .comment-content-box .comment-user-nickname{width:100%;height:auto;float:left;font-size:14px;font-weight:600;color:#999;line-height:14px;margin-bottom:15px}.comment-list-box .comment-list-item .comment-content-box .comment-content{width:100%;height:auto;float:left;font-size:16px;font-weight:400;color:#333;line-height:20px;margin-bottom:19px}.comment-list-box .comment-list-item .comment-content-box .comment-content p{margin-bottom:0}.comment-list-box .comment-list-item .comment-content-box .comment-info .comment-createAt{font-size:12px;font-weight:400;color:#ccc;line-height:12px}.video-player{width:100%;height:675px;float:left;background-color:#000;margin-top:-150px;z-index:22}.video-player #xiaoteng-player{width:1200px;height:675px}.video-player .buy-this-video,.video-player .need-login{width:100%;height:auto;float:left;padding-top:180px;text-align:center}.video-player .buy-this-video h3,.video-player .need-login h3{margin-bottom:80px;color:#0b76de}.video-player .buy-this-video .login-text,.video-player .need-login .login-text{color:#0b76de}.order-create-box{background:#fff;-webkit-box-shadow:0 4px 8px 0 #e5e5e5;box-shadow:0 4px 8px 0 #e5e5e5;border-radius:8px;margin-top:30px;padding:30px}.order-create-box,.order-create-box .title{width:100%;height:auto;float:left;margin-bottom:30px}.order-create-box .title{font-size:18px;font-weight:500;color:#333;line-height:27px}.order-create-box .goods-info-box{width:100%;height:auto;float:left;margin-bottom:50px}.order-create-box .goods-info-box .goods-thumb{width:160px;height:120px;float:left;margin-right:30px}.order-create-box .goods-info-box .goods-thumb img{border-radius:2px}.order-create-box .goods-info-box .goods-info{width:790px;height:auto;float:left}.order-create-box .goods-info-box .goods-info .goods-title{width:100%;height:auto;float:left;font-size:18px;font-weight:500;color:#333;line-height:18px;margin-bottom:30px;padding-top:20px}.order-create-box .goods-info-box .goods-info .goods-label{width:100%;height:auto;float:left}.order-create-box .goods-info-box .goods-info .goods-label .label{display:inline-block;padding:8px 10px;font-size:16px;font-weight:400;color:#ff4040;line-height:16px;border-radius:2px;border:1px solid #ff4040}.order-create-box .goods-info-box .goods-price{width:160px;height:auto;float:left;padding-top:10px;text-align:right}.order-create-box .goods-info-box .goods-price .price{color:#ff4040;font-weight:700;font-size:30px}.order-create-box .goods-info-box .goods-price .price small{font-size:16px;font-weight:600}.order-create-box .promo-code{width:100%;height:auto;float:left;margin-bottom:50px}.order-create-box .promo-code .promo-code-title{width:100%;height:auto;float:left;font-size:18px;font-weight:500;color:#333;line-height:27px;margin-bottom:30px}.order-create-box .promo-code .promo-code-input{line-height:50px}.order-create-box .promo-code .promo-code-input input{width:200px;height:50px;margin-right:30px;float:left}.order-create-box .promo-code .promo-code-input .promo-code-check-button{float:left;padding-left:36px;padding-right:36px;margin-top:5px;font-size:16px;font-weight:400;color:#fff;line-height:40px;background-color:#0b76de;border-radius:20px;margin-right:30px;border:0}.order-create-box .promo-code .promo-code-input .promo-code-check-button:focus{outline:none}.order-create-box .promo-code .promo-code-input .promo-code-info{display:none;font-size:14px;font-weight:400;color:#ff4040;line-height:14px}.order-create-box .payments-box{width:100%;height:auto;float:left;padding-bottom:50px;margin-bottom:50px;border-bottom:1px solid #ccc}.order-create-box .payments-box .payments-title{width:100%;height:auto;float:left;font-size:18px;font-weight:500;color:#333;line-height:27px;margin-bottom:30px}.order-create-box .payments-box .payments{width:100%;height:auto;float:left}.order-create-box .payments-box .payments .payment-item{width:230px;height:100px;float:left;line-height:100px;text-align:center;-webkit-box-shadow:0 4px 8px 0 #e5e5e5;box-shadow:0 4px 8px 0 #e5e5e5;margin-right:30px;border-radius:8px;cursor:pointer}.order-create-box .payments-box .payments .payment-item.selected{border:3px solid #ff4040}.order-create-box .bottom{width:100%;height:auto;float:left}.order-create-box .bottom .bottom-info{width:100%;height:auto;float:left;line-height:50px;margin-bottom:30px}.order-create-box .bottom .bottom-info .time{display:inline-block;float:left;font-size:14px;font-weight:400;color:#ff4040}.order-create-box .bottom .bottom-info .charge-info{display:inline-block;font-size:18px;font-weight:400;color:#333;float:right;margin-right:20px}.order-create-box .bottom .bottom-info .charge-info .promo-code-price{color:#ff4040}.order-create-box .bottom .total-price{display:inline-block;color:#ff4040;font-weight:700;font-size:30px;float:right}.order-create-box .bottom .total-price small{font-size:16px;font-weight:600}.order-create-box .bottom .bottom-button-box{width:100%;height:auto;float:left}.order-create-box .bottom .bottom-button-box .pay-button{padding-left:44px;padding-right:44px;line-height:60px;border:0;font-size:18px;font-weight:500;color:#fff;background-color:#0b76de;border-radius:30px;float:right}.order-create-box .bottom .bottom-button-box .pay-button:focus{outline:none}.index-latest-banner{padding-top:100px;padding-bottom:106px}.banner-title{width:100%;height:36px;float:left;font-size:36px;color:#333;line-height:36px;letter-spacing:1px;text-align:center;margin-bottom:70px;font-weight:700}.banner-title img{display:inline-block;margin-right:16px;margin-top:-5px}.banner-title span.title{display:inline-block;height:36px}.announcement-box{width:100%;height:52px;float:left;background:#fff9d7;border-radius:0 0 8px 8px;font-size:16px;font-weight:400;line-height:52px;padding-left:30px;padding-right:30px}.announcement-box a{color:#de7a0b}.announcement-box a:hover{text-decoration:none}.role-center-banner{width:100%;height:264px;background-image:url("/images/member-bg.png");background-position:bottom;background-repeat:no-repeat;padding-top:70px;background-color:#323232}.role-center-banner img{margin-top:100px}.role-list-box{width:100%;height:auto;float:left;padding-top:100px;padding-bottom:100px;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap}.role-list-box .role-list-item{width:320px;height:380px;text-align:center;padding-top:40px;padding-bottom:40px;background:#fff;-webkit-box-shadow:0 4px 8px 0 #e5e5e5;box-shadow:0 4px 8px 0 #e5e5e5;border-radius:8px;margin-left:120px;margin-bottom:50px;cursor:pointer;border:3px solid #fff}.role-list-box .role-list-item.first{margin-left:0}.role-list-box .role-list-item .name{font-size:30px;font-weight:600;color:#323232;line-height:30px;margin-bottom:40px}.role-list-box .role-list-item .price{font-size:48px;font-weight:700;color:#e1a500;line-height:67px;letter-spacing:1px;margin-bottom:50px}.role-list-box .role-list-item .price small{font-size:36px}.role-list-box .role-list-item .desc{font-size:18px;font-weight:400;color:#999;line-height:20px}.role-list-box .role-list-item.active{border:3px solid #ffcb00;background-color:#ffeded}.role-join-button{display:inline-block;width:220px;height:60px;background:#ffcb00;-webkit-box-shadow:0 4px 8px 0 #e5e5e5;box-shadow:0 4px 8px 0 #e5e5e5;border-radius:30px;line-height:60px;font-size:24px;font-weight:400;color:#323232;text-align:center;margin-bottom:170px}.role-join-button:focus,.role-join-button:hover{text-decoration:none;color:#323232;background:rgba(255,203,0,.6)}.course-show-page-desc img{max-width:100%}.select-payment-model{display:none;position:fixed;top:0;left:0;right:0;bottom:0;z-index:1001;background-color:rgba(0,0,0,.6)}.select-payment-model .select-payment-model-box{position:fixed;top:50%;left:50%;z-index:1002;margin-top:-207px;margin-left:-209px;width:414px;height:418px;background-color:#fff;border-radius:8px;padding:30px}.select-payment-model .select-payment-model-box .title{width:100%;height:auto;float:left;font-size:24px;font-weight:600;color:#333;line-height:24px;margin-bottom:68px}.select-payment-model .select-payment-model-box .title img{float:right;cursor:pointer}.select-payment-model .select-payment-model-box .title img:hover{-webkit-transform:rotate(1turn);transform:rotate(1turn);-webkit-transition:-webkit-transform 1s linear;transition:-webkit-transform 1s linear;transition:transform 1s linear;transition:transform 1s linear,-webkit-transform 1s linear}.select-payment-model .select-payment-model-box .content{width:100%;height:auto;float:left;text-align:center}.select-payment-model .select-payment-model-box .content .role-text{width:auto;height:24px;line-height:1;color:#333;margin-bottom:38px}.select-payment-model .select-payment-model-box .content .role-text img{display:inline-block;width:24px;height:24px;margin-right:10px;margin-top:-6px}.select-payment-model .select-payment-model-box .content .role-text span{display:inline-block;height:20px;font-size:20px;font-weight:400;line-height:1;margin-top:2px}.select-payment-model .select-payment-model-box .content .join-role-button-box{width:100%;height:auto;float:left}.select-payment-model .select-payment-model-box .content .join-role-button-box .join-role-button{display:inline-block;width:255px;height:52px;background:#0b76de;border-radius:26px;color:#fff;font-size:20px;font-weight:400;line-height:52px}.select-payment-model .select-payment-model-box .content .join-role-button-box .join-role-button:hover{background:rgba(11,118,222,.6)}.select-payment-model .select-payment-model-box .content .extra-options{width:100%;height:16px;line-height:1;float:left;margin-top:49px}.select-payment-model .select-payment-model-box .content .extra-options .plain-text{display:inline-block;width:auto;height:16px;font-size:16px;font-weight:400;color:#666;line-height:1;vertical-align:middle}.select-payment-model .select-payment-model-box .content .extra-options .plain-text img{margin-left:8px;margin-top:-3px}.select-payment-model .select-payment-model-box .content .extra-options .plain-text:hover{color:hsla(0,0%,40%,.8)} \ No newline at end of file + */:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#0b76de;--secondary:#344962;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#38aecc;--dark:#1a2b3f;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:-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";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}*,:after,:before{-webkit-box-sizing:border-box;box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus:not(:focus-visible){outline:0!important}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0;text-decoration-skip-ink:none}address{font-style:normal;line-height:inherit}address,dl,ol,ul{margin-bottom:1rem}dl,ol,ul{margin-top:0}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#0b76de;text-decoration:none;background-color:transparent}a:hover{color:#074f95;text-decoration:underline}a:not([href]),a:not([href]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto}figure{margin:0 0 1rem}img{border-style:none}img,svg{vertical-align:middle}svg{overflow:hidden}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}select{word-wrap:normal}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem}.display-1,.display-2{font-weight:300;line-height:1.2}.display-2{font-size:5.5rem}.display-3{font-size:4.5rem}.display-3,.display-4{font-weight:300;line-height:1.2}.display-4{font-size:3.5rem}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.small,small{font-size:80%;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8e3}.list-inline,.list-unstyled{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:80%;color:#6c757d}.blockquote-footer:before{content:"\2014\A0"}.img-fluid,.img-thumbnail{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#6c757d}code{font-size:87.5%;color:#e83e8c;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#212529}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:576px){.container{max-width:540px}}@media (min-width:768px){.container{max-width:1230px}}@media (min-width:992px){.container{max-width:1230px}}@media (min-width:1200px){.container{max-width:1230px}}.container-fluid,.container-lg,.container-md,.container-sm,.container-xl{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1230px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1230px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1230px}}.row{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col,.col-1,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-10,.col-11,.col-12,.col-auto,.col-lg,.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-auto,.col-md,.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12,.col-md-auto,.col-sm,.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-auto{position:relative;width:100%;padding-right:15px;padding-left:15px}.col{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-1>*{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-2>*{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-3>*{-webkit-box-flex:0;-ms-flex:0 0 33.33333333%;flex:0 0 33.33333333%;max-width:33.33333333%}.row-cols-4>*{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-5>*{-webkit-box-flex:0;-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-6>*{-webkit-box-flex:0;-ms-flex:0 0 16.66666667%;flex:0 0 16.66666667%;max-width:16.66666667%}.col-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-1,.col-auto{-webkit-box-flex:0}.col-1{-ms-flex:0 0 8.33333333%;flex:0 0 8.33333333%;max-width:8.33333333%}.col-2{-ms-flex:0 0 16.66666667%;flex:0 0 16.66666667%;max-width:16.66666667%}.col-2,.col-3{-webkit-box-flex:0}.col-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-4{-ms-flex:0 0 33.33333333%;flex:0 0 33.33333333%;max-width:33.33333333%}.col-4,.col-5{-webkit-box-flex:0}.col-5{-ms-flex:0 0 41.66666667%;flex:0 0 41.66666667%;max-width:41.66666667%}.col-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-6,.col-7{-webkit-box-flex:0}.col-7{-ms-flex:0 0 58.33333333%;flex:0 0 58.33333333%;max-width:58.33333333%}.col-8{-ms-flex:0 0 66.66666667%;flex:0 0 66.66666667%;max-width:66.66666667%}.col-8,.col-9{-webkit-box-flex:0}.col-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-10{-ms-flex:0 0 83.33333333%;flex:0 0 83.33333333%;max-width:83.33333333%}.col-10,.col-11{-webkit-box-flex:0}.col-11{-ms-flex:0 0 91.66666667%;flex:0 0 91.66666667%;max-width:91.66666667%}.col-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-1{margin-left:8.33333333%}.offset-2{margin-left:16.66666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333333%}.offset-5{margin-left:41.66666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333333%}.offset-8{margin-left:66.66666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333333%}.offset-11{margin-left:91.66666667%}@media (min-width:576px){.col-sm{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-sm-1>*{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-sm-2>*{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-sm-3>*{-webkit-box-flex:0;-ms-flex:0 0 33.33333333%;flex:0 0 33.33333333%;max-width:33.33333333%}.row-cols-sm-4>*{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-sm-5>*{-webkit-box-flex:0;-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-sm-6>*{-webkit-box-flex:0;-ms-flex:0 0 16.66666667%;flex:0 0 16.66666667%;max-width:16.66666667%}.col-sm-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-sm-1{-webkit-box-flex:0;-ms-flex:0 0 8.33333333%;flex:0 0 8.33333333%;max-width:8.33333333%}.col-sm-2{-webkit-box-flex:0;-ms-flex:0 0 16.66666667%;flex:0 0 16.66666667%;max-width:16.66666667%}.col-sm-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-sm-4{-webkit-box-flex:0;-ms-flex:0 0 33.33333333%;flex:0 0 33.33333333%;max-width:33.33333333%}.col-sm-5{-webkit-box-flex:0;-ms-flex:0 0 41.66666667%;flex:0 0 41.66666667%;max-width:41.66666667%}.col-sm-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-sm-7{-webkit-box-flex:0;-ms-flex:0 0 58.33333333%;flex:0 0 58.33333333%;max-width:58.33333333%}.col-sm-8{-webkit-box-flex:0;-ms-flex:0 0 66.66666667%;flex:0 0 66.66666667%;max-width:66.66666667%}.col-sm-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-sm-10{-webkit-box-flex:0;-ms-flex:0 0 83.33333333%;flex:0 0 83.33333333%;max-width:83.33333333%}.col-sm-11{-webkit-box-flex:0;-ms-flex:0 0 91.66666667%;flex:0 0 91.66666667%;max-width:91.66666667%}.col-sm-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-sm-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-sm-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-sm-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-sm-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-sm-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-sm-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-sm-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-sm-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-sm-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-sm-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-sm-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-sm-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-sm-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-sm-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-sm-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333333%}.offset-sm-2{margin-left:16.66666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333333%}.offset-sm-5{margin-left:41.66666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333333%}.offset-sm-8{margin-left:66.66666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333333%}.offset-sm-11{margin-left:91.66666667%}}@media (min-width:768px){.col-md{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-md-1>*{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-md-2>*{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-md-3>*{-webkit-box-flex:0;-ms-flex:0 0 33.33333333%;flex:0 0 33.33333333%;max-width:33.33333333%}.row-cols-md-4>*{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-md-5>*{-webkit-box-flex:0;-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-md-6>*{-webkit-box-flex:0;-ms-flex:0 0 16.66666667%;flex:0 0 16.66666667%;max-width:16.66666667%}.col-md-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-md-1{-webkit-box-flex:0;-ms-flex:0 0 8.33333333%;flex:0 0 8.33333333%;max-width:8.33333333%}.col-md-2{-webkit-box-flex:0;-ms-flex:0 0 16.66666667%;flex:0 0 16.66666667%;max-width:16.66666667%}.col-md-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-md-4{-webkit-box-flex:0;-ms-flex:0 0 33.33333333%;flex:0 0 33.33333333%;max-width:33.33333333%}.col-md-5{-webkit-box-flex:0;-ms-flex:0 0 41.66666667%;flex:0 0 41.66666667%;max-width:41.66666667%}.col-md-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-md-7{-webkit-box-flex:0;-ms-flex:0 0 58.33333333%;flex:0 0 58.33333333%;max-width:58.33333333%}.col-md-8{-webkit-box-flex:0;-ms-flex:0 0 66.66666667%;flex:0 0 66.66666667%;max-width:66.66666667%}.col-md-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-md-10{-webkit-box-flex:0;-ms-flex:0 0 83.33333333%;flex:0 0 83.33333333%;max-width:83.33333333%}.col-md-11{-webkit-box-flex:0;-ms-flex:0 0 91.66666667%;flex:0 0 91.66666667%;max-width:91.66666667%}.col-md-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-md-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-md-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-md-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-md-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-md-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-md-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-md-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-md-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-md-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-md-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-md-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-md-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-md-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-md-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-md-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333333%}.offset-md-2{margin-left:16.66666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333333%}.offset-md-5{margin-left:41.66666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333333%}.offset-md-8{margin-left:66.66666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333333%}.offset-md-11{margin-left:91.66666667%}}@media (min-width:992px){.col-lg{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-lg-1>*{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-lg-2>*{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-lg-3>*{-webkit-box-flex:0;-ms-flex:0 0 33.33333333%;flex:0 0 33.33333333%;max-width:33.33333333%}.row-cols-lg-4>*{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-lg-5>*{-webkit-box-flex:0;-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-lg-6>*{-webkit-box-flex:0;-ms-flex:0 0 16.66666667%;flex:0 0 16.66666667%;max-width:16.66666667%}.col-lg-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-lg-1{-webkit-box-flex:0;-ms-flex:0 0 8.33333333%;flex:0 0 8.33333333%;max-width:8.33333333%}.col-lg-2{-webkit-box-flex:0;-ms-flex:0 0 16.66666667%;flex:0 0 16.66666667%;max-width:16.66666667%}.col-lg-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-lg-4{-webkit-box-flex:0;-ms-flex:0 0 33.33333333%;flex:0 0 33.33333333%;max-width:33.33333333%}.col-lg-5{-webkit-box-flex:0;-ms-flex:0 0 41.66666667%;flex:0 0 41.66666667%;max-width:41.66666667%}.col-lg-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-lg-7{-webkit-box-flex:0;-ms-flex:0 0 58.33333333%;flex:0 0 58.33333333%;max-width:58.33333333%}.col-lg-8{-webkit-box-flex:0;-ms-flex:0 0 66.66666667%;flex:0 0 66.66666667%;max-width:66.66666667%}.col-lg-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-lg-10{-webkit-box-flex:0;-ms-flex:0 0 83.33333333%;flex:0 0 83.33333333%;max-width:83.33333333%}.col-lg-11{-webkit-box-flex:0;-ms-flex:0 0 91.66666667%;flex:0 0 91.66666667%;max-width:91.66666667%}.col-lg-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-lg-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-lg-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-lg-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-lg-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-lg-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-lg-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-lg-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-lg-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-lg-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-lg-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-lg-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-lg-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-lg-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-lg-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-lg-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333333%}.offset-lg-2{margin-left:16.66666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333333%}.offset-lg-5{margin-left:41.66666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333333%}.offset-lg-8{margin-left:66.66666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333333%}.offset-lg-11{margin-left:91.66666667%}}@media (min-width:1200px){.col-xl{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-xl-1>*{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-xl-2>*{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-xl-3>*{-webkit-box-flex:0;-ms-flex:0 0 33.33333333%;flex:0 0 33.33333333%;max-width:33.33333333%}.row-cols-xl-4>*{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-xl-5>*{-webkit-box-flex:0;-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-xl-6>*{-webkit-box-flex:0;-ms-flex:0 0 16.66666667%;flex:0 0 16.66666667%;max-width:16.66666667%}.col-xl-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-xl-1{-webkit-box-flex:0;-ms-flex:0 0 8.33333333%;flex:0 0 8.33333333%;max-width:8.33333333%}.col-xl-2{-webkit-box-flex:0;-ms-flex:0 0 16.66666667%;flex:0 0 16.66666667%;max-width:16.66666667%}.col-xl-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-xl-4{-webkit-box-flex:0;-ms-flex:0 0 33.33333333%;flex:0 0 33.33333333%;max-width:33.33333333%}.col-xl-5{-webkit-box-flex:0;-ms-flex:0 0 41.66666667%;flex:0 0 41.66666667%;max-width:41.66666667%}.col-xl-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-xl-7{-webkit-box-flex:0;-ms-flex:0 0 58.33333333%;flex:0 0 58.33333333%;max-width:58.33333333%}.col-xl-8{-webkit-box-flex:0;-ms-flex:0 0 66.66666667%;flex:0 0 66.66666667%;max-width:66.66666667%}.col-xl-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-xl-10{-webkit-box-flex:0;-ms-flex:0 0 83.33333333%;flex:0 0 83.33333333%;max-width:83.33333333%}.col-xl-11{-webkit-box-flex:0;-ms-flex:0 0 91.66666667%;flex:0 0 91.66666667%;max-width:91.66666667%}.col-xl-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-xl-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-xl-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-xl-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-xl-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-xl-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-xl-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-xl-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-xl-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-xl-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-xl-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-xl-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-xl-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-xl-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-xl-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-xl-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333333%}.offset-xl-2{margin-left:16.66666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333333%}.offset-xl-5{margin-left:41.66666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333333%}.offset-xl-8{margin-left:66.66666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333333%}.offset-xl-11{margin-left:91.66666667%}}.table{width:100%;margin-bottom:1rem;color:#212529}.table td,.table th{padding:.75rem;vertical-align:top;border-top:1px solid #777}.table thead th{vertical-align:bottom;border-bottom:2px solid #777}.table tbody+tbody{border-top:2px solid #777}.table-sm td,.table-sm th{padding:.3rem}.table-bordered,.table-bordered td,.table-bordered th{border:1px solid #777}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-borderless tbody+tbody,.table-borderless td,.table-borderless th,.table-borderless thead th{border:0}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.table-hover tbody tr:hover{color:#212529;background-color:rgba(0,0,0,.075)}.table-primary,.table-primary>td,.table-primary>th{background-color:#bbd9f6}.table-primary tbody+tbody,.table-primary td,.table-primary th,.table-primary thead th{border-color:#80b8ee}.table-hover .table-primary:hover,.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#a4ccf3}.table-secondary,.table-secondary>td,.table-secondary>th{background-color:#c6ccd3}.table-secondary tbody+tbody,.table-secondary td,.table-secondary th,.table-secondary thead th{border-color:#95a0ad}.table-hover .table-secondary:hover,.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#b8bfc8}.table-success,.table-success>td,.table-success>th{background-color:#c3e6cb}.table-success tbody+tbody,.table-success td,.table-success th,.table-success thead th{border-color:#8fd19e}.table-hover .table-success:hover,.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b1dfbb}.table-info,.table-info>td,.table-info>th{background-color:#bee5eb}.table-info tbody+tbody,.table-info td,.table-info th,.table-info thead th{border-color:#86cfda}.table-hover .table-info:hover,.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}.table-warning,.table-warning>td,.table-warning>th{background-color:#ffeeba}.table-warning tbody+tbody,.table-warning td,.table-warning th,.table-warning thead th{border-color:#ffdf7e}.table-hover .table-warning:hover,.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe8a1}.table-danger,.table-danger>td,.table-danger>th{background-color:#f5c6cb}.table-danger tbody+tbody,.table-danger td,.table-danger th,.table-danger thead th{border-color:#ed969e}.table-hover .table-danger:hover,.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f1b0b7}.table-light,.table-light>td,.table-light>th{background-color:#c7e8f1}.table-light tbody+tbody,.table-light td,.table-light th,.table-light thead th{border-color:#98d5e4}.table-hover .table-light:hover,.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#b3e0ec}.table-dark,.table-dark>td,.table-dark>th{background-color:#bfc4c9}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#88919b}.table-hover .table-dark:hover,.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b1b7bd}.table-active,.table-active>td,.table-active>th,.table-hover .table-active:hover,.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,.075)}.table .thead-dark th{color:#fff;background-color:#343a40;border-color:#454d55}.table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#777}.table-dark{color:#fff;background-color:#343a40}.table-dark td,.table-dark th,.table-dark thead th{border-color:#454d55}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:hsla(0,0%,100%,.05)}.table-dark.table-hover tbody tr:hover{color:#fff;background-color:hsla(0,0%,100%,.075)}@media (max-width:575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-sm>.table-bordered{border:0}}@media (max-width:767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-md>.table-bordered{border:0}}@media (max-width:991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-lg>.table-bordered{border:0}}@media (max-width:1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;-webkit-transition:border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{-webkit-transition:none;transition:none}}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}.form-control:focus{color:#495057;background-color:#fff;border-color:#71b5f8;outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(11,118,222,.25);box-shadow:0 0 0 .2rem rgba(11,118,222,.25)}.form-control::-webkit-input-placeholder{color:#6c757d;opacity:1}.form-control::-moz-placeholder{color:#6c757d;opacity:1}.form-control::-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;font-size:1rem;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.form-control-lg{height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}select.form-control[multiple],select.form-control[size],textarea.form-control{height:auto}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*=col-]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{color:#6c757d}.form-check-label{margin-bottom:0}.form-check-inline{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#28a745}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(40,167,69,.9);border-radius:.25rem}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.was-validated .form-control:valid{border-color:#28a745;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3E%3Cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:#28a745;-webkit-box-shadow:0 0 0 .2rem rgba(40,167,69,.25);box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-valid,.was-validated .custom-select:valid{border-color:#28a745;padding-right:calc(.75em + 2.3125rem);background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right .75rem center/8px 10px,url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3E%3Cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3E%3C/svg%3E") #fff no-repeat center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem)}.custom-select.is-valid:focus,.was-validated .custom-select:valid:focus{border-color:#28a745;-webkit-box-shadow:0 0 0 .2rem rgba(40,167,69,.25);box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#28a745}.form-check-input.is-valid~.valid-feedback,.form-check-input.is-valid~.valid-tooltip,.was-validated .form-check-input:valid~.valid-feedback,.was-validated .form-check-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid~.custom-control-label,.was-validated .custom-control-input:valid~.custom-control-label{color:#28a745}.custom-control-input.is-valid~.custom-control-label:before,.was-validated .custom-control-input:valid~.custom-control-label:before{border-color:#28a745}.custom-control-input.is-valid:checked~.custom-control-label:before,.was-validated .custom-control-input:valid:checked~.custom-control-label:before{border-color:#34ce57;background-color:#34ce57}.custom-control-input.is-valid:focus~.custom-control-label:before,.was-validated .custom-control-input:valid:focus~.custom-control-label:before{-webkit-box-shadow:0 0 0 .2rem rgba(40,167,69,.25);box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.custom-control-input.is-valid:focus:not(:checked)~.custom-control-label:before,.custom-file-input.is-valid~.custom-file-label,.was-validated .custom-control-input:valid:focus:not(:checked)~.custom-control-label:before,.was-validated .custom-file-input:valid~.custom-file-label{border-color:#28a745}.custom-file-input.is-valid:focus~.custom-file-label,.was-validated .custom-file-input:valid:focus~.custom-file-label{border-color:#28a745;-webkit-box-shadow:0 0 0 .2rem rgba(40,167,69,.25);box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(220,53,69,.9);border-radius:.25rem}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3E%3Ccircle cx='6' cy='6' r='4.5'/%3E%3Cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3E%3Ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;-webkit-box-shadow:0 0 0 .2rem rgba(220,53,69,.25);box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-invalid,.was-validated .custom-select:invalid{border-color:#dc3545;padding-right:calc(.75em + 2.3125rem);background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right .75rem center/8px 10px,url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3E%3Ccircle cx='6' cy='6' r='4.5'/%3E%3Cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3E%3Ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3E%3C/svg%3E") #fff no-repeat center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem)}.custom-select.is-invalid:focus,.was-validated .custom-select:invalid:focus{border-color:#dc3545;-webkit-box-shadow:0 0 0 .2rem rgba(220,53,69,.25);box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545}.form-check-input.is-invalid~.invalid-feedback,.form-check-input.is-invalid~.invalid-tooltip,.was-validated .form-check-input:invalid~.invalid-feedback,.was-validated .form-check-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid~.custom-control-label,.was-validated .custom-control-input:invalid~.custom-control-label{color:#dc3545}.custom-control-input.is-invalid~.custom-control-label:before,.was-validated .custom-control-input:invalid~.custom-control-label:before{border-color:#dc3545}.custom-control-input.is-invalid:checked~.custom-control-label:before,.was-validated .custom-control-input:invalid:checked~.custom-control-label:before{border-color:#e4606d;background-color:#e4606d}.custom-control-input.is-invalid:focus~.custom-control-label:before,.was-validated .custom-control-input:invalid:focus~.custom-control-label:before{-webkit-box-shadow:0 0 0 .2rem rgba(220,53,69,.25);box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.custom-control-input.is-invalid:focus:not(:checked)~.custom-control-label:before,.custom-file-input.is-invalid~.custom-file-label,.was-validated .custom-control-input:invalid:focus:not(:checked)~.custom-control-label:before,.was-validated .custom-file-input:invalid~.custom-file-label{border-color:#dc3545}.custom-file-input.is-invalid:focus~.custom-file-label,.was-validated .custom-file-input:invalid:focus~.custom-file-label{border-color:#dc3545;-webkit-box-shadow:0 0 0 .2rem rgba(220,53,69,.25);box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-inline{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.form-inline .form-check{width:100%}@media (min-width:576px){.form-inline label{-ms-flex-align:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.form-inline .form-group,.form-inline label{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;align-items:center;margin-bottom:0}.form-inline .form-group{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .custom-select,.form-inline .input-group{width:auto}.form-inline .form-check{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;-ms-flex-negative:0;flex-shrink:0;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;color:#212529;text-align:center;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;-webkit-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{-webkit-transition:none;transition:none}}.btn:hover{color:#212529;text-decoration:none}.btn.focus,.btn:focus{outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(11,118,222,.25);box-shadow:0 0 0 .2rem rgba(11,118,222,.25)}.btn.disabled,.btn:disabled{opacity:.65}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#0b76de;border-color:#0b76de}.btn-primary.focus,.btn-primary:focus,.btn-primary:hover{color:#fff;background-color:#0963ba;border-color:#095cad}.btn-primary.focus,.btn-primary:focus{-webkit-box-shadow:0 0 0 .2rem rgba(48,139,227,.5);box-shadow:0 0 0 .2rem rgba(48,139,227,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#0b76de;border-color:#0b76de}.btn-primary:not(:disabled):not(.disabled).active,.btn-primary:not(:disabled):not(.disabled):active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#095cad;border-color:#0856a1}.btn-primary:not(:disabled):not(.disabled).active:focus,.btn-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-primary.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(48,139,227,.5);box-shadow:0 0 0 .2rem rgba(48,139,227,.5)}.btn-secondary{color:#fff;background-color:#344962;border-color:#344962}.btn-secondary.focus,.btn-secondary:focus,.btn-secondary:hover{color:#fff;background-color:#273649;border-color:#223041}.btn-secondary.focus,.btn-secondary:focus{-webkit-box-shadow:0 0 0 .2rem rgba(82,100,122,.5);box-shadow:0 0 0 .2rem rgba(82,100,122,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#344962;border-color:#344962}.btn-secondary:not(:disabled):not(.disabled).active,.btn-secondary:not(:disabled):not(.disabled):active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#223041;border-color:#1e2a38}.btn-secondary:not(:disabled):not(.disabled).active:focus,.btn-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-secondary.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(82,100,122,.5);box-shadow:0 0 0 .2rem rgba(82,100,122,.5)}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success.focus,.btn-success:focus,.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success.focus,.btn-success:focus{-webkit-box-shadow:0 0 0 .2rem rgba(72,180,97,.5);box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:not(:disabled):not(.disabled).active,.btn-success:not(:disabled):not(.disabled):active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.btn-success:not(:disabled):not(.disabled).active:focus,.btn-success:not(:disabled):not(.disabled):active:focus,.show>.btn-success.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(72,180,97,.5);box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info.focus,.btn-info:focus,.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info.focus,.btn-info:focus{-webkit-box-shadow:0 0 0 .2rem rgba(58,176,195,.5);box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:not(:disabled):not(.disabled).active,.btn-info:not(:disabled):not(.disabled):active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}.btn-info:not(:disabled):not(.disabled).active:focus,.btn-info:not(:disabled):not(.disabled):active:focus,.show>.btn-info.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(58,176,195,.5);box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning.focus,.btn-warning:focus,.btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.btn-warning.focus,.btn-warning:focus{-webkit-box-shadow:0 0 0 .2rem rgba(222,170,12,.5);box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:not(:disabled):not(.disabled).active,.btn-warning:not(:disabled):not(.disabled):active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}.btn-warning:not(:disabled):not(.disabled).active:focus,.btn-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-warning.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(222,170,12,.5);box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger.focus,.btn-danger:focus,.btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.btn-danger.focus,.btn-danger:focus{-webkit-box-shadow:0 0 0 .2rem rgba(225,83,97,.5);box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:not(:disabled):not(.disabled).active,.btn-danger:not(:disabled):not(.disabled):active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#bd2130;border-color:#b21f2d}.btn-danger:not(:disabled):not(.disabled).active:focus,.btn-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-danger.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(225,83,97,.5);box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-light{color:#fff;background-color:#38aecc;border-color:#38aecc}.btn-light.focus,.btn-light:focus,.btn-light:hover{color:#fff;background-color:#2d96b1;border-color:#2b8da6}.btn-light.focus,.btn-light:focus{-webkit-box-shadow:0 0 0 .2rem rgba(86,186,212,.5);box-shadow:0 0 0 .2rem rgba(86,186,212,.5)}.btn-light.disabled,.btn-light:disabled{color:#fff;background-color:#38aecc;border-color:#38aecc}.btn-light:not(:disabled):not(.disabled).active,.btn-light:not(:disabled):not(.disabled):active,.show>.btn-light.dropdown-toggle{color:#fff;background-color:#2b8da6;border-color:#28859c}.btn-light:not(:disabled):not(.disabled).active:focus,.btn-light:not(:disabled):not(.disabled):active:focus,.show>.btn-light.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(86,186,212,.5);box-shadow:0 0 0 .2rem rgba(86,186,212,.5)}.btn-dark{color:#fff;background-color:#1a2b3f;border-color:#1a2b3f}.btn-dark.focus,.btn-dark:focus,.btn-dark:hover{color:#fff;background-color:#0f1924;border-color:#0b121b}.btn-dark.focus,.btn-dark:focus{-webkit-box-shadow:0 0 0 .2rem rgba(60,75,92,.5);box-shadow:0 0 0 .2rem rgba(60,75,92,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#1a2b3f;border-color:#1a2b3f}.btn-dark:not(:disabled):not(.disabled).active,.btn-dark:not(:disabled):not(.disabled):active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#0b121b;border-color:#070c12}.btn-dark:not(:disabled):not(.disabled).active:focus,.btn-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-dark.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(60,75,92,.5);box-shadow:0 0 0 .2rem rgba(60,75,92,.5)}.btn-outline-primary{color:#0b76de;border-color:#0b76de}.btn-outline-primary:hover{color:#fff;background-color:#0b76de;border-color:#0b76de}.btn-outline-primary.focus,.btn-outline-primary:focus{-webkit-box-shadow:0 0 0 .2rem rgba(11,118,222,.5);box-shadow:0 0 0 .2rem rgba(11,118,222,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#0b76de;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled).active,.btn-outline-primary:not(:disabled):not(.disabled):active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#0b76de;border-color:#0b76de}.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(11,118,222,.5);box-shadow:0 0 0 .2rem rgba(11,118,222,.5)}.btn-outline-secondary{color:#344962;border-color:#344962}.btn-outline-secondary:hover{color:#fff;background-color:#344962;border-color:#344962}.btn-outline-secondary.focus,.btn-outline-secondary:focus{-webkit-box-shadow:0 0 0 .2rem rgba(52,73,98,.5);box-shadow:0 0 0 .2rem rgba(52,73,98,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#344962;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled).active,.btn-outline-secondary:not(:disabled):not(.disabled):active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#344962;border-color:#344962}.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(52,73,98,.5);box-shadow:0 0 0 .2rem rgba(52,73,98,.5)}.btn-outline-success{color:#28a745;border-color:#28a745}.btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success.focus,.btn-outline-success:focus{-webkit-box-shadow:0 0 0 .2rem rgba(40,167,69,.5);box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#28a745;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled).active,.btn-outline-success:not(:disabled):not(.disabled):active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:not(:disabled):not(.disabled).active:focus,.btn-outline-success:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-success.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(40,167,69,.5);box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-info{color:#17a2b8;border-color:#17a2b8}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info.focus,.btn-outline-info:focus{-webkit-box-shadow:0 0 0 .2rem rgba(23,162,184,.5);box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled).active,.btn-outline-info:not(:disabled):not(.disabled):active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:not(:disabled):not(.disabled).active:focus,.btn-outline-info:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-info.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(23,162,184,.5);box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-warning{color:#ffc107;border-color:#ffc107}.btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning.focus,.btn-outline-warning:focus{-webkit-box-shadow:0 0 0 .2rem rgba(255,193,7,.5);box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled).active,.btn-outline-warning:not(:disabled):not(.disabled):active,.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(255,193,7,.5);box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-danger{color:#dc3545;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger.focus,.btn-outline-danger:focus{-webkit-box-shadow:0 0 0 .2rem rgba(220,53,69,.5);box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled).active,.btn-outline-danger:not(:disabled):not(.disabled):active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(220,53,69,.5);box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-light{color:#38aecc;border-color:#38aecc}.btn-outline-light:hover{color:#fff;background-color:#38aecc;border-color:#38aecc}.btn-outline-light.focus,.btn-outline-light:focus{-webkit-box-shadow:0 0 0 .2rem rgba(56,174,204,.5);box-shadow:0 0 0 .2rem rgba(56,174,204,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#38aecc;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled).active,.btn-outline-light:not(:disabled):not(.disabled):active,.show>.btn-outline-light.dropdown-toggle{color:#fff;background-color:#38aecc;border-color:#38aecc}.btn-outline-light:not(:disabled):not(.disabled).active:focus,.btn-outline-light:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-light.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(56,174,204,.5);box-shadow:0 0 0 .2rem rgba(56,174,204,.5)}.btn-outline-dark{color:#1a2b3f;border-color:#1a2b3f}.btn-outline-dark:hover{color:#fff;background-color:#1a2b3f;border-color:#1a2b3f}.btn-outline-dark.focus,.btn-outline-dark:focus{-webkit-box-shadow:0 0 0 .2rem rgba(26,43,63,.5);box-shadow:0 0 0 .2rem rgba(26,43,63,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#1a2b3f;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled).active,.btn-outline-dark:not(:disabled):not(.disabled):active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#1a2b3f;border-color:#1a2b3f}.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(26,43,63,.5);box-shadow:0 0 0 .2rem rgba(26,43,63,.5)}.btn-link{font-weight:400;color:#0b76de;text-decoration:none}.btn-link:hover{color:#074f95;text-decoration:underline}.btn-link.focus,.btn-link:focus{text-decoration:underline;-webkit-box-shadow:none;box-shadow:none}.btn-link.disabled,.btn-link:disabled{color:#6c757d;pointer-events:none}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{-webkit-transition:opacity .15s linear;transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{-webkit-transition:none;transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{-webkit-transition:none;transition:none}}.dropdown,.dropleft,.dropright,.dropup{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty:after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-menu-left{right:auto;left:0}.dropdown-menu-right{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-left{right:auto;left:0}.dropdown-menu-sm-right{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-left{right:auto;left:0}.dropdown-menu-md-right{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-left{right:auto;left:0}.dropdown-menu-lg-right{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-left{right:auto;left:0}.dropdown-menu-xl-right{right:0;left:auto}}.dropup .dropdown-menu{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty:after{margin-left:0}.dropright .dropdown-menu{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty:after{margin-left:0}.dropright .dropdown-toggle:after{vertical-align:0}.dropleft .dropdown-menu{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";display:none}.dropleft .dropdown-toggle:before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty:after{margin-left:0}.dropleft .dropdown-toggle:before{vertical-align:0}.dropdown-menu[x-placement^=bottom],.dropdown-menu[x-placement^=left],.dropdown-menu[x-placement^=right],.dropdown-menu[x-placement^=top]{right:auto;bottom:auto}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#16181b;text-decoration:none;background-color:#f8f9fa}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#0b76de}.dropdown-item.disabled,.dropdown-item:disabled{color:#6c757d;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#212529}.btn-group,.btn-group-vertical{position:relative;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:1}.btn-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn-group:not(:first-child),.btn-group>.btn:not(:first-child){margin-left:-1px}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split:after,.dropright .dropdown-toggle-split:after,.dropup .dropdown-toggle-split:after{margin-left:0}.dropleft .dropdown-toggle-split:before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn-group>.btn input[type=checkbox],.btn-group-toggle>.btn-group>.btn input[type=radio],.btn-group-toggle>.btn input[type=checkbox],.btn-group-toggle>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;width:100%}.input-group>.custom-file,.input-group>.custom-select,.input-group>.form-control,.input-group>.form-control-plaintext{position:relative;-webkit-box-flex:1;-ms-flex:1 1 0%;flex:1 1 0%;min-width:0;margin-bottom:0}.input-group>.custom-file+.custom-file,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.form-control,.input-group>.custom-select+.custom-file,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.form-control,.input-group>.form-control+.custom-file,.input-group>.form-control+.custom-select,.input-group>.form-control+.form-control,.input-group>.form-control-plaintext+.custom-file,.input-group>.form-control-plaintext+.custom-select,.input-group>.form-control-plaintext+.form-control{margin-left:-1px}.input-group>.custom-file .custom-file-input:focus~.custom-file-label,.input-group>.custom-select:focus,.input-group>.form-control:focus{z-index:3}.input-group>.custom-file .custom-file-input:focus{z-index:4}.input-group>.custom-select:not(:last-child),.input-group>.form-control:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-select:not(:first-child),.input-group>.form-control:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label:after{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-append,.input-group-prepend{display:-webkit-box;display:-ms-flexbox;display:flex}.input-group-append .btn,.input-group-prepend .btn{position:relative;z-index:2}.input-group-append .btn:focus,.input-group-prepend .btn:focus{z-index:3}.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.btn,.input-group-append .input-group-text+.input-group-text,.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-prepend .input-group-text+.input-group-text{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-text input[type=checkbox],.input-group-text input[type=radio]{margin-top:0}.input-group-lg>.custom-select,.input-group-lg>.form-control:not(textarea){height:calc(1.5em + 1rem + 2px)}.input-group-lg>.custom-select,.input-group-lg>.form-control,.input-group-lg>.input-group-append>.btn,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-prepend>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.input-group-sm>.custom-select,.input-group-sm>.form-control:not(textarea){height:calc(1.5em + .5rem + 2px)}.input-group-sm>.custom-select,.input-group-sm>.form-control,.input-group-sm>.input-group-append>.btn,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-prepend>.input-group-text{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.input-group-lg>.custom-select,.input-group-sm>.custom-select{padding-right:1.75rem}.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child),.input-group>.input-group-append:not(:last-child)>.btn,.input-group>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child),.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text{border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;display:block;min-height:1.5rem;padding-left:1.5rem}.custom-control-inline{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;left:0;z-index:-1;width:1rem;height:1.25rem;opacity:0}.custom-control-input:checked~.custom-control-label:before{color:#fff;border-color:#0b76de;background-color:#0b76de}.custom-control-input:focus~.custom-control-label:before{-webkit-box-shadow:0 0 0 .2rem rgba(11,118,222,.25);box-shadow:0 0 0 .2rem rgba(11,118,222,.25)}.custom-control-input:focus:not(:checked)~.custom-control-label:before{border-color:#71b5f8}.custom-control-input:not(:disabled):active~.custom-control-label:before{color:#fff;background-color:#a1cefa;border-color:#a1cefa}.custom-control-input:disabled~.custom-control-label,.custom-control-input[disabled]~.custom-control-label{color:#6c757d}.custom-control-input:disabled~.custom-control-label:before,.custom-control-input[disabled]~.custom-control-label:before{background-color:#e9ecef}.custom-control-label{position:relative;margin-bottom:0;vertical-align:top}.custom-control-label:before{pointer-events:none;background-color:#fff;border:1px solid #adb5bd}.custom-control-label:after,.custom-control-label:before{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;content:""}.custom-control-label:after{background:no-repeat 50%/50% 50%}.custom-checkbox .custom-control-label:before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked~.custom-control-label:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label:before{border-color:#0b76de;background-color:#0b76de}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4' viewBox='0 0 4 4'%3E%3Cpath stroke='%23fff' d='M0 2h4'/%3E%3C/svg%3E")}.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label:before{background-color:rgba(11,118,222,.5)}.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label:before{background-color:rgba(11,118,222,.5)}.custom-radio .custom-control-label:before{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-label:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E")}.custom-radio .custom-control-input:disabled:checked~.custom-control-label:before{background-color:rgba(11,118,222,.5)}.custom-switch{padding-left:2.25rem}.custom-switch .custom-control-label:before{left:-2.25rem;width:1.75rem;pointer-events:all;border-radius:.5rem}.custom-switch .custom-control-label:after{top:calc(.25rem + 2px);left:calc(-2.25rem + 2px);width:calc(1rem - 4px);height:calc(1rem - 4px);background-color:#adb5bd;border-radius:.5rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-transform .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-transform .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out,-webkit-box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-switch .custom-control-label:after{-webkit-transition:none;transition:none}}.custom-switch .custom-control-input:checked~.custom-control-label:after{background-color:#fff;-webkit-transform:translateX(.75rem);transform:translateX(.75rem)}.custom-switch .custom-control-input:disabled:checked~.custom-control-label:before{background-color:rgba(11,118,222,.5)}.custom-select{display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem 1.75rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;vertical-align:middle;background:#fff url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right .75rem center/8px 10px;border:1px solid #ced4da;border-radius:.25rem;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-select:focus{border-color:#71b5f8;outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(11,118,222,.25);box-shadow:0 0 0 .2rem rgba(11,118,222,.25)}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#6c757d;background-color:#e9ecef}.custom-select::-ms-expand{display:none}.custom-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}.custom-select-sm{height:calc(1.5em + .5rem + 2px);padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.custom-select-lg{height:calc(1.5em + 1rem + 2px);padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.custom-file{display:inline-block;margin-bottom:0}.custom-file,.custom-file-input{position:relative;width:100%;height:calc(1.5em + .75rem + 2px)}.custom-file-input{z-index:2;margin:0;opacity:0}.custom-file-input:focus~.custom-file-label{border-color:#71b5f8;-webkit-box-shadow:0 0 0 .2rem rgba(11,118,222,.25);box-shadow:0 0 0 .2rem rgba(11,118,222,.25)}.custom-file-input:disabled~.custom-file-label,.custom-file-input[disabled]~.custom-file-label{background-color:#e9ecef}.custom-file-input:lang(en)~.custom-file-label:after{content:"Browse"}.custom-file-input~.custom-file-label[data-browse]:after{content:attr(data-browse)}.custom-file-label{left:0;z-index:1;height:calc(1.5em + .75rem + 2px);font-weight:400;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.custom-file-label,.custom-file-label:after{position:absolute;top:0;right:0;padding:.375rem .75rem;line-height:1.5;color:#495057}.custom-file-label:after{bottom:0;z-index:3;display:block;height:calc(1.5em + .75rem);content:"Browse";background-color:#e9ecef;border-left:inherit;border-radius:0 .25rem .25rem 0}.custom-range{width:100%;height:1.4rem;padding:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-range:focus{outline:none}.custom-range:focus::-webkit-slider-thumb{-webkit-box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(11,118,222,.25);box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(11,118,222,.25)}.custom-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(11,118,222,.25)}.custom-range:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(11,118,222,.25)}.custom-range::-moz-focus-outer{border:0}.custom-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#0b76de;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.custom-range::-webkit-slider-thumb:active{background-color:#a1cefa}.custom-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#0b76de;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-moz-range-thumb{-webkit-transition:none;transition:none}}.custom-range::-moz-range-thumb:active{background-color:#a1cefa}.custom-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-ms-thumb{width:1rem;height:1rem;margin-top:0;margin-right:.2rem;margin-left:.2rem;background-color:#0b76de;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-ms-thumb{-webkit-transition:none;transition:none}}.custom-range::-ms-thumb:active{background-color:#a1cefa}.custom-range::-ms-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:transparent;border-color:transparent;border-width:.5rem}.custom-range::-ms-fill-lower,.custom-range::-ms-fill-upper{background-color:#dee2e6;border-radius:1rem}.custom-range::-ms-fill-upper{margin-right:15px}.custom-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.custom-range:disabled::-webkit-slider-runnable-track{cursor:default}.custom-range:disabled::-moz-range-thumb{background-color:#adb5bd}.custom-range:disabled::-moz-range-track{cursor:default}.custom-range:disabled::-ms-thumb{background-color:#adb5bd}.custom-control-label:before,.custom-file-label,.custom-select{-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-control-label:before,.custom-file-label,.custom-select{-webkit-transition:none;transition:none}}.nav{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#0b76de}.nav-fill .nav-item{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;text-align:center}.nav-justified .nav-item{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;padding:.5rem 1rem}.navbar,.navbar .container,.navbar .container-fluid,.navbar .container-lg,.navbar .container-md,.navbar .container-sm,.navbar .container-xl{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-nav{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{-ms-flex-preferred-size:100%;flex-basis:100%;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:no-repeat 50%;background-size:100% 100%}@media (max-width:575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-xl{padding-right:0;padding-left:0}}@media (min-width:576px){.navbar-expand-sm{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-sm,.navbar-expand-sm .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal}.navbar-expand-sm .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-sm .navbar-collapse{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@media (max-width:767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-md,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-xl{padding-right:0;padding-left:0}}@media (min-width:768px){.navbar-expand-md{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-md,.navbar-expand-md .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal}.navbar-expand-md .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-md,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-md .navbar-collapse{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@media (max-width:991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-xl{padding-right:0;padding-left:0}}@media (min-width:992px){.navbar-expand-lg{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-lg,.navbar-expand-lg .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal}.navbar-expand-lg .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-lg .navbar-collapse{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media (max-width:1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-xl{padding-right:0;padding-left:0}}@media (min-width:1200px){.navbar-expand-xl{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-xl,.navbar-expand-xl .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal}.navbar-expand-xl .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-xl .navbar-collapse{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}.navbar-expand{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-lg,.navbar-expand>.container-md,.navbar-expand>.container-sm,.navbar-expand>.container-xl{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-lg,.navbar-expand>.container-md,.navbar-expand>.container-sm,.navbar-expand>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand .navbar-collapse{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand,.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.5)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.5);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3E%3Cpath stroke='rgba(0, 0, 0, 0.5)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-light .navbar-text{color:rgba(0,0,0,.5)}.navbar-light .navbar-text a,.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand,.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:hsla(0,0%,100%,.5)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:hsla(0,0%,100%,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:hsla(0,0%,100%,.25)}.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:hsla(0,0%,100%,.5);border-color:hsla(0,0%,100%,.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3E%3Cpath stroke='rgba(255, 255, 255, 0.5)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-dark .navbar-text{color:hsla(0,0%,100%,.5)}.navbar-dark .navbar-text a,.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group:first-child .list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card>.list-group:last-child .list-group-item:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-body{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;min-height:1px;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem}.card-subtitle,.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-header+.list-group .list-group-item:first-child{border-top:0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-bottom:-.75rem;border-bottom:0}.card-header-pills,.card-header-tabs{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img,.card-img-bottom,.card-img-top{-ms-flex-negative:0;flex-shrink:0;width:100%}.card-img,.card-img-top{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-deck .card{margin-bottom:15px}@media (min-width:576px){.card-deck{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{-webkit-box-flex:1;-ms-flex:1 0 0%;flex:1 0 0%;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group>.card{margin-bottom:15px}@media (min-width:576px){.card-group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap}.card-group>.card{-webkit-box-flex:1;-ms-flex:1 0 0%;flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.card-columns .card{margin-bottom:.75rem}@media (min-width:576px){.card-columns{-webkit-column-count:3;-moz-column-count:3;column-count:3;-webkit-column-gap:1.25rem;-moz-column-gap:1.25rem;column-gap:1.25rem;orphans:1;widows:1}.card-columns .card{display:inline-block;width:100%}}.accordion>.card{overflow:hidden}.accordion>.card:not(:last-of-type){border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.accordion>.card:not(:first-of-type){border-top-left-radius:0;border-top-right-radius:0}.accordion>.card>.card-header{border-radius:0;margin-bottom:-1px}.breadcrumb{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item:before{display:inline-block;padding-right:.5rem;color:#6c757d;content:"/"}.breadcrumb-item+.breadcrumb-item:hover:before{text-decoration:underline;text-decoration:none}.breadcrumb-item.active{color:#6c757d}.pagination{display:-webkit-box;display:-ms-flexbox;display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#0b76de;background-color:#fff;border:1px solid #dee2e6}.page-link:hover{z-index:2;color:#074f95;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:3;outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(11,118,222,.25);box-shadow:0 0 0 .2rem rgba(11,118,222,.25)}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link{z-index:3;color:#fff;background-color:#0b76de;border-color:#0b76de}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem;-webkit-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.badge{-webkit-transition:none;transition:none}}a.badge:focus,a.badge:hover{text-decoration:none}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#0b76de}a.badge-primary:focus,a.badge-primary:hover{color:#fff;background-color:#095cad}a.badge-primary.focus,a.badge-primary:focus{outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(11,118,222,.5);box-shadow:0 0 0 .2rem rgba(11,118,222,.5)}.badge-secondary{color:#fff;background-color:#344962}a.badge-secondary:focus,a.badge-secondary:hover{color:#fff;background-color:#223041}a.badge-secondary.focus,a.badge-secondary:focus{outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(52,73,98,.5);box-shadow:0 0 0 .2rem rgba(52,73,98,.5)}.badge-success{color:#fff;background-color:#28a745}a.badge-success:focus,a.badge-success:hover{color:#fff;background-color:#1e7e34}a.badge-success.focus,a.badge-success:focus{outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(40,167,69,.5);box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.badge-info{color:#fff;background-color:#17a2b8}a.badge-info:focus,a.badge-info:hover{color:#fff;background-color:#117a8b}a.badge-info.focus,a.badge-info:focus{outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(23,162,184,.5);box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.badge-warning{color:#212529;background-color:#ffc107}a.badge-warning:focus,a.badge-warning:hover{color:#212529;background-color:#d39e00}a.badge-warning.focus,a.badge-warning:focus{outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(255,193,7,.5);box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.badge-danger{color:#fff;background-color:#dc3545}a.badge-danger:focus,a.badge-danger:hover{color:#fff;background-color:#bd2130}a.badge-danger.focus,a.badge-danger:focus{outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(220,53,69,.5);box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.badge-light{color:#fff;background-color:#38aecc}a.badge-light:focus,a.badge-light:hover{color:#fff;background-color:#2b8da6}a.badge-light.focus,a.badge-light:focus{outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(56,174,204,.5);box-shadow:0 0 0 .2rem rgba(56,174,204,.5)}.badge-dark{color:#fff;background-color:#1a2b3f}a.badge-dark:focus,a.badge-dark:hover{color:#fff;background-color:#0b121b}a.badge-dark.focus,a.badge-dark:focus{outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(26,43,63,.5);box-shadow:0 0 0 .2rem rgba(26,43,63,.5)}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width:576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#063d73;background-color:#cee4f8;border-color:#bbd9f6}.alert-primary hr{border-top-color:#a4ccf3}.alert-primary .alert-link{color:#032343}.alert-secondary{color:#1b2633;background-color:#d6dbe0;border-color:#c6ccd3}.alert-secondary hr{border-top-color:#b8bfc8}.alert-secondary .alert-link{color:#090d12}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert-success hr{border-top-color:#b1dfbb}.alert-success .alert-link{color:#0b2e13}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info hr{border-top-color:#abdde5}.alert-info .alert-link{color:#062c33}.alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-warning hr{border-top-color:#ffe8a1}.alert-warning .alert-link{color:#533f03}.alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-danger hr{border-top-color:#f1b0b7}.alert-danger .alert-link{color:#491217}.alert-light{color:#1d5a6a;background-color:#d7eff5;border-color:#c7e8f1}.alert-light hr{border-top-color:#b3e0ec}.alert-light .alert-link{color:#123842}.alert-dark{color:#0e1621;background-color:#d1d5d9;border-color:#bfc4c9}.alert-dark hr{border-top-color:#b1b7bd}.alert-dark .alert-link{color:#000}@-webkit-keyframes progress-bar-stripes{0%{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{0%{background-position:1rem 0}to{background-position:0 0}}.progress{height:1rem;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress,.progress-bar{display:-webkit-box;display:-ms-flexbox;display:flex;overflow:hidden}.progress-bar{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;color:#fff;text-align:center;white-space:nowrap;background-color:#0b76de;-webkit-transition:width .6s ease;transition:width .6s ease}@media (prefers-reduced-motion:reduce){.progress-bar{-webkit-transition:none;transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent);background-size:1rem 1rem}.progress-bar-animated{-webkit-animation:progress-bar-stripes 1s linear infinite;animation:progress-bar-stripes 1s linear infinite}@media (prefers-reduced-motion:reduce){.progress-bar-animated{-webkit-animation:none;animation:none}}.media{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.media-body{-webkit-box-flex:1;-ms-flex:1;flex:1}.list-group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.list-group-item:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#0b76de;border-color:#0b76de}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:-1px;border-top-width:1px}.list-group-horizontal{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.list-group-horizontal .list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal .list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal .list-group-item.active{margin-top:0}.list-group-horizontal .list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal .list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media (min-width:576px){.list-group-horizontal-sm{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-sm .list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-sm .list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-sm .list-group-item.active{margin-top:0}.list-group-horizontal-sm .list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-sm .list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:768px){.list-group-horizontal-md{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-md .list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-md .list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-md .list-group-item.active{margin-top:0}.list-group-horizontal-md .list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-md .list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:992px){.list-group-horizontal-lg{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-lg .list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-lg .list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-lg .list-group-item.active{margin-top:0}.list-group-horizontal-lg .list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-lg .list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:1200px){.list-group-horizontal-xl{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-xl .list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xl .list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xl .list-group-item.active{margin-top:0}.list-group-horizontal-xl .list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xl .list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}.list-group-flush .list-group-item{border-right-width:0;border-left-width:0;border-radius:0}.list-group-flush .list-group-item:first-child{border-top-width:0}.list-group-flush:last-child .list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{color:#063d73;background-color:#bbd9f6}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#063d73;background-color:#a4ccf3}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#063d73;border-color:#063d73}.list-group-item-secondary{color:#1b2633;background-color:#c6ccd3}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#1b2633;background-color:#b8bfc8}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#1b2633;border-color:#1b2633}.list-group-item-success{color:#155724;background-color:#c3e6cb}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#155724;background-color:#b1dfbb}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}.list-group-item-info{color:#0c5460;background-color:#bee5eb}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#0c5460;background-color:#abdde5}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.list-group-item-warning{color:#856404;background-color:#ffeeba}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#856404;background-color:#ffe8a1}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}.list-group-item-danger{color:#721c24;background-color:#f5c6cb}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#721c24;background-color:#f1b0b7}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#721c24;border-color:#721c24}.list-group-item-light{color:#1d5a6a;background-color:#c7e8f1}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#1d5a6a;background-color:#b3e0ec}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#1d5a6a;border-color:#1d5a6a}.list-group-item-dark{color:#0e1621;background-color:#bfc4c9}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#0e1621;background-color:#b1b7bd}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#0e1621;border-color:#0e1621}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:hover{color:#000;text-decoration:none}.close:not(:disabled):not(.disabled):focus,.close:not(:disabled):not(.disabled):hover{opacity:.75}button.close{padding:0;background-color:transparent;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}a.close.disabled{pointer-events:none}.toast{max-width:350px;overflow:hidden;font-size:.875rem;background-color:hsla(0,0%,100%,.85);background-clip:padding-box;border:1px solid rgba(0,0,0,.1);-webkit-box-shadow:0 .25rem .75rem rgba(0,0,0,.1);box-shadow:0 .25rem .75rem rgba(0,0,0,.1);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);opacity:0;border-radius:.25rem}.toast:not(:last-child){margin-bottom:.75rem}.toast.showing{opacity:1}.toast.show{display:block;opacity:1}.toast.hide{display:none}.toast-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:.25rem .75rem;color:#6c757d;background-color:hsla(0,0%,100%,.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05)}.toast-body{padding:.75rem}.modal-open{overflow:hidden}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal{position:fixed;top:0;left:0;z-index:1050;display:none;width:100%;height:100%;overflow:hidden;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out;-webkit-transform:translateY(-50px);transform:translateY(-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{-webkit-transition:none;transition:none}}.modal.show .modal-dialog{-webkit-transform:none;transform:none}.modal.modal-static .modal-dialog{-webkit-transform:scale(1.02);transform:scale(1.02)}.modal-dialog-scrollable{display:-webkit-box;display:-ms-flexbox;display:flex;max-height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 1rem);overflow:hidden}.modal-dialog-scrollable .modal-footer,.modal-dialog-scrollable .modal-header{-ms-flex-negative:0;flex-shrink:0}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;min-height:calc(100% - 1rem)}.modal-dialog-centered:before{display:block;height:calc(100vh - 1rem);content:""}.modal-dialog-centered.modal-dialog-scrollable{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;height:100%}.modal-dialog-centered.modal-dialog-scrollable .modal-content{max-height:none}.modal-dialog-centered.modal-dialog-scrollable:before{content:none}.modal-content{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:1rem;border-bottom:1px solid #777;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.modal-header .close{padding:1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem}.modal-footer{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;padding:.75rem;border-top:1px solid #777;border-bottom-right-radius:calc(.3rem - 1px);border-bottom-left-radius:calc(.3rem - 1px)}.modal-footer>*{margin:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{max-height:calc(100% - 3.5rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-dialog-centered:before{height:calc(100vh - 3.5rem)}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width:1200px){.modal-xl{max-width:1140px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif;font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow:before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[x-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[x-placement^=top] .arrow,.bs-tooltip-top .arrow{bottom:0}.bs-tooltip-auto[x-placement^=top] .arrow:before,.bs-tooltip-top .arrow:before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[x-placement^=right],.bs-tooltip-right{padding:0 .4rem}.bs-tooltip-auto[x-placement^=right] .arrow,.bs-tooltip-right .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=right] .arrow:before,.bs-tooltip-right .arrow:before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[x-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[x-placement^=bottom] .arrow,.bs-tooltip-bottom .arrow{top:0}.bs-tooltip-auto[x-placement^=bottom] .arrow:before,.bs-tooltip-bottom .arrow:before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[x-placement^=left],.bs-tooltip-left{padding:0 .4rem}.bs-tooltip-auto[x-placement^=left] .arrow,.bs-tooltip-left .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=left] .arrow:before,.bs-tooltip-left .arrow:before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{top:0;left:0;z-index:1060;max-width:276px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif;font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover,.popover .arrow{position:absolute;display:block}.popover .arrow{width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow:after,.popover .arrow:before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top]>.arrow,.bs-popover-top>.arrow{bottom:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=top]>.arrow:before,.bs-popover-top>.arrow:before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=top]>.arrow:after,.bs-popover-top>.arrow:after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right]>.arrow,.bs-popover-right>.arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=right]>.arrow:before,.bs-popover-right>.arrow:before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=right]>.arrow:after,.bs-popover-right>.arrow:after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom]>.arrow,.bs-popover-bottom>.arrow{top:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=bottom]>.arrow:before,.bs-popover-bottom>.arrow:before{top:0;border-width:0 .5rem .5rem;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=bottom]>.arrow:after,.bs-popover-bottom>.arrow:after{top:1px;border-width:0 .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header:before,.bs-popover-bottom .popover-header:before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left]>.arrow,.bs-popover-left>.arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=left]>.arrow:before,.bs-popover-left>.arrow:before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=left]>.arrow:after,.bs-popover-left>.arrow:after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}.carousel{position:relative}.carousel.pointer-event{-ms-touch-action:pan-y;touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner:after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transition:-webkit-transform .6s ease-in-out;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}@media (prefers-reduced-motion:reduce){.carousel-item{-webkit-transition:none;transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-right,.carousel-item-next:not(.carousel-item-left){-webkit-transform:translateX(100%);transform:translateX(100%)}.active.carousel-item-left,.carousel-item-prev:not(.carousel-item-right){-webkit-transform:translateX(-100%);transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;-webkit-transition-property:opacity;transition-property:opacity;-webkit-transform:none;transform:none}.carousel-fade .carousel-item-next.carousel-item-left,.carousel-fade .carousel-item-prev.carousel-item-right,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{z-index:0;opacity:0;-webkit-transition:opacity 0s .6s;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{-webkit-transition:none;transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:.5;-webkit-transition:opacity .15s ease;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{-webkit-transition:none;transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:20px;height:20px;background:no-repeat 50%/100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3E%3Cpath d='M5.25 0l-4 4 4 4 1.5-1.5L4.25 4l2.5-2.5L5.25 0z'/%3E%3C/svg%3E")}.carousel-control-next-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3E%3Cpath d='M2.75 0l-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z'/%3E%3C/svg%3E")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:15;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{-webkit-box-sizing:content-box;box-sizing:content-box;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;-webkit-transition:opacity .6s ease;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators li{-webkit-transition:none;transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}@-webkit-keyframes spinner-border{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes spinner-border{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;border:.25em solid currentColor;border-right-color:transparent;border-radius:50%;-webkit-animation:spinner-border .75s linear infinite;animation:spinner-border .75s linear infinite}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@-webkit-keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1}}@keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;background-color:currentColor;border-radius:50%;opacity:0;-webkit-animation:spinner-grow .75s linear infinite;animation:spinner-grow .75s linear infinite}.spinner-grow-sm{width:1rem;height:1rem}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.bg-primary{background-color:#0b76de!important}a.bg-primary:focus,a.bg-primary:hover,button.bg-primary:focus,button.bg-primary:hover{background-color:#095cad!important}.bg-secondary{background-color:#344962!important}a.bg-secondary:focus,a.bg-secondary:hover,button.bg-secondary:focus,button.bg-secondary:hover{background-color:#223041!important}.bg-success{background-color:#28a745!important}a.bg-success:focus,a.bg-success:hover,button.bg-success:focus,button.bg-success:hover{background-color:#1e7e34!important}.bg-info{background-color:#17a2b8!important}a.bg-info:focus,a.bg-info:hover,button.bg-info:focus,button.bg-info:hover{background-color:#117a8b!important}.bg-warning{background-color:#ffc107!important}a.bg-warning:focus,a.bg-warning:hover,button.bg-warning:focus,button.bg-warning:hover{background-color:#d39e00!important}.bg-danger{background-color:#dc3545!important}a.bg-danger:focus,a.bg-danger:hover,button.bg-danger:focus,button.bg-danger:hover{background-color:#bd2130!important}.bg-light{background-color:#38aecc!important}a.bg-light:focus,a.bg-light:hover,button.bg-light:focus,button.bg-light:hover{background-color:#2b8da6!important}.bg-dark{background-color:#1a2b3f!important}a.bg-dark:focus,a.bg-dark:hover,button.bg-dark:focus,button.bg-dark:hover{background-color:#0b121b!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.border{border:1px solid #777!important}.border-top{border-top:1px solid #777!important}.border-right{border-right:1px solid #777!important}.border-bottom{border-bottom:1px solid #777!important}.border-left{border-left:1px solid #777!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-right-0{border-right:0!important}.border-bottom-0{border-bottom:0!important}.border-left-0{border-left:0!important}.border-primary{border-color:#0b76de!important}.border-secondary{border-color:#344962!important}.border-success{border-color:#28a745!important}.border-info{border-color:#17a2b8!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#38aecc!important}.border-dark{border-color:#1a2b3f!important}.border-white{border-color:#fff!important}.rounded-sm{border-radius:.2rem!important}.rounded{border-radius:.25rem!important}.rounded-top{border-top-left-radius:.25rem!important}.rounded-right,.rounded-top{border-top-right-radius:.25rem!important}.rounded-bottom,.rounded-right{border-bottom-right-radius:.25rem!important}.rounded-bottom,.rounded-left{border-bottom-left-radius:.25rem!important}.rounded-left{border-top-left-radius:.25rem!important}.rounded-lg{border-radius:.3rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-0{border-radius:0!important}.clearfix:after{display:block;clear:both;content:""}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}@media (min-width:576px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-sm-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:768px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-md-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:992px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-lg-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-xl-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media print{.d-print-none{display:none!important}.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-print-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive:before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9:before{padding-top:42.85714286%}.embed-responsive-16by9:before{padding-top:56.25%}.embed-responsive-4by3:before{padding-top:75%}.embed-responsive-1by1:before{padding-top:100%}.flex-row{-webkit-box-orient:horizontal!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-column,.flex-row{-webkit-box-direction:normal!important}.flex-column{-webkit-box-orient:vertical!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-row-reverse{-webkit-box-orient:horizontal!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-column-reverse,.flex-row-reverse{-webkit-box-direction:reverse!important}.flex-column-reverse{-webkit-box-orient:vertical!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-fill{-webkit-box-flex:1!important;-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-grow-0{-webkit-box-flex:0!important;-ms-flex-positive:0!important;flex-grow:0!important}.flex-grow-1{-webkit-box-flex:1!important;-ms-flex-positive:1!important;flex-grow:1!important}.flex-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}@media (min-width:576px){.flex-sm-row{-webkit-box-orient:horizontal!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-sm-column,.flex-sm-row{-webkit-box-direction:normal!important}.flex-sm-column{-webkit-box-orient:vertical!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-sm-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-sm-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-sm-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-sm-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-sm-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-sm-fill{-webkit-box-flex:1!important;-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-sm-grow-0{-webkit-box-flex:0!important;-ms-flex-positive:0!important;flex-grow:0!important}.flex-sm-grow-1{-webkit-box-flex:1!important;-ms-flex-positive:1!important;flex-grow:1!important}.flex-sm-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-sm-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-sm-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-sm-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-sm-center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-sm-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-sm-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-sm-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-sm-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-sm-center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-sm-baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-sm-stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-sm-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-sm-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-sm-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-sm-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-sm-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-sm-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-sm-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-sm-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-sm-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-sm-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-sm-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-sm-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:768px){.flex-md-row{-webkit-box-orient:horizontal!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-md-column,.flex-md-row{-webkit-box-direction:normal!important}.flex-md-column{-webkit-box-orient:vertical!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-md-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-md-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-md-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-md-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-md-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-md-fill{-webkit-box-flex:1!important;-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-md-grow-0{-webkit-box-flex:0!important;-ms-flex-positive:0!important;flex-grow:0!important}.flex-md-grow-1{-webkit-box-flex:1!important;-ms-flex-positive:1!important;flex-grow:1!important}.flex-md-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-md-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-md-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-md-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-md-center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-md-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-md-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-md-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-md-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-md-center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-md-baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-md-stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-md-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-md-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-md-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-md-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-md-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-md-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-md-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-md-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-md-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-md-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-md-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-md-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:992px){.flex-lg-row{-webkit-box-orient:horizontal!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-lg-column,.flex-lg-row{-webkit-box-direction:normal!important}.flex-lg-column{-webkit-box-orient:vertical!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-lg-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-lg-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-lg-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-lg-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-lg-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-lg-fill{-webkit-box-flex:1!important;-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-lg-grow-0{-webkit-box-flex:0!important;-ms-flex-positive:0!important;flex-grow:0!important}.flex-lg-grow-1{-webkit-box-flex:1!important;-ms-flex-positive:1!important;flex-grow:1!important}.flex-lg-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-lg-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-lg-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-lg-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-lg-center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-lg-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-lg-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-lg-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-lg-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-lg-center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-lg-baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-lg-stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-lg-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-lg-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-lg-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-lg-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-lg-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-lg-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-lg-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-lg-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-lg-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-lg-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-lg-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-lg-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:1200px){.flex-xl-row{-webkit-box-orient:horizontal!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-xl-column,.flex-xl-row{-webkit-box-direction:normal!important}.flex-xl-column{-webkit-box-orient:vertical!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-xl-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-xl-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-xl-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-xl-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-xl-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-xl-fill{-webkit-box-flex:1!important;-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-xl-grow-0{-webkit-box-flex:0!important;-ms-flex-positive:0!important;flex-grow:0!important}.flex-xl-grow-1{-webkit-box-flex:1!important;-ms-flex-positive:1!important;flex-grow:1!important}.flex-xl-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-xl-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-xl-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-xl-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-xl-center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-xl-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-xl-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-xl-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-xl-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-xl-center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-xl-baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-xl-stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-xl-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-xl-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-xl-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-xl-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-xl-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-xl-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-xl-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-xl-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-xl-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-xl-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-xl-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-xl-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}@media (min-width:576px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media (min-width:768px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media (min-width:992px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media (min-width:1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.fixed-top{top:0}.fixed-bottom,.fixed-top{position:fixed;right:0;left:0;z-index:1030}.fixed-bottom{bottom:0}@supports ((position:-webkit-sticky) or (position:sticky)){.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal}.shadow-sm{-webkit-box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important;box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow{-webkit-box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important;box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-lg{-webkit-box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important;box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{-webkit-box-shadow:none!important;box-shadow:none!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}.min-vw-100{min-width:100vw!important}.min-vh-100{min-height:100vh!important}.vw-100{width:100vw!important}.vh-100{height:100vh!important}.stretched-link:after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:auto;content:"";background-color:transparent}.m-0{margin:0!important}.mt-0,.my-0{margin-top:0!important}.mr-0,.mx-0{margin-right:0!important}.mb-0,.my-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.m-1{margin:.25rem!important}.mt-1,.my-1{margin-top:.25rem!important}.mr-1,.mx-1{margin-right:.25rem!important}.mb-1,.my-1{margin-bottom:.25rem!important}.ml-1,.mx-1{margin-left:.25rem!important}.m-2{margin:.5rem!important}.mt-2,.my-2{margin-top:.5rem!important}.mr-2,.mx-2{margin-right:.5rem!important}.mb-2,.my-2{margin-bottom:.5rem!important}.ml-2,.mx-2{margin-left:.5rem!important}.m-3{margin:1rem!important}.mt-3,.my-3{margin-top:1rem!important}.mr-3,.mx-3{margin-right:1rem!important}.mb-3,.my-3{margin-bottom:1rem!important}.ml-3,.mx-3{margin-left:1rem!important}.m-4{margin:1.5rem!important}.mt-4,.my-4{margin-top:1.5rem!important}.mr-4,.mx-4{margin-right:1.5rem!important}.mb-4,.my-4{margin-bottom:1.5rem!important}.ml-4,.mx-4{margin-left:1.5rem!important}.m-5{margin:3rem!important}.mt-5,.my-5{margin-top:3rem!important}.mr-5,.mx-5{margin-right:3rem!important}.mb-5,.my-5{margin-bottom:3rem!important}.ml-5,.mx-5{margin-left:3rem!important}.p-0{padding:0!important}.pt-0,.py-0{padding-top:0!important}.pr-0,.px-0{padding-right:0!important}.pb-0,.py-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.p-1{padding:.25rem!important}.pt-1,.py-1{padding-top:.25rem!important}.pr-1,.px-1{padding-right:.25rem!important}.pb-1,.py-1{padding-bottom:.25rem!important}.pl-1,.px-1{padding-left:.25rem!important}.p-2{padding:.5rem!important}.pt-2,.py-2{padding-top:.5rem!important}.pr-2,.px-2{padding-right:.5rem!important}.pb-2,.py-2{padding-bottom:.5rem!important}.pl-2,.px-2{padding-left:.5rem!important}.p-3{padding:1rem!important}.pt-3,.py-3{padding-top:1rem!important}.pr-3,.px-3{padding-right:1rem!important}.pb-3,.py-3{padding-bottom:1rem!important}.pl-3,.px-3{padding-left:1rem!important}.p-4{padding:1.5rem!important}.pt-4,.py-4{padding-top:1.5rem!important}.pr-4,.px-4{padding-right:1.5rem!important}.pb-4,.py-4{padding-bottom:1.5rem!important}.pl-4,.px-4{padding-left:1.5rem!important}.p-5{padding:3rem!important}.pt-5,.py-5{padding-top:3rem!important}.pr-5,.px-5{padding-right:3rem!important}.pb-5,.py-5{padding-bottom:3rem!important}.pl-5,.px-5{padding-left:3rem!important}.m-n1{margin:-.25rem!important}.mt-n1,.my-n1{margin-top:-.25rem!important}.mr-n1,.mx-n1{margin-right:-.25rem!important}.mb-n1,.my-n1{margin-bottom:-.25rem!important}.ml-n1,.mx-n1{margin-left:-.25rem!important}.m-n2{margin:-.5rem!important}.mt-n2,.my-n2{margin-top:-.5rem!important}.mr-n2,.mx-n2{margin-right:-.5rem!important}.mb-n2,.my-n2{margin-bottom:-.5rem!important}.ml-n2,.mx-n2{margin-left:-.5rem!important}.m-n3{margin:-1rem!important}.mt-n3,.my-n3{margin-top:-1rem!important}.mr-n3,.mx-n3{margin-right:-1rem!important}.mb-n3,.my-n3{margin-bottom:-1rem!important}.ml-n3,.mx-n3{margin-left:-1rem!important}.m-n4{margin:-1.5rem!important}.mt-n4,.my-n4{margin-top:-1.5rem!important}.mr-n4,.mx-n4{margin-right:-1.5rem!important}.mb-n4,.my-n4{margin-bottom:-1.5rem!important}.ml-n4,.mx-n4{margin-left:-1.5rem!important}.m-n5{margin:-3rem!important}.mt-n5,.my-n5{margin-top:-3rem!important}.mr-n5,.mx-n5{margin-right:-3rem!important}.mb-n5,.my-n5{margin-bottom:-3rem!important}.ml-n5,.mx-n5{margin-left:-3rem!important}.m-auto{margin:auto!important}.mt-auto,.my-auto{margin-top:auto!important}.mr-auto,.mx-auto{margin-right:auto!important}.mb-auto,.my-auto{margin-bottom:auto!important}.ml-auto,.mx-auto{margin-left:auto!important}@media (min-width:576px){.m-sm-0{margin:0!important}.mt-sm-0,.my-sm-0{margin-top:0!important}.mr-sm-0,.mx-sm-0{margin-right:0!important}.mb-sm-0,.my-sm-0{margin-bottom:0!important}.ml-sm-0,.mx-sm-0{margin-left:0!important}.m-sm-1{margin:.25rem!important}.mt-sm-1,.my-sm-1{margin-top:.25rem!important}.mr-sm-1,.mx-sm-1{margin-right:.25rem!important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem!important}.ml-sm-1,.mx-sm-1{margin-left:.25rem!important}.m-sm-2{margin:.5rem!important}.mt-sm-2,.my-sm-2{margin-top:.5rem!important}.mr-sm-2,.mx-sm-2{margin-right:.5rem!important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem!important}.ml-sm-2,.mx-sm-2{margin-left:.5rem!important}.m-sm-3{margin:1rem!important}.mt-sm-3,.my-sm-3{margin-top:1rem!important}.mr-sm-3,.mx-sm-3{margin-right:1rem!important}.mb-sm-3,.my-sm-3{margin-bottom:1rem!important}.ml-sm-3,.mx-sm-3{margin-left:1rem!important}.m-sm-4{margin:1.5rem!important}.mt-sm-4,.my-sm-4{margin-top:1.5rem!important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem!important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem!important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem!important}.m-sm-5{margin:3rem!important}.mt-sm-5,.my-sm-5{margin-top:3rem!important}.mr-sm-5,.mx-sm-5{margin-right:3rem!important}.mb-sm-5,.my-sm-5{margin-bottom:3rem!important}.ml-sm-5,.mx-sm-5{margin-left:3rem!important}.p-sm-0{padding:0!important}.pt-sm-0,.py-sm-0{padding-top:0!important}.pr-sm-0,.px-sm-0{padding-right:0!important}.pb-sm-0,.py-sm-0{padding-bottom:0!important}.pl-sm-0,.px-sm-0{padding-left:0!important}.p-sm-1{padding:.25rem!important}.pt-sm-1,.py-sm-1{padding-top:.25rem!important}.pr-sm-1,.px-sm-1{padding-right:.25rem!important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem!important}.pl-sm-1,.px-sm-1{padding-left:.25rem!important}.p-sm-2{padding:.5rem!important}.pt-sm-2,.py-sm-2{padding-top:.5rem!important}.pr-sm-2,.px-sm-2{padding-right:.5rem!important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem!important}.pl-sm-2,.px-sm-2{padding-left:.5rem!important}.p-sm-3{padding:1rem!important}.pt-sm-3,.py-sm-3{padding-top:1rem!important}.pr-sm-3,.px-sm-3{padding-right:1rem!important}.pb-sm-3,.py-sm-3{padding-bottom:1rem!important}.pl-sm-3,.px-sm-3{padding-left:1rem!important}.p-sm-4{padding:1.5rem!important}.pt-sm-4,.py-sm-4{padding-top:1.5rem!important}.pr-sm-4,.px-sm-4{padding-right:1.5rem!important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem!important}.pl-sm-4,.px-sm-4{padding-left:1.5rem!important}.p-sm-5{padding:3rem!important}.pt-sm-5,.py-sm-5{padding-top:3rem!important}.pr-sm-5,.px-sm-5{padding-right:3rem!important}.pb-sm-5,.py-sm-5{padding-bottom:3rem!important}.pl-sm-5,.px-sm-5{padding-left:3rem!important}.m-sm-n1{margin:-.25rem!important}.mt-sm-n1,.my-sm-n1{margin-top:-.25rem!important}.mr-sm-n1,.mx-sm-n1{margin-right:-.25rem!important}.mb-sm-n1,.my-sm-n1{margin-bottom:-.25rem!important}.ml-sm-n1,.mx-sm-n1{margin-left:-.25rem!important}.m-sm-n2{margin:-.5rem!important}.mt-sm-n2,.my-sm-n2{margin-top:-.5rem!important}.mr-sm-n2,.mx-sm-n2{margin-right:-.5rem!important}.mb-sm-n2,.my-sm-n2{margin-bottom:-.5rem!important}.ml-sm-n2,.mx-sm-n2{margin-left:-.5rem!important}.m-sm-n3{margin:-1rem!important}.mt-sm-n3,.my-sm-n3{margin-top:-1rem!important}.mr-sm-n3,.mx-sm-n3{margin-right:-1rem!important}.mb-sm-n3,.my-sm-n3{margin-bottom:-1rem!important}.ml-sm-n3,.mx-sm-n3{margin-left:-1rem!important}.m-sm-n4{margin:-1.5rem!important}.mt-sm-n4,.my-sm-n4{margin-top:-1.5rem!important}.mr-sm-n4,.mx-sm-n4{margin-right:-1.5rem!important}.mb-sm-n4,.my-sm-n4{margin-bottom:-1.5rem!important}.ml-sm-n4,.mx-sm-n4{margin-left:-1.5rem!important}.m-sm-n5{margin:-3rem!important}.mt-sm-n5,.my-sm-n5{margin-top:-3rem!important}.mr-sm-n5,.mx-sm-n5{margin-right:-3rem!important}.mb-sm-n5,.my-sm-n5{margin-bottom:-3rem!important}.ml-sm-n5,.mx-sm-n5{margin-left:-3rem!important}.m-sm-auto{margin:auto!important}.mt-sm-auto,.my-sm-auto{margin-top:auto!important}.mr-sm-auto,.mx-sm-auto{margin-right:auto!important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto!important}.ml-sm-auto,.mx-sm-auto{margin-left:auto!important}}@media (min-width:768px){.m-md-0{margin:0!important}.mt-md-0,.my-md-0{margin-top:0!important}.mr-md-0,.mx-md-0{margin-right:0!important}.mb-md-0,.my-md-0{margin-bottom:0!important}.ml-md-0,.mx-md-0{margin-left:0!important}.m-md-1{margin:.25rem!important}.mt-md-1,.my-md-1{margin-top:.25rem!important}.mr-md-1,.mx-md-1{margin-right:.25rem!important}.mb-md-1,.my-md-1{margin-bottom:.25rem!important}.ml-md-1,.mx-md-1{margin-left:.25rem!important}.m-md-2{margin:.5rem!important}.mt-md-2,.my-md-2{margin-top:.5rem!important}.mr-md-2,.mx-md-2{margin-right:.5rem!important}.mb-md-2,.my-md-2{margin-bottom:.5rem!important}.ml-md-2,.mx-md-2{margin-left:.5rem!important}.m-md-3{margin:1rem!important}.mt-md-3,.my-md-3{margin-top:1rem!important}.mr-md-3,.mx-md-3{margin-right:1rem!important}.mb-md-3,.my-md-3{margin-bottom:1rem!important}.ml-md-3,.mx-md-3{margin-left:1rem!important}.m-md-4{margin:1.5rem!important}.mt-md-4,.my-md-4{margin-top:1.5rem!important}.mr-md-4,.mx-md-4{margin-right:1.5rem!important}.mb-md-4,.my-md-4{margin-bottom:1.5rem!important}.ml-md-4,.mx-md-4{margin-left:1.5rem!important}.m-md-5{margin:3rem!important}.mt-md-5,.my-md-5{margin-top:3rem!important}.mr-md-5,.mx-md-5{margin-right:3rem!important}.mb-md-5,.my-md-5{margin-bottom:3rem!important}.ml-md-5,.mx-md-5{margin-left:3rem!important}.p-md-0{padding:0!important}.pt-md-0,.py-md-0{padding-top:0!important}.pr-md-0,.px-md-0{padding-right:0!important}.pb-md-0,.py-md-0{padding-bottom:0!important}.pl-md-0,.px-md-0{padding-left:0!important}.p-md-1{padding:.25rem!important}.pt-md-1,.py-md-1{padding-top:.25rem!important}.pr-md-1,.px-md-1{padding-right:.25rem!important}.pb-md-1,.py-md-1{padding-bottom:.25rem!important}.pl-md-1,.px-md-1{padding-left:.25rem!important}.p-md-2{padding:.5rem!important}.pt-md-2,.py-md-2{padding-top:.5rem!important}.pr-md-2,.px-md-2{padding-right:.5rem!important}.pb-md-2,.py-md-2{padding-bottom:.5rem!important}.pl-md-2,.px-md-2{padding-left:.5rem!important}.p-md-3{padding:1rem!important}.pt-md-3,.py-md-3{padding-top:1rem!important}.pr-md-3,.px-md-3{padding-right:1rem!important}.pb-md-3,.py-md-3{padding-bottom:1rem!important}.pl-md-3,.px-md-3{padding-left:1rem!important}.p-md-4{padding:1.5rem!important}.pt-md-4,.py-md-4{padding-top:1.5rem!important}.pr-md-4,.px-md-4{padding-right:1.5rem!important}.pb-md-4,.py-md-4{padding-bottom:1.5rem!important}.pl-md-4,.px-md-4{padding-left:1.5rem!important}.p-md-5{padding:3rem!important}.pt-md-5,.py-md-5{padding-top:3rem!important}.pr-md-5,.px-md-5{padding-right:3rem!important}.pb-md-5,.py-md-5{padding-bottom:3rem!important}.pl-md-5,.px-md-5{padding-left:3rem!important}.m-md-n1{margin:-.25rem!important}.mt-md-n1,.my-md-n1{margin-top:-.25rem!important}.mr-md-n1,.mx-md-n1{margin-right:-.25rem!important}.mb-md-n1,.my-md-n1{margin-bottom:-.25rem!important}.ml-md-n1,.mx-md-n1{margin-left:-.25rem!important}.m-md-n2{margin:-.5rem!important}.mt-md-n2,.my-md-n2{margin-top:-.5rem!important}.mr-md-n2,.mx-md-n2{margin-right:-.5rem!important}.mb-md-n2,.my-md-n2{margin-bottom:-.5rem!important}.ml-md-n2,.mx-md-n2{margin-left:-.5rem!important}.m-md-n3{margin:-1rem!important}.mt-md-n3,.my-md-n3{margin-top:-1rem!important}.mr-md-n3,.mx-md-n3{margin-right:-1rem!important}.mb-md-n3,.my-md-n3{margin-bottom:-1rem!important}.ml-md-n3,.mx-md-n3{margin-left:-1rem!important}.m-md-n4{margin:-1.5rem!important}.mt-md-n4,.my-md-n4{margin-top:-1.5rem!important}.mr-md-n4,.mx-md-n4{margin-right:-1.5rem!important}.mb-md-n4,.my-md-n4{margin-bottom:-1.5rem!important}.ml-md-n4,.mx-md-n4{margin-left:-1.5rem!important}.m-md-n5{margin:-3rem!important}.mt-md-n5,.my-md-n5{margin-top:-3rem!important}.mr-md-n5,.mx-md-n5{margin-right:-3rem!important}.mb-md-n5,.my-md-n5{margin-bottom:-3rem!important}.ml-md-n5,.mx-md-n5{margin-left:-3rem!important}.m-md-auto{margin:auto!important}.mt-md-auto,.my-md-auto{margin-top:auto!important}.mr-md-auto,.mx-md-auto{margin-right:auto!important}.mb-md-auto,.my-md-auto{margin-bottom:auto!important}.ml-md-auto,.mx-md-auto{margin-left:auto!important}}@media (min-width:992px){.m-lg-0{margin:0!important}.mt-lg-0,.my-lg-0{margin-top:0!important}.mr-lg-0,.mx-lg-0{margin-right:0!important}.mb-lg-0,.my-lg-0{margin-bottom:0!important}.ml-lg-0,.mx-lg-0{margin-left:0!important}.m-lg-1{margin:.25rem!important}.mt-lg-1,.my-lg-1{margin-top:.25rem!important}.mr-lg-1,.mx-lg-1{margin-right:.25rem!important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem!important}.ml-lg-1,.mx-lg-1{margin-left:.25rem!important}.m-lg-2{margin:.5rem!important}.mt-lg-2,.my-lg-2{margin-top:.5rem!important}.mr-lg-2,.mx-lg-2{margin-right:.5rem!important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem!important}.ml-lg-2,.mx-lg-2{margin-left:.5rem!important}.m-lg-3{margin:1rem!important}.mt-lg-3,.my-lg-3{margin-top:1rem!important}.mr-lg-3,.mx-lg-3{margin-right:1rem!important}.mb-lg-3,.my-lg-3{margin-bottom:1rem!important}.ml-lg-3,.mx-lg-3{margin-left:1rem!important}.m-lg-4{margin:1.5rem!important}.mt-lg-4,.my-lg-4{margin-top:1.5rem!important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem!important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem!important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem!important}.m-lg-5{margin:3rem!important}.mt-lg-5,.my-lg-5{margin-top:3rem!important}.mr-lg-5,.mx-lg-5{margin-right:3rem!important}.mb-lg-5,.my-lg-5{margin-bottom:3rem!important}.ml-lg-5,.mx-lg-5{margin-left:3rem!important}.p-lg-0{padding:0!important}.pt-lg-0,.py-lg-0{padding-top:0!important}.pr-lg-0,.px-lg-0{padding-right:0!important}.pb-lg-0,.py-lg-0{padding-bottom:0!important}.pl-lg-0,.px-lg-0{padding-left:0!important}.p-lg-1{padding:.25rem!important}.pt-lg-1,.py-lg-1{padding-top:.25rem!important}.pr-lg-1,.px-lg-1{padding-right:.25rem!important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem!important}.pl-lg-1,.px-lg-1{padding-left:.25rem!important}.p-lg-2{padding:.5rem!important}.pt-lg-2,.py-lg-2{padding-top:.5rem!important}.pr-lg-2,.px-lg-2{padding-right:.5rem!important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem!important}.pl-lg-2,.px-lg-2{padding-left:.5rem!important}.p-lg-3{padding:1rem!important}.pt-lg-3,.py-lg-3{padding-top:1rem!important}.pr-lg-3,.px-lg-3{padding-right:1rem!important}.pb-lg-3,.py-lg-3{padding-bottom:1rem!important}.pl-lg-3,.px-lg-3{padding-left:1rem!important}.p-lg-4{padding:1.5rem!important}.pt-lg-4,.py-lg-4{padding-top:1.5rem!important}.pr-lg-4,.px-lg-4{padding-right:1.5rem!important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem!important}.pl-lg-4,.px-lg-4{padding-left:1.5rem!important}.p-lg-5{padding:3rem!important}.pt-lg-5,.py-lg-5{padding-top:3rem!important}.pr-lg-5,.px-lg-5{padding-right:3rem!important}.pb-lg-5,.py-lg-5{padding-bottom:3rem!important}.pl-lg-5,.px-lg-5{padding-left:3rem!important}.m-lg-n1{margin:-.25rem!important}.mt-lg-n1,.my-lg-n1{margin-top:-.25rem!important}.mr-lg-n1,.mx-lg-n1{margin-right:-.25rem!important}.mb-lg-n1,.my-lg-n1{margin-bottom:-.25rem!important}.ml-lg-n1,.mx-lg-n1{margin-left:-.25rem!important}.m-lg-n2{margin:-.5rem!important}.mt-lg-n2,.my-lg-n2{margin-top:-.5rem!important}.mr-lg-n2,.mx-lg-n2{margin-right:-.5rem!important}.mb-lg-n2,.my-lg-n2{margin-bottom:-.5rem!important}.ml-lg-n2,.mx-lg-n2{margin-left:-.5rem!important}.m-lg-n3{margin:-1rem!important}.mt-lg-n3,.my-lg-n3{margin-top:-1rem!important}.mr-lg-n3,.mx-lg-n3{margin-right:-1rem!important}.mb-lg-n3,.my-lg-n3{margin-bottom:-1rem!important}.ml-lg-n3,.mx-lg-n3{margin-left:-1rem!important}.m-lg-n4{margin:-1.5rem!important}.mt-lg-n4,.my-lg-n4{margin-top:-1.5rem!important}.mr-lg-n4,.mx-lg-n4{margin-right:-1.5rem!important}.mb-lg-n4,.my-lg-n4{margin-bottom:-1.5rem!important}.ml-lg-n4,.mx-lg-n4{margin-left:-1.5rem!important}.m-lg-n5{margin:-3rem!important}.mt-lg-n5,.my-lg-n5{margin-top:-3rem!important}.mr-lg-n5,.mx-lg-n5{margin-right:-3rem!important}.mb-lg-n5,.my-lg-n5{margin-bottom:-3rem!important}.ml-lg-n5,.mx-lg-n5{margin-left:-3rem!important}.m-lg-auto{margin:auto!important}.mt-lg-auto,.my-lg-auto{margin-top:auto!important}.mr-lg-auto,.mx-lg-auto{margin-right:auto!important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto!important}.ml-lg-auto,.mx-lg-auto{margin-left:auto!important}}@media (min-width:1200px){.m-xl-0{margin:0!important}.mt-xl-0,.my-xl-0{margin-top:0!important}.mr-xl-0,.mx-xl-0{margin-right:0!important}.mb-xl-0,.my-xl-0{margin-bottom:0!important}.ml-xl-0,.mx-xl-0{margin-left:0!important}.m-xl-1{margin:.25rem!important}.mt-xl-1,.my-xl-1{margin-top:.25rem!important}.mr-xl-1,.mx-xl-1{margin-right:.25rem!important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem!important}.ml-xl-1,.mx-xl-1{margin-left:.25rem!important}.m-xl-2{margin:.5rem!important}.mt-xl-2,.my-xl-2{margin-top:.5rem!important}.mr-xl-2,.mx-xl-2{margin-right:.5rem!important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem!important}.ml-xl-2,.mx-xl-2{margin-left:.5rem!important}.m-xl-3{margin:1rem!important}.mt-xl-3,.my-xl-3{margin-top:1rem!important}.mr-xl-3,.mx-xl-3{margin-right:1rem!important}.mb-xl-3,.my-xl-3{margin-bottom:1rem!important}.ml-xl-3,.mx-xl-3{margin-left:1rem!important}.m-xl-4{margin:1.5rem!important}.mt-xl-4,.my-xl-4{margin-top:1.5rem!important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem!important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem!important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem!important}.m-xl-5{margin:3rem!important}.mt-xl-5,.my-xl-5{margin-top:3rem!important}.mr-xl-5,.mx-xl-5{margin-right:3rem!important}.mb-xl-5,.my-xl-5{margin-bottom:3rem!important}.ml-xl-5,.mx-xl-5{margin-left:3rem!important}.p-xl-0{padding:0!important}.pt-xl-0,.py-xl-0{padding-top:0!important}.pr-xl-0,.px-xl-0{padding-right:0!important}.pb-xl-0,.py-xl-0{padding-bottom:0!important}.pl-xl-0,.px-xl-0{padding-left:0!important}.p-xl-1{padding:.25rem!important}.pt-xl-1,.py-xl-1{padding-top:.25rem!important}.pr-xl-1,.px-xl-1{padding-right:.25rem!important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem!important}.pl-xl-1,.px-xl-1{padding-left:.25rem!important}.p-xl-2{padding:.5rem!important}.pt-xl-2,.py-xl-2{padding-top:.5rem!important}.pr-xl-2,.px-xl-2{padding-right:.5rem!important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem!important}.pl-xl-2,.px-xl-2{padding-left:.5rem!important}.p-xl-3{padding:1rem!important}.pt-xl-3,.py-xl-3{padding-top:1rem!important}.pr-xl-3,.px-xl-3{padding-right:1rem!important}.pb-xl-3,.py-xl-3{padding-bottom:1rem!important}.pl-xl-3,.px-xl-3{padding-left:1rem!important}.p-xl-4{padding:1.5rem!important}.pt-xl-4,.py-xl-4{padding-top:1.5rem!important}.pr-xl-4,.px-xl-4{padding-right:1.5rem!important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem!important}.pl-xl-4,.px-xl-4{padding-left:1.5rem!important}.p-xl-5{padding:3rem!important}.pt-xl-5,.py-xl-5{padding-top:3rem!important}.pr-xl-5,.px-xl-5{padding-right:3rem!important}.pb-xl-5,.py-xl-5{padding-bottom:3rem!important}.pl-xl-5,.px-xl-5{padding-left:3rem!important}.m-xl-n1{margin:-.25rem!important}.mt-xl-n1,.my-xl-n1{margin-top:-.25rem!important}.mr-xl-n1,.mx-xl-n1{margin-right:-.25rem!important}.mb-xl-n1,.my-xl-n1{margin-bottom:-.25rem!important}.ml-xl-n1,.mx-xl-n1{margin-left:-.25rem!important}.m-xl-n2{margin:-.5rem!important}.mt-xl-n2,.my-xl-n2{margin-top:-.5rem!important}.mr-xl-n2,.mx-xl-n2{margin-right:-.5rem!important}.mb-xl-n2,.my-xl-n2{margin-bottom:-.5rem!important}.ml-xl-n2,.mx-xl-n2{margin-left:-.5rem!important}.m-xl-n3{margin:-1rem!important}.mt-xl-n3,.my-xl-n3{margin-top:-1rem!important}.mr-xl-n3,.mx-xl-n3{margin-right:-1rem!important}.mb-xl-n3,.my-xl-n3{margin-bottom:-1rem!important}.ml-xl-n3,.mx-xl-n3{margin-left:-1rem!important}.m-xl-n4{margin:-1.5rem!important}.mt-xl-n4,.my-xl-n4{margin-top:-1.5rem!important}.mr-xl-n4,.mx-xl-n4{margin-right:-1.5rem!important}.mb-xl-n4,.my-xl-n4{margin-bottom:-1.5rem!important}.ml-xl-n4,.mx-xl-n4{margin-left:-1.5rem!important}.m-xl-n5{margin:-3rem!important}.mt-xl-n5,.my-xl-n5{margin-top:-3rem!important}.mr-xl-n5,.mx-xl-n5{margin-right:-3rem!important}.mb-xl-n5,.my-xl-n5{margin-bottom:-3rem!important}.ml-xl-n5,.mx-xl-n5{margin-left:-3rem!important}.m-xl-auto{margin:auto!important}.mt-xl-auto,.my-xl-auto{margin-top:auto!important}.mr-xl-auto,.mx-xl-auto{margin-right:auto!important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto!important}.ml-xl-auto,.mx-xl-auto{margin-left:auto!important}}.text-monospace{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace!important}.text-justify{text-align:justify!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}@media (min-width:576px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-light{font-weight:300!important}.font-weight-lighter{font-weight:lighter!important}.font-weight-normal{font-weight:400!important}.font-weight-bold{font-weight:700!important}.font-weight-bolder{font-weight:bolder!important}.font-italic{font-style:italic!important}.text-white{color:#fff!important}.text-primary{color:#0b76de!important}a.text-primary:focus,a.text-primary:hover{color:#074f95!important}.text-secondary{color:#344962!important}a.text-secondary:focus,a.text-secondary:hover{color:#192430!important}.text-success{color:#28a745!important}a.text-success:focus,a.text-success:hover{color:#19692c!important}.text-info{color:#17a2b8!important}a.text-info:focus,a.text-info:hover{color:#0f6674!important}.text-warning{color:#ffc107!important}a.text-warning:focus,a.text-warning:hover{color:#ba8b00!important}.text-danger{color:#dc3545!important}a.text-danger:focus,a.text-danger:hover{color:#a71d2a!important}.text-light{color:#38aecc!important}a.text-light:focus,a.text-light:hover{color:#257c92!important}.text-dark{color:#1a2b3f!important}a.text-dark:focus,a.text-dark:hover{color:#040609!important}.text-body{color:#212529!important}.text-muted{color:#6c757d!important}.text-black-50{color:rgba(0,0,0,.5)!important}.text-white-50{color:hsla(0,0%,100%,.5)!important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.text-decoration-none{text-decoration:none!important}.text-break{word-break:break-word!important;overflow-wrap:break-word!important}.text-reset{color:inherit!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media print{*,:after,:before{text-shadow:none!important;-webkit-box-shadow:none!important;box-shadow:none!important}a:not(.btn){text-decoration:underline}abbr[title]:after{content:" (" attr(title) ")"}pre{white-space:pre-wrap!important}blockquote,pre{border:1px solid #adb5bd;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}.container,body{min-width:992px!important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #dee2e6!important}.table-dark{color:inherit}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#777}.table .thead-dark th{color:inherit;border-color:#777}}body{background-color:#f8fafb;padding-top:70px;font-family:\\5FAE\8F6F\96C5\9ED1}input.form-control{height:48px!important}input.form-control:focus{outline:none;-webkit-box-shadow:none;box-shadow:none}button.btn{height:48px}a{color:#777}a:hover{text-decoration:none}.display-none{display:none}.c-primary{color:#0b76de!important}.c-fff{color:#fff!important}.c-2{color:#777!important}.bg-fff{background-color:#fff}.bg-1{background-color:#202020}.bg-f6{background-color:#f6f6f6}.bg-dark{background-color:#323232}.mb-10{margin-bottom:10px}.br-8{border-radius:8px}.br-50{border-radius:50%}.br-12{border-radius:12px}.br-top-8{border-top-left-radius:8px;border-top-right-radius:8px}.br-bottom-8{border-bottom-left-radius:8px;border-bottom-right-radius:8px}.border-f7f7f7{border-color:#eee!important}.pt-10px{padding-top:10px}.pb-10px{padding-bottom:10px}.pb-24px{padding-bottom:24px}.mt-120px{margin-top:120px}.fw-400{font-weight:400}.fs-14px{font-size:14px}.fs-18px{font-size:18px}.fs-24px{font-size:24px}.box-shadow1{-webkit-box-shadow:0 2px 20px 0 rgba(0,0,0,.05);box-shadow:0 2px 20px 0 rgba(0,0,0,.05)}.t1:hover{opacity:1!important;-webkit-box-shadow:rgba(45,45,45,.05) 0 2px 2px,rgba(49,49,49,.05) 0 4px 4px,rgba(42,42,42,.05) 0 8px 8px,rgba(32,32,32,.05) 0 16px 16px;box-shadow:0 2px 2px rgba(45,45,45,.05),0 4px 4px rgba(49,49,49,.05),0 8px 8px rgba(42,42,42,.05),0 16px 16px rgba(32,32,32,.05);transform:translateY(-4px);-webkit-transform:translateY(-4px);-moz-transform:translateY(-4px);-o-transform:translateY(-4px)}footer.footer-box{width:100%;height:auto;background:#0e0c1e;padding-top:30px}footer.footer-box p{font-size:14px;font-weight:400;margin-bottom:30px}footer.footer-box p,footer.footer-box p a{color:hsla(0,0%,100%,.3)}.auth-box{position:fixed;top:0;left:0;right:0;bottom:0;z-index:1111;background-color:rgba(0,0,0,.5);display:none}.auth-box #auth-box-content{background-color:#fff;padding:30px;border-radius:8px}.auth-box #auth-box-content .login-box .login-box-title{line-height:24px}.auth-box #auth-box-content .login-box .login-box-title .title{font-size:24px;font-weight:600;color:#333}.auth-box #auth-box-content .login-box .login-box-title .close-auth-box{float:right;line-height:24px;cursor:pointer}.auth-box #auth-box-content .login-box .login-box-title .close-auth-box:hover{-webkit-transform:rotate(1turn);transform:rotate(1turn);-webkit-transition:-webkit-transform 1s linear;transition:-webkit-transform 1s linear;transition:transform 1s linear;transition:transform 1s linear,-webkit-transform 1s linear}.auth-box #auth-box-content .login-box .login-box-menu{text-align:right;font-size:14px;font-weight:400;color:#0b76de;line-height:14px;padding-top:36px;padding-bottom:36px}.auth-box #auth-box-content .login-box .login-remember{font-size:14px;color:#999;line-height:14px}.auth-box #auth-box-content .login-box .login-remember .show-find-password{border-left:2px solid #d8d8d8;padding-left:5px;margin-left:5px;line-height:14px;cursor:pointer}.auth-box #auth-box-content .login-box .login-remember .show-register-box{cursor:pointer}.auth-box #auth-box-content .login-box .auth-box-errors{font-size:14px;font-weight:400;color:#ff4040;line-height:14px}.auth-box #auth-box-content .login-box .socialite-item{display:inline-block;width:44px;height:44px;margin-right:10px}.auth-box .show-login-box{cursor:pointer}.auth-box .cursor-pointer{cursor:pointer;color:#0b76de;opacity:.6}.auth-box .cursor-pointer:hover{opacity:1}.nav-box{position:absolute;top:0;left:0;right:0;z-index:1000;-webkit-box-shadow:0 4px 10px 0 hsla(240,3%,61%,.2);box-shadow:0 4px 10px 0 hsla(240,3%,61%,.2);padding-left:0;padding-right:0}.nav-box nav.navbar{padding:0}.nav-box nav .navbar-brand{margin-left:2.5%;margin-right:0}.nav-box nav .navbar-nav{margin-left:4.1%}.nav-box nav .nav-item{margin-right:34px;font-size:16px}.nav-box nav .nav-item a{color:#333}.nav-box nav .nav-item a.active{color:#0b76de;font-weight:800}.nav-box nav .nav-item a:hover{color:#0b76de}.nav-box nav .search-input{border-top-left-radius:20px;border-bottom-left-radius:20px;font-size:14px;height:40px!important}.nav-box nav .search-input::-webkit-input-placeholder{color:#999}.nav-box nav .search-button{border-top-right-radius:20px;border-bottom-right-radius:20px;height:40px!important}.nav-box nav .role-vip-button{width:80px;text-align:center;font-size:14px;font-weight:400;color:#e1a500;padding-top:13px;padding-bottom:13px}.nav-box nav .role-vip-button p{margin-bottom:0}.nav-box nav .message-button.active,.nav-box nav .message-button:hover,.nav-box nav .role-vip-button.active,.nav-box nav .role-vip-button:hover,.nav-box nav .user-avatar-button:hover{opacity:.6;text-decoration:none}.nav-box nav .message-button{position:relative;width:80px;text-align:center;font-size:14px;font-weight:400;color:#999;padding-top:13px;padding-bottom:13px}.nav-box nav .message-button p{margin-bottom:0}.nav-box nav .message-button .message-count{position:absolute;top:13px;right:13px;z-index:11;border-radius:6px;background-color:#ff4040;color:#fff;font-size:10px;padding-left:4px;padding-right:4px}.nav-box nav .user-avatar{margin-right:2.6%}.nav-box nav .user-avatar .user-avatar-button{display:inline-block;width:80px;height:auto;text-align:center;padding:15px 20px;cursor:pointer}.nav-box nav .user-avatar .user-avatar-button img{border-radius:20px}.nav-box nav .user-avatar .dropdown-menu{padding-top:0;padding-bottom:0;min-width:126px;left:-63px}.nav-box nav .user-avatar .dropdown-menu .dropdown-item{height:48px;width:126px!important;line-height:48px;font-size:14px;font-weight:400;padding:0 17px!important}.nav-box nav .user-avatar .dropdown-menu .dropdown-item:hover{background-color:rgba(11,118,222,.1)}.nav-box nav .user-avatar .dropdown-menu .dropdown-item.logout span{margin-left:-3px}.nav-box nav .user-avatar .dropdown-menu .dropdown-item img{margin-right:10px;margin-top:-1px}.nav-box nav .user-avatar .dropdown-menu .dropdown-item img.avatar{border-radius:10px}.nav-box nav .user-avatar .dropdown-menu .dropdown-item.vip{color:#e1a500}.nav-box nav .login-button,.nav-box nav .login-button-hover{width:80px;height:34px;border-radius:17px;background-color:#0b76de;text-align:center;line-height:34px;font-size:14px;font-weight:400;color:#fff;margin-left:10px;cursor:pointer;margin-right:2.6%}.nav-box nav .login-button:hover{text-decoration:none;-webkit-box-shadow:0 2px 4px 0 #e5e5e5;box-shadow:0 2px 4px 0 #e5e5e5}.nav-box nav .login-button-hover{background-color:#fff;color:#0b76de}.nav-box nav .login-button-hover:hover{-webkit-box-shadow:none;box-shadow:none;text-decoration:none}.member-nav-box{-webkit-box-shadow:0 0;box-shadow:0 0;background-color:#0b76de}.member-nav-box nav .nav-item a{color:#fff;opacity:.4}.member-nav-box nav .nav-item a:hover{color:#fff;opacity:1}.member-nav-box nav .message-button,.member-nav-box nav .message-button:hover{color:#fff}.member-nav-box nav .role-vip-button{opacity:.6}.member-nav-box nav .role-vip-button:hover{opacity:1}.member-nav-box nav .message-button p{opacity:.4}.member-nav-box nav .message-button:hover p{opacity:1}.slider-box{padding-top:30px;height:auto;background-color:#fff}.slider-box img{border-top-left-radius:8px;border-top-right-radius:8px}.course-menu-box{width:100%;height:72px;background:#fff;-webkit-box-shadow:0 4px 8px 0 #e5e5e5;box-shadow:0 4px 8px 0 #e5e5e5;border-radius:8px;margin-bottom:30px;padding-left:30px;padding-right:15px;margin-top:30px}.course-menu-box .menu-item{width:124px;height:72px;float:left;line-height:72px;font-size:16px;color:#666;cursor:pointer}.course-menu-box .menu-item a{color:#666}.course-menu-box .menu-item.active{font-weight:600}.course-menu-box .menu-item.active a{padding-bottom:21px;color:#0b76de;border-bottom:4px solid #0b76de}.course-menu-box .menu-item:hover{font-weight:600}.course-menu-box .menu-item:hover a{color:#0b76de;text-decoration:none}.category-box{width:100%;height:auto;float:left;padding-left:15px;padding-right:15px;margin-bottom:10px}.category-box .category-box-item{display:inline-block;width:auto;height:26px;line-height:26px;font-size:14px;font-weight:400;color:#999;padding-left:15px;padding-right:15px;margin-right:23px;margin-bottom:20px}.category-box .category-box-item:hover{text-decoration:none}.category-box .category-box-item.active,.category-box .category-box-item:hover{background-color:rgba(11,118,222,.2);border-radius:15px;color:#0b76de}.course-list-box{width:100%;height:auto;float:left}.course-list-box .course-list-item{width:280px;height:298px;float:left;margin-right:27px;margin-bottom:40px;background-color:#fff;border-radius:8px}.course-list-box .course-list-item:hover{-webkit-box-shadow:0 4px 20px 0 rgba(0,0,0,.08);box-shadow:0 4px 20px 0 rgba(0,0,0,.08)}.course-list-box .course-list-item .course-thumb{width:280px;height:210px;float:left}.course-list-box .course-list-item .course-thumb img{border-top-right-radius:8px;border-top-left-radius:8px}.course-list-box .course-list-item .course-title{width:100%;height:46px;float:left;background-color:#fff;padding-left:10px;padding-right:10px;line-height:46px;font-size:16px;word-break:keep-all;white-space:nowrap;overflow:hidden;color:#333}.course-list-box .course-list-item .course-category{width:100%;height:auto;float:left;background-color:#fff;padding-left:10px;padding-right:10px;padding-bottom:15px;border-bottom-right-radius:8px;border-bottom-left-radius:8px}.course-list-box .course-list-item .course-category .video-count-label{font-size:14px;color:#666;line-height:22px}.course-list-box .course-list-item .course-category .category-label{float:right;padding-left:8px;padding-right:8px;font-size:10px;line-height:22px;color:#fff;background-color:hsla(0,0%,40%,.4);border-radius:4px}.course-list-box .course-list-item.last{margin-right:-1px}.pagination{padding-top:20px;padding-bottom:20px}.friend-link-box{background-color:#140e23}.friend-link-box .friend-link-box-logo{padding-top:50px;padding-bottom:50px}.friend-link-box .friend-link-box-link{padding-bottom:50px}.friend-link-box .friend-link-box-link a{font-size:14px;font-weight:400;color:hsla(0,0%,100%,.6);margin-right:50px}.friend-link-box .friend-link-box-link a:hover{color:#fff;text-decoration:none}.video-item{cursor:pointer;-webkit-transition:opacity .4s ease-out,-webkit-box-shadow .3s ease-out,-webkit-transform .3s ease-out;transition:opacity .4s ease-out,-webkit-box-shadow .3s ease-out,-webkit-transform .3s ease-out;transition:box-shadow .3s ease-out,transform .3s ease-out,opacity .4s ease-out;transition:box-shadow .3s ease-out,transform .3s ease-out,opacity .4s ease-out,-webkit-box-shadow .3s ease-out,-webkit-transform .3s ease-out;-webkit-transition-delay:.1s;transition-delay:.1s;-webkit-transform:translateZ(0);transform:translateZ(0)}.video-item .video-item-box{width:100%;height:auto;float:right}.video-item .video-item-box .video-thumb-direct{width:100%;height:192px;float:left}.video-item .video-item-box .video-thumb{width:100%;height:192px;float:left;border-top-left-radius:8px;border-top-right-radius:8px;background-color:rgba(0,0,0,.6)}.video-item .video-item-box .video-thumb .video-thumb-img{border-top-left-radius:8px;border-top-right-radius:8px;position:relative;z-index:-1;width:100%;height:192px;float:left;color:#fff;text-align:center}.video-item .video-item-box .video-title{width:100%;height:auto;float:left;font-size:14px}.video-item .video-item-box .video-title span{margin:5px 10px 0}.video-item .video-item-box .video-extra{width:100%;height:auto;float:left;font-size:14px;line-height:20px}.video-item .video-item-box .video-extra span{margin:5px 10px 0}.video-item .video-item-box .video-list-box{width:100%;height:auto;float:left;border-top:1px dashed #f6f6f6}.video-item .video-item-box .video-list-box .video-list-box-item{width:100%;float:left;height:30px;line-height:30px;font-size:12px}.video-item .video-item-box .video-list-box .video-list-box-item div{height:30px}.video-item:hover .video-thumb{background-color:transparent}.role-item{cursor:pointer}.role-item .role-item-box{width:100%;height:auto;float:left}.role-item .role-item-box .name{font-size:36px;color:#212529}.role-item .role-item-box .price{font-size:36px;font-weight:800;color:#212529}.role-item .role-item-box .desc-item{font-size:12px;padding:0;margin-bottom:5px;color:#777}.user-banner-menu{background-color:#fff;line-height:36px}.user-banner-menu a{padding-left:15px;padding-right:15px;padding-bottom:15px}.user-banner-menu a.active,.user-banner-menu a:hover{text-decoration:none;color:#0b76de;border-bottom:3px solid #0b76de}.course-video-list{width:100%;height:auto;float:left}.course-video-list dd:hover{background-color:#0b76de}.course-video-list dd:hover a{color:#fff}.course-video-list dd.active a{color:#fff;font-weight:800;background-color:#0b76de}.course-category-item.active{color:#0b76de;font-size:1.2rem;font-weight:800}.comment-box .comment-user span.nickname{font-size:14px;line-height:30px}.comment-box .comment-user .v-tag{font-size:10px}.comment-box .comment-user .date{font-size:10px;line-height:18px}.comment-box .comment-content{padding-left:65px}.course-detail-banner,.course-detail-banner .breadcrumb{background-color:#1a1a1a}.course-detail-banner .breadcrumb a:hover{color:#999}.course-detail{color:#fff;position:relative;background-color:#242424}.course-detail .course-detail-thumb{width:510px;height:384px;float:left}.course-detail .course-detail-thumb-sm{display:none;width:100%;height:auto}.course-detail .course-detail-thumb-sm img{max-width:100%;height:auto}.course-detail .course-detail-box{padding:10px 20px}.course-detail .course-detail-box .course-detail-title h3{font-size:22px;font-weight:400;margin-bottom:10px;margin-top:10px}.course-detail .course-detail-box .course-detail-desc,.course-detail .course-detail-box .course-detail-info{color:#999}.course-detail .course-detail-box .course-detail-price{position:absolute;right:2%;height:auto;color:#999;bottom:0;padding-bottom:10px}.course-fixed-menu{position:fixed;top:40%;right:5%;width:60px;height:auto;z-index:11}.course-fixed-menu .course-fixed-menu-item{display:block;width:60px;height:60px;border-radius:30px;font-size:16px;text-align:center;line-height:60px;float:left;margin-bottom:10px;border:1px solid #fbfbfb;background-color:#fff;-webkit-box-shadow:0 4px 20px 0 rgba(0,0,0,.08);box-shadow:0 4px 20px 0 rgba(0,0,0,.08)}@media (max-width:767.98px){.course-fixed-menu,.index-course-banner{display:none}.user-banner-menu{width:100%}.user-banner-menu a{padding-right:0;padding-left:0;padding-bottom:5px;display:inline-block;width:100%;float:left}.user-banner-menu a.active{border-bottom:0}}.announcement-title{padding-top:30px;padding-bottom:30px;border-bottom:1px dashed #ddd;text-align:center}.announcement-title .announcement-intro{font-size:14px;color:#bbb}.announcement-content{padding:10px 20px}.member-menu-parent{background-color:#0b76de}.member-menu-parent .member-menu{padding-top:221px;background-image:url("/images/member-bg.png");background-position:bottom;background-repeat:no-repeat}.member-menu-parent .member-menu .member-menu-box{width:100%;height:71px;float:left;padding-top:7px}.member-menu-parent .member-menu .member-menu-box a{display:block;width:auto;height:24px;float:left;color:#fff;margin-right:60px;opacity:.4}.member-menu-parent .member-menu .member-menu-box a img{float:left}.member-menu-parent .member-menu .member-menu-box a .member-menu-item-title{display:inline-block;float:left;margin-left:10px;font-size:16px;font-weight:400}.member-menu-parent .member-menu .member-menu-box a .member-menu-item-title.vip{color:#ffdd34}.member-menu-parent .member-menu .member-menu-box a.active,.member-menu-parent .member-menu .member-menu-box a:hover{text-decoration:none;opacity:1}.member-menu-parent .member-menu .member-menu-box a.active .dot-box{display:block}.member-menu-parent .member-menu .member-menu-box a .dot-box{display:none;width:100%;height:6px;float:left;text-align:center;line-height:6px;padding-top:16px}.member-menu-parent .member-menu .member-menu-box a .dot-box .dot{display:inline-block;width:6px;height:6px;border-radius:3px;background-color:#fff;opacity:.6;line-height:6px}.member-dashboard{margin-top:30px;margin-bottom:30px;padding:40px;background-color:#fff;-webkit-box-shadow:0 4px 8px 0 #e5e5e5;box-shadow:0 4px 8px 0 #e5e5e5;border-radius:8px}.member-dashboard .user-info{width:350px;height:312px;float:left;background:#0b76de;border-radius:8px 0 0 8px;text-align:center;padding-top:40px}.member-dashboard .user-info .user-avatar{margin-bottom:40px}.member-dashboard .user-info .user-avatar img{border-radius:50px}.member-dashboard .user-info .user-nickname{font-size:18px;font-weight:400;color:#fff;line-height:18px;margin-bottom:40px}.member-dashboard .user-info .user-nickname .nickname-edit-button{display:inline-block;margin-left:15px;width:18px;height:18px;opacity:.6;line-height:18px}.member-dashboard .user-info .user-nickname .nickname-edit-button:hover{opacity:1}.member-dashboard .user-info .user-option .change-avatar-button{text-align:center;background:#ffcb00;border-radius:100px;font-size:14px;font-weight:400;color:#0b76de;line-height:14px;padding:10px 16px}.member-dashboard .user-info .user-option .change-avatar-button:hover{text-decoration:none;opacity:.8}.member-dashboard .user-vip{width:350px;height:312px;float:left;background:-webkit-gradient(linear,left top,left bottom,from(#323232),to(#2a2929));background:linear-gradient(180deg,#323232,#2a2929);border-radius:0 8px 8px 0;padding-top:40px;text-align:center}.member-dashboard .user-vip .vip-logo{margin-bottom:40px}.member-dashboard .user-vip .vip-logo-text{font-size:16px;font-weight:400;color:#ffcb00;line-height:16px;margin-bottom:41px;margin-top:1px}.member-dashboard .user-vip .vip-option .vip-option-button{text-align:center;background:#ffcb00;border-radius:100px;font-size:14px;font-weight:400;color:#323232;line-height:14px;padding:10px 16px}.member-dashboard .user-vip .vip-option .vip-option-button:hover{text-decoration:none;opacity:.8}.member-dashboard .user-socialite{width:360px;height:auto;float:left;margin-left:60px}.member-dashboard .user-socialite .alert-info{width:360px;height:42px;background:#fff9d7;-webkit-box-shadow:0 2px 4px 0 #e5e5e5;box-shadow:0 2px 4px 0 #e5e5e5;border-radius:21px;font-size:16px;font-weight:400;color:#de7a0b;line-height:22px;margin-bottom:20px;padding:10px 12px}.member-dashboard .user-socialite .option-item{width:100%;height:46px;float:left;padding-top:10px;padding-bottom:10px;line-height:26px;display:-webkit-box;display:-ms-flexbox;display:flex}.member-dashboard .user-socialite .option-item .option-text{display:block;width:120px;height:16px;float:left;font-size:16px;font-weight:400;color:#999;margin-right:30px}.member-dashboard .user-socialite .option-item .option-value{display:block;-webkit-box-flex:1;-ms-flex:1;flex:1;height:16px;float:left;font-size:16px;font-weight:400;color:#333}.member-dashboard .user-socialite .option-item .option-button{display:block;width:58px;height:26px;float:right;background:#0b76de;border-radius:100px;font-size:14px;font-weight:400;color:#fff;line-height:14px;padding:6px 15px;text-align:center}.member-dashboard .user-socialite .option-item .option-button:hover{text-decoration:none;opacity:.8}.invite-user-box,.member-message-box,.my-orders{width:100%;height:auto;float:left;margin-top:16px;margin-bottom:80px}.invite-user-box .invite-user-item,.invite-user-box .member-message-item,.invite-user-box .orders-item,.member-message-box .invite-user-item,.member-message-box .member-message-item,.member-message-box .orders-item,.my-orders .invite-user-item,.my-orders .member-message-item,.my-orders .orders-item{position:relative;width:100%;height:72px;float:left;line-height:24px;padding:24px 30px;background-color:#fff;margin-bottom:1px}.invite-user-box .invite-user-item .red-dot,.invite-user-box .member-message-item .red-dot,.invite-user-box .orders-item .red-dot,.member-message-box .invite-user-item .red-dot,.member-message-box .member-message-item .red-dot,.member-message-box .orders-item .red-dot,.my-orders .invite-user-item .red-dot,.my-orders .member-message-item .red-dot,.my-orders .orders-item .red-dot{position:absolute;top:32px;left:11px;width:8px;height:8px;background:#ff4040;border-radius:4px;z-index:11}.invite-user-box .invite-user-item img,.invite-user-box .member-message-item img,.invite-user-box .orders-item img,.member-message-box .invite-user-item img,.member-message-box .member-message-item img,.member-message-box .orders-item img,.my-orders .invite-user-item img,.my-orders .member-message-item img,.my-orders .orders-item img{float:left}.invite-user-box .invite-user-item .invite-user-item-nickname,.invite-user-box .invite-user-item .message-content,.invite-user-box .invite-user-item .order-goods-title,.invite-user-box .member-message-item .invite-user-item-nickname,.invite-user-box .member-message-item .message-content,.invite-user-box .member-message-item .order-goods-title,.invite-user-box .orders-item .invite-user-item-nickname,.invite-user-box .orders-item .message-content,.invite-user-box .orders-item .order-goods-title,.member-message-box .invite-user-item .invite-user-item-nickname,.member-message-box .invite-user-item .message-content,.member-message-box .invite-user-item .order-goods-title,.member-message-box .member-message-item .invite-user-item-nickname,.member-message-box .member-message-item .message-content,.member-message-box .member-message-item .order-goods-title,.member-message-box .orders-item .invite-user-item-nickname,.member-message-box .orders-item .message-content,.member-message-box .orders-item .order-goods-title,.my-orders .invite-user-item .invite-user-item-nickname,.my-orders .invite-user-item .message-content,.my-orders .invite-user-item .order-goods-title,.my-orders .member-message-item .invite-user-item-nickname,.my-orders .member-message-item .message-content,.my-orders .member-message-item .order-goods-title,.my-orders .orders-item .invite-user-item-nickname,.my-orders .orders-item .message-content,.my-orders .orders-item .order-goods-title{width:auto;height:24px;display:inline-block;float:left;font-size:14px;font-weight:400;color:#333;margin-left:15px}.invite-user-box .invite-user-item .invite-user-item-date,.invite-user-box .invite-user-item .member-list-item-right,.invite-user-box .invite-user-item .member-message-date,.invite-user-box .member-message-item .invite-user-item-date,.invite-user-box .member-message-item .member-list-item-right,.invite-user-box .member-message-item .member-message-date,.invite-user-box .orders-item .invite-user-item-date,.invite-user-box .orders-item .member-list-item-right,.invite-user-box .orders-item .member-message-date,.member-message-box .invite-user-item .invite-user-item-date,.member-message-box .invite-user-item .member-list-item-right,.member-message-box .invite-user-item .member-message-date,.member-message-box .member-message-item .invite-user-item-date,.member-message-box .member-message-item .member-list-item-right,.member-message-box .member-message-item .member-message-date,.member-message-box .orders-item .invite-user-item-date,.member-message-box .orders-item .member-list-item-right,.member-message-box .orders-item .member-message-date,.my-orders .invite-user-item .invite-user-item-date,.my-orders .invite-user-item .member-list-item-right,.my-orders .invite-user-item .member-message-date,.my-orders .member-message-item .invite-user-item-date,.my-orders .member-message-item .member-list-item-right,.my-orders .member-message-item .member-message-date,.my-orders .orders-item .invite-user-item-date,.my-orders .orders-item .member-list-item-right,.my-orders .orders-item .member-message-date{float:right;width:126px;font-size:14px;font-weight:400;color:#999;line-height:24px;margin-right:60px}.invite-user-box .invite-user-item .member-message-read,.invite-user-box .invite-user-item .member-message-unread,.invite-user-box .member-message-item .member-message-read,.invite-user-box .member-message-item .member-message-unread,.invite-user-box .orders-item .member-message-read,.invite-user-box .orders-item .member-message-unread,.member-message-box .invite-user-item .member-message-read,.member-message-box .invite-user-item .member-message-unread,.member-message-box .member-message-item .member-message-read,.member-message-box .member-message-item .member-message-unread,.member-message-box .orders-item .member-message-read,.member-message-box .orders-item .member-message-unread,.my-orders .invite-user-item .member-message-read,.my-orders .invite-user-item .member-message-unread,.my-orders .member-message-item .member-message-read,.my-orders .member-message-item .member-message-unread,.my-orders .orders-item .member-message-read,.my-orders .orders-item .member-message-unread{float:right;width:28px;font-size:14px;font-weight:400;color:#ccc;line-height:24px}.invite-user-box .invite-user-item .member-message-unread,.invite-user-box .member-message-item .member-message-unread,.invite-user-box .orders-item .member-message-unread,.member-message-box .invite-user-item .member-message-unread,.member-message-box .member-message-item .member-message-unread,.member-message-box .orders-item .member-message-unread,.my-orders .invite-user-item .member-message-unread,.my-orders .member-message-item .member-message-unread,.my-orders .orders-item .member-message-unread{color:#0b76de}.invite-user-box .invite-user-item .order-goods-status,.invite-user-box .member-message-item .order-goods-status,.invite-user-box .orders-item .order-goods-status,.member-message-box .invite-user-item .order-goods-status,.member-message-box .member-message-item .order-goods-status,.member-message-box .orders-item .order-goods-status,.my-orders .invite-user-item .order-goods-status,.my-orders .member-message-item .order-goods-status,.my-orders .orders-item .order-goods-status{margin-right:0}.promo_code_banner{width:100%;height:auto;float:left;margin-top:30px;margin-bottom:30px}.promo_code_banner .promo_code_balance{width:527px;height:280px;float:left;background:#323232;border-top-left-radius:8px;border-bottom-left-radius:8px}.promo_code_banner .promo_code_balance .promo_code_code{width:100%;height:auto;float:left;margin-top:70px;line-height:30px;margin-bottom:78px}.promo_code_banner .promo_code_balance .promo_code_code .title{width:90px;font-size:18px;font-weight:400;color:hsla(0,0%,100%,.6);margin-left:80px}.promo_code_banner .promo_code_balance .promo_code_code .code{font-size:30px;font-weight:600;color:#fff;margin-left:50px}.promo_code_banner .promo_code_balance .promo_code_balance_info{width:100%;height:auto;float:left;line-height:30px}.promo_code_banner .promo_code_balance .promo_code_balance_info .title{width:90px;font-size:18px;font-weight:400;color:hsla(0,0%,100%,.6);margin-left:80px}.promo_code_banner .promo_code_balance .promo_code_balance_info .balance{font-size:30px;font-weight:600;color:#fff;margin-left:50px}.promo_code_banner .promo_code_balance .promo_code_balance_info .balance small{font-size:18px;font-weight:600}.promo_code_banner .promo_code_balance .promo_code_balance_info .withdraw-button{display:inline-block;width:88px;height:34px;margin-left:46px;background:#ffdd34;border-radius:100px;text-align:center;font-size:14px;font-weight:400;color:#323232;line-height:34px}.promo_code_banner .promo_code_balance .promo_code_balance_info .withdraw-button:hover{text-decoration:none;opacity:.6}.promo_code_banner .promo_code_intro{width:673px;height:280px;float:left;background:#ffdd34;border-bottom-right-radius:8px;border-top-right-radius:8px}.promo_code_banner .promo_code_intro .promo_code_intro_title{width:100%;height:auto;float:left;margin-top:30px;line-height:66px;font-size:18px;font-weight:400;color:#242323}.promo_code_banner .promo_code_intro .promo_code_intro_title img{margin-left:50px;margin-right:20px}.promo_code_banner .promo_code_intro .promo_code_intro_content{width:100%;height:auto;float:left;padding-left:50px;margin-top:20px;font-size:14px;font-weight:400;color:#242323;line-height:32px}.promo_code_banner .promo_code_intro .promo_code_intro_content p{margin-bottom:5px}.my-courses{margin-top:30px}.my-videos{margin-top:30px;width:100%;height:auto;float:left}.my-videos .my-videos-item{width:100%;height:auto;float:left;background-color:#fff;margin-bottom:30px;border-radius:8px}.my-videos .my-videos-item .course-title{width:100%;height:auto;float:left;padding:30px 20px;font-size:16px;font-weight:500;color:#333;line-height:16px}.my-videos .my-videos-item .course-title .course-info-link{float:right;font-size:16px;font-weight:400;color:#0b76de;line-height:16px}.my-videos .my-videos-item .course-title .course-info-link:hover{text-decoration:none}.my-videos .my-videos-item .video-item{display:block;width:100%;height:auto;float:left;padding:15px 30px}.my-videos .my-videos-item .video-item .player{display:inline-block;width:24px;height:24px;float:left;margin-right:15px}.my-videos .my-videos-item .video-item .video-title{display:inline-block;float:left;font-size:16px;font-weight:400;color:#333}.my-videos .my-videos-item .video-item .duration{float:right;font-size:16px;font-weight:400;color:#999}.course-banner{width:100%;height:264px;background-image:url("/images/member-bg.png");background-position:bottom;background-repeat:no-repeat;padding-top:70px;background-color:#0b76de}.course-banner .nav-bar{height:14px;font-size:14px;font-weight:400;line-height:14px;margin-bottom:30px}.course-banner .nav-bar,.course-banner .nav-bar a{color:hsla(0,0%,100%,.6)}.course-banner .nav-bar a:hover{color:#fff;text-decoration:none}.course-info-box{width:100%;height:300px;float:left;margin-top:-150px;background-color:#fff;border-radius:8px 8px 0 0;padding:30px}.course-info-box .course-thumb{width:320px;height:240px;float:left;margin-right:50px;position:relative}.course-info-box .course-thumb .course-thumb-img{border-radius:4px}.course-info-box .course-thumb .paid{width:100px;height:100px;position:absolute;bottom:0;right:0;z-index:33}.course-info-box .course-info{width:750px;height:auto;float:left}.course-info-box .course-info .course-title{height:24px;font-size:24px;font-weight:500;color:#333;line-height:24px;letter-spacing:1px;margin-bottom:20px}.course-info-box .course-info .course-title .like-button{display:inline-block;height:24px;width:auto;float:right;color:#ccc;line-height:24px;font-size:14px;font-weight:400;cursor:pointer}.course-info-box .course-info .course-title .like-button img{float:left;margin-right:10px}.course-info-box .course-info .course-title .like-button span{float:left;display:inline-block}.course-info-box .course-info .course-description{width:750px;height:90px;font-size:16px;font-weight:400;color:#666;line-height:30px;margin-bottom:40px}.course-info-box .course-info .course-extra-info{width:100%;height:auto;float:left;margin-top:18px}.course-info-box .course-info .course-extra-info .course-price{display:inline-block;float:left;height:50px;line-height:50px;font-size:30px;font-weight:600;color:#ff4040;margin-right:50px}.course-info-box .course-info .course-extra-info .course-price small{font-size:24px}.course-info-box .course-info .course-extra-info .buy-course-button{display:inline-block;float:left;padding-left:20px;padding-right:20px;background-color:rgba(11,118,222,.2);border-radius:20px;font-size:16px;font-weight:400;color:#0b76de;line-height:40px;margin-right:30px;margin-top:5px}.course-info-box .course-info .course-extra-info .buy-course-button:hover{text-decoration:none;opacity:.6}.course-info-box .course-info .course-extra-info .join-role-alert-link{display:inline-block;width:auto;height:40px;margin-top:5px;color:#e1a507;vertical-align:middle}.course-info-box .course-info .course-extra-info .join-role-alert-link img{display:inline-block;float:left;line-height:1;margin-top:7px;margin-right:5px}.course-info-box .course-info .course-extra-info .join-role-alert-link span{display:inline-block;float:left;width:auto;height:16px;font-size:16px;font-weight:400;line-height:1;margin-top:12px}.course-info-box .course-info .course-extra-info .join-role-alert-link:hover{color:rgba(225,165,7,.6)}.course-info-box .course-info .course-extra-info .buy-course-button{background-color:#0b76de;color:#fff}.course-chapter{width:100%;height:auto;float:left;margin-bottom:80px}.course-chapter .course-chapter-title{width:100%;height:auto;float:left;padding:30px;font-size:16px;font-weight:500;color:#333;line-height:16px}.course-chapter .course-videos-box{width:100%;height:auto;float:left}.course-chapter .course-videos-box .course-videos-item{display:-webkit-box;display:-ms-flexbox;display:flex;width:100%;height:auto;float:left;padding:18px 30px;background-color:#fff;cursor:pointer}.course-chapter .course-videos-box .course-videos-item.active,.course-chapter .course-videos-box .course-videos-item:hover{background-color:rgba(11,118,222,.1)}.course-chapter .course-videos-box .course-videos-item.active .player-icon,.course-chapter .course-videos-box .course-videos-item:hover .player-icon{background-image:url("/images/icons/player-hover.png")}.course-chapter .course-videos-box .course-videos-item.first{border-top-right-radius:8px;border-top-left-radius:8px}.course-chapter .course-videos-box .course-videos-item.last{border-bottom-right-radius:8px;border-bottom-left-radius:8px}.course-chapter .course-videos-box .course-videos-item .player-icon{width:24px;height:24px;margin-top:3px;float:left;background-image:url("/images/icons/player.png");background-size:100% 100%;margin-right:15px}.course-chapter .course-videos-box .course-videos-item .video-title{-webkit-box-flex:1;-ms-flex:1;flex:1;width:auto;padding-right:28px;font-size:16px;font-weight:400;color:#333;line-height:30px}.course-chapter .course-videos-box .course-videos-item .video-title:hover{text-decoration:none}.course-chapter .course-videos-box .course-videos-item .video-title .free-label{padding-left:8px;padding-right:8px;line-height:22px;margin-top:4px;background:#ff4040;border-radius:4px;font-size:12px;font-weight:400;color:#fff}.course-chapter .course-videos-box .course-videos-item .video-duration{width:70px;text-align:right;height:16px;font-size:16px;font-weight:400;color:#999;line-height:24px}.recom-courses-title{font-size:18px;font-weight:500;color:#333;line-height:27px}.comment-box,.recom-courses-title{width:100%;height:auto;float:left;margin-bottom:30px}.comment-box .comment-title{width:100%;height:16px;float:left;font-size:16px;font-weight:500;color:#333;line-height:16px;margin-bottom:30px;padding-left:30px;padding-top:20px}.comment-box .comment-input-box{width:100%;height:auto;float:left;background-color:#fff;padding:30px;-webkit-box-shadow:0 4px 8px 0 #e5e5e5;box-shadow:0 4px 8px 0 #e5e5e5;border-radius:8px}.comment-box .comment-input-box .comment-button{float:right;margin-top:20px;-webkit-box-shadow:0 4px 8px 0 #e5e5e5;box-shadow:0 4px 8px 0 #e5e5e5;border-radius:20px;font-size:16px;font-weight:400;color:#fff;line-height:40px;padding-left:36px;padding-right:36px;background-color:#0b76de;border:0}.comment-box .comment-input-box .comment-button:focus{outline:none}.comment-list-box{width:100%;height:auto;float:left;margin-bottom:50px}.comment-list-box .comment-list-item{width:100%;height:auto;float:left;margin-bottom:10px;background:#fff;-webkit-box-shadow:0 4px 8px 0 #e5e5e5;box-shadow:0 4px 8px 0 #e5e5e5;border-radius:8px;padding:20px 30px}.comment-list-box .comment-list-item .comment-user-avatar{width:70px;height:70px;float:left;margin-right:20px}.comment-list-box .comment-list-item .comment-user-avatar img{border-radius:35px}.comment-list-box .comment-list-item .comment-content-box{width:1050px;height:auto;float:left}.comment-list-box .comment-list-item .comment-content-box .comment-user-nickname{width:100%;height:auto;float:left;font-size:14px;font-weight:600;color:#999;line-height:14px;margin-bottom:15px}.comment-list-box .comment-list-item .comment-content-box .comment-content{width:100%;height:auto;float:left;font-size:16px;font-weight:400;color:#333;line-height:20px;margin-bottom:19px}.comment-list-box .comment-list-item .comment-content-box .comment-content p{margin-bottom:0}.comment-list-box .comment-list-item .comment-content-box .comment-info .comment-createAt{font-size:12px;font-weight:400;color:#ccc;line-height:12px}.video-player{width:100%;height:675px;float:left;background-color:#000;margin-top:-150px;z-index:22}.video-player #xiaoteng-player{width:1200px;height:675px}.video-player .buy-this-video,.video-player .need-login{width:100%;height:auto;float:left;padding-top:180px;text-align:center}.video-player .buy-this-video h3,.video-player .need-login h3{margin-bottom:80px;color:#0b76de}.video-player .buy-this-video .login-text,.video-player .need-login .login-text{color:#0b76de}.order-create-box{background:#fff;-webkit-box-shadow:0 4px 8px 0 #e5e5e5;box-shadow:0 4px 8px 0 #e5e5e5;border-radius:8px;margin-top:30px;padding:30px}.order-create-box,.order-create-box .title{width:100%;height:auto;float:left;margin-bottom:30px}.order-create-box .title{font-size:18px;font-weight:500;color:#333;line-height:27px}.order-create-box .goods-info-box{width:100%;height:auto;float:left;margin-bottom:50px}.order-create-box .goods-info-box .goods-thumb{width:160px;height:120px;float:left;margin-right:30px}.order-create-box .goods-info-box .goods-thumb img{border-radius:2px}.order-create-box .goods-info-box .goods-info{width:790px;height:auto;float:left}.order-create-box .goods-info-box .goods-info .goods-title{width:100%;height:auto;float:left;font-size:18px;font-weight:500;color:#333;line-height:18px;margin-bottom:30px;padding-top:20px}.order-create-box .goods-info-box .goods-info .goods-label{width:100%;height:auto;float:left}.order-create-box .goods-info-box .goods-info .goods-label .label{display:inline-block;padding:8px 10px;font-size:16px;font-weight:400;color:#ff4040;line-height:16px;border-radius:2px;border:1px solid #ff4040}.order-create-box .goods-info-box .goods-price{width:160px;height:auto;float:left;padding-top:10px;text-align:right}.order-create-box .goods-info-box .goods-price .price{color:#ff4040;font-weight:700;font-size:30px}.order-create-box .goods-info-box .goods-price .price small{font-size:16px;font-weight:600}.order-create-box .promo-code{width:100%;height:auto;float:left;margin-bottom:50px}.order-create-box .promo-code .promo-code-title{width:100%;height:auto;float:left;font-size:18px;font-weight:500;color:#333;line-height:27px;margin-bottom:30px}.order-create-box .promo-code .promo-code-input{line-height:50px}.order-create-box .promo-code .promo-code-input input{width:200px;height:50px;margin-right:30px;float:left}.order-create-box .promo-code .promo-code-input .promo-code-check-button{float:left;padding-left:36px;padding-right:36px;margin-top:5px;font-size:16px;font-weight:400;color:#fff;line-height:40px;background-color:#0b76de;border-radius:20px;margin-right:30px;border:0}.order-create-box .promo-code .promo-code-input .promo-code-check-button:focus{outline:none}.order-create-box .promo-code .promo-code-input .promo-code-info{display:none;font-size:14px;font-weight:400;color:#ff4040;line-height:14px}.order-create-box .payments-box{width:100%;height:auto;float:left;padding-bottom:50px;margin-bottom:50px;border-bottom:1px solid #ccc}.order-create-box .payments-box .payments-title{width:100%;height:auto;float:left;font-size:18px;font-weight:500;color:#333;line-height:27px;margin-bottom:30px}.order-create-box .payments-box .payments{width:100%;height:auto;float:left}.order-create-box .payments-box .payments .payment-item{width:230px;height:100px;float:left;line-height:100px;text-align:center;-webkit-box-shadow:0 4px 8px 0 #e5e5e5;box-shadow:0 4px 8px 0 #e5e5e5;margin-right:30px;border-radius:8px;cursor:pointer}.order-create-box .payments-box .payments .payment-item.selected{border:3px solid #ff4040}.order-create-box .bottom{width:100%;height:auto;float:left}.order-create-box .bottom .bottom-info{width:100%;height:auto;float:left;line-height:50px;margin-bottom:30px}.order-create-box .bottom .bottom-info .time{display:inline-block;float:left;font-size:14px;font-weight:400;color:#ff4040}.order-create-box .bottom .bottom-info .charge-info{display:inline-block;font-size:18px;font-weight:400;color:#333;float:right;margin-right:20px}.order-create-box .bottom .bottom-info .charge-info .promo-code-price{color:#ff4040}.order-create-box .bottom .total-price{display:inline-block;color:#ff4040;font-weight:700;font-size:30px;float:right}.order-create-box .bottom .total-price small{font-size:16px;font-weight:600}.order-create-box .bottom .bottom-button-box{width:100%;height:auto;float:left}.order-create-box .bottom .bottom-button-box .pay-button{padding-left:44px;padding-right:44px;line-height:60px;border:0;font-size:18px;font-weight:500;color:#fff;background-color:#0b76de;border-radius:30px;float:right}.order-create-box .bottom .bottom-button-box .pay-button:focus{outline:none}.index-latest-banner{padding-top:100px;padding-bottom:106px}.banner-title{width:100%;height:36px;float:left;font-size:36px;color:#333;line-height:36px;letter-spacing:1px;text-align:center;margin-bottom:70px;font-weight:700}.banner-title img{display:inline-block;margin-right:16px;margin-top:-5px}.banner-title span.title{display:inline-block;height:36px}.announcement-box{width:100%;height:52px;float:left;background:#fff9d7;border-radius:0 0 8px 8px;font-size:16px;font-weight:400;line-height:52px;padding-left:30px;padding-right:30px}.announcement-box a{color:#de7a0b}.announcement-box a:hover{text-decoration:none}.role-center-banner{width:100%;height:264px;background-image:url("/images/member-bg.png");background-position:bottom;background-repeat:no-repeat;padding-top:70px;background-color:#323232}.role-center-banner img{margin-top:100px}.role-list-box{width:100%;height:auto;float:left;padding-top:100px;padding-bottom:100px;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap}.role-list-box .role-list-item{width:320px;height:380px;text-align:center;padding-top:40px;padding-bottom:40px;background:#fff;-webkit-box-shadow:0 4px 8px 0 #e5e5e5;box-shadow:0 4px 8px 0 #e5e5e5;border-radius:8px;margin-left:120px;margin-bottom:50px;cursor:pointer;border:3px solid #fff}.role-list-box .role-list-item.first{margin-left:0}.role-list-box .role-list-item .name{font-size:30px;font-weight:600;color:#323232;line-height:30px;margin-bottom:40px}.role-list-box .role-list-item .price{font-size:48px;font-weight:700;color:#e1a500;line-height:67px;letter-spacing:1px;margin-bottom:50px}.role-list-box .role-list-item .price small{font-size:36px}.role-list-box .role-list-item .desc{font-size:18px;font-weight:400;color:#999;line-height:20px}.role-list-box .role-list-item.active{border:3px solid #ffcb00;background-color:#ffeded}.role-join-button{display:inline-block;width:220px;height:60px;background:#ffcb00;-webkit-box-shadow:0 4px 8px 0 #e5e5e5;box-shadow:0 4px 8px 0 #e5e5e5;border-radius:30px;line-height:60px;font-size:24px;font-weight:400;color:#323232;text-align:center;margin-bottom:170px}.role-join-button:focus,.role-join-button:hover{text-decoration:none;color:#323232;background:rgba(255,203,0,.6)}.course-show-page-desc img{max-width:100%}.select-payment-model{display:none;position:fixed;top:0;left:0;right:0;bottom:0;z-index:1001;background-color:rgba(0,0,0,.6)}.select-payment-model .select-payment-model-box{position:fixed;top:50%;left:50%;z-index:1002;margin-top:-207px;margin-left:-209px;width:414px;height:418px;background-color:#fff;border-radius:8px;padding:30px}.select-payment-model .select-payment-model-box .title{width:100%;height:auto;float:left;font-size:24px;font-weight:600;color:#333;line-height:24px;margin-bottom:68px}.select-payment-model .select-payment-model-box .title img{float:right;cursor:pointer}.select-payment-model .select-payment-model-box .title img:hover{-webkit-transform:rotate(1turn);transform:rotate(1turn);-webkit-transition:-webkit-transform 1s linear;transition:-webkit-transform 1s linear;transition:transform 1s linear;transition:transform 1s linear,-webkit-transform 1s linear}.select-payment-model .select-payment-model-box .content{width:100%;height:auto;float:left;text-align:center}.select-payment-model .select-payment-model-box .content .role-text{width:auto;height:24px;line-height:1;color:#333;margin-bottom:38px}.select-payment-model .select-payment-model-box .content .role-text img{display:inline-block;width:24px;height:24px;margin-right:10px;margin-top:-6px}.select-payment-model .select-payment-model-box .content .role-text span{display:inline-block;height:20px;font-size:20px;font-weight:400;line-height:1;margin-top:2px}.select-payment-model .select-payment-model-box .content .join-role-button-box{width:100%;height:auto;float:left}.select-payment-model .select-payment-model-box .content .join-role-button-box .join-role-button{display:inline-block;width:255px;height:52px;background:#0b76de;border-radius:26px;color:#fff;font-size:20px;font-weight:400;line-height:52px}.select-payment-model .select-payment-model-box .content .join-role-button-box .join-role-button:hover{background:rgba(11,118,222,.6)}.select-payment-model .select-payment-model-box .content .extra-options{width:100%;height:16px;line-height:1;float:left;margin-top:49px}.select-payment-model .select-payment-model-box .content .extra-options .plain-text{display:inline-block;width:auto;height:16px;font-size:16px;font-weight:400;color:#666;line-height:1;vertical-align:middle}.select-payment-model .select-payment-model-box .content .extra-options .plain-text img{margin-left:8px;margin-top:-3px}.select-payment-model .select-payment-model-box .content .extra-options .plain-text:hover{color:hsla(0,0%,40%,.8)}.credit1-box{width:100%;height:auto;display:-webkit-box;display:-ms-flexbox;display:flex;margin-top:30px;margin-bottom:30px}.credit1-box .left-box{-webkit-box-flex:1;-ms-flex:1;flex:1;height:276px;background-color:#fff;border-top-left-radius:5px;border-bottom-left-radius:5px}.credit1-box .left-box .value{width:280px;margin:0 auto;margin-top:120px;display:-webkit-box;display:-ms-flexbox;display:flex}.credit1-box .left-box .value .icon{width:50px;height:36px;padding:3px 20px 3px 0}.credit1-box .left-box .value .help{width:72px;height:30px;padding-top:9px;padding-bottom:9px;font-size:18px;font-weight:500;color:#333;line-height:18px}.credit1-box .left-box .value .credit1{-webkit-box-flex:1;-ms-flex:1;flex:1;height:36px;font-size:36px;font-weight:600;color:#333;line-height:36px;text-align:right}.credit1-box .right-box{-webkit-box-flex:1;-ms-flex:1;flex:1;height:276px;background-color:#2694ff;border-top-right-radius:5px;border-bottom-right-radius:5px;padding:20px 40px}.credit1-box .right-box .title{width:100%;height:auto;float:left;margin-bottom:20px;display:-webkit-box;display:-ms-flexbox;display:flex}.credit1-box .right-box .title .icon{width:66px;height:66px;padding-right:20px;float:left}.credit1-box .right-box .title .text{-webkit-box-flex:1;-ms-flex:1;flex:1;font-size:18px;font-weight:600;color:#fff;line-height:66px}.credit1-box .right-box .content{width:100%;height:auto;float:left}.credit1-box .right-box .content .item{width:100%;height:auto;float:left;font-size:14px;font-weight:400;color:#fff;line-height:26px}.credit1-records-box{width:100%;height:auto;float:left;margin-bottom:30px}.credit1-records-box .item{width:100%;height:auto;float:left;padding:30px;background-color:#fff;margin-bottom:1px;display:-webkit-box;display:-ms-flexbox;display:flex}.credit1-records-box .item .remark{-webkit-box-flex:1;-ms-flex:1;flex:1;font-size:14px;font-weight:400;color:#333;line-height:14px;text-align:left}.credit1-records-box .item .value{-webkit-box-flex:1;-ms-flex:1;flex:1;height:16px;font-size:16px;font-weight:600;color:#2694ff;line-height:16px;text-align:center}.credit1-records-box .item .date{-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:right;font-size:14px;font-weight:400;color:#999;line-height:14px}.course-show-page-attach .attach-item{width:100%;height:auto;float:left;display:-webkit-box;display:-ms-flexbox;display:flex;background-color:#fff;padding:24px 30px;border-radius:5px;margin-bottom:2px;cursor:pointer}.course-show-page-attach .attach-item:hover{background-color:rgba(11,118,222,.1)}.course-show-page-attach .attach-item .name{-webkit-box-flex:1;-ms-flex:1;flex:1;font-size:16px;line-height:16px}.course-show-page-attach .attach-item .size{width:120px;height:auto;line-height:16px;font-size:14px;text-align:right}.course-show-page-attach .attach-item .option{width:100px;height:auto;text-align:right;font-size:14px;line-height:16px} \ No newline at end of file diff --git a/public/frontend/js/frontend.js b/public/frontend/js/frontend.js index 5b6ebd56b..8e23dc26b 100644 --- a/public/frontend/js/frontend.js +++ b/public/frontend/js/frontend.js @@ -1 +1 @@ -!function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:r})},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/",n(n.s=0)}({0:function(e,t,n){n("k7zE"),n("h6GG"),e.exports=n("jGpx")},"162o":function(e,t,n){(function(e){var r=void 0!==e&&e||"undefined"!=typeof self&&self||window,i=Function.prototype.apply;function a(e,t){this._id=e,this._clearFn=t}t.setTimeout=function(){return new a(i.call(setTimeout,r,arguments),clearTimeout)},t.setInterval=function(){return new a(i.call(setInterval,r,arguments),clearInterval)},t.clearTimeout=t.clearInterval=function(e){e&&e.close()},a.prototype.unref=a.prototype.ref=function(){},a.prototype.close=function(){this._clearFn.call(r,this._id)},t.enroll=function(e,t){clearTimeout(e._idleTimeoutId),e._idleTimeout=t},t.unenroll=function(e){clearTimeout(e._idleTimeoutId),e._idleTimeout=-1},t._unrefActive=t.active=function(e){clearTimeout(e._idleTimeoutId);var t=e._idleTimeout;t>=0&&(e._idleTimeoutId=setTimeout(function(){e._onTimeout&&e._onTimeout()},t))},n("mypn"),t.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==e&&e.setImmediate||this&&this.setImmediate,t.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==e&&e.clearImmediate||this&&this.clearImmediate}).call(t,n("DuR2"))},"21It":function(e,t,n){"use strict";var r=n("FtD3");e.exports=function(e,t,n){var i=n.config.validateStatus;n.status&&i&&!i(n.status)?t(r("Request failed with status code "+n.status,n.config,null,n.request,n)):e(n)}},"3IRH":function(e,t){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children||(e.children=[]),Object.defineProperty(e,"loaded",{enumerable:!0,get:function(){return e.l}}),Object.defineProperty(e,"id",{enumerable:!0,get:function(){return e.i}}),e.webpackPolyfill=1),e}},"5VQ+":function(e,t,n){"use strict";var r=n("cGG2");e.exports=function(e,t){r.forEach(e,function(n,r){r!==t&&r.toUpperCase()===t.toUpperCase()&&(e[t]=n,delete e[r])})}},"7GwW":function(e,t,n){"use strict";var r=n("cGG2"),i=n("21It"),a=n("DQCr"),o=n("oJlt"),s=n("GHBc"),l=n("FtD3");e.exports=function(e){return new Promise(function(t,u){var c=e.data,f=e.headers;r.isFormData(c)&&delete f["Content-Type"];var d=new XMLHttpRequest;if(e.auth){var p=e.auth.username||"",h=e.auth.password||"";f.Authorization="Basic "+btoa(p+":"+h)}if(d.open(e.method.toUpperCase(),a(e.url,e.params,e.paramsSerializer),!0),d.timeout=e.timeout,d.onreadystatechange=function(){if(d&&4===d.readyState&&(0!==d.status||d.responseURL&&0===d.responseURL.indexOf("file:"))){var n="getAllResponseHeaders"in d?o(d.getAllResponseHeaders()):null,r={data:e.responseType&&"text"!==e.responseType?d.response:d.responseText,status:d.status,statusText:d.statusText,headers:n,config:e,request:d};i(t,u,r),d=null}},d.onerror=function(){u(l("Network Error",e,null,d)),d=null},d.ontimeout=function(){u(l("timeout of "+e.timeout+"ms exceeded",e,"ECONNABORTED",d)),d=null},r.isStandardBrowserEnv()){var g=n("p1b6"),v=(e.withCredentials||s(e.url))&&e.xsrfCookieName?g.read(e.xsrfCookieName):void 0;v&&(f[e.xsrfHeaderName]=v)}if("setRequestHeader"in d&&r.forEach(f,function(e,t){void 0===c&&"content-type"===t.toLowerCase()?delete f[t]:d.setRequestHeader(t,e)}),e.withCredentials&&(d.withCredentials=!0),e.responseType)try{d.responseType=e.responseType}catch(t){if("json"!==e.responseType)throw t}"function"==typeof e.onDownloadProgress&&d.addEventListener("progress",e.onDownloadProgress),"function"==typeof e.onUploadProgress&&d.upload&&d.upload.addEventListener("progress",e.onUploadProgress),e.cancelToken&&e.cancelToken.promise.then(function(e){d&&(d.abort(),u(e),d=null)}),void 0===c&&(c=null),d.send(c)})}},"7t+N":function(e,t,n){var r;!function(t,n){"use strict";"object"==typeof e&&"object"==typeof e.exports?e.exports=t.document?n(t,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return n(e)}:n(t)}("undefined"!=typeof window?window:this,function(n,i){"use strict";var a=[],o=n.document,s=Object.getPrototypeOf,l=a.slice,u=a.concat,c=a.push,f=a.indexOf,d={},p=d.toString,h=d.hasOwnProperty,g=h.toString,v=g.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},b=function(e){return null!=e&&e===e.window},x={type:!0,src:!0,nonce:!0,noModule:!0};function _(e,t,n){var r,i,a=(n=n||o).createElement("script");if(a.text=e,t)for(r in x)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&a.setAttribute(r,i);n.head.appendChild(a).parentNode.removeChild(a)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?d[p.call(e)]||"object":typeof e}var k=function(e,t){return new k.fn.init(e,t)},E=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function T(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!b(e)&&("array"===n||0===t||"number"==typeof t&&t>0&&t-1 in e)}k.fn=k.prototype={jquery:"3.4.1",constructor:k,length:0,toArray:function(){return l.call(this)},get:function(e){return null==e?l.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=k.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return k.each(this,e)},map:function(e){return this.pushStack(k.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(l.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(n>=0&&n+~]|"+F+")"+F+"*"),W=new RegExp(F+"|>"),K=new RegExp(U),V=new RegExp("^"+j+"$"),$={ID:new RegExp("^#("+j+")"),CLASS:new RegExp("^\\.("+j+")"),TAG:new RegExp("^("+j+"|[*])"),ATTR:new RegExp("^"+B),PSEUDO:new RegExp("^"+U),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+F+"*(even|odd|(([+-]|)(\\d*)n|)"+F+"*(?:([+-]|)"+F+"*(\\d+)|))"+F+"*\\)|)","i"),bool:new RegExp("^(?:"+N+")$","i"),needsContext:new RegExp("^"+F+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+F+"*((?:-\\d)?\\d*)"+F+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,X=/^(?:input|select|textarea|button)$/i,Q=/^h\d$/i,J=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+F+"?|("+F+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"�":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},ae=function(){d()},oe=xe(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{P.apply(D=I.call(_.childNodes),_.childNodes),D[_.childNodes.length].nodeType}catch(e){P={apply:D.length?function(e,t){L.apply(e,I.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}function se(e,t,r,i){var a,s,u,c,f,h,y,m=t&&t.ownerDocument,w=t?t.nodeType:9;if(r=r||[],"string"!=typeof e||!e||1!==w&&9!==w&&11!==w)return r;if(!i&&((t?t.ownerDocument||t:_)!==p&&d(t),t=t||p,g)){if(11!==w&&(f=Z.exec(e)))if(a=f[1]){if(9===w){if(!(u=t.getElementById(a)))return r;if(u.id===a)return r.push(u),r}else if(m&&(u=m.getElementById(a))&&b(t,u)&&u.id===a)return r.push(u),r}else{if(f[2])return P.apply(r,t.getElementsByTagName(e)),r;if((a=f[3])&&n.getElementsByClassName&&t.getElementsByClassName)return P.apply(r,t.getElementsByClassName(a)),r}if(n.qsa&&!C[e+" "]&&(!v||!v.test(e))&&(1!==w||"object"!==t.nodeName.toLowerCase())){if(y=e,m=t,1===w&&W.test(e)){for((c=t.getAttribute("id"))?c=c.replace(re,ie):t.setAttribute("id",c=x),s=(h=o(e)).length;s--;)h[s]="#"+c+" "+be(h[s]);y=h.join(","),m=ee.test(e)&&ye(t.parentNode)||t}try{return P.apply(r,m.querySelectorAll(y)),r}catch(t){C(e,!0)}finally{c===x&&t.removeAttribute("id")}}}return l(e.replace(q,"$1"),t,r,i)}function le(){var e=[];return function t(n,i){return e.push(n+" ")>r.cacheLength&&delete t[e.shift()],t[n+" "]=i}}function ue(e){return e[x]=!0,e}function ce(e){var t=p.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){for(var n=e.split("|"),i=n.length;i--;)r.attrHandle[n[i]]=t}function de(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function pe(e){return function(t){return"input"===t.nodeName.toLowerCase()&&t.type===e}}function he(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function ge(e){return function(t){return"form"in t?t.parentNode&&!1===t.disabled?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&oe(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function ve(e){return ue(function(t){return t=+t,ue(function(n,r){for(var i,a=e([],n.length,t),o=a.length;o--;)n[i=a[o]]&&(n[i]=!(r[i]=n[i]))})})}function ye(e){return e&&void 0!==e.getElementsByTagName&&e}for(t in n=se.support={},a=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},d=se.setDocument=function(e){var t,i,o=e?e.ownerDocument||e:_;return o!==p&&9===o.nodeType&&o.documentElement?(h=(p=o).documentElement,g=!a(p),_!==p&&(i=p.defaultView)&&i.top!==i&&(i.addEventListener?i.addEventListener("unload",ae,!1):i.attachEvent&&i.attachEvent("onunload",ae)),n.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),n.getElementsByTagName=ce(function(e){return e.appendChild(p.createComment("")),!e.getElementsByTagName("*").length}),n.getElementsByClassName=J.test(p.getElementsByClassName),n.getById=ce(function(e){return h.appendChild(e).id=x,!p.getElementsByName||!p.getElementsByName(x).length}),n.getById?(r.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},r.find.ID=function(e,t){if(void 0!==t.getElementById&&g){var n=t.getElementById(e);return n?[n]:[]}}):(r.filter.ID=function(e){var t=e.replace(te,ne);return function(e){var n=void 0!==e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}},r.find.ID=function(e,t){if(void 0!==t.getElementById&&g){var n,r,i,a=t.getElementById(e);if(a){if((n=a.getAttributeNode("id"))&&n.value===e)return[a];for(i=t.getElementsByName(e),r=0;a=i[r++];)if((n=a.getAttributeNode("id"))&&n.value===e)return[a]}return[]}}),r.find.TAG=n.getElementsByTagName?function(e,t){return void 0!==t.getElementsByTagName?t.getElementsByTagName(e):n.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,a=t.getElementsByTagName(e);if("*"===e){for(;n=a[i++];)1===n.nodeType&&r.push(n);return r}return a},r.find.CLASS=n.getElementsByClassName&&function(e,t){if(void 0!==t.getElementsByClassName&&g)return t.getElementsByClassName(e)},y=[],v=[],(n.qsa=J.test(p.querySelectorAll))&&(ce(function(e){h.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+F+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+F+"*(?:value|"+N+")"),e.querySelectorAll("[id~="+x+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+x+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="";var t=p.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+F+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),h.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(n.matchesSelector=J.test(m=h.matches||h.webkitMatchesSelector||h.mozMatchesSelector||h.oMatchesSelector||h.msMatchesSelector))&&ce(function(e){n.disconnectedMatch=m.call(e,"*"),m.call(e,"[s!='']:x"),y.push("!=",U)}),v=v.length&&new RegExp(v.join("|")),y=y.length&&new RegExp(y.join("|")),t=J.test(h.compareDocumentPosition),b=t||J.test(h.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},A=t?function(e,t){if(e===t)return f=!0,0;var r=!e.compareDocumentPosition-!t.compareDocumentPosition;return r||(1&(r=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!n.sortDetached&&t.compareDocumentPosition(e)===r?e===p||e.ownerDocument===_&&b(_,e)?-1:t===p||t.ownerDocument===_&&b(_,t)?1:c?M(c,e)-M(c,t):0:4&r?-1:1)}:function(e,t){if(e===t)return f=!0,0;var n,r=0,i=e.parentNode,a=t.parentNode,o=[e],s=[t];if(!i||!a)return e===p?-1:t===p?1:i?-1:a?1:c?M(c,e)-M(c,t):0;if(i===a)return de(e,t);for(n=e;n=n.parentNode;)o.unshift(n);for(n=t;n=n.parentNode;)s.unshift(n);for(;o[r]===s[r];)r++;return r?de(o[r],s[r]):o[r]===_?-1:s[r]===_?1:0},p):p},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==p&&d(e),n.matchesSelector&&g&&!C[t+" "]&&(!y||!y.test(t))&&(!v||!v.test(t)))try{var r=m.call(e,t);if(r||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(e){C(t,!0)}return se(t,p,null,[e]).length>0},se.contains=function(e,t){return(e.ownerDocument||e)!==p&&d(e),b(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!==p&&d(e);var i=r.attrHandle[t.toLowerCase()],a=i&&O.call(r.attrHandle,t.toLowerCase())?i(e,t,!g):void 0;return void 0!==a?a:n.attributes||!g?e.getAttribute(t):(a=e.getAttributeNode(t))&&a.specified?a.value:null},se.escape=function(e){return(e+"").replace(re,ie)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,r=[],i=0,a=0;if(f=!n.detectDuplicates,c=!n.sortStable&&e.slice(0),e.sort(A),f){for(;t=e[a++];)t===e[a]&&(i=r.push(a));for(;i--;)e.splice(r[i],1)}return c=null,e},i=se.getText=function(e){var t,n="",r=0,a=e.nodeType;if(a){if(1===a||9===a||11===a){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=i(e)}else if(3===a||4===a)return e.nodeValue}else for(;t=e[r++];)n+=i(t);return n},(r=se.selectors={cacheLength:50,createPseudo:ue,match:$,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return $.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&K.test(n)&&(t=o(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=E[e+" "];return t||(t=new RegExp("(^|"+F+")"+e+"("+F+"|$)"))&&E(e,function(e){return t.test("string"==typeof e.className&&e.className||void 0!==e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=se.attr(r,e);return null==i?"!="===t:!t||(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i.replace(H," ")+" ").indexOf(n)>-1:"|="===t&&(i===n||i.slice(0,n.length+1)===n+"-"))}},CHILD:function(e,t,n,r,i){var a="nth"!==e.slice(0,3),o="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,l){var u,c,f,d,p,h,g=a!==o?"nextSibling":"previousSibling",v=t.parentNode,y=s&&t.nodeName.toLowerCase(),m=!l&&!s,b=!1;if(v){if(a){for(;g;){for(d=t;d=d[g];)if(s?d.nodeName.toLowerCase()===y:1===d.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[o?v.firstChild:v.lastChild],o&&m){for(b=(p=(u=(c=(f=(d=v)[x]||(d[x]={}))[d.uniqueID]||(f[d.uniqueID]={}))[e]||[])[0]===w&&u[1])&&u[2],d=p&&v.childNodes[p];d=++p&&d&&d[g]||(b=p=0)||h.pop();)if(1===d.nodeType&&++b&&d===t){c[e]=[w,p,b];break}}else if(m&&(b=p=(u=(c=(f=(d=t)[x]||(d[x]={}))[d.uniqueID]||(f[d.uniqueID]={}))[e]||[])[0]===w&&u[1]),!1===b)for(;(d=++p&&d&&d[g]||(b=p=0)||h.pop())&&((s?d.nodeName.toLowerCase()!==y:1!==d.nodeType)||!++b||(m&&((c=(f=d[x]||(d[x]={}))[d.uniqueID]||(f[d.uniqueID]={}))[e]=[w,b]),d!==t)););return(b-=i)===r||b%r==0&&b/r>=0}}},PSEUDO:function(e,t){var n,i=r.pseudos[e]||r.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return i[x]?i(t):i.length>1?(n=[e,e,"",t],r.setFilters.hasOwnProperty(e.toLowerCase())?ue(function(e,n){for(var r,a=i(e,t),o=a.length;o--;)e[r=M(e,a[o])]=!(n[r]=a[o])}):function(e){return i(e,0,n)}):i}},pseudos:{not:ue(function(e){var t=[],n=[],r=s(e.replace(q,"$1"));return r[x]?ue(function(e,t,n,i){for(var a,o=r(e,null,i,[]),s=e.length;s--;)(a=o[s])&&(e[s]=!(t[s]=a))}):function(e,i,a){return t[0]=e,r(t,null,a,n),t[0]=null,!n.pop()}}),has:ue(function(e){return function(t){return se(e,t).length>0}}),contains:ue(function(e){return e=e.replace(te,ne),function(t){return(t.textContent||i(t)).indexOf(e)>-1}}),lang:ue(function(e){return V.test(e||"")||se.error("unsupported lang: "+e),e=e.replace(te,ne).toLowerCase(),function(t){var n;do{if(n=g?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return(n=n.toLowerCase())===e||0===n.indexOf(e+"-")}while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===h},focus:function(e){return e===p.activeElement&&(!p.hasFocus||p.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!r.pseudos.empty(e)},header:function(e){return Q.test(e.nodeName)},input:function(e){return X.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ve(function(){return[0]}),last:ve(function(e,t){return[t-1]}),eq:ve(function(e,t,n){return[n<0?n+t:n]}),even:ve(function(e,t){for(var n=0;nt?t:n;--r>=0;)e.push(r);return e}),gt:ve(function(e,t,n){for(var r=n<0?n+t:n;++r1?function(t,n,r){for(var i=e.length;i--;)if(!e[i](t,n,r))return!1;return!0}:e[0]}function we(e,t,n,r,i){for(var a,o=[],s=0,l=e.length,u=null!=t;s-1&&(a[u]=!(o[u]=f))}}else y=we(y===o?y.splice(h,y.length):y),i?i(null,o,y,l):P.apply(o,y)})}function Ee(e){for(var t,n,i,a=e.length,o=r.relative[e[0].type],s=o||r.relative[" "],l=o?1:0,c=xe(function(e){return e===t},s,!0),f=xe(function(e){return M(t,e)>-1},s,!0),d=[function(e,n,r){var i=!o&&(r||n!==u)||((t=n).nodeType?c(e,n,r):f(e,n,r));return t=null,i}];l1&&_e(d),l>1&&be(e.slice(0,l-1).concat({value:" "===e[l-2].type?"*":""})).replace(q,"$1"),n,l0,i=e.length>0,a=function(a,o,s,l,c){var f,h,v,y=0,m="0",b=a&&[],x=[],_=u,k=a||i&&r.find.TAG("*",c),E=w+=null==_?1:Math.random()||.1,T=k.length;for(c&&(u=o===p||o||c);m!==T&&null!=(f=k[m]);m++){if(i&&f){for(h=0,o||f.ownerDocument===p||(d(f),s=!g);v=e[h++];)if(v(f,o||p,s)){l.push(f);break}c&&(w=E)}n&&((f=!v&&f)&&y--,a&&b.push(f))}if(y+=m,n&&m!==y){for(h=0;v=t[h++];)v(b,x,o,s);if(a){if(y>0)for(;m--;)b[m]||x[m]||(x[m]=R.call(l));x=we(x)}P.apply(l,x),c&&!a&&x.length>0&&y+t.length>1&&se.uniqueSort(l)}return c&&(w=E,u=_),b};return n?ue(a):a}(a,i))).selector=e}return s},l=se.select=function(e,t,n,i){var a,l,u,c,f,d="function"==typeof e&&e,p=!i&&o(e=d.selector||e);if(n=n||[],1===p.length){if((l=p[0]=p[0].slice(0)).length>2&&"ID"===(u=l[0]).type&&9===t.nodeType&&g&&r.relative[l[1].type]){if(!(t=(r.find.ID(u.matches[0].replace(te,ne),t)||[])[0]))return n;d&&(t=t.parentNode),e=e.slice(l.shift().value.length)}for(a=$.needsContext.test(e)?0:l.length;a--&&(u=l[a],!r.relative[c=u.type]);)if((f=r.find[c])&&(i=f(u.matches[0].replace(te,ne),ee.test(l[0].type)&&ye(t.parentNode)||t))){if(l.splice(a,1),!(e=i.length&&be(l)))return P.apply(n,i),n;break}}return(d||s(e,p))(i,t,!g,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},n.sortStable=x.split("").sort(A).join("")===x,n.detectDuplicates=!!f,d(),n.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(p.createElement("fieldset"))}),ce(function(e){return e.innerHTML="","#"===e.firstChild.getAttribute("href")})||fe("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),n.attributes&&ce(function(e){return e.innerHTML="",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||fe("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||fe(N,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(n);k.find=S,k.expr=S.selectors,k.expr[":"]=k.expr.pseudos,k.uniqueSort=k.unique=S.uniqueSort,k.text=S.getText,k.isXMLDoc=S.isXML,k.contains=S.contains,k.escapeSelector=S.escape;var C=function(e,t,n){for(var r=[],i=void 0!==n;(e=e[t])&&9!==e.nodeType;)if(1===e.nodeType){if(i&&k(e).is(n))break;r.push(e)}return r},A=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},O=k.expr.match.needsContext;function D(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var R=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function L(e,t,n){return m(t)?k.grep(e,function(e,r){return!!t.call(e,r,e)!==n}):t.nodeType?k.grep(e,function(e){return e===t!==n}):"string"!=typeof t?k.grep(e,function(e){return f.call(t,e)>-1!==n}):k.filter(t,e,n)}k.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?k.find.matchesSelector(r,e)?[r]:[]:k.find.matches(e,k.grep(t,function(e){return 1===e.nodeType}))},k.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(k(e).filter(function(){for(t=0;t1?k.uniqueSort(n):n},filter:function(e){return this.pushStack(L(this,e||[],!1))},not:function(e){return this.pushStack(L(this,e||[],!0))},is:function(e){return!!L(this,"string"==typeof e&&O.test(e)?k(e):e||[],!1).length}});var P,I=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||P,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&e.length>=3?[null,e,null]:I.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:o,!0)),R.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=o.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,P=k(o);var M=/^(?:parents|prev(?:Until|All))/,N={children:!0,contents:!0,next:!0,prev:!0};function F(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e-1:1===n.nodeType&&k.find.matchesSelector(n,e))){a.push(n);break}return this.pushStack(a.length>1?k.uniqueSort(a):a)},index:function(e){return e?"string"==typeof e?f.call(k(e),this[0]):f.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(k.uniqueSort(k.merge(this.get(),k(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),k.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return C(e,"parentNode")},parentsUntil:function(e,t,n){return C(e,"parentNode",n)},next:function(e){return F(e,"nextSibling")},prev:function(e){return F(e,"previousSibling")},nextAll:function(e){return C(e,"nextSibling")},prevAll:function(e){return C(e,"previousSibling")},nextUntil:function(e,t,n){return C(e,"nextSibling",n)},prevUntil:function(e,t,n){return C(e,"previousSibling",n)},siblings:function(e){return A((e.parentNode||{}).firstChild,e)},children:function(e){return A(e.firstChild)},contents:function(e){return void 0!==e.contentDocument?e.contentDocument:(D(e,"template")&&(e=e.content||e),k.merge([],e.childNodes))}},function(e,t){k.fn[e]=function(n,r){var i=k.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=k.filter(r,i)),this.length>1&&(N[e]||k.uniqueSort(i),M.test(e)&&i.reverse()),this.pushStack(i)}});var j=/[^\x20\t\r\n\f]+/g;function B(e){return e}function U(e){throw e}function H(e,t,n,r){var i;try{e&&m(i=e.promise)?i.call(e).done(t).fail(n):e&&m(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}k.Callbacks=function(e){e="string"==typeof e?function(e){var t={};return k.each(e.match(j)||[],function(e,n){t[n]=!0}),t}(e):k.extend({},e);var t,n,r,i,a=[],o=[],s=-1,l=function(){for(i=i||e.once,r=t=!0;o.length;s=-1)for(n=o.shift();++s-1;)a.splice(n,1),n<=s&&s--}),this},has:function(e){return e?k.inArray(e,a)>-1:a.length>0},empty:function(){return a&&(a=[]),this},disable:function(){return i=o=[],a=n="",this},disabled:function(){return!a},lock:function(){return i=o=[],n||t||(a=n=""),this},locked:function(){return!!i},fireWith:function(e,n){return i||(n=[e,(n=n||[]).slice?n.slice():n],o.push(n),t||l()),this},fire:function(){return u.fireWith(this,arguments),this},fired:function(){return!!r}};return u},k.extend({Deferred:function(e){var t=[["notify","progress",k.Callbacks("memory"),k.Callbacks("memory"),2],["resolve","done",k.Callbacks("once memory"),k.Callbacks("once memory"),0,"resolved"],["reject","fail",k.Callbacks("once memory"),k.Callbacks("once memory"),1,"rejected"]],r="pending",i={state:function(){return r},always:function(){return a.done(arguments).fail(arguments),this},catch:function(e){return i.then(null,e)},pipe:function(){var e=arguments;return k.Deferred(function(n){k.each(t,function(t,r){var i=m(e[r[4]])&&e[r[4]];a[r[1]](function(){var e=i&&i.apply(this,arguments);e&&m(e.promise)?e.promise().progress(n.notify).done(n.resolve).fail(n.reject):n[r[0]+"With"](this,i?[e]:arguments)})}),e=null}).promise()},then:function(e,r,i){var a=0;function o(e,t,r,i){return function(){var s=this,l=arguments,u=function(){var n,u;if(!(e=a&&(r!==U&&(s=void 0,l=[n]),t.rejectWith(s,l))}};e?c():(k.Deferred.getStackHook&&(c.stackTrace=k.Deferred.getStackHook()),n.setTimeout(c))}}return k.Deferred(function(n){t[0][3].add(o(0,n,m(i)?i:B,n.notifyWith)),t[1][3].add(o(0,n,m(e)?e:B)),t[2][3].add(o(0,n,m(r)?r:U))}).promise()},promise:function(e){return null!=e?k.extend(e,i):i}},a={};return k.each(t,function(e,n){var o=n[2],s=n[5];i[n[1]]=o.add,s&&o.add(function(){r=s},t[3-e][2].disable,t[3-e][3].disable,t[0][2].lock,t[0][3].lock),o.add(n[3].fire),a[n[0]]=function(){return a[n[0]+"With"](this===a?void 0:this,arguments),this},a[n[0]+"With"]=o.fireWith}),i.promise(a),e&&e.call(a,a),a},when:function(e){var t=arguments.length,n=t,r=Array(n),i=l.call(arguments),a=k.Deferred(),o=function(e){return function(n){r[e]=this,i[e]=arguments.length>1?l.call(arguments):n,--t||a.resolveWith(r,i)}};if(t<=1&&(H(e,a.done(o(n)).resolve,a.reject,!t),"pending"===a.state()||m(i[n]&&i[n].then)))return a.then();for(;n--;)H(i[n],o(n),a.reject);return a.promise()}});var q=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;k.Deferred.exceptionHook=function(e,t){n.console&&n.console.warn&&e&&q.test(e.name)&&n.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},k.readyException=function(e){n.setTimeout(function(){throw e})};var z=k.Deferred();function G(){o.removeEventListener("DOMContentLoaded",G),n.removeEventListener("load",G),k.ready()}k.fn.ready=function(e){return z.then(e).catch(function(e){k.readyException(e)}),this},k.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--k.readyWait:k.isReady)||(k.isReady=!0,!0!==e&&--k.readyWait>0||z.resolveWith(o,[k]))}}),k.ready.then=z.then,"complete"===o.readyState||"loading"!==o.readyState&&!o.documentElement.doScroll?n.setTimeout(k.ready):(o.addEventListener("DOMContentLoaded",G),n.addEventListener("load",G));var W=function(e,t,n,r,i,a,o){var s=0,l=e.length,u=null==n;if("object"===w(n))for(s in i=!0,n)W(e,t,s,n[s],!0,a,o);else if(void 0!==r&&(i=!0,m(r)||(o=!0),u&&(o?(t.call(e,r),t=null):(u=t,t=function(e,t,n){return u.call(k(e),n)})),t))for(;s1,null,!0)},removeData:function(e){return this.each(function(){Z.remove(this,e)})}}),k.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=J.get(e,t),n&&(!r||Array.isArray(n)?r=J.access(e,t,k.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=k.queue(e,t),r=n.length,i=n.shift(),a=k._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete a.stop,i.call(e,function(){k.dequeue(e,t)},a)),!r&&a&&a.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return J.get(e,n)||J.access(e,n,{empty:k.Callbacks("once memory").add(function(){J.remove(e,[t+"queue",n])})})}}),k.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length\x20\t\r\n\f]*)/i,ye=/^$|^module$|\/(?:java|ecma)script/i,me={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function be(e,t){var n;return n=void 0!==e.getElementsByTagName?e.getElementsByTagName(t||"*"):void 0!==e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&D(e,t)?k.merge([e],n):n}function xe(e,t){for(var n=0,r=e.length;n-1)i&&i.push(a);else if(u=se(a),o=be(f.appendChild(a),"script"),u&&xe(o),n)for(c=0;a=o[c++];)ye.test(a.type||"")&&n.push(a);return f}_e=o.createDocumentFragment().appendChild(o.createElement("div")),(we=o.createElement("input")).setAttribute("type","radio"),we.setAttribute("checked","checked"),we.setAttribute("name","t"),_e.appendChild(we),y.checkClone=_e.cloneNode(!0).cloneNode(!0).lastChild.checked,_e.innerHTML="",y.noCloneChecked=!!_e.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Se=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ce=/^([^.]*)(?:\.(.+)|)/;function Ae(){return!0}function Oe(){return!1}function De(e,t){return e===function(){try{return o.activeElement}catch(e){}}()==("focus"===t)}function Re(e,t,n,r,i,a){var o,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Re(e,s,n,r,t[s],a);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Oe;else if(!i)return e;return 1===a&&(o=i,(i=function(e){return k().off(e),o.apply(this,arguments)}).guid=o.guid||(o.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function Le(e,t,n){n?(J.set(e,t,!1),k.event.add(e,t,{namespace:!1,handler:function(e){var r,i,a=J.get(this,t);if(1&e.isTrigger&&this[t]){if(a.length)(k.event.special[t]||{}).delegateType&&e.stopPropagation();else if(a=l.call(arguments),J.set(this,t,a),r=n(this,t),this[t](),a!==(i=J.get(this,t))||r?J.set(this,t,!1):i={},a!==i)return e.stopImmediatePropagation(),e.preventDefault(),i.value}else a.length&&(J.set(this,t,{value:k.event.trigger(k.extend(a[0],k.Event.prototype),a.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===J.get(e,t)&&k.event.add(e,t,Ae)}k.event={global:{},add:function(e,t,n,r,i){var a,o,s,l,u,c,f,d,p,h,g,v=J.get(e);if(v)for(n.handler&&(n=(a=n).handler,i=a.selector),i&&k.find.matchesSelector(oe,i),n.guid||(n.guid=k.guid++),(l=v.events)||(l=v.events={}),(o=v.handle)||(o=v.handle=function(t){return void 0!==k&&k.event.triggered!==t.type?k.event.dispatch.apply(e,arguments):void 0}),u=(t=(t||"").match(j)||[""]).length;u--;)p=g=(s=Ce.exec(t[u])||[])[1],h=(s[2]||"").split(".").sort(),p&&(f=k.event.special[p]||{},p=(i?f.delegateType:f.bindType)||p,f=k.event.special[p]||{},c=k.extend({type:p,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},a),(d=l[p])||((d=l[p]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(e,r,h,o)||e.addEventListener&&e.addEventListener(p,o)),f.add&&(f.add.call(e,c),c.handler.guid||(c.handler.guid=n.guid)),i?d.splice(d.delegateCount++,0,c):d.push(c),k.event.global[p]=!0)},remove:function(e,t,n,r,i){var a,o,s,l,u,c,f,d,p,h,g,v=J.hasData(e)&&J.get(e);if(v&&(l=v.events)){for(u=(t=(t||"").match(j)||[""]).length;u--;)if(p=g=(s=Ce.exec(t[u])||[])[1],h=(s[2]||"").split(".").sort(),p){for(f=k.event.special[p]||{},d=l[p=(r?f.delegateType:f.bindType)||p]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),o=a=d.length;a--;)c=d[a],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(d.splice(a,1),c.selector&&d.delegateCount--,f.remove&&f.remove.call(e,c));o&&!d.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,p,v.handle),delete l[p])}else for(p in l)k.event.remove(e,p+t[u],n,r,!0);k.isEmptyObject(l)&&J.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,a,o,s=k.event.fix(e),l=new Array(arguments.length),u=(J.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(l[0]=s,t=1;t=1))for(;u!==this;u=u.parentNode||this)if(1===u.nodeType&&("click"!==e.type||!0!==u.disabled)){for(a=[],o={},n=0;n-1:k.find(i,this,null,[u]).length),o[i]&&a.push(r);a.length&&s.push({elem:u,handlers:a})}return u=this,l\x20\t\r\n\f]*)[^>]*)\/>/gi,Ie=/\s*$/g;function Fe(e,t){return D(e,"table")&&D(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function je(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Be(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Ue(e,t){var n,r,i,a,o,s,l,u;if(1===t.nodeType){if(J.hasData(e)&&(a=J.access(e),o=J.set(t,a),u=a.events))for(i in delete o.handle,o.events={},u)for(n=0,r=u[i].length;n1&&"string"==typeof h&&!y.checkClone&&Me.test(h))return e.each(function(i){var a=e.eq(i);g&&(t[0]=h.call(this,i,a.html())),He(a,t,n,r)});if(d&&(a=(i=Ee(t,e[0].ownerDocument,!1,e,r)).firstChild,1===i.childNodes.length&&(i=a),a||r)){for(s=(o=k.map(be(i,"script"),je)).length;f")},clone:function(e,t,n){var r,i,a,o,s,l,u,c=e.cloneNode(!0),f=se(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(o=be(c),r=0,i=(a=be(e)).length;r0&&xe(o,!f&&be(e,"script")),c},cleanData:function(e){for(var t,n,r,i=k.event.special,a=0;void 0!==(n=e[a]);a++)if(X(n)){if(t=n[J.expando]){if(t.events)for(r in t.events)i[r]?k.event.remove(n,r):k.removeEvent(n,r,t.handle);n[J.expando]=void 0}n[Z.expando]&&(n[Z.expando]=void 0)}}}),k.fn.extend({detach:function(e){return qe(this,e,!0)},remove:function(e){return qe(this,e)},text:function(e){return W(this,function(e){return void 0===e?k.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return He(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Fe(this,e).appendChild(e)})},prepend:function(){return He(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Fe(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return He(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return He(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(k.cleanData(be(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return k.clone(this,e,t)})},html:function(e){return W(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!Ie.test(e)&&!me[(ve.exec(e)||["",""])[1].toLowerCase()]){e=k.htmlPrefilter(e);try{for(;n=0&&(l+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-a-l-s-.5))||0),l}function it(e,t,n){var r=Ge(e),i=(!y.boxSizingReliable()||n)&&"border-box"===k.css(e,"boxSizing",!1,r),a=i,o=Ke(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if(ze.test(o)){if(!n)return o;o="auto"}return(!y.boxSizingReliable()&&i||"auto"===o||!parseFloat(o)&&"inline"===k.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===k.css(e,"boxSizing",!1,r),(a=s in e)&&(o=e[s])),(o=parseFloat(o)||0)+rt(e,t,n||(i?"border":"content"),a,r,o)+"px"}function at(e,t,n,r,i){return new at.prototype.init(e,t,n,r,i)}k.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Ke(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,a,o,s=Y(t),l=Ze.test(t),u=e.style;if(l||(t=Qe(s)),o=k.cssHooks[t]||k.cssHooks[s],void 0===n)return o&&"get"in o&&void 0!==(i=o.get(e,!1,r))?i:u[t];"string"===(a=typeof n)&&(i=ie.exec(n))&&i[1]&&(n=fe(e,t,i),a="number"),null!=n&&n==n&&("number"!==a||l||(n+=i&&i[3]||(k.cssNumber[s]?"":"px")),y.clearCloneStyle||""!==n||0!==t.indexOf("background")||(u[t]="inherit"),o&&"set"in o&&void 0===(n=o.set(e,n,r))||(l?u.setProperty(t,n):u[t]=n))}},css:function(e,t,n,r){var i,a,o,s=Y(t);return Ze.test(t)||(t=Qe(s)),(o=k.cssHooks[t]||k.cssHooks[s])&&"get"in o&&(i=o.get(e,!0,n)),void 0===i&&(i=Ke(e,t,r)),"normal"===i&&t in tt&&(i=tt[t]),""===n||n?(a=parseFloat(i),!0===n||isFinite(a)?a||0:i):i}}),k.each(["height","width"],function(e,t){k.cssHooks[t]={get:function(e,n,r){if(n)return!Je.test(k.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?it(e,t,r):ce(e,et,function(){return it(e,t,r)})},set:function(e,n,r){var i,a=Ge(e),o=!y.scrollboxSize()&&"absolute"===a.position,s=(o||r)&&"border-box"===k.css(e,"boxSizing",!1,a),l=r?rt(e,t,r,s,a):0;return s&&o&&(l-=Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-parseFloat(a[t])-rt(e,t,"border",!1,a)-.5)),l&&(i=ie.exec(n))&&"px"!==(i[3]||"px")&&(e.style[t]=n,n=k.css(e,t)),nt(0,n,l)}}}),k.cssHooks.marginLeft=Ve(y.reliableMarginLeft,function(e,t){if(t)return(parseFloat(Ke(e,"marginLeft"))||e.getBoundingClientRect().left-ce(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),k.each({margin:"",padding:"",border:"Width"},function(e,t){k.cssHooks[e+t]={expand:function(n){for(var r=0,i={},a="string"==typeof n?n.split(" "):[n];r<4;r++)i[e+ae[r]+t]=a[r]||a[r-2]||a[0];return i}},"margin"!==e&&(k.cssHooks[e+t].set=nt)}),k.fn.extend({css:function(e,t){return W(this,function(e,t,n){var r,i,a={},o=0;if(Array.isArray(t)){for(r=Ge(e),i=t.length;o1)}}),k.Tween=at,at.prototype={constructor:at,init:function(e,t,n,r,i,a){this.elem=e,this.prop=n,this.easing=i||k.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=a||(k.cssNumber[n]?"":"px")},cur:function(){var e=at.propHooks[this.prop];return e&&e.get?e.get(this):at.propHooks._default.get(this)},run:function(e){var t,n=at.propHooks[this.prop];return this.options.duration?this.pos=t=k.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):at.propHooks._default.set(this),this}},at.prototype.init.prototype=at.prototype,at.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=k.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){k.fx.step[e.prop]?k.fx.step[e.prop](e):1!==e.elem.nodeType||!k.cssHooks[e.prop]&&null==e.elem.style[Qe(e.prop)]?e.elem[e.prop]=e.now:k.style(e.elem,e.prop,e.now+e.unit)}}},at.propHooks.scrollTop=at.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},k.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},k.fx=at.prototype.init,k.fx.step={};var ot,st,lt=/^(?:toggle|show|hide)$/,ut=/queueHooks$/;function ct(){st&&(!1===o.hidden&&n.requestAnimationFrame?n.requestAnimationFrame(ct):n.setTimeout(ct,k.fx.interval),k.fx.tick())}function ft(){return n.setTimeout(function(){ot=void 0}),ot=Date.now()}function dt(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=ae[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function pt(e,t,n){for(var r,i=(ht.tweeners[t]||[]).concat(ht.tweeners["*"]),a=0,o=i.length;a1)},removeAttr:function(e){return this.each(function(){k.removeAttr(this,e)})}}),k.extend({attr:function(e,t,n){var r,i,a=e.nodeType;if(3!==a&&8!==a&&2!==a)return void 0===e.getAttribute?k.prop(e,t,n):(1===a&&k.isXMLDoc(e)||(i=k.attrHooks[t.toLowerCase()]||(k.expr.match.bool.test(t)?gt:void 0)),void 0!==n?null===n?void k.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=k.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!y.radioValue&&"radio"===t&&D(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(j);if(i&&1===e.nodeType)for(;n=i[r++];)e.removeAttribute(n)}}),gt={set:function(e,t,n){return!1===t?k.removeAttr(e,n):e.setAttribute(n,n),n}},k.each(k.expr.match.bool.source.match(/\w+/g),function(e,t){var n=vt[t]||k.find.attr;vt[t]=function(e,t,r){var i,a,o=t.toLowerCase();return r||(a=vt[o],vt[o]=i,i=null!=n(e,t,r)?o:null,vt[o]=a),i}});var yt=/^(?:input|select|textarea|button)$/i,mt=/^(?:a|area)$/i;function bt(e){return(e.match(j)||[]).join(" ")}function xt(e){return e.getAttribute&&e.getAttribute("class")||""}function _t(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(j)||[]}k.fn.extend({prop:function(e,t){return W(this,k.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[k.propFix[e]||e]})}}),k.extend({prop:function(e,t,n){var r,i,a=e.nodeType;if(3!==a&&8!==a&&2!==a)return 1===a&&k.isXMLDoc(e)||(t=k.propFix[t]||t,i=k.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=k.find.attr(e,"tabindex");return t?parseInt(t,10):yt.test(e.nodeName)||mt.test(e.nodeName)&&e.href?0:-1}}},propFix:{for:"htmlFor",class:"className"}}),y.optSelected||(k.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),k.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){k.propFix[this.toLowerCase()]=this}),k.fn.extend({addClass:function(e){var t,n,r,i,a,o,s,l=0;if(m(e))return this.each(function(t){k(this).addClass(e.call(this,t,xt(this)))});if((t=_t(e)).length)for(;n=this[l++];)if(i=xt(n),r=1===n.nodeType&&" "+bt(i)+" "){for(o=0;a=t[o++];)r.indexOf(" "+a+" ")<0&&(r+=a+" ");i!==(s=bt(r))&&n.setAttribute("class",s)}return this},removeClass:function(e){var t,n,r,i,a,o,s,l=0;if(m(e))return this.each(function(t){k(this).removeClass(e.call(this,t,xt(this)))});if(!arguments.length)return this.attr("class","");if((t=_t(e)).length)for(;n=this[l++];)if(i=xt(n),r=1===n.nodeType&&" "+bt(i)+" "){for(o=0;a=t[o++];)for(;r.indexOf(" "+a+" ")>-1;)r=r.replace(" "+a+" "," ");i!==(s=bt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(e,t){var n=typeof e,r="string"===n||Array.isArray(e);return"boolean"==typeof t&&r?t?this.addClass(e):this.removeClass(e):m(e)?this.each(function(n){k(this).toggleClass(e.call(this,n,xt(this),t),t)}):this.each(function(){var t,i,a,o;if(r)for(i=0,a=k(this),o=_t(e);t=o[i++];)a.hasClass(t)?a.removeClass(t):a.addClass(t);else void 0!==e&&"boolean"!==n||((t=xt(this))&&J.set(this,"__className__",t),this.setAttribute&&this.setAttribute("class",t||!1===e?"":J.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;for(t=" "+e+" ";n=this[r++];)if(1===n.nodeType&&(" "+bt(xt(n))+" ").indexOf(t)>-1)return!0;return!1}});var wt=/\r/g;k.fn.extend({val:function(e){var t,n,r,i=this[0];return arguments.length?(r=m(e),this.each(function(n){var i;1===this.nodeType&&(null==(i=r?e.call(this,n,k(this).val()):e)?i="":"number"==typeof i?i+="":Array.isArray(i)&&(i=k.map(i,function(e){return null==e?"":e+""})),(t=k.valHooks[this.type]||k.valHooks[this.nodeName.toLowerCase()])&&"set"in t&&void 0!==t.set(this,i,"value")||(this.value=i))})):i?(t=k.valHooks[i.type]||k.valHooks[i.nodeName.toLowerCase()])&&"get"in t&&void 0!==(n=t.get(i,"value"))?n:"string"==typeof(n=i.value)?n.replace(wt,""):null==n?"":n:void 0}}),k.extend({valHooks:{option:{get:function(e){var t=k.find.attr(e,"value");return null!=t?t:bt(k.text(e))}},select:{get:function(e){var t,n,r,i=e.options,a=e.selectedIndex,o="select-one"===e.type,s=o?null:[],l=o?a+1:i.length;for(r=a<0?l:o?a:0;r-1)&&(n=!0);return n||(e.selectedIndex=-1),a}}}}),k.each(["radio","checkbox"],function(){k.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=k.inArray(k(e).val(),t)>-1}},y.checkOn||(k.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),y.focusin="onfocusin"in n;var kt=/^(?:focusinfocus|focusoutblur)$/,Et=function(e){e.stopPropagation()};k.extend(k.event,{trigger:function(e,t,r,i){var a,s,l,u,c,f,d,p,g=[r||o],v=h.call(e,"type")?e.type:e,y=h.call(e,"namespace")?e.namespace.split("."):[];if(s=p=l=r=r||o,3!==r.nodeType&&8!==r.nodeType&&!kt.test(v+k.event.triggered)&&(v.indexOf(".")>-1&&(v=(y=v.split(".")).shift(),y.sort()),c=v.indexOf(":")<0&&"on"+v,(e=e[k.expando]?e:new k.Event(v,"object"==typeof e&&e)).isTrigger=i?2:3,e.namespace=y.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+y.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=r),t=null==t?[e]:k.makeArray(t,[e]),d=k.event.special[v]||{},i||!d.trigger||!1!==d.trigger.apply(r,t))){if(!i&&!d.noBubble&&!b(r)){for(u=d.delegateType||v,kt.test(u+v)||(s=s.parentNode);s;s=s.parentNode)g.push(s),l=s;l===(r.ownerDocument||o)&&g.push(l.defaultView||l.parentWindow||n)}for(a=0;(s=g[a++])&&!e.isPropagationStopped();)p=s,e.type=a>1?u:d.bindType||v,(f=(J.get(s,"events")||{})[e.type]&&J.get(s,"handle"))&&f.apply(s,t),(f=c&&s[c])&&f.apply&&X(s)&&(e.result=f.apply(s,t),!1===e.result&&e.preventDefault());return e.type=v,i||e.isDefaultPrevented()||d._default&&!1!==d._default.apply(g.pop(),t)||!X(r)||c&&m(r[v])&&!b(r)&&((l=r[c])&&(r[c]=null),k.event.triggered=v,e.isPropagationStopped()&&p.addEventListener(v,Et),r[v](),e.isPropagationStopped()&&p.removeEventListener(v,Et),k.event.triggered=void 0,l&&(r[c]=l)),e.result}},simulate:function(e,t,n){var r=k.extend(new k.Event,n,{type:e,isSimulated:!0});k.event.trigger(r,null,t)}}),k.fn.extend({trigger:function(e,t){return this.each(function(){k.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return k.event.trigger(e,t,n,!0)}}),y.focusin||k.each({focus:"focusin",blur:"focusout"},function(e,t){var n=function(e){k.event.simulate(t,e.target,k.event.fix(e))};k.event.special[t]={setup:function(){var r=this.ownerDocument||this,i=J.access(r,t);i||r.addEventListener(e,n,!0),J.access(r,t,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this,i=J.access(r,t)-1;i?J.access(r,t,i):(r.removeEventListener(e,n,!0),J.remove(r,t))}}});var Tt=n.location,St=Date.now(),Ct=/\?/;k.parseXML=function(e){var t;if(!e||"string"!=typeof e)return null;try{t=(new n.DOMParser).parseFromString(e,"text/xml")}catch(e){t=void 0}return t&&!t.getElementsByTagName("parsererror").length||k.error("Invalid XML: "+e),t};var At=/\[\]$/,Ot=/\r?\n/g,Dt=/^(?:submit|button|image|reset|file)$/i,Rt=/^(?:input|select|textarea|keygen)/i;function Lt(e,t,n,r){var i;if(Array.isArray(t))k.each(t,function(t,i){n||At.test(e)?r(e,i):Lt(e+"["+("object"==typeof i&&null!=i?t:"")+"]",i,n,r)});else if(n||"object"!==w(t))r(e,t);else for(i in t)Lt(e+"["+i+"]",t[i],n,r)}k.param=function(e,t){var n,r=[],i=function(e,t){var n=m(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!k.isPlainObject(e))k.each(e,function(){i(this.name,this.value)});else for(n in e)Lt(n,e[n],t,i);return r.join("&")},k.fn.extend({serialize:function(){return k.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=k.prop(this,"elements");return e?k.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!k(this).is(":disabled")&&Rt.test(this.nodeName)&&!Dt.test(e)&&(this.checked||!ge.test(e))}).map(function(e,t){var n=k(this).val();return null==n?null:Array.isArray(n)?k.map(n,function(e){return{name:t.name,value:e.replace(Ot,"\r\n")}}):{name:t.name,value:n.replace(Ot,"\r\n")}}).get()}});var Pt=/%20/g,It=/#.*$/,Mt=/([?&])_=[^&]*/,Nt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Ft=/^(?:GET|HEAD)$/,jt=/^\/\//,Bt={},Ut={},Ht="*/".concat("*"),qt=o.createElement("a");function zt(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,a=t.toLowerCase().match(j)||[];if(m(n))for(;r=a[i++];)"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function Gt(e,t,n,r){var i={},a=e===Ut;function o(s){var l;return i[s]=!0,k.each(e[s]||[],function(e,s){var u=s(t,n,r);return"string"!=typeof u||a||i[u]?a?!(l=u):void 0:(t.dataTypes.unshift(u),o(u),!1)}),l}return o(t.dataTypes[0])||!i["*"]&&o("*")}function Wt(e,t){var n,r,i=k.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&k.extend(!0,e,r),e}qt.href=Tt.href,k.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Tt.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Tt.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Ht,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":JSON.parse,"text xml":k.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Wt(Wt(e,k.ajaxSettings),t):Wt(k.ajaxSettings,e)},ajaxPrefilter:zt(Bt),ajaxTransport:zt(Ut),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var r,i,a,s,l,u,c,f,d,p,h=k.ajaxSetup({},t),g=h.context||h,v=h.context&&(g.nodeType||g.jquery)?k(g):k.event,y=k.Deferred(),m=k.Callbacks("once memory"),b=h.statusCode||{},x={},_={},w="canceled",E={readyState:0,getResponseHeader:function(e){var t;if(c){if(!s)for(s={};t=Nt.exec(a);)s[t[1].toLowerCase()+" "]=(s[t[1].toLowerCase()+" "]||[]).concat(t[2]);t=s[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return c?a:null},setRequestHeader:function(e,t){return null==c&&(e=_[e.toLowerCase()]=_[e.toLowerCase()]||e,x[e]=t),this},overrideMimeType:function(e){return null==c&&(h.mimeType=e),this},statusCode:function(e){var t;if(e)if(c)E.always(e[E.status]);else for(t in e)b[t]=[b[t],e[t]];return this},abort:function(e){var t=e||w;return r&&r.abort(t),T(0,t),this}};if(y.promise(E),h.url=((e||h.url||Tt.href)+"").replace(jt,Tt.protocol+"//"),h.type=t.method||t.type||h.method||h.type,h.dataTypes=(h.dataType||"*").toLowerCase().match(j)||[""],null==h.crossDomain){u=o.createElement("a");try{u.href=h.url,u.href=u.href,h.crossDomain=qt.protocol+"//"+qt.host!=u.protocol+"//"+u.host}catch(e){h.crossDomain=!0}}if(h.data&&h.processData&&"string"!=typeof h.data&&(h.data=k.param(h.data,h.traditional)),Gt(Bt,h,t,E),c)return E;for(d in(f=k.event&&h.global)&&0==k.active++&&k.event.trigger("ajaxStart"),h.type=h.type.toUpperCase(),h.hasContent=!Ft.test(h.type),i=h.url.replace(It,""),h.hasContent?h.data&&h.processData&&0===(h.contentType||"").indexOf("application/x-www-form-urlencoded")&&(h.data=h.data.replace(Pt,"+")):(p=h.url.slice(i.length),h.data&&(h.processData||"string"==typeof h.data)&&(i+=(Ct.test(i)?"&":"?")+h.data,delete h.data),!1===h.cache&&(i=i.replace(Mt,"$1"),p=(Ct.test(i)?"&":"?")+"_="+St+++p),h.url=i+p),h.ifModified&&(k.lastModified[i]&&E.setRequestHeader("If-Modified-Since",k.lastModified[i]),k.etag[i]&&E.setRequestHeader("If-None-Match",k.etag[i])),(h.data&&h.hasContent&&!1!==h.contentType||t.contentType)&&E.setRequestHeader("Content-Type",h.contentType),E.setRequestHeader("Accept",h.dataTypes[0]&&h.accepts[h.dataTypes[0]]?h.accepts[h.dataTypes[0]]+("*"!==h.dataTypes[0]?", "+Ht+"; q=0.01":""):h.accepts["*"]),h.headers)E.setRequestHeader(d,h.headers[d]);if(h.beforeSend&&(!1===h.beforeSend.call(g,E,h)||c))return E.abort();if(w="abort",m.add(h.complete),E.done(h.success),E.fail(h.error),r=Gt(Ut,h,t,E)){if(E.readyState=1,f&&v.trigger("ajaxSend",[E,h]),c)return E;h.async&&h.timeout>0&&(l=n.setTimeout(function(){E.abort("timeout")},h.timeout));try{c=!1,r.send(x,T)}catch(e){if(c)throw e;T(-1,e)}}else T(-1,"No Transport");function T(e,t,o,s){var u,d,p,x,_,w=t;c||(c=!0,l&&n.clearTimeout(l),r=void 0,a=s||"",E.readyState=e>0?4:0,u=e>=200&&e<300||304===e,o&&(x=function(e,t,n){for(var r,i,a,o,s=e.contents,l=e.dataTypes;"*"===l[0];)l.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){l.unshift(i);break}if(l[0]in n)a=l[0];else{for(i in n){if(!l[0]||e.converters[i+" "+l[0]]){a=i;break}o||(o=i)}a=a||o}if(a)return a!==l[0]&&l.unshift(a),n[a]}(h,E,o)),x=function(e,t,n,r){var i,a,o,s,l,u={},c=e.dataTypes.slice();if(c[1])for(o in e.converters)u[o.toLowerCase()]=e.converters[o];for(a=c.shift();a;)if(e.responseFields[a]&&(n[e.responseFields[a]]=t),!l&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),l=a,a=c.shift())if("*"===a)a=l;else if("*"!==l&&l!==a){if(!(o=u[l+" "+a]||u["* "+a]))for(i in u)if((s=i.split(" "))[1]===a&&(o=u[l+" "+s[0]]||u["* "+s[0]])){!0===o?o=u[i]:!0!==u[i]&&(a=s[0],c.unshift(s[1]));break}if(!0!==o)if(o&&e.throws)t=o(t);else try{t=o(t)}catch(e){return{state:"parsererror",error:o?e:"No conversion from "+l+" to "+a}}}return{state:"success",data:t}}(h,x,E,u),u?(h.ifModified&&((_=E.getResponseHeader("Last-Modified"))&&(k.lastModified[i]=_),(_=E.getResponseHeader("etag"))&&(k.etag[i]=_)),204===e||"HEAD"===h.type?w="nocontent":304===e?w="notmodified":(w=x.state,d=x.data,u=!(p=x.error))):(p=w,!e&&w||(w="error",e<0&&(e=0))),E.status=e,E.statusText=(t||w)+"",u?y.resolveWith(g,[d,w,E]):y.rejectWith(g,[E,w,p]),E.statusCode(b),b=void 0,f&&v.trigger(u?"ajaxSuccess":"ajaxError",[E,h,u?d:p]),m.fireWith(g,[E,w]),f&&(v.trigger("ajaxComplete",[E,h]),--k.active||k.event.trigger("ajaxStop")))}return E},getJSON:function(e,t,n){return k.get(e,t,n,"json")},getScript:function(e,t){return k.get(e,void 0,t,"script")}}),k.each(["get","post"],function(e,t){k[t]=function(e,n,r,i){return m(n)&&(i=i||r,r=n,n=void 0),k.ajax(k.extend({url:e,type:t,dataType:i,data:n,success:r},k.isPlainObject(e)&&e))}}),k._evalUrl=function(e,t){return k.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){k.globalEval(e,t)}})},k.fn.extend({wrapAll:function(e){var t;return this[0]&&(m(e)&&(e=e.call(this[0])),t=k(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){for(var e=this;e.firstElementChild;)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(e){return m(e)?this.each(function(t){k(this).wrapInner(e.call(this,t))}):this.each(function(){var t=k(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=m(e);return this.each(function(n){k(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(e){return this.parent(e).not("body").each(function(){k(this).replaceWith(this.childNodes)}),this}}),k.expr.pseudos.hidden=function(e){return!k.expr.pseudos.visible(e)},k.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},k.ajaxSettings.xhr=function(){try{return new n.XMLHttpRequest}catch(e){}};var Kt={0:200,1223:204},Vt=k.ajaxSettings.xhr();y.cors=!!Vt&&"withCredentials"in Vt,y.ajax=Vt=!!Vt,k.ajaxTransport(function(e){var t,r;if(y.cors||Vt&&!e.crossDomain)return{send:function(i,a){var o,s=e.xhr();if(s.open(e.type,e.url,e.async,e.username,e.password),e.xhrFields)for(o in e.xhrFields)s[o]=e.xhrFields[o];for(o in e.mimeType&&s.overrideMimeType&&s.overrideMimeType(e.mimeType),e.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest"),i)s.setRequestHeader(o,i[o]);t=function(e){return function(){t&&(t=r=s.onload=s.onerror=s.onabort=s.ontimeout=s.onreadystatechange=null,"abort"===e?s.abort():"error"===e?"number"!=typeof s.status?a(0,"error"):a(s.status,s.statusText):a(Kt[s.status]||s.status,s.statusText,"text"!==(s.responseType||"text")||"string"!=typeof s.responseText?{binary:s.response}:{text:s.responseText},s.getAllResponseHeaders()))}},s.onload=t(),r=s.onerror=s.ontimeout=t("error"),void 0!==s.onabort?s.onabort=r:s.onreadystatechange=function(){4===s.readyState&&n.setTimeout(function(){t&&r()})},t=t("abort");try{s.send(e.hasContent&&e.data||null)}catch(e){if(t)throw e}},abort:function(){t&&t()}}}),k.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),k.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return k.globalEval(e),e}}}),k.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),k.ajaxTransport("script",function(e){var t,n;if(e.crossDomain||e.scriptAttrs)return{send:function(r,i){t=k(" @endsection \ No newline at end of file diff --git a/resources/views/frontend/order/hand_pay.blade.php b/resources/views/frontend/order/hand_pay.blade.php index 26cf494e1..ef3f11206 100644 --- a/resources/views/frontend/order/hand_pay.blade.php +++ b/resources/views/frontend/order/hand_pay.blade.php @@ -10,10 +10,17 @@

手动打款

+ @if($needPaidTotal > 0)

订单号 {{$order['order_id']}}

-

支付总额 ¥{{$needPaidTotal}}

+

需支付总额 ¥{{$needPaidTotal}}

+ @else +
+

订单号 {{$order['order_id']}}

+

已支付

+
+ @endif
{!! $intro !!}
diff --git a/resources/views/h5/auth/register.blade.php b/resources/views/h5/auth/register.blade.php index ab5b6f129..7f8388905 100644 --- a/resources/views/h5/auth/register.blade.php +++ b/resources/views/h5/auth/register.blade.php @@ -28,9 +28,9 @@
+ name="agree_protocol" {{ old('remember') ? 'checked' : '' }}> 同意 + 《 用户协议》《隐私政策》
@@ -45,7 +45,7 @@ + + @yield('css') \ No newline at end of file diff --git a/resources/views/layouts/h5-pure.blade.php b/resources/views/layouts/h5-pure.blade.php index 51975c44e..f52b30718 100644 --- a/resources/views/layouts/h5-pure.blade.php +++ b/resources/views/layouts/h5-pure.blade.php @@ -9,10 +9,10 @@ {{$title ?? 'MeEdu'}} - + - + @yield('css') diff --git a/resources/views/layouts/h5.blade.php b/resources/views/layouts/h5.blade.php index b0fe9942c..169156011 100644 --- a/resources/views/layouts/h5.blade.php +++ b/resources/views/layouts/h5.blade.php @@ -9,10 +9,11 @@ {{$title ?? 'MeEdu'}} - - + + - + @yield('css') @@ -59,6 +60,10 @@ class="icon">会员中心 @endif + + + 我的积分 + 我的课程 diff --git a/resources/views/layouts/member.blade.php b/resources/views/layouts/member.blade.php index 9bdb72dfd..7c2496717 100644 --- a/resources/views/layouts/member.blade.php +++ b/resources/views/layouts/member.blade.php @@ -43,6 +43,15 @@
+ +
+ + 我的积分 +
+
+ +
+
diff --git a/routes/apiv2.php b/routes/apiv2.php index 01cedd0fb..3edf98702 100644 --- a/routes/apiv2.php +++ b/routes/apiv2.php @@ -27,6 +27,7 @@ Route::get('/course/{id}/comments', 'CourseController@comments'); Route::post('/course/{id}/comment', 'CourseController@createComment')->middleware(['auth:apiv2']); Route::get('/course/{id}/like', 'CourseController@like')->middleware(['auth:apiv2']); +Route::get('/course/attach/{id}/download', 'CourseController@attachDownload')->middleware(['auth:apiv2']); // 全部课程分类 Route::get('/course_categories', 'CourseCategoryController@all'); @@ -82,6 +83,7 @@ Route::get('notificationMarkAsRead/{notificationId}', 'MemberController@notificationMarkAsRead'); Route::get('notificationMarkAllAsRead', 'MemberController@notificationMarkAllAsRead'); Route::get('unreadNotificationCount', 'MemberController@unreadNotificationCount'); + Route::get('credit1Records', 'MemberController@credit1Records'); }); Route::group(['middleware' => ['auth:apiv2']], function () { diff --git a/routes/backend-api.php b/routes/backend-api.php index 8c07be895..408c8be36 100644 --- a/routes/backend-api.php +++ b/routes/backend-api.php @@ -1,9 +1,17 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + Route::post('/login', 'LoginController@login'); Route::group(['middleware' => ['auth:administrator', 'backend.permission']], function () { - Route::get('/user', 'LoginController@user'); Route::get('/menus', 'LoginController@menus'); @@ -132,6 +140,13 @@ Route::get('/{id}/subscribe/users', 'CourseController@subscribeUsers'); }); + // 课程 + Route::group(['prefix' => 'course_attach'], function () { + Route::get('/', 'CourseAttachController@index'); + Route::post('/', 'CourseAttachController@store'); + Route::delete('/{id}', 'CourseAttachController@destroy'); + }); + // 视频 Route::group(['prefix' => 'video'], function () { Route::get('/', 'CourseVideoController@index'); @@ -157,6 +172,7 @@ Route::get('/{id}/detail/userHistory', 'MemberController@userHistory'); Route::get('/{id}/detail/userOrders', 'MemberController@userOrders'); Route::get('/{id}/detail/userInvite', 'MemberController@userInvite'); + Route::get('/{id}/detail/credit1Records', 'MemberController@credit1Records'); Route::post('/', 'MemberController@store'); Route::put('/{id}', 'MemberController@update'); @@ -236,4 +252,4 @@ // 每日课程观看时长统计 Route::get('/courseWatchDuration', 'StatisticController@courseWatchDuration'); }); -}); \ No newline at end of file +}); diff --git a/routes/web.php b/routes/web.php index 8cc350f76..0b5813c7e 100644 --- a/routes/web.php +++ b/routes/web.php @@ -12,6 +12,7 @@ Route::get('/', 'Frontend\IndexController@index')->name('index'); Route::redirect('/home', '/'); Route::get('/user/protocol', 'Frontend\IndexController@userProtocol')->name('user.protocol'); +Route::get('/user/private_protocol', 'Frontend\IndexController@userPrivateProtocol')->name('user.private_protocol'); Route::get('/aboutus', 'Frontend\IndexController@aboutus')->name('aboutus'); // 登录 Route::get('/login', 'Frontend\LoginController@showLoginPage')->name('login'); @@ -46,6 +47,7 @@ Route::get('/videos', 'Frontend\VideoController@index')->name('videos'); // 课程详情 Route::get('/course/{id}/{slug}', 'Frontend\CourseController@show')->name('course.show'); +Route::get('/course/attach/{id}/download', 'Frontend\CourseController@attachDownload')->name('course.attach.download')->middleware(['auth']); // 视频详情 Route::get('/course/{course_id}/video/{id}/{slug}', 'Frontend\VideoController@show')->name('video.show'); // 搜索 @@ -84,6 +86,7 @@ Route::get('/promo_code', 'MemberController@showPromoCodePage')->name('member.promo_code'); Route::post('/promo_code', 'MemberController@generatePromoCode'); Route::post('/invite_balance_withdraw_orders', 'MemberController@createInviteBalanceWithdrawOrder'); + Route::get('/credit1_records', 'MemberController@credit1Records')->name('member.credit1_records'); // 图片上传 Route::post('/upload/image', 'UploadController@imageHandler')->name('upload.image'); diff --git a/server.php b/server.php index 5fb6379e7..f464194d3 100644 --- a/server.php +++ b/server.php @@ -1,10 +1,12 @@ + * (c) XiaoTeng <616896861@qq.com> + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. */ $uri = urldecode( diff --git a/tests/Commands/AddonsProviderMapGeneratorTest.php b/tests/Commands/AddonsProviderMapGeneratorTest.php index ad25e0b4f..e6e02a1c8 100644 --- a/tests/Commands/AddonsProviderMapGeneratorTest.php +++ b/tests/Commands/AddonsProviderMapGeneratorTest.php @@ -1,14 +1,20 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ namespace Tests\Commands; - use Tests\OriginalTestCase; class AddonsProviderMapGeneratorTest extends OriginalTestCase { - public function tearDown(): void { @unlink(base_path('addons/addons_service_provider.json')); @@ -20,5 +26,4 @@ public function test_ad_from_sync_command() $this->artisan('addons:provider:map') ->assertExitCode(0); } - -} \ No newline at end of file +} diff --git a/tests/Commands/ApplicationInstallCommandTest.php b/tests/Commands/ApplicationInstallCommandTest.php index 1168f6140..d3f6d2a64 100644 --- a/tests/Commands/ApplicationInstallCommandTest.php +++ b/tests/Commands/ApplicationInstallCommandTest.php @@ -1,20 +1,25 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ namespace Tests\Commands; - +use Illuminate\Support\Str; +use Tests\OriginalTestCase; use App\Models\Administrator; -use App\Models\AdministratorMenu; -use App\Models\AdministratorPermission; use App\Models\AdministratorRole; use Illuminate\Support\Facades\Hash; -use Illuminate\Support\Str; -use Tests\OriginalTestCase; +use App\Models\AdministratorPermission; class ApplicationInstallCommandTest extends OriginalTestCase { - public function test_install_administrator() { $this->artisan('install', ['action' => 'administrator']) @@ -109,5 +114,4 @@ public function test_install_role() $count = AdministratorPermission::count(); $this->assertGreaterThan(0, $count); } - -} \ No newline at end of file +} diff --git a/tests/Commands/InstallLockCommandTest.php b/tests/Commands/InstallLockCommandTest.php index 4360e8c46..612154ba4 100644 --- a/tests/Commands/InstallLockCommandTest.php +++ b/tests/Commands/InstallLockCommandTest.php @@ -1,5 +1,13 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ namespace Tests\Commands; @@ -7,7 +15,6 @@ class InstallLockCommandTest extends OriginalTestCase { - public function setUp(): void { parent::setUp(); @@ -25,6 +32,4 @@ public function test_run() $this->artisan('install:lock'); $this->assertTrue(file_exists(storage_path('install.lock'))); } - - -} \ No newline at end of file +} diff --git a/tests/Commands/MemberRoleExpiredHandlerCommandTest.php b/tests/Commands/MemberRoleExpiredHandlerCommandTest.php index 180b8cab4..8b7075d8e 100644 --- a/tests/Commands/MemberRoleExpiredHandlerCommandTest.php +++ b/tests/Commands/MemberRoleExpiredHandlerCommandTest.php @@ -1,5 +1,13 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ namespace Tests\Commands; @@ -7,10 +15,8 @@ class MemberRoleExpiredHandlerCommandTest extends OriginalTestCase { - public function test_run() { $this->artisan('member:role:expired')->assertExitCode(0); } - -} \ No newline at end of file +} diff --git a/tests/Commands/OrderHandlerCommandTest.php b/tests/Commands/OrderHandlerCommandTest.php index f71a09435..c2949a500 100644 --- a/tests/Commands/OrderHandlerCommandTest.php +++ b/tests/Commands/OrderHandlerCommandTest.php @@ -1,12 +1,20 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ namespace Tests\Commands; -use App\Services\Member\Models\User; -use App\Services\Order\Models\Order; use Illuminate\Support\Str; use Tests\OriginalTestCase; +use App\Services\Member\Models\User; +use App\Services\Order\Models\Order; class OrderHandlerCommandTest extends OriginalTestCase { @@ -52,5 +60,4 @@ public function test_order_handler_with_paid_order() $this->artisan('order:success', ['order_id' => $order->order_id]) ->expectsOutput('order has paid.'); } - -} \ No newline at end of file +} diff --git a/tests/Commands/OrderPayTimeoutCommandTest.php b/tests/Commands/OrderPayTimeoutCommandTest.php index ed077415b..277396ea5 100644 --- a/tests/Commands/OrderPayTimeoutCommandTest.php +++ b/tests/Commands/OrderPayTimeoutCommandTest.php @@ -1,16 +1,23 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ namespace Tests\Commands; -use App\Services\Order\Models\Order; use Carbon\Carbon; use Illuminate\Support\Str; use Tests\OriginalTestCase; +use App\Services\Order\Models\Order; class OrderPayTimeoutCommandTest extends OriginalTestCase { - public function test_order_pay_timeout() { $this->artisan('order:pay:timeout') @@ -56,5 +63,4 @@ public function test_order_pay_timeout_with_paying_order() $order->refresh(); $this->assertEquals(Order::STATUS_CANCELED, $order->status); } - -} \ No newline at end of file +} diff --git a/tests/Commands/TemplatePublicLinkCommandTest.php b/tests/Commands/TemplatePublicLinkCommandTest.php index 5db82f0a2..646d25976 100644 --- a/tests/Commands/TemplatePublicLinkCommandTest.php +++ b/tests/Commands/TemplatePublicLinkCommandTest.php @@ -1,15 +1,21 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ namespace Tests\Commands; - -use Illuminate\Filesystem\Filesystem; use Tests\OriginalTestCase; +use Illuminate\Filesystem\Filesystem; class TemplatePublicLinkCommandTest extends OriginalTestCase { - public function test_run() { $this->artisan('template:public', ['template' => 'demo']) @@ -28,5 +34,4 @@ public function test_run() $file->deleteDirectory(base_path('templates/demo')); $file->delete(base_path('public/templates/demo')); } - -} \ No newline at end of file +} diff --git a/tests/Commands/TemplateSwitchCommandTest.php b/tests/Commands/TemplateSwitchCommandTest.php index 37299c508..37e4fb49c 100644 --- a/tests/Commands/TemplateSwitchCommandTest.php +++ b/tests/Commands/TemplateSwitchCommandTest.php @@ -1,16 +1,22 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ namespace Tests\Commands; - use App\Meedu\Setting; -use Illuminate\Filesystem\Filesystem; use Tests\OriginalTestCase; +use Illuminate\Filesystem\Filesystem; class TemplateSwitchCommandTest extends OriginalTestCase { - public function tearDown(): void { $config = []; @@ -46,5 +52,4 @@ public function test_run_with_default() $this->assertEquals(resource_path('views'), config('meedu.system.theme.path')); } - -} \ No newline at end of file +} diff --git a/tests/CreatesApplication.php b/tests/CreatesApplication.php index a247c87b3..489f8868b 100644 --- a/tests/CreatesApplication.php +++ b/tests/CreatesApplication.php @@ -1,10 +1,19 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + namespace Tests; -use Illuminate\Contracts\Console\Kernel; -use Illuminate\Foundation\Application; use Illuminate\Support\Facades\Hash; +use Illuminate\Foundation\Application; +use Illuminate\Contracts\Console\Kernel; trait CreatesApplication { diff --git a/tests/Feature/Api/V2/Base.php b/tests/Feature/Api/V2/Base.php index c97068826..18fbdb546 100644 --- a/tests/Feature/Api/V2/Base.php +++ b/tests/Feature/Api/V2/Base.php @@ -12,7 +12,6 @@ namespace Tests\Feature\Api\V2; use Tests\TestCase; -use Illuminate\Support\Facades\Log; class Base extends TestCase { diff --git a/tests/Feature/Api/V2/CaptchaImageTest.php b/tests/Feature/Api/V2/CaptchaImageTest.php index f21a365d6..a3edcd5cf 100644 --- a/tests/Feature/Api/V2/CaptchaImageTest.php +++ b/tests/Feature/Api/V2/CaptchaImageTest.php @@ -1,16 +1,21 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ namespace Tests\Feature\Api\V2; - class CaptchaImageTest extends Base { - public function test_captchaImage() { $this->get('/api/v2/captcha/image') ->seeStatusCode(200); } - -} \ No newline at end of file +} diff --git a/tests/Feature/Api/V2/CaptchaSmsTest.php b/tests/Feature/Api/V2/CaptchaSmsTest.php index 711641778..b607db993 100644 --- a/tests/Feature/Api/V2/CaptchaSmsTest.php +++ b/tests/Feature/Api/V2/CaptchaSmsTest.php @@ -1,11 +1,19 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ namespace Tests\Feature\Api\V2; -use App\Constant\ApiV2Constant; -use Mews\Captcha\Captcha; use Mockery; +use Mews\Captcha\Captcha; +use App\Constant\ApiV2Constant; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; class CaptchaSmsTest extends Base @@ -24,36 +32,32 @@ public function tearDown(): void parent::tearDown(); } -public -function test_captcha_sms_with_no_error_image_captcha() -{ - $response = $this->postJson('/api/v2/captcha/sms', [ + public function test_captcha_sms_with_no_error_image_captcha() + { + $response = $this->postJson('/api/v2/captcha/sms', [ 'mobile' => '13890900909', 'mobile_code' => '123456', 'scene' => 'login', 'image_key' => 'image_key', 'image_captcha' => 'image_captcha', ]); - $this->assertResponseError($response, __(ApiV2Constant::IMAGE_CAPTCHA_ERROR)); -} + $this->assertResponseError($response, __(ApiV2Constant::IMAGE_CAPTCHA_ERROR)); + } -public -function test_captcha_sms_with_no_correct_image_captcha() -{ - // mock - $captchaMock = Mockery::mock(Captcha::class); - $captchaMock->shouldReceive('check_api')->withAnyArgs()->andReturnFalse(); - $this->app->instance(Captcha::class, $captchaMock); + public function test_captcha_sms_with_no_correct_image_captcha() + { + // mock + $captchaMock = Mockery::mock(Captcha::class); + $captchaMock->shouldReceive('check_api')->withAnyArgs()->andReturnFalse(); + $this->app->instance(Captcha::class, $captchaMock); - $response = $this->postJson('/api/v2/captcha/sms', [ + $response = $this->postJson('/api/v2/captcha/sms', [ 'mobile' => '13890900909', 'mobile_code' => '123456', 'scene' => 'login', 'image_key' => '123456', 'image_captcha' => 'image_captcha', ]); - $this->assertResponseError($response, __('image_captcha_error')); + $this->assertResponseError($response, __('image_captcha_error')); + } } - - -} \ No newline at end of file diff --git a/tests/Feature/Api/V2/CourseCategoriesTest.php b/tests/Feature/Api/V2/CourseCategoriesTest.php index 92139a4bc..c89db052d 100644 --- a/tests/Feature/Api/V2/CourseCategoriesTest.php +++ b/tests/Feature/Api/V2/CourseCategoriesTest.php @@ -1,5 +1,13 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ namespace Tests\Feature\Api\V2; @@ -7,7 +15,6 @@ class CourseCategoriesTest extends Base { - public function test_courses() { factory(CourseCategory::class, 10)->create([ @@ -17,5 +24,4 @@ public function test_courses() $r = $this->assertResponseSuccess($response); $this->assertEquals(10, count($r['data'])); } - -} \ No newline at end of file +} diff --git a/tests/Feature/Api/V2/MemberTest.php b/tests/Feature/Api/V2/MemberTest.php index 3b0487fc9..a5916a950 100644 --- a/tests/Feature/Api/V2/MemberTest.php +++ b/tests/Feature/Api/V2/MemberTest.php @@ -21,6 +21,7 @@ use App\Services\Member\Models\UserCourse; use App\Services\Member\Models\UserLikeCourse; use App\Services\Course\Models\CourseUserRecord; +use App\Services\Member\Models\UserCreditRecord; use App\Services\Member\Models\UserJoinRoleRecord; use App\Services\Base\Interfaces\CacheServiceInterface; use App\Services\Member\Models\UserInviteBalanceRecord; @@ -292,4 +293,35 @@ public function test_messages_unreadNotificationCount() $response = $this->assertResponseSuccess($response); $this->assertEquals(3, $response['data']); } + + public function test_credit1Records() + { + UserCreditRecord::create([ + 'field' => 'credit1', + 'user_id' => $this->member->id, + 'sum' => 101, + 'remark' => 'meedu test1' + ]); + UserCreditRecord::create([ + 'field' => 'credit1', + 'user_id' => $this->member->id, + 'sum' => 102, + 'remark' => 'meedu test2' + ]); + UserCreditRecord::create([ + 'field' => 'credit1', + 'user_id' => $this->member->id, + 'sum' => 103, + 'remark' => 'meedu test3' + ]); + $response = $this->user($this->member)->getJson('api/v2/member/credit1Records?page=1&page_size=8'); + $response = $this->assertResponseSuccess($response); + $this->assertEquals(3, $response['data']['total']); + $this->assertEquals(3, count($response['data']['data'])); + + $response = $this->user($this->member)->getJson('api/v2/member/credit1Records?page=2&page_size=8'); + $response = $this->assertResponseSuccess($response); + $this->assertEquals(3, $response['data']['total']); + $this->assertEquals(0, count($response['data']['data'])); + } } diff --git a/tests/Feature/Api/V2/OrderTest.php b/tests/Feature/Api/V2/OrderTest.php index 90b1beb6c..9f9fd221e 100644 --- a/tests/Feature/Api/V2/OrderTest.php +++ b/tests/Feature/Api/V2/OrderTest.php @@ -1,22 +1,28 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ namespace Tests\Feature\Api\V2; - -use App\Services\Course\Models\Course; -use App\Services\Course\Models\Video; +use Carbon\Carbon; use App\Services\Member\Models\Role; use App\Services\Member\Models\User; -use App\Services\Member\Models\UserCourse; +use App\Services\Course\Models\Video; +use App\Services\Course\Models\Course; +use App\Services\Order\Models\PromoCode; use App\Services\Member\Models\UserVideo; +use App\Services\Member\Models\UserCourse; use App\Services\Order\Models\OrderPaidRecord; -use App\Services\Order\Models\PromoCode; -use Carbon\Carbon; class OrderTest extends Base { - public function test_createCourseOrder() { $user = factory(User::class)->create(); @@ -248,5 +254,4 @@ public function test_createVideoOrder_with_promo_code() $this->assertEquals(10, OrderPaidRecord::whereOrderId($order['data']['id'])->sum('paid_total')); } - -} \ No newline at end of file +} diff --git a/tests/Feature/Api/V2/PromoCodeTest.php b/tests/Feature/Api/V2/PromoCodeTest.php index 114ac06c0..d70fe2abc 100644 --- a/tests/Feature/Api/V2/PromoCodeTest.php +++ b/tests/Feature/Api/V2/PromoCodeTest.php @@ -1,15 +1,21 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ namespace Tests\Feature\Api\V2; - use App\Services\Member\Models\User; use App\Services\Order\Models\PromoCode; class PromoCodeTest extends Base { - public function test_detail() { $promoCode = factory(PromoCode::class)->create(['code' => 1234]); @@ -26,5 +32,4 @@ public function test_check() $res = $this->assertResponseSuccess($response); $this->assertEquals(1, $res['data']['can_use']); } - -} \ No newline at end of file +} diff --git a/tests/Feature/Api/V2/RegisterMobileTest.php b/tests/Feature/Api/V2/RegisterMobileTest.php index 0a96e635a..8e7e05ddb 100644 --- a/tests/Feature/Api/V2/RegisterMobileTest.php +++ b/tests/Feature/Api/V2/RegisterMobileTest.php @@ -1,16 +1,22 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ namespace Tests\Feature\Api\V2; - use App\Constant\ApiV2Constant; -use App\Services\Base\Interfaces\CacheServiceInterface; use App\Services\Member\Models\User; +use App\Services\Base\Interfaces\CacheServiceInterface; class RegisterMobileTest extends Base { - public function test_register_mobile_with_error_code() { $response = $this->postJson('/api/v2/register/mobile', [ @@ -44,6 +50,4 @@ public function test_register_mobile_with_exists_mobile() ]); $this->assertResponseError($response, __(ApiV2Constant::MOBILE_HAS_EXISTS)); } - - -} \ No newline at end of file +} diff --git a/tests/Feature/Api/V2/RoleTest.php b/tests/Feature/Api/V2/RoleTest.php index 9913d2308..9aec778f7 100644 --- a/tests/Feature/Api/V2/RoleTest.php +++ b/tests/Feature/Api/V2/RoleTest.php @@ -1,14 +1,20 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ namespace Tests\Feature\Api\V2; - use App\Services\Member\Models\Role; class RoleTest extends Base { - public function test_roles() { factory(Role::class, 4)->create(); @@ -16,5 +22,4 @@ public function test_roles() $r = $this->assertResponseSuccess($r); $this->assertEquals(4, count($r['data'])); } - -} \ No newline at end of file +} diff --git a/tests/Feature/BackendApi/AdFromTest.php b/tests/Feature/BackendApi/AdFromTest.php index a30f51a80..2ef5d960c 100644 --- a/tests/Feature/BackendApi/AdFromTest.php +++ b/tests/Feature/BackendApi/AdFromTest.php @@ -1,16 +1,23 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ namespace Tests\Feature\BackendApi; use App\Models\Administrator; use App\Models\AdministratorRole; -use App\Services\Other\Models\AdFrom; use Illuminate\Support\Facades\DB; +use App\Services\Other\Models\AdFrom; class AdFromTest extends Base { - public const MODEL = AdFrom::class; public const MODEL_NAME = 'ad_from'; @@ -79,5 +86,4 @@ public function test_destroy() $model = self::MODEL; $this->assertEmpty($model::find($item->id)); } - -} \ No newline at end of file +} diff --git a/tests/Feature/BackendApi/AdministratorTest.php b/tests/Feature/BackendApi/AdministratorTest.php index 161823287..ba6489053 100644 --- a/tests/Feature/BackendApi/AdministratorTest.php +++ b/tests/Feature/BackendApi/AdministratorTest.php @@ -1,5 +1,13 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ namespace Tests\Feature\BackendApi; @@ -9,7 +17,6 @@ class AdministratorTest extends Base { - public const MODEL = Administrator::class; public const MODEL_NAME = 'administrator'; @@ -74,5 +81,4 @@ public function test_destroy() // 超管无法删除 $this->assertResponseSuccess($response); } - -} \ No newline at end of file +} diff --git a/tests/Feature/BackendApi/AnnouncementTest.php b/tests/Feature/BackendApi/AnnouncementTest.php index fba5e8854..9aec990c9 100644 --- a/tests/Feature/BackendApi/AnnouncementTest.php +++ b/tests/Feature/BackendApi/AnnouncementTest.php @@ -1,16 +1,23 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ namespace Tests\Feature\BackendApi; use App\Models\Administrator; use App\Models\AdministratorRole; -use App\Services\Other\Models\Announcement; use Illuminate\Support\Facades\DB; +use App\Services\Other\Models\Announcement; class AnnouncementTest extends Base { - public const MODEL = Announcement::class; public const MODEL_NAME = 'announcement'; @@ -79,5 +86,4 @@ public function test_destroy() $model = self::MODEL; $this->assertEmpty($model::find($item->id)); } - -} \ No newline at end of file +} diff --git a/tests/Feature/BackendApi/Base.php b/tests/Feature/BackendApi/Base.php index eec1df5e7..4effd6f02 100644 --- a/tests/Feature/BackendApi/Base.php +++ b/tests/Feature/BackendApi/Base.php @@ -1,14 +1,20 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ namespace Tests\Feature\BackendApi; - use Tests\TestCase; class Base extends TestCase { - public const API_V1_PREFIX = '/backend/api/v1'; protected function user($user) @@ -31,5 +37,4 @@ public function assertResponseSuccess($response) $this->assertEquals(0, $c['status']); return $c; } - -} \ No newline at end of file +} diff --git a/tests/Feature/BackendApi/CourseCategoryTest.php b/tests/Feature/BackendApi/CourseCategoryTest.php index e514e49dc..4ebbe5173 100644 --- a/tests/Feature/BackendApi/CourseCategoryTest.php +++ b/tests/Feature/BackendApi/CourseCategoryTest.php @@ -1,17 +1,23 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ namespace Tests\Feature\BackendApi; use App\Models\Administrator; use App\Models\AdministratorRole; -use App\Services\Course\Models\CourseCategory; -use App\Services\Other\Models\Nav; use Illuminate\Support\Facades\DB; +use App\Services\Course\Models\CourseCategory; class CourseCategoryTest extends Base { - public const MODEL = CourseCategory::class; public const MODEL_NAME = 'courseCategory'; @@ -80,5 +86,4 @@ public function test_destroy() $model = self::MODEL; $this->assertEmpty($model::find($item->id)); } - -} \ No newline at end of file +} diff --git a/tests/Feature/BackendApi/DashboardTest.php b/tests/Feature/BackendApi/DashboardTest.php index cf2c362c4..5a369051b 100644 --- a/tests/Feature/BackendApi/DashboardTest.php +++ b/tests/Feature/BackendApi/DashboardTest.php @@ -1,15 +1,21 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ namespace Tests\Feature\BackendApi; - use App\Meedu\MeEdu; use App\Models\Administrator; class DashboardTest extends Base { - public function test_dashboard() { $admin = factory(Administrator::class)->create(); @@ -25,6 +31,4 @@ public function test_system_info() $this->assertEquals(PHP_VERSION, $data['data']['php_version']); $this->assertEquals(MeEdu::VERSION, $data['data']['meedu_version']); } - - -} \ No newline at end of file +} diff --git a/tests/Feature/BackendApi/IndexBannerTest.php b/tests/Feature/BackendApi/IndexBannerTest.php index f7d4dfddb..0ceb10285 100644 --- a/tests/Feature/BackendApi/IndexBannerTest.php +++ b/tests/Feature/BackendApi/IndexBannerTest.php @@ -1,16 +1,23 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ namespace Tests\Feature\BackendApi; use App\Models\Administrator; use App\Models\AdministratorRole; -use App\Services\Other\Models\IndexBanner; use Illuminate\Support\Facades\DB; +use App\Services\Other\Models\IndexBanner; class IndexBannerTest extends Base { - public const MODEL = IndexBanner::class; public const MODEL_NAME = 'indexBanner'; @@ -83,5 +90,4 @@ public function test_destroy() $model = self::MODEL; $this->assertEmpty($model::find($item->id)); } - -} \ No newline at end of file +} diff --git a/tests/Feature/BackendApi/LinkTest.php b/tests/Feature/BackendApi/LinkTest.php index 4b0be3649..252a085a7 100644 --- a/tests/Feature/BackendApi/LinkTest.php +++ b/tests/Feature/BackendApi/LinkTest.php @@ -1,17 +1,23 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ namespace Tests\Feature\BackendApi; - use App\Models\Administrator; use App\Models\AdministratorRole; -use App\Services\Other\Models\Link; use Illuminate\Support\Facades\DB; +use App\Services\Other\Models\Link; class LinkTest extends Base { - protected $admin; protected $role; @@ -83,6 +89,4 @@ public function test_destroy() $data = $this->assertResponseSuccess($response); $this->assertEmpty(Link::find($link->id)); } - - -} \ No newline at end of file +} diff --git a/tests/Feature/BackendApi/LoginTest.php b/tests/Feature/BackendApi/LoginTest.php index 706237557..86d1c9a24 100644 --- a/tests/Feature/BackendApi/LoginTest.php +++ b/tests/Feature/BackendApi/LoginTest.php @@ -1,5 +1,13 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ namespace Tests\Feature\BackendApi; @@ -8,7 +16,6 @@ class LoginTest extends Base { - public function test_with_correct_password() { $administrator = factory(Administrator::class)->create([ @@ -45,5 +52,4 @@ public function test_with_uncorrect_username() ]); $this->assertResponseError($response); } - -} \ No newline at end of file +} diff --git a/tests/Feature/BackendApi/NavTest.php b/tests/Feature/BackendApi/NavTest.php index 8d67700fa..27dd3f459 100644 --- a/tests/Feature/BackendApi/NavTest.php +++ b/tests/Feature/BackendApi/NavTest.php @@ -1,5 +1,13 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ namespace Tests\Feature\BackendApi; @@ -10,7 +18,6 @@ class NavTest extends Base { - public const MODEL = Nav::class; public const MODEL_NAME = 'nav'; @@ -80,5 +87,4 @@ public function test_destroy() $model = self::MODEL; $this->assertEmpty($model::find($item->id)); } - -} \ No newline at end of file +} diff --git a/tests/Feature/BackendApi/PromoCodeTest.php b/tests/Feature/BackendApi/PromoCodeTest.php index cb0dcd3c1..88538bbc0 100644 --- a/tests/Feature/BackendApi/PromoCodeTest.php +++ b/tests/Feature/BackendApi/PromoCodeTest.php @@ -1,16 +1,23 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ namespace Tests\Feature\BackendApi; use App\Models\Administrator; use App\Models\AdministratorRole; -use App\Services\Order\Models\PromoCode; use Illuminate\Support\Facades\DB; +use App\Services\Order\Models\PromoCode; class PromoCodeTest extends Base { - public const MODEL = PromoCode::class; public const MODEL_NAME = 'promoCode'; @@ -86,5 +93,4 @@ public function test_destroy() $model = self::MODEL; $this->assertEmpty($model::find($item->id)); } - -} \ No newline at end of file +} diff --git a/tests/Feature/BackendApi/RoleTest.php b/tests/Feature/BackendApi/RoleTest.php index 8fefd0dc4..b8e06bcab 100644 --- a/tests/Feature/BackendApi/RoleTest.php +++ b/tests/Feature/BackendApi/RoleTest.php @@ -1,16 +1,23 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ namespace Tests\Feature\BackendApi; use App\Models\Administrator; use App\Models\AdministratorRole; -use App\Services\Member\Models\Role; use Illuminate\Support\Facades\DB; +use App\Services\Member\Models\Role; class RoleTest extends Base { - public const MODEL = Role::class; public const MODEL_NAME = 'role'; @@ -83,5 +90,4 @@ public function test_destroy() $model = self::MODEL; $this->assertEmpty($model::find($item->id)); } - -} \ No newline at end of file +} diff --git a/tests/Feature/BackendApi/SliderTest.php b/tests/Feature/BackendApi/SliderTest.php index bec0d9d0f..68f7659da 100644 --- a/tests/Feature/BackendApi/SliderTest.php +++ b/tests/Feature/BackendApi/SliderTest.php @@ -1,16 +1,23 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ namespace Tests\Feature\BackendApi; use App\Models\Administrator; use App\Models\AdministratorRole; -use App\Services\Other\Models\Slider; use Illuminate\Support\Facades\DB; +use App\Services\Other\Models\Slider; class SliderTest extends Base { - public const MODEL = Slider::class; public const MODEL_NAME = 'slider'; @@ -80,5 +87,4 @@ public function test_destroy() $model = self::MODEL; $this->assertEmpty($model::find($item->id)); } - -} \ No newline at end of file +} diff --git a/tests/Feature/BackendApi/UserTest.php b/tests/Feature/BackendApi/UserTest.php index 7f7327ac6..700011c5b 100644 --- a/tests/Feature/BackendApi/UserTest.php +++ b/tests/Feature/BackendApi/UserTest.php @@ -1,16 +1,22 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ namespace Tests\Feature\BackendApi; - use App\Models\Administrator; use App\Models\AdministratorRole; use Illuminate\Support\Facades\DB; class UserTest extends Base { - protected $admin; protected $role; @@ -31,5 +37,4 @@ public function test_user() $data = $this->assertResponseSuccess($response); $this->assertEquals($this->admin->email, $data['data']['email']); } - -} \ No newline at end of file +} diff --git a/tests/Feature/Page/AjaxTest.php b/tests/Feature/Page/AjaxTest.php index 4e708173f..1a0f9bc03 100644 --- a/tests/Feature/Page/AjaxTest.php +++ b/tests/Feature/Page/AjaxTest.php @@ -1,33 +1,41 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ namespace Tests\Feature\Page; - +use Carbon\Carbon; +use Tests\TestCase; +use Illuminate\Support\Str; use App\Events\UserLoginEvent; -use App\Services\Course\Models\Course; -use App\Services\Course\Models\CourseUserRecord; -use App\Services\Course\Models\Video; use App\Services\Member\Models\User; +use Illuminate\Support\Facades\Hash; +use App\Services\Course\Models\Video; +use Illuminate\Support\Facades\Event; +use App\Services\Course\Models\Course; +use App\Services\Order\Models\PromoCode; use App\Services\Member\Models\UserLikeCourse; -use App\Services\Member\Models\UserVideoWatchRecord; use App\Services\Order\Models\OrderPaidRecord; -use App\Services\Order\Models\PromoCode; -use Carbon\Carbon; -use Illuminate\Support\Facades\Event; -use Illuminate\Support\Facades\Hash; -use Illuminate\Support\Str; -use Tests\TestCase; +use App\Services\Course\Models\CourseUserRecord; +use App\Services\Member\Models\UserVideoWatchRecord; class AjaxTest extends TestCase { - protected $user; public function setUp() { parent::setUp(); - $this->user = factory(User::class)->create(); + $this->user = factory(User::class)->create([ + 'credit1' => 0, + ]); } public function tearDown() @@ -38,7 +46,10 @@ public function tearDown() public function test_course_comment_with_empty_content() { - $course = factory(Course::class)->create(); + $course = factory(Course::class)->create([ + 'published_at' => Carbon::now()->subDays(1), + 'is_show' => 1, + ]); $this->actingAs($this->user)->post('/member/ajax/course/' . $course->id . '/comment', [ 'content' => '', ])->seeStatusCode(302); @@ -509,6 +520,10 @@ public function test_mobileBind_with_mobile_exsits() public function test_user_video_watch_record() { + // 看完奖励2积分 + config(['meedu.member.credit1.watched_video' => 2]); + config(['meedu.member.credit1.watched_course' => 3]); + $course = factory(Course::class)->create(); $video = factory(Video::class)->create([ 'course_id' => $course->id, @@ -525,33 +540,52 @@ public function test_user_video_watch_record() 'charge' => 0, ]); + //------- 第一步,两个视频分别看5s,10s $this->actingAs($this->user)->post('/member/ajax/video/' . $video->id . '/watch/record', [ 'duration' => 5, ])->seeStatusCode(200); + $this->actingAs($this->user)->post('/member/ajax/video/' . $video1->id . '/watch/record', [ + 'duration' => 10, + ])->seeStatusCode(200); $record = UserVideoWatchRecord::query()->where('user_id', $this->user->id)->where('video_id', $video->id)->first(); $this->assertNotEmpty($record); $this->assertEquals(5, $record->watch_seconds); + $record1 = UserVideoWatchRecord::query()->where('user_id', $this->user->id)->where('video_id', $video1->id)->first(); + $this->assertNotEmpty($record1); + $this->assertEquals(10, $record1->watch_seconds); $courseUser = CourseUserRecord::create([ 'user_id' => $this->user->id, 'course_id' => $video->course_id, ]); + //------- 第二步,第一个视频看100s(也就是看完);第二个视频看50s(未看完:90s) $this->actingAs($this->user)->post('/member/ajax/video/' . $video->id . '/watch/record', [ 'duration' => 100, ])->seeStatusCode(200); + $this->actingAs($this->user)->post('/member/ajax/video/' . $video1->id . '/watch/record', [ + 'duration' => 50, + ])->seeStatusCode(200); + // 第一个视频看完 $record->refresh(); $this->assertEquals(100, $record->watch_seconds); $this->assertNotEmpty($record->watched_at); + $record1->refresh(); + $this->assertEquals(50, $record1->watch_seconds); + $this->assertEmpty($record1->watched_at); + + // 第一个视频看完积分到账 + $this->user->refresh(); + $this->assertEquals(2, $this->user->credit1); - $courseUser->refresh(); - $this->assertEquals(0, $courseUser->is_watched); - $this->assertNull($courseUser->watched_at); // 观看进度达到50% // 因为该课程下有两个视频 // 看完了一个视频,进度=50% + $courseUser->refresh(); + $this->assertEquals(0, $courseUser->is_watched); + $this->assertNull($courseUser->watched_at); $this->assertEquals(50, $courseUser->progress); $this->actingAs($this->user)->post('/member/ajax/video/' . $video1->id . '/watch/record', [ @@ -559,9 +593,10 @@ public function test_user_video_watch_record() ])->seeStatusCode(200); $courseUser->refresh(); + // 第二个视频依旧没看完 + // 第二个视频没有看完,依旧是50 $this->assertEquals(0, $courseUser->is_watched); $this->assertNull($courseUser->watched_at); - // 第二个视频没有看完,依旧是50 $this->assertEquals(50, $courseUser->progress); $this->actingAs($this->user)->post('/member/ajax/video/' . $video1->id . '/watch/record', [ @@ -569,9 +604,14 @@ public function test_user_video_watch_record() ])->seeStatusCode(200); $courseUser->refresh(); + // 第二个视频也看完了,课程进度也变为100 $this->assertEquals(1, $courseUser->is_watched); $this->assertNotNull($courseUser->watched_at); - // 第二个视频也看完了,所以变成100了 $this->assertEquals(100, $courseUser->progress); + + // 课程全部看完,积分到账3积分 + // 前面看完了2个视频奖励工奖励4分+课程完成3分=7分 + $this->user->refresh(); + $this->assertEquals(7, $this->user->credit1); } } diff --git a/tests/Feature/Page/AnnouncementTest.php b/tests/Feature/Page/AnnouncementTest.php index 46b393816..88aa6a120 100644 --- a/tests/Feature/Page/AnnouncementTest.php +++ b/tests/Feature/Page/AnnouncementTest.php @@ -1,20 +1,25 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ namespace Tests\Feature\Page; - -use App\Services\Other\Models\Announcement; use Tests\TestCase; +use App\Services\Other\Models\Announcement; class AnnouncementTest extends TestCase { - public function test_member_orders_page() { $a = factory(Announcement::class)->create(); $this->visit(route('announcement.show', $a)) ->see($a->title); } - -} \ No newline at end of file +} diff --git a/tests/Feature/Page/CourseBuyTest.php b/tests/Feature/Page/CourseBuyTest.php index aa248bba8..4d320555d 100644 --- a/tests/Feature/Page/CourseBuyTest.php +++ b/tests/Feature/Page/CourseBuyTest.php @@ -1,18 +1,24 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ namespace Tests\Feature\Page; - -use App\Services\Course\Models\Course; -use App\Services\Member\Models\User; -use App\Services\Member\Models\UserCourse; use Carbon\Carbon; use Tests\TestCase; +use App\Services\Member\Models\User; +use App\Services\Course\Models\Course; +use App\Services\Member\Models\UserCourse; class CourseBuyTest extends TestCase { - public function test_member_orders_page() { $user = factory(User::class)->create(); @@ -25,11 +31,10 @@ public function test_member_orders_page() ->see($course->title); } - /** - * @expectedException \Laravel\BrowserKitTesting\HttpException - */ public function test_member_orders_page_with_no_show() { + $this->expectException(\Laravel\BrowserKitTesting\HttpException::class); + $user = factory(User::class)->create(); $course = factory(Course::class)->create([ 'is_show' => Course::SHOW_NO, @@ -40,11 +45,10 @@ public function test_member_orders_page_with_no_show() ->see($course->title); } - /** - * @expectedException \Laravel\BrowserKitTesting\HttpException - */ public function test_member_orders_page_with_no_published() { + $this->expectException(\Laravel\BrowserKitTesting\HttpException::class); + $user = factory(User::class)->create(); $course = factory(Course::class)->create([ 'is_show' => Course::SHOW_YES, @@ -71,5 +75,4 @@ public function test_member_orders_page_with_repeat_buy() $this->actingAs($user) ->visit(route('member.course.buy', [$course->id])); } - -} \ No newline at end of file +} diff --git a/tests/Feature/Page/CourseDetailTest.php b/tests/Feature/Page/CourseDetailTest.php index 8a78a1d38..b13c6f19f 100644 --- a/tests/Feature/Page/CourseDetailTest.php +++ b/tests/Feature/Page/CourseDetailTest.php @@ -1,12 +1,21 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + namespace Tests\Feature\Page; -use App\Services\Course\Models\Course; -use App\Services\Course\Models\CourseChapter; -use App\Services\Course\Models\Video; use Carbon\Carbon; use Tests\TestCase; +use App\Services\Course\Models\Video; +use App\Services\Course\Models\Course; +use App\Services\Course\Models\CourseChapter; class CourseDetailTest extends TestCase { @@ -112,5 +121,4 @@ public function test_dont_see_no_published_course_videos() $this->visit(route('course.show', [$video->course->id, $video->course->slug])) ->dontSee($video->title); } - } diff --git a/tests/Feature/Page/CourseListPageTest.php b/tests/Feature/Page/CourseListPageTest.php index 246e8fab3..085934798 100644 --- a/tests/Feature/Page/CourseListPageTest.php +++ b/tests/Feature/Page/CourseListPageTest.php @@ -1,11 +1,20 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + namespace Tests\Feature\Page; -use App\Services\Course\Models\Course; -use App\Services\Course\Models\CourseCategory; use Carbon\Carbon; use Tests\TestCase; +use App\Services\Course\Models\Course; +use App\Services\Course\Models\CourseCategory; class CourseListPageTest extends TestCase { @@ -96,5 +105,4 @@ public function test_visit_course_with_category() ->click($category->name) ->see($c1->title); } - } diff --git a/tests/Feature/Page/FindPasswordTest.php b/tests/Feature/Page/FindPasswordTest.php index 273c08d15..7e392f5c0 100644 --- a/tests/Feature/Page/FindPasswordTest.php +++ b/tests/Feature/Page/FindPasswordTest.php @@ -1,8 +1,19 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + namespace Tests\Feature\Page; use Tests\TestCase; +use App\Services\Member\Models\User; +use Illuminate\Support\Facades\Hash; class FindPasswordTest extends TestCase { @@ -16,4 +27,25 @@ public function test_visit() ->seeInElement('button', '重置密码'); } + public function test_submit() + { + $user = factory(User::class)->create([ + 'mobile' => '12398762345', + 'password' => Hash::make('meedu123'), + ]); + + $this->session(['sms_password_reset' => 'smscode']); + + $this->visit(route('password.request')) + ->type($user->mobile, 'mobile') + ->type('smscode', 'sms_captcha') + ->type('password_reset', 'sms_captcha_key') + ->type('123123', 'password') + ->type('123123', 'password_confirmation') + ->press('重置密码') + ->seePageIs('login'); + + $user->refresh(); + $this->assertTrue(Hash::check('123123', $user->password)); + } } diff --git a/tests/Feature/Page/IndexTest.php b/tests/Feature/Page/IndexTest.php index 6f523cbd3..8387ac716 100644 --- a/tests/Feature/Page/IndexTest.php +++ b/tests/Feature/Page/IndexTest.php @@ -1,11 +1,18 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + namespace Tests\Feature\Page; -use App\Services\Course\Models\Course; -use App\Services\Other\Models\Link; -use Carbon\Carbon; use Tests\TestCase; +use App\Services\Other\Models\Link; class IndexTest extends TestCase { @@ -26,5 +33,4 @@ public function test_see_friendlink() $this->visit('/')->see('小滕博客') ->see('//58hualong.cn'); } - } diff --git a/tests/Feature/Page/LoginTest.php b/tests/Feature/Page/LoginTest.php index eedfc3e01..b68dab01d 100644 --- a/tests/Feature/Page/LoginTest.php +++ b/tests/Feature/Page/LoginTest.php @@ -1,10 +1,19 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + namespace Tests\Feature\Page; +use Tests\TestCase; use App\Services\Member\Models\User; use Illuminate\Support\Facades\Hash; -use Tests\TestCase; class LoginTest extends TestCase { @@ -58,5 +67,4 @@ public function test_mock_user_with_locked() ->press('登录') ->seePageIs('/login'); } - } diff --git a/tests/Feature/Page/MemberAvatarTest.php b/tests/Feature/Page/MemberAvatarTest.php index 7228db5a9..5e77f2d70 100644 --- a/tests/Feature/Page/MemberAvatarTest.php +++ b/tests/Feature/Page/MemberAvatarTest.php @@ -1,13 +1,21 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + namespace Tests\Feature\Page; -use App\Services\Member\Models\User; use Tests\TestCase; +use App\Services\Member\Models\User; class MemberAvatarTest extends TestCase { - public function test_member_avatar_page() { $user = factory(User::class)->create(); @@ -25,5 +33,4 @@ public function test_avatar_change_action() ->press('更换头像') ->seePageIs(route('member.avatar')); } - } diff --git a/tests/Feature/Page/MemberCourseTest.php b/tests/Feature/Page/MemberCourseTest.php index 3f333fbe2..c16f54078 100644 --- a/tests/Feature/Page/MemberCourseTest.php +++ b/tests/Feature/Page/MemberCourseTest.php @@ -1,16 +1,24 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + namespace Tests\Feature\Page; -use App\Services\Course\Models\Course; -use App\Services\Member\Models\User; use Carbon\Carbon; -use Illuminate\Support\Facades\DB; use Tests\TestCase; +use Illuminate\Support\Facades\DB; +use App\Services\Member\Models\User; +use App\Services\Course\Models\Course; class MemberCourseTest extends TestCase { - public function test_member_course() { $user = factory(User::class)->create(); @@ -36,5 +44,4 @@ public function test_member_course_see_some_records() ->visit(route('member.courses')) ->see($course->title); } - } diff --git a/tests/Feature/Page/MemberCredit1RecordsTest.php b/tests/Feature/Page/MemberCredit1RecordsTest.php new file mode 100644 index 000000000..c953256a2 --- /dev/null +++ b/tests/Feature/Page/MemberCredit1RecordsTest.php @@ -0,0 +1,88 @@ + + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + +namespace Tests\Feature\Page; + +use Tests\TestCase; +use App\Services\Member\Models\User; +use App\Services\Member\Models\UserCreditRecord; + +class MemberCredit1RecordsTest extends TestCase +{ + public function test_member_join_role() + { + $user = factory(User::class)->create(); + $this->actingAs($user) + ->visit(route('member.credit1_records')) + ->assertResponseStatus(200); + } + + public function test_member_join_role_see_some_records() + { + $user = factory(User::class)->create(); + + factory(UserCreditRecord::class)->create([ + 'user_id' => $user->id, + 'sum' => 1011, + 'remark' => 'meedutest', + ]); + factory(UserCreditRecord::class)->create([ + 'user_id' => $user->id, + 'sum' => 2019, + 'remark' => 'testmeedu', + ]); + + $this->actingAs($user) + ->visit(route('member.credit1_records')) + ->assertResponseStatus(200) + ->see(1011) + ->see('meedutest') + ->see(2019) + ->see('testmeedu'); + } + + public function test_member_join_role_paginate() + { + $user = factory(User::class)->create(); + + factory(UserCreditRecord::class)->create([ + 'user_id' => $user->id, + 'sum' => -892, + 'remark' => 'testpaginate2', + ]); + factory(UserCreditRecord::class)->create([ + 'user_id' => $user->id, + 'sum' => 1000989, + 'remark' => 'testpaginate1', + ]); + factory(UserCreditRecord::class, 19)->create([ + 'user_id' => $user->id, + ]); + + $this->actingAs($user) + ->visit(route('member.credit1_records')) + ->assertResponseStatus(200) + ->dontSee('testpaginate1') + ->dontSee('testpaginate2'); + + $this->actingAs($user) + ->visit(route('member.credit1_records').'?page=2') + ->assertResponseStatus(200) + ->see('testpaginate1') + ->dontSee('testpaginate2'); + + $this->actingAs($user) + ->visit(route('member.credit1_records').'?page=3') + ->assertResponseStatus(200) + ->dontSee('testpaginate1') + ->see('testpaginate2'); + } +} diff --git a/tests/Feature/Page/MemberInviteCodePageTest.php b/tests/Feature/Page/MemberInviteCodePageTest.php index 838d941f9..9af4c7228 100644 --- a/tests/Feature/Page/MemberInviteCodePageTest.php +++ b/tests/Feature/Page/MemberInviteCodePageTest.php @@ -1,17 +1,23 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ namespace Tests\Feature\Page; - -use App\Services\Member\Models\User; -use App\Services\Order\Models\PromoCode; use Carbon\Carbon; use Tests\TestCase; +use App\Services\Member\Models\User; +use App\Services\Order\Models\PromoCode; class MemberInviteCodePageTest extends TestCase { - public function test_member_promo_code() { $user = factory(User::class)->create(); @@ -70,5 +76,4 @@ public function test_member_promo_with_invite_user() ->assertResponseStatus(200) ->seeElement('.pagination'); } - -} \ No newline at end of file +} diff --git a/tests/Feature/Page/MemberJoinRoleTest.php b/tests/Feature/Page/MemberJoinRoleTest.php index 8b783d322..b45906669 100644 --- a/tests/Feature/Page/MemberJoinRoleTest.php +++ b/tests/Feature/Page/MemberJoinRoleTest.php @@ -1,16 +1,24 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + namespace Tests\Feature\Page; +use Carbon\Carbon; +use Tests\TestCase; use App\Services\Member\Models\Role; use App\Services\Member\Models\User; use App\Services\Member\Models\UserJoinRoleRecord; -use Carbon\Carbon; -use Tests\TestCase; class MemberJoinRoleTest extends TestCase { - public function test_member_join_role() { $user = factory(User::class)->create(); @@ -36,5 +44,4 @@ public function test_member_join_role_see_some_records() ->see($record->started_date) ->see($record->exprired_date); } - } diff --git a/tests/Feature/Page/MemberMobileBindTest.php b/tests/Feature/Page/MemberMobileBindTest.php index 19307c702..7c43b0214 100644 --- a/tests/Feature/Page/MemberMobileBindTest.php +++ b/tests/Feature/Page/MemberMobileBindTest.php @@ -1,14 +1,21 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ namespace Tests\Feature\Page; -use App\Services\Member\Models\User; use Tests\TestCase; +use App\Services\Member\Models\User; class MemberMobileBindTest extends TestCase { - public function test_page() { $user = factory(User::class)->create(); @@ -62,5 +69,4 @@ public function test_bind_with_exists_mobile() 'sms_captcha' => '123123', ])->seeInSession('warning'); } - -} \ No newline at end of file +} diff --git a/tests/Feature/Page/MemberNotificationTest.php b/tests/Feature/Page/MemberNotificationTest.php index 9c4d19c66..b363dd3ae 100644 --- a/tests/Feature/Page/MemberNotificationTest.php +++ b/tests/Feature/Page/MemberNotificationTest.php @@ -1,13 +1,21 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + namespace Tests\Feature\Page; -use App\Services\Member\Models\User; use Tests\TestCase; +use App\Services\Member\Models\User; class MemberNotificationTest extends TestCase { - public function test_member_notification() { $user = factory(User::class)->create(); @@ -15,5 +23,4 @@ public function test_member_notification() ->visit(route('member.messages')) ->assertResponseStatus(200); } - } diff --git a/tests/Feature/Page/MemberOrdersTest.php b/tests/Feature/Page/MemberOrdersTest.php index f845fefb7..333fecf6a 100644 --- a/tests/Feature/Page/MemberOrdersTest.php +++ b/tests/Feature/Page/MemberOrdersTest.php @@ -1,18 +1,25 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + namespace Tests\Feature\Page; -use App\Services\Member\Models\User; use Tests\TestCase; +use App\Services\Member\Models\User; class MemberOrdersTest extends TestCase { - public function test_member_orders_page() { $user = factory(User::class)->create(); $this->actingAs($user) ->visit(route('member.orders')); } - } diff --git a/tests/Feature/Page/MemberPageTest.php b/tests/Feature/Page/MemberPageTest.php index 2d15eb7c8..93eb23bf5 100644 --- a/tests/Feature/Page/MemberPageTest.php +++ b/tests/Feature/Page/MemberPageTest.php @@ -1,13 +1,21 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + namespace Tests\Feature\Page; -use App\Services\Member\Models\User; use Tests\TestCase; +use App\Services\Member\Models\User; class MemberPageTest extends TestCase { - public function test_member_page() { $user = factory(User::class)->create(); @@ -15,5 +23,4 @@ public function test_member_page() ->visit(route('member')) ->see($user->nick_name); } - } diff --git a/tests/Feature/Page/MemberPasswordChangeTest.php b/tests/Feature/Page/MemberPasswordChangeTest.php index f72fea3df..56845c403 100644 --- a/tests/Feature/Page/MemberPasswordChangeTest.php +++ b/tests/Feature/Page/MemberPasswordChangeTest.php @@ -1,14 +1,22 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + namespace Tests\Feature\Page; +use Tests\TestCase; use App\Services\Member\Models\User; use Illuminate\Support\Facades\Hash; -use Tests\TestCase; class MemberPasswordChangeTest extends TestCase { - public function test_member_password_change() { $user = factory(User::class)->create(); @@ -36,5 +44,4 @@ public function test_member_password_change_action() $user->refresh(); $this->assertTrue(Hash::check($newPassword, $user->password)); } - } diff --git a/tests/Feature/Page/MemberVideoTest.php b/tests/Feature/Page/MemberVideoTest.php index ed0959345..4ee80ffba 100644 --- a/tests/Feature/Page/MemberVideoTest.php +++ b/tests/Feature/Page/MemberVideoTest.php @@ -1,16 +1,24 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + namespace Tests\Feature\Page; -use App\Services\Course\Models\Video; -use App\Services\Member\Models\User; -use App\Services\Member\Models\UserVideo; use Carbon\Carbon; use Tests\TestCase; +use App\Services\Member\Models\User; +use App\Services\Course\Models\Video; +use App\Services\Member\Models\UserVideo; class MemberVideoTest extends TestCase { - public function test_member_video() { $user = factory(User::class)->create(); @@ -38,5 +46,4 @@ public function test_member_video_see_some_records() ->see($video->title) ->see($charge); } - } diff --git a/tests/Feature/Page/RegisterTest.php b/tests/Feature/Page/RegisterTest.php index b73ae941e..a490c87e2 100644 --- a/tests/Feature/Page/RegisterTest.php +++ b/tests/Feature/Page/RegisterTest.php @@ -1,12 +1,21 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + namespace Tests\Feature\Page; use Tests\TestCase; +use App\Services\Member\Models\User; class RegisterTest extends TestCase { - public function test_visit() { $response = $this->get(route('register')); @@ -15,4 +24,38 @@ public function test_visit() $response->see('登录'); } + public function test_submit() + { + $this->session(['sms_register' => 'smscode']); + $this->visit(route('register')) + ->type('nickname', 'nick_name') + ->type('13900001111', 'mobile') + ->type('smscode', 'sms_captcha') + ->type('register', 'sms_captcha_key') + ->type('meedu123', 'password') + ->type('meedu123', 'password_confirmation') + ->press('注册'); + + $user = User::query()->where('mobile', '13900001111')->exists(); + $this->assertTrue($user); + } + + public function test_submit_credit1_reward() + { + config(['meedu.member.credit1.register' => 112]); + + $this->session(['sms_register' => 'smscode']); + $this->visit(route('register')) + ->type('nickname', 'nick_name') + ->type('13900001111', 'mobile') + ->type('smscode', 'sms_captcha') + ->type('register', 'sms_captcha_key') + ->type('meedu123', 'password') + ->type('meedu123', 'password_confirmation') + ->press('注册'); + + $user = User::query()->where('mobile', '13900001111')->first(); + $this->assertNotEmpty($user); + $this->assertEquals(112, $user->credit1); + } } diff --git a/tests/Feature/Page/RoleBuyTest.php b/tests/Feature/Page/RoleBuyTest.php index 36dd6c71c..d14e3bb07 100644 --- a/tests/Feature/Page/RoleBuyTest.php +++ b/tests/Feature/Page/RoleBuyTest.php @@ -1,15 +1,22 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ namespace Tests\Feature\Page; +use Tests\TestCase; use App\Services\Member\Models\Role; use App\Services\Member\Models\User; -use Tests\TestCase; class RoleBuyTest extends TestCase { - public function test_member_orders_page() { $user = factory(User::class)->create(); @@ -21,11 +28,10 @@ public function test_member_orders_page() ->see($role->name); } - /** - * @expectedException \Laravel\BrowserKitTesting\HttpException - */ public function test_member_orders_page_with_no_show() { + $this->expectException(\Laravel\BrowserKitTesting\HttpException::class); + $user = factory(User::class)->create(); $role = factory(Role::class)->create([ 'is_show' => Role::IS_SHOW_NO, @@ -35,4 +41,21 @@ public function test_member_orders_page_with_no_show() ->see($role->name); } -} \ No newline at end of file + public function test_role_buy_submit() + { + config(['meedu.payment.handPay.enabled' => 1]); + + $user = factory(User::class)->create(); + $role = factory(Role::class)->create([ + 'is_show' => Role::IS_SHOW_YES, + 'charge' => 100, + ]); + $this->actingAs($user) + ->visit(route('member.role.buy', [$role->id])) + ->type($role->id, 'goods_id') + ->type('pc', 'payment_scene') + ->type('handPay', 'payment_sign') + ->press('确认支付') + ->see('手动'); + } +} diff --git a/tests/Feature/Page/UserRoleTest.php b/tests/Feature/Page/UserRoleTest.php index 59c6b3b34..8974f0571 100644 --- a/tests/Feature/Page/UserRoleTest.php +++ b/tests/Feature/Page/UserRoleTest.php @@ -1,13 +1,21 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + namespace Tests\Feature\Page; -use App\Services\Member\Models\Role; use Tests\TestCase; +use App\Services\Member\Models\Role; class UserRoleTest extends TestCase { - public function test_visit_user_role_page() { $response = $this->get(route('role.index')); @@ -23,5 +31,4 @@ public function test_create_user_role() $response->see($role->name) ->see($role->charge); } - } diff --git a/tests/Feature/Page/VideoBuyPageTest.php b/tests/Feature/Page/VideoBuyPageTest.php index b074d4f2c..09442b146 100644 --- a/tests/Feature/Page/VideoBuyPageTest.php +++ b/tests/Feature/Page/VideoBuyPageTest.php @@ -1,18 +1,24 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ namespace Tests\Feature\Page; - -use App\Services\Course\Models\Video; -use App\Services\Member\Models\User; -use App\Services\Member\Models\UserVideo; use Carbon\Carbon; use Tests\TestCase; +use App\Services\Member\Models\User; +use App\Services\Course\Models\Video; +use App\Services\Member\Models\UserVideo; class VideoBuyPageTest extends TestCase { - public function test_member_orders_page() { $user = factory(User::class)->create(); @@ -40,11 +46,10 @@ public function test_member_orders_page_cannot_sold() $this->assertEquals(__('this video cannot be sold'), session()->get('warning')->first()); } - /** - * @expectedException \Laravel\BrowserKitTesting\HttpException - */ public function test_member_orders_page_with_no_published() { + $this->expectException(\Laravel\BrowserKitTesting\HttpException::class); + $user = factory(User::class)->create(); $video = factory(Video::class)->create([ 'is_show' => Video::IS_SHOW_YES, @@ -55,11 +60,10 @@ public function test_member_orders_page_with_no_published() ->seeStatusCode(404); } - /** - * @expectedException \Laravel\BrowserKitTesting\HttpException - */ public function test_member_orders_page_with_no_show() { + $this->expectException(\Laravel\BrowserKitTesting\HttpException::class); + $user = factory(User::class)->create(); $video = factory(Video::class)->create([ 'is_show' => Video::IS_SHOW_NO, @@ -87,5 +91,4 @@ public function test_member_orders_page_with_repeat_buy() ->visit(route('member.video.buy', [$video->id])) ->seeStatusCode(200); } - -} \ No newline at end of file +} diff --git a/tests/Feature/Page/VideoPlayTest.php b/tests/Feature/Page/VideoPlayTest.php index d4c8ffe4d..e1ee0e1ef 100644 --- a/tests/Feature/Page/VideoPlayTest.php +++ b/tests/Feature/Page/VideoPlayTest.php @@ -1,14 +1,22 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + namespace Tests\Feature\Page; -use App\Services\Course\Models\Video; use Carbon\Carbon; use Tests\TestCase; +use App\Services\Course\Models\Video; class VideoPlayTest extends TestCase { - public function test_visit() { $video = factory(Video::class)->create([ @@ -38,5 +46,4 @@ public function test_visit_no_published() $response = $this->get(route('video.show', [$video->course, $video->id, $video->slug])); $response->assertResponseStatus(404); } - } diff --git a/tests/OriginalTestCase.php b/tests/OriginalTestCase.php index f6ddfdf7d..6946cd197 100644 --- a/tests/OriginalTestCase.php +++ b/tests/OriginalTestCase.php @@ -1,14 +1,19 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ namespace Tests; - use Illuminate\Foundation\Testing\RefreshDatabase; abstract class OriginalTestCase extends \Illuminate\Foundation\Testing\TestCase { - use CreatesApplication, RefreshDatabase; - -} \ No newline at end of file +} diff --git a/tests/Services/Base/ConfigServiceTest.php b/tests/Services/Base/ConfigServiceTest.php index a1420cb5e..0704cb585 100644 --- a/tests/Services/Base/ConfigServiceTest.php +++ b/tests/Services/Base/ConfigServiceTest.php @@ -1,12 +1,19 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ namespace Tests\Services\Base; - -use App\Services\Base\Interfaces\ConfigServiceInterface; -use App\Services\Base\Services\ConfigService; use Tests\TestCase; +use App\Services\Base\Services\ConfigService; +use App\Services\Base\Interfaces\ConfigServiceInterface; class ConfigServiceTest extends TestCase { @@ -37,5 +44,4 @@ public function test_getAlipayPay() { $this->assertEquals(config('pay.alipay'), $this->service->getAlipayPay()); } - -} \ No newline at end of file +} diff --git a/tests/Services/Course/CourseCategoryServiceTest.php b/tests/Services/Course/CourseCategoryServiceTest.php index a4f7ab93a..7b6acfbd9 100644 --- a/tests/Services/Course/CourseCategoryServiceTest.php +++ b/tests/Services/Course/CourseCategoryServiceTest.php @@ -1,13 +1,20 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ namespace Tests\Services\Course; - -use App\Services\Course\Interfaces\CourseCategoryServiceInterface; +use Tests\TestCase; use App\Services\Course\Models\CourseCategory; use App\Services\Course\Services\CourseCategoryService; -use Tests\TestCase; +use App\Services\Course\Interfaces\CourseCategoryServiceInterface; class CourseCategoryServiceTest extends TestCase { @@ -28,5 +35,4 @@ public function test_all() $res = $this->service->all(); $this->assertEquals(10, count($res)); } - -} \ No newline at end of file +} diff --git a/tests/Services/Course/CourseCommentServiceTest.php b/tests/Services/Course/CourseCommentServiceTest.php index 6e0759473..36482d9f8 100644 --- a/tests/Services/Course/CourseCommentServiceTest.php +++ b/tests/Services/Course/CourseCommentServiceTest.php @@ -1,19 +1,26 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ namespace Tests\Services\Course; - -use App\Services\Course\Interfaces\CourseCommentServiceInterface; +use Carbon\Carbon; +use Tests\TestCase; +use App\Services\Member\Models\User; +use Illuminate\Support\Facades\Auth; use App\Services\Course\Models\Course; use App\Services\Course\Models\CourseComment; +use App\Services\Member\Services\NotificationService; use App\Services\Course\Services\CourseCommentService; use App\Services\Member\Interfaces\NotificationServiceInterface; -use App\Services\Member\Models\User; -use App\Services\Member\Services\NotificationService; -use Carbon\Carbon; -use Illuminate\Support\Facades\Auth; -use Tests\TestCase; +use App\Services\Course\Interfaces\CourseCommentServiceInterface; class CourseCommentServiceTest extends TestCase { @@ -92,5 +99,4 @@ public function test_find() $c = $this->service->find($comment->id); $this->assertEquals($comment->original_content, $c['original_content']); } - -} \ No newline at end of file +} diff --git a/tests/Services/Course/CourseServiceTest.php b/tests/Services/Course/CourseServiceTest.php index efb86cd76..7ac6448e9 100644 --- a/tests/Services/Course/CourseServiceTest.php +++ b/tests/Services/Course/CourseServiceTest.php @@ -1,18 +1,25 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ namespace Tests\Services\Course; - -use App\Services\Course\Interfaces\CourseServiceInterface; +use Carbon\Carbon; +use Tests\TestCase; +use App\Services\Member\Models\User; use App\Services\Course\Models\Course; -use App\Services\Course\Models\CourseCategory; use App\Services\Course\Models\CourseChapter; -use App\Services\Course\Models\CourseUserRecord; +use App\Services\Course\Models\CourseCategory; use App\Services\Course\Services\CourseService; -use App\Services\Member\Models\User; -use Carbon\Carbon; -use Tests\TestCase; +use App\Services\Course\Models\CourseUserRecord; +use App\Services\Course\Interfaces\CourseServiceInterface; class CourseServiceTest extends TestCase { @@ -224,5 +231,4 @@ public function test_recordUserCount() $course->refresh(); $this->assertEquals(1, $course->user_count); } - -} \ No newline at end of file +} diff --git a/tests/Services/Course/VideoCommentServiceTest.php b/tests/Services/Course/VideoCommentServiceTest.php index 9c5d20e50..6828f1299 100644 --- a/tests/Services/Course/VideoCommentServiceTest.php +++ b/tests/Services/Course/VideoCommentServiceTest.php @@ -1,19 +1,26 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ namespace Tests\Services\Course; - -use App\Services\Course\Interfaces\VideoCommentServiceInterface; +use Carbon\Carbon; +use Tests\TestCase; +use App\Services\Member\Models\User; +use Illuminate\Support\Facades\Auth; use App\Services\Course\Models\Video; use App\Services\Course\Models\VideoComment; use App\Services\Course\Services\VideoCommentService; -use App\Services\Member\Interfaces\NotificationServiceInterface; -use App\Services\Member\Models\User; use App\Services\Member\Services\NotificationService; -use Carbon\Carbon; -use Illuminate\Support\Facades\Auth; -use Tests\TestCase; +use App\Services\Course\Interfaces\VideoCommentServiceInterface; +use App\Services\Member\Interfaces\NotificationServiceInterface; class VideoCommentServiceTest extends TestCase { @@ -92,5 +99,4 @@ public function test_find() $c = $this->service->find($comment->id); $this->assertEquals($comment->original_content, $c['original_content']); } - -} \ No newline at end of file +} diff --git a/tests/Services/Course/VideoServiceTest.php b/tests/Services/Course/VideoServiceTest.php index da2a859cc..46afe2a67 100644 --- a/tests/Services/Course/VideoServiceTest.php +++ b/tests/Services/Course/VideoServiceTest.php @@ -1,15 +1,23 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ namespace Tests\Services\Course; -use App\Services\Course\Interfaces\VideoServiceInterface; +use Carbon\Carbon; +use Tests\TestCase; +use App\Services\Course\Models\Video; use App\Services\Course\Models\Course; use App\Services\Course\Models\CourseChapter; -use App\Services\Course\Models\Video; use App\Services\Course\Services\VideoService; -use Carbon\Carbon; -use Tests\TestCase; +use App\Services\Course\Interfaces\VideoServiceInterface; class VideoServiceTest extends TestCase { @@ -236,5 +244,4 @@ public function test_viewNumInc() $video->refresh(); $this->assertEquals(8, $video->view_num); } - -} \ No newline at end of file +} diff --git a/tests/Services/Member/CreditServiceTest.php b/tests/Services/Member/CreditServiceTest.php new file mode 100644 index 000000000..43e774a81 --- /dev/null +++ b/tests/Services/Member/CreditServiceTest.php @@ -0,0 +1,91 @@ + + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + +namespace Tests\Services\Member; + +use Tests\TestCase; +use App\Services\Member\Models\User; +use App\Services\Member\Services\CreditService; +use App\Services\Member\Models\UserCreditRecord; +use App\Services\Member\Interfaces\CreditServiceInterface; + +class CreditServiceTest extends TestCase +{ + + /** + * @var CreditService + */ + protected $service; + + public function setUp() + { + parent::setUp(); + $this->service = $this->app->make(CreditServiceInterface::class); + } + + public function test_createCredit1Record() + { + $user = factory(User::class)->create(['credit1' => 1]); + $this->service->createCredit1Record($user->id, 100, 'meedu123'); + + $record = UserCreditRecord::query()->where('user_id', $user->id)->where('field', 'credit1')->first(); + $this->assertNotEmpty($record); + $this->assertEquals(100, $record->sum); + $this->assertEquals('meedu123', $record->remark); + + $user->refresh(); + $this->assertEquals(101, $user->credit1); + } + + public function test_getCredit1RecordsPaginate() + { + $user = factory(User::class)->create(['credit1' => 1]); + UserCreditRecord::create([ + 'user_id' => $user->id, + 'field' => 'credit1', + 'sum' => 1, + 'remark' => 1, + ]); + UserCreditRecord::create([ + 'user_id' => $user->id, + 'field' => 'credit1', + 'sum' => 1, + 'remark' => 1, + ]); + UserCreditRecord::create([ + 'user_id' => $user->id, + 'field' => 'credit1', + 'sum' => 1, + 'remark' => 1, + ]); + $data = $this->service->getCredit1RecordsPaginate($user->id, 1, 10); + $this->assertEquals(3, count($data)); + } + + public function test_getCredit1RecordsCount() + { + $user = factory(User::class)->create(['credit1' => 1]); + UserCreditRecord::create([ + 'user_id' => $user->id, + 'field' => 'credit1', + 'sum' => 1, + 'remark' => 1, + ]); + UserCreditRecord::create([ + 'user_id' => $user->id, + 'field' => 'credit1', + 'sum' => 1, + 'remark' => 1, + ]); + + $this->assertEquals(2, $this->service->getCredit1RecordsCount($user->id)); + } +} diff --git a/tests/Services/Member/DeliverServiceTest.php b/tests/Services/Member/DeliverServiceTest.php index 78b087559..4f4253520 100644 --- a/tests/Services/Member/DeliverServiceTest.php +++ b/tests/Services/Member/DeliverServiceTest.php @@ -1,19 +1,26 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ namespace Tests\Services\Member; - -use App\Services\Course\Models\Course; -use App\Services\Course\Models\Video; -use App\Services\Member\Interfaces\DeliverServiceInterface; +use Carbon\Carbon; +use Tests\TestCase; use App\Services\Member\Models\Role; use App\Services\Member\Models\User; -use App\Services\Member\Models\UserCourse; +use App\Services\Course\Models\Video; +use App\Services\Course\Models\Course; use App\Services\Member\Models\UserVideo; +use App\Services\Member\Models\UserCourse; use App\Services\Member\Services\DeliverService; -use Carbon\Carbon; -use Tests\TestCase; +use App\Services\Member\Interfaces\DeliverServiceInterface; class DeliverServiceTest extends TestCase { @@ -80,5 +87,4 @@ public function test_deliverRole_with_continue() $this->assertEquals($role->id, $user->role_id); $this->assertEquals($at->addDays($role->expire_days)->toDateTimeString(), $user->role_expired_at); } - -} \ No newline at end of file +} diff --git a/tests/Services/Member/NotificationServiceTest.php b/tests/Services/Member/NotificationServiceTest.php index a8ee9d7e8..918b1d823 100644 --- a/tests/Services/Member/NotificationServiceTest.php +++ b/tests/Services/Member/NotificationServiceTest.php @@ -1,15 +1,22 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ namespace Tests\Services\Member; - -use App\Services\Member\Interfaces\NotificationServiceInterface; +use Tests\TestCase; +use Illuminate\Support\Str; use App\Services\Member\Models\User; -use App\Services\Member\Services\NotificationService; use Illuminate\Support\Facades\Auth; -use Illuminate\Support\Str; -use Tests\TestCase; +use App\Services\Member\Services\NotificationService; +use App\Services\Member\Interfaces\NotificationServiceInterface; class NotificationServiceTest extends TestCase { @@ -44,5 +51,4 @@ public function test_notify() $this->service->markAllRead($user->id); $this->assertEquals(0, $this->service->getUnreadCount()); } - -} \ No newline at end of file +} diff --git a/tests/Services/Member/RoleServiceTest.php b/tests/Services/Member/RoleServiceTest.php index 9b9ab42af..8165896e8 100644 --- a/tests/Services/Member/RoleServiceTest.php +++ b/tests/Services/Member/RoleServiceTest.php @@ -1,17 +1,24 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ namespace Tests\Services\Member; - -use App\Services\Member\Interfaces\RoleServiceInterface; +use Carbon\Carbon; +use Tests\TestCase; use App\Services\Member\Models\Role; use App\Services\Member\Models\User; -use App\Services\Member\Models\UserJoinRoleRecord; -use App\Services\Member\Services\RoleService; -use Carbon\Carbon; use Illuminate\Support\Facades\Auth; -use Tests\TestCase; +use App\Services\Member\Services\RoleService; +use App\Services\Member\Models\UserJoinRoleRecord; +use App\Services\Member\Interfaces\RoleServiceInterface; class RoleServiceTest extends TestCase { @@ -93,5 +100,4 @@ public function test_userContinueRole() $user->refresh(); $this->assertTrue(abs($now->addDays($role->expire_days)->timestamp - strtotime($user->role_expired_at)) < 5); } - -} \ No newline at end of file +} diff --git a/tests/Services/Member/SocialiteServiceTest.php b/tests/Services/Member/SocialiteServiceTest.php index d58f18363..a69ad62a5 100644 --- a/tests/Services/Member/SocialiteServiceTest.php +++ b/tests/Services/Member/SocialiteServiceTest.php @@ -1,15 +1,23 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ namespace Tests\Services\Member; -use App\Services\Member\Interfaces\SocialiteServiceInterface; -use App\Services\Member\Models\Socialite; +use Tests\TestCase; +use Illuminate\Support\Str; use App\Services\Member\Models\User; -use App\Services\Member\Services\SocialiteService; use Illuminate\Support\Facades\Auth; -use Illuminate\Support\Str; -use Tests\TestCase; +use App\Services\Member\Models\Socialite; +use App\Services\Member\Services\SocialiteService; +use App\Services\Member\Interfaces\SocialiteServiceInterface; class SocialiteServiceTest extends TestCase { @@ -82,5 +90,4 @@ public function test_cancelBind() $this->service->cancelBind($app); $this->assertEmpty(Socialite::whereUserId($user->id)->where('app', $app)->whereAppUserId($appUserId)->first()); } - -} \ No newline at end of file +} diff --git a/tests/Services/Member/UserInviteBalanceServiceTest.php b/tests/Services/Member/UserInviteBalanceServiceTest.php index 9ae0921b1..cee76dcab 100644 --- a/tests/Services/Member/UserInviteBalanceServiceTest.php +++ b/tests/Services/Member/UserInviteBalanceServiceTest.php @@ -1,16 +1,24 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ namespace Tests\Services\Member; -use App\Services\Member\Interfaces\UserInviteBalanceServiceInterface; +use Tests\TestCase; use App\Services\Member\Models\User; -use App\Services\Member\Models\UserInviteBalanceRecord; -use App\Services\Member\Models\UserInviteBalanceWithdrawOrder; -use App\Services\Member\Services\UserInviteBalanceService; use App\Services\Order\Models\Order; use Illuminate\Support\Facades\Auth; -use Tests\TestCase; +use App\Services\Member\Models\UserInviteBalanceRecord; +use App\Services\Member\Services\UserInviteBalanceService; +use App\Services\Member\Models\UserInviteBalanceWithdrawOrder; +use App\Services\Member\Interfaces\UserInviteBalanceServiceInterface; class UserInviteBalanceServiceTest extends TestCase { @@ -91,5 +99,4 @@ public function test_createCurrentUserWithdraw_with_sufficient() $this->assertEquals(10, $order->total); $this->assertEquals(100, $order->before_balance); } - -} \ No newline at end of file +} diff --git a/tests/Services/Member/UserServiceTest.php b/tests/Services/Member/UserServiceTest.php index ed07bd439..aa6a9cdb4 100644 --- a/tests/Services/Member/UserServiceTest.php +++ b/tests/Services/Member/UserServiceTest.php @@ -1,23 +1,31 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ namespace Tests\Services\Member; -use App\Services\Course\Models\Course; -use App\Services\Course\Models\Video; -use App\Services\Member\Interfaces\UserServiceInterface; +use Carbon\Carbon; +use Tests\TestCase; use App\Services\Member\Models\Role; use App\Services\Member\Models\User; -use App\Services\Member\Models\UserCourse; -use App\Services\Member\Models\UserVideo; -use App\Services\Member\Services\NotificationService; -use App\Services\Member\Services\UserService; -use App\Services\Order\Models\PromoCode; -use Carbon\Carbon; -use Illuminate\Foundation\Testing\WithFaker; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Hash; -use Tests\TestCase; +use App\Services\Course\Models\Video; +use App\Services\Course\Models\Course; +use App\Services\Order\Models\PromoCode; +use App\Services\Member\Models\UserVideo; +use App\Services\Member\Models\UserCourse; +use Illuminate\Foundation\Testing\WithFaker; +use App\Services\Member\Services\UserService; +use App\Services\Member\Services\NotificationService; +use App\Services\Member\Interfaces\UserServiceInterface; class UserServiceTest extends TestCase { diff --git a/tests/Services/Order/OrderServiceTest.php b/tests/Services/Order/OrderServiceTest.php index 1796b3ee2..3cbb9cd2f 100644 --- a/tests/Services/Order/OrderServiceTest.php +++ b/tests/Services/Order/OrderServiceTest.php @@ -1,20 +1,28 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ namespace Tests\Services\Order; -use App\Services\Course\Models\Course; -use App\Services\Course\Models\Video; +use Carbon\Carbon; +use Tests\TestCase; use App\Services\Member\Models\Role; use App\Services\Member\Models\User; -use App\Services\Order\Interfaces\OrderServiceInterface; use App\Services\Order\Models\Order; -use App\Services\Order\Models\OrderGoods; +use Illuminate\Support\Facades\Auth; +use App\Services\Course\Models\Video; +use App\Services\Course\Models\Course; use App\Services\Order\Models\PromoCode; +use App\Services\Order\Models\OrderGoods; use App\Services\Order\Services\OrderService; -use Carbon\Carbon; -use Illuminate\Support\Facades\Auth; -use Tests\TestCase; +use App\Services\Order\Interfaces\OrderServiceInterface; class OrderServiceTest extends TestCase { @@ -287,5 +295,4 @@ public function test_getTimeoutOrders() $this->assertEquals(2, count($list)); } - -} \ No newline at end of file +} diff --git a/tests/Services/Order/PromoCodeServiceTest.php b/tests/Services/Order/PromoCodeServiceTest.php index 0872f78d5..06c376f69 100644 --- a/tests/Services/Order/PromoCodeServiceTest.php +++ b/tests/Services/Order/PromoCodeServiceTest.php @@ -1,15 +1,22 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ namespace Tests\Services\Order; - +use Tests\TestCase; use App\Services\Member\Models\User; -use App\Services\Order\Models\OrderPaidRecord; +use Illuminate\Support\Facades\Auth; use App\Services\Order\Models\PromoCode; +use App\Services\Order\Models\OrderPaidRecord; use App\Services\Order\Services\PromoCodeService; -use Illuminate\Support\Facades\Auth; -use Tests\TestCase; class PromoCodeServiceTest extends TestCase { @@ -104,5 +111,4 @@ public function test_getCurrentUserOrderPaidRecords() $list = $this->service->getCurrentUserOrderPaidRecords($promoCode['id']); $this->assertNotEmpty($list); } - -} \ No newline at end of file +} diff --git a/tests/Services/Other/AdFromServiceTest.php b/tests/Services/Other/AdFromServiceTest.php index d8ad9b013..7d0861ba2 100644 --- a/tests/Services/Other/AdFromServiceTest.php +++ b/tests/Services/Other/AdFromServiceTest.php @@ -1,15 +1,22 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ namespace Tests\Services\Other; - -use App\Services\Other\Interfaces\AdFromServiceInterface; +use Carbon\Carbon; +use Tests\TestCase; use App\Services\Other\Models\AdFrom; use App\Services\Other\Models\AdFromNumber; use App\Services\Other\Services\AdFromService; -use Carbon\Carbon; -use Tests\TestCase; +use App\Services\Other\Interfaces\AdFromServiceInterface; class AdFromServiceTest extends TestCase { @@ -61,5 +68,4 @@ public function test_createDay() $this->assertEquals($num, $number['num']); } - -} \ No newline at end of file +} diff --git a/tests/Services/Other/AnnouncementServiceTest.php b/tests/Services/Other/AnnouncementServiceTest.php index b2161a917..3e12237f5 100644 --- a/tests/Services/Other/AnnouncementServiceTest.php +++ b/tests/Services/Other/AnnouncementServiceTest.php @@ -1,14 +1,21 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ namespace Tests\Services\Other; - -use App\Services\Other\Interfaces\AnnouncementServiceInterface; -use App\Services\Other\Models\Announcement; -use App\Services\Other\Services\AnnouncementService; use Carbon\Carbon; use Tests\TestCase; +use App\Services\Other\Models\Announcement; +use App\Services\Other\Services\AnnouncementService; +use App\Services\Other\Interfaces\AnnouncementServiceInterface; class AnnouncementServiceTest extends TestCase { @@ -68,5 +75,4 @@ public function test_latest_with_no_cache() $this->assertEquals($newAnnouncement->admin_id, $latest['admin_id']); $this->assertEquals($newAnnouncement->announcement, $latest['announcement']); } - -} \ No newline at end of file +} diff --git a/tests/Services/Other/LinkServiceTest.php b/tests/Services/Other/LinkServiceTest.php index 23ea472d7..33a705773 100644 --- a/tests/Services/Other/LinkServiceTest.php +++ b/tests/Services/Other/LinkServiceTest.php @@ -1,16 +1,22 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ namespace Tests\Services\Other; - -use App\Services\Other\Interfaces\LinkServiceInterface; -use App\Services\Other\Models\Link; use Tests\TestCase; +use App\Services\Other\Models\Link; +use App\Services\Other\Interfaces\LinkServiceInterface; class LinkServiceTest extends TestCase { - protected $service; public function setUp() @@ -67,5 +73,4 @@ public function test_link_all_with_no_cache() $this->assertEquals($link->name, $links[0]['name']); $this->assertEquals($link1->name, $links[1]['name']); } - -} \ No newline at end of file +} diff --git a/tests/Services/Other/NavServiceTest.php b/tests/Services/Other/NavServiceTest.php index a1dbd9f3a..2cc900aa0 100644 --- a/tests/Services/Other/NavServiceTest.php +++ b/tests/Services/Other/NavServiceTest.php @@ -1,12 +1,20 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ namespace Tests\Services\Other; -use App\Services\Other\Interfaces\NavServiceInterface; +use Tests\TestCase; use App\Services\Other\Models\Nav; use App\Services\Other\Services\NavService; -use Tests\TestCase; +use App\Services\Other\Interfaces\NavServiceInterface; class NavServiceTest extends TestCase { @@ -68,5 +76,4 @@ public function test_all_with_no_cache() $this->assertEquals($nav->name, $all[0]['name']); $this->assertEquals($nav2->name, $all[1]['name']); } - -} \ No newline at end of file +} diff --git a/tests/TestCase.php b/tests/TestCase.php index 5ddebc678..895c12a92 100644 --- a/tests/TestCase.php +++ b/tests/TestCase.php @@ -1,5 +1,14 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + namespace Tests; use Illuminate\Foundation\Testing\RefreshDatabase; @@ -24,5 +33,4 @@ public function assertResponseAjaxSuccess($response) $responseContent = json_decode($responseContent, true); $this->assertEquals(0, $responseContent['code']); } - } diff --git a/tests/Unit/BusinessStateTest.php b/tests/Unit/BusinessStateTest.php index 6a7ac1d68..0dcee8d9d 100644 --- a/tests/Unit/BusinessStateTest.php +++ b/tests/Unit/BusinessStateTest.php @@ -1,21 +1,28 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ namespace Tests\Unit; - +use Carbon\Carbon; +use Tests\TestCase; +use Illuminate\Support\Str; use App\Businesses\BusinessState; -use App\Services\Course\Models\Course; -use App\Services\Course\Models\Video; use App\Services\Member\Models\User; -use App\Services\Member\Models\UserCourse; +use Illuminate\Support\Facades\Auth; +use App\Services\Course\Models\Video; +use App\Services\Course\Models\Course; +use App\Services\Order\Models\PromoCode; use App\Services\Member\Models\UserVideo; +use App\Services\Member\Models\UserCourse; use App\Services\Order\Models\OrderPaidRecord; -use App\Services\Order\Models\PromoCode; -use Carbon\Carbon; -use Illuminate\Support\Facades\Auth; -use Illuminate\Support\Str; -use Tests\TestCase; class BusinessStateTest extends TestCase { @@ -204,5 +211,4 @@ public function test_promoCodeCanUse_with_simple_promo_code() ]); $this->assertTrue($this->businessStatus->promoCodeCanUse($promoCode->toArray())); } - -} \ No newline at end of file +} diff --git a/tests/Unit/Events/OrderCancelEventTest.php b/tests/Unit/Events/OrderCancelEventTest.php index 5b9cfe0c9..48aa650f1 100644 --- a/tests/Unit/Events/OrderCancelEventTest.php +++ b/tests/Unit/Events/OrderCancelEventTest.php @@ -1,19 +1,25 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ namespace Tests\Unit\Events; - +use Tests\TestCase; use App\Events\OrderCancelEvent; use App\Services\Member\Models\Role; use App\Services\Member\Models\User; use App\Services\Order\Models\PromoCode; use App\Services\Order\Services\OrderService; -use Tests\TestCase; class OrderCancelEventTest extends TestCase { - public function test_PromoCodeResumeListener() { $user = factory(User::class)->create(); @@ -29,5 +35,4 @@ public function test_PromoCodeResumeListener() $promoCode->refresh(); $this->assertEquals(1, $promoCode->used_times); } - -} \ No newline at end of file +} diff --git a/tests/Unit/Events/PaymentSuccessEventTest.php b/tests/Unit/Events/PaymentSuccessEventTest.php index 3f7a5f65b..cc1c7331f 100644 --- a/tests/Unit/Events/PaymentSuccessEventTest.php +++ b/tests/Unit/Events/PaymentSuccessEventTest.php @@ -1,18 +1,24 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ namespace Tests\Unit\Events; - +use Carbon\Carbon; +use Tests\TestCase; use App\Events\PaymentSuccessEvent; use App\Services\Member\Models\User; use App\Services\Order\Models\Order; -use Carbon\Carbon; -use Tests\TestCase; class PaymentSuccessEventTest extends TestCase { - public function test_InviteUserRewardListener() { config(['meedu.member.invite.per_order_draw' => 0.02]); @@ -30,5 +36,4 @@ public function test_InviteUserRewardListener() $user->refresh(); $this->assertEquals(2, $user->invite_balance); } - -} \ No newline at end of file +} diff --git a/tests/Unit/Events/UserInviteBalanceWithdrawHandledEventTest.php b/tests/Unit/Events/UserInviteBalanceWithdrawHandledEventTest.php index 688845e29..6533db086 100644 --- a/tests/Unit/Events/UserInviteBalanceWithdrawHandledEventTest.php +++ b/tests/Unit/Events/UserInviteBalanceWithdrawHandledEventTest.php @@ -1,19 +1,25 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ namespace Tests\Unit\Events; - -use App\Events\UserInviteBalanceWithdrawHandledEvent; -use App\Services\Member\Interfaces\NotificationServiceInterface; +use Tests\TestCase; use App\Services\Member\Models\User; -use App\Services\Member\Models\UserInviteBalanceWithdrawOrder; use Illuminate\Support\Facades\Auth; -use Tests\TestCase; +use App\Events\UserInviteBalanceWithdrawHandledEvent; +use App\Services\Member\Models\UserInviteBalanceWithdrawOrder; +use App\Services\Member\Interfaces\NotificationServiceInterface; class UserInviteBalanceWithdrawHandledEventTest extends TestCase { - public function test_run() { $user = factory(User::class)->create(); @@ -56,5 +62,4 @@ public function test_refund() $user1->refresh(); $this->assertEquals(12, $user2->invite_balance); } - -} \ No newline at end of file +} diff --git a/tests/Unit/HelperTest.php b/tests/Unit/HelperTest.php index 00fb616e4..70d681872 100644 --- a/tests/Unit/HelperTest.php +++ b/tests/Unit/HelperTest.php @@ -1,15 +1,21 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ namespace Tests\Unit; - use Exception; use Tests\TestCase; class HelperTest extends TestCase { - public function test_exception_record() { try { @@ -58,5 +64,4 @@ public function test_random_number() $str = random_number('C', 10); $this->assertEquals(10, mb_strlen($str)); } - -} \ No newline at end of file +} diff --git a/tests/Unit/Meedu/IccTest.php b/tests/Unit/Meedu/IccTest.php index 1d1eeeb5f..bb8ccdb61 100644 --- a/tests/Unit/Meedu/IccTest.php +++ b/tests/Unit/Meedu/IccTest.php @@ -1,19 +1,25 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ namespace Tests\Unit\Meedu; - -use App\Meedu\Cache\Inc\AdFromIncItem; +use Tests\TestCase; use App\Meedu\Cache\Inc\Inc; -use App\Services\Other\Interfaces\AdFromServiceInterface; use App\Services\Other\Models\AdFrom; +use App\Meedu\Cache\Inc\AdFromIncItem; use App\Services\Other\Services\AdFromService; -use Tests\TestCase; +use App\Services\Other\Interfaces\AdFromServiceInterface; class IccTest extends TestCase { - public function test_AdFromIncItem() { $adFrom = factory(AdFrom::class)->create(); @@ -45,5 +51,4 @@ public function test_AdFromIncItem() $adFromDay = $adFromService->getDay($adFrom->id, $today); $this->assertEquals(4, $adFromDay['num']); } - -} \ No newline at end of file +} diff --git a/tests/Unit/Meedu/ServiceProxy/CacheInfoTest.php b/tests/Unit/Meedu/ServiceProxy/CacheInfoTest.php index c57f7e84d..80affa99d 100644 --- a/tests/Unit/Meedu/ServiceProxy/CacheInfoTest.php +++ b/tests/Unit/Meedu/ServiceProxy/CacheInfoTest.php @@ -1,15 +1,21 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ namespace Tests\Unit\Meedu\ServiceProxy; - -use App\Meedu\ServiceProxy\Cache\CacheInfo; use Tests\TestCase; +use App\Meedu\ServiceProxy\Cache\CacheInfo; class CacheInfoTest extends TestCase { - public function test_cacheInfo() { $cacheInfo = new CacheInfo('c', 1200); @@ -21,5 +27,4 @@ public function test_cacheInfo() $this->assertEquals('b', $cacheInfo->getName()); $this->assertEquals(1300, $cacheInfo->getExpire()); } - -} \ No newline at end of file +} diff --git a/tests/Unit/Meedu/ServiceProxy/LimitInfoTest.php b/tests/Unit/Meedu/ServiceProxy/LimitInfoTest.php index 3e90ab284..312b470fa 100644 --- a/tests/Unit/Meedu/ServiceProxy/LimitInfoTest.php +++ b/tests/Unit/Meedu/ServiceProxy/LimitInfoTest.php @@ -1,15 +1,21 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ namespace Tests\Unit\Meedu\ServiceProxy; - -use App\Meedu\ServiceProxy\Limiter\LimiterInfo; use Tests\TestCase; +use App\Meedu\ServiceProxy\Limiter\LimiterInfo; class LimitInfoTest extends TestCase { - public function test() { $limitInfo = new LimiterInfo('limit', 10, 1); @@ -25,5 +31,4 @@ public function test() $this->assertEquals(2, $limitInfo->getMinutes()); $this->assertEquals(20, $limitInfo->getMaxTimes()); } - -} \ No newline at end of file +} diff --git a/tests/Unit/Meedu/ServiceProxy/LockInfoTest.php b/tests/Unit/Meedu/ServiceProxy/LockInfoTest.php index 9546c00f8..cca3a0841 100644 --- a/tests/Unit/Meedu/ServiceProxy/LockInfoTest.php +++ b/tests/Unit/Meedu/ServiceProxy/LockInfoTest.php @@ -1,15 +1,21 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ namespace Tests\Unit\Meedu\ServiceProxy; - -use App\Meedu\ServiceProxy\Lock\LockInfo; use Tests\TestCase; +use App\Meedu\ServiceProxy\Lock\LockInfo; class LockInfoTest extends TestCase { - public function test() { $lockInfo = new LockInfo('lock', 10); @@ -21,5 +27,4 @@ public function test() $this->assertEquals('lock1', $lockInfo->getName()); $this->assertEquals(20, $lockInfo->getSeconds()); } - -} \ No newline at end of file +} diff --git a/tests/Unit/Meedu/ServiceProxy/ServiceProxyTest.php b/tests/Unit/Meedu/ServiceProxy/ServiceProxyTest.php index f6aaf2993..30deca15c 100644 --- a/tests/Unit/Meedu/ServiceProxy/ServiceProxyTest.php +++ b/tests/Unit/Meedu/ServiceProxy/ServiceProxyTest.php @@ -1,17 +1,22 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ namespace Tests\Unit\Meedu\ServiceProxy; - use Tests\TestCase; class ServiceProxyTest extends TestCase { - public function test() { $this->assertTrue(true); } - -} \ No newline at end of file +} diff --git a/tests/Unit/Meedu/VodTest.php b/tests/Unit/Meedu/VodTest.php index ce8ce53ee..f222b4626 100644 --- a/tests/Unit/Meedu/VodTest.php +++ b/tests/Unit/Meedu/VodTest.php @@ -1,20 +1,25 @@ + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ namespace Tests\Unit\Meedu; - -use App\Meedu\Tencent\Vod; use Tests\TestCase; +use App\Meedu\Tencent\Vod; class VodTest extends TestCase { - public function test_vod() { $vod = new Vod(); $vod->getUploadSignature(); $this->assertTrue(true); } - -} \ No newline at end of file +}