diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 00000000..b27712dd --- /dev/null +++ b/.dockerignore @@ -0,0 +1 @@ +db.sqlite \ No newline at end of file diff --git a/.gitignore b/.gitignore index 1945b032..14c437c3 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,6 @@ .idea/ *.pyc -db.sqlite \ No newline at end of file +db.sqlite +.env +.pytest_cache +.vscode \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..89483464 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,15 @@ +FROM python:3.7 + +RUN apt-get update + +WORKDIR /code + +COPY ./requirements.txt ./ +RUN pip3 install -r requirements.txt + + +COPY . . + +CMD gunicorn wsgi:app -b 0.0.0.0:5000 -w 2 --timeout 15 --log-level DEBUG + +#CMD ["/usr/local/bin/gunicorn", "wsgi:app", "-k", "gthread", "-b", "0.0.0.0:5000", "-w", "2", "--timeout", "15", "--log-level", "DEBUG"] diff --git a/README.md b/README.md new file mode 100644 index 00000000..c5e7f478 --- /dev/null +++ b/README.md @@ -0,0 +1,110 @@ + +## OAuth flow + +Authorization code flow: + +http://sl-server:5000/oauth/authorize?client_id=client-id&state=123456&response_type=code&redirect_uri=http%3A%2F%2Fsl-client%3A7000%2Fcallback&state=dvoQ6Jtv0PV68tBUgUMM035oFiZw57 + +Implicit flow: +http://sl-server:5000/oauth/authorize?client_id=client-id&state=123456&response_type=token&redirect_uri=http%3A%2F%2Fsl-client%3A7000%2Fcallback&state=dvoQ6Jtv0PV68tBUgUMM035oFiZw57 + +Exchange the code to get the token with `{code}` replaced by the code obtained in previous step. + +http -f -a client-id:client-secret http://localhost:5000/oauth/token grant_type=authorization_code code={code} + +Get user info: + +http http://localhost:5000/oauth/user_info 'Authorization:Bearer {token}' + + +## Template structure + +base + single: for login, register page + default: for all pages when user log ins + +## How to create new migration + +Whenever the model changes, a new migration needs to be created + +Set the database connection to use staging environment: + +> set -x CONFIG ~/config/simplelogin/staging.env + +Generate the migration script and make sure to review it: + +> flask db migrate + +## Code structure + +local_data/: contain files used only locally. In deployment, these files should be replaced. + - jwtRS256.key: generated using + +```bash +ssh-keygen -t rsa -b 4096 -m PEM -f jwtRS256.key +# Don't add passphrase +openssl rsa -in jwtRS256.key -pubout -outform PEM -out jwtRS256.key.pub +``` + +## OpenID, OAuth2 response_type & scope + +According to https://medium.com/@darutk/diagrams-of-all-the-openid-connect-flows-6968e3990660 + +- `response_type` can be either `code, token, id_token` or any combination. +- `scope` can contain `openid` or not + +Below is the different combinations that are taken into account until now: + +response_type=code + scope: + with `openid` in scope, return `id_token` at /token: OK + without: OK + +response_type=token + scope: + with and without `openid`, nothing to do: OK + +response_type=id_token + return `id_token` in /authorization endpoint + +response_type=id_token token + return `id_token` in addition to `access_token` in /authorization endpoint + +response_type=id_token code + return `id_token` in addition to `authorization_code` in /authorization endpoint + + +# Plan Upgrade, downgrade flow + +Here's an example: + +July 2019: user takes yearly plan, valid until July 2020 + user.plan=yearly, user.plan_expiration=None + set user.stripe card-token, customer-id, subscription-id + +December 2019: user cancels his plan. + set plan_expiration to "period end of subscription", ie July 2020 + call stripe: + stripe.Subscription.modify( + user.stripe_subscription_id, + cancel_at_period_end=True + ) + +There are 2 possible scenarios at this point: +1) user decides to renew on March 2020: + set plan_expiration = None + stripe.Subscription.modify( + user.stripe_subscription_id, + cancel_at_period_end=False + ) + +2) the plan ends on July 2020. +The cronjob set +- user stripe_subscription_id , stripe_card_token, stripe_customer_id to None +- user.plan=free, user.plan_expiration=None +- delete customer on stripe + +user decides to take the premium plan again: go through all normal flow + + + diff --git a/app/admin_model.py b/app/admin_model.py new file mode 100644 index 00000000..f4f436c6 --- /dev/null +++ b/app/admin_model.py @@ -0,0 +1,22 @@ +from flask import redirect, url_for, request +from flask_admin import expose, AdminIndexView +from flask_admin.contrib import sqla +from flask_login import current_user + + +class SLModelView(sqla.ModelView): + def is_accessible(self): + return current_user.is_authenticated and current_user.is_admin + + def inaccessible_callback(self, name, **kwargs): + # redirect to login page if user doesn't have access + return redirect(url_for("auth.login", next=request.url)) + + +class SLAdminIndexView(AdminIndexView): + @expose("/") + def index(self): + if not current_user.is_authenticated or not current_user.is_admin: + return redirect(url_for("auth.login", next=request.url)) + + return super(SLAdminIndexView, self).index() diff --git a/app/auth/__init__.py b/app/auth/__init__.py index a4a4b69c..4c496853 100644 --- a/app/auth/__init__.py +++ b/app/auth/__init__.py @@ -1 +1,9 @@ -from .views import login, logout +from .views import ( + login, + logout, + register, + activate, + resend_activation, + reset_password, + forgot_password, +) diff --git a/app/auth/base.py b/app/auth/base.py index 72638fee..5418e7c5 100644 --- a/app/auth/base.py +++ b/app/auth/base.py @@ -1,3 +1,5 @@ from flask import Blueprint -auth_bp = Blueprint(name="auth", import_name=__name__, url_prefix="/auth") +auth_bp = Blueprint( + name="auth", import_name=__name__, url_prefix="/auth", template_folder="templates" +) diff --git a/app/auth/templates/auth/activate.html b/app/auth/templates/auth/activate.html new file mode 100644 index 00000000..0dd11e0b --- /dev/null +++ b/app/auth/templates/auth/activate.html @@ -0,0 +1,16 @@ +{% extends "error.html" %} + +{% block error_name %} + {{ error }} +{% endblock %} + +{% block error_description %} + + {% if show_resend_activation %} +
+ Ask for another activation email? + Resend +
+ {% endif %} + +{% endblock %} \ No newline at end of file diff --git a/app/auth/templates/auth/forgot_password.html b/app/auth/templates/auth/forgot_password.html new file mode 100644 index 00000000..55a5c8ab --- /dev/null +++ b/app/auth/templates/auth/forgot_password.html @@ -0,0 +1,37 @@ +{% from "_formhelpers.html" import render_field, render_field_errors %} + +{% extends "single.html" %} + +{% block title %} + Forgot Password +{% endblock %} + +{% block single_content %} + {% if error %} +
{{ error }}
+ {% endif %} + +
+ {{ form.csrf_token }} +
+
Forgot password
+

Enter your email address and your will receive an email to reset your password.

+ +
+ + {{ form.email(class="form-control", type="email", placeholder="Enter email") }} + {{ render_field_errors(form.email) }} +
+ + +
+
+ +
+ Forget it, send me back to the sign in screen. +
+ + +{% endblock %} \ No newline at end of file diff --git a/app/auth/templates/auth/login.html b/app/auth/templates/auth/login.html new file mode 100644 index 00000000..4666ec2e --- /dev/null +++ b/app/auth/templates/auth/login.html @@ -0,0 +1,63 @@ +{% from "_formhelpers.html" import render_field, render_field_errors %} + +{% extends "single.html" %} + +{% block title %} + Login +{% endblock %} + +{% block single_content %} + {% if error %} +
{{ error }}
+ {% endif %} + + {% if show_resend_activation %} +
+ You haven't received the activation email? + Resend +
+ {% endif %} + +
+ {{ form.csrf_token }} +
+
Login to your account
+ +
+ + {{ form.email(class="form-control", type="email") }} + {{ render_field_errors(form.email) }} +
+ +
+ + {{ form.password(class="form-control", type="password") }} + {{ render_field_errors(form.password) }} +
+ + + + +
+
+ +
+ Don't have account yet? Sign up +
+ + +{% endblock %} \ No newline at end of file diff --git a/app/auth/templates/auth/logout.html b/app/auth/templates/auth/logout.html new file mode 100644 index 00000000..4a6fffc3 --- /dev/null +++ b/app/auth/templates/auth/logout.html @@ -0,0 +1,14 @@ +{% extends "single.html" %} + +{% block title %} + Logout +{% endblock %} + +{% block single_content %} +
+ You are logged out. + + Login +
+ +{% endblock %} \ No newline at end of file diff --git a/app/auth/templates/auth/register.html b/app/auth/templates/auth/register.html new file mode 100644 index 00000000..fc137659 --- /dev/null +++ b/app/auth/templates/auth/register.html @@ -0,0 +1,52 @@ +{% from "_formhelpers.html" import render_field, render_field_errors %} + +{% extends "single.html" %} + +{% block title %} + Register +{% endblock %} + +{% block single_content %} +
+ {{ form.csrf_token }} +
+
Create new account
+ +
+ + {{ form.name(class="form-control") }} + {{ render_field_errors(form.name) }} +
+ +
+ + {{ form.email(class="form-control", type="email") }} + {{ render_field_errors(form.email) }} +
+ +
+ + {{ form.password(class="form-control", type="password") }} + {{ render_field_errors(form.password) }} +
+ + + + +
+
+ +
+ Already have account? Sign in +
+ +{% endblock %} \ No newline at end of file diff --git a/app/auth/templates/auth/register_waiting_activation.html b/app/auth/templates/auth/register_waiting_activation.html new file mode 100644 index 00000000..a6418335 --- /dev/null +++ b/app/auth/templates/auth/register_waiting_activation.html @@ -0,0 +1,22 @@ +{% extends "single.html" %} + +{% block title %} + Activation Email Sent +{% endblock %} + +{% block single_content %} +
+

+ An email to validate your email is on its way. +

+ +

+ Please check your inbox/spam folder. +

+ + Yeah we know. An email to confirm an email ... + + +
+ +{% endblock %} \ No newline at end of file diff --git a/app/auth/templates/auth/resend_activation.html b/app/auth/templates/auth/resend_activation.html new file mode 100644 index 00000000..5530fa06 --- /dev/null +++ b/app/auth/templates/auth/resend_activation.html @@ -0,0 +1,31 @@ +{% from "_formhelpers.html" import render_field, render_field_errors %} + +{% extends "single.html" %} + +{% block title %} + Resend activation email +{% endblock %} + +{% block single_content %} +
+ {{ form.csrf_token }} +
+
Resend activation email
+ +
+ + {{ form.email(class="form-control", type="email") }} + {{ render_field_errors(form.email) }} +
+ + +
+
+ +
+ Don't have account yet? Sign up +
+ +{% endblock %} \ No newline at end of file diff --git a/app/auth/templates/auth/reset_password.html b/app/auth/templates/auth/reset_password.html new file mode 100644 index 00000000..6105c3e5 --- /dev/null +++ b/app/auth/templates/auth/reset_password.html @@ -0,0 +1,31 @@ +{% from "_formhelpers.html" import render_field, render_field_errors %} + +{% extends "single.html" %} + +{% block title %} + Reset password +{% endblock %} + +{% block single_content %} + {% if error %} +
{{ error }}
+ {% endif %} + +
+ {{ form.csrf_token }} +
+
Reset your password
+ +
+ + {{ form.password(class="form-control", type="password") }} + {{ render_field_errors(form.password) }} +
+ + +
+
+ +{% endblock %} \ No newline at end of file diff --git a/app/auth/views/activate.py b/app/auth/views/activate.py new file mode 100644 index 00000000..08d9f5dd --- /dev/null +++ b/app/auth/views/activate.py @@ -0,0 +1,56 @@ +import arrow +from flask import request, redirect, url_for, flash, render_template +from flask_login import login_user, current_user + +from app.auth.base import auth_bp +from app.extensions import db +from app.log import LOG +from app.models import ActivationCode + + +@auth_bp.route("/activate", methods=["GET", "POST"]) +def activate(): + if current_user.is_authenticated: + return ( + render_template("auth/activate.html", error="You are already logged in"), + 400, + ) + + code = request.args.get("code") + + activation_code: ActivationCode = ActivationCode.get_by(code=code) + + if not activation_code: + return ( + render_template("auth/activate.html", error="Activation code not found"), + 400, + ) + + if activation_code.expired and activation_code.expired < arrow.now(): + return ( + render_template( + "auth/activate.html", + error="Activation code is expired", + show_resend_activation=True, + ), + 400, + ) + + user = activation_code.user + user.activated = True + login_user(user) + + # activation code is to be used only once + activation_code.delete() + db.session.commit() + + flash("Your account has been activated", "success") + + # The activation link contains the original page, for ex authorize page + if "next" in request.args: + next_url = request.args.get("next") + LOG.debug("redirect user to %s", next_url) + return redirect(next_url) + else: + LOG.debug("redirect user to dashboard") + return redirect(url_for("dashboard.index")) diff --git a/app/auth/views/forgot_password.py b/app/auth/views/forgot_password.py new file mode 100644 index 00000000..254beee4 --- /dev/null +++ b/app/auth/views/forgot_password.py @@ -0,0 +1,30 @@ +from flask import request, render_template, redirect, url_for +from flask_wtf import FlaskForm +from wtforms import StringField, validators + +from app.auth.base import auth_bp +from app.dashboard.views.setting import send_reset_password_email +from app.models import User + + +class ForgotPasswordForm(FlaskForm): + email = StringField("Email", validators=[validators.DataRequired()]) + + +@auth_bp.route("/forgot_password", methods=["GET", "POST"]) +def forgot_password(): + form = ForgotPasswordForm(request.form) + + if form.validate_on_submit(): + email = form.email.data + + user = User.get_by(email=email) + + if not user: + error = "No such user, are you sure the email is correct?" + return render_template("auth/forgot_password.html", form=form, error=error) + + send_reset_password_email(user) + return redirect(url_for("auth.forgot_password")) + + return render_template("auth/forgot_password.html", form=form) diff --git a/app/auth/views/login.py b/app/auth/views/login.py index 0c82ab93..2fa59c51 100644 --- a/app/auth/views/login.py +++ b/app/auth/views/login.py @@ -1,13 +1,14 @@ -from flask import request, flash, render_template, redirect, url_for +from flask import request, render_template, redirect, url_for from flask_login import login_user -from wtforms import Form, StringField, validators +from flask_wtf import FlaskForm +from wtforms import StringField, validators from app.auth.base import auth_bp from app.log import LOG from app.models import User -class LoginForm(Form): +class LoginForm(FlaskForm): email = StringField("Email", validators=[validators.DataRequired()]) password = StringField("Password", validators=[validators.DataRequired()]) @@ -16,21 +17,35 @@ class LoginForm(Form): def login(): form = LoginForm(request.form) - if request.method == "POST": - if form.validate(): - user = User.query.filter_by(email=form.email.data).first() + if form.validate_on_submit(): + user = User.filter_by(email=form.email.data).first() - if not user: - flash("No such email", "warning") - return render_template("auth/login.html", form=form) + if not user: + return render_template( + "auth/login.html", form=form, error="Email not exist in our system" + ) - if not user.check_password(form.password.data): - flash("Wrong password", "warning") - return render_template("auth/login.html", form=form) + if not user.check_password(form.password.data): + return render_template("auth/login.html", form=form, error="Wrong password") - LOG.debug("log user %s in", user) - login_user(user) + if not user.activated: + return render_template( + "auth/login.html", + form=form, + show_resend_activation=True, + error="Please check your inbox for the activation email. You can also have this email re-sent", + ) + LOG.debug("log user %s in", user) + login_user(user) + + # User comes to login page from another page + if "next" in request.args: + next_url = request.args.get("next") + LOG.debug("redirect user to %s", next_url) + return redirect(next_url) + else: + LOG.debug("redirect user to dashboard") return redirect(url_for("dashboard.index")) return render_template("auth/login.html", form=form) diff --git a/app/auth/views/register.py b/app/auth/views/register.py new file mode 100644 index 00000000..1a46ca59 --- /dev/null +++ b/app/auth/views/register.py @@ -0,0 +1,89 @@ +import arrow +from flask import request, flash, render_template +from flask_wtf import FlaskForm +from wtforms import StringField, validators + +from app import email_utils +from app.auth.base import auth_bp +from app.config import URL +from app.email_utils import notify_admin +from app.extensions import db +from app.log import LOG +from app.models import User, ActivationCode, PlanEnum, GenEmail +from app.utils import random_string, encode_url + + +class RegisterForm(FlaskForm): + email = StringField("Email", validators=[validators.DataRequired()]) + password = StringField( + "Password", validators=[validators.DataRequired(), validators.Length(min=8)] + ) + name = StringField("Name", validators=[validators.DataRequired()]) + + +@auth_bp.route("/register", methods=["GET", "POST"]) +def register(): + form = RegisterForm(request.form) + + if form.validate_on_submit(): + user = User.filter_by(email=form.email.data).first() + + if user: + flash(f"Email {form.email.data} already exists", "warning") + return render_template("auth/register.html", form=form) + + LOG.debug("create user %s", form.email.data) + user = User.create(email=form.email.data, name=form.name.data) + user.set_password(form.password.data) + + # by default new user will be trial period + user.plan = PlanEnum.trial + user.plan_expiration = arrow.now().shift(days=+15) + db.session.flush() + + # create a first alias mail to show user how to use when they login + GenEmail.create_new_gen_email(user_id=user.id) + db.session.commit() + + send_activation_email(user) + notify_admin( + f"new user signs up {user.email}", f"{user.name} signs up at {arrow.now()}" + ) + + return render_template("auth/register_waiting_activation.html") + + return render_template("auth/register.html", form=form) + + +def send_activation_email(user): + activation = ActivationCode.create(user_id=user.id, code=random_string(30)) + db.session.commit() + + # Send user activation email + activation_link = f"{URL}/auth/activate?code={activation.code}" + if "next" in request.args: + LOG.d("redirect user to %s after activation", request.args["next"]) + activation_link = activation_link + "&next=" + encode_url(request.args["next"]) + + email_utils.send( + user.email, + f"Welcome to SimpleLogin {user.name} - just one more step!", + html_content=f""" + Welcome to SimpleLogin!

+ +Our mission is to make the login process as smooth and as secure as possible. This should be easy.

+ +To get started, we need to confirm your email address, so please click this link +to finish creating your account. Or you can paste this link into your browser:

+ +{activation_link}

+ +Your feedbacks are very important to us. Please feel free to reply to this email to let us know any +of your suggestion!

+ +Thanks!

+ +SimpleLogin team. + + """, + ) diff --git a/app/auth/views/resend_activation.py b/app/auth/views/resend_activation.py new file mode 100644 index 00000000..d5c8cc08 --- /dev/null +++ b/app/auth/views/resend_activation.py @@ -0,0 +1,39 @@ +from flask import request, flash, render_template, redirect, url_for +from flask_wtf import FlaskForm +from wtforms import StringField, validators + +from app.auth.base import auth_bp +from app.auth.views.register import send_activation_email +from app.log import LOG +from app.models import User + + +class ResendActivationForm(FlaskForm): + email = StringField("Email", validators=[validators.DataRequired()]) + + +@auth_bp.route("/resend_activation", methods=["GET", "POST"]) +def resend_activation(): + form = ResendActivationForm(request.form) + + if form.validate_on_submit(): + user = User.filter_by(email=form.email.data).first() + + if not user: + flash("There's no such email", "warning") + return render_template("auth/resend_activation.html", form=form) + + if user.activated: + flash("your account is already activated, please login", "success") + return redirect(url_for("auth.login")) + + # user is not activated + LOG.d("user %s is not activated", user) + flash( + "An activation email is on its way, please check your inbox/spam folder", + "warning", + ) + send_activation_email(user) + return render_template("auth/register_waiting_activation.html") + + return render_template("auth/resend_activation.html", form=form) diff --git a/app/auth/views/reset_password.py b/app/auth/views/reset_password.py new file mode 100644 index 00000000..0c66da00 --- /dev/null +++ b/app/auth/views/reset_password.py @@ -0,0 +1,59 @@ +import arrow +from flask import request, flash, render_template, redirect, url_for +from flask_login import login_user +from flask_wtf import FlaskForm +from wtforms import StringField, validators + +from app.auth.base import auth_bp +from app.extensions import db +from app.models import ResetPasswordCode + + +class ResetPasswordForm(FlaskForm): + password = StringField( + "Password", validators=[validators.DataRequired(), validators.Length(min=8)] + ) + + +@auth_bp.route("/reset_password", methods=["GET", "POST"]) +def reset_password(): + form = ResetPasswordForm(request.form) + + reset_password_code_str = request.args.get("code") + + reset_password_code: ResetPasswordCode = ResetPasswordCode.get_by( + code=reset_password_code_str + ) + + if not reset_password_code: + error = ( + "The reset password link can be used only once. " + "Please make a new request to reset password" + ) + return render_template("auth/reset_password.html", form=form, error=error) + + if reset_password_code.expired < arrow.now(): + error = ( + "The link is already expired. Please make a new request to reset password" + ) + return render_template("auth/reset_password.html", form=form, error=error) + + if form.validate_on_submit(): + user = reset_password_code.user + + user.set_password(form.password.data) + + flash("Your new password has been set", "success") + + # this can be served to activate user too + user.activated = True + + # remove the reset password code + reset_password_code.delete() + + db.session.commit() + login_user(user) + + return redirect(url_for("dashboard.index")) + + return render_template("auth/reset_password.html", form=form) diff --git a/app/config.py b/app/config.py new file mode 100644 index 00000000..cabf5f3b --- /dev/null +++ b/app/config.py @@ -0,0 +1,59 @@ +import os +import subprocess + +from dotenv import load_dotenv + +SHA1 = subprocess.getoutput("git rev-parse HEAD") + +config_file = os.environ.get("CONFIG") +if config_file: + print("load config file", config_file) + load_dotenv(config_file) +else: + load_dotenv() + + +URL = os.environ.get("URL") or "http://sl-server:5000" +EMAIL_DOMAIN = os.environ.get("EMAIL_DOMAIN") or "sl" +SUPPORT_EMAIL = os.environ.get("SUPPORT_EMAIL") or "support@sl" +SENDGRID_API_KEY = os.environ.get("SENDGRID_API_KEY") +DB_URI = os.environ.get("DB_URI") or "sqlite:///db.sqlite" + +FLASK_SECRET = os.environ.get("FLASK_SECRET") or "secret" + +# invalidate the session at each new version by changing the secret +FLASK_SECRET = FLASK_SECRET + SHA1 + +ENABLE_SENTRY = "ENABLE_SENTRY" in os.environ +ENV = os.environ.get("ENV") + +print("email domain is", EMAIL_DOMAIN) + + +AWS_REGION = "eu-west-3" +BUCKET = os.environ.get("BUCKET") or "local.sl" +AWS_ACCESS_KEY_ID = os.environ.get("AWS_ACCESS_KEY_ID") +AWS_SECRET_ACCESS_KEY = os.environ.get("AWS_SECRET_ACCESS_KEY") + +ENABLE_CLOUDWATCH = "ENABLE_CLOUDWATCH" in os.environ +CLOUDWATCH_LOG_GROUP = os.environ.get("CLOUDWATCH_LOG_GROUP") +CLOUDWATCH_LOG_STREAM = os.environ.get("CLOUDWATCH_LOG_STREAM") + +STRIPE_API = os.environ.get("STRIPE_API") # Stripe public key +STRIPE_SECRET_KEY = os.environ.get("STRIPE_SECRET_KEY") +STRIPE_YEARLY_PLAN = os.environ.get("STRIPE_YEARLY_PLAN") +STRIPE_MONTHLY_PLAN = os.environ.get("STRIPE_MONTHLY_PLAN") + +# Max number emails user can generate for free plan +MAX_NB_EMAIL_FREE_PLAN = int(os.environ.get("MAX_NB_EMAIL_FREE_PLAN")) + +LYRA_ANALYTICS_ID = os.environ.get("LYRA_ANALYTICS_ID") + +# Used to sign id_token +OPENID_PRIVATE_KEY_PATH = os.environ.get("OPENID_PRIVATE_KEY_PATH") +OPENID_PUBLIC_KEY_PATH = os.environ.get("OPENID_PUBLIC_KEY_PATH") + +PARTNER_CODES = ["SL2019"] + +# Allow user to have 1 year of premium: set the expiration_date to 1 year more +PROMO_CODE = "SIMPLEISBETTER" diff --git a/app/dashboard/__init__.py b/app/dashboard/__init__.py index 86bd305b..fee06da5 100644 --- a/app/dashboard/__init__.py +++ b/app/dashboard/__init__.py @@ -1 +1 @@ -from .views import index +from .views import index, pricing, setting diff --git a/app/dashboard/base.py b/app/dashboard/base.py index b7e8189b..1b200991 100644 --- a/app/dashboard/base.py +++ b/app/dashboard/base.py @@ -1,5 +1,8 @@ from flask import Blueprint dashboard_bp = Blueprint( - name="dashboard", import_name=__name__, url_prefix="/dashboard" + name="dashboard", + import_name=__name__, + url_prefix="/dashboard", + template_folder="templates", ) diff --git a/app/dashboard/templates/dashboard/index.html b/app/dashboard/templates/dashboard/index.html new file mode 100644 index 00000000..dabcd457 --- /dev/null +++ b/app/dashboard/templates/dashboard/index.html @@ -0,0 +1,244 @@ +{% extends 'default.html' %} + +{% set active_page = "dashboard" %} + +{% block title %} + Dashboard +{% endblock %} + +{% block default_content %} + + +
+
+
+
+ + + + + + + + + + + + {% for gen_email in gen_emails %} + + + + + + + + + + + + {% endfor %} + + +
Email + Used On + + Actions + Enable/Disable Email Forwarding + Created At
+ + + {% for client_user in gen_email.client_users %} + {{ client_user.client.name }}
+ {% endfor %} +
+
+ + +
+ + + + {% if gen_email.enabled %} + + {% endif %} +
+
+
+
+ + + + +
+
+ {{ gen_email.created_at | dt }} +
+
+
+
+
+ + + +
+
+
+
+ + + + + + + + + + + {% for client_user in client_users %} + + + + + + + + + {# TODO: add last_used#} + + + + {% endfor %} + + +
+ App + + Information + + + First used + +
+ {{ client_user.client.name }} + + {% for scope, val in client_user.get_user_info().items() %} +
+ {% if scope == "email" %} + Email: {{ val }} + {% elif scope == "name" %} + Name: {{ val }} + {% endif %} +
+ {% endfor %} +
+ {{ client_user.created_at | dt }} +
+
+
+
+
+{% endblock %} + +{% block script %} + +{% endblock %} diff --git a/app/dashboard/templates/dashboard/pricing.html b/app/dashboard/templates/dashboard/pricing.html new file mode 100644 index 00000000..e9f0f608 --- /dev/null +++ b/app/dashboard/templates/dashboard/pricing.html @@ -0,0 +1,182 @@ +{% extends 'default.html' %} + +{% set active_page = "dashboard" %} + +{% block title %} + Pricing +{% endblock %} + +{% block head %} + +{% endblock %} + +{% block default_content %} + + +
+
+
+
+
Premium
+
$10/year
+
or
+
$1/month
+
    +
  • Privacy protected
  • +
  • Infinite Login
  • +
  • Infinite Emails
  • +
  • + Support us and our application partners +
  • +
+
+
+
+ +
+
+ The payment is processed by Stripe.
+ Your card number is never stored on our server. +
+ +
+ +
+
+ +
+ +
+ + + +
+ +
+
Plan
+
+ + +
+
+ + +
+
+
+ + +{% endblock %} \ No newline at end of file diff --git a/app/dashboard/templates/dashboard/setting.html b/app/dashboard/templates/dashboard/setting.html new file mode 100644 index 00000000..7b9a96e4 --- /dev/null +++ b/app/dashboard/templates/dashboard/setting.html @@ -0,0 +1,101 @@ +{% from "_formhelpers.html" import render_field, render_field_errors %} + +{% extends 'default.html' %} + +{% set active_page = "dashboard" %} + +{% block title %} + Setting +{% endblock %} + +{% block default_content %} + +
+
+ {{ form.csrf_token }} + + +

Profile

+
+ + {{ form.name(class="form-control", value=current_user.name) }} + {{ render_field_errors(form.name) }} +
+ +
+
Profile picture
+ {{ form.profile_picture(class="form-control-file") }} + {{ render_field_errors(form.profile_picture) }} + + +
+ + +
+ +
+

Current subscription

+ Your current plan is + {% if current_user.is_premium() %} + {{ current_user.plan.name }} +
+ {% if current_user.plan_expiration %} + Ends {{ current_user.plan_expiration.humanize() }} + {% else %} + Renewed {{ current_user.plan_current_period_end().humanize() }} + {% endif %} + {% else %} + {{ current_user.plan.name }}
+ {% if current_user.plan == PlanEnum.trial %} + Ends {{ current_user.plan_expiration.humanize() }}
+ {% endif %} + + Upgrade To Premium + +

+
+ {{ promo_form.csrf_token }} + +
If you have a promo code, you can enter it here
+

You can use a given promo code only once :)

+
+ + {{ promo_form.code(class="form-control") }} + {{ render_field_errors(promo_form.code) }} +
+ +
+ {% endif %} + + {% if current_user.is_premium() %} + + {% if current_user.plan_expiration %} +
+ +

+ +
+ {% else %} + +
+ +

+ +
+ {% endif %} + {% endif %} + +
+

Change password

+
+ + +
+ +
+ +{% endblock %} + diff --git a/app/dashboard/views/index.py b/app/dashboard/views/index.py index 6fb63e82..92bacadc 100644 --- a/app/dashboard/views/index.py +++ b/app/dashboard/views/index.py @@ -1,10 +1,89 @@ -from flask import render_template -from flask_login import login_required +from flask import render_template, request, redirect, url_for, flash +from flask_login import login_required, current_user +from sqlalchemy.orm import joinedload +from app import email_utils from app.dashboard.base import dashboard_bp +from app.extensions import db +from app.log import LOG +from app.models import GenEmail, ClientUser -@dashboard_bp.route("/") +@dashboard_bp.route("/", methods=["GET", "POST"]) @login_required def index(): - return render_template("dashboard/index.html") + # User generates a new email + if request.method == "POST": + if request.form.get("form-name") == "trigger-email": + gen_email_id = request.form.get("gen-email-id") + gen_email = GenEmail.get(gen_email_id) + + LOG.d("trigger an email to %s", gen_email) + email_utils.send( + gen_email.email, + "A Test Email", + f""" +Hi {current_user.name} !

+This is a test email to make sure you receive email sent at {gen_email.email}

+If you have any question, feel free to reply to this email :)

+Have a nice day

+SimpleLogin team. + """, + ) + flash( + f"An email sent to {gen_email.email} is on its way, please check your inbox/spam folder", + "success", + ) + + elif request.form.get("form-name") == "create-new-email": + can_create_new_email = current_user.can_create_new_email() + + if can_create_new_email: + gen_email = GenEmail.create_new_gen_email(user_id=current_user.id) + db.session.commit() + + LOG.d("generate new email %s for user %s", gen_email, current_user) + flash(f"Email {gen_email.email} has been created", "success") + else: + flash(f"You need to upgrade your plan to create new email.", "warning") + + elif request.form.get("form-name") == "switch-email-forwarding": + gen_email_id = request.form.get("gen-email-id") + gen_email: GenEmail = GenEmail.get(gen_email_id) + + LOG.d("switch email forwarding for %s", gen_email) + + gen_email.enabled = not gen_email.enabled + if gen_email.enabled: + flash( + f"The email forwarding for {gen_email.email} has been enabled", + "success", + ) + else: + flash( + f"The email forwarding for {gen_email.email} has been disabled", + "warning", + ) + db.session.commit() + + return redirect(url_for("dashboard.index")) + + client_users = ( + ClientUser.filter_by(user_id=current_user.id) + .options(joinedload(ClientUser.client)) + .options(joinedload(ClientUser.gen_email)) + .all() + ) + + sorted(client_users, key=lambda cu: cu.client.name) + + gen_emails = ( + GenEmail.filter_by(user_id=current_user.id) + .order_by(GenEmail.email) + .options(joinedload(GenEmail.client_users)) + .all() + ) + + return render_template( + "dashboard/index.html", client_users=client_users, gen_emails=gen_emails + ) diff --git a/app/dashboard/views/pricing.py b/app/dashboard/views/pricing.py new file mode 100644 index 00000000..4075a5c7 --- /dev/null +++ b/app/dashboard/views/pricing.py @@ -0,0 +1,90 @@ +import stripe +from flask import render_template, request, flash, redirect, url_for +from flask_login import login_required, current_user +from stripe.error import CardError + +from app.config import STRIPE_API, STRIPE_MONTHLY_PLAN, STRIPE_YEARLY_PLAN +from app.dashboard.base import dashboard_bp +from app.email_utils import notify_admin +from app.extensions import db +from app.log import LOG +from app.models import PlanEnum + + +@dashboard_bp.route("/pricing", methods=["GET", "POST"]) +@login_required +def pricing(): + # sanity check: make sure this page is only for free user that has never subscribed before + # case user unsubscribe and re-subscribe will be handled later + if current_user.is_premium(): + flash("You are already a premium user", "warning") + return redirect(url_for("dashboard.index")) + + if ( + current_user.stripe_customer_id + or current_user.stripe_card_token + or current_user.stripe_subscription_id + ): + raise Exception("only user not exist on stripe can view this page") + + if stripe.Customer.list(email=current_user.email): + raise Exception("user email is already used on stripe!") + + if request.method == "POST": + plan_str = request.form.get("plan") # either monthly or yearly + if plan_str == "monthly": + plan = PlanEnum.monthly + elif plan_str == "yearly": + plan = PlanEnum.yearly + else: + raise Exception("Plan must be either yearly or monthly") + + stripe_token = request.form.get("stripeToken") + LOG.d("stripe card token %s for plan %s", stripe_token, plan) + current_user.stripe_card_token = stripe_token + + try: + customer = stripe.Customer.create( + source=stripe_token, + email=current_user.email, + metadata={"id": current_user.id}, + name=current_user.name, + ) + except CardError as e: + LOG.exception("payment problem, code:%s", e.code) + flash( + "Payment refused with error {e.message}. Could you re-try with another card please?", + "danger", + ) + else: + LOG.d("stripe customer %s", customer) + current_user.stripe_customer_id = customer.id + + stripe_plan = ( + STRIPE_MONTHLY_PLAN if plan == PlanEnum.monthly else STRIPE_YEARLY_PLAN + ) + subscription = stripe.Subscription.create( + customer=current_user.stripe_customer_id, + items=[{"plan": stripe_plan}], + expand=["latest_invoice.payment_intent"], + ) + + LOG.d("stripe subscription %s", subscription) + + current_user.stripe_subscription_id = subscription.id + + db.session.commit() + + if subscription.latest_invoice.payment_intent.status == "succeeded": + LOG.d("payment successful for user %s", current_user) + current_user.plan = plan + current_user.plan_expiration = None + db.session.commit() + flash("Thanks for your subscription!", "success") + notify_admin( + f"user {current_user.email} has finished subscription", + f"plan: {plan}", + ) + return redirect(url_for("dashboard.index")) + + return render_template("dashboard/pricing.html", stripe_api=STRIPE_API) diff --git a/app/dashboard/views/setting.py b/app/dashboard/views/setting.py new file mode 100644 index 00000000..cf576998 --- /dev/null +++ b/app/dashboard/views/setting.py @@ -0,0 +1,173 @@ +from io import BytesIO + +import arrow +import stripe +from flask import render_template, request, redirect, url_for, flash +from flask_login import login_required, current_user +from flask_wtf import FlaskForm +from flask_wtf.file import FileField +from wtforms import StringField, validators + +from app import s3, email_utils +from app.config import URL, PROMO_CODE +from app.dashboard.base import dashboard_bp +from app.email_utils import notify_admin +from app.extensions import db +from app.log import LOG +from app.models import PlanEnum, File, ResetPasswordCode +from app.utils import random_string + + +class SettingForm(FlaskForm): + name = StringField("Name", validators=[validators.DataRequired()]) + profile_picture = FileField("Profile Picture") + + +class PromoCodeForm(FlaskForm): + code = StringField("Name", validators=[validators.DataRequired()]) + + +@dashboard_bp.route("/setting", methods=["GET", "POST"]) +@login_required +def setting(): + form = SettingForm() + promo_form = PromoCodeForm() + + if request.method == "POST": + if request.form.get("form-name") == "update-profile": + if form.validate(): + # update user info + current_user.name = form.name.data + + if form.profile_picture.data: + file_path = random_string(30) + file = File.create(path=file_path) + + s3.upload_from_bytesio( + file_path, BytesIO(form.profile_picture.data.read()) + ) + + db.session.flush() + LOG.d("upload file %s to s3", file) + + current_user.profile_picture_id = file.id + db.session.flush() + + db.session.commit() + flash(f"Your profile has been updated", "success") + elif request.form.get("form-name") == "cancel-subscription": + # sanity check + if not (current_user.is_premium() and current_user.plan_expiration is None): + raise Exception("user cannot cancel subscription") + + notify_admin(f"user {current_user} cancels subscription") + + # the plan will finish at the end of the current period + current_user.plan_expiration = current_user.plan_current_period_end() + stripe.Subscription.modify( + current_user.stripe_subscription_id, cancel_at_period_end=True + ) + db.session.commit() + flash( + f"Your plan will be downgraded {current_user.plan_expiration.humanize()}", + "success", + ) + elif request.form.get("form-name") == "reactivate-subscription": + if not (current_user.is_premium() and current_user.plan_expiration): + raise Exception("user cannot reactivate subscription") + + notify_admin(f"user {current_user} reactivates subscription") + + # the plan will finish at the end of the current period + current_user.plan_expiration = None + stripe.Subscription.modify( + current_user.stripe_subscription_id, cancel_at_period_end=False + ) + db.session.commit() + flash(f"Your plan is reactivated now, thank you!", "success") + elif request.form.get("form-name") == "change-password": + send_reset_password_email(current_user) + elif request.form.get("form-name") == "promo-code": + if promo_form.validate(): + promo_code = promo_form.code.data.upper() + if promo_code != PROMO_CODE: + flash( + "Unknown promo code. Are you sure this is the right code?", + "warning", + ) + return render_template( + "dashboard/setting.html", + form=form, + PlanEnum=PlanEnum, + promo_form=promo_form, + ) + elif promo_code in current_user.get_promo_codes(): + flash( + "You have already used this promo code. A code can be used only once :(", + "warning", + ) + return render_template( + "dashboard/setting.html", + form=form, + PlanEnum=PlanEnum, + promo_form=promo_form, + ) + else: + LOG.d("apply promo code %s for user %s", promo_code, current_user) + current_user.plan = PlanEnum.trial + + if current_user.plan_expiration: + LOG.d("extend the current plan 1 year") + current_user.plan_expiration = current_user.plan_expiration.shift( + years=1 + ) + else: + LOG.d("set plan_expiration to 1 year from now") + current_user.plan_expiration = arrow.now().shift(years=1) + + current_user.save_new_promo_code(promo_code) + db.session.commit() + + flash( + "The promo code has been applied successfully to your account!", + "success", + ) + + return redirect(url_for("dashboard.setting")) + + return render_template( + "dashboard/setting.html", form=form, PlanEnum=PlanEnum, promo_form=promo_form + ) + + +def send_reset_password_email(user): + """ + generate a new ResetPasswordCode and send it over email to user + """ + reset_password_code = ResetPasswordCode.create( + user_id=user.id, code=random_string(60) + ) + db.session.commit() + + reset_password_link = f"{URL}/auth/reset_password?code={reset_password_code.code}" + + email_utils.send( + user.email, + f"Reset your password on SimpleLogin", + html_content=f""" + Hi {user.name}!

+ + To reset or change your password, please follow this link reset password. + Or you can paste this link into your browser:

+ + {reset_password_link}

+ + Cheers, + SimpleLogin team. + """, + ) + + flash( + "You are going to receive an email containing instruction to change your password", + "success", + ) diff --git a/app/developer/__init__.py b/app/developer/__init__.py new file mode 100644 index 00000000..0a204cef --- /dev/null +++ b/app/developer/__init__.py @@ -0,0 +1 @@ +from .views import index, new_client, client_detail diff --git a/app/developer/base.py b/app/developer/base.py new file mode 100644 index 00000000..31e8bf3f --- /dev/null +++ b/app/developer/base.py @@ -0,0 +1,18 @@ +from flask import Blueprint, render_template +from flask_login import current_user + +from app.log import LOG + +developer_bp = Blueprint( + name="developer", + import_name=__name__, + url_prefix="/developer", + template_folder="templates", +) + + +@developer_bp.before_request +def before_request(): + if current_user.is_authenticated and not current_user.is_developer: + LOG.error("User %s tries to go developer tab") + return render_template("error/403.html"), 403 diff --git a/app/developer/templates/developer/client_detail.html b/app/developer/templates/developer/client_detail.html new file mode 100644 index 00000000..ae9b0ca7 --- /dev/null +++ b/app/developer/templates/developer/client_detail.html @@ -0,0 +1,150 @@ +{% from "_formhelpers.html" import render_field, render_field_errors %} + +{% extends 'default.html' %} + +{% set active_page = "developer" %} + +{% block title %} + Developer - Edit client +{% endblock %} + +{% block default_content %} +
+
+ {{ form.csrf_token }} + +

App Information

+
+ + {{ form.name(class="form-control", value=client.name) }} + {{ render_field_errors(form.name) }} +
+ +
+ + {{ form.home_url(class="form-control", type="url", value=client.home_url or "") }} + {{ render_field_errors(form.home_url) }} +
+ + +
+
App Icon
+ {{ form.icon(class="form-control-file") }} + {{ render_field_errors(form.icon) }} + + {% if client.icon_id %} + + {% endif %} +
+ +
+

OpenID/OAuth2 parameters

+ +
+ + +
+ + + + +
+
+ +
+ + +
+ + + + +
+
+ +
+ + + {% for redirect_uri in client.redirect_uris %} +
+ + + + + + +
+ {% endfor %} + +
+ +
+ + + +
+
+ +
+ + + + +
+ +{% endblock %} + +{% block script %} + + + +{% endblock %} diff --git a/app/developer/templates/developer/index.html b/app/developer/templates/developer/index.html new file mode 100644 index 00000000..b69af173 --- /dev/null +++ b/app/developer/templates/developer/index.html @@ -0,0 +1,164 @@ +{% from "_formhelpers.html" import render_field %} + +{% extends 'default.html' %} + +{% set active_page = "developer" %} + +{% block title %} + Developer +{% endblock %} + +{% block default_content %} +
+
+ Create new app +
+
+ +
+
+
+
+ + + + + + + + + + + + + + + {% for client in clients %} + + + + + + + + + + + + + + + + + + {% endfor %} + + +
NameOAuth2 Client IDScopesNumber UsersEditDelete
+ {% if client.icon_id %} +
+ +
+ {% endif %} +
+ +
+ Created at: {{ client.created_at |dt }} +
+
+ {{ client.oauth_client_id }} + +
    + {% for scope in client.scopes %} +
  • + + {{ scope.name }} +
  • + {% endfor %} +
+
+ {{ client.nb_user() }} + + + + + +
+ + + +
+
+
+
+
+
+ +{% endblock %} + +{% block script %} + +{% endblock %} + diff --git a/app/developer/templates/developer/new_client.html b/app/developer/templates/developer/new_client.html new file mode 100644 index 00000000..f215faed --- /dev/null +++ b/app/developer/templates/developer/new_client.html @@ -0,0 +1,37 @@ +{% from "_formhelpers.html" import render_field, render_field_errors %} + +{% extends 'default.html' %} + +{% set active_page = "developer" %} + +{% block title %} + Developer - Create new client +{% endblock %} + +{% block default_content %} +
+ {{ form.csrf_token }} + +
+ + {{ form.name(class="form-control") }} + {{ render_field_errors(form.name) }} +
+ +
+ + {{ form.home_url(class="form-control", type="url") }} + {{ render_field_errors(form.home_url) }} +
+ +
+
App Icon
+ {{ form.icon(class="form-control-file") }} + {{ render_field_errors(form.icon) }} +
+ + +
+ + +{% endblock %} diff --git a/app/developer/views/__init__.py b/app/developer/views/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/app/developer/views/client_detail.py b/app/developer/views/client_detail.py new file mode 100644 index 00000000..1c9e4b05 --- /dev/null +++ b/app/developer/views/client_detail.py @@ -0,0 +1,71 @@ +from io import BytesIO + +from flask import request, render_template, redirect, url_for, flash +from flask_login import current_user, login_required +from flask_wtf import FlaskForm +from flask_wtf.file import FileField +from wtforms import StringField, validators + +from app import s3 +from app.developer.base import developer_bp +from app.extensions import db +from app.log import LOG +from app.models import Client, RedirectUri, File +from app.utils import random_string + + +class EditClientForm(FlaskForm): + name = StringField("Name", validators=[validators.DataRequired()]) + icon = FileField("Icon") + home_url = StringField("Home Url") + + +@developer_bp.route("/clients/", methods=["GET", "POST"]) +@login_required +def client_detail(client_id): + form = EditClientForm() + + client = Client.get(client_id) + if not client: + flash("no such client", "warning") + return redirect(url_for("developer.index")) + + if client.user_id != current_user.id: + flash("you cannot see this client", "warning") + return redirect(url_for("developer.index")) + + if request.method == "POST": + if form.validate(): + client.name = form.name.data + client.home_url = form.home_url.data + + if form.icon.data: + # todo: remove current icon if any + # todo: handle remove icon + file_path = random_string(30) + file = File.create(path=file_path) + + s3.upload_from_bytesio(file_path, BytesIO(form.icon.data.read())) + + db.session.commit() + LOG.d("upload file %s to s3", file) + + client.icon_id = file.id + db.session.commit() + + uris = request.form.getlist("uri") + + # replace all uris. TODO: optimize this? + for redirect_uri in client.redirect_uris: + redirect_uri.delete() + + for uri in uris: + RedirectUri.create(client_id=client_id, uri=uri) + + db.session.commit() + + flash(f"client {client.name} has been updated", "success") + + return redirect(url_for("developer.client_detail", client_id=client.id)) + + return render_template("developer/client_detail.html", form=form, client=client) diff --git a/app/developer/views/index.py b/app/developer/views/index.py new file mode 100644 index 00000000..4e398341 --- /dev/null +++ b/app/developer/views/index.py @@ -0,0 +1,52 @@ +"""List of clients""" +from flask import render_template, request, flash, redirect, url_for +from flask_login import current_user, login_required + +from app.developer.base import developer_bp +from app.extensions import db +from app.log import LOG +from app.models import Client + + +@developer_bp.route("/", methods=["GET", "POST"]) +@login_required +def index(): + # delete client + if request.method == "POST": + if request.form.get("form-name") == "delete-client": + client_id = int(request.form.get("client-id")) + client = Client.get(client_id) + + if client.user_id != current_user.id: + flash("You cannot remove this client", "warning") + else: + client_name = client.name + client.delete() + db.session.commit() + LOG.d("Remove client %s", client) + flash(f"Client {client_name} has been deleted successfully", "success") + + elif request.form.get("form-name") == "switch-client-publish": + client_id = int(request.form.get("client-id")) + client = Client.get(client_id) + + if client.user_id != current_user.id: + flash("You cannot modify this client", "warning") + else: + client.published = not client.published + db.session.commit() + LOG.d("Switch client.published %s", client) + + if client.published: + flash( + f"Client {client.name} has been published on Discover", + "success", + ) + else: + flash(f"Client {client.name} has been un-published", "success") + + return redirect(url_for("developer.index")) + + clients = Client.filter_by(user_id=current_user.id).all() + + return render_template("developer/index.html", clients=clients) diff --git a/app/developer/views/new_client.py b/app/developer/views/new_client.py new file mode 100644 index 00000000..9683bcf7 --- /dev/null +++ b/app/developer/views/new_client.py @@ -0,0 +1,50 @@ +from io import BytesIO + +from flask import request, render_template, redirect, url_for, flash +from flask_login import current_user, login_required +from flask_wtf import FlaskForm +from flask_wtf.file import FileField +from wtforms import StringField, validators + +from app import s3 +from app.developer.base import developer_bp +from app.extensions import db +from app.log import LOG +from app.models import Client, File +from app.utils import random_string + + +class NewClientForm(FlaskForm): + name = StringField("Name", validators=[validators.DataRequired()]) + icon = FileField("Icon") + home_url = StringField("Home Url") + + +@developer_bp.route("/new_client", methods=["GET", "POST"]) +@login_required +def new_client(): + form = NewClientForm() + + if request.method == "POST": + if form.validate(): + client = Client.create_new(form.name.data, current_user.id) + client.home_url = form.home_url.data + db.session.commit() + + if form.icon.data: + file_path = random_string(30) + file = File.create(path=file_path) + + s3.upload_from_bytesio(file_path, BytesIO(form.icon.data.read())) + + db.session.commit() + LOG.d("upload file %s to s3", file) + + client.icon_id = file.id + db.session.commit() + + flash("New client has been created", "success") + + return redirect(url_for("developer.client_detail", client_id=client.id)) + + return render_template("developer/new_client.html", form=form) diff --git a/app/discover/__init__.py b/app/discover/__init__.py new file mode 100644 index 00000000..86bd305b --- /dev/null +++ b/app/discover/__init__.py @@ -0,0 +1 @@ +from .views import index diff --git a/app/discover/base.py b/app/discover/base.py new file mode 100644 index 00000000..1260fe0a --- /dev/null +++ b/app/discover/base.py @@ -0,0 +1,8 @@ +from flask import Blueprint + +discover_bp = Blueprint( + name="discover", + import_name=__name__, + url_prefix="/discover", + template_folder="templates", +) diff --git a/app/discover/templates/discover/index.html b/app/discover/templates/discover/index.html new file mode 100644 index 00000000..5129e12c --- /dev/null +++ b/app/discover/templates/discover/index.html @@ -0,0 +1,41 @@ +{% extends 'default.html' %} + +{% set active_page = "discover" %} + +{% block title %} + Discover +{% endblock %} + +{% block default_content %} + +

Apps

+

+ App/Website that have implemented Connect with SimpeLogin +

+ +
+ {% for client in clients %} +
+
+ + + +
+

+ {{ client.name }} +

+ +
+ {{ client.home_url }} +
+
+
+
+ {% endfor %} +
+ + + + +{% endblock %} + diff --git a/app/discover/views/__init__.py b/app/discover/views/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/app/discover/views/index.py b/app/discover/views/index.py new file mode 100644 index 00000000..a8017c61 --- /dev/null +++ b/app/discover/views/index.py @@ -0,0 +1,12 @@ +from flask import render_template +from flask_login import login_required + +from app.discover.base import discover_bp +from app.models import Client + + +@discover_bp.route("/", methods=["GET", "POST"]) +@login_required +def index(): + clients = Client.filter_by(published=True).all() + return render_template("discover/index.html", clients=clients) diff --git a/app/email_utils.py b/app/email_utils.py new file mode 100644 index 00000000..df76ef6a --- /dev/null +++ b/app/email_utils.py @@ -0,0 +1,38 @@ +# using SendGrid's Python Library +# https://github.com/sendgrid/sendgrid-python + +from sendgrid import SendGridAPIClient +from sendgrid.helpers.mail import Mail + +from app.config import SUPPORT_EMAIL, SENDGRID_API_KEY, ENV +from app.log import LOG + + +def send(to_email, subject, html_content): + # On local only print out email content + if ENV == "local": + LOG.d( + "send mail to %s, subject:%s, content:%s", to_email, subject, html_content + ) + return + + message = Mail( + from_email=SUPPORT_EMAIL, + to_emails=to_email, + subject=subject, + html_content=html_content, + ) + sg = SendGridAPIClient(SENDGRID_API_KEY) + response = sg.send(message) + LOG.d("sendgrid res:%s, email:%s", response.status_code, to_email) + + +def notify_admin(subject, html_content): + send( + SUPPORT_EMAIL, + subject, + f""" + + {html_content} + """, + ) diff --git a/app/extensions.py b/app/extensions.py index 6fd9adf2..872392b8 100644 --- a/app/extensions.py +++ b/app/extensions.py @@ -1,34 +1,8 @@ from flask_login import LoginManager -from flask_sqlalchemy import SQLAlchemy, Model +from flask_migrate import Migrate +from flask_sqlalchemy import SQLAlchemy -class CRUDMixin(Model): - """Mixin that adds convenience methods for CRUD (create, read, update, delete) operations.""" - - @classmethod - def create(cls, **kwargs): - """Create a new record and save it the database.""" - instance = cls(**kwargs) - return instance.save() - - def update(self, commit=True, **kwargs): - """Update specific fields of a record.""" - for attr, value in kwargs.items(): - setattr(self, attr, value) - return commit and self.save() or self - - def save(self, commit=True): - """Save the record.""" - db.session.add(self) - if commit: - db.session.commit() - return self - - def delete(self, commit=True): - """Remove the record from the database.""" - db.session.delete(self) - return commit and db.session.commit() - - -db = SQLAlchemy(model_class=CRUDMixin) +db = SQLAlchemy() login_manager = LoginManager() +migrate = Migrate(db=db) diff --git a/app/jose_utils.py b/app/jose_utils.py new file mode 100644 index 00000000..a8c25ce8 --- /dev/null +++ b/app/jose_utils.py @@ -0,0 +1,47 @@ +import arrow +from jwcrypto import jwk, jwt + +from app.config import OPENID_PRIVATE_KEY_PATH, URL +from app.log import LOG +from app.models import ClientUser + +with open(OPENID_PRIVATE_KEY_PATH, "rb") as f: + key = jwk.JWK.from_pem(f.read()) + + +def get_jwk_key() -> dict: + return key._public_params() + + +def make_id_token(client_user: ClientUser): + """Make id_token for OpenID Connect + According to RFC 7519, these claims are mandatory: + - iss + - sub + - aud + - exp + - iat + """ + claims = { + "iss": URL, + "sub": str(client_user.id), + "aud": client_user.client.oauth_client_id, + "exp": arrow.now().shift(hours=1).timestamp, + "iat": arrow.now().timestamp, + } + + claims = {**claims, **client_user.get_user_info()} + + jwt_token = jwt.JWT(header={"alg": "RS256", "kid": "simple-login"}, claims=claims) + jwt_token.make_signed_token(key) + return jwt_token.serialize() + + +def verify_id_token(id_token) -> bool: + try: + jwt.JWT(key=key, jwt=id_token) + except Exception: + LOG.exception("id token not verified") + return False + else: + return True diff --git a/app/log.py b/app/log.py index a2fd366d..7f02e75b 100644 --- a/app/log.py +++ b/app/log.py @@ -2,22 +2,50 @@ import logging import sys import time +import boto3 +import watchtower + +from app.config import ( + AWS_ACCESS_KEY_ID, + AWS_SECRET_ACCESS_KEY, + AWS_REGION, + CLOUDWATCH_LOG_GROUP, + ENABLE_CLOUDWATCH, + CLOUDWATCH_LOG_STREAM, +) + _log_format = "%(asctime)s - %(name)s - %(levelname)s - %(process)d - %(module)s:%(lineno)d - %(funcName)s - %(message)s" _log_formatter = logging.Formatter(_log_format) -def _get_console_handler(level=None): +def _get_console_handler(): console_handler = logging.StreamHandler(sys.stdout) console_handler.setFormatter(_log_formatter) console_handler.formatter.converter = time.gmtime - if level: - console_handler.setLevel(level) - return console_handler -def get_logger(name): +def _get_watchtower_handler(): + session = boto3.Session( + aws_access_key_id=AWS_ACCESS_KEY_ID, + aws_secret_access_key=AWS_SECRET_ACCESS_KEY, + region_name=AWS_REGION, + ) + + handler = watchtower.CloudWatchLogHandler( + log_group=CLOUDWATCH_LOG_GROUP, + stream_name=CLOUDWATCH_LOG_STREAM, + send_interval=5, # every 5 sec + boto3_session=session, + ) + + handler.setFormatter(_log_formatter) + + return handler + + +def _get_logger(name): logger = logging.getLogger(name) logger.setLevel(logging.DEBUG) @@ -25,7 +53,16 @@ def get_logger(name): # leave the handlers level at NOTSET so the level checking is only handled by the logger logger.addHandler(_get_console_handler()) - # no propagation to avoid unexpected behaviour + if ENABLE_CLOUDWATCH: + print( + "enable cloudwatch, log group", + CLOUDWATCH_LOG_GROUP, + "; log stream:", + CLOUDWATCH_LOG_STREAM, + ) + logger.addHandler(_get_watchtower_handler()) + + # no propagation to avoid propagating to root logger logger.propagate = False return logger @@ -33,13 +70,12 @@ def get_logger(name): print(f">>> init logging <<<") -# ### config root logger ### -# do not use the default (buggy) logger -logging.root.handlers.clear() +# Disable flask logs such as 127.0.0.1 - - [15/Feb/2013 10:52:22] "GET /index.html HTTP/1.1" 200 +log = logging.getLogger("werkzeug") +log.disabled = True -# add handlers with the default level = "warn" -# need to add level at handler level as there's no level check in root logger -# all the libs logs having level >= WARN will be handled by these 2 handlers -logging.root.addHandler(_get_console_handler(logging.WARN)) +# Set some shortcuts +logging.Logger.d = logging.Logger.debug +logging.Logger.i = logging.Logger.info -LOG = get_logger("yourkey") +LOG = _get_logger("sl") diff --git a/app/models.py b/app/models.py index 7c491ba5..2bc9dd84 100644 --- a/app/models.py +++ b/app/models.py @@ -1,30 +1,141 @@ -# <<< Models >>> -from datetime import datetime +import enum +import hashlib +import arrow import bcrypt +import stripe +from arrow import Arrow from flask_login import UserMixin +from sqlalchemy_utils import ArrowType +from app import s3 +from app.config import URL, MAX_NB_EMAIL_FREE_PLAN, EMAIL_DOMAIN from app.extensions import db +from app.log import LOG +from app.oauth_models import ScopeE +from app.utils import convert_to_id, random_string class ModelMixin(object): id = db.Column(db.Integer, primary_key=True, autoincrement=True) - created_at = db.Column(db.DateTime, default=datetime.utcnow, nullable=False) - updated_at = db.Column(db.DateTime, default=None, onupdate=datetime.utcnow) + created_at = db.Column(ArrowType, default=arrow.utcnow, nullable=False) + updated_at = db.Column(ArrowType, default=None, onupdate=arrow.utcnow) + + _repr_hide = ["created_at", "updated_at"] + + @classmethod + def query(cls): + return db.session.query(cls) + + @classmethod + def get(cls, id): + return cls.query.get(id) + + @classmethod + def get_by(cls, **kw): + return cls.query.filter_by(**kw).first() + + @classmethod + def filter_by(cls, **kw): + return cls.query.filter_by(**kw) + + @classmethod + def get_or_create(cls, **kw): + r = cls.get_by(**kw) + if not r: + r = cls(**kw) + db.session.add(r) + + return r + + @classmethod + def create(cls, **kw): + r = cls(**kw) + db.session.add(r) + return r + + def save(self): + db.session.add(self) + + def delete(self): + db.session.delete(self) + + def __repr__(self): + values = ", ".join( + "%s=%r" % (n, getattr(self, n)) + for n in self.__table__.c.keys() + if n not in self._repr_hide + ) + return "%s(%s)" % (self.__class__.__name__, values) -class Client(db.Model, ModelMixin): - client_id = db.Column(db.String(128), unique=True) - client_secret = db.Column(db.String(128)) - redirect_uri = db.Column(db.String(1024)) - name = db.Column(db.String(128)) +class File(db.Model, ModelMixin): + path = db.Column(db.String(128), unique=True, nullable=False) + + def get_url(self): + return s3.get_url(self.path) + + +class PlanEnum(enum.Enum): + free = 0 + trial = 1 + monthly = 2 + yearly = 3 class User(db.Model, ModelMixin, UserMixin): - email = db.Column(db.String(128), unique=True) + __tablename__ = "users" + email = db.Column(db.String(128), unique=True, nullable=False) salt = db.Column(db.String(128), nullable=False) password = db.Column(db.String(128), nullable=False) - name = db.Column(db.String(128)) + name = db.Column(db.String(128), nullable=False) + is_admin = db.Column(db.Boolean, nullable=False, default=False) + + activated = db.Column(db.Boolean, default=False, nullable=False) + + plan = db.Column( + db.Enum(PlanEnum), + nullable=False, + default=PlanEnum.free, + server_default=PlanEnum.free.name, + ) + + # only relevant for trial period + plan_expiration = db.Column(ArrowType) + + stripe_customer_id = db.Column(db.String(128), unique=True) + stripe_card_token = db.Column(db.String(128), unique=True) + stripe_subscription_id = db.Column(db.String(128), unique=True) + + profile_picture_id = db.Column(db.ForeignKey(File.id), nullable=True) + is_developer = db.Column(db.Boolean, nullable=False, server_default="0") + + # contain the list of promo codes user has used. Promo codes are separated by "," + promo_codes = db.Column(db.Text, nullable=True) + + profile_picture = db.relationship(File) + + def should_upgrade(self): + """User is invited to upgrade if they are in free plan or their trial ends soon""" + if self.plan == PlanEnum.free: + return True + elif self.plan == PlanEnum.trial and self.plan_expiration < arrow.now().shift( + weeks=1 + ): + return True + return False + + def is_premium(self): + return self.plan in (PlanEnum.monthly, PlanEnum.yearly) + + def can_create_new_email(self): + if self.is_premium(): + return True + # plan not expired yet + elif self.plan == PlanEnum.trial and self.plan_expiration > arrow.now(): + return True + else: # free or trial expired + return GenEmail.filter_by(user_id=self.id).count() < MAX_NB_EMAIL_FREE_PLAN def set_password(self, password): salt = bcrypt.gensalt() @@ -36,16 +147,259 @@ class User(db.Model, ModelMixin, UserMixin): password_hash = bcrypt.hashpw(password.encode(), self.salt.encode()) return self.password.encode() == password_hash + def profile_picture_url(self): + if self.profile_picture_id: + return self.profile_picture.get_url() + else: # use gravatar + hash_email = hashlib.md5(self.email.encode("utf-8")).hexdigest() + return f"https://www.gravatar.com/avatar/{hash_email}" + + def plan_current_period_end(self) -> Arrow: + if not self.stripe_subscription_id: + LOG.error( + "plan_current_period_end should not be called with empty stripe_subscription_id" + ) + return None + + current_period_end_ts = stripe.Subscription.retrieve( + self.stripe_subscription_id + )["current_period_end"] + + return arrow.get(current_period_end_ts) + + def get_promo_codes(self) -> [str]: + if not self.promo_codes: + return [] + return self.promo_codes.split(",") + + def save_new_promo_code(self, promo_code): + current_promo_codes = self.get_promo_codes() + current_promo_codes.append(promo_code) + + self.promo_codes = ",".join(current_promo_codes) + + +class ActivationCode(db.Model, ModelMixin): + """For activate user account""" + + user_id = db.Column(db.ForeignKey(User.id, ondelete="cascade"), nullable=False) + code = db.Column(db.String(128), unique=True, nullable=False) + + user = db.relationship(User) + + # the activation code is valid for 1h + expired = db.Column(ArrowType, default=arrow.now().shift(hours=1)) + + +class ResetPasswordCode(db.Model, ModelMixin): + """For resetting password""" + + user_id = db.Column(db.ForeignKey(User.id, ondelete="cascade"), nullable=False) + code = db.Column(db.String(128), unique=True, nullable=False) + + user = db.relationship(User) + + # the activation code is valid for 1h + expired = db.Column(ArrowType, default=arrow.now().shift(hours=1), nullable=False) + + +class Partner(db.Model, ModelMixin): + email = db.Column(db.String(128)) + name = db.Column(db.String(128)) + website = db.Column(db.String(1024)) + additional_information = db.Column(db.Text) + + # If apply from a authenticated user, set user_id to the user who has applied for partnership + user_id = db.Column(db.ForeignKey(User.id, ondelete="cascade"), nullable=True) + + +# <<< OAUTH models >>> + +client_scope = db.Table( + "client_scope", + db.Column( + "client_id", + db.Integer, + db.ForeignKey("client.id", ondelete="cascade"), + primary_key=True, + nullable=False, + ), + db.Column( + "scope_id", + db.Integer, + db.ForeignKey("scope.id", ondelete="cascade"), + primary_key=True, + nullable=False, + ), +) + + +def generate_oauth_client_id(client_name) -> str: + oauth_client_id = convert_to_id(client_name) + "-" + random_string() + + # check that the client does not exist yet + if not Client.get_by(oauth_client_id=oauth_client_id): + LOG.debug("generate oauth_client_id %s", oauth_client_id) + return oauth_client_id + + # Rerun the function + LOG.warning( + "client_id %s already exists, generate a new client_id", oauth_client_id + ) + return generate_oauth_client_id(client_name) + + +class Client(db.Model, ModelMixin): + oauth_client_id = db.Column(db.String(128), unique=True, nullable=False) + oauth_client_secret = db.Column(db.String(128), nullable=False) + + name = db.Column(db.String(128), nullable=False) + home_url = db.Column(db.String(1024)) + published = db.Column(db.Boolean, default=False, nullable=False) + + # user who created this client + user_id = db.Column(db.ForeignKey(User.id, ondelete="cascade"), nullable=False) + icon_id = db.Column(db.ForeignKey(File.id), nullable=True) + + scopes = db.relationship("Scope", secondary=client_scope, lazy="subquery") + icon = db.relationship(File) + + def nb_user(self): + return ClientUser.filter_by(client_id=self.id).count() + + @classmethod + def create_new(cls, name, user_id) -> "Client": + # generate a client-id + oauth_client_id = generate_oauth_client_id(name) + oauth_client_secret = random_string(40) + client = Client.create( + name=name, + oauth_client_id=oauth_client_id, + oauth_client_secret=oauth_client_secret, + user_id=user_id, + ) + + # By default, add email and name scope + client.scopes.append(Scope.get_by(name=ScopeE.NAME.value)) + client.scopes.append(Scope.get_by(name=ScopeE.EMAIL.value)) + + return client + + def get_icon_url(self): + if self.icon_id: + return self.icon.get_url() + else: + return URL + "/static/default-icon.svg" + + +class RedirectUri(db.Model, ModelMixin): + """Valid redirect uris for a client""" + + client_id = db.Column(db.ForeignKey(Client.id, ondelete="cascade"), nullable=False) + uri = db.Column(db.String(1024), nullable=False) + + client = db.relationship(Client, backref="redirect_uris") + class AuthorizationCode(db.Model, ModelMixin): - code = db.Column(db.String(128), unique=True) - client_id = db.Column(db.ForeignKey(Client.id)) - user_id = db.Column(db.ForeignKey(User.id)) + code = db.Column(db.String(128), unique=True, nullable=False) + client_id = db.Column(db.ForeignKey(Client.id, ondelete="cascade"), nullable=False) + user_id = db.Column(db.ForeignKey(User.id, ondelete="cascade"), nullable=False) + + scope = db.Column(db.String(128)) + redirect_uri = db.Column(db.String(1024)) + + user = db.relationship(User, lazy=False) + client = db.relationship(Client, lazy=False) class OauthToken(db.Model, ModelMixin): access_token = db.Column(db.String(128), unique=True) - client_id = db.Column(db.ForeignKey(Client.id)) - user_id = db.Column(db.ForeignKey(User.id)) + client_id = db.Column(db.ForeignKey(Client.id, ondelete="cascade"), nullable=False) + user_id = db.Column(db.ForeignKey(User.id, ondelete="cascade"), nullable=False) + + scope = db.Column(db.String(128)) + redirect_uri = db.Column(db.String(1024)) user = db.relationship(User) + client = db.relationship(Client) + + +class Scope(db.Model, ModelMixin): + name = db.Column(db.String(128), unique=True, nullable=False) + + +def generate_email() -> str: + """generate an email address that does not exist before""" + random_email = random_string(40) + "@" + EMAIL_DOMAIN + + # check that the client does not exist yet + if not GenEmail.get_by(email=random_email): + LOG.debug("generate email %s", random_email) + return random_email + + # Rerun the function + LOG.warning("email %s already exists, generate a new email", random_email) + return generate_email() + + +class GenEmail(db.Model, ModelMixin): + """Generated email""" + + user_id = db.Column(db.ForeignKey(User.id, ondelete="cascade"), nullable=False) + email = db.Column(db.String(128), unique=True, nullable=False) + + enabled = db.Column(db.Boolean(), default=True, nullable=False) + + @classmethod + def create_new_gen_email(cls, user_id): + random_email = generate_email() + return GenEmail.create(user_id=user_id, email=random_email) + + def __repr__(self): + return f"" + + +class ClientUser(db.Model, ModelMixin): + __table_args__ = ( + db.UniqueConstraint("user_id", "client_id", name="uq_client_user"), + ) + + user_id = db.Column(db.ForeignKey(User.id, ondelete="cascade"), nullable=False) + client_id = db.Column(db.ForeignKey(Client.id, ondelete="cascade"), nullable=False) + + # Null means client has access to user original email + gen_email_id = db.Column( + db.ForeignKey(GenEmail.id, ondelete="cascade"), nullable=True + ) + + gen_email = db.relationship(GenEmail, backref="client_users") + + user = db.relationship(User) + client = db.relationship(Client) + + def get_email(self): + return self.gen_email.email if self.gen_email_id else self.user.email + + def get_user_info(self) -> dict: + """return user info according to client scope + Return dict with key being scope name + + """ + res = {"id": self.id, "client": self.client.name, "email_verified": True} + + for scope in self.client.scopes: + if scope.name == ScopeE.NAME.value: + res[ScopeE.NAME.value] = self.user.name + elif scope.name == ScopeE.EMAIL.value: + # Use generated email + if self.gen_email_id: + LOG.debug( + "Use gen email for user %s, client %s", self.user, self.client + ) + res[ScopeE.EMAIL.value] = self.gen_email.email + # Use user original email + else: + res[ScopeE.EMAIL.value] = self.user.email + + return res diff --git a/app/monitor/views.py b/app/monitor/views.py index 0b361528..d23fde99 100644 --- a/app/monitor/views.py +++ b/app/monitor/views.py @@ -1,9 +1,6 @@ -import subprocess - +from app.config import SHA1 from app.monitor.base import monitor_bp -SHA1 = subprocess.getoutput("git rev-parse HEAD") - @monitor_bp.route("/git") def git_sha1(): diff --git a/app/oauth/__init__.py b/app/oauth/__init__.py new file mode 100644 index 00000000..8f884340 --- /dev/null +++ b/app/oauth/__init__.py @@ -0,0 +1 @@ +from .views import authorize, token, user_info diff --git a/app/oauth/base.py b/app/oauth/base.py new file mode 100644 index 00000000..bd06ff6b --- /dev/null +++ b/app/oauth/base.py @@ -0,0 +1,5 @@ +from flask import Blueprint + +oauth_bp = Blueprint( + name="oauth", import_name=__name__, url_prefix="/oauth", template_folder="templates" +) diff --git a/app/oauth/templates/oauth/authorize.html b/app/oauth/templates/oauth/authorize.html new file mode 100644 index 00000000..e55112e0 --- /dev/null +++ b/app/oauth/templates/oauth/authorize.html @@ -0,0 +1,81 @@ +{% extends 'default.html' %} + +{% block title %} + Authorization +{% endblock %} + +{% block default_content %} +
+
+
+ + {% if client_user %} +
+ You have already authorized {{ client.name }}. +
+ +
+ {{ client.name }} has access to the following information: +
+ +
    + {% for scope in client.scopes %} +
  • {{ scope.name }}: {{ user_info[scope.name] }}
  • + {% endfor %} +
+ {% else %} +
+ {{ client.name }} will receive your following information: +
+ +
    + {% for scope in client.scopes %} +
  • {{ scope.name }}
  • + {% endfor %} +
+ {% endif %} + + {% if client_user %} + + {% else %} +
+
+ +
+ + + If checked, a new random email address will be generated for this app. + +
+ + + {% endif %} + +
+
+
+{% endblock %} \ No newline at end of file diff --git a/app/oauth/templates/oauth/authorize_nonlogin_user.html b/app/oauth/templates/oauth/authorize_nonlogin_user.html new file mode 100644 index 00000000..23a2f2c4 --- /dev/null +++ b/app/oauth/templates/oauth/authorize_nonlogin_user.html @@ -0,0 +1,39 @@ +{% extends "single.html" %} + +{% block single_content %} +
+ {{ client.name }}   would like to have access to your following data: + +
    + {% for scope in client.scopes %} +
  • {{ scope.name }}
  • + {% endfor %} +
+ + +
+ + + +
+ + + +{% endblock %} \ No newline at end of file diff --git a/app/oauth/views/__init__.py b/app/oauth/views/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/app/oauth/views/authorize.py b/app/oauth/views/authorize.py new file mode 100644 index 00000000..be771dd6 --- /dev/null +++ b/app/oauth/views/authorize.py @@ -0,0 +1,197 @@ +import random +from typing import Dict +from urllib.parse import urlparse + +from flask import request, render_template, redirect +from flask_login import current_user + +from app.extensions import db +from app.jose_utils import make_id_token +from app.log import LOG +from app.models import ( + Client, + AuthorizationCode, + ClientUser, + GenEmail, + RedirectUri, + OauthToken, +) +from app.oauth.base import oauth_bp +from app.oauth_models import get_response_types, ResponseType +from app.utils import random_string, encode_url + + +@oauth_bp.route("/authorize", methods=["GET", "POST"]) +def authorize(): + """ + Redirected from client when user clicks on "Login with Server". + This is a GET request with the following field in url + - client_id + - (optional) state + - response_type: must be code + """ + oauth_client_id = request.args.get("client_id") + state = request.args.get("state") + scope = request.args.get("scope") + redirect_uri = request.args.get("redirect_uri") + + try: + response_types: [ResponseType] = get_response_types(request) + except ValueError: + return ( + "response_type must be code, token, id_token or certain combination of these." + " Please see /.well-known/openid-configuration to see what response_type are supported ", + 400, + ) + + if not redirect_uri: + LOG.d("no redirect uri") + return "redirect_uri must be set", 400 + + client = Client.get_by(oauth_client_id=oauth_client_id) + if not client: + return f"no such client with oauth-client-id {oauth_client_id}", 400 + + # check if redirect_uri is valid + # allow localhost by default + # todo: only allow https + hostname, scheme = get_host_name_and_scheme(redirect_uri) + if hostname != "localhost": + if not RedirectUri.get_by(client_id=client.id, uri=redirect_uri): + return f"{redirect_uri} is not authorized", 400 + + # redirect from client website + if request.method == "GET": + if current_user.is_authenticated: + # user has already allowed this client + client_user: ClientUser = ClientUser.get_by( + client_id=client.id, user_id=current_user.id + ) + user_info = {} + if client_user: + LOG.debug("user %s has already allowed client %s", current_user, client) + user_info = client_user.get_user_info() + + return render_template( + "oauth/authorize.html", client=client, user_info=user_info + ) + else: + # after user logs in, redirect user back to this page + return render_template( + "oauth/authorize_nonlogin_user.html", client=client, next=request.url + ) + else: # user allows or denies + gen_new_email = request.form.get("gen-email") == "on" + + if request.form.get("button") == "deny": + LOG.debug("User %s denies Client %s", current_user, client) + final_redirect_uri = f"{redirect_uri}?error=deny&state={state}" + return redirect(final_redirect_uri) + + LOG.debug("User %s allows Client %s", current_user, client) + client_user = ClientUser.get_by(client_id=client.id, user_id=current_user.id) + + # user has already allowed this client + if client_user: + LOG.d("user %s has already allowed client %s", current_user, client) + # User cannot choose to gen new email + gen_new_email = False + else: + client_user = ClientUser.create( + client_id=client.id, user_id=current_user.id + ) + db.session.flush() + LOG.d("create client-user for client %s, user %s", client, current_user) + + redirect_args = {} + + if state: + redirect_args["state"] = state + else: + LOG.warning( + "more security reason, state should be added. client %s", client + ) + + if scope: + redirect_args["scope"] = scope + + for response_type in response_types: + if response_type == ResponseType.CODE: + # Create authorization code + auth_code = AuthorizationCode.create( + client_id=client.id, + user_id=current_user.id, + code=random_string(), + scope=scope, + redirect_uri=redirect_uri, + ) + db.session.add(auth_code) + redirect_args["code"] = auth_code.code + elif response_type == ResponseType.TOKEN: + # create access-token + oauth_token = OauthToken.create( + client_id=client.id, + user_id=current_user.id, + scope=scope, + redirect_uri=redirect_uri, + access_token=generate_access_token(), + ) + db.session.add(oauth_token) + redirect_args["access_token"] = oauth_token.access_token + elif response_type == ResponseType.ID_TOKEN: + redirect_args["id_token"] = make_id_token(client_user) + + if gen_new_email: + client_user.gen_email_id = create_or_choose_gen_email(current_user).id + + db.session.commit() + + # construct redirect_uri with redirect_args + return redirect(construct_url(redirect_uri, redirect_args)) + + +def create_or_choose_gen_email(user) -> GenEmail: + can_create_new_email = user.can_create_new_email() + + if can_create_new_email: + gen_email = GenEmail.create_new_gen_email(user_id=user.id) + db.session.flush() + LOG.debug("generate email %s for user %s", gen_email.email, user) + else: # need to reuse one of the gen emails created + LOG.d("pick a random email for gen emails for user %s", current_user) + gen_emails = GenEmail.filter_by(user_id=current_user.id).all() + gen_email = random.choice(gen_emails) + + return gen_email + + +def construct_url(url, args: Dict[str, str]): + for i, (k, v) in enumerate(args.items()): + # make sure to escape v + v = encode_url(v) + + if i == 0: + url += f"?{k}={v}" + else: + url += f"&{k}={v}" + + return url + + +def generate_access_token() -> str: + """generate an access-token that does not exist before""" + access_token = random_string(40) + + if not OauthToken.get_by(access_token=access_token): + return access_token + + # Rerun the function + LOG.warning("access token already exists, generate a new one") + return generate_access_token() + + +def get_host_name_and_scheme(url: str) -> (str, str): + """http://localhost:5000?a=b -> (localhost, http) """ + url_comp = urlparse(url) + + return url_comp.hostname, url_comp.scheme diff --git a/app/oauth/views/token.py b/app/oauth/views/token.py new file mode 100644 index 00000000..f48f2620 --- /dev/null +++ b/app/oauth/views/token.py @@ -0,0 +1,88 @@ +from flask import request, jsonify + +from app.extensions import db +from app.jose_utils import make_id_token +from app.log import LOG +from app.models import Client, AuthorizationCode, OauthToken, ClientUser +from app.oauth.base import oauth_bp +from app.oauth.views.authorize import generate_access_token +from app.oauth_models import ScopeE + + +@oauth_bp.route("/token", methods=["POST"]) +def get_access_token(): + """ + Calls by client to exchange the access token given the authorization code. + The client authentications using Basic Authentication. + The form contains the following data: + - grant_type: must be "authorization_code" + - code: the code obtained in previous step + """ + # Basic authentication + oauth_client_id = ( + request.authorization and request.authorization.username + ) or request.form.get("client_id") + + oauth_client_secret = ( + request.authorization and request.authorization.password + ) or request.form.get("client_secret") + + client = Client.filter_by( + oauth_client_id=oauth_client_id, oauth_client_secret=oauth_client_secret + ).first() + + if not client: + return jsonify(error="wrong client-id or client-secret"), 400 + + # Get code from form data + grant_type = request.form.get("grant_type") + code = request.form.get("code") + + # sanity check + if grant_type != "authorization_code": + return jsonify(error="grant_type must be authorization_code"), 400 + + auth_code: AuthorizationCode = AuthorizationCode.filter_by(code=code).first() + if not auth_code: + return jsonify(error=f"no such authorization code {code}"), 400 + + if auth_code.client_id != client.id: + return jsonify(error=f"are you sure this code belongs to you?"), 400 + + LOG.debug( + "Create Oauth token for user %s, client %s", auth_code.user, auth_code.client + ) + + # Create token + oauth_token = OauthToken.create( + client_id=auth_code.client_id, + user_id=auth_code.user_id, + scope=auth_code.scope, + redirect_uri=auth_code.redirect_uri, + access_token=generate_access_token(), + ) + db.session.add(oauth_token) + + # Auth code can be used only once + db.session.delete(auth_code) + + db.session.commit() + + client_user: ClientUser = ClientUser.get_by( + client_id=auth_code.client_id, user_id=auth_code.user_id + ) + + user_data = client_user.get_user_info() + + res = { + "access_token": oauth_token.access_token, + "token_type": "bearer", + "expires_in": 3600, + "scope": "", + "user": user_data, + } + + if oauth_token.scope and ScopeE.OPENID.value in oauth_token.scope: + res["id_token"] = make_id_token(client_user) + + return jsonify(res) diff --git a/app/oauth/views/user_info.py b/app/oauth/views/user_info.py new file mode 100644 index 00000000..a47c8ec4 --- /dev/null +++ b/app/oauth/views/user_info.py @@ -0,0 +1,30 @@ +from flask import request, jsonify +from flask_cors import cross_origin + +from app.models import OauthToken, ClientUser +from app.oauth.base import oauth_bp + + +@oauth_bp.route("/user_info") +@oauth_bp.route("/me") +@oauth_bp.route("/userinfo") +@cross_origin() +def user_info(): + """ + Call by client to get user information + Usually bearer token is used. + """ + if "AUTHORIZATION" in request.headers: + access_token = request.headers["AUTHORIZATION"].replace("Bearer ", "") + else: + access_token = request.args.get("access_token") + + oauth_token: OauthToken = OauthToken.get_by(access_token=access_token) + if not oauth_token: + return jsonify(error="Invalid access token"), 400 + + client_user = ClientUser.get_or_create( + client_id=oauth_token.client_id, user_id=oauth_token.user_id + ) + + return jsonify(client_user.get_user_info()) diff --git a/app/oauth_models.py b/app/oauth_models.py new file mode 100644 index 00000000..63ad1578 --- /dev/null +++ b/app/oauth_models.py @@ -0,0 +1,57 @@ +import enum +from typing import Set, Union + +import flask + + +class ScopeE(enum.Enum): + """ScopeE to distinguish with Scope model""" + + EMAIL = "email" + NAME = "name" + OPENID = "openid" + + +class ResponseType(enum.Enum): + CODE = "code" + TOKEN = "token" + ID_TOKEN = "id_token" + + +def get_scopes(request: flask.Request) -> Set[ScopeE]: + scope_strs = _split_arg(request.args.getlist("scope")) + + return set([ScopeE(scope_str) for scope_str in scope_strs]) + + +def get_response_types(request: flask.Request) -> Set[ResponseType]: + response_type_strs = _split_arg(request.args.getlist("response_type")) + + return set([ResponseType(r) for r in response_type_strs]) + + +def _split_arg(arg_input: Union[str, list]) -> Set[str]: + """convert input response_type/scope into a set of string. + arg_input = request.args.getlist(response_type|scope) + Take into account different variations and their combinations + - the split character is " " or "," + - the response_type/scope passed as a list ?scope=scope_1&scope=scope_2 + """ + res = set() + if type(arg_input) is str: + if " " in arg_input: + for x in arg_input.split(" "): + if x: + res.add(x.lower()) + elif "," in arg_input: + for x in arg_input.split(","): + if x: + res.add(x.lower()) + else: + res.add(arg_input) + + else: + for arg in arg_input: + res = res.union(_split_arg(arg)) + + return res diff --git a/app/partner/__init__.py b/app/partner/__init__.py new file mode 100644 index 00000000..281f8060 --- /dev/null +++ b/app/partner/__init__.py @@ -0,0 +1 @@ +from .views import become diff --git a/app/partner/base.py b/app/partner/base.py new file mode 100644 index 00000000..39c1430d --- /dev/null +++ b/app/partner/base.py @@ -0,0 +1,8 @@ +from flask import Blueprint + +partner_bp = Blueprint( + name="partner", + import_name=__name__, + url_prefix="/partner", + template_folder="templates", +) diff --git a/app/partner/templates/partner/become.html b/app/partner/templates/partner/become.html new file mode 100644 index 00000000..766f2065 --- /dev/null +++ b/app/partner/templates/partner/become.html @@ -0,0 +1,58 @@ +{% from "_formhelpers.html" import render_field, render_field_errors %} + +{% extends "single.html" %} + +{% block title %} + Become Partner +{% endblock %} + +{% block single_content %} + {% if error %} +
{{ error }}
+ {% endif %} + +
+ {{ form.csrf_token }} +
+
Together, let's create the best login experience for users!
+

Becoming a partner will give you access to technical resources on SimpleLogin.

+ +
+ + {{ form.email(class="form-control", type="email", placeholder="partner@my-app.com", value=current_user.email) }} + {{ render_field_errors(form.email) }} +
+ +
+ + {{ form.name(class="form-control", placeholder="My App Inc", value=current_user.name) }} + {{ render_field_errors(form.name) }} +
+ +
+ + {{ form.website(class="form-control", type="url", placeholder="https://my-app.com") }} + {{ render_field_errors(form.website) }} +
+ + + {% if current_user.is_authenticated %} +
+

+ Or if you have a partner code, you can become a partner right away! +

+
+ +
+ + {{ form.partner_code(class="form-control", type="text", placeholder="Partner Code") }} + {{ render_field_errors(form.partner_code) }} +
+ {% endif %} + + +
+
+{% endblock %} \ No newline at end of file diff --git a/app/partner/views/__init__.py b/app/partner/views/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/app/partner/views/become.py b/app/partner/views/become.py new file mode 100644 index 00000000..06229d95 --- /dev/null +++ b/app/partner/views/become.py @@ -0,0 +1,77 @@ +from flask import request, render_template, redirect, url_for, flash +from flask_login import current_user +from flask_wtf import FlaskForm +from wtforms import StringField + +from app.config import PARTNER_CODES +from app.email_utils import notify_admin +from app.extensions import db +from app.models import Partner +from app.partner.base import partner_bp + + +class BecomePartnerForm(FlaskForm): + email = StringField("Email") + name = StringField("Name") + website = StringField("Website") + additional_information = StringField("Additional Information") + partner_code = StringField("Partner Code") + + +@partner_bp.route("/become", methods=["GET", "POST"]) +def become(): + form = BecomePartnerForm(request.form) + + if form.validate_on_submit(): + # bypass the application + if form.partner_code.data: + if not current_user.is_authenticated: + raise Exception("only authenticated user can enter partner code") + + if form.partner_code.data in PARTNER_CODES: + notify_admin( + f"User {current_user.name} has become partner!", + {current_user.email}, + ) + + current_user.is_developer = True + db.session.commit() + + flash( + "Congratulations, you are now a SimpleLogin partner! " + "You will have access to tech resources on SimpleLogin.", + "success", + ) + + return redirect(url_for("developer.index")) + else: + error = ( + "The partner code is unknown. Are you sure this is the right code?" + ) + return render_template("partner/become.html", form=form, error=error) + else: + partner = Partner.create( + email=form.email.data, + name=form.name.data, + website=form.website.data, + additional_information=form.additional_information.data, + ) + + if current_user.is_authenticated: + partner.user_id = current_user.id + + db.session.commit() + + notify_admin( + f"New partner {partner.name} {partner.email} has signed up!", + partner.website, + ) + + flash( + "Your request has been submitted, we'll come back to you asap!", + "success", + ) + + return redirect(url_for("partner.become")) + + return render_template("partner/become.html", form=form) diff --git a/app/s3.py b/app/s3.py new file mode 100644 index 00000000..94a2a52f --- /dev/null +++ b/app/s3.py @@ -0,0 +1,38 @@ +from io import BytesIO + +import boto3 + +from app.config import AWS_REGION, BUCKET, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY + +session = boto3.Session( + aws_access_key_id=AWS_ACCESS_KEY_ID, + aws_secret_access_key=AWS_SECRET_ACCESS_KEY, + region_name=AWS_REGION, +) + + +def upload_from_bytesio(key: str, bs: BytesIO, content_type="string") -> None: + bs.seek(0) + session.resource("s3").Bucket(BUCKET).put_object( + Key=key, Body=bs, ContentType=content_type + ) + + +def delete_file(key: str) -> None: + o = session.resource("s3").Bucket(BUCKET).Object(key) + o.delete() + + +def get_url(key: str) -> str: + """by default the link will expire in 1h (3600 seconds)""" + s3_client = session.client("s3") + return s3_client.generate_presigned_url( + ClientMethod="get_object", Params={"Bucket": BUCKET, "Key": key} + ) + + +if __name__ == "__main__": + with open("/tmp/1.png", "rb") as f: + upload_from_bytesio("1.png", BytesIO(f.read())) + + print(get_url(BUCKET, "1.png")) diff --git a/app/utils.py b/app/utils.py index 9d838f44..25688180 100644 --- a/app/utils.py +++ b/app/utils.py @@ -1,8 +1,23 @@ import random import string +import urllib.parse + +from unidecode import unidecode def random_string(length=10): """Generate a random string of fixed length """ letters = string.ascii_lowercase return "".join(random.choice(letters) for _ in range(length)) + + +def convert_to_id(s: str): + """convert a string to id-like: remove space, remove special accent""" + s = s.replace(" ", "") + s = s.lower() + s = unidecode(s) + return s + + +def encode_url(url): + return urllib.parse.quote(url, safe="") diff --git a/cron.py b/cron.py new file mode 100644 index 00000000..5b4ed97e --- /dev/null +++ b/cron.py @@ -0,0 +1,37 @@ +import arrow +import stripe + +from app.extensions import db +from app.log import LOG +from app.models import User, PlanEnum +from server import create_app + + +def downgrade_expired_plan(): + """set user plan to free when plan is expired, ie plan_expiration < now + """ + for user in User.query.filter( + User.plan != PlanEnum.free, User.plan_expiration < arrow.now() + ).all(): + LOG.d("set user %s to free plan", user) + + user.plan_expiration = None + user.plan = PlanEnum.free + + if user.stripe_customer_id: + LOG.d("delete user %s on stripe", user.stripe_customer_id) + stripe.Customer.delete(user.stripe_customer_id) + + user.stripe_card_token = None + user.stripe_customer_id = None + user.stripe_subscription_id = None + + db.session.commit() + + +if __name__ == "__main__": + LOG.d("Start running cronjob") + app = create_app() + + with app.app_context(): + downgrade_expired_plan() diff --git a/crontab.yml b/crontab.yml new file mode 100644 index 00000000..95773094 --- /dev/null +++ b/crontab.yml @@ -0,0 +1,6 @@ +jobs: + - name: downgrade_expired_plan + command: python /code/cron.py + shell: /bin/bash + schedule: "0 0 * * *" + captureStderr: true diff --git a/local_data/jwtRS256.key b/local_data/jwtRS256.key new file mode 100644 index 00000000..d43c0e52 --- /dev/null +++ b/local_data/jwtRS256.key @@ -0,0 +1,51 @@ +-----BEGIN RSA PRIVATE KEY----- +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 +-----END RSA PRIVATE KEY----- diff --git a/local_data/jwtRS256.key.pub b/local_data/jwtRS256.key.pub new file mode 100644 index 00000000..a9cb495b --- /dev/null +++ b/local_data/jwtRS256.key.pub @@ -0,0 +1,14 @@ +-----BEGIN PUBLIC KEY----- +MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAveotF/UeMVHdm1FSgxfl +IbJr0yJZ1vyDGlQRK9DFx8HU8TVp9iqbY4CQEcOaa7cIVI5U0fWHW7kqByJ0BwLQ +ciHienNZKnQishmMAkqNwfK3iJNcGFlNMhhrRGhEpWLox5qfpizK4xd7LK1tu2X5 +mEMWZtJs+wLr0SyVOPhdYCvOnSeT/SMSgDxvFCM1tlAv/wOV0SIF6xEIKb4lyHN3 +YKcs4z1IkqyPtHSeaq2BHeaFTPGqfAL2k4W7ziHxv7dsjCN9j11UnVQRKo+/kNJt +OftH08l1J2FuG3YdTxX0R0KAl7wNQgvbGKjns1pj2az5uQKsne5SZBFjSe86Hbk8 +OKUJoJqy3LV29r7eZjj2wQoIBqbhBkMgPJY6rC9umWkaQKi79a24KeOEZPpTvbKy ++LvoWh4UAs+7hfrKHRimQj2k74JkSYxwrFejpxMYt+GJqPhympcz4gv4qIuiH2CV +623/K9H+WrddIHpGCjpqkGtTZSQZxyPMcEp+I26MuS1dFoaK39WFx2M62OhTenhD +mOgPyWp1a71eYxzwfYtBECPJ4AgqSJrNIHu8/h9uZ+OTGXGN5k97BiWvqLEuz12P +wH1QXX/sVzfjYi3khN0yxLYPoohtfSQa8hg2VPJHVhVZNNCytC84E0xU5yNfIuUd +IZjxJVcfV4C6dtt/QVQl9lsCAwEAAQ== +-----END PUBLIC KEY----- diff --git a/migrations/alembic.ini b/migrations/alembic.ini new file mode 100644 index 00000000..f8ed4801 --- /dev/null +++ b/migrations/alembic.ini @@ -0,0 +1,45 @@ +# A generic, single database configuration. + +[alembic] +# template used to generate migration files +# file_template = %%(rev)s_%%(slug)s + +# set to 'true' to run the environment during +# the 'revision' command, regardless of autogenerate +# revision_environment = false + + +# Logging configuration +[loggers] +keys = root,sqlalchemy,alembic + +[handlers] +keys = console + +[formatters] +keys = generic + +[logger_root] +level = WARN +handlers = console +qualname = + +[logger_sqlalchemy] +level = WARN +handlers = +qualname = sqlalchemy.engine + +[logger_alembic] +level = INFO +handlers = +qualname = alembic + +[handler_console] +class = StreamHandler +args = (sys.stderr,) +level = NOTSET +formatter = generic + +[formatter_generic] +format = %(levelname)-5.5s [%(name)s] %(message)s +datefmt = %H:%M:%S diff --git a/migrations/env.py b/migrations/env.py new file mode 100644 index 00000000..79b8174b --- /dev/null +++ b/migrations/env.py @@ -0,0 +1,96 @@ +from __future__ import with_statement + +import logging +from logging.config import fileConfig + +from sqlalchemy import engine_from_config +from sqlalchemy import pool + +from alembic import context + +# this is the Alembic Config object, which provides +# access to the values within the .ini file in use. +config = context.config + +# Interpret the config file for Python logging. +# This line sets up loggers basically. +fileConfig(config.config_file_name) +logger = logging.getLogger('alembic.env') + +# add your model's MetaData object here +# for 'autogenerate' support +# from myapp import mymodel +# target_metadata = mymodel.Base.metadata +from flask import current_app +config.set_main_option( + 'sqlalchemy.url', current_app.config.get( + 'SQLALCHEMY_DATABASE_URI').replace('%', '%%')) +target_metadata = current_app.extensions['migrate'].db.metadata + +# other values from the config, defined by the needs of env.py, +# can be acquired: +# my_important_option = config.get_main_option("my_important_option") +# ... etc. + + +def run_migrations_offline(): + """Run migrations in 'offline' mode. + + This configures the context with just a URL + and not an Engine, though an Engine is acceptable + here as well. By skipping the Engine creation + we don't even need a DBAPI to be available. + + Calls to context.execute() here emit the given string to the + script output. + + """ + url = config.get_main_option("sqlalchemy.url") + context.configure( + url=url, target_metadata=target_metadata, literal_binds=True + ) + + with context.begin_transaction(): + context.run_migrations() + + +def run_migrations_online(): + """Run migrations in 'online' mode. + + In this scenario we need to create an Engine + and associate a connection with the context. + + """ + + # this callback is used to prevent an auto-migration from being generated + # when there are no changes to the schema + # reference: http://alembic.zzzcomputing.com/en/latest/cookbook.html + def process_revision_directives(context, revision, directives): + if getattr(config.cmd_opts, 'autogenerate', False): + script = directives[0] + if script.upgrade_ops.is_empty(): + directives[:] = [] + logger.info('No changes in schema detected.') + + connectable = engine_from_config( + config.get_section(config.config_ini_section), + prefix='sqlalchemy.', + poolclass=pool.NullPool, + ) + + with connectable.connect() as connection: + context.configure( + connection=connection, + target_metadata=target_metadata, + process_revision_directives=process_revision_directives, + **current_app.extensions['migrate'].configure_args + ) + + with context.begin_transaction(): + context.run_migrations() + + +if context.is_offline_mode(): + run_migrations_offline() +else: + run_migrations_online() diff --git a/migrations/script.py.mako b/migrations/script.py.mako new file mode 100644 index 00000000..88e09485 --- /dev/null +++ b/migrations/script.py.mako @@ -0,0 +1,25 @@ +"""${message} + +Revision ID: ${up_revision} +Revises: ${down_revision | comma,n} +Create Date: ${create_date} + +""" +import sqlalchemy_utils +from alembic import op +import sqlalchemy as sa +${imports if imports else ""} + +# revision identifiers, used by Alembic. +revision = ${repr(up_revision)} +down_revision = ${repr(down_revision)} +branch_labels = ${repr(branch_labels)} +depends_on = ${repr(depends_on)} + + +def upgrade(): + ${upgrades if upgrades else "pass"} + + +def downgrade(): + ${downgrades if downgrades else "pass"} diff --git a/migrations/versions/0256244cd7c8_.py b/migrations/versions/0256244cd7c8_.py new file mode 100644 index 00000000..efaeb1bc --- /dev/null +++ b/migrations/versions/0256244cd7c8_.py @@ -0,0 +1,29 @@ +"""empty message + +Revision ID: 0256244cd7c8 +Revises: 3cd10cfce8c3 +Create Date: 2019-06-28 11:19:50.401222 + +""" +import sqlalchemy_utils +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '0256244cd7c8' +down_revision = '3cd10cfce8c3' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.add_column('activation_code', sa.Column('expired', sqlalchemy_utils.types.arrow.ArrowType(), nullable=True)) + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.drop_column('activation_code', 'expired') + # ### end Alembic commands ### diff --git a/migrations/versions/213fcca48483_.py b/migrations/versions/213fcca48483_.py new file mode 100644 index 00000000..94983e67 --- /dev/null +++ b/migrations/versions/213fcca48483_.py @@ -0,0 +1,24 @@ +"""empty message + +Revision ID: 213fcca48483 +Revises: 0256244cd7c8 +Create Date: 2019-06-30 11:11:51.823062 + +""" +from alembic import op +import sqlalchemy as sa +from sqlalchemy.dialects import postgresql + +# revision identifiers, used by Alembic. +revision = '213fcca48483' +down_revision = '0256244cd7c8' +branch_labels = None +depends_on = None + + +def upgrade(): + op.alter_column('users', 'trial_expiration', new_column_name='plan_expiration') + + +def downgrade(): + op.alter_column('users', 'plan_expiration', new_column_name='trial_expiration') diff --git a/migrations/versions/2fe19381f386_.py b/migrations/versions/2fe19381f386_.py new file mode 100644 index 00000000..1f631a21 --- /dev/null +++ b/migrations/versions/2fe19381f386_.py @@ -0,0 +1,28 @@ +"""empty message + +Revision ID: 2fe19381f386 +Revises: d03e433dc248 +Create Date: 2019-07-01 11:47:24.934574 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '2fe19381f386' +down_revision = 'd03e433dc248' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.add_column('users', sa.Column('is_developer', sa.Boolean(), server_default='0', nullable=False)) + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.drop_column('users', 'is_developer') + # ### end Alembic commands ### diff --git a/migrations/versions/3cd10cfce8c3_.py b/migrations/versions/3cd10cfce8c3_.py new file mode 100644 index 00000000..d7e2fb78 --- /dev/null +++ b/migrations/versions/3cd10cfce8c3_.py @@ -0,0 +1,34 @@ +"""empty message + +Revision ID: 3cd10cfce8c3 +Revises: 5e549314e1e2 +Create Date: 2019-06-27 10:40:12.606337 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '3cd10cfce8c3' +down_revision = '5e549314e1e2' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.add_column('authorization_code', sa.Column('redirect_uri', sa.String(length=1024), nullable=True)) + op.add_column('authorization_code', sa.Column('scope', sa.String(length=128), nullable=True)) + op.add_column('oauth_token', sa.Column('redirect_uri', sa.String(length=1024), nullable=True)) + op.add_column('oauth_token', sa.Column('scope', sa.String(length=128), nullable=True)) + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.drop_column('oauth_token', 'scope') + op.drop_column('oauth_token', 'redirect_uri') + op.drop_column('authorization_code', 'scope') + op.drop_column('authorization_code', 'redirect_uri') + # ### end Alembic commands ### diff --git a/migrations/versions/590d89f981c0_.py b/migrations/versions/590d89f981c0_.py new file mode 100644 index 00000000..c00286ba --- /dev/null +++ b/migrations/versions/590d89f981c0_.py @@ -0,0 +1,29 @@ +"""empty message + +Revision ID: 590d89f981c0 +Revises: b20ee72fd9a4 +Create Date: 2019-07-01 21:46:58.613910 + +""" +import sqlalchemy_utils +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '590d89f981c0' +down_revision = 'b20ee72fd9a4' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.add_column('users', sa.Column('promo_codes', sa.Text(), nullable=True)) + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.drop_column('users', 'promo_codes') + # ### end Alembic commands ### diff --git a/migrations/versions/5e549314e1e2_.py b/migrations/versions/5e549314e1e2_.py new file mode 100644 index 00000000..f5e8ed76 --- /dev/null +++ b/migrations/versions/5e549314e1e2_.py @@ -0,0 +1,172 @@ +"""empty message + +Revision ID: 5e549314e1e2 +Revises: +Create Date: 2019-06-23 16:02:14.692075 + +""" +import sqlalchemy_utils +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +from sqlalchemy.dialects.postgresql import ENUM + +revision = '5e549314e1e2' +down_revision = None +branch_labels = None +depends_on = None + + +def upgrade(): + # alembic cannot handle enum for now + enum = ENUM("free", "trial", "monthly", "yearly", name="plan_enum", create_type=False) + enum.create(op.get_bind(), checkfirst=False) + + + # ### commands auto generated by Alembic - please adjust! ### + op.create_table('file', + sa.Column('id', sa.Integer(), autoincrement=True, nullable=False), + sa.Column('created_at', sqlalchemy_utils.types.arrow.ArrowType(), nullable=False), + sa.Column('updated_at', sqlalchemy_utils.types.arrow.ArrowType(), nullable=True), + sa.Column('path', sa.String(length=128), nullable=False), + sa.PrimaryKeyConstraint('id'), + sa.UniqueConstraint('path') + ) + op.create_table('scope', + sa.Column('id', sa.Integer(), autoincrement=True, nullable=False), + sa.Column('created_at', sqlalchemy_utils.types.arrow.ArrowType(), nullable=False), + sa.Column('updated_at', sqlalchemy_utils.types.arrow.ArrowType(), nullable=True), + sa.Column('name', sa.String(length=128), nullable=False), + sa.PrimaryKeyConstraint('id'), + sa.UniqueConstraint('name') + ) + op.create_table('users', + sa.Column('id', sa.Integer(), autoincrement=True, nullable=False), + sa.Column('created_at', sqlalchemy_utils.types.arrow.ArrowType(), nullable=False), + sa.Column('updated_at', sqlalchemy_utils.types.arrow.ArrowType(), nullable=True), + sa.Column('email', sa.String(length=128), nullable=False), + sa.Column('salt', sa.String(length=128), nullable=False), + sa.Column('password', sa.String(length=128), nullable=False), + sa.Column('name', sa.String(length=128), nullable=False), + sa.Column('is_admin', sa.Boolean(), nullable=False), + sa.Column('activated', sa.Boolean(), nullable=False), + sa.Column('plan', enum, server_default='free', nullable=False), + sa.Column('trial_expiration', sqlalchemy_utils.types.arrow.ArrowType(), nullable=True), + sa.Column('stripe_customer_id', sa.String(length=128), nullable=True), + sa.Column('stripe_card_token', sa.String(length=128), nullable=True), + sa.Column('stripe_subscription_id', sa.String(length=128), nullable=True), + sa.PrimaryKeyConstraint('id'), + sa.UniqueConstraint('email'), + sa.UniqueConstraint('stripe_card_token'), + sa.UniqueConstraint('stripe_customer_id'), + sa.UniqueConstraint('stripe_subscription_id') + ) + op.create_table('activation_code', + sa.Column('id', sa.Integer(), autoincrement=True, nullable=False), + sa.Column('created_at', sqlalchemy_utils.types.arrow.ArrowType(), nullable=False), + sa.Column('updated_at', sqlalchemy_utils.types.arrow.ArrowType(), nullable=True), + sa.Column('user_id', sa.Integer(), nullable=False), + sa.Column('code', sa.String(length=128), nullable=False), + sa.ForeignKeyConstraint(['user_id'], ['users.id'], ondelete='cascade'), + sa.PrimaryKeyConstraint('id'), + sa.UniqueConstraint('code') + ) + op.create_table('client', + sa.Column('id', sa.Integer(), autoincrement=True, nullable=False), + sa.Column('created_at', sqlalchemy_utils.types.arrow.ArrowType(), nullable=False), + sa.Column('updated_at', sqlalchemy_utils.types.arrow.ArrowType(), nullable=True), + sa.Column('oauth_client_id', sa.String(length=128), nullable=False), + sa.Column('oauth_client_secret', sa.String(length=128), nullable=False), + sa.Column('name', sa.String(length=128), nullable=False), + sa.Column('home_url', sa.String(length=1024), nullable=True), + sa.Column('published', sa.Boolean(), nullable=False), + sa.Column('user_id', sa.Integer(), nullable=False), + sa.Column('icon_id', sa.Integer(), nullable=True), + sa.ForeignKeyConstraint(['icon_id'], ['file.id'], ), + sa.ForeignKeyConstraint(['user_id'], ['users.id'], ondelete='cascade'), + sa.PrimaryKeyConstraint('id'), + sa.UniqueConstraint('oauth_client_id') + ) + op.create_table('gen_email', + sa.Column('id', sa.Integer(), autoincrement=True, nullable=False), + sa.Column('created_at', sqlalchemy_utils.types.arrow.ArrowType(), nullable=False), + sa.Column('updated_at', sqlalchemy_utils.types.arrow.ArrowType(), nullable=True), + sa.Column('user_id', sa.Integer(), nullable=False), + sa.Column('email', sa.String(length=128), nullable=False), + sa.Column('enabled', sa.Boolean(), nullable=False), + sa.ForeignKeyConstraint(['user_id'], ['users.id'], ondelete='cascade'), + sa.PrimaryKeyConstraint('id'), + sa.UniqueConstraint('email') + ) + op.create_table('authorization_code', + sa.Column('id', sa.Integer(), autoincrement=True, nullable=False), + sa.Column('created_at', sqlalchemy_utils.types.arrow.ArrowType(), nullable=False), + sa.Column('updated_at', sqlalchemy_utils.types.arrow.ArrowType(), nullable=True), + sa.Column('code', sa.String(length=128), nullable=False), + sa.Column('client_id', sa.Integer(), nullable=False), + sa.Column('user_id', sa.Integer(), nullable=False), + sa.ForeignKeyConstraint(['client_id'], ['client.id'], ondelete='cascade'), + sa.ForeignKeyConstraint(['user_id'], ['users.id'], ondelete='cascade'), + sa.PrimaryKeyConstraint('id'), + sa.UniqueConstraint('code') + ) + op.create_table('client_scope', + sa.Column('client_id', sa.Integer(), nullable=False), + sa.Column('scope_id', sa.Integer(), nullable=False), + sa.ForeignKeyConstraint(['client_id'], ['client.id'], ondelete='cascade'), + sa.ForeignKeyConstraint(['scope_id'], ['scope.id'], ondelete='cascade'), + sa.PrimaryKeyConstraint('client_id', 'scope_id') + ) + op.create_table('client_user', + sa.Column('id', sa.Integer(), autoincrement=True, nullable=False), + sa.Column('created_at', sqlalchemy_utils.types.arrow.ArrowType(), nullable=False), + sa.Column('updated_at', sqlalchemy_utils.types.arrow.ArrowType(), nullable=True), + sa.Column('user_id', sa.Integer(), nullable=False), + sa.Column('client_id', sa.Integer(), nullable=False), + sa.Column('gen_email_id', sa.Integer(), nullable=True), + sa.ForeignKeyConstraint(['client_id'], ['client.id'], ondelete='cascade'), + sa.ForeignKeyConstraint(['gen_email_id'], ['gen_email.id'], ondelete='cascade'), + sa.ForeignKeyConstraint(['user_id'], ['users.id'], ondelete='cascade'), + sa.PrimaryKeyConstraint('id'), + sa.UniqueConstraint('user_id', 'client_id', name='uq_client_user') + ) + op.create_table('oauth_token', + sa.Column('id', sa.Integer(), autoincrement=True, nullable=False), + sa.Column('created_at', sqlalchemy_utils.types.arrow.ArrowType(), nullable=False), + sa.Column('updated_at', sqlalchemy_utils.types.arrow.ArrowType(), nullable=True), + sa.Column('access_token', sa.String(length=128), nullable=True), + sa.Column('client_id', sa.Integer(), nullable=False), + sa.Column('user_id', sa.Integer(), nullable=False), + sa.ForeignKeyConstraint(['client_id'], ['client.id'], ondelete='cascade'), + sa.ForeignKeyConstraint(['user_id'], ['users.id'], ondelete='cascade'), + sa.PrimaryKeyConstraint('id'), + sa.UniqueConstraint('access_token') + ) + op.create_table('redirect_uri', + sa.Column('id', sa.Integer(), autoincrement=True, nullable=False), + sa.Column('created_at', sqlalchemy_utils.types.arrow.ArrowType(), nullable=False), + sa.Column('updated_at', sqlalchemy_utils.types.arrow.ArrowType(), nullable=True), + sa.Column('client_id', sa.Integer(), nullable=False), + sa.Column('uri', sa.String(length=1024), nullable=False), + sa.ForeignKeyConstraint(['client_id'], ['client.id'], ondelete='cascade'), + sa.PrimaryKeyConstraint('id') + ) + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.drop_table('redirect_uri') + op.drop_table('oauth_token') + op.drop_table('client_user') + op.drop_table('client_scope') + op.drop_table('authorization_code') + op.drop_table('gen_email') + op.drop_table('client') + op.drop_table('activation_code') + op.drop_table('users') + op.drop_table('scope') + op.drop_table('file') + # ### end Alembic commands ### diff --git a/migrations/versions/b20ee72fd9a4_.py b/migrations/versions/b20ee72fd9a4_.py new file mode 100644 index 00000000..0c4dcca8 --- /dev/null +++ b/migrations/versions/b20ee72fd9a4_.py @@ -0,0 +1,40 @@ +"""empty message + +Revision ID: b20ee72fd9a4 +Revises: 2fe19381f386 +Create Date: 2019-07-01 13:15:05.391100 + +""" +import sqlalchemy_utils +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = 'b20ee72fd9a4' +down_revision = '2fe19381f386' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.create_table('partner', + sa.Column('id', sa.Integer(), autoincrement=True, nullable=False), + sa.Column('created_at', sqlalchemy_utils.types.arrow.ArrowType(), nullable=False), + sa.Column('updated_at', sqlalchemy_utils.types.arrow.ArrowType(), nullable=True), + sa.Column('email', sa.String(length=128), nullable=True), + sa.Column('name', sa.String(length=128), nullable=True), + sa.Column('website', sa.String(length=1024), nullable=True), + sa.Column('additional_information', sa.Text(), nullable=True), + sa.Column('user_id', sa.Integer(), nullable=True), + sa.ForeignKeyConstraint(['user_id'], ['users.id'], ondelete='cascade'), + sa.PrimaryKeyConstraint('id') + ) + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.drop_table('partner') + # ### end Alembic commands ### diff --git a/migrations/versions/d03e433dc248_.py b/migrations/versions/d03e433dc248_.py new file mode 100644 index 00000000..24210891 --- /dev/null +++ b/migrations/versions/d03e433dc248_.py @@ -0,0 +1,39 @@ +"""empty message + +Revision ID: d03e433dc248 +Revises: f234688f5ebd +Create Date: 2019-06-30 23:24:28.486465 + +""" +import sqlalchemy_utils +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = 'd03e433dc248' +down_revision = 'f234688f5ebd' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.create_table('reset_password_code', + sa.Column('id', sa.Integer(), autoincrement=True, nullable=False), + sa.Column('created_at', sqlalchemy_utils.types.arrow.ArrowType(), nullable=False), + sa.Column('updated_at', sqlalchemy_utils.types.arrow.ArrowType(), nullable=True), + sa.Column('user_id', sa.Integer(), nullable=False), + sa.Column('code', sa.String(length=128), nullable=False), + sa.Column('expired', sqlalchemy_utils.types.arrow.ArrowType(), nullable=False), + sa.ForeignKeyConstraint(['user_id'], ['users.id'], ondelete='cascade'), + sa.PrimaryKeyConstraint('id'), + sa.UniqueConstraint('code') + ) + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.drop_table('reset_password_code') + # ### end Alembic commands ### diff --git a/migrations/versions/f234688f5ebd_.py b/migrations/versions/f234688f5ebd_.py new file mode 100644 index 00000000..05bd9403 --- /dev/null +++ b/migrations/versions/f234688f5ebd_.py @@ -0,0 +1,30 @@ +"""empty message + +Revision ID: f234688f5ebd +Revises: 213fcca48483 +Create Date: 2019-06-30 18:30:55.295040 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = 'f234688f5ebd' +down_revision = '213fcca48483' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.add_column('users', sa.Column('profile_picture_id', sa.Integer(), nullable=True)) + op.create_foreign_key(None, 'users', 'file', ['profile_picture_id'], ['id']) + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.drop_constraint(None, 'users', type_='foreignkey') + op.drop_column('users', 'profile_picture_id') + # ### end Alembic commands ### diff --git a/poc/__init__.py b/poc/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/poc/jwt-jws-jwk.py b/poc/jwt-jws-jwk.py new file mode 100644 index 00000000..bae64f29 --- /dev/null +++ b/poc/jwt-jws-jwk.py @@ -0,0 +1,17 @@ +""" +ssh-keygen -t rsa -b 4096 -m PEM -f jwtRS256.key +# Don't add passphrase +openssl rsa -in jwtRS256.key -pubout -outform PEM -out jwtRS256.key.pub + +""" +from jwcrypto import jwk, jws, jwt + +with open("jwtRS256.key", "rb") as f: + key = jwk.JWK.from_pem(f.read()) + +Token = jwt.JWT(header={"alg": "RS256"}, claims={"info": "I'm a signed token"}) +Token.make_signed_token(key) +print(Token.serialize()) + +# verify +jwt.JWT(key=key, jwt=Token.serialize()) diff --git a/poc/poc_send_email.py b/poc/poc_send_email.py new file mode 100644 index 00000000..c5305680 --- /dev/null +++ b/poc/poc_send_email.py @@ -0,0 +1,33 @@ +"""POC on how to send email through postfix directly +TODO: need to improve email score before using this +""" + +import smtplib +from email.mime.multipart import MIMEMultipart +from email.mime.text import MIMEText + +fromaddr = "hello@u.sl.meo.ovh" +toaddr = "test-7hxfo@mail-tester.com" + +# alternative is necessary so email client will display html version first, then use plain one as fall-back +msg = MIMEMultipart("alternative") + +msg["From"] = fromaddr +msg["To"] = toaddr +msg["Subject"] = "test subject 2" + +msg.attach(MIMEText("test plain body", "plain")) +msg.attach( + MIMEText( + """ + + +Test body + +""", + "html", + ) +) + +with smtplib.SMTP(host="localhost") as server: + server.sendmail(fromaddr, toaddr, msg.as_string()) diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 00000000..c28585e0 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,18 @@ +[tool.black] +exclude = ''' +( + /( + \.eggs # exclude a few common directories in the + | \.git # root of the project + | \.hg + | \.mypy_cache + | \.tox + | \.venv + | _build + | buck-out + | build + | dist + | migrations # migrations/ is generated by alembic + )/ +) +''' \ No newline at end of file diff --git a/requirements.in b/requirements.in new file mode 100644 index 00000000..ffcaa64d --- /dev/null +++ b/requirements.in @@ -0,0 +1,27 @@ +flask_sqlalchemy +flask +flask_login +wtforms +unidecode +gunicorn +pip-tools +bcrypt +python-dotenv +ipython +sqlalchemy_utils +psycopg2-binary +sentry_sdk +blinker +arrow +sendgrid +Flask-WTF +boto3 +Flask-Migrate +flask_admin +pytest +flask-cors +watchtower +sqlalchemy-utils +stripe +jwcrypto +yacron \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index 66732313..618320ee 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,89 @@ -flask_sqlalchemy -flask -flask_login -wtforms \ No newline at end of file +# +# This file is autogenerated by pip-compile +# To update, run: +# +# pip-compile --output-file requirements.txt requirements.in +# +aiohttp==3.5.4 # via raven-aiohttp, yacron +aiosmtplib==1.0.6 # via yacron +alembic==1.0.10 # via flask-migrate +appnope==0.1.0 # via ipython +arrow==0.14.2 +asn1crypto==0.24.0 # via cryptography +async-timeout==3.0.1 # via aiohttp +atomicwrites==1.3.0 # via pytest +attrs==19.1.0 # via aiohttp, pytest +backcall==0.1.0 # via ipython +bcrypt==3.1.6 +blinker==1.4 +boto3==1.9.167 +botocore==1.12.167 # via boto3, s3transfer +certifi==2019.3.9 # via requests, sentry-sdk +cffi==1.12.3 # via bcrypt, cryptography +chardet==3.0.4 # via aiohttp, requests +click==7.0 # via flask, pip-tools +crontab==0.22.5 # via yacron +cryptography==2.7 # via jwcrypto +decorator==4.4.0 # via ipython, traitlets +docutils==0.14 # via botocore +flask-admin==1.5.3 +flask-cors==3.0.8 +flask-login==0.4.1 +flask-migrate==2.5.2 +flask-sqlalchemy==2.4.0 +flask-wtf==0.14.2 +flask==1.0.3 +gunicorn==19.9.0 +idna==2.8 # via requests, yarl +importlib-metadata==0.18 # via pluggy, pytest +ipython-genutils==0.2.0 # via traitlets +ipython==7.5.0 +itsdangerous==1.1.0 # via flask +jedi==0.13.3 # via ipython +jinja2==2.10.1 # via flask, yacron +jmespath==0.9.4 # via boto3, botocore +jwcrypto==0.6.0 +mako==1.0.12 # via alembic +markupsafe==1.1.1 # via jinja2, mako +more-itertools==7.0.0 # via pytest +multidict==4.5.2 # via aiohttp, yarl +packaging==19.0 # via pytest +parso==0.4.0 # via jedi +pexpect==4.7.0 # via ipython +pickleshare==0.7.5 # via ipython +pip-tools==3.8.0 +pluggy==0.12.0 # via pytest +prompt-toolkit==2.0.9 # via ipython +psycopg2-binary==2.8.2 +ptyprocess==0.6.0 # via pexpect +py==1.8.0 # via pytest +pycparser==2.19 # via cffi +pygments==2.4.2 # via ipython +pyparsing==2.4.0 # via packaging +pytest==4.6.3 +python-dateutil==2.8.0 # via alembic, arrow, botocore, strictyaml +python-dotenv==0.10.3 +python-editor==1.0.4 # via alembic +python-http-client==3.1.0 # via sendgrid +raven-aiohttp==0.7.0 # via yacron +raven==6.10.0 # via raven-aiohttp, yacron +requests==2.22.0 # via stripe +ruamel.yaml==0.15.97 # via strictyaml +s3transfer==0.2.1 # via boto3 +sendgrid==6.0.5 +sentry-sdk==0.9.0 +six==1.12.0 # via bcrypt, cryptography, flask-cors, packaging, pip-tools, prompt-toolkit, pytest, python-dateutil, sqlalchemy-utils, traitlets +sqlalchemy-utils==0.33.11 +sqlalchemy==1.3.4 # via alembic, flask-sqlalchemy, sqlalchemy-utils +strictyaml==1.0.2 # via yacron +stripe==2.30.1 +traitlets==4.3.2 # via ipython +unidecode==1.0.23 +urllib3==1.25.3 # via botocore, requests, sentry-sdk +watchtower==0.6.0 +wcwidth==0.1.7 # via prompt-toolkit, pytest +werkzeug==0.15.4 # via flask +wtforms==2.2.1 +yacron==0.9.0 +yarl==1.3.0 # via aiohttp +zipp==0.5.1 # via importlib-metadata diff --git a/server.py b/server.py index ee0710bd..ebc35cc9 100644 --- a/server.py +++ b/server.py @@ -1,50 +1,112 @@ import os -from flask import Flask +import arrow +import sentry_sdk +import stripe +from flask import Flask, redirect, url_for, render_template, request, jsonify +from flask_admin import Admin +from flask_cors import cross_origin +from flask_login import current_user +from sentry_sdk.integrations.flask import FlaskIntegration +from app.admin_model import SLModelView, SLAdminIndexView from app.auth.base import auth_bp +from app.config import ( + DB_URI, + FLASK_SECRET, + ENABLE_SENTRY, + ENV, + URL, + SHA1, + LYRA_ANALYTICS_ID, + STRIPE_SECRET_KEY, +) from app.dashboard.base import dashboard_bp -from app.extensions import db, login_manager +from app.developer.base import developer_bp +from app.discover.base import discover_bp +from app.extensions import db, login_manager, migrate +from app.jose_utils import get_jwk_key from app.log import LOG -from app.models import Client, User +from app.models import Client, User, Scope, ClientUser, GenEmail, RedirectUri, PlanEnum from app.monitor.base import monitor_bp +from app.oauth.base import oauth_bp +from app.oauth_models import ScopeE +from app.partner.base import partner_bp + +if ENABLE_SENTRY: + LOG.d("enable sentry") + sentry_sdk.init( + dsn="https://ad2187ed843340a1b4165bd8d5d6cdce@sentry.io/1478143", + integrations=[FlaskIntegration()], + ) def create_app() -> Flask: app = Flask(__name__) + app.url_map.strict_slashes = False - app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///db.sqlite" + app.config["SQLALCHEMY_DATABASE_URI"] = DB_URI app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False - app.secret_key = "secret" + app.secret_key = FLASK_SECRET app.config["TEMPLATES_AUTO_RELOAD"] = True init_extensions(app) register_blueprints(app) + set_index_page(app) + jinja2_filter(app) + + setup_error_page(app) + + setup_favicon_route(app) + setup_openid_metadata(app) + + stripe.api_key = STRIPE_SECRET_KEY return app def fake_data(): + LOG.d("create fake data") # Remove db if exist if os.path.exists("db.sqlite"): + LOG.d("remove existing db file") os.remove("db.sqlite") + # Create all tables db.create_all() # fake data - client = Client( - client_id="client-id", - client_secret="client-secret", - redirect_uri="http://localhost:7000/callback", - name="Continental", + Scope.create(name=ScopeE.NAME.value) + Scope.create(name=ScopeE.EMAIL.value) + db.session.commit() + + # Create a user + user = User.create( + email="nguyenkims+local@gmail.com", + name="Son Local", + activated=True, + is_admin=True, + is_developer=True, ) - db.session.add(client) - - user = User(id=1, email="john@wick.com", name="John Wick") user.set_password("password") - db.session.add(user) + user.plan = PlanEnum.trial + user.plan_expiration = arrow.now().shift(weeks=2) + db.session.commit() + GenEmail.create_new_gen_email(user_id=user.id) + + # Create a client + client1 = Client.create_new(name="Demo", user_id=user.id) + client1.home_url = "http://sl-client:7000" + client1.oauth_client_id = "client-id" + client1.oauth_client_secret = "client-secret" + client1.published = True + db.session.commit() + + RedirectUri.create(client_id=client1.id, uri="http://sl-client:7000/callback") + RedirectUri.create(client_id=client1.id, uri="http://sl-client:7000/implicit") + RedirectUri.create(client_id=client1.id, uri="http://sl-client:7000/implicit-jso") db.session.commit() @@ -59,18 +121,141 @@ def register_blueprints(app: Flask): app.register_blueprint(auth_bp) app.register_blueprint(monitor_bp) app.register_blueprint(dashboard_bp) + app.register_blueprint(developer_bp) + app.register_blueprint(partner_bp) + + app.register_blueprint(oauth_bp, url_prefix="/oauth") + app.register_blueprint(oauth_bp, url_prefix="/oauth2") + + app.register_blueprint(discover_bp) + + +def set_index_page(app): + @app.route("/") + def index(): + if current_user.is_authenticated: + return redirect(url_for("dashboard.index")) + else: + return redirect(url_for("auth.login")) + + @app.after_request + def after_request(res): + # not logging /static call + if not request.path.startswith("/static") and not request.path.startswith( + "/admin/static" + ): + LOG.debug( + "%s %s %s %s %s", + request.remote_addr, + request.method, + request.path, + request.args, + res.status_code, + ) + return res + + +def setup_openid_metadata(app): + @app.route("/.well-known/openid-configuration") + @cross_origin() + def openid_config(): + res = { + "issuer": URL, + "authorization_endpoint": URL + "/oauth2/authorize", + "token_endpoint": URL + "/oauth2/token", + "jwks_uri": URL + "/jwks", + "response_types_supported": [ + "code", + "token", + "id_token", + "id_token token", + "id_token code", + ], + "subject_types_supported": ["public"], + "id_token_signing_alg_values_supported": ["RS256"], + # todo: add introspection and revocation endpoints + "introspection_endpoint": URL + "/oauth2/token/introspection", + "revocation_endpoint": URL + "/oauth2/token/revocation", + } + + return jsonify(res) + + @app.route("/jwks") + @cross_origin() + def jwks(): + res = {"keys": [get_jwk_key()]} + return jsonify(res) + + +def setup_error_page(app): + @app.errorhandler(400) + def page_not_found(e): + return render_template("error/400.html"), 400 + + @app.errorhandler(401) + def page_not_found(e): + return render_template("error/401.html", current_url=request.full_path), 401 + + @app.errorhandler(403) + def page_not_found(e): + return render_template("error/403.html"), 403 + + @app.errorhandler(404) + def page_not_found(e): + return render_template("error/404.html"), 404 + + @app.errorhandler(Exception) + def error_handler(e): + LOG.exception(e) + return render_template("error/500.html"), 500 + + +def setup_favicon_route(app): + @app.route("/favicon.ico") + def favicon(): + return redirect("/static/favicon.ico") + + +def jinja2_filter(app): + def format_datetime(value): + dt = arrow.get(value) + return dt.humanize() + + app.jinja_env.filters["dt"] = format_datetime + + @app.context_processor + def inject_stage_and_region(): + return dict( + YEAR=arrow.now().year, + URL=URL, + ENABLE_SENTRY=ENABLE_SENTRY, + VERSION=SHA1, + LYRA_ANALYTICS_ID=LYRA_ANALYTICS_ID, + ) def init_extensions(app: Flask): LOG.debug("init extensions") login_manager.init_app(app) db.init_app(app) + migrate.init_app(app) + + +def init_admin(app): + admin = Admin(name="SimpleLogin", template_mode="bootstrap3") + admin.init_app(app, index_view=SLAdminIndexView()) + admin.add_view(SLModelView(User, db.session)) + admin.add_view(SLModelView(Client, db.session)) + admin.add_view(SLModelView(GenEmail, db.session)) + admin.add_view(SLModelView(ClientUser, db.session)) if __name__ == "__main__": app = create_app() - with app.app_context(): - fake_data() + if ENV == "local": + LOG.d("reset db, add fake data") + with app.app_context(): + fake_data() - app.run(debug=True, threaded=False) + app.run(debug=True, host="0.0.0.0") diff --git a/shell.py b/shell.py new file mode 100644 index 00000000..e8d8fb0f --- /dev/null +++ b/shell.py @@ -0,0 +1,65 @@ +import flask_migrate +import stripe +from IPython import embed +from sqlalchemy_utils import create_database, database_exists, drop_database + +from app.config import DB_URI +from app.models import * +from app.oauth_models import ScopeE +from server import create_app + + +def create_db(): + if not database_exists(DB_URI): + LOG.debug("db not exist, create database") + create_database(DB_URI) + + # Create all tables + # Use flask-migrate instead of db.create_all() + flask_migrate.upgrade() + + scope_name = Scope.create(name=ScopeE.NAME.value) + db.session.add(scope_name) + scope_email = Scope.create(name=ScopeE.EMAIL.value) + db.session.add(scope_email) + db.session.commit() + + +def add_real_data(): + """after the db is reset, add some accounts + TODO: remove this after adding alembic""" + user = User.create(email="nguyenkims@gmail.com", name="Son GM", activated=True) + user.set_password("password") + db.session.commit() + + # Create a client + client1 = Client.create_new(name="Demo", user_id=user.id) + client1.oauth_client_id = "client-id" + client1.oauth_client_secret = "client-secret" + db.session.commit() + + RedirectUri.create(client_id=client1.id, uri="http://demo.sl.meo.ovh/callback") + db.session.commit() + + user2 = User.create(email="nguyenkims@hotmail.com", name="Son HM", activated=True) + user2.set_password("password") + db.session.commit() + + +def change_password(user_id, new_password): + user = User.get(user_id) + user.set_password(new_password) + db.session.commit() + + +def reset_db(): + if database_exists(DB_URI): + drop_database(DB_URI) + create_db() + add_real_data() + + +app = create_app() + +with app.app_context(): + embed() diff --git a/static/assets/css/dashboard.css b/static/assets/css/dashboard.css new file mode 100755 index 00000000..78a2a441 --- /dev/null +++ b/static/assets/css/dashboard.css @@ -0,0 +1,20346 @@ +@charset "UTF-8"; +/** + * Dashboard UI + */ +/*! + * Bootstrap v4.3.1 (https://getbootstrap.com/) + * Copyright 2011-2019 The Bootstrap Authors + * Copyright 2011-2019 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ +:root { + --blue: #467fcf; + --indigo: #6574cd; + --purple: #a55eea; + --pink: #f66d9b; + --red: #cd201f; + --orange: #fd9644; + --yellow: #f1c40f; + --green: #5eba00; + --teal: #2bcbba; + --cyan: #17a2b8; + --white: #fff; + --gray: #868e96; + --gray-dark: #343a40; + --azure: #45aaf2; + --lime: #7bd235; + --primary: #467fcf; + --secondary: #868e96; + --success: #5eba00; + --info: #45aaf2; + --warning: #f1c40f; + --danger: #cd201f; + --light: #f8f9fa; + --dark: #343a40; + --breakpoint-xs: 0; + --breakpoint-sm: 576px; + --breakpoint-md: 768px; + --breakpoint-lg: 992px; + --breakpoint-xl: 1280px; + --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: Monaco, Consolas, "Liberation Mono", "Courier New", monospace; +} + +*, +*::before, +*::after { + 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: "Source Sans Pro", -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", Arial, sans-serif; + font-size: 0.9375rem; + font-weight: 400; + line-height: 1.5; + color: #495057; + text-align: left; + background-color: #f5f7fb; +} + +[tabindex="-1"]:focus { + outline: 0 !important; +} + +hr { + box-sizing: content-box; + height: 0; + overflow: visible; +} + +h1, h2, h3, h4, h5, h6 { + margin-top: 0; + margin-bottom: 0.66em; +} + +p { + margin-top: 0; + margin-bottom: 1rem; +} + +abbr[title], +abbr[data-original-title] { + text-decoration: underline; + -webkit-text-decoration: underline dotted; + text-decoration: underline dotted; + cursor: help; + border-bottom: 0; + text-decoration-skip-ink: none; +} + +address { + margin-bottom: 1rem; + font-style: normal; + line-height: inherit; +} + +ol, +ul, +dl { + margin-top: 0; + margin-bottom: 1rem; +} + +ol ol, +ul ul, +ol ul, +ul ol { + 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: #467fcf; + text-decoration: none; + background-color: transparent; +} + +a:hover { + color: #295a9f; + text-decoration: underline; +} + +a:not([href]):not([tabindex]) { + color: inherit; + text-decoration: none; +} + +a:not([href]):not([tabindex]):hover, a:not([href]):not([tabindex]):focus { + color: inherit; + text-decoration: none; +} + +a:not([href]):not([tabindex]):focus { + outline: 0; +} + +pre, +code, +kbd, +samp { + font-family: 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 { + vertical-align: middle; + border-style: none; +} + +svg { + overflow: hidden; + vertical-align: middle; +} + +table { + border-collapse: collapse; +} + +caption { + padding-top: 0.75rem; + padding-bottom: 0.75rem; + color: #9aa0ac; + text-align: left; + caption-side: bottom; +} + +th { + text-align: inherit; +} + +label { + display: inline-block; + margin-bottom: 0.5rem; +} + +button { + border-radius: 0; +} + +button:focus { + outline: 1px dotted; + outline: 5px auto -webkit-focus-ring-color; +} + +input, +button, +select, +optgroup, +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; +} + +button, +[type="button"], +[type="reset"], +[type="submit"] { + -webkit-appearance: button; +} + +button:not(:disabled), +[type="button"]:not(:disabled), +[type="reset"]:not(:disabled), +[type="submit"]:not(:disabled) { + cursor: pointer; +} + +button::-moz-focus-inner, +[type="button"]::-moz-focus-inner, +[type="reset"]::-moz-focus-inner, +[type="submit"]::-moz-focus-inner { + padding: 0; + border-style: none; +} + +input[type="radio"], +input[type="checkbox"] { + box-sizing: border-box; + padding: 0; +} + +input[type="date"], +input[type="time"], +input[type="datetime-local"], +input[type="month"] { + -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: 0.66em; + font-family: inherit; + font-weight: 600; + line-height: 1.1; + color: inherit; +} + +h1, .h1 { + font-size: 2rem; +} + +h2, .h2 { + font-size: 1.75rem; +} + +h3, .h3 { + font-size: 1.5rem; +} + +h4, .h4 { + font-size: 1.125rem; +} + +h5, .h5 { + font-size: 1rem; +} + +h6, .h6 { + font-size: 0.875rem; +} + +.lead { + font-size: 1.171875rem; + font-weight: 300; +} + +.display-1 { + font-size: 4.5rem; + font-weight: 300; + line-height: 1.1; +} + +.display-2 { + font-size: 4rem; + font-weight: 300; + line-height: 1.1; +} + +.display-3 { + font-size: 3.5rem; + font-weight: 300; + line-height: 1.1; +} + +.display-4 { + font-size: 3rem; + font-weight: 300; + line-height: 1.1; +} + +hr { + margin-top: 1rem; + margin-bottom: 1rem; + border: 0; + border-top: 1px solid rgba(0, 40, 100, 0.12); +} + +small, +.small { + font-size: 87.5%; + font-weight: 400; +} + +mark, +.mark { + padding: 0.2em; + background-color: #fcf8e3; +} + +.list-unstyled { + padding-left: 0; + list-style: none; +} + +.list-inline { + padding-left: 0; + list-style: none; +} + +.list-inline-item { + display: inline-block; +} + +.list-inline-item:not(:last-child) { + margin-right: 0.5rem; +} + +.initialism { + font-size: 90%; + text-transform: uppercase; +} + +.blockquote { + margin-bottom: 1rem; + font-size: 1.171875rem; +} + +.blockquote-footer { + display: block; + font-size: 87.5%; + color: #868e96; +} + +.blockquote-footer::before { + content: "\2014\00A0"; +} + +.img-fluid { + max-width: 100%; + height: auto; +} + +.img-thumbnail { + padding: 0.25rem; + background-color: #fff; + border: 1px solid #dee2e6; + border-radius: 3px; + max-width: 100%; + height: auto; +} + +.figure { + display: inline-block; +} + +.figure-img { + margin-bottom: 0.5rem; + line-height: 1; +} + +.figure-caption { + font-size: 90%; + color: #868e96; +} + +code { + font-size: 85%; + color: inherit; + word-break: break-word; +} + +a > code { + color: inherit; +} + +kbd { + padding: 0.2rem 0.4rem; + font-size: 85%; + color: #fff; + background-color: #343a40; + border-radius: 3px; +} + +kbd kbd { + padding: 0; + font-size: 100%; + font-weight: 700; +} + +pre { + display: block; + font-size: 85%; + 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: 0.75rem; + padding-left: 0.75rem; + margin-right: auto; + margin-left: auto; +} + +@media (min-width: 576px) { + .container { + max-width: 540px; + } +} + +@media (min-width: 768px) { + .container { + max-width: 720px; + } +} + +@media (min-width: 992px) { + .container { + max-width: 960px; + } +} + +@media (min-width: 1280px) { + .container { + max-width: 1200px; + } +} + +.container-fluid { + width: 100%; + padding-right: 0.75rem; + padding-left: 0.75rem; + margin-right: auto; + margin-left: auto; +} + +.row { + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + margin-right: -0.75rem; + margin-left: -0.75rem; +} + +.no-gutters { + margin-right: 0; + margin-left: 0; +} + +.no-gutters > .col, +.no-gutters > [class*="col-"] { + padding-right: 0; + padding-left: 0; +} + +.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, +.col-auto, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm, +.col-sm-auto, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md, +.col-md-auto, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg, +.col-lg-auto, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl, +.col-xl-auto { + position: relative; + width: 100%; + padding-right: 0.75rem; + padding-left: 0.75rem; +} + +.col { + -ms-flex-preferred-size: 0; + flex-basis: 0; + -ms-flex-positive: 1; + flex-grow: 1; + max-width: 100%; +} + +.col-auto { + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + max-width: 100%; +} + +.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-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-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-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-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-11 { + -ms-flex: 0 0 91.66666667%; + flex: 0 0 91.66666667%; + max-width: 91.66666667%; +} + +.col-12 { + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; +} + +.order-first { + -ms-flex-order: -1; + order: -1; +} + +.order-last { + -ms-flex-order: 13; + order: 13; +} + +.order-0 { + -ms-flex-order: 0; + order: 0; +} + +.order-1 { + -ms-flex-order: 1; + order: 1; +} + +.order-2 { + -ms-flex-order: 2; + order: 2; +} + +.order-3 { + -ms-flex-order: 3; + order: 3; +} + +.order-4 { + -ms-flex-order: 4; + order: 4; +} + +.order-5 { + -ms-flex-order: 5; + order: 5; +} + +.order-6 { + -ms-flex-order: 6; + order: 6; +} + +.order-7 { + -ms-flex-order: 7; + order: 7; +} + +.order-8 { + -ms-flex-order: 8; + order: 8; +} + +.order-9 { + -ms-flex-order: 9; + order: 9; +} + +.order-10 { + -ms-flex-order: 10; + order: 10; +} + +.order-11 { + -ms-flex-order: 11; + order: 11; +} + +.order-12 { + -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; + -ms-flex-positive: 1; + flex-grow: 1; + max-width: 100%; + } + .col-sm-auto { + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + max-width: 100%; + } + .col-sm-1 { + -ms-flex: 0 0 8.33333333%; + flex: 0 0 8.33333333%; + max-width: 8.33333333%; + } + .col-sm-2 { + -ms-flex: 0 0 16.66666667%; + flex: 0 0 16.66666667%; + max-width: 16.66666667%; + } + .col-sm-3 { + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; + } + .col-sm-4 { + -ms-flex: 0 0 33.33333333%; + flex: 0 0 33.33333333%; + max-width: 33.33333333%; + } + .col-sm-5 { + -ms-flex: 0 0 41.66666667%; + flex: 0 0 41.66666667%; + max-width: 41.66666667%; + } + .col-sm-6 { + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; + } + .col-sm-7 { + -ms-flex: 0 0 58.33333333%; + flex: 0 0 58.33333333%; + max-width: 58.33333333%; + } + .col-sm-8 { + -ms-flex: 0 0 66.66666667%; + flex: 0 0 66.66666667%; + max-width: 66.66666667%; + } + .col-sm-9 { + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75%; + } + .col-sm-10 { + -ms-flex: 0 0 83.33333333%; + flex: 0 0 83.33333333%; + max-width: 83.33333333%; + } + .col-sm-11 { + -ms-flex: 0 0 91.66666667%; + flex: 0 0 91.66666667%; + max-width: 91.66666667%; + } + .col-sm-12 { + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; + } + .order-sm-first { + -ms-flex-order: -1; + order: -1; + } + .order-sm-last { + -ms-flex-order: 13; + order: 13; + } + .order-sm-0 { + -ms-flex-order: 0; + order: 0; + } + .order-sm-1 { + -ms-flex-order: 1; + order: 1; + } + .order-sm-2 { + -ms-flex-order: 2; + order: 2; + } + .order-sm-3 { + -ms-flex-order: 3; + order: 3; + } + .order-sm-4 { + -ms-flex-order: 4; + order: 4; + } + .order-sm-5 { + -ms-flex-order: 5; + order: 5; + } + .order-sm-6 { + -ms-flex-order: 6; + order: 6; + } + .order-sm-7 { + -ms-flex-order: 7; + order: 7; + } + .order-sm-8 { + -ms-flex-order: 8; + order: 8; + } + .order-sm-9 { + -ms-flex-order: 9; + order: 9; + } + .order-sm-10 { + -ms-flex-order: 10; + order: 10; + } + .order-sm-11 { + -ms-flex-order: 11; + order: 11; + } + .order-sm-12 { + -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; + -ms-flex-positive: 1; + flex-grow: 1; + max-width: 100%; + } + .col-md-auto { + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + max-width: 100%; + } + .col-md-1 { + -ms-flex: 0 0 8.33333333%; + flex: 0 0 8.33333333%; + max-width: 8.33333333%; + } + .col-md-2 { + -ms-flex: 0 0 16.66666667%; + flex: 0 0 16.66666667%; + max-width: 16.66666667%; + } + .col-md-3 { + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; + } + .col-md-4 { + -ms-flex: 0 0 33.33333333%; + flex: 0 0 33.33333333%; + max-width: 33.33333333%; + } + .col-md-5 { + -ms-flex: 0 0 41.66666667%; + flex: 0 0 41.66666667%; + max-width: 41.66666667%; + } + .col-md-6 { + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; + } + .col-md-7 { + -ms-flex: 0 0 58.33333333%; + flex: 0 0 58.33333333%; + max-width: 58.33333333%; + } + .col-md-8 { + -ms-flex: 0 0 66.66666667%; + flex: 0 0 66.66666667%; + max-width: 66.66666667%; + } + .col-md-9 { + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75%; + } + .col-md-10 { + -ms-flex: 0 0 83.33333333%; + flex: 0 0 83.33333333%; + max-width: 83.33333333%; + } + .col-md-11 { + -ms-flex: 0 0 91.66666667%; + flex: 0 0 91.66666667%; + max-width: 91.66666667%; + } + .col-md-12 { + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; + } + .order-md-first { + -ms-flex-order: -1; + order: -1; + } + .order-md-last { + -ms-flex-order: 13; + order: 13; + } + .order-md-0 { + -ms-flex-order: 0; + order: 0; + } + .order-md-1 { + -ms-flex-order: 1; + order: 1; + } + .order-md-2 { + -ms-flex-order: 2; + order: 2; + } + .order-md-3 { + -ms-flex-order: 3; + order: 3; + } + .order-md-4 { + -ms-flex-order: 4; + order: 4; + } + .order-md-5 { + -ms-flex-order: 5; + order: 5; + } + .order-md-6 { + -ms-flex-order: 6; + order: 6; + } + .order-md-7 { + -ms-flex-order: 7; + order: 7; + } + .order-md-8 { + -ms-flex-order: 8; + order: 8; + } + .order-md-9 { + -ms-flex-order: 9; + order: 9; + } + .order-md-10 { + -ms-flex-order: 10; + order: 10; + } + .order-md-11 { + -ms-flex-order: 11; + order: 11; + } + .order-md-12 { + -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; + -ms-flex-positive: 1; + flex-grow: 1; + max-width: 100%; + } + .col-lg-auto { + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + max-width: 100%; + } + .col-lg-1 { + -ms-flex: 0 0 8.33333333%; + flex: 0 0 8.33333333%; + max-width: 8.33333333%; + } + .col-lg-2 { + -ms-flex: 0 0 16.66666667%; + flex: 0 0 16.66666667%; + max-width: 16.66666667%; + } + .col-lg-3 { + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; + } + .col-lg-4 { + -ms-flex: 0 0 33.33333333%; + flex: 0 0 33.33333333%; + max-width: 33.33333333%; + } + .col-lg-5 { + -ms-flex: 0 0 41.66666667%; + flex: 0 0 41.66666667%; + max-width: 41.66666667%; + } + .col-lg-6 { + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; + } + .col-lg-7 { + -ms-flex: 0 0 58.33333333%; + flex: 0 0 58.33333333%; + max-width: 58.33333333%; + } + .col-lg-8 { + -ms-flex: 0 0 66.66666667%; + flex: 0 0 66.66666667%; + max-width: 66.66666667%; + } + .col-lg-9 { + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75%; + } + .col-lg-10 { + -ms-flex: 0 0 83.33333333%; + flex: 0 0 83.33333333%; + max-width: 83.33333333%; + } + .col-lg-11 { + -ms-flex: 0 0 91.66666667%; + flex: 0 0 91.66666667%; + max-width: 91.66666667%; + } + .col-lg-12 { + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; + } + .order-lg-first { + -ms-flex-order: -1; + order: -1; + } + .order-lg-last { + -ms-flex-order: 13; + order: 13; + } + .order-lg-0 { + -ms-flex-order: 0; + order: 0; + } + .order-lg-1 { + -ms-flex-order: 1; + order: 1; + } + .order-lg-2 { + -ms-flex-order: 2; + order: 2; + } + .order-lg-3 { + -ms-flex-order: 3; + order: 3; + } + .order-lg-4 { + -ms-flex-order: 4; + order: 4; + } + .order-lg-5 { + -ms-flex-order: 5; + order: 5; + } + .order-lg-6 { + -ms-flex-order: 6; + order: 6; + } + .order-lg-7 { + -ms-flex-order: 7; + order: 7; + } + .order-lg-8 { + -ms-flex-order: 8; + order: 8; + } + .order-lg-9 { + -ms-flex-order: 9; + order: 9; + } + .order-lg-10 { + -ms-flex-order: 10; + order: 10; + } + .order-lg-11 { + -ms-flex-order: 11; + order: 11; + } + .order-lg-12 { + -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: 1280px) { + .col-xl { + -ms-flex-preferred-size: 0; + flex-basis: 0; + -ms-flex-positive: 1; + flex-grow: 1; + max-width: 100%; + } + .col-xl-auto { + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + max-width: 100%; + } + .col-xl-1 { + -ms-flex: 0 0 8.33333333%; + flex: 0 0 8.33333333%; + max-width: 8.33333333%; + } + .col-xl-2 { + -ms-flex: 0 0 16.66666667%; + flex: 0 0 16.66666667%; + max-width: 16.66666667%; + } + .col-xl-3 { + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; + } + .col-xl-4 { + -ms-flex: 0 0 33.33333333%; + flex: 0 0 33.33333333%; + max-width: 33.33333333%; + } + .col-xl-5 { + -ms-flex: 0 0 41.66666667%; + flex: 0 0 41.66666667%; + max-width: 41.66666667%; + } + .col-xl-6 { + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; + } + .col-xl-7 { + -ms-flex: 0 0 58.33333333%; + flex: 0 0 58.33333333%; + max-width: 58.33333333%; + } + .col-xl-8 { + -ms-flex: 0 0 66.66666667%; + flex: 0 0 66.66666667%; + max-width: 66.66666667%; + } + .col-xl-9 { + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75%; + } + .col-xl-10 { + -ms-flex: 0 0 83.33333333%; + flex: 0 0 83.33333333%; + max-width: 83.33333333%; + } + .col-xl-11 { + -ms-flex: 0 0 91.66666667%; + flex: 0 0 91.66666667%; + max-width: 91.66666667%; + } + .col-xl-12 { + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; + } + .order-xl-first { + -ms-flex-order: -1; + order: -1; + } + .order-xl-last { + -ms-flex-order: 13; + order: 13; + } + .order-xl-0 { + -ms-flex-order: 0; + order: 0; + } + .order-xl-1 { + -ms-flex-order: 1; + order: 1; + } + .order-xl-2 { + -ms-flex-order: 2; + order: 2; + } + .order-xl-3 { + -ms-flex-order: 3; + order: 3; + } + .order-xl-4 { + -ms-flex-order: 4; + order: 4; + } + .order-xl-5 { + -ms-flex-order: 5; + order: 5; + } + .order-xl-6 { + -ms-flex-order: 6; + order: 6; + } + .order-xl-7 { + -ms-flex-order: 7; + order: 7; + } + .order-xl-8 { + -ms-flex-order: 8; + order: 8; + } + .order-xl-9 { + -ms-flex-order: 9; + order: 9; + } + .order-xl-10 { + -ms-flex-order: 10; + order: 10; + } + .order-xl-11 { + -ms-flex-order: 11; + order: 11; + } + .order-xl-12 { + -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, .text-wrap table { + width: 100%; + margin-bottom: 1rem; + color: #495057; +} + +.table th, .text-wrap table th, +.table td, +.text-wrap table td { + padding: 0.75rem; + vertical-align: top; + border-top: 1px solid rgba(0, 40, 100, 0.12); +} + +.table thead th, .text-wrap table thead th { + vertical-align: bottom; + border-bottom: 2px solid rgba(0, 40, 100, 0.12); +} + +.table tbody + tbody, .text-wrap table tbody + tbody { + border-top: 2px solid rgba(0, 40, 100, 0.12); +} + +.table-sm th, +.table-sm td { + padding: 0.3rem; +} + +.table-bordered, .text-wrap table { + border: 1px solid rgba(0, 40, 100, 0.12); +} + +.table-bordered th, .text-wrap table th, +.table-bordered td, +.text-wrap table td { + border: 1px solid rgba(0, 40, 100, 0.12); +} + +.table-bordered thead th, .text-wrap table thead th, +.table-bordered thead td, +.text-wrap table thead td { + border-bottom-width: 2px; +} + +.table-borderless th, +.table-borderless td, +.table-borderless thead th, +.table-borderless tbody + tbody { + border: 0; +} + +.table-striped tbody tr:nth-of-type(odd) { + background-color: rgba(0, 0, 0, 0.02); +} + +.table-hover tbody tr:hover { + color: #495057; + background-color: rgba(0, 0, 0, 0.04); +} + +.table-primary, +.table-primary > th, +.table-primary > td { + background-color: #cbdbf2; +} + +.table-primary th, +.table-primary td, +.table-primary thead th, +.table-primary tbody + tbody { + border-color: #9fbce6; +} + +.table-hover .table-primary:hover { + background-color: #b7cded; +} + +.table-hover .table-primary:hover > td, +.table-hover .table-primary:hover > th { + background-color: #b7cded; +} + +.table-secondary, +.table-secondary > th, +.table-secondary > td { + background-color: #dddfe2; +} + +.table-secondary th, +.table-secondary td, +.table-secondary thead th, +.table-secondary tbody + tbody { + border-color: #c0c4c8; +} + +.table-hover .table-secondary:hover { + background-color: #cfd2d6; +} + +.table-hover .table-secondary:hover > td, +.table-hover .table-secondary:hover > th { + background-color: #cfd2d6; +} + +.table-success, +.table-success > th, +.table-success > td { + background-color: #d2ecb8; +} + +.table-success th, +.table-success td, +.table-success thead th, +.table-success tbody + tbody { + border-color: #abdb7a; +} + +.table-hover .table-success:hover { + background-color: #c5e7a4; +} + +.table-hover .table-success:hover > td, +.table-hover .table-success:hover > th { + background-color: #c5e7a4; +} + +.table-info, +.table-info > th, +.table-info > td { + background-color: #cbe7fb; +} + +.table-info th, +.table-info td, +.table-info thead th, +.table-info tbody + tbody { + border-color: #9ed3f8; +} + +.table-hover .table-info:hover { + background-color: #b3dcf9; +} + +.table-hover .table-info:hover > td, +.table-hover .table-info:hover > th { + background-color: #b3dcf9; +} + +.table-warning, +.table-warning > th, +.table-warning > td { + background-color: #fbeebc; +} + +.table-warning th, +.table-warning td, +.table-warning thead th, +.table-warning tbody + tbody { + border-color: #f8e082; +} + +.table-hover .table-warning:hover { + background-color: #fae8a4; +} + +.table-hover .table-warning:hover > td, +.table-hover .table-warning:hover > th { + background-color: #fae8a4; +} + +.table-danger, +.table-danger > th, +.table-danger > td { + background-color: #f1c1c0; +} + +.table-danger th, +.table-danger td, +.table-danger thead th, +.table-danger tbody + tbody { + border-color: #e58b8b; +} + +.table-hover .table-danger:hover { + background-color: #ecacab; +} + +.table-hover .table-danger:hover > td, +.table-hover .table-danger:hover > th { + background-color: #ecacab; +} + +.table-light, +.table-light > th, +.table-light > td { + background-color: #fdfdfe; +} + +.table-light th, +.table-light td, +.table-light thead th, +.table-light tbody + tbody { + border-color: #fbfcfc; +} + +.table-hover .table-light:hover { + background-color: #ececf6; +} + +.table-hover .table-light:hover > td, +.table-hover .table-light:hover > th { + background-color: #ececf6; +} + +.table-dark, +.table-dark > th, +.table-dark > td { + background-color: #c6c8ca; +} + +.table-dark th, +.table-dark td, +.table-dark thead th, +.table-dark tbody + tbody { + border-color: #95999c; +} + +.table-hover .table-dark:hover { + background-color: #b9bbbe; +} + +.table-hover .table-dark:hover > td, +.table-hover .table-dark:hover > th { + background-color: #b9bbbe; +} + +.table-active, +.table-active > th, +.table-active > td { + background-color: rgba(0, 0, 0, 0.04); +} + +.table-hover .table-active:hover { + background-color: rgba(0, 0, 0, 0.04); +} + +.table-hover .table-active:hover > td, +.table-hover .table-active:hover > th { + background-color: rgba(0, 0, 0, 0.04); +} + +.table .thead-dark th, .text-wrap table .thead-dark th { + color: #fff; + background-color: #343a40; + border-color: #454d55; +} + +.table .thead-light th, .text-wrap table .thead-light th { + color: #495057; + background-color: #e9ecef; + border-color: rgba(0, 40, 100, 0.12); +} + +.table-dark { + color: #fff; + background-color: #343a40; +} + +.table-dark th, +.table-dark td, +.table-dark thead th { + border-color: #454d55; +} + +.table-dark.table-bordered, .text-wrap table.table-dark { + border: 0; +} + +.table-dark.table-striped tbody tr:nth-of-type(odd) { + background-color: rgba(255, 255, 255, 0.05); +} + +.table-dark.table-hover tbody tr:hover { + color: #fff; + background-color: rgba(255, 255, 255, 0.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, .text-wrap .table-responsive-sm > table { + 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, .text-wrap .table-responsive-md > table { + 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, .text-wrap .table-responsive-lg > table { + border: 0; + } +} + +@media (max-width: 1279.98px) { + .table-responsive-xl { + display: block; + width: 100%; + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } + .table-responsive-xl > .table-bordered, .text-wrap .table-responsive-xl > table { + border: 0; + } +} + +.table-responsive { + display: block; + width: 100%; + overflow-x: auto; + -webkit-overflow-scrolling: touch; +} + +.table-responsive > .table-bordered, .text-wrap .table-responsive > table { + border: 0; +} + +.form-control, .dataTables_wrapper .dataTables_length select, .dataTables_wrapper .dataTables_filter input { + display: block; + width: 100%; + height: 2.375rem; + padding: 0.375rem 0.75rem; + font-size: 0.9375rem; + font-weight: 400; + line-height: 1.6; + color: #495057; + background-color: #fff; + background-clip: padding-box; + border: 1px solid rgba(0, 40, 100, 0.12); + border-radius: 3px; + transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} + +@media (prefers-reduced-motion: reduce) { + .form-control, .dataTables_wrapper .dataTables_length select, .dataTables_wrapper .dataTables_filter input { + transition: none; + } +} + +.form-control::-ms-expand, .dataTables_wrapper .dataTables_length select::-ms-expand, .dataTables_wrapper .dataTables_filter input::-ms-expand { + background-color: transparent; + border: 0; +} + +.form-control:focus, .dataTables_wrapper .dataTables_length select:focus, .dataTables_wrapper .dataTables_filter input:focus { + color: #495057; + background-color: #fff; + border-color: #1991eb; + outline: 0; + box-shadow: 0 0 0 2px rgba(70, 127, 207, 0.25); +} + +.form-control::-webkit-input-placeholder, .dataTables_wrapper .dataTables_length select::-webkit-input-placeholder, .dataTables_wrapper .dataTables_filter input::-webkit-input-placeholder { + color: #adb5bd; + opacity: 1; +} + +.form-control::-moz-placeholder, .dataTables_wrapper .dataTables_length select::-moz-placeholder, .dataTables_wrapper .dataTables_filter input::-moz-placeholder { + color: #adb5bd; + opacity: 1; +} + +.form-control::-ms-input-placeholder, .dataTables_wrapper .dataTables_length select::-ms-input-placeholder, .dataTables_wrapper .dataTables_filter input::-ms-input-placeholder { + color: #adb5bd; + opacity: 1; +} + +.form-control::placeholder, .dataTables_wrapper .dataTables_length select::placeholder, .dataTables_wrapper .dataTables_filter input::placeholder { + color: #adb5bd; + opacity: 1; +} + +.form-control:disabled, .dataTables_wrapper .dataTables_length select:disabled, .dataTables_wrapper .dataTables_filter input:disabled, .form-control[readonly], .dataTables_wrapper .dataTables_length select[readonly], .dataTables_wrapper .dataTables_filter input[readonly] { + background-color: #f8f9fa; + opacity: 1; +} + +select.form-control:focus::-ms-value, .dataTables_wrapper .dataTables_length select:focus::-ms-value { + color: #495057; + background-color: #fff; +} + +.form-control-file, +.form-control-range { + display: block; + width: 100%; +} + +.col-form-label { + padding-top: calc(0.375rem + 1px); + padding-bottom: calc(0.375rem + 1px); + margin-bottom: 0; + font-size: inherit; + line-height: 1.6; +} + +.col-form-label-lg { + padding-top: calc(0.5rem + 1px); + padding-bottom: calc(0.5rem + 1px); + font-size: 1.125rem; + line-height: 1.44444444; +} + +.col-form-label-sm { + padding-top: calc(0.25rem + 1px); + padding-bottom: calc(0.25rem + 1px); + font-size: 0.875rem; + line-height: 1.14285714; +} + +.form-control-plaintext { + display: block; + width: 100%; + padding-top: 0.375rem; + padding-bottom: 0.375rem; + margin-bottom: 0; + line-height: 1.6; + color: #495057; + background-color: transparent; + border: solid transparent; + border-width: 1px 0; +} + +.form-control-plaintext.form-control-sm, .form-control-plaintext.form-control-lg { + padding-right: 0; + padding-left: 0; +} + +.form-control-sm { + height: calc(1.14285714em + 0.5rem + 2px); + padding: 0.25rem 0.5rem; + font-size: 0.875rem; + line-height: 1.14285714; + border-radius: 3px; +} + +.form-control-lg { + height: calc(1.44444444em + 1rem + 2px); + padding: 0.5rem 1rem; + font-size: 1.125rem; + line-height: 1.44444444; + border-radius: 3px; +} + +select.form-control[size], .dataTables_wrapper .dataTables_length select[size], select.form-control[multiple], .dataTables_wrapper .dataTables_length select[multiple] { + height: auto; +} + +textarea.form-control { + height: auto; +} + +.form-group { + margin-bottom: 1rem; +} + +.form-text { + display: block; + margin-top: 0.25rem; +} + +.form-row { + 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: 0.3rem; + margin-left: -1.25rem; +} + +.form-check-input:disabled ~ .form-check-label { + color: #9aa0ac; +} + +.form-check-label { + margin-bottom: 0; +} + +.form-check-inline { + display: -ms-inline-flexbox; + display: inline-flex; + -ms-flex-align: center; + align-items: center; + padding-left: 0; + margin-right: 0.75rem; +} + +.form-check-inline .form-check-input { + position: static; + margin-top: 0; + margin-right: 0.3125rem; + margin-left: 0; +} + +.valid-feedback { + display: none; + width: 100%; + margin-top: 0.25rem; + font-size: 87.5%; + color: #5eba00; +} + +.valid-tooltip { + position: absolute; + top: 100%; + z-index: 5; + display: none; + max-width: 100%; + padding: 0.25rem 0.5rem; + margin-top: .1rem; + font-size: 0.875rem; + line-height: 1.5; + color: #fff; + background-color: rgba(94, 186, 0, 0.9); + border-radius: 3px; +} + +.was-validated .form-control:valid, .was-validated .dataTables_wrapper .dataTables_length select:valid, .dataTables_wrapper .dataTables_length .was-validated select:valid, .was-validated .dataTables_wrapper .dataTables_filter input:valid, .dataTables_wrapper .dataTables_filter .was-validated input:valid, .form-control.is-valid, .dataTables_wrapper .dataTables_length select.is-valid, .dataTables_wrapper .dataTables_filter input.is-valid { + border-color: #5eba00; + padding-right: calc(1.6em + 0.75rem); + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%235eba00' 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: center right calc(0.4em + 0.1875rem); + background-size: calc(0.8em + 0.375rem) calc(0.8em + 0.375rem); +} + +.was-validated .form-control:valid:focus, .was-validated .dataTables_wrapper .dataTables_length select:valid:focus, .dataTables_wrapper .dataTables_length .was-validated select:valid:focus, .was-validated .dataTables_wrapper .dataTables_filter input:valid:focus, .dataTables_wrapper .dataTables_filter .was-validated input:valid:focus, .form-control.is-valid:focus, .dataTables_wrapper .dataTables_length select.is-valid:focus, .dataTables_wrapper .dataTables_filter input.is-valid:focus { + border-color: #5eba00; + box-shadow: 0 0 0 2px rgba(94, 186, 0, 0.25); +} + +.was-validated .form-control:valid ~ .valid-feedback, .was-validated .dataTables_wrapper .dataTables_length select:valid ~ .valid-feedback, .dataTables_wrapper .dataTables_length .was-validated select:valid ~ .valid-feedback, .was-validated .dataTables_wrapper .dataTables_filter input:valid ~ .valid-feedback, .dataTables_wrapper .dataTables_filter .was-validated input:valid ~ .valid-feedback, +.was-validated .form-control:valid ~ .valid-tooltip, +.was-validated .dataTables_wrapper .dataTables_length select:valid ~ .valid-tooltip, +.dataTables_wrapper .dataTables_length .was-validated select:valid ~ .valid-tooltip, +.was-validated .dataTables_wrapper .dataTables_filter input:valid ~ .valid-tooltip, +.dataTables_wrapper .dataTables_filter .was-validated input:valid ~ .valid-tooltip, .form-control.is-valid ~ .valid-feedback, .dataTables_wrapper .dataTables_length select.is-valid ~ .valid-feedback, .dataTables_wrapper .dataTables_filter input.is-valid ~ .valid-feedback, +.form-control.is-valid ~ .valid-tooltip, +.dataTables_wrapper .dataTables_length select.is-valid ~ .valid-tooltip, +.dataTables_wrapper .dataTables_filter input.is-valid ~ .valid-tooltip { + display: block; +} + +.was-validated textarea.form-control:valid, textarea.form-control.is-valid { + padding-right: calc(1.6em + 0.75rem); + background-position: top calc(0.4em + 0.1875rem) right calc(0.4em + 0.1875rem); +} + +.was-validated .custom-select:valid, .was-validated .dataTables_wrapper .dataTables_length select:valid, .dataTables_wrapper .dataTables_length .was-validated select:valid, .custom-select.is-valid, .dataTables_wrapper .dataTables_length select.is-valid { + border-color: #5eba00; + padding-right: calc((1em + 1rem) * 3 / 4 + 1.75rem); + background: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 5'%3E%3Cpath fill='#999' d='M0 0L10 0L5 5L0 0'/%3E%3C/svg%3E") no-repeat right 0.75rem center/8px 10px, url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%235eba00' 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(0.8em + 0.375rem) calc(0.8em + 0.375rem); +} + +.was-validated .custom-select:valid:focus, .was-validated .dataTables_wrapper .dataTables_length select:valid:focus, .dataTables_wrapper .dataTables_length .was-validated select:valid:focus, .custom-select.is-valid:focus, .dataTables_wrapper .dataTables_length select.is-valid:focus { + border-color: #5eba00; + box-shadow: 0 0 0 2px rgba(94, 186, 0, 0.25); +} + +.was-validated .custom-select:valid ~ .valid-feedback, .was-validated .dataTables_wrapper .dataTables_length select:valid ~ .valid-feedback, .dataTables_wrapper .dataTables_length .was-validated select:valid ~ .valid-feedback, +.was-validated .custom-select:valid ~ .valid-tooltip, +.was-validated .dataTables_wrapper .dataTables_length select:valid ~ .valid-tooltip, +.dataTables_wrapper .dataTables_length .was-validated select:valid ~ .valid-tooltip, .custom-select.is-valid ~ .valid-feedback, .dataTables_wrapper .dataTables_length select.is-valid ~ .valid-feedback, +.custom-select.is-valid ~ .valid-tooltip, +.dataTables_wrapper .dataTables_length select.is-valid ~ .valid-tooltip { + display: block; +} + +.was-validated .form-control-file:valid ~ .valid-feedback, +.was-validated .form-control-file:valid ~ .valid-tooltip, .form-control-file.is-valid ~ .valid-feedback, +.form-control-file.is-valid ~ .valid-tooltip { + display: block; +} + +.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label { + color: #5eba00; +} + +.was-validated .form-check-input:valid ~ .valid-feedback, +.was-validated .form-check-input:valid ~ .valid-tooltip, .form-check-input.is-valid ~ .valid-feedback, +.form-check-input.is-valid ~ .valid-tooltip { + display: block; +} + +.was-validated .custom-control-input:valid ~ .custom-control-label, .custom-control-input.is-valid ~ .custom-control-label { + color: #5eba00; +} + +.was-validated .custom-control-input:valid ~ .custom-control-label::before, .custom-control-input.is-valid ~ .custom-control-label::before { + border-color: #5eba00; +} + +.was-validated .custom-control-input:valid ~ .valid-feedback, +.was-validated .custom-control-input:valid ~ .valid-tooltip, .custom-control-input.is-valid ~ .valid-feedback, +.custom-control-input.is-valid ~ .valid-tooltip { + display: block; +} + +.was-validated .custom-control-input:valid:checked ~ .custom-control-label::before, .custom-control-input.is-valid:checked ~ .custom-control-label::before { + border-color: #78ed00; + background-color: #78ed00; +} + +.was-validated .custom-control-input:valid:focus ~ .custom-control-label::before, .custom-control-input.is-valid:focus ~ .custom-control-label::before { + box-shadow: 0 0 0 2px rgba(94, 186, 0, 0.25); +} + +.was-validated .custom-control-input:valid:focus:not(:checked) ~ .custom-control-label::before, .custom-control-input.is-valid:focus:not(:checked) ~ .custom-control-label::before { + border-color: #5eba00; +} + +.was-validated .custom-file-input:valid ~ .custom-file-label, .custom-file-input.is-valid ~ .custom-file-label { + border-color: #5eba00; +} + +.was-validated .custom-file-input:valid ~ .valid-feedback, +.was-validated .custom-file-input:valid ~ .valid-tooltip, .custom-file-input.is-valid ~ .valid-feedback, +.custom-file-input.is-valid ~ .valid-tooltip { + display: block; +} + +.was-validated .custom-file-input:valid:focus ~ .custom-file-label, .custom-file-input.is-valid:focus ~ .custom-file-label { + border-color: #5eba00; + box-shadow: 0 0 0 2px rgba(94, 186, 0, 0.25); +} + +.invalid-feedback { + display: none; + width: 100%; + margin-top: 0.25rem; + font-size: 87.5%; + color: #cd201f; +} + +.invalid-tooltip { + position: absolute; + top: 100%; + z-index: 5; + display: none; + max-width: 100%; + padding: 0.25rem 0.5rem; + margin-top: .1rem; + font-size: 0.875rem; + line-height: 1.5; + color: #fff; + background-color: rgba(205, 32, 31, 0.9); + border-radius: 3px; +} + +.was-validated .form-control:invalid, .was-validated .dataTables_wrapper .dataTables_length select:invalid, .dataTables_wrapper .dataTables_length .was-validated select:invalid, .was-validated .dataTables_wrapper .dataTables_filter input:invalid, .dataTables_wrapper .dataTables_filter .was-validated input:invalid, .form-control.is-invalid, .dataTables_wrapper .dataTables_length select.is-invalid, .dataTables_wrapper .dataTables_filter input.is-invalid { + border-color: #cd201f; + padding-right: calc(1.6em + 0.75rem); + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23cd201f' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23cd201f' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E"); + background-repeat: no-repeat; + background-position: center right calc(0.4em + 0.1875rem); + background-size: calc(0.8em + 0.375rem) calc(0.8em + 0.375rem); +} + +.was-validated .form-control:invalid:focus, .was-validated .dataTables_wrapper .dataTables_length select:invalid:focus, .dataTables_wrapper .dataTables_length .was-validated select:invalid:focus, .was-validated .dataTables_wrapper .dataTables_filter input:invalid:focus, .dataTables_wrapper .dataTables_filter .was-validated input:invalid:focus, .form-control.is-invalid:focus, .dataTables_wrapper .dataTables_length select.is-invalid:focus, .dataTables_wrapper .dataTables_filter input.is-invalid:focus { + border-color: #cd201f; + box-shadow: 0 0 0 2px rgba(205, 32, 31, 0.25); +} + +.was-validated .form-control:invalid ~ .invalid-feedback, .was-validated .dataTables_wrapper .dataTables_length select:invalid ~ .invalid-feedback, .dataTables_wrapper .dataTables_length .was-validated select:invalid ~ .invalid-feedback, .was-validated .dataTables_wrapper .dataTables_filter input:invalid ~ .invalid-feedback, .dataTables_wrapper .dataTables_filter .was-validated input:invalid ~ .invalid-feedback, +.was-validated .form-control:invalid ~ .invalid-tooltip, +.was-validated .dataTables_wrapper .dataTables_length select:invalid ~ .invalid-tooltip, +.dataTables_wrapper .dataTables_length .was-validated select:invalid ~ .invalid-tooltip, +.was-validated .dataTables_wrapper .dataTables_filter input:invalid ~ .invalid-tooltip, +.dataTables_wrapper .dataTables_filter .was-validated input:invalid ~ .invalid-tooltip, .form-control.is-invalid ~ .invalid-feedback, .dataTables_wrapper .dataTables_length select.is-invalid ~ .invalid-feedback, .dataTables_wrapper .dataTables_filter input.is-invalid ~ .invalid-feedback, +.form-control.is-invalid ~ .invalid-tooltip, +.dataTables_wrapper .dataTables_length select.is-invalid ~ .invalid-tooltip, +.dataTables_wrapper .dataTables_filter input.is-invalid ~ .invalid-tooltip { + display: block; +} + +.was-validated textarea.form-control:invalid, textarea.form-control.is-invalid { + padding-right: calc(1.6em + 0.75rem); + background-position: top calc(0.4em + 0.1875rem) right calc(0.4em + 0.1875rem); +} + +.was-validated .custom-select:invalid, .was-validated .dataTables_wrapper .dataTables_length select:invalid, .dataTables_wrapper .dataTables_length .was-validated select:invalid, .custom-select.is-invalid, .dataTables_wrapper .dataTables_length select.is-invalid { + border-color: #cd201f; + padding-right: calc((1em + 1rem) * 3 / 4 + 1.75rem); + background: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 5'%3E%3Cpath fill='#999' d='M0 0L10 0L5 5L0 0'/%3E%3C/svg%3E") no-repeat right 0.75rem center/8px 10px, url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23cd201f' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23cd201f' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E") #fff no-repeat center right 1.75rem/calc(0.8em + 0.375rem) calc(0.8em + 0.375rem); +} + +.was-validated .custom-select:invalid:focus, .was-validated .dataTables_wrapper .dataTables_length select:invalid:focus, .dataTables_wrapper .dataTables_length .was-validated select:invalid:focus, .custom-select.is-invalid:focus, .dataTables_wrapper .dataTables_length select.is-invalid:focus { + border-color: #cd201f; + box-shadow: 0 0 0 2px rgba(205, 32, 31, 0.25); +} + +.was-validated .custom-select:invalid ~ .invalid-feedback, .was-validated .dataTables_wrapper .dataTables_length select:invalid ~ .invalid-feedback, .dataTables_wrapper .dataTables_length .was-validated select:invalid ~ .invalid-feedback, +.was-validated .custom-select:invalid ~ .invalid-tooltip, +.was-validated .dataTables_wrapper .dataTables_length select:invalid ~ .invalid-tooltip, +.dataTables_wrapper .dataTables_length .was-validated select:invalid ~ .invalid-tooltip, .custom-select.is-invalid ~ .invalid-feedback, .dataTables_wrapper .dataTables_length select.is-invalid ~ .invalid-feedback, +.custom-select.is-invalid ~ .invalid-tooltip, +.dataTables_wrapper .dataTables_length select.is-invalid ~ .invalid-tooltip { + display: block; +} + +.was-validated .form-control-file:invalid ~ .invalid-feedback, +.was-validated .form-control-file:invalid ~ .invalid-tooltip, .form-control-file.is-invalid ~ .invalid-feedback, +.form-control-file.is-invalid ~ .invalid-tooltip { + display: block; +} + +.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label { + color: #cd201f; +} + +.was-validated .form-check-input:invalid ~ .invalid-feedback, +.was-validated .form-check-input:invalid ~ .invalid-tooltip, .form-check-input.is-invalid ~ .invalid-feedback, +.form-check-input.is-invalid ~ .invalid-tooltip { + display: block; +} + +.was-validated .custom-control-input:invalid ~ .custom-control-label, .custom-control-input.is-invalid ~ .custom-control-label { + color: #cd201f; +} + +.was-validated .custom-control-input:invalid ~ .custom-control-label::before, .custom-control-input.is-invalid ~ .custom-control-label::before { + border-color: #cd201f; +} + +.was-validated .custom-control-input:invalid ~ .invalid-feedback, +.was-validated .custom-control-input:invalid ~ .invalid-tooltip, .custom-control-input.is-invalid ~ .invalid-feedback, +.custom-control-input.is-invalid ~ .invalid-tooltip { + display: block; +} + +.was-validated .custom-control-input:invalid:checked ~ .custom-control-label::before, .custom-control-input.is-invalid:checked ~ .custom-control-label::before { + border-color: #e23e3d; + background-color: #e23e3d; +} + +.was-validated .custom-control-input:invalid:focus ~ .custom-control-label::before, .custom-control-input.is-invalid:focus ~ .custom-control-label::before { + box-shadow: 0 0 0 2px rgba(205, 32, 31, 0.25); +} + +.was-validated .custom-control-input:invalid:focus:not(:checked) ~ .custom-control-label::before, .custom-control-input.is-invalid:focus:not(:checked) ~ .custom-control-label::before { + border-color: #cd201f; +} + +.was-validated .custom-file-input:invalid ~ .custom-file-label, .custom-file-input.is-invalid ~ .custom-file-label { + border-color: #cd201f; +} + +.was-validated .custom-file-input:invalid ~ .invalid-feedback, +.was-validated .custom-file-input:invalid ~ .invalid-tooltip, .custom-file-input.is-invalid ~ .invalid-feedback, +.custom-file-input.is-invalid ~ .invalid-tooltip { + display: block; +} + +.was-validated .custom-file-input:invalid:focus ~ .custom-file-label, .custom-file-input.is-invalid:focus ~ .custom-file-label { + border-color: #cd201f; + box-shadow: 0 0 0 2px rgba(205, 32, 31, 0.25); +} + +.form-inline { + display: -ms-flexbox; + display: flex; + -ms-flex-flow: row wrap; + flex-flow: row wrap; + -ms-flex-align: center; + align-items: center; +} + +.form-inline .form-check { + width: 100%; +} + +@media (min-width: 576px) { + .form-inline label { + display: -ms-flexbox; + display: flex; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: center; + justify-content: center; + margin-bottom: 0; + } + .form-inline .form-group { + display: -ms-flexbox; + display: flex; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + -ms-flex-flow: row wrap; + flex-flow: row wrap; + -ms-flex-align: center; + align-items: center; + margin-bottom: 0; + } + .form-inline .form-control, .form-inline .dataTables_wrapper .dataTables_length select, .dataTables_wrapper .dataTables_length .form-inline select, .form-inline .dataTables_wrapper .dataTables_filter input, .dataTables_wrapper .dataTables_filter .form-inline input { + display: inline-block; + width: auto; + vertical-align: middle; + } + .form-inline .form-control-plaintext { + display: inline-block; + } + .form-inline .input-group, + .form-inline .custom-select, + .form-inline .dataTables_wrapper .dataTables_length select, + .dataTables_wrapper .dataTables_length .form-inline select { + width: auto; + } + .form-inline .form-check { + display: -ms-flexbox; + display: flex; + -ms-flex-align: center; + align-items: 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: 0.25rem; + margin-left: 0; + } + .form-inline .custom-control { + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: center; + justify-content: center; + } + .form-inline .custom-control-label { + margin-bottom: 0; + } +} + +.btn, .dataTables_wrapper .dataTables_paginate .paginate_button, .dataTables_wrapper .dataTables_paginate .paginate_button.current { + display: inline-block; + font-weight: 400; + color: #495057; + text-align: center; + vertical-align: middle; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + background-color: transparent; + border: 1px solid transparent; + padding: 0.375rem 0.75rem; + font-size: 0.9375rem; + line-height: 1.84615385; + border-radius: 3px; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} + +@media (prefers-reduced-motion: reduce) { + .btn, .dataTables_wrapper .dataTables_paginate .paginate_button, .dataTables_wrapper .dataTables_paginate .paginate_button.current { + transition: none; + } +} + +.btn:hover, .dataTables_wrapper .dataTables_paginate .paginate_button:hover { + color: #495057; + text-decoration: none; +} + +.btn:focus, .dataTables_wrapper .dataTables_paginate .paginate_button:focus, .btn.focus, .dataTables_wrapper .dataTables_paginate .focus.paginate_button { + outline: 0; + box-shadow: 0 0 0 2px rgba(70, 127, 207, 0.25); +} + +.btn.disabled, .dataTables_wrapper .dataTables_paginate .disabled.paginate_button, .btn:disabled, .dataTables_wrapper .dataTables_paginate .paginate_button:disabled { + opacity: 0.65; +} + +a.btn.disabled, .dataTables_wrapper .dataTables_paginate a.disabled.paginate_button, +fieldset:disabled a.btn, +fieldset:disabled .dataTables_wrapper .dataTables_paginate a.paginate_button, +.dataTables_wrapper .dataTables_paginate fieldset:disabled a.paginate_button { + pointer-events: none; +} + +.btn-primary, .dataTables_wrapper .dataTables_paginate .paginate_button.current { + color: #fff; + background-color: #467fcf; + border-color: #467fcf; +} + +.btn-primary:hover, .dataTables_wrapper .dataTables_paginate .paginate_button.current:hover { + color: #fff; + background-color: #316cbe; + border-color: #2f66b3; +} + +.btn-primary:focus, .dataTables_wrapper .dataTables_paginate .paginate_button.current:focus, .btn-primary.focus, .dataTables_wrapper .dataTables_paginate .focus.paginate_button.current { + box-shadow: 0 0 0 2px rgba(98, 146, 214, 0.5); +} + +.btn-primary.disabled, .dataTables_wrapper .dataTables_paginate .disabled.paginate_button.current, .btn-primary:disabled, .dataTables_wrapper .dataTables_paginate .paginate_button.current:disabled { + color: #fff; + background-color: #467fcf; + border-color: #467fcf; +} + +.btn-primary:not(:disabled):not(.disabled):active, .dataTables_wrapper .dataTables_paginate .paginate_button.current:not(:disabled):not(.disabled):active, .btn-primary:not(:disabled):not(.disabled).active, .dataTables_wrapper .dataTables_paginate .paginate_button.current:not(:disabled):not(.disabled).active, +.show > .btn-primary.dropdown-toggle, +.dataTables_wrapper .dataTables_paginate .show > .dropdown-toggle.paginate_button.current { + color: #fff; + background-color: #2f66b3; + border-color: #2c60a9; +} + +.btn-primary:not(:disabled):not(.disabled):active:focus, .dataTables_wrapper .dataTables_paginate .paginate_button.current:not(:disabled):not(.disabled):active:focus, .btn-primary:not(:disabled):not(.disabled).active:focus, .dataTables_wrapper .dataTables_paginate .paginate_button.current:not(:disabled):not(.disabled).active:focus, +.show > .btn-primary.dropdown-toggle:focus, +.dataTables_wrapper .dataTables_paginate .show > .dropdown-toggle.paginate_button.current:focus { + box-shadow: 0 0 0 2px rgba(98, 146, 214, 0.5); +} + +.btn-secondary, .dataTables_wrapper .dataTables_paginate .paginate_button { + color: #fff; + background-color: #868e96; + border-color: #868e96; +} + +.btn-secondary:hover, .dataTables_wrapper .dataTables_paginate .paginate_button:hover { + color: #fff; + background-color: #727b84; + border-color: #6c757d; +} + +.btn-secondary:focus, .dataTables_wrapper .dataTables_paginate .paginate_button:focus, .btn-secondary.focus, .dataTables_wrapper .dataTables_paginate .focus.paginate_button { + box-shadow: 0 0 0 2px rgba(152, 159, 166, 0.5); +} + +.btn-secondary.disabled, .dataTables_wrapper .dataTables_paginate .disabled.paginate_button, .btn-secondary:disabled, .dataTables_wrapper .dataTables_paginate .paginate_button:disabled { + color: #fff; + background-color: #868e96; + border-color: #868e96; +} + +.btn-secondary:not(:disabled):not(.disabled):active, .dataTables_wrapper .dataTables_paginate .paginate_button:not(:disabled):not(.disabled):active, .btn-secondary:not(:disabled):not(.disabled).active, .dataTables_wrapper .dataTables_paginate .paginate_button:not(:disabled):not(.disabled).active, +.show > .btn-secondary.dropdown-toggle, +.dataTables_wrapper .dataTables_paginate .show > .dropdown-toggle.paginate_button { + color: #fff; + background-color: #6c757d; + border-color: #666e76; +} + +.btn-secondary:not(:disabled):not(.disabled):active:focus, .dataTables_wrapper .dataTables_paginate .paginate_button:not(:disabled):not(.disabled):active:focus, .btn-secondary:not(:disabled):not(.disabled).active:focus, .dataTables_wrapper .dataTables_paginate .paginate_button:not(:disabled):not(.disabled).active:focus, +.show > .btn-secondary.dropdown-toggle:focus, +.dataTables_wrapper .dataTables_paginate .show > .dropdown-toggle.paginate_button:focus { + box-shadow: 0 0 0 2px rgba(152, 159, 166, 0.5); +} + +.btn-success { + color: #fff; + background-color: #5eba00; + border-color: #5eba00; +} + +.btn-success:hover { + color: #fff; + background-color: #4b9400; + border-color: #448700; +} + +.btn-success:focus, .btn-success.focus { + box-shadow: 0 0 0 2px rgba(118, 196, 38, 0.5); +} + +.btn-success.disabled, .btn-success:disabled { + color: #fff; + background-color: #5eba00; + border-color: #5eba00; +} + +.btn-success:not(:disabled):not(.disabled):active, .btn-success:not(:disabled):not(.disabled).active, +.show > .btn-success.dropdown-toggle { + color: #fff; + background-color: #448700; + border-color: #3e7a00; +} + +.btn-success:not(:disabled):not(.disabled):active:focus, .btn-success:not(:disabled):not(.disabled).active:focus, +.show > .btn-success.dropdown-toggle:focus { + box-shadow: 0 0 0 2px rgba(118, 196, 38, 0.5); +} + +.btn-info { + color: #fff; + background-color: #45aaf2; + border-color: #45aaf2; +} + +.btn-info:hover { + color: #fff; + background-color: #219af0; + border-color: #1594ef; +} + +.btn-info:focus, .btn-info.focus { + box-shadow: 0 0 0 2px rgba(97, 183, 244, 0.5); +} + +.btn-info.disabled, .btn-info:disabled { + color: #fff; + background-color: #45aaf2; + border-color: #45aaf2; +} + +.btn-info:not(:disabled):not(.disabled):active, .btn-info:not(:disabled):not(.disabled).active, +.show > .btn-info.dropdown-toggle { + color: #fff; + background-color: #1594ef; + border-color: #108ee7; +} + +.btn-info:not(:disabled):not(.disabled):active:focus, .btn-info:not(:disabled):not(.disabled).active:focus, +.show > .btn-info.dropdown-toggle:focus { + box-shadow: 0 0 0 2px rgba(97, 183, 244, 0.5); +} + +.btn-warning { + color: #fff; + background-color: #f1c40f; + border-color: #f1c40f; +} + +.btn-warning:hover { + color: #fff; + background-color: #cea70c; + border-color: #c29d0b; +} + +.btn-warning:focus, .btn-warning.focus { + box-shadow: 0 0 0 2px rgba(243, 205, 51, 0.5); +} + +.btn-warning.disabled, .btn-warning:disabled { + color: #fff; + background-color: #f1c40f; + border-color: #f1c40f; +} + +.btn-warning:not(:disabled):not(.disabled):active, .btn-warning:not(:disabled):not(.disabled).active, +.show > .btn-warning.dropdown-toggle { + color: #fff; + background-color: #c29d0b; + border-color: #b6940b; +} + +.btn-warning:not(:disabled):not(.disabled):active:focus, .btn-warning:not(:disabled):not(.disabled).active:focus, +.show > .btn-warning.dropdown-toggle:focus { + box-shadow: 0 0 0 2px rgba(243, 205, 51, 0.5); +} + +.btn-danger { + color: #fff; + background-color: #cd201f; + border-color: #cd201f; +} + +.btn-danger:hover { + color: #fff; + background-color: #ac1b1a; + border-color: #a11918; +} + +.btn-danger:focus, .btn-danger.focus { + box-shadow: 0 0 0 2px rgba(213, 65, 65, 0.5); +} + +.btn-danger.disabled, .btn-danger:disabled { + color: #fff; + background-color: #cd201f; + border-color: #cd201f; +} + +.btn-danger:not(:disabled):not(.disabled):active, .btn-danger:not(:disabled):not(.disabled).active, +.show > .btn-danger.dropdown-toggle { + color: #fff; + background-color: #a11918; + border-color: #961717; +} + +.btn-danger:not(:disabled):not(.disabled):active:focus, .btn-danger:not(:disabled):not(.disabled).active:focus, +.show > .btn-danger.dropdown-toggle:focus { + box-shadow: 0 0 0 2px rgba(213, 65, 65, 0.5); +} + +.btn-light { + color: #495057; + background-color: #f8f9fa; + border-color: #f8f9fa; +} + +.btn-light:hover { + color: #495057; + background-color: #e2e6ea; + border-color: #dae0e5; +} + +.btn-light:focus, .btn-light.focus { + box-shadow: 0 0 0 2px rgba(222, 224, 226, 0.5); +} + +.btn-light.disabled, .btn-light:disabled { + color: #495057; + background-color: #f8f9fa; + border-color: #f8f9fa; +} + +.btn-light:not(:disabled):not(.disabled):active, .btn-light:not(:disabled):not(.disabled).active, +.show > .btn-light.dropdown-toggle { + color: #495057; + background-color: #dae0e5; + border-color: #d3d9df; +} + +.btn-light:not(:disabled):not(.disabled):active:focus, .btn-light:not(:disabled):not(.disabled).active:focus, +.show > .btn-light.dropdown-toggle:focus { + box-shadow: 0 0 0 2px rgba(222, 224, 226, 0.5); +} + +.btn-dark { + color: #fff; + background-color: #343a40; + border-color: #343a40; +} + +.btn-dark:hover { + color: #fff; + background-color: #23272b; + border-color: #1d2124; +} + +.btn-dark:focus, .btn-dark.focus { + box-shadow: 0 0 0 2px rgba(82, 88, 93, 0.5); +} + +.btn-dark.disabled, .btn-dark:disabled { + color: #fff; + background-color: #343a40; + border-color: #343a40; +} + +.btn-dark:not(:disabled):not(.disabled):active, .btn-dark:not(:disabled):not(.disabled).active, +.show > .btn-dark.dropdown-toggle { + color: #fff; + background-color: #1d2124; + border-color: #171a1d; +} + +.btn-dark:not(:disabled):not(.disabled):active:focus, .btn-dark:not(:disabled):not(.disabled).active:focus, +.show > .btn-dark.dropdown-toggle:focus { + box-shadow: 0 0 0 2px rgba(82, 88, 93, 0.5); +} + +.btn-outline-primary { + color: #467fcf; + border-color: #467fcf; +} + +.btn-outline-primary:hover { + color: #fff; + background-color: #467fcf; + border-color: #467fcf; +} + +.btn-outline-primary:focus, .btn-outline-primary.focus { + box-shadow: 0 0 0 2px rgba(70, 127, 207, 0.5); +} + +.btn-outline-primary.disabled, .btn-outline-primary:disabled { + color: #467fcf; + 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: #467fcf; + border-color: #467fcf; +} + +.btn-outline-primary:not(:disabled):not(.disabled):active:focus, .btn-outline-primary:not(:disabled):not(.disabled).active:focus, +.show > .btn-outline-primary.dropdown-toggle:focus { + box-shadow: 0 0 0 2px rgba(70, 127, 207, 0.5); +} + +.btn-outline-secondary { + color: #868e96; + border-color: #868e96; +} + +.btn-outline-secondary:hover { + color: #fff; + background-color: #868e96; + border-color: #868e96; +} + +.btn-outline-secondary:focus, .btn-outline-secondary.focus { + box-shadow: 0 0 0 2px rgba(134, 142, 150, 0.5); +} + +.btn-outline-secondary.disabled, .btn-outline-secondary:disabled { + color: #868e96; + 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: #868e96; + border-color: #868e96; +} + +.btn-outline-secondary:not(:disabled):not(.disabled):active:focus, .btn-outline-secondary:not(:disabled):not(.disabled).active:focus, +.show > .btn-outline-secondary.dropdown-toggle:focus { + box-shadow: 0 0 0 2px rgba(134, 142, 150, 0.5); +} + +.btn-outline-success { + color: #5eba00; + border-color: #5eba00; +} + +.btn-outline-success:hover { + color: #fff; + background-color: #5eba00; + border-color: #5eba00; +} + +.btn-outline-success:focus, .btn-outline-success.focus { + box-shadow: 0 0 0 2px rgba(94, 186, 0, 0.5); +} + +.btn-outline-success.disabled, .btn-outline-success:disabled { + color: #5eba00; + 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: #5eba00; + border-color: #5eba00; +} + +.btn-outline-success:not(:disabled):not(.disabled):active:focus, .btn-outline-success:not(:disabled):not(.disabled).active:focus, +.show > .btn-outline-success.dropdown-toggle:focus { + box-shadow: 0 0 0 2px rgba(94, 186, 0, 0.5); +} + +.btn-outline-info { + color: #45aaf2; + border-color: #45aaf2; +} + +.btn-outline-info:hover { + color: #fff; + background-color: #45aaf2; + border-color: #45aaf2; +} + +.btn-outline-info:focus, .btn-outline-info.focus { + box-shadow: 0 0 0 2px rgba(69, 170, 242, 0.5); +} + +.btn-outline-info.disabled, .btn-outline-info:disabled { + color: #45aaf2; + 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: #45aaf2; + border-color: #45aaf2; +} + +.btn-outline-info:not(:disabled):not(.disabled):active:focus, .btn-outline-info:not(:disabled):not(.disabled).active:focus, +.show > .btn-outline-info.dropdown-toggle:focus { + box-shadow: 0 0 0 2px rgba(69, 170, 242, 0.5); +} + +.btn-outline-warning { + color: #f1c40f; + border-color: #f1c40f; +} + +.btn-outline-warning:hover { + color: #fff; + background-color: #f1c40f; + border-color: #f1c40f; +} + +.btn-outline-warning:focus, .btn-outline-warning.focus { + box-shadow: 0 0 0 2px rgba(241, 196, 15, 0.5); +} + +.btn-outline-warning.disabled, .btn-outline-warning:disabled { + color: #f1c40f; + 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: #fff; + background-color: #f1c40f; + border-color: #f1c40f; +} + +.btn-outline-warning:not(:disabled):not(.disabled):active:focus, .btn-outline-warning:not(:disabled):not(.disabled).active:focus, +.show > .btn-outline-warning.dropdown-toggle:focus { + box-shadow: 0 0 0 2px rgba(241, 196, 15, 0.5); +} + +.btn-outline-danger { + color: #cd201f; + border-color: #cd201f; +} + +.btn-outline-danger:hover { + color: #fff; + background-color: #cd201f; + border-color: #cd201f; +} + +.btn-outline-danger:focus, .btn-outline-danger.focus { + box-shadow: 0 0 0 2px rgba(205, 32, 31, 0.5); +} + +.btn-outline-danger.disabled, .btn-outline-danger:disabled { + color: #cd201f; + 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: #cd201f; + border-color: #cd201f; +} + +.btn-outline-danger:not(:disabled):not(.disabled):active:focus, .btn-outline-danger:not(:disabled):not(.disabled).active:focus, +.show > .btn-outline-danger.dropdown-toggle:focus { + box-shadow: 0 0 0 2px rgba(205, 32, 31, 0.5); +} + +.btn-outline-light { + color: #f8f9fa; + border-color: #f8f9fa; +} + +.btn-outline-light:hover { + color: #495057; + background-color: #f8f9fa; + border-color: #f8f9fa; +} + +.btn-outline-light:focus, .btn-outline-light.focus { + box-shadow: 0 0 0 2px rgba(248, 249, 250, 0.5); +} + +.btn-outline-light.disabled, .btn-outline-light:disabled { + color: #f8f9fa; + 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: #495057; + background-color: #f8f9fa; + border-color: #f8f9fa; +} + +.btn-outline-light:not(:disabled):not(.disabled):active:focus, .btn-outline-light:not(:disabled):not(.disabled).active:focus, +.show > .btn-outline-light.dropdown-toggle:focus { + box-shadow: 0 0 0 2px rgba(248, 249, 250, 0.5); +} + +.btn-outline-dark { + color: #343a40; + border-color: #343a40; +} + +.btn-outline-dark:hover { + color: #fff; + background-color: #343a40; + border-color: #343a40; +} + +.btn-outline-dark:focus, .btn-outline-dark.focus { + box-shadow: 0 0 0 2px rgba(52, 58, 64, 0.5); +} + +.btn-outline-dark.disabled, .btn-outline-dark:disabled { + color: #343a40; + 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: #343a40; + border-color: #343a40; +} + +.btn-outline-dark:not(:disabled):not(.disabled):active:focus, .btn-outline-dark:not(:disabled):not(.disabled).active:focus, +.show > .btn-outline-dark.dropdown-toggle:focus { + box-shadow: 0 0 0 2px rgba(52, 58, 64, 0.5); +} + +.btn-link { + font-weight: 400; + color: #467fcf; + text-decoration: none; +} + +.btn-link:hover { + color: #295a9f; + text-decoration: underline; +} + +.btn-link:focus, .btn-link.focus { + text-decoration: underline; + box-shadow: none; +} + +.btn-link:disabled, .btn-link.disabled { + color: #868e96; + pointer-events: none; +} + +.btn-lg, .btn-group-lg > .btn, .dataTables_wrapper .dataTables_paginate .btn-group-lg > .paginate_button { + padding: 0.5rem 1rem; + font-size: 1.125rem; + line-height: 1.625; + border-radius: 3px; +} + +.btn-sm, .btn-group-sm > .btn, .dataTables_wrapper .dataTables_paginate .btn-group-sm > .paginate_button { + padding: 0.25rem 0.5rem; + font-size: 0.875rem; + line-height: 1.33333333; + border-radius: 3px; +} + +.btn-block { + display: block; + width: 100%; +} + +.btn-block + .btn-block { + margin-top: 0.5rem; +} + +input[type="submit"].btn-block, +input[type="reset"].btn-block, +input[type="button"].btn-block { + width: 100%; +} + +.fade { + transition: opacity 0.15s linear; +} + +@media (prefers-reduced-motion: reduce) { + .fade { + transition: none; + } +} + +.fade:not(.show) { + opacity: 0; +} + +.collapse:not(.show) { + display: none; +} + +.collapsing { + position: relative; + height: 0; + overflow: hidden; + transition: height 0.35s ease; +} + +@media (prefers-reduced-motion: reduce) { + .collapsing { + transition: none; + } +} + +.dropup, +.dropright, +.dropdown, +.dropleft { + position: relative; +} + +.dropdown-toggle { + white-space: nowrap; +} + +.dropdown-toggle::after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0.3em solid; + border-right: 0.3em solid transparent; + border-bottom: 0; + border-left: 0.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: 0.5rem 0; + margin: 0.125rem 0 0; + font-size: 0.9375rem; + color: #495057; + text-align: left; + list-style: none; + background-color: #fff; + background-clip: padding-box; + border: 1px solid rgba(0, 40, 100, 0.12); + border-radius: 3px; +} + +.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: 1280px) { + .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: 0.125rem; +} + +.dropup .dropdown-toggle::after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0; + border-right: 0.3em solid transparent; + border-bottom: 0.3em solid; + border-left: 0.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: 0.125rem; +} + +.dropright .dropdown-toggle::after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0.3em solid transparent; + border-right: 0; + border-bottom: 0.3em solid transparent; + border-left: 0.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: 0.125rem; +} + +.dropleft .dropdown-toggle::after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; +} + +.dropleft .dropdown-toggle::after { + display: none; +} + +.dropleft .dropdown-toggle::before { + display: inline-block; + margin-right: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0.3em solid transparent; + border-right: 0.3em solid; + border-bottom: 0.3em solid transparent; +} + +.dropleft .dropdown-toggle:empty::after { + margin-left: 0; +} + +.dropleft .dropdown-toggle::before { + vertical-align: 0; +} + +.dropdown-menu[x-placement^="top"], .dropdown-menu[x-placement^="right"], .dropdown-menu[x-placement^="bottom"], .dropdown-menu[x-placement^="left"] { + right: auto; + bottom: auto; +} + +.dropdown-divider { + height: 0; + margin: 0.5rem 0; + overflow: hidden; + border-top: 1px solid #e9ecef; +} + +.dropdown-item { + display: block; + width: 100%; + padding: 0.25rem 1.5rem; + clear: both; + font-weight: 400; + color: #212529; + text-align: inherit; + white-space: nowrap; + background-color: transparent; + border: 0; +} + +.dropdown-item:hover, .dropdown-item:focus { + color: #16181b; + text-decoration: none; + background-color: #f8f9fa; +} + +.dropdown-item.active, .dropdown-item:active { + color: #fff; + text-decoration: none; + background-color: #467fcf; +} + +.dropdown-item.disabled, .dropdown-item:disabled { + color: #868e96; + pointer-events: none; + background-color: transparent; +} + +.dropdown-menu.show { + display: block; +} + +.dropdown-header { + display: block; + padding: 0.5rem 1.5rem; + margin-bottom: 0; + font-size: 0.875rem; + color: #868e96; + white-space: nowrap; +} + +.dropdown-item-text { + display: block; + padding: 0.25rem 1.5rem; + color: #212529; +} + +.btn-group, +.btn-group-vertical { + position: relative; + display: -ms-inline-flexbox; + display: inline-flex; + vertical-align: middle; +} + +.btn-group > .btn, .dataTables_wrapper .dataTables_paginate .btn-group > .paginate_button, +.btn-group-vertical > .btn, +.dataTables_wrapper .dataTables_paginate .btn-group-vertical > .paginate_button { + position: relative; + -ms-flex: 1 1 auto; + flex: 1 1 auto; +} + +.btn-group > .btn:hover, .dataTables_wrapper .dataTables_paginate .btn-group > .paginate_button:hover, +.btn-group-vertical > .btn:hover, +.dataTables_wrapper .dataTables_paginate .btn-group-vertical > .paginate_button:hover { + z-index: 1; +} + +.btn-group > .btn:focus, .dataTables_wrapper .dataTables_paginate .btn-group > .paginate_button:focus, .btn-group > .btn:active, .dataTables_wrapper .dataTables_paginate .btn-group > .paginate_button:active, .btn-group > .btn.active, .dataTables_wrapper .dataTables_paginate .btn-group > .active.paginate_button, +.btn-group-vertical > .btn:focus, +.dataTables_wrapper .dataTables_paginate .btn-group-vertical > .paginate_button:focus, +.btn-group-vertical > .btn:active, +.dataTables_wrapper .dataTables_paginate .btn-group-vertical > .paginate_button:active, +.btn-group-vertical > .btn.active, +.dataTables_wrapper .dataTables_paginate .btn-group-vertical > .active.paginate_button { + z-index: 1; +} + +.btn-toolbar { + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -ms-flex-pack: start; + justify-content: flex-start; +} + +.btn-toolbar .input-group { + width: auto; +} + +.btn-group > .btn:not(:first-child), .dataTables_wrapper .dataTables_paginate .btn-group > .paginate_button:not(:first-child), +.btn-group > .btn-group:not(:first-child) { + margin-left: -1px; +} + +.btn-group > .btn:not(:last-child):not(.dropdown-toggle), .dataTables_wrapper .dataTables_paginate .btn-group > .paginate_button:not(:last-child):not(.dropdown-toggle), +.btn-group > .btn-group:not(:last-child) > .btn, +.dataTables_wrapper .dataTables_paginate .btn-group > .btn-group:not(:last-child) > .paginate_button { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.btn-group > .btn:not(:first-child), .dataTables_wrapper .dataTables_paginate .btn-group > .paginate_button:not(:first-child), +.btn-group > .btn-group:not(:first-child) > .btn, +.dataTables_wrapper .dataTables_paginate .btn-group > .btn-group:not(:first-child) > .paginate_button { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.dropdown-toggle-split { + padding-right: 0.5625rem; + padding-left: 0.5625rem; +} + +.dropdown-toggle-split::after, +.dropup .dropdown-toggle-split::after, +.dropright .dropdown-toggle-split::after { + margin-left: 0; +} + +.dropleft .dropdown-toggle-split::before { + margin-right: 0; +} + +.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split, .dataTables_wrapper .dataTables_paginate .btn-group-sm > .paginate_button + .dropdown-toggle-split { + padding-right: 0.375rem; + padding-left: 0.375rem; +} + +.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split, .dataTables_wrapper .dataTables_paginate .btn-group-lg > .paginate_button + .dropdown-toggle-split { + padding-right: 0.75rem; + padding-left: 0.75rem; +} + +.btn-group-vertical { + -ms-flex-direction: column; + flex-direction: column; + -ms-flex-align: start; + align-items: flex-start; + -ms-flex-pack: center; + justify-content: center; +} + + +.btn-group-vertical > .btn, +.dataTables_wrapper .dataTables_paginate .btn-group-vertical > .paginate_button, +.btn-group-vertical > .btn-group { + width: 100%; +} + +.btn-group-vertical > .btn:not(:first-child), .dataTables_wrapper .dataTables_paginate .btn-group-vertical > .paginate_button:not(:first-child), +.btn-group-vertical > .btn-group:not(:first-child) { + margin-top: -1px; +} + +.btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle), .dataTables_wrapper .dataTables_paginate .btn-group-vertical > .paginate_button:not(:last-child):not(.dropdown-toggle), +.btn-group-vertical > .btn-group:not(:last-child) > .btn, +.dataTables_wrapper .dataTables_paginate .btn-group-vertical > .btn-group:not(:last-child) > .paginate_button { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} + +.btn-group-vertical > .btn:not(:first-child), .dataTables_wrapper .dataTables_paginate .btn-group-vertical > .paginate_button:not(:first-child), +.btn-group-vertical > .btn-group:not(:first-child) > .btn, +.dataTables_wrapper .dataTables_paginate .btn-group-vertical > .btn-group:not(:first-child) > .paginate_button { + border-top-left-radius: 0; + border-top-right-radius: 0; +} + +.btn-group-toggle > .btn, .dataTables_wrapper .dataTables_paginate .btn-group-toggle > .paginate_button, +.btn-group-toggle > .btn-group > .btn, +.dataTables_wrapper .dataTables_paginate .btn-group-toggle > .btn-group > .paginate_button { + margin-bottom: 0; +} + +.btn-group-toggle > .btn input[type="radio"], .dataTables_wrapper .dataTables_paginate .btn-group-toggle > .paginate_button input[type="radio"], +.btn-group-toggle > .btn input[type="checkbox"], +.dataTables_wrapper .dataTables_paginate .btn-group-toggle > .paginate_button input[type="checkbox"], +.btn-group-toggle > .btn-group > .btn input[type="radio"], +.dataTables_wrapper .dataTables_paginate .btn-group-toggle > .btn-group > .paginate_button input[type="radio"], +.btn-group-toggle > .btn-group > .btn input[type="checkbox"], +.dataTables_wrapper .dataTables_paginate .btn-group-toggle > .btn-group > .paginate_button input[type="checkbox"] { + position: absolute; + clip: rect(0, 0, 0, 0); + pointer-events: none; +} + +.input-group { + position: relative; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -ms-flex-align: stretch; + align-items: stretch; + width: 100%; +} + +.input-group > .form-control, .dataTables_wrapper .dataTables_length .input-group > select, .dataTables_wrapper .dataTables_filter .input-group > input, +.input-group > .form-control-plaintext, +.input-group > .custom-select, +.dataTables_wrapper .dataTables_length .input-group > select, +.input-group > .custom-file { + position: relative; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + width: 1%; + margin-bottom: 0; +} + +.input-group > .form-control + .form-control, .dataTables_wrapper .dataTables_length .input-group > select + .form-control, .dataTables_wrapper .dataTables_filter .input-group > input + .form-control, .dataTables_wrapper .dataTables_length .input-group > .form-control + select, .dataTables_wrapper .dataTables_length .input-group > select + select, .dataTables_wrapper .dataTables_filter .dataTables_length .input-group > input + select, .dataTables_wrapper .dataTables_length .dataTables_filter .input-group > input + select, .dataTables_wrapper .dataTables_filter .input-group > .form-control + input, .dataTables_wrapper .dataTables_length .dataTables_filter .input-group > select + input, .dataTables_wrapper .dataTables_filter .dataTables_length .input-group > select + input, .dataTables_wrapper .dataTables_filter .input-group > input + input, +.input-group > .form-control + .custom-select, +.dataTables_wrapper .dataTables_length .input-group > select + .custom-select, +.dataTables_wrapper .dataTables_filter .input-group > input + .custom-select, +.dataTables_wrapper .dataTables_length .input-group > .form-control + select, +.dataTables_wrapper .dataTables_length .input-group > select + select, +.dataTables_wrapper .dataTables_filter .dataTables_length .input-group > input + select, +.dataTables_wrapper .dataTables_length .dataTables_filter .input-group > input + select, +.input-group > .form-control + .custom-file, +.dataTables_wrapper .dataTables_length .input-group > select + .custom-file, +.dataTables_wrapper .dataTables_filter .input-group > input + .custom-file, +.input-group > .form-control-plaintext + .form-control, +.dataTables_wrapper .dataTables_length .input-group > .form-control-plaintext + select, +.dataTables_wrapper .dataTables_filter .input-group > .form-control-plaintext + input, +.input-group > .form-control-plaintext + .custom-select, +.dataTables_wrapper .dataTables_length .input-group > .form-control-plaintext + select, +.input-group > .form-control-plaintext + .custom-file, +.input-group > .custom-select + .form-control, +.dataTables_wrapper .dataTables_length .input-group > select + .form-control, +.dataTables_wrapper .dataTables_length .input-group > .custom-select + select, +.dataTables_wrapper .dataTables_length .input-group > select + select, +.dataTables_wrapper .dataTables_filter .input-group > .custom-select + input, +.dataTables_wrapper .dataTables_length .dataTables_filter .input-group > select + input, +.dataTables_wrapper .dataTables_filter .dataTables_length .input-group > select + input, +.input-group > .custom-select + .custom-select, +.dataTables_wrapper .dataTables_length .input-group > select + .custom-select, +.dataTables_wrapper .dataTables_length .input-group > .custom-select + select, +.dataTables_wrapper .dataTables_length .input-group > select + select, +.input-group > .custom-select + .custom-file, +.dataTables_wrapper .dataTables_length .input-group > select + .custom-file, +.input-group > .custom-file + .form-control, +.dataTables_wrapper .dataTables_length .input-group > .custom-file + select, +.dataTables_wrapper .dataTables_filter .input-group > .custom-file + input, +.input-group > .custom-file + .custom-select, +.dataTables_wrapper .dataTables_length .input-group > .custom-file + select, +.input-group > .custom-file + .custom-file { + margin-left: -1px; +} + +.input-group > .form-control:focus, .dataTables_wrapper .dataTables_length .input-group > select:focus, .dataTables_wrapper .dataTables_filter .input-group > input:focus, +.input-group > .custom-select:focus, +.dataTables_wrapper .dataTables_length .input-group > select:focus, +.input-group > .custom-file .custom-file-input:focus ~ .custom-file-label { + z-index: 3; +} + +.input-group > .custom-file .custom-file-input:focus { + z-index: 4; +} + +.input-group > .form-control:not(:last-child), .dataTables_wrapper .dataTables_length .input-group > select:not(:last-child), .dataTables_wrapper .dataTables_filter .input-group > input:not(:last-child), +.input-group > .custom-select:not(:last-child), +.dataTables_wrapper .dataTables_length .input-group > select:not(:last-child) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.input-group > .form-control:not(:first-child), .dataTables_wrapper .dataTables_length .input-group > select:not(:first-child), .dataTables_wrapper .dataTables_filter .input-group > input:not(:first-child), +.input-group > .custom-select:not(:first-child), +.dataTables_wrapper .dataTables_length .input-group > select:not(:first-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.input-group > .custom-file { + display: -ms-flexbox; + display: flex; + -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-prepend, +.input-group-append { + display: -ms-flexbox; + display: flex; +} + +.input-group-prepend .btn, .input-group-prepend .dataTables_wrapper .dataTables_paginate .paginate_button, .dataTables_wrapper .dataTables_paginate .input-group-prepend .paginate_button, +.input-group-append .btn, +.input-group-append .dataTables_wrapper .dataTables_paginate .paginate_button, +.dataTables_wrapper .dataTables_paginate .input-group-append .paginate_button { + position: relative; + z-index: 2; +} + +.input-group-prepend .btn:focus, .input-group-prepend .dataTables_wrapper .dataTables_paginate .paginate_button:focus, .dataTables_wrapper .dataTables_paginate .input-group-prepend .paginate_button:focus, +.input-group-append .btn:focus, +.input-group-append .dataTables_wrapper .dataTables_paginate .paginate_button:focus, +.dataTables_wrapper .dataTables_paginate .input-group-append .paginate_button:focus { + z-index: 3; +} + +.input-group-prepend .btn + .btn, .input-group-prepend .dataTables_wrapper .dataTables_paginate .paginate_button + .btn, .dataTables_wrapper .dataTables_paginate .input-group-prepend .paginate_button + .btn, .input-group-prepend .dataTables_wrapper .dataTables_paginate .btn + .paginate_button, .dataTables_wrapper .dataTables_paginate .input-group-prepend .btn + .paginate_button, .input-group-prepend .dataTables_wrapper .dataTables_paginate .paginate_button + .paginate_button, .dataTables_wrapper .dataTables_paginate .input-group-prepend .paginate_button + .paginate_button, +.input-group-prepend .btn + .input-group-text, +.input-group-prepend .dataTables_wrapper .dataTables_paginate .paginate_button + .input-group-text, +.dataTables_wrapper .dataTables_paginate .input-group-prepend .paginate_button + .input-group-text, +.input-group-prepend .input-group-text + .input-group-text, +.input-group-prepend .input-group-text + .btn, +.input-group-prepend .dataTables_wrapper .dataTables_paginate .input-group-text + .paginate_button, +.dataTables_wrapper .dataTables_paginate .input-group-prepend .input-group-text + .paginate_button, +.input-group-append .btn + .btn, +.input-group-append .dataTables_wrapper .dataTables_paginate .paginate_button + .btn, +.dataTables_wrapper .dataTables_paginate .input-group-append .paginate_button + .btn, +.input-group-append .dataTables_wrapper .dataTables_paginate .btn + .paginate_button, +.dataTables_wrapper .dataTables_paginate .input-group-append .btn + .paginate_button, +.input-group-append .dataTables_wrapper .dataTables_paginate .paginate_button + .paginate_button, +.dataTables_wrapper .dataTables_paginate .input-group-append .paginate_button + .paginate_button, +.input-group-append .btn + .input-group-text, +.input-group-append .dataTables_wrapper .dataTables_paginate .paginate_button + .input-group-text, +.dataTables_wrapper .dataTables_paginate .input-group-append .paginate_button + .input-group-text, +.input-group-append .input-group-text + .input-group-text, +.input-group-append .input-group-text + .btn, +.input-group-append .dataTables_wrapper .dataTables_paginate .input-group-text + .paginate_button, +.dataTables_wrapper .dataTables_paginate .input-group-append .input-group-text + .paginate_button { + margin-left: -1px; +} + +.input-group-prepend { + margin-right: -1px; +} + +.input-group-append { + margin-left: -1px; +} + +.input-group-text { + display: -ms-flexbox; + display: flex; + -ms-flex-align: center; + align-items: center; + padding: 0.375rem 0.75rem; + margin-bottom: 0; + font-size: 0.9375rem; + font-weight: 400; + line-height: 1.6; + color: #495057; + text-align: center; + white-space: nowrap; + background-color: #fbfbfc; + border: 1px solid rgba(0, 40, 100, 0.12); + border-radius: 3px; +} + +.input-group-text input[type="radio"], +.input-group-text input[type="checkbox"] { + margin-top: 0; +} + +.input-group-lg > .form-control:not(textarea), .dataTables_wrapper .dataTables_length .input-group-lg > select:not(textarea), .dataTables_wrapper .dataTables_filter .input-group-lg > input:not(textarea), +.input-group-lg > .custom-select, +.dataTables_wrapper .dataTables_length .input-group-lg > select { + height: calc(1.44444444em + 1rem + 2px); +} + +.input-group-lg > .form-control, .dataTables_wrapper .dataTables_length .input-group-lg > select, .dataTables_wrapper .dataTables_filter .input-group-lg > input, +.input-group-lg > .custom-select, +.dataTables_wrapper .dataTables_length .input-group-lg > select, +.input-group-lg > .input-group-prepend > .input-group-text, +.input-group-lg > .input-group-append > .input-group-text, +.input-group-lg > .input-group-prepend > .btn, +.dataTables_wrapper .dataTables_paginate .input-group-lg > .input-group-prepend > .paginate_button, +.input-group-lg > .input-group-append > .btn, +.dataTables_wrapper .dataTables_paginate .input-group-lg > .input-group-append > .paginate_button { + padding: 0.5rem 1rem; + font-size: 1.125rem; + line-height: 1.44444444; + border-radius: 3px; +} + +.input-group-sm > .form-control:not(textarea), .dataTables_wrapper .dataTables_length .input-group-sm > select:not(textarea), .dataTables_wrapper .dataTables_filter .input-group-sm > input:not(textarea), +.input-group-sm > .custom-select, +.dataTables_wrapper .dataTables_length .input-group-sm > select { + height: calc(1.14285714em + 0.5rem + 2px); +} + +.input-group-sm > .form-control, .dataTables_wrapper .dataTables_length .input-group-sm > select, .dataTables_wrapper .dataTables_filter .input-group-sm > input, +.input-group-sm > .custom-select, +.dataTables_wrapper .dataTables_length .input-group-sm > select, +.input-group-sm > .input-group-prepend > .input-group-text, +.input-group-sm > .input-group-append > .input-group-text, +.input-group-sm > .input-group-prepend > .btn, +.dataTables_wrapper .dataTables_paginate .input-group-sm > .input-group-prepend > .paginate_button, +.input-group-sm > .input-group-append > .btn, +.dataTables_wrapper .dataTables_paginate .input-group-sm > .input-group-append > .paginate_button { + padding: 0.25rem 0.5rem; + font-size: 0.875rem; + line-height: 1.14285714; + border-radius: 3px; +} + + +.input-group-lg > .custom-select, +.dataTables_wrapper .dataTables_length .input-group-lg > select, +.input-group-sm > .custom-select, +.dataTables_wrapper .dataTables_length .input-group-sm > select { + padding-right: 1.75rem; +} + +.input-group > .input-group-prepend > .btn, .dataTables_wrapper .dataTables_paginate .input-group > .input-group-prepend > .paginate_button, +.input-group > .input-group-prepend > .input-group-text, +.input-group > .input-group-append:not(:last-child) > .btn, +.dataTables_wrapper .dataTables_paginate .input-group > .input-group-append:not(:last-child) > .paginate_button, +.input-group > .input-group-append:not(:last-child) > .input-group-text, +.input-group > .input-group-append:last-child > .btn:not(:last-child):not(.dropdown-toggle), +.dataTables_wrapper .dataTables_paginate .input-group > .input-group-append:last-child > .paginate_button:not(:last-child):not(.dropdown-toggle), +.input-group > .input-group-append:last-child > .input-group-text:not(:last-child) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.input-group > .input-group-append > .btn, .dataTables_wrapper .dataTables_paginate .input-group > .input-group-append > .paginate_button, +.input-group > .input-group-append > .input-group-text, +.input-group > .input-group-prepend:not(:first-child) > .btn, +.dataTables_wrapper .dataTables_paginate .input-group > .input-group-prepend:not(:first-child) > .paginate_button, +.input-group > .input-group-prepend:not(:first-child) > .input-group-text, +.input-group > .input-group-prepend:first-child > .btn:not(:first-child), +.dataTables_wrapper .dataTables_paginate .input-group > .input-group-prepend:first-child > .paginate_button:not(:first-child), +.input-group > .input-group-prepend:first-child > .input-group-text:not(:first-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.custom-control { + position: relative; + display: block; + min-height: 1.40625rem; + padding-left: 1.5rem; +} + +.custom-control-inline { + display: -ms-inline-flexbox; + display: inline-flex; + margin-right: 1rem; +} + +.custom-control-input { + position: absolute; + z-index: -1; + opacity: 0; +} + +.custom-control-input:checked ~ .custom-control-label::before { + color: #fff; + border-color: #467fcf; + background-color: #467fcf; +} + +.custom-control-input:focus ~ .custom-control-label::before { + box-shadow: 0 0 0 2px rgba(70, 127, 207, 0.25); +} + +.custom-control-input:focus:not(:checked) ~ .custom-control-label::before { + border-color: #1991eb; +} + +.custom-control-input:not(:disabled):active ~ .custom-control-label::before { + color: #fff; + background-color: #d4e1f4; + border-color: #d4e1f4; +} + +.custom-control-input:disabled ~ .custom-control-label { + color: #868e96; +} + +.custom-control-input:disabled ~ .custom-control-label::before { + background-color: #f8f9fa; +} + +.custom-control-label { + position: relative; + margin-bottom: 0; + vertical-align: top; +} + +.custom-control-label::before { + position: absolute; + top: 0.203125rem; + left: -1.5rem; + display: block; + width: 1rem; + height: 1rem; + pointer-events: none; + content: ""; + background-color: #fff; + border: #adb5bd solid 1px; +} + +.custom-control-label::after { + position: absolute; + top: 0.203125rem; + left: -1.5rem; + display: block; + width: 1rem; + height: 1rem; + content: ""; + background: no-repeat 50% / 50% 50%; +} + +.custom-checkbox .custom-control-label::before { + border-radius: 3px; +} + +.custom-checkbox .custom-control-input:checked ~ .custom-control-label::after { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3e%3c/svg%3e"); +} + +.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::before { + border-color: #467fcf; + background-color: #467fcf; +} + +.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::after { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e"); +} + +.custom-checkbox .custom-control-input:disabled:checked ~ .custom-control-label::before { + background-color: rgba(70, 127, 207, 0.5); +} + +.custom-checkbox .custom-control-input:disabled:indeterminate ~ .custom-control-label::before { + background-color: rgba(70, 127, 207, 0.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,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e"); +} + +.custom-radio .custom-control-input:disabled:checked ~ .custom-control-label::before { + background-color: rgba(70, 127, 207, 0.5); +} + +.custom-switch { + padding-left: 2.25rem; +} + +.custom-switch .custom-control-label::before { + left: -2.25rem; + width: 1.75rem; + pointer-events: all; + border-radius: 0.5rem; +} + +.custom-switch .custom-control-label::after { + top: calc(0.203125rem + 2px); + left: calc(-2.25rem + 2px); + width: calc(1rem - 4px); + height: calc(1rem - 4px); + background-color: #adb5bd; + border-radius: 0.5rem; + transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-transform 0.15s ease-in-out; + transition: transform 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + transition: transform 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-transform 0.15s ease-in-out; +} + +@media (prefers-reduced-motion: reduce) { + .custom-switch .custom-control-label::after { + transition: none; + } +} + +.custom-switch .custom-control-input:checked ~ .custom-control-label::after { + background-color: #fff; + -webkit-transform: translateX(0.75rem); + transform: translateX(0.75rem); +} + +.custom-switch .custom-control-input:disabled:checked ~ .custom-control-label::before { + background-color: rgba(70, 127, 207, 0.5); +} + +.custom-select, .dataTables_wrapper .dataTables_length select { + display: inline-block; + width: 100%; + height: 2.375rem; + padding: 0.5rem 1.75rem 0.5rem 0.75rem; + font-size: 0.9375rem; + font-weight: 400; + line-height: 1.6; + color: #495057; + vertical-align: middle; + background: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 5'%3E%3Cpath fill='#999' d='M0 0L10 0L5 5L0 0'/%3E%3C/svg%3E") no-repeat right 0.75rem center/8px 10px; + background-color: #fff; + border: 1px solid rgba(0, 40, 100, 0.12); + border-radius: 3px; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; +} + +.custom-select:focus, .dataTables_wrapper .dataTables_length select:focus { + border-color: #1991eb; + outline: 0; + box-shadow: 0 0 0 2px rgba(70, 127, 207, 0.25); +} + +.custom-select:focus::-ms-value, .dataTables_wrapper .dataTables_length select:focus::-ms-value { + color: #495057; + background-color: #fff; +} + +.custom-select[multiple], .dataTables_wrapper .dataTables_length select[multiple], .custom-select[size]:not([size="1"]), .dataTables_wrapper .dataTables_length select[size]:not([size="1"]) { + height: auto; + padding-right: 0.75rem; + background-image: none; +} + +.custom-select:disabled, .dataTables_wrapper .dataTables_length select:disabled { + color: #868e96; + background-color: #e9ecef; +} + +.custom-select::-ms-expand, .dataTables_wrapper .dataTables_length select::-ms-expand { + display: none; +} + +.custom-select-sm { + height: calc(1.14285714em + 0.5rem + 2px); + padding-top: 0.25rem; + padding-bottom: 0.25rem; + padding-left: 0.5rem; + font-size: 0.875rem; +} + +.custom-select-lg { + height: calc(1.44444444em + 1rem + 2px); + padding-top: 0.5rem; + padding-bottom: 0.5rem; + padding-left: 1rem; + font-size: 1.125rem; +} + +.custom-file { + position: relative; + display: inline-block; + width: 100%; + height: 2.375rem; + margin-bottom: 0; +} + +.custom-file-input { + position: relative; + z-index: 2; + width: 100%; + height: 2.375rem; + margin: 0; + opacity: 0; +} + +.custom-file-input:focus ~ .custom-file-label { + border-color: #1991eb; + box-shadow: 0 0 0 2px rgba(70, 127, 207, 0.25); +} + +.custom-file-input:disabled ~ .custom-file-label { + background-color: #f8f9fa; +} + +.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 { + position: absolute; + top: 0; + right: 0; + left: 0; + z-index: 1; + height: 2.375rem; + padding: 0.375rem 0.75rem; + font-weight: 400; + line-height: 1.6; + color: #495057; + background-color: #fff; + border: 1px solid rgba(0, 40, 100, 0.12); + border-radius: 3px; +} + +.custom-file-label::after { + position: absolute; + top: 0; + right: 0; + bottom: 0; + z-index: 3; + display: block; + height: calc(1.6em + 0.75rem); + padding: 0.375rem 0.75rem; + line-height: 1.6; + color: #495057; + content: "Browse"; + background-color: #fbfbfc; + border-left: inherit; + border-radius: 0 3px 3px 0; +} + +.custom-range { + width: 100%; + height: calc(1rem + 4px); + padding: 0; + background-color: transparent; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; +} + +.custom-range:focus { + outline: none; +} + +.custom-range:focus::-webkit-slider-thumb { + box-shadow: 0 0 0 1px #f5f7fb, 0 0 0 2px rgba(70, 127, 207, 0.25); +} + +.custom-range:focus::-moz-range-thumb { + box-shadow: 0 0 0 1px #f5f7fb, 0 0 0 2px rgba(70, 127, 207, 0.25); +} + +.custom-range:focus::-ms-thumb { + box-shadow: 0 0 0 1px #f5f7fb, 0 0 0 2px rgba(70, 127, 207, 0.25); +} + +.custom-range::-moz-focus-outer { + border: 0; +} + +.custom-range::-webkit-slider-thumb { + width: 1rem; + height: 1rem; + margin-top: -0.25rem; + background-color: #467fcf; + border: 0; + border-radius: 1rem; + transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + -webkit-appearance: none; + appearance: none; +} + +@media (prefers-reduced-motion: reduce) { + .custom-range::-webkit-slider-thumb { + transition: none; + } +} + +.custom-range::-webkit-slider-thumb:active { + background-color: #d4e1f4; +} + +.custom-range::-webkit-slider-runnable-track { + width: 100%; + height: 0.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: #467fcf; + border: 0; + border-radius: 1rem; + transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + -moz-appearance: none; + appearance: none; +} + +@media (prefers-reduced-motion: reduce) { + .custom-range::-moz-range-thumb { + transition: none; + } +} + +.custom-range::-moz-range-thumb:active { + background-color: #d4e1f4; +} + +.custom-range::-moz-range-track { + width: 100%; + height: 0.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: 2px; + margin-left: 2px; + background-color: #467fcf; + border: 0; + border-radius: 1rem; + transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + appearance: none; +} + +@media (prefers-reduced-motion: reduce) { + .custom-range::-ms-thumb { + transition: none; + } +} + +.custom-range::-ms-thumb:active { + background-color: #d4e1f4; +} + +.custom-range::-ms-track { + width: 100%; + height: 0.5rem; + color: transparent; + cursor: pointer; + background-color: transparent; + border-color: transparent; + border-width: 0.5rem; +} + +.custom-range::-ms-fill-lower { + background-color: #dee2e6; + border-radius: 1rem; +} + +.custom-range::-ms-fill-upper { + margin-right: 15px; + background-color: #dee2e6; + border-radius: 1rem; +} + +.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, .dataTables_wrapper .dataTables_length select { + transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} + +@media (prefers-reduced-motion: reduce) { + .custom-control-label::before, + .custom-file-label, .custom-select, .dataTables_wrapper .dataTables_length select { + transition: none; + } +} + +.nav { + 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: 0.5rem 1rem; +} + +.nav-link:hover, .nav-link:focus { + text-decoration: none; +} + +.nav-link.disabled { + color: #868e96; + 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: 3px; + border-top-right-radius: 3px; +} + +.nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus { + border-color: #e9ecef #e9ecef #dee2e6; +} + +.nav-tabs .nav-link.disabled { + color: #868e96; + background-color: transparent; + border-color: transparent; +} + +.nav-tabs .nav-link.active, +.nav-tabs .nav-item.show .nav-link { + color: #495057; + background-color: transparent; + border-color: #dee2e6 #dee2e6 transparent; +} + +.nav-tabs .dropdown-menu { + margin-top: -1px; + border-top-left-radius: 0; + border-top-right-radius: 0; +} + +.nav-pills .nav-link { + border-radius: 3px; +} + +.nav-pills .nav-link.active, +.nav-pills .show > .nav-link { + color: #fff; + background-color: #467fcf; +} + +.nav-fill .nav-item { + -ms-flex: 1 1 auto; + flex: 1 1 auto; + text-align: center; +} + +.nav-justified .nav-item { + -ms-flex-preferred-size: 0; + flex-basis: 0; + -ms-flex-positive: 1; + flex-grow: 1; + text-align: center; +} + +.tab-content > .tab-pane { + display: none; +} + +.tab-content > .active { + display: block; +} + +.navbar { + position: relative; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: justify; + justify-content: space-between; + padding: 0.5rem 1rem; +} + +.navbar > .container, +.navbar > .container-fluid { + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: justify; + justify-content: space-between; +} + +.navbar-brand { + display: inline-block; + padding-top: 0.359375rem; + padding-bottom: 0.359375rem; + margin-right: 1rem; + font-size: 1.125rem; + line-height: inherit; + white-space: nowrap; +} + +.navbar-brand:hover, .navbar-brand:focus { + text-decoration: none; +} + +.navbar-nav { + display: -ms-flexbox; + display: flex; + -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: 0.5rem; + padding-bottom: 0.5rem; +} + +.navbar-collapse { + -ms-flex-preferred-size: 100%; + flex-basis: 100%; + -ms-flex-positive: 1; + flex-grow: 1; + -ms-flex-align: center; + align-items: center; +} + +.navbar-toggler { + padding: 0.25rem 0.75rem; + font-size: 1.125rem; + line-height: 1; + background-color: transparent; + border: 1px solid transparent; + border-radius: 3px; +} + +.navbar-toggler:hover, .navbar-toggler:focus { + text-decoration: none; +} + +.navbar-toggler-icon { + display: inline-block; + width: 1.5em; + height: 1.5em; + vertical-align: middle; + content: ""; + background: no-repeat center center; + background-size: 100% 100%; +} + +@media (max-width: 575.98px) { + .navbar-expand-sm > .container, + .navbar-expand-sm > .container-fluid { + padding-right: 0; + padding-left: 0; + } +} + +@media (min-width: 576px) { + .navbar-expand-sm { + -ms-flex-flow: row nowrap; + flex-flow: row nowrap; + -ms-flex-pack: start; + justify-content: flex-start; + } + .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: 0.5rem; + padding-left: 0.5rem; + } + .navbar-expand-sm > .container, + .navbar-expand-sm > .container-fluid { + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + } + .navbar-expand-sm .navbar-collapse { + 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 { + padding-right: 0; + padding-left: 0; + } +} + +@media (min-width: 768px) { + .navbar-expand-md { + -ms-flex-flow: row nowrap; + flex-flow: row nowrap; + -ms-flex-pack: start; + justify-content: flex-start; + } + .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: 0.5rem; + padding-left: 0.5rem; + } + .navbar-expand-md > .container, + .navbar-expand-md > .container-fluid { + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + } + .navbar-expand-md .navbar-collapse { + 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 { + padding-right: 0; + padding-left: 0; + } +} + +@media (min-width: 992px) { + .navbar-expand-lg { + -ms-flex-flow: row nowrap; + flex-flow: row nowrap; + -ms-flex-pack: start; + justify-content: flex-start; + } + .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: 0.5rem; + padding-left: 0.5rem; + } + .navbar-expand-lg > .container, + .navbar-expand-lg > .container-fluid { + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + } + .navbar-expand-lg .navbar-collapse { + 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: 1279.98px) { + .navbar-expand-xl > .container, + .navbar-expand-xl > .container-fluid { + padding-right: 0; + padding-left: 0; + } +} + +@media (min-width: 1280px) { + .navbar-expand-xl { + -ms-flex-flow: row nowrap; + flex-flow: row nowrap; + -ms-flex-pack: start; + justify-content: flex-start; + } + .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: 0.5rem; + padding-left: 0.5rem; + } + .navbar-expand-xl > .container, + .navbar-expand-xl > .container-fluid { + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + } + .navbar-expand-xl .navbar-collapse { + display: -ms-flexbox !important; + display: flex !important; + -ms-flex-preferred-size: auto; + flex-basis: auto; + } + .navbar-expand-xl .navbar-toggler { + display: none; + } +} + +.navbar-expand { + -ms-flex-flow: row nowrap; + flex-flow: row nowrap; + -ms-flex-pack: start; + justify-content: flex-start; +} + +.navbar-expand > .container, +.navbar-expand > .container-fluid { + padding-right: 0; + padding-left: 0; +} + +.navbar-expand .navbar-nav { + -ms-flex-direction: row; + flex-direction: row; +} + +.navbar-expand .navbar-nav .dropdown-menu { + position: absolute; +} + +.navbar-expand .navbar-nav .nav-link { + padding-right: 0.5rem; + padding-left: 0.5rem; +} + +.navbar-expand > .container, +.navbar-expand > .container-fluid { + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; +} + +.navbar-expand .navbar-collapse { + 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 { + color: rgba(0, 0, 0, 0.9); +} + +.navbar-light .navbar-brand:hover, .navbar-light .navbar-brand:focus { + color: rgba(0, 0, 0, 0.9); +} + +.navbar-light .navbar-nav .nav-link { + color: rgba(0, 0, 0, 0.5); +} + +.navbar-light .navbar-nav .nav-link:hover, .navbar-light .navbar-nav .nav-link:focus { + color: rgba(0, 0, 0, 0.7); +} + +.navbar-light .navbar-nav .nav-link.disabled { + color: rgba(0, 0, 0, 0.3); +} + +.navbar-light .navbar-nav .show > .nav-link, +.navbar-light .navbar-nav .active > .nav-link, +.navbar-light .navbar-nav .nav-link.show, +.navbar-light .navbar-nav .nav-link.active { + color: rgba(0, 0, 0, 0.9); +} + +.navbar-light .navbar-toggler { + color: rgba(0, 0, 0, 0.5); + border-color: rgba(0, 0, 0, 0.1); +} + +.navbar-light .navbar-toggler-icon { + background-image: url("data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); +} + +.navbar-light .navbar-text { + color: rgba(0, 0, 0, 0.5); +} + +.navbar-light .navbar-text a { + color: rgba(0, 0, 0, 0.9); +} + +.navbar-light .navbar-text a:hover, .navbar-light .navbar-text a:focus { + color: rgba(0, 0, 0, 0.9); +} + +.navbar-dark .navbar-brand { + color: #fff; +} + +.navbar-dark .navbar-brand:hover, .navbar-dark .navbar-brand:focus { + color: #fff; +} + +.navbar-dark .navbar-nav .nav-link { + color: rgba(255, 255, 255, 0.5); +} + +.navbar-dark .navbar-nav .nav-link:hover, .navbar-dark .navbar-nav .nav-link:focus { + color: rgba(255, 255, 255, 0.75); +} + +.navbar-dark .navbar-nav .nav-link.disabled { + color: rgba(255, 255, 255, 0.25); +} + +.navbar-dark .navbar-nav .show > .nav-link, +.navbar-dark .navbar-nav .active > .nav-link, +.navbar-dark .navbar-nav .nav-link.show, +.navbar-dark .navbar-nav .nav-link.active { + color: #fff; +} + +.navbar-dark .navbar-toggler { + color: rgba(255, 255, 255, 0.5); + border-color: rgba(255, 255, 255, 0.1); +} + +.navbar-dark .navbar-toggler-icon { + background-image: url("data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); +} + +.navbar-dark .navbar-text { + color: rgba(255, 255, 255, 0.5); +} + +.navbar-dark .navbar-text a { + color: #fff; +} + +.navbar-dark .navbar-text a:hover, .navbar-dark .navbar-text a:focus { + color: #fff; +} + +.card { + position: relative; + display: -ms-flexbox; + display: flex; + -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, 40, 100, 0.12); + border-radius: 3px; +} + +.card > hr { + margin-right: 0; + margin-left: 0; +} + +.card > .list-group:first-child .list-group-item:first-child { + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} + +.card > .list-group:last-child .list-group-item:last-child { + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} + +.card-body { + -ms-flex: 1 1 auto; + flex: 1 1 auto; + padding: 1.5rem; +} + +.card-title { + margin-bottom: 1.5rem; +} + +.card-subtitle { + margin-top: -0.75rem; + margin-bottom: 0; +} + +.card-text:last-child { + margin-bottom: 0; +} + +.card-link:hover { + text-decoration: none; +} + +.card-link + .card-link { + margin-left: 1.5rem; +} + +.card-header { + padding: 1.5rem 1.5rem; + margin-bottom: 0; + background-color: rgba(0, 0, 0, 0.03); + border-bottom: 1px solid rgba(0, 40, 100, 0.12); +} + +.card-header:first-child { + border-radius: calc(3px - 1px) calc(3px - 1px) 0 0; +} + +.card-header + .list-group .list-group-item:first-child { + border-top: 0; +} + +.card-footer { + padding: 1.5rem 1.5rem; + background-color: rgba(0, 0, 0, 0.03); + border-top: 1px solid rgba(0, 40, 100, 0.12); +} + +.card-footer:last-child { + border-radius: 0 0 calc(3px - 1px) calc(3px - 1px); +} + +.card-header-tabs { + margin-right: -0.75rem; + margin-bottom: -1.5rem; + margin-left: -0.75rem; + border-bottom: 0; +} + +.card-header-pills { + margin-right: -0.75rem; + margin-left: -0.75rem; +} + +.card-img-overlay { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + padding: 1.25rem; +} + +.card-img { + width: 100%; + border-radius: calc(3px - 1px); +} + +.card-img-top { + width: 100%; + border-top-left-radius: calc(3px - 1px); + border-top-right-radius: calc(3px - 1px); +} + +.card-img-bottom { + width: 100%; + border-bottom-right-radius: calc(3px - 1px); + border-bottom-left-radius: calc(3px - 1px); +} + +.card-deck { + display: -ms-flexbox; + display: flex; + -ms-flex-direction: column; + flex-direction: column; +} + +.card-deck .card { + margin-bottom: 0.75rem; +} + +@media (min-width: 576px) { + .card-deck { + -ms-flex-flow: row wrap; + flex-flow: row wrap; + margin-right: -0.75rem; + margin-left: -0.75rem; + } + .card-deck .card { + display: -ms-flexbox; + display: flex; + -ms-flex: 1 0 0%; + flex: 1 0 0%; + -ms-flex-direction: column; + flex-direction: column; + margin-right: 0.75rem; + margin-bottom: 0; + margin-left: 0.75rem; + } +} + +.card-group { + display: -ms-flexbox; + display: flex; + -ms-flex-direction: column; + flex-direction: column; +} + +.card-group > .card { + margin-bottom: 0.75rem; +} + +@media (min-width: 576px) { + .card-group { + -ms-flex-flow: row wrap; + flex-flow: row wrap; + } + .card-group > .card { + -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-img-top, + .card-group > .card:not(:last-child) .card-header { + border-top-right-radius: 0; + } + .card-group > .card:not(:last-child) .card-img-bottom, + .card-group > .card:not(:last-child) .card-footer { + 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-img-top, + .card-group > .card:not(:first-child) .card-header { + border-top-left-radius: 0; + } + .card-group > .card:not(:first-child) .card-img-bottom, + .card-group > .card:not(:first-child) .card-footer { + border-bottom-left-radius: 0; + } +} + +.card-columns .card { + margin-bottom: 1.5rem; +} + +@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(:first-of-type) .card-header:first-child { + border-radius: 0; +} + +.accordion > .card:not(:first-of-type):not(:last-of-type) { + border-bottom: 0; + border-radius: 0; +} + +.accordion > .card:first-of-type { + border-bottom: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} + +.accordion > .card:last-of-type { + border-top-left-radius: 0; + border-top-right-radius: 0; +} + +.accordion > .card .card-header { + margin-bottom: -1px; +} + +.breadcrumb { + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + padding: 0.75rem 1rem; + margin-bottom: 1rem; + list-style: none; + background-color: #e9ecef; + border-radius: 3px; +} + +.breadcrumb-item + .breadcrumb-item { + padding-left: 0.5rem; +} + +.breadcrumb-item + .breadcrumb-item::before { + display: inline-block; + padding-right: 0.5rem; + color: #868e96; + content: "/"; +} + +.breadcrumb-item + .breadcrumb-item:hover::before { + text-decoration: underline; +} + +.breadcrumb-item + .breadcrumb-item:hover::before { + text-decoration: none; +} + +.breadcrumb-item.active { + color: #868e96; +} + +.pagination { + display: -ms-flexbox; + display: flex; + padding-left: 0; + list-style: none; + border-radius: 3px; +} + +.page-link { + position: relative; + display: block; + padding: 0.5rem 0.75rem; + margin-left: -1px; + line-height: 1.25; + color: #495057; + background-color: #fff; + border: 1px solid #dee2e6; +} + +.page-link:hover { + z-index: 2; + color: #295a9f; + text-decoration: none; + background-color: #e9ecef; + border-color: #dee2e6; +} + +.page-link:focus { + z-index: 2; + outline: 0; + box-shadow: 0 0 0 2px rgba(70, 127, 207, 0.25); +} + +.page-item:first-child .page-link { + margin-left: 0; + border-top-left-radius: 3px; + border-bottom-left-radius: 3px; +} + +.page-item:last-child .page-link { + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; +} + +.page-item.active .page-link { + z-index: 1; + color: #fff; + background-color: #467fcf; + border-color: #467fcf; +} + +.page-item.disabled .page-link { + color: #ced4da; + pointer-events: none; + cursor: auto; + background-color: #fff; + border-color: #dee2e6; +} + +.pagination-lg .page-link { + padding: 0.75rem 1.5rem; + font-size: 1.125rem; + line-height: 1.5; +} + +.pagination-lg .page-item:first-child .page-link { + border-top-left-radius: 3px; + border-bottom-left-radius: 3px; +} + +.pagination-lg .page-item:last-child .page-link { + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; +} + +.pagination-sm .page-link { + padding: 0.25rem 0.5rem; + font-size: 0.875rem; + line-height: 1.5; +} + +.pagination-sm .page-item:first-child .page-link { + border-top-left-radius: 3px; + border-bottom-left-radius: 3px; +} + +.pagination-sm .page-item:last-child .page-link { + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; +} + +.badge { + display: inline-block; + padding: 0.25em 0.4em; + font-size: 75%; + font-weight: 600; + line-height: 1; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: 3px; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} + +@media (prefers-reduced-motion: reduce) { + .badge { + transition: none; + } +} + +a.badge:hover, a.badge:focus { + text-decoration: none; +} + +.badge:empty { + display: none; +} + +.btn .badge, .dataTables_wrapper .dataTables_paginate .paginate_button .badge { + position: relative; + top: -1px; +} + +.badge-pill { + padding-right: 0.6em; + padding-left: 0.6em; + border-radius: 10rem; +} + +.badge-primary { + color: #fff; + background-color: #467fcf; +} + +a.badge-primary:hover, a.badge-primary:focus { + color: #fff; + background-color: #2f66b3; +} + +a.badge-primary:focus, a.badge-primary.focus { + outline: 0; + box-shadow: 0 0 0 2px rgba(70, 127, 207, 0.5); +} + +.badge-secondary { + color: #fff; + background-color: #868e96; +} + +a.badge-secondary:hover, a.badge-secondary:focus { + color: #fff; + background-color: #6c757d; +} + +a.badge-secondary:focus, a.badge-secondary.focus { + outline: 0; + box-shadow: 0 0 0 2px rgba(134, 142, 150, 0.5); +} + +.badge-success { + color: #fff; + background-color: #5eba00; +} + +a.badge-success:hover, a.badge-success:focus { + color: #fff; + background-color: #448700; +} + +a.badge-success:focus, a.badge-success.focus { + outline: 0; + box-shadow: 0 0 0 2px rgba(94, 186, 0, 0.5); +} + +.badge-info { + color: #fff; + background-color: #45aaf2; +} + +a.badge-info:hover, a.badge-info:focus { + color: #fff; + background-color: #1594ef; +} + +a.badge-info:focus, a.badge-info.focus { + outline: 0; + box-shadow: 0 0 0 2px rgba(69, 170, 242, 0.5); +} + +.badge-warning { + color: #fff; + background-color: #f1c40f; +} + +a.badge-warning:hover, a.badge-warning:focus { + color: #fff; + background-color: #c29d0b; +} + +a.badge-warning:focus, a.badge-warning.focus { + outline: 0; + box-shadow: 0 0 0 2px rgba(241, 196, 15, 0.5); +} + +.badge-danger { + color: #fff; + background-color: #cd201f; +} + +a.badge-danger:hover, a.badge-danger:focus { + color: #fff; + background-color: #a11918; +} + +a.badge-danger:focus, a.badge-danger.focus { + outline: 0; + box-shadow: 0 0 0 2px rgba(205, 32, 31, 0.5); +} + +.badge-light { + color: #495057; + background-color: #f8f9fa; +} + +a.badge-light:hover, a.badge-light:focus { + color: #495057; + background-color: #dae0e5; +} + +a.badge-light:focus, a.badge-light.focus { + outline: 0; + box-shadow: 0 0 0 2px rgba(248, 249, 250, 0.5); +} + +.badge-dark { + color: #fff; + background-color: #343a40; +} + +a.badge-dark:hover, a.badge-dark:focus { + color: #fff; + background-color: #1d2124; +} + +a.badge-dark:focus, a.badge-dark.focus { + outline: 0; + box-shadow: 0 0 0 2px rgba(52, 58, 64, 0.5); +} + +.jumbotron { + padding: 2rem 1rem; + margin-bottom: 2rem; + background-color: #e9ecef; + border-radius: 3px; +} + +@media (min-width: 576px) { + .jumbotron { + padding: 4rem 2rem; + } +} + +.jumbotron-fluid { + padding-right: 0; + padding-left: 0; + border-radius: 0; +} + +.alert { + position: relative; + padding: 0.75rem 1.25rem; + margin-bottom: 1rem; + border: 1px solid transparent; + border-radius: 3px; +} + +.alert-heading { + color: inherit; +} + +.alert-link { + font-weight: 600; +} + +.alert-dismissible { + padding-right: 3.90625rem; +} + +.alert-dismissible .close { + position: absolute; + top: 0; + right: 0; + padding: 0.75rem 1.25rem; + color: inherit; +} + +.alert-primary { + color: #24426c; + background-color: #dae5f5; + border-color: #cbdbf2; +} + +.alert-primary hr { + border-top-color: #b7cded; +} + +.alert-primary .alert-link { + color: #172b46; +} + +.alert-secondary { + color: #464a4e; + background-color: #e7e8ea; + border-color: #dddfe2; +} + +.alert-secondary hr { + border-top-color: #cfd2d6; +} + +.alert-secondary .alert-link { + color: #2e3133; +} + +.alert-success { + color: #316100; + background-color: #dff1cc; + border-color: #d2ecb8; +} + +.alert-success hr { + border-top-color: #c5e7a4; +} + +.alert-success .alert-link { + color: #172e00; +} + +.alert-info { + color: #24587e; + background-color: #daeefc; + border-color: #cbe7fb; +} + +.alert-info hr { + border-top-color: #b3dcf9; +} + +.alert-info .alert-link { + color: #193c56; +} + +.alert-warning { + color: #7d6608; + background-color: #fcf3cf; + border-color: #fbeebc; +} + +.alert-warning hr { + border-top-color: #fae8a4; +} + +.alert-warning .alert-link { + color: #4d3f05; +} + +.alert-danger { + color: #6b1110; + background-color: #f5d2d2; + border-color: #f1c1c0; +} + +.alert-danger hr { + border-top-color: #ecacab; +} + +.alert-danger .alert-link { + color: #3f0a09; +} + +.alert-light { + color: #818182; + background-color: #fefefe; + border-color: #fdfdfe; +} + +.alert-light hr { + border-top-color: #ececf6; +} + +.alert-light .alert-link { + color: #686868; +} + +.alert-dark { + color: #1b1e21; + background-color: #d6d8d9; + border-color: #c6c8ca; +} + +.alert-dark hr { + border-top-color: #b9bbbe; +} + +.alert-dark .alert-link { + color: #040505; +} + +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 1rem 0; + } + to { + background-position: 0 0; + } +} + +@keyframes progress-bar-stripes { + from { + background-position: 1rem 0; + } + to { + background-position: 0 0; + } +} + +.progress { + display: -ms-flexbox; + display: flex; + height: 1rem; + overflow: hidden; + font-size: 0.703125rem; + background-color: #e9ecef; + border-radius: 3px; +} + +.progress-bar { + display: -ms-flexbox; + display: flex; + -ms-flex-direction: column; + flex-direction: column; + -ms-flex-pack: center; + justify-content: center; + color: #fff; + text-align: center; + white-space: nowrap; + background-color: #467fcf; + transition: width 0.6s ease; +} + +@media (prefers-reduced-motion: reduce) { + .progress-bar { + transition: none; + } +} + +.progress-bar-striped { + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-size: 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: -ms-flexbox; + display: flex; + -ms-flex-align: start; + align-items: flex-start; +} + +.media-body { + -ms-flex: 1; + flex: 1; +} + +.list-group { + display: -ms-flexbox; + display: flex; + -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:hover, .list-group-item-action:focus { + z-index: 1; + color: #495057; + text-decoration: none; + background-color: #f8f9fa; +} + +.list-group-item-action:active { + color: #495057; + background-color: #e9ecef; +} + +.list-group-item { + position: relative; + display: block; + padding: 0.75rem 1.25rem; + margin-bottom: -1px; + background-color: #fff; + border: 1px solid rgba(0, 40, 100, 0.12); +} + +.list-group-item:first-child { + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} + +.list-group-item:last-child { + margin-bottom: 0; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} + +.list-group-item.disabled, .list-group-item:disabled { + color: #868e96; + pointer-events: none; + background-color: #fff; +} + +.list-group-item.active { + z-index: 2; + color: #467fcf; + background-color: #f8fafd; + border-color: rgba(0, 40, 100, 0.12); +} + +.list-group-horizontal { + -ms-flex-direction: row; + flex-direction: row; +} + +.list-group-horizontal .list-group-item { + margin-right: -1px; + margin-bottom: 0; +} + +.list-group-horizontal .list-group-item:first-child { + border-top-left-radius: 3px; + border-bottom-left-radius: 3px; + border-top-right-radius: 0; +} + +.list-group-horizontal .list-group-item:last-child { + margin-right: 0; + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 0; +} + +@media (min-width: 576px) { + .list-group-horizontal-sm { + -ms-flex-direction: row; + flex-direction: row; + } + .list-group-horizontal-sm .list-group-item { + margin-right: -1px; + margin-bottom: 0; + } + .list-group-horizontal-sm .list-group-item:first-child { + border-top-left-radius: 3px; + border-bottom-left-radius: 3px; + border-top-right-radius: 0; + } + .list-group-horizontal-sm .list-group-item:last-child { + margin-right: 0; + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 0; + } +} + +@media (min-width: 768px) { + .list-group-horizontal-md { + -ms-flex-direction: row; + flex-direction: row; + } + .list-group-horizontal-md .list-group-item { + margin-right: -1px; + margin-bottom: 0; + } + .list-group-horizontal-md .list-group-item:first-child { + border-top-left-radius: 3px; + border-bottom-left-radius: 3px; + border-top-right-radius: 0; + } + .list-group-horizontal-md .list-group-item:last-child { + margin-right: 0; + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 0; + } +} + +@media (min-width: 992px) { + .list-group-horizontal-lg { + -ms-flex-direction: row; + flex-direction: row; + } + .list-group-horizontal-lg .list-group-item { + margin-right: -1px; + margin-bottom: 0; + } + .list-group-horizontal-lg .list-group-item:first-child { + border-top-left-radius: 3px; + border-bottom-left-radius: 3px; + border-top-right-radius: 0; + } + .list-group-horizontal-lg .list-group-item:last-child { + margin-right: 0; + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 0; + } +} + +@media (min-width: 1280px) { + .list-group-horizontal-xl { + -ms-flex-direction: row; + flex-direction: row; + } + .list-group-horizontal-xl .list-group-item { + margin-right: -1px; + margin-bottom: 0; + } + .list-group-horizontal-xl .list-group-item:first-child { + border-top-left-radius: 3px; + border-bottom-left-radius: 3px; + border-top-right-radius: 0; + } + .list-group-horizontal-xl .list-group-item:last-child { + margin-right: 0; + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 0; + } +} + +.list-group-flush .list-group-item { + border-right: 0; + border-left: 0; + border-radius: 0; +} + +.list-group-flush .list-group-item:last-child { + margin-bottom: -1px; +} + +.list-group-flush:first-child .list-group-item:first-child { + border-top: 0; +} + +.list-group-flush:last-child .list-group-item:last-child { + margin-bottom: 0; + border-bottom: 0; +} + +.list-group-item-primary { + color: #24426c; + background-color: #cbdbf2; +} + +.list-group-item-primary.list-group-item-action:hover, .list-group-item-primary.list-group-item-action:focus { + color: #24426c; + background-color: #b7cded; +} + +.list-group-item-primary.list-group-item-action.active { + color: #fff; + background-color: #24426c; + border-color: #24426c; +} + +.list-group-item-secondary { + color: #464a4e; + background-color: #dddfe2; +} + +.list-group-item-secondary.list-group-item-action:hover, .list-group-item-secondary.list-group-item-action:focus { + color: #464a4e; + background-color: #cfd2d6; +} + +.list-group-item-secondary.list-group-item-action.active { + color: #fff; + background-color: #464a4e; + border-color: #464a4e; +} + +.list-group-item-success { + color: #316100; + background-color: #d2ecb8; +} + +.list-group-item-success.list-group-item-action:hover, .list-group-item-success.list-group-item-action:focus { + color: #316100; + background-color: #c5e7a4; +} + +.list-group-item-success.list-group-item-action.active { + color: #fff; + background-color: #316100; + border-color: #316100; +} + +.list-group-item-info { + color: #24587e; + background-color: #cbe7fb; +} + +.list-group-item-info.list-group-item-action:hover, .list-group-item-info.list-group-item-action:focus { + color: #24587e; + background-color: #b3dcf9; +} + +.list-group-item-info.list-group-item-action.active { + color: #fff; + background-color: #24587e; + border-color: #24587e; +} + +.list-group-item-warning { + color: #7d6608; + background-color: #fbeebc; +} + +.list-group-item-warning.list-group-item-action:hover, .list-group-item-warning.list-group-item-action:focus { + color: #7d6608; + background-color: #fae8a4; +} + +.list-group-item-warning.list-group-item-action.active { + color: #fff; + background-color: #7d6608; + border-color: #7d6608; +} + +.list-group-item-danger { + color: #6b1110; + background-color: #f1c1c0; +} + +.list-group-item-danger.list-group-item-action:hover, .list-group-item-danger.list-group-item-action:focus { + color: #6b1110; + background-color: #ecacab; +} + +.list-group-item-danger.list-group-item-action.active { + color: #fff; + background-color: #6b1110; + border-color: #6b1110; +} + +.list-group-item-light { + color: #818182; + background-color: #fdfdfe; +} + +.list-group-item-light.list-group-item-action:hover, .list-group-item-light.list-group-item-action:focus { + color: #818182; + background-color: #ececf6; +} + +.list-group-item-light.list-group-item-action.active { + color: #fff; + background-color: #818182; + border-color: #818182; +} + +.list-group-item-dark { + color: #1b1e21; + background-color: #c6c8ca; +} + +.list-group-item-dark.list-group-item-action:hover, .list-group-item-dark.list-group-item-action:focus { + color: #1b1e21; + background-color: #b9bbbe; +} + +.list-group-item-dark.list-group-item-action.active { + color: #fff; + background-color: #1b1e21; + border-color: #1b1e21; +} + +.close { + float: right; + font-size: 1.40625rem; + 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):hover, .close:not(:disabled):not(.disabled):focus { + 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: 0.875rem; + background-color: rgba(255, 255, 255, 0.85); + background-clip: padding-box; + border: 1px solid rgba(0, 0, 0, 0.1); + box-shadow: 0 0.25rem 0.75rem rgba(0, 0, 0, 0.1); + -webkit-backdrop-filter: blur(10px); + backdrop-filter: blur(10px); + opacity: 0; + border-radius: 0.25rem; +} + +.toast:not(:last-child) { + margin-bottom: 0.75rem; +} + +.toast.showing { + opacity: 1; +} + +.toast.show { + display: block; + opacity: 1; +} + +.toast.hide { + display: none; +} + +.toast-header { + display: -ms-flexbox; + display: flex; + -ms-flex-align: center; + align-items: center; + padding: 0.25rem 0.75rem; + color: #868e96; + background-color: rgba(255, 255, 255, 0.85); + background-clip: padding-box; + border-bottom: 1px solid rgba(0, 0, 0, 0.05); +} + +.toast-body { + padding: 0.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: 0.5rem; + pointer-events: none; +} + +.modal.fade .modal-dialog { + transition: -webkit-transform 0.3s ease-out; + transition: transform 0.3s ease-out; + transition: transform 0.3s ease-out, -webkit-transform 0.3s ease-out; + -webkit-transform: translate(0, -50px); + transform: translate(0, -50px); +} + +@media (prefers-reduced-motion: reduce) { + .modal.fade .modal-dialog { + transition: none; + } +} + +.modal.show .modal-dialog { + -webkit-transform: none; + transform: none; +} + +.modal-dialog-scrollable { + 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-header, +.modal-dialog-scrollable .modal-footer { + -ms-flex-negative: 0; + flex-shrink: 0; +} + +.modal-dialog-scrollable .modal-body { + overflow-y: auto; +} + +.modal-dialog-centered { + display: -ms-flexbox; + display: flex; + -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 { + -ms-flex-direction: column; + flex-direction: column; + -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: -ms-flexbox; + display: flex; + -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, 0.2); + border-radius: 3px; + 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: 0.5; +} + +.modal-header { + display: -ms-flexbox; + display: flex; + -ms-flex-align: start; + align-items: flex-start; + -ms-flex-pack: justify; + justify-content: space-between; + padding: 1rem 1rem; + border-bottom: 1px solid rgba(0, 40, 100, 0.12); + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} + +.modal-header .close { + padding: 1rem 1rem; + margin: -1rem -1rem -1rem auto; +} + +.modal-title { + margin-bottom: 0; + line-height: 1.5; +} + +.modal-body { + position: relative; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + padding: 1rem; +} + +.modal-footer { + display: -ms-flexbox; + display: flex; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: end; + justify-content: flex-end; + padding: 1rem; + border-top: 1px solid rgba(0, 40, 100, 0.12); + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} + +.modal-footer > :not(:first-child) { + margin-left: .25rem; +} + +.modal-footer > :not(:last-child) { + margin-right: .25rem; +} + +.modal-scrollbar-measure { + position: absolute; + top: -9999px; + width: 50px; + height: 50px; + overflow: scroll; +} + +@media (min-width: 576px) { + .modal-dialog { + max-width: 500px; + margin: 1.75rem auto; + } + .modal-dialog-scrollable { + max-height: calc(100% - 3.5rem); + } + .modal-dialog-scrollable .modal-content { + max-height: calc(100vh - 3.5rem); + } + .modal-dialog-centered { + min-height: calc(100% - 3.5rem); + } + .modal-dialog-centered::before { + height: calc(100vh - 3.5rem); + } + .modal-sm { + max-width: 300px; + } +} + +@media (min-width: 992px) { + .modal-lg, + .modal-xl { + max-width: 800px; + } +} + +@media (min-width: 1280px) { + .modal-xl { + max-width: 1140px; + } +} + +.tooltip { + position: absolute; + z-index: 1070; + display: block; + margin: 0; + font-family: "Source Sans Pro", -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", Arial, 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: 0.875rem; + word-wrap: break-word; + opacity: 0; +} + +.tooltip.show { + opacity: 0.9; +} + +.tooltip .arrow { + position: absolute; + display: block; + width: 0.8rem; + height: 0.4rem; +} + +.tooltip .arrow::before { + position: absolute; + content: ""; + border-color: transparent; + border-style: solid; +} + +.bs-tooltip-top, .bs-tooltip-auto[x-placement^="top"] { + padding: 0.4rem 0; +} + +.bs-tooltip-top .arrow, .bs-tooltip-auto[x-placement^="top"] .arrow { + bottom: 0; +} + +.bs-tooltip-top .arrow::before, .bs-tooltip-auto[x-placement^="top"] .arrow::before { + top: 0; + border-width: 0.4rem 0.4rem 0; + border-top-color: #000; +} + +.bs-tooltip-right, .bs-tooltip-auto[x-placement^="right"] { + padding: 0 0.4rem; +} + +.bs-tooltip-right .arrow, .bs-tooltip-auto[x-placement^="right"] .arrow { + left: 0; + width: 0.4rem; + height: 0.8rem; +} + +.bs-tooltip-right .arrow::before, .bs-tooltip-auto[x-placement^="right"] .arrow::before { + right: 0; + border-width: 0.4rem 0.4rem 0.4rem 0; + border-right-color: #000; +} + +.bs-tooltip-bottom, .bs-tooltip-auto[x-placement^="bottom"] { + padding: 0.4rem 0; +} + +.bs-tooltip-bottom .arrow, .bs-tooltip-auto[x-placement^="bottom"] .arrow { + top: 0; +} + +.bs-tooltip-bottom .arrow::before, .bs-tooltip-auto[x-placement^="bottom"] .arrow::before { + bottom: 0; + border-width: 0 0.4rem 0.4rem; + border-bottom-color: #000; +} + +.bs-tooltip-left, .bs-tooltip-auto[x-placement^="left"] { + padding: 0 0.4rem; +} + +.bs-tooltip-left .arrow, .bs-tooltip-auto[x-placement^="left"] .arrow { + right: 0; + width: 0.4rem; + height: 0.8rem; +} + +.bs-tooltip-left .arrow::before, .bs-tooltip-auto[x-placement^="left"] .arrow::before { + left: 0; + border-width: 0.4rem 0 0.4rem 0.4rem; + border-left-color: #000; +} + +.tooltip-inner { + max-width: 200px; + padding: 0.25rem 0.5rem; + color: #fff; + text-align: center; + background-color: #000; + border-radius: 3px; +} + +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1060; + display: block; + max-width: 276px; + font-family: "Source Sans Pro", -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", Arial, 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: 0.875rem; + word-wrap: break-word; + background-color: #fff; + background-clip: padding-box; + border: 1px solid #dee3eb; + border-radius: 3px; +} + +.popover .arrow { + position: absolute; + display: block; + width: 0.5rem; + height: 0.5rem; + margin: 0 3px; +} + +.popover .arrow::before, .popover .arrow::after { + position: absolute; + display: block; + content: ""; + border-color: transparent; + border-style: solid; +} + +.bs-popover-top, .bs-popover-auto[x-placement^="top"] { + margin-bottom: 0.5rem; +} + +.bs-popover-top > .arrow, .bs-popover-auto[x-placement^="top"] > .arrow { + bottom: calc((0.5rem + 1px) * -1); +} + +.bs-popover-top > .arrow::before, .bs-popover-auto[x-placement^="top"] > .arrow::before { + bottom: 0; + border-width: 0.5rem 0.25rem 0; + border-top-color: #dee3eb; +} + +.bs-popover-top > .arrow::after, .bs-popover-auto[x-placement^="top"] > .arrow::after { + bottom: 1px; + border-width: 0.5rem 0.25rem 0; + border-top-color: #fff; +} + +.bs-popover-right, .bs-popover-auto[x-placement^="right"] { + margin-left: 0.5rem; +} + +.bs-popover-right > .arrow, .bs-popover-auto[x-placement^="right"] > .arrow { + left: calc((0.5rem + 1px) * -1); + width: 0.5rem; + height: 0.5rem; + margin: 3px 0; +} + +.bs-popover-right > .arrow::before, .bs-popover-auto[x-placement^="right"] > .arrow::before { + left: 0; + border-width: 0.25rem 0.5rem 0.25rem 0; + border-right-color: #dee3eb; +} + +.bs-popover-right > .arrow::after, .bs-popover-auto[x-placement^="right"] > .arrow::after { + left: 1px; + border-width: 0.25rem 0.5rem 0.25rem 0; + border-right-color: #fff; +} + +.bs-popover-bottom, .bs-popover-auto[x-placement^="bottom"] { + margin-top: 0.5rem; +} + +.bs-popover-bottom > .arrow, .bs-popover-auto[x-placement^="bottom"] > .arrow { + top: calc((0.5rem + 1px) * -1); +} + +.bs-popover-bottom > .arrow::before, .bs-popover-auto[x-placement^="bottom"] > .arrow::before { + top: 0; + border-width: 0 0.25rem 0.5rem 0.25rem; + border-bottom-color: #dee3eb; +} + +.bs-popover-bottom > .arrow::after, .bs-popover-auto[x-placement^="bottom"] > .arrow::after { + top: 1px; + border-width: 0 0.25rem 0.5rem 0.25rem; + border-bottom-color: #fff; +} + +.bs-popover-bottom .popover-header::before, .bs-popover-auto[x-placement^="bottom"] .popover-header::before { + position: absolute; + top: 0; + left: 50%; + display: block; + width: 0.5rem; + margin-left: -0.25rem; + content: ""; + border-bottom: 1px solid #f7f7f7; +} + +.bs-popover-left, .bs-popover-auto[x-placement^="left"] { + margin-right: 0.5rem; +} + +.bs-popover-left > .arrow, .bs-popover-auto[x-placement^="left"] > .arrow { + right: calc((0.5rem + 1px) * -1); + width: 0.5rem; + height: 0.5rem; + margin: 3px 0; +} + +.bs-popover-left > .arrow::before, .bs-popover-auto[x-placement^="left"] > .arrow::before { + right: 0; + border-width: 0.25rem 0 0.25rem 0.5rem; + border-left-color: #dee3eb; +} + +.bs-popover-left > .arrow::after, .bs-popover-auto[x-placement^="left"] > .arrow::after { + right: 1px; + border-width: 0.25rem 0 0.25rem 0.5rem; + border-left-color: #fff; +} + +.popover-header { + padding: 0.5rem 0.75rem; + margin-bottom: 0; + font-size: 0.9375rem; + color: inherit; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + border-top-left-radius: calc(3px - 1px); + border-top-right-radius: calc(3px - 1px); +} + +.popover-header:empty { + display: none; +} + +.popover-body { + padding: 0.75rem 1rem; + color: #6e7687; +} + +.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; + transition: -webkit-transform 0.6s ease-in-out; + transition: transform 0.6s ease-in-out; + transition: transform 0.6s ease-in-out, -webkit-transform 0.6s ease-in-out; +} + +@media (prefers-reduced-motion: reduce) { + .carousel-item { + transition: none; + } +} + +.carousel-item.active, +.carousel-item-next, +.carousel-item-prev { + display: block; +} + +.carousel-item-next:not(.carousel-item-left), +.active.carousel-item-right { + -webkit-transform: translateX(100%); + transform: translateX(100%); +} + +.carousel-item-prev:not(.carousel-item-right), +.active.carousel-item-left { + -webkit-transform: translateX(-100%); + transform: translateX(-100%); +} + +.carousel-fade .carousel-item { + opacity: 0; + transition-property: opacity; + -webkit-transform: none; + transform: none; +} + +.carousel-fade .carousel-item.active, +.carousel-fade .carousel-item-next.carousel-item-left, +.carousel-fade .carousel-item-prev.carousel-item-right { + z-index: 1; + opacity: 1; +} + +.carousel-fade .active.carousel-item-left, +.carousel-fade .active.carousel-item-right { + z-index: 0; + opacity: 0; + transition: 0s 0.6s opacity; +} + +@media (prefers-reduced-motion: reduce) { + .carousel-fade .active.carousel-item-left, + .carousel-fade .active.carousel-item-right { + transition: none; + } +} + +.carousel-control-prev, +.carousel-control-next { + position: absolute; + top: 0; + bottom: 0; + z-index: 1; + display: -ms-flexbox; + display: flex; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: center; + justify-content: center; + width: 15%; + color: #fff; + text-align: center; + opacity: 0.5; + transition: opacity 0.15s ease; +} + +@media (prefers-reduced-motion: reduce) { + .carousel-control-prev, + .carousel-control-next { + transition: none; + } +} + +.carousel-control-prev:hover, .carousel-control-prev:focus, +.carousel-control-next:hover, +.carousel-control-next:focus { + color: #fff; + text-decoration: none; + outline: 0; + opacity: 0.9; +} + +.carousel-control-prev { + left: 0; +} + +.carousel-control-next { + right: 0; +} + +.carousel-control-prev-icon, +.carousel-control-next-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,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3e%3c/svg%3e"); +} + +.carousel-control-next-icon { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3e%3c/svg%3e"); +} + +.carousel-indicators { + position: absolute; + right: 0; + bottom: 0; + left: 0; + z-index: 15; + display: -ms-flexbox; + display: flex; + -ms-flex-pack: center; + justify-content: center; + padding-left: 0; + margin-right: 15%; + margin-left: 15%; + list-style: none; +} + +.carousel-indicators li { + box-sizing: content-box; + -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; + transition: opacity 0.6s ease; +} + +@media (prefers-reduced-motion: reduce) { + .carousel-indicators li { + transition: none; + } +} + +.carousel-indicators .active { + opacity: 1; +} + +.carousel-caption { + position: absolute; + right: 15%; + bottom: 20px; + left: 15%; + z-index: 10; + padding-top: 20px; + padding-bottom: 20px; + color: #fff; + text-align: center; +} + +@-webkit-keyframes spinner-border { + to { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} + +@keyframes spinner-border { + to { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} + +.spinner-border { + display: inline-block; + width: 2rem; + height: 2rem; + vertical-align: text-bottom; + border: 0.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: 0.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: #467fcf !important; +} + +a.bg-primary:hover, a.bg-primary:focus, +button.bg-primary:hover, +button.bg-primary:focus { + background-color: #2f66b3 !important; +} + +.bg-secondary { + background-color: #868e96 !important; +} + +a.bg-secondary:hover, a.bg-secondary:focus, +button.bg-secondary:hover, +button.bg-secondary:focus { + background-color: #6c757d !important; +} + +.bg-success { + background-color: #5eba00 !important; +} + +a.bg-success:hover, a.bg-success:focus, +button.bg-success:hover, +button.bg-success:focus { + background-color: #448700 !important; +} + +.bg-info { + background-color: #45aaf2 !important; +} + +a.bg-info:hover, a.bg-info:focus, +button.bg-info:hover, +button.bg-info:focus { + background-color: #1594ef !important; +} + +.bg-warning { + background-color: #f1c40f !important; +} + +a.bg-warning:hover, a.bg-warning:focus, +button.bg-warning:hover, +button.bg-warning:focus { + background-color: #c29d0b !important; +} + +.bg-danger { + background-color: #cd201f !important; +} + +a.bg-danger:hover, a.bg-danger:focus, +button.bg-danger:hover, +button.bg-danger:focus { + background-color: #a11918 !important; +} + +.bg-light { + background-color: #f8f9fa !important; +} + +a.bg-light:hover, a.bg-light:focus, +button.bg-light:hover, +button.bg-light:focus { + background-color: #dae0e5 !important; +} + +.bg-dark { + background-color: #343a40 !important; +} + +a.bg-dark:hover, a.bg-dark:focus, +button.bg-dark:hover, +button.bg-dark:focus { + background-color: #1d2124 !important; +} + +.bg-white { + background-color: #fff !important; +} + +.bg-transparent { + background-color: transparent !important; +} + +.border { + border: 1px solid rgba(0, 40, 100, 0.12) !important; +} + +.border-top { + border-top: 1px solid rgba(0, 40, 100, 0.12) !important; +} + +.border-right { + border-right: 1px solid rgba(0, 40, 100, 0.12) !important; +} + +.border-bottom { + border-bottom: 1px solid rgba(0, 40, 100, 0.12) !important; +} + +.border-left { + border-left: 1px solid rgba(0, 40, 100, 0.12) !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: #467fcf !important; +} + +.border-secondary { + border-color: #868e96 !important; +} + +.border-success { + border-color: #5eba00 !important; +} + +.border-info { + border-color: #45aaf2 !important; +} + +.border-warning { + border-color: #f1c40f !important; +} + +.border-danger { + border-color: #cd201f !important; +} + +.border-light { + border-color: #f8f9fa !important; +} + +.border-dark { + border-color: #343a40 !important; +} + +.border-white { + border-color: #fff !important; +} + +.rounded-sm { + border-radius: 3px !important; +} + +.rounded { + border-radius: 3px !important; +} + +.rounded-top { + border-top-left-radius: 3px !important; + border-top-right-radius: 3px !important; +} + +.rounded-right { + border-top-right-radius: 3px !important; + border-bottom-right-radius: 3px !important; +} + +.rounded-bottom { + border-bottom-right-radius: 3px !important; + border-bottom-left-radius: 3px !important; +} + +.rounded-left { + border-top-left-radius: 3px !important; + border-bottom-left-radius: 3px !important; +} + +.rounded-lg { + border-radius: 3px !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: -ms-flexbox !important; + display: flex !important; +} + +.d-inline-flex { + 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: -ms-flexbox !important; + display: flex !important; + } + .d-sm-inline-flex { + 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: -ms-flexbox !important; + display: flex !important; + } + .d-md-inline-flex { + 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: -ms-flexbox !important; + display: flex !important; + } + .d-lg-inline-flex { + display: -ms-inline-flexbox !important; + display: inline-flex !important; + } +} + +@media (min-width: 1280px) { + .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: -ms-flexbox !important; + display: flex !important; + } + .d-xl-inline-flex { + 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: -ms-flexbox !important; + display: flex !important; + } + .d-print-inline-flex { + 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 iframe, +.embed-responsive embed, +.embed-responsive object, +.embed-responsive video { + position: absolute; + top: 0; + bottom: 0; + left: 0; + width: 100%; + height: 100%; + border: 0; +} + +.embed-responsive-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 { + -ms-flex-direction: row !important; + flex-direction: row !important; +} + +.flex-column { + -ms-flex-direction: column !important; + flex-direction: column !important; +} + +.flex-row-reverse { + -ms-flex-direction: row-reverse !important; + flex-direction: row-reverse !important; +} + +.flex-column-reverse { + -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 { + -ms-flex: 1 1 auto !important; + flex: 1 1 auto !important; +} + +.flex-grow-0 { + -ms-flex-positive: 0 !important; + flex-grow: 0 !important; +} + +.flex-grow-1 { + -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 { + -ms-flex-pack: start !important; + justify-content: flex-start !important; +} + +.justify-content-end { + -ms-flex-pack: end !important; + justify-content: flex-end !important; +} + +.justify-content-center { + -ms-flex-pack: center !important; + justify-content: center !important; +} + +.justify-content-between { + -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 { + -ms-flex-align: start !important; + align-items: flex-start !important; +} + +.align-items-end { + -ms-flex-align: end !important; + align-items: flex-end !important; +} + +.align-items-center { + -ms-flex-align: center !important; + align-items: center !important; +} + +.align-items-baseline { + -ms-flex-align: baseline !important; + align-items: baseline !important; +} + +.align-items-stretch { + -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 { + -ms-flex-direction: row !important; + flex-direction: row !important; + } + .flex-sm-column { + -ms-flex-direction: column !important; + flex-direction: column !important; + } + .flex-sm-row-reverse { + -ms-flex-direction: row-reverse !important; + flex-direction: row-reverse !important; + } + .flex-sm-column-reverse { + -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 { + -ms-flex: 1 1 auto !important; + flex: 1 1 auto !important; + } + .flex-sm-grow-0 { + -ms-flex-positive: 0 !important; + flex-grow: 0 !important; + } + .flex-sm-grow-1 { + -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 { + -ms-flex-pack: start !important; + justify-content: flex-start !important; + } + .justify-content-sm-end { + -ms-flex-pack: end !important; + justify-content: flex-end !important; + } + .justify-content-sm-center { + -ms-flex-pack: center !important; + justify-content: center !important; + } + .justify-content-sm-between { + -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 { + -ms-flex-align: start !important; + align-items: flex-start !important; + } + .align-items-sm-end { + -ms-flex-align: end !important; + align-items: flex-end !important; + } + .align-items-sm-center { + -ms-flex-align: center !important; + align-items: center !important; + } + .align-items-sm-baseline { + -ms-flex-align: baseline !important; + align-items: baseline !important; + } + .align-items-sm-stretch { + -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 { + -ms-flex-direction: row !important; + flex-direction: row !important; + } + .flex-md-column { + -ms-flex-direction: column !important; + flex-direction: column !important; + } + .flex-md-row-reverse { + -ms-flex-direction: row-reverse !important; + flex-direction: row-reverse !important; + } + .flex-md-column-reverse { + -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 { + -ms-flex: 1 1 auto !important; + flex: 1 1 auto !important; + } + .flex-md-grow-0 { + -ms-flex-positive: 0 !important; + flex-grow: 0 !important; + } + .flex-md-grow-1 { + -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 { + -ms-flex-pack: start !important; + justify-content: flex-start !important; + } + .justify-content-md-end { + -ms-flex-pack: end !important; + justify-content: flex-end !important; + } + .justify-content-md-center { + -ms-flex-pack: center !important; + justify-content: center !important; + } + .justify-content-md-between { + -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 { + -ms-flex-align: start !important; + align-items: flex-start !important; + } + .align-items-md-end { + -ms-flex-align: end !important; + align-items: flex-end !important; + } + .align-items-md-center { + -ms-flex-align: center !important; + align-items: center !important; + } + .align-items-md-baseline { + -ms-flex-align: baseline !important; + align-items: baseline !important; + } + .align-items-md-stretch { + -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 { + -ms-flex-direction: row !important; + flex-direction: row !important; + } + .flex-lg-column { + -ms-flex-direction: column !important; + flex-direction: column !important; + } + .flex-lg-row-reverse { + -ms-flex-direction: row-reverse !important; + flex-direction: row-reverse !important; + } + .flex-lg-column-reverse { + -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 { + -ms-flex: 1 1 auto !important; + flex: 1 1 auto !important; + } + .flex-lg-grow-0 { + -ms-flex-positive: 0 !important; + flex-grow: 0 !important; + } + .flex-lg-grow-1 { + -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 { + -ms-flex-pack: start !important; + justify-content: flex-start !important; + } + .justify-content-lg-end { + -ms-flex-pack: end !important; + justify-content: flex-end !important; + } + .justify-content-lg-center { + -ms-flex-pack: center !important; + justify-content: center !important; + } + .justify-content-lg-between { + -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 { + -ms-flex-align: start !important; + align-items: flex-start !important; + } + .align-items-lg-end { + -ms-flex-align: end !important; + align-items: flex-end !important; + } + .align-items-lg-center { + -ms-flex-align: center !important; + align-items: center !important; + } + .align-items-lg-baseline { + -ms-flex-align: baseline !important; + align-items: baseline !important; + } + .align-items-lg-stretch { + -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: 1280px) { + .flex-xl-row { + -ms-flex-direction: row !important; + flex-direction: row !important; + } + .flex-xl-column { + -ms-flex-direction: column !important; + flex-direction: column !important; + } + .flex-xl-row-reverse { + -ms-flex-direction: row-reverse !important; + flex-direction: row-reverse !important; + } + .flex-xl-column-reverse { + -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 { + -ms-flex: 1 1 auto !important; + flex: 1 1 auto !important; + } + .flex-xl-grow-0 { + -ms-flex-positive: 0 !important; + flex-grow: 0 !important; + } + .flex-xl-grow-1 { + -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 { + -ms-flex-pack: start !important; + justify-content: flex-start !important; + } + .justify-content-xl-end { + -ms-flex-pack: end !important; + justify-content: flex-end !important; + } + .justify-content-xl-center { + -ms-flex-pack: center !important; + justify-content: center !important; + } + .justify-content-xl-between { + -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 { + -ms-flex-align: start !important; + align-items: flex-start !important; + } + .align-items-xl-end { + -ms-flex-align: end !important; + align-items: flex-end !important; + } + .align-items-xl-center { + -ms-flex-align: center !important; + align-items: center !important; + } + .align-items-xl-baseline { + -ms-flex-align: baseline !important; + align-items: baseline !important; + } + .align-items-xl-stretch { + -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: 1280px) { + .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 { + position: fixed; + top: 0; + right: 0; + left: 0; + z-index: 1030; +} + +.fixed-bottom { + position: fixed; + right: 0; + bottom: 0; + left: 0; + z-index: 1030; +} + +@supports ((position: -webkit-sticky) or (position: sticky)) { + .sticky-top { + position: -webkit-sticky; + position: sticky; + top: 0; + z-index: 1020; + } +} + +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border: 0; +} + +.sr-only-focusable:active, .sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + overflow: visible; + clip: auto; + white-space: normal; +} + +.shadow-sm { + box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important; +} + +.shadow { + box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important; +} + +.shadow-lg { + box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important; +} + +.shadow-none { + box-shadow: none !important; +} + +.w-25 { + width: 25% !important; +} + +.w-50 { + width: 50% !important; +} + +.w-75 { + width: 75% !important; +} + +.w-100 { + width: 100% !important; +} + +.w-auto { + width: auto !important; +} + +.w-0 { + width: 0 !important; +} + +.w-1 { + width: 0.25rem !important; +} + +.w-2 { + width: 0.5rem !important; +} + +.w-3 { + width: 0.75rem !important; +} + +.w-4 { + width: 1rem !important; +} + +.w-5 { + width: 1.5rem !important; +} + +.w-6 { + width: 2rem !important; +} + +.w-7 { + width: 3rem !important; +} + +.w-8 { + width: 4rem !important; +} + +.w-9 { + width: 6rem !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; +} + +.h-0 { + height: 0 !important; +} + +.h-1 { + height: 0.25rem !important; +} + +.h-2 { + height: 0.5rem !important; +} + +.h-3 { + height: 0.75rem !important; +} + +.h-4 { + height: 1rem !important; +} + +.h-5 { + height: 1.5rem !important; +} + +.h-6 { + height: 2rem !important; +} + +.h-7 { + height: 3rem !important; +} + +.h-8 { + height: 4rem !important; +} + +.h-9 { + height: 6rem !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: rgba(0, 0, 0, 0); +} + +.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: 0.25rem !important; +} + +.mt-1, +.my-1 { + margin-top: 0.25rem !important; +} + +.mr-1, +.mx-1 { + margin-right: 0.25rem !important; +} + +.mb-1, +.my-1 { + margin-bottom: 0.25rem !important; +} + +.ml-1, +.mx-1 { + margin-left: 0.25rem !important; +} + +.m-2 { + margin: 0.5rem !important; +} + +.mt-2, +.my-2 { + margin-top: 0.5rem !important; +} + +.mr-2, +.mx-2 { + margin-right: 0.5rem !important; +} + +.mb-2, +.my-2 { + margin-bottom: 0.5rem !important; +} + +.ml-2, +.mx-2 { + margin-left: 0.5rem !important; +} + +.m-3 { + margin: 0.75rem !important; +} + +.mt-3, +.my-3 { + margin-top: 0.75rem !important; +} + +.mr-3, +.mx-3 { + margin-right: 0.75rem !important; +} + +.mb-3, +.my-3 { + margin-bottom: 0.75rem !important; +} + +.ml-3, +.mx-3 { + margin-left: 0.75rem !important; +} + +.m-4 { + margin: 1rem !important; +} + +.mt-4, +.my-4 { + margin-top: 1rem !important; +} + +.mr-4, +.mx-4 { + margin-right: 1rem !important; +} + +.mb-4, +.my-4 { + margin-bottom: 1rem !important; +} + +.ml-4, +.mx-4 { + margin-left: 1rem !important; +} + +.m-5 { + margin: 1.5rem !important; +} + +.mt-5, +.my-5 { + margin-top: 1.5rem !important; +} + +.mr-5, +.mx-5 { + margin-right: 1.5rem !important; +} + +.mb-5, +.my-5 { + margin-bottom: 1.5rem !important; +} + +.ml-5, +.mx-5 { + margin-left: 1.5rem !important; +} + +.m-6 { + margin: 2rem !important; +} + +.mt-6, +.my-6 { + margin-top: 2rem !important; +} + +.mr-6, +.mx-6 { + margin-right: 2rem !important; +} + +.mb-6, +.my-6 { + margin-bottom: 2rem !important; +} + +.ml-6, +.mx-6 { + margin-left: 2rem !important; +} + +.m-7 { + margin: 3rem !important; +} + +.mt-7, +.my-7 { + margin-top: 3rem !important; +} + +.mr-7, +.mx-7 { + margin-right: 3rem !important; +} + +.mb-7, +.my-7 { + margin-bottom: 3rem !important; +} + +.ml-7, +.mx-7 { + margin-left: 3rem !important; +} + +.m-8 { + margin: 4rem !important; +} + +.mt-8, +.my-8 { + margin-top: 4rem !important; +} + +.mr-8, +.mx-8 { + margin-right: 4rem !important; +} + +.mb-8, +.my-8 { + margin-bottom: 4rem !important; +} + +.ml-8, +.mx-8 { + margin-left: 4rem !important; +} + +.m-9 { + margin: 6rem !important; +} + +.mt-9, +.my-9 { + margin-top: 6rem !important; +} + +.mr-9, +.mx-9 { + margin-right: 6rem !important; +} + +.mb-9, +.my-9 { + margin-bottom: 6rem !important; +} + +.ml-9, +.mx-9 { + margin-left: 6rem !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: 0.25rem !important; +} + +.pt-1, +.py-1 { + padding-top: 0.25rem !important; +} + +.pr-1, +.px-1 { + padding-right: 0.25rem !important; +} + +.pb-1, +.py-1 { + padding-bottom: 0.25rem !important; +} + +.pl-1, +.px-1 { + padding-left: 0.25rem !important; +} + +.p-2 { + padding: 0.5rem !important; +} + +.pt-2, +.py-2 { + padding-top: 0.5rem !important; +} + +.pr-2, +.px-2 { + padding-right: 0.5rem !important; +} + +.pb-2, +.py-2 { + padding-bottom: 0.5rem !important; +} + +.pl-2, +.px-2 { + padding-left: 0.5rem !important; +} + +.p-3 { + padding: 0.75rem !important; +} + +.pt-3, +.py-3 { + padding-top: 0.75rem !important; +} + +.pr-3, +.px-3 { + padding-right: 0.75rem !important; +} + +.pb-3, +.py-3 { + padding-bottom: 0.75rem !important; +} + +.pl-3, +.px-3 { + padding-left: 0.75rem !important; +} + +.p-4 { + padding: 1rem !important; +} + +.pt-4, +.py-4 { + padding-top: 1rem !important; +} + +.pr-4, +.px-4 { + padding-right: 1rem !important; +} + +.pb-4, +.py-4 { + padding-bottom: 1rem !important; +} + +.pl-4, +.px-4 { + padding-left: 1rem !important; +} + +.p-5 { + padding: 1.5rem !important; +} + +.pt-5, +.py-5 { + padding-top: 1.5rem !important; +} + +.pr-5, +.px-5 { + padding-right: 1.5rem !important; +} + +.pb-5, +.py-5 { + padding-bottom: 1.5rem !important; +} + +.pl-5, +.px-5 { + padding-left: 1.5rem !important; +} + +.p-6 { + padding: 2rem !important; +} + +.pt-6, +.py-6 { + padding-top: 2rem !important; +} + +.pr-6, +.px-6 { + padding-right: 2rem !important; +} + +.pb-6, +.py-6 { + padding-bottom: 2rem !important; +} + +.pl-6, +.px-6 { + padding-left: 2rem !important; +} + +.p-7 { + padding: 3rem !important; +} + +.pt-7, +.py-7 { + padding-top: 3rem !important; +} + +.pr-7, +.px-7 { + padding-right: 3rem !important; +} + +.pb-7, +.py-7 { + padding-bottom: 3rem !important; +} + +.pl-7, +.px-7 { + padding-left: 3rem !important; +} + +.p-8 { + padding: 4rem !important; +} + +.pt-8, +.py-8 { + padding-top: 4rem !important; +} + +.pr-8, +.px-8 { + padding-right: 4rem !important; +} + +.pb-8, +.py-8 { + padding-bottom: 4rem !important; +} + +.pl-8, +.px-8 { + padding-left: 4rem !important; +} + +.p-9 { + padding: 6rem !important; +} + +.pt-9, +.py-9 { + padding-top: 6rem !important; +} + +.pr-9, +.px-9 { + padding-right: 6rem !important; +} + +.pb-9, +.py-9 { + padding-bottom: 6rem !important; +} + +.pl-9, +.px-9 { + padding-left: 6rem !important; +} + +.m-n1 { + margin: -0.25rem !important; +} + +.mt-n1, +.my-n1 { + margin-top: -0.25rem !important; +} + +.mr-n1, +.mx-n1 { + margin-right: -0.25rem !important; +} + +.mb-n1, +.my-n1 { + margin-bottom: -0.25rem !important; +} + +.ml-n1, +.mx-n1 { + margin-left: -0.25rem !important; +} + +.m-n2 { + margin: -0.5rem !important; +} + +.mt-n2, +.my-n2 { + margin-top: -0.5rem !important; +} + +.mr-n2, +.mx-n2 { + margin-right: -0.5rem !important; +} + +.mb-n2, +.my-n2 { + margin-bottom: -0.5rem !important; +} + +.ml-n2, +.mx-n2 { + margin-left: -0.5rem !important; +} + +.m-n3 { + margin: -0.75rem !important; +} + +.mt-n3, +.my-n3 { + margin-top: -0.75rem !important; +} + +.mr-n3, +.mx-n3 { + margin-right: -0.75rem !important; +} + +.mb-n3, +.my-n3 { + margin-bottom: -0.75rem !important; +} + +.ml-n3, +.mx-n3 { + margin-left: -0.75rem !important; +} + +.m-n4 { + margin: -1rem !important; +} + +.mt-n4, +.my-n4 { + margin-top: -1rem !important; +} + +.mr-n4, +.mx-n4 { + margin-right: -1rem !important; +} + +.mb-n4, +.my-n4 { + margin-bottom: -1rem !important; +} + +.ml-n4, +.mx-n4 { + margin-left: -1rem !important; +} + +.m-n5 { + margin: -1.5rem !important; +} + +.mt-n5, +.my-n5 { + margin-top: -1.5rem !important; +} + +.mr-n5, +.mx-n5 { + margin-right: -1.5rem !important; +} + +.mb-n5, +.my-n5 { + margin-bottom: -1.5rem !important; +} + +.ml-n5, +.mx-n5 { + margin-left: -1.5rem !important; +} + +.m-n6 { + margin: -2rem !important; +} + +.mt-n6, +.my-n6 { + margin-top: -2rem !important; +} + +.mr-n6, +.mx-n6 { + margin-right: -2rem !important; +} + +.mb-n6, +.my-n6 { + margin-bottom: -2rem !important; +} + +.ml-n6, +.mx-n6 { + margin-left: -2rem !important; +} + +.m-n7 { + margin: -3rem !important; +} + +.mt-n7, +.my-n7 { + margin-top: -3rem !important; +} + +.mr-n7, +.mx-n7 { + margin-right: -3rem !important; +} + +.mb-n7, +.my-n7 { + margin-bottom: -3rem !important; +} + +.ml-n7, +.mx-n7 { + margin-left: -3rem !important; +} + +.m-n8 { + margin: -4rem !important; +} + +.mt-n8, +.my-n8 { + margin-top: -4rem !important; +} + +.mr-n8, +.mx-n8 { + margin-right: -4rem !important; +} + +.mb-n8, +.my-n8 { + margin-bottom: -4rem !important; +} + +.ml-n8, +.mx-n8 { + margin-left: -4rem !important; +} + +.m-n9 { + margin: -6rem !important; +} + +.mt-n9, +.my-n9 { + margin-top: -6rem !important; +} + +.mr-n9, +.mx-n9 { + margin-right: -6rem !important; +} + +.mb-n9, +.my-n9 { + margin-bottom: -6rem !important; +} + +.ml-n9, +.mx-n9 { + margin-left: -6rem !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: 0.25rem !important; + } + .mt-sm-1, + .my-sm-1 { + margin-top: 0.25rem !important; + } + .mr-sm-1, + .mx-sm-1 { + margin-right: 0.25rem !important; + } + .mb-sm-1, + .my-sm-1 { + margin-bottom: 0.25rem !important; + } + .ml-sm-1, + .mx-sm-1 { + margin-left: 0.25rem !important; + } + .m-sm-2 { + margin: 0.5rem !important; + } + .mt-sm-2, + .my-sm-2 { + margin-top: 0.5rem !important; + } + .mr-sm-2, + .mx-sm-2 { + margin-right: 0.5rem !important; + } + .mb-sm-2, + .my-sm-2 { + margin-bottom: 0.5rem !important; + } + .ml-sm-2, + .mx-sm-2 { + margin-left: 0.5rem !important; + } + .m-sm-3 { + margin: 0.75rem !important; + } + .mt-sm-3, + .my-sm-3 { + margin-top: 0.75rem !important; + } + .mr-sm-3, + .mx-sm-3 { + margin-right: 0.75rem !important; + } + .mb-sm-3, + .my-sm-3 { + margin-bottom: 0.75rem !important; + } + .ml-sm-3, + .mx-sm-3 { + margin-left: 0.75rem !important; + } + .m-sm-4 { + margin: 1rem !important; + } + .mt-sm-4, + .my-sm-4 { + margin-top: 1rem !important; + } + .mr-sm-4, + .mx-sm-4 { + margin-right: 1rem !important; + } + .mb-sm-4, + .my-sm-4 { + margin-bottom: 1rem !important; + } + .ml-sm-4, + .mx-sm-4 { + margin-left: 1rem !important; + } + .m-sm-5 { + margin: 1.5rem !important; + } + .mt-sm-5, + .my-sm-5 { + margin-top: 1.5rem !important; + } + .mr-sm-5, + .mx-sm-5 { + margin-right: 1.5rem !important; + } + .mb-sm-5, + .my-sm-5 { + margin-bottom: 1.5rem !important; + } + .ml-sm-5, + .mx-sm-5 { + margin-left: 1.5rem !important; + } + .m-sm-6 { + margin: 2rem !important; + } + .mt-sm-6, + .my-sm-6 { + margin-top: 2rem !important; + } + .mr-sm-6, + .mx-sm-6 { + margin-right: 2rem !important; + } + .mb-sm-6, + .my-sm-6 { + margin-bottom: 2rem !important; + } + .ml-sm-6, + .mx-sm-6 { + margin-left: 2rem !important; + } + .m-sm-7 { + margin: 3rem !important; + } + .mt-sm-7, + .my-sm-7 { + margin-top: 3rem !important; + } + .mr-sm-7, + .mx-sm-7 { + margin-right: 3rem !important; + } + .mb-sm-7, + .my-sm-7 { + margin-bottom: 3rem !important; + } + .ml-sm-7, + .mx-sm-7 { + margin-left: 3rem !important; + } + .m-sm-8 { + margin: 4rem !important; + } + .mt-sm-8, + .my-sm-8 { + margin-top: 4rem !important; + } + .mr-sm-8, + .mx-sm-8 { + margin-right: 4rem !important; + } + .mb-sm-8, + .my-sm-8 { + margin-bottom: 4rem !important; + } + .ml-sm-8, + .mx-sm-8 { + margin-left: 4rem !important; + } + .m-sm-9 { + margin: 6rem !important; + } + .mt-sm-9, + .my-sm-9 { + margin-top: 6rem !important; + } + .mr-sm-9, + .mx-sm-9 { + margin-right: 6rem !important; + } + .mb-sm-9, + .my-sm-9 { + margin-bottom: 6rem !important; + } + .ml-sm-9, + .mx-sm-9 { + margin-left: 6rem !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: 0.25rem !important; + } + .pt-sm-1, + .py-sm-1 { + padding-top: 0.25rem !important; + } + .pr-sm-1, + .px-sm-1 { + padding-right: 0.25rem !important; + } + .pb-sm-1, + .py-sm-1 { + padding-bottom: 0.25rem !important; + } + .pl-sm-1, + .px-sm-1 { + padding-left: 0.25rem !important; + } + .p-sm-2 { + padding: 0.5rem !important; + } + .pt-sm-2, + .py-sm-2 { + padding-top: 0.5rem !important; + } + .pr-sm-2, + .px-sm-2 { + padding-right: 0.5rem !important; + } + .pb-sm-2, + .py-sm-2 { + padding-bottom: 0.5rem !important; + } + .pl-sm-2, + .px-sm-2 { + padding-left: 0.5rem !important; + } + .p-sm-3 { + padding: 0.75rem !important; + } + .pt-sm-3, + .py-sm-3 { + padding-top: 0.75rem !important; + } + .pr-sm-3, + .px-sm-3 { + padding-right: 0.75rem !important; + } + .pb-sm-3, + .py-sm-3 { + padding-bottom: 0.75rem !important; + } + .pl-sm-3, + .px-sm-3 { + padding-left: 0.75rem !important; + } + .p-sm-4 { + padding: 1rem !important; + } + .pt-sm-4, + .py-sm-4 { + padding-top: 1rem !important; + } + .pr-sm-4, + .px-sm-4 { + padding-right: 1rem !important; + } + .pb-sm-4, + .py-sm-4 { + padding-bottom: 1rem !important; + } + .pl-sm-4, + .px-sm-4 { + padding-left: 1rem !important; + } + .p-sm-5 { + padding: 1.5rem !important; + } + .pt-sm-5, + .py-sm-5 { + padding-top: 1.5rem !important; + } + .pr-sm-5, + .px-sm-5 { + padding-right: 1.5rem !important; + } + .pb-sm-5, + .py-sm-5 { + padding-bottom: 1.5rem !important; + } + .pl-sm-5, + .px-sm-5 { + padding-left: 1.5rem !important; + } + .p-sm-6 { + padding: 2rem !important; + } + .pt-sm-6, + .py-sm-6 { + padding-top: 2rem !important; + } + .pr-sm-6, + .px-sm-6 { + padding-right: 2rem !important; + } + .pb-sm-6, + .py-sm-6 { + padding-bottom: 2rem !important; + } + .pl-sm-6, + .px-sm-6 { + padding-left: 2rem !important; + } + .p-sm-7 { + padding: 3rem !important; + } + .pt-sm-7, + .py-sm-7 { + padding-top: 3rem !important; + } + .pr-sm-7, + .px-sm-7 { + padding-right: 3rem !important; + } + .pb-sm-7, + .py-sm-7 { + padding-bottom: 3rem !important; + } + .pl-sm-7, + .px-sm-7 { + padding-left: 3rem !important; + } + .p-sm-8 { + padding: 4rem !important; + } + .pt-sm-8, + .py-sm-8 { + padding-top: 4rem !important; + } + .pr-sm-8, + .px-sm-8 { + padding-right: 4rem !important; + } + .pb-sm-8, + .py-sm-8 { + padding-bottom: 4rem !important; + } + .pl-sm-8, + .px-sm-8 { + padding-left: 4rem !important; + } + .p-sm-9 { + padding: 6rem !important; + } + .pt-sm-9, + .py-sm-9 { + padding-top: 6rem !important; + } + .pr-sm-9, + .px-sm-9 { + padding-right: 6rem !important; + } + .pb-sm-9, + .py-sm-9 { + padding-bottom: 6rem !important; + } + .pl-sm-9, + .px-sm-9 { + padding-left: 6rem !important; + } + .m-sm-n1 { + margin: -0.25rem !important; + } + .mt-sm-n1, + .my-sm-n1 { + margin-top: -0.25rem !important; + } + .mr-sm-n1, + .mx-sm-n1 { + margin-right: -0.25rem !important; + } + .mb-sm-n1, + .my-sm-n1 { + margin-bottom: -0.25rem !important; + } + .ml-sm-n1, + .mx-sm-n1 { + margin-left: -0.25rem !important; + } + .m-sm-n2 { + margin: -0.5rem !important; + } + .mt-sm-n2, + .my-sm-n2 { + margin-top: -0.5rem !important; + } + .mr-sm-n2, + .mx-sm-n2 { + margin-right: -0.5rem !important; + } + .mb-sm-n2, + .my-sm-n2 { + margin-bottom: -0.5rem !important; + } + .ml-sm-n2, + .mx-sm-n2 { + margin-left: -0.5rem !important; + } + .m-sm-n3 { + margin: -0.75rem !important; + } + .mt-sm-n3, + .my-sm-n3 { + margin-top: -0.75rem !important; + } + .mr-sm-n3, + .mx-sm-n3 { + margin-right: -0.75rem !important; + } + .mb-sm-n3, + .my-sm-n3 { + margin-bottom: -0.75rem !important; + } + .ml-sm-n3, + .mx-sm-n3 { + margin-left: -0.75rem !important; + } + .m-sm-n4 { + margin: -1rem !important; + } + .mt-sm-n4, + .my-sm-n4 { + margin-top: -1rem !important; + } + .mr-sm-n4, + .mx-sm-n4 { + margin-right: -1rem !important; + } + .mb-sm-n4, + .my-sm-n4 { + margin-bottom: -1rem !important; + } + .ml-sm-n4, + .mx-sm-n4 { + margin-left: -1rem !important; + } + .m-sm-n5 { + margin: -1.5rem !important; + } + .mt-sm-n5, + .my-sm-n5 { + margin-top: -1.5rem !important; + } + .mr-sm-n5, + .mx-sm-n5 { + margin-right: -1.5rem !important; + } + .mb-sm-n5, + .my-sm-n5 { + margin-bottom: -1.5rem !important; + } + .ml-sm-n5, + .mx-sm-n5 { + margin-left: -1.5rem !important; + } + .m-sm-n6 { + margin: -2rem !important; + } + .mt-sm-n6, + .my-sm-n6 { + margin-top: -2rem !important; + } + .mr-sm-n6, + .mx-sm-n6 { + margin-right: -2rem !important; + } + .mb-sm-n6, + .my-sm-n6 { + margin-bottom: -2rem !important; + } + .ml-sm-n6, + .mx-sm-n6 { + margin-left: -2rem !important; + } + .m-sm-n7 { + margin: -3rem !important; + } + .mt-sm-n7, + .my-sm-n7 { + margin-top: -3rem !important; + } + .mr-sm-n7, + .mx-sm-n7 { + margin-right: -3rem !important; + } + .mb-sm-n7, + .my-sm-n7 { + margin-bottom: -3rem !important; + } + .ml-sm-n7, + .mx-sm-n7 { + margin-left: -3rem !important; + } + .m-sm-n8 { + margin: -4rem !important; + } + .mt-sm-n8, + .my-sm-n8 { + margin-top: -4rem !important; + } + .mr-sm-n8, + .mx-sm-n8 { + margin-right: -4rem !important; + } + .mb-sm-n8, + .my-sm-n8 { + margin-bottom: -4rem !important; + } + .ml-sm-n8, + .mx-sm-n8 { + margin-left: -4rem !important; + } + .m-sm-n9 { + margin: -6rem !important; + } + .mt-sm-n9, + .my-sm-n9 { + margin-top: -6rem !important; + } + .mr-sm-n9, + .mx-sm-n9 { + margin-right: -6rem !important; + } + .mb-sm-n9, + .my-sm-n9 { + margin-bottom: -6rem !important; + } + .ml-sm-n9, + .mx-sm-n9 { + margin-left: -6rem !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: 0.25rem !important; + } + .mt-md-1, + .my-md-1 { + margin-top: 0.25rem !important; + } + .mr-md-1, + .mx-md-1 { + margin-right: 0.25rem !important; + } + .mb-md-1, + .my-md-1 { + margin-bottom: 0.25rem !important; + } + .ml-md-1, + .mx-md-1 { + margin-left: 0.25rem !important; + } + .m-md-2 { + margin: 0.5rem !important; + } + .mt-md-2, + .my-md-2 { + margin-top: 0.5rem !important; + } + .mr-md-2, + .mx-md-2 { + margin-right: 0.5rem !important; + } + .mb-md-2, + .my-md-2 { + margin-bottom: 0.5rem !important; + } + .ml-md-2, + .mx-md-2 { + margin-left: 0.5rem !important; + } + .m-md-3 { + margin: 0.75rem !important; + } + .mt-md-3, + .my-md-3 { + margin-top: 0.75rem !important; + } + .mr-md-3, + .mx-md-3 { + margin-right: 0.75rem !important; + } + .mb-md-3, + .my-md-3 { + margin-bottom: 0.75rem !important; + } + .ml-md-3, + .mx-md-3 { + margin-left: 0.75rem !important; + } + .m-md-4 { + margin: 1rem !important; + } + .mt-md-4, + .my-md-4 { + margin-top: 1rem !important; + } + .mr-md-4, + .mx-md-4 { + margin-right: 1rem !important; + } + .mb-md-4, + .my-md-4 { + margin-bottom: 1rem !important; + } + .ml-md-4, + .mx-md-4 { + margin-left: 1rem !important; + } + .m-md-5 { + margin: 1.5rem !important; + } + .mt-md-5, + .my-md-5 { + margin-top: 1.5rem !important; + } + .mr-md-5, + .mx-md-5 { + margin-right: 1.5rem !important; + } + .mb-md-5, + .my-md-5 { + margin-bottom: 1.5rem !important; + } + .ml-md-5, + .mx-md-5 { + margin-left: 1.5rem !important; + } + .m-md-6 { + margin: 2rem !important; + } + .mt-md-6, + .my-md-6 { + margin-top: 2rem !important; + } + .mr-md-6, + .mx-md-6 { + margin-right: 2rem !important; + } + .mb-md-6, + .my-md-6 { + margin-bottom: 2rem !important; + } + .ml-md-6, + .mx-md-6 { + margin-left: 2rem !important; + } + .m-md-7 { + margin: 3rem !important; + } + .mt-md-7, + .my-md-7 { + margin-top: 3rem !important; + } + .mr-md-7, + .mx-md-7 { + margin-right: 3rem !important; + } + .mb-md-7, + .my-md-7 { + margin-bottom: 3rem !important; + } + .ml-md-7, + .mx-md-7 { + margin-left: 3rem !important; + } + .m-md-8 { + margin: 4rem !important; + } + .mt-md-8, + .my-md-8 { + margin-top: 4rem !important; + } + .mr-md-8, + .mx-md-8 { + margin-right: 4rem !important; + } + .mb-md-8, + .my-md-8 { + margin-bottom: 4rem !important; + } + .ml-md-8, + .mx-md-8 { + margin-left: 4rem !important; + } + .m-md-9 { + margin: 6rem !important; + } + .mt-md-9, + .my-md-9 { + margin-top: 6rem !important; + } + .mr-md-9, + .mx-md-9 { + margin-right: 6rem !important; + } + .mb-md-9, + .my-md-9 { + margin-bottom: 6rem !important; + } + .ml-md-9, + .mx-md-9 { + margin-left: 6rem !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: 0.25rem !important; + } + .pt-md-1, + .py-md-1 { + padding-top: 0.25rem !important; + } + .pr-md-1, + .px-md-1 { + padding-right: 0.25rem !important; + } + .pb-md-1, + .py-md-1 { + padding-bottom: 0.25rem !important; + } + .pl-md-1, + .px-md-1 { + padding-left: 0.25rem !important; + } + .p-md-2 { + padding: 0.5rem !important; + } + .pt-md-2, + .py-md-2 { + padding-top: 0.5rem !important; + } + .pr-md-2, + .px-md-2 { + padding-right: 0.5rem !important; + } + .pb-md-2, + .py-md-2 { + padding-bottom: 0.5rem !important; + } + .pl-md-2, + .px-md-2 { + padding-left: 0.5rem !important; + } + .p-md-3 { + padding: 0.75rem !important; + } + .pt-md-3, + .py-md-3 { + padding-top: 0.75rem !important; + } + .pr-md-3, + .px-md-3 { + padding-right: 0.75rem !important; + } + .pb-md-3, + .py-md-3 { + padding-bottom: 0.75rem !important; + } + .pl-md-3, + .px-md-3 { + padding-left: 0.75rem !important; + } + .p-md-4 { + padding: 1rem !important; + } + .pt-md-4, + .py-md-4 { + padding-top: 1rem !important; + } + .pr-md-4, + .px-md-4 { + padding-right: 1rem !important; + } + .pb-md-4, + .py-md-4 { + padding-bottom: 1rem !important; + } + .pl-md-4, + .px-md-4 { + padding-left: 1rem !important; + } + .p-md-5 { + padding: 1.5rem !important; + } + .pt-md-5, + .py-md-5 { + padding-top: 1.5rem !important; + } + .pr-md-5, + .px-md-5 { + padding-right: 1.5rem !important; + } + .pb-md-5, + .py-md-5 { + padding-bottom: 1.5rem !important; + } + .pl-md-5, + .px-md-5 { + padding-left: 1.5rem !important; + } + .p-md-6 { + padding: 2rem !important; + } + .pt-md-6, + .py-md-6 { + padding-top: 2rem !important; + } + .pr-md-6, + .px-md-6 { + padding-right: 2rem !important; + } + .pb-md-6, + .py-md-6 { + padding-bottom: 2rem !important; + } + .pl-md-6, + .px-md-6 { + padding-left: 2rem !important; + } + .p-md-7 { + padding: 3rem !important; + } + .pt-md-7, + .py-md-7 { + padding-top: 3rem !important; + } + .pr-md-7, + .px-md-7 { + padding-right: 3rem !important; + } + .pb-md-7, + .py-md-7 { + padding-bottom: 3rem !important; + } + .pl-md-7, + .px-md-7 { + padding-left: 3rem !important; + } + .p-md-8 { + padding: 4rem !important; + } + .pt-md-8, + .py-md-8 { + padding-top: 4rem !important; + } + .pr-md-8, + .px-md-8 { + padding-right: 4rem !important; + } + .pb-md-8, + .py-md-8 { + padding-bottom: 4rem !important; + } + .pl-md-8, + .px-md-8 { + padding-left: 4rem !important; + } + .p-md-9 { + padding: 6rem !important; + } + .pt-md-9, + .py-md-9 { + padding-top: 6rem !important; + } + .pr-md-9, + .px-md-9 { + padding-right: 6rem !important; + } + .pb-md-9, + .py-md-9 { + padding-bottom: 6rem !important; + } + .pl-md-9, + .px-md-9 { + padding-left: 6rem !important; + } + .m-md-n1 { + margin: -0.25rem !important; + } + .mt-md-n1, + .my-md-n1 { + margin-top: -0.25rem !important; + } + .mr-md-n1, + .mx-md-n1 { + margin-right: -0.25rem !important; + } + .mb-md-n1, + .my-md-n1 { + margin-bottom: -0.25rem !important; + } + .ml-md-n1, + .mx-md-n1 { + margin-left: -0.25rem !important; + } + .m-md-n2 { + margin: -0.5rem !important; + } + .mt-md-n2, + .my-md-n2 { + margin-top: -0.5rem !important; + } + .mr-md-n2, + .mx-md-n2 { + margin-right: -0.5rem !important; + } + .mb-md-n2, + .my-md-n2 { + margin-bottom: -0.5rem !important; + } + .ml-md-n2, + .mx-md-n2 { + margin-left: -0.5rem !important; + } + .m-md-n3 { + margin: -0.75rem !important; + } + .mt-md-n3, + .my-md-n3 { + margin-top: -0.75rem !important; + } + .mr-md-n3, + .mx-md-n3 { + margin-right: -0.75rem !important; + } + .mb-md-n3, + .my-md-n3 { + margin-bottom: -0.75rem !important; + } + .ml-md-n3, + .mx-md-n3 { + margin-left: -0.75rem !important; + } + .m-md-n4 { + margin: -1rem !important; + } + .mt-md-n4, + .my-md-n4 { + margin-top: -1rem !important; + } + .mr-md-n4, + .mx-md-n4 { + margin-right: -1rem !important; + } + .mb-md-n4, + .my-md-n4 { + margin-bottom: -1rem !important; + } + .ml-md-n4, + .mx-md-n4 { + margin-left: -1rem !important; + } + .m-md-n5 { + margin: -1.5rem !important; + } + .mt-md-n5, + .my-md-n5 { + margin-top: -1.5rem !important; + } + .mr-md-n5, + .mx-md-n5 { + margin-right: -1.5rem !important; + } + .mb-md-n5, + .my-md-n5 { + margin-bottom: -1.5rem !important; + } + .ml-md-n5, + .mx-md-n5 { + margin-left: -1.5rem !important; + } + .m-md-n6 { + margin: -2rem !important; + } + .mt-md-n6, + .my-md-n6 { + margin-top: -2rem !important; + } + .mr-md-n6, + .mx-md-n6 { + margin-right: -2rem !important; + } + .mb-md-n6, + .my-md-n6 { + margin-bottom: -2rem !important; + } + .ml-md-n6, + .mx-md-n6 { + margin-left: -2rem !important; + } + .m-md-n7 { + margin: -3rem !important; + } + .mt-md-n7, + .my-md-n7 { + margin-top: -3rem !important; + } + .mr-md-n7, + .mx-md-n7 { + margin-right: -3rem !important; + } + .mb-md-n7, + .my-md-n7 { + margin-bottom: -3rem !important; + } + .ml-md-n7, + .mx-md-n7 { + margin-left: -3rem !important; + } + .m-md-n8 { + margin: -4rem !important; + } + .mt-md-n8, + .my-md-n8 { + margin-top: -4rem !important; + } + .mr-md-n8, + .mx-md-n8 { + margin-right: -4rem !important; + } + .mb-md-n8, + .my-md-n8 { + margin-bottom: -4rem !important; + } + .ml-md-n8, + .mx-md-n8 { + margin-left: -4rem !important; + } + .m-md-n9 { + margin: -6rem !important; + } + .mt-md-n9, + .my-md-n9 { + margin-top: -6rem !important; + } + .mr-md-n9, + .mx-md-n9 { + margin-right: -6rem !important; + } + .mb-md-n9, + .my-md-n9 { + margin-bottom: -6rem !important; + } + .ml-md-n9, + .mx-md-n9 { + margin-left: -6rem !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: 0.25rem !important; + } + .mt-lg-1, + .my-lg-1 { + margin-top: 0.25rem !important; + } + .mr-lg-1, + .mx-lg-1 { + margin-right: 0.25rem !important; + } + .mb-lg-1, + .my-lg-1 { + margin-bottom: 0.25rem !important; + } + .ml-lg-1, + .mx-lg-1 { + margin-left: 0.25rem !important; + } + .m-lg-2 { + margin: 0.5rem !important; + } + .mt-lg-2, + .my-lg-2 { + margin-top: 0.5rem !important; + } + .mr-lg-2, + .mx-lg-2 { + margin-right: 0.5rem !important; + } + .mb-lg-2, + .my-lg-2 { + margin-bottom: 0.5rem !important; + } + .ml-lg-2, + .mx-lg-2 { + margin-left: 0.5rem !important; + } + .m-lg-3 { + margin: 0.75rem !important; + } + .mt-lg-3, + .my-lg-3 { + margin-top: 0.75rem !important; + } + .mr-lg-3, + .mx-lg-3 { + margin-right: 0.75rem !important; + } + .mb-lg-3, + .my-lg-3 { + margin-bottom: 0.75rem !important; + } + .ml-lg-3, + .mx-lg-3 { + margin-left: 0.75rem !important; + } + .m-lg-4 { + margin: 1rem !important; + } + .mt-lg-4, + .my-lg-4 { + margin-top: 1rem !important; + } + .mr-lg-4, + .mx-lg-4 { + margin-right: 1rem !important; + } + .mb-lg-4, + .my-lg-4 { + margin-bottom: 1rem !important; + } + .ml-lg-4, + .mx-lg-4 { + margin-left: 1rem !important; + } + .m-lg-5 { + margin: 1.5rem !important; + } + .mt-lg-5, + .my-lg-5 { + margin-top: 1.5rem !important; + } + .mr-lg-5, + .mx-lg-5 { + margin-right: 1.5rem !important; + } + .mb-lg-5, + .my-lg-5 { + margin-bottom: 1.5rem !important; + } + .ml-lg-5, + .mx-lg-5 { + margin-left: 1.5rem !important; + } + .m-lg-6 { + margin: 2rem !important; + } + .mt-lg-6, + .my-lg-6 { + margin-top: 2rem !important; + } + .mr-lg-6, + .mx-lg-6 { + margin-right: 2rem !important; + } + .mb-lg-6, + .my-lg-6 { + margin-bottom: 2rem !important; + } + .ml-lg-6, + .mx-lg-6 { + margin-left: 2rem !important; + } + .m-lg-7 { + margin: 3rem !important; + } + .mt-lg-7, + .my-lg-7 { + margin-top: 3rem !important; + } + .mr-lg-7, + .mx-lg-7 { + margin-right: 3rem !important; + } + .mb-lg-7, + .my-lg-7 { + margin-bottom: 3rem !important; + } + .ml-lg-7, + .mx-lg-7 { + margin-left: 3rem !important; + } + .m-lg-8 { + margin: 4rem !important; + } + .mt-lg-8, + .my-lg-8 { + margin-top: 4rem !important; + } + .mr-lg-8, + .mx-lg-8 { + margin-right: 4rem !important; + } + .mb-lg-8, + .my-lg-8 { + margin-bottom: 4rem !important; + } + .ml-lg-8, + .mx-lg-8 { + margin-left: 4rem !important; + } + .m-lg-9 { + margin: 6rem !important; + } + .mt-lg-9, + .my-lg-9 { + margin-top: 6rem !important; + } + .mr-lg-9, + .mx-lg-9 { + margin-right: 6rem !important; + } + .mb-lg-9, + .my-lg-9 { + margin-bottom: 6rem !important; + } + .ml-lg-9, + .mx-lg-9 { + margin-left: 6rem !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: 0.25rem !important; + } + .pt-lg-1, + .py-lg-1 { + padding-top: 0.25rem !important; + } + .pr-lg-1, + .px-lg-1 { + padding-right: 0.25rem !important; + } + .pb-lg-1, + .py-lg-1 { + padding-bottom: 0.25rem !important; + } + .pl-lg-1, + .px-lg-1 { + padding-left: 0.25rem !important; + } + .p-lg-2 { + padding: 0.5rem !important; + } + .pt-lg-2, + .py-lg-2 { + padding-top: 0.5rem !important; + } + .pr-lg-2, + .px-lg-2 { + padding-right: 0.5rem !important; + } + .pb-lg-2, + .py-lg-2 { + padding-bottom: 0.5rem !important; + } + .pl-lg-2, + .px-lg-2 { + padding-left: 0.5rem !important; + } + .p-lg-3 { + padding: 0.75rem !important; + } + .pt-lg-3, + .py-lg-3 { + padding-top: 0.75rem !important; + } + .pr-lg-3, + .px-lg-3 { + padding-right: 0.75rem !important; + } + .pb-lg-3, + .py-lg-3 { + padding-bottom: 0.75rem !important; + } + .pl-lg-3, + .px-lg-3 { + padding-left: 0.75rem !important; + } + .p-lg-4 { + padding: 1rem !important; + } + .pt-lg-4, + .py-lg-4 { + padding-top: 1rem !important; + } + .pr-lg-4, + .px-lg-4 { + padding-right: 1rem !important; + } + .pb-lg-4, + .py-lg-4 { + padding-bottom: 1rem !important; + } + .pl-lg-4, + .px-lg-4 { + padding-left: 1rem !important; + } + .p-lg-5 { + padding: 1.5rem !important; + } + .pt-lg-5, + .py-lg-5 { + padding-top: 1.5rem !important; + } + .pr-lg-5, + .px-lg-5 { + padding-right: 1.5rem !important; + } + .pb-lg-5, + .py-lg-5 { + padding-bottom: 1.5rem !important; + } + .pl-lg-5, + .px-lg-5 { + padding-left: 1.5rem !important; + } + .p-lg-6 { + padding: 2rem !important; + } + .pt-lg-6, + .py-lg-6 { + padding-top: 2rem !important; + } + .pr-lg-6, + .px-lg-6 { + padding-right: 2rem !important; + } + .pb-lg-6, + .py-lg-6 { + padding-bottom: 2rem !important; + } + .pl-lg-6, + .px-lg-6 { + padding-left: 2rem !important; + } + .p-lg-7 { + padding: 3rem !important; + } + .pt-lg-7, + .py-lg-7 { + padding-top: 3rem !important; + } + .pr-lg-7, + .px-lg-7 { + padding-right: 3rem !important; + } + .pb-lg-7, + .py-lg-7 { + padding-bottom: 3rem !important; + } + .pl-lg-7, + .px-lg-7 { + padding-left: 3rem !important; + } + .p-lg-8 { + padding: 4rem !important; + } + .pt-lg-8, + .py-lg-8 { + padding-top: 4rem !important; + } + .pr-lg-8, + .px-lg-8 { + padding-right: 4rem !important; + } + .pb-lg-8, + .py-lg-8 { + padding-bottom: 4rem !important; + } + .pl-lg-8, + .px-lg-8 { + padding-left: 4rem !important; + } + .p-lg-9 { + padding: 6rem !important; + } + .pt-lg-9, + .py-lg-9 { + padding-top: 6rem !important; + } + .pr-lg-9, + .px-lg-9 { + padding-right: 6rem !important; + } + .pb-lg-9, + .py-lg-9 { + padding-bottom: 6rem !important; + } + .pl-lg-9, + .px-lg-9 { + padding-left: 6rem !important; + } + .m-lg-n1 { + margin: -0.25rem !important; + } + .mt-lg-n1, + .my-lg-n1 { + margin-top: -0.25rem !important; + } + .mr-lg-n1, + .mx-lg-n1 { + margin-right: -0.25rem !important; + } + .mb-lg-n1, + .my-lg-n1 { + margin-bottom: -0.25rem !important; + } + .ml-lg-n1, + .mx-lg-n1 { + margin-left: -0.25rem !important; + } + .m-lg-n2 { + margin: -0.5rem !important; + } + .mt-lg-n2, + .my-lg-n2 { + margin-top: -0.5rem !important; + } + .mr-lg-n2, + .mx-lg-n2 { + margin-right: -0.5rem !important; + } + .mb-lg-n2, + .my-lg-n2 { + margin-bottom: -0.5rem !important; + } + .ml-lg-n2, + .mx-lg-n2 { + margin-left: -0.5rem !important; + } + .m-lg-n3 { + margin: -0.75rem !important; + } + .mt-lg-n3, + .my-lg-n3 { + margin-top: -0.75rem !important; + } + .mr-lg-n3, + .mx-lg-n3 { + margin-right: -0.75rem !important; + } + .mb-lg-n3, + .my-lg-n3 { + margin-bottom: -0.75rem !important; + } + .ml-lg-n3, + .mx-lg-n3 { + margin-left: -0.75rem !important; + } + .m-lg-n4 { + margin: -1rem !important; + } + .mt-lg-n4, + .my-lg-n4 { + margin-top: -1rem !important; + } + .mr-lg-n4, + .mx-lg-n4 { + margin-right: -1rem !important; + } + .mb-lg-n4, + .my-lg-n4 { + margin-bottom: -1rem !important; + } + .ml-lg-n4, + .mx-lg-n4 { + margin-left: -1rem !important; + } + .m-lg-n5 { + margin: -1.5rem !important; + } + .mt-lg-n5, + .my-lg-n5 { + margin-top: -1.5rem !important; + } + .mr-lg-n5, + .mx-lg-n5 { + margin-right: -1.5rem !important; + } + .mb-lg-n5, + .my-lg-n5 { + margin-bottom: -1.5rem !important; + } + .ml-lg-n5, + .mx-lg-n5 { + margin-left: -1.5rem !important; + } + .m-lg-n6 { + margin: -2rem !important; + } + .mt-lg-n6, + .my-lg-n6 { + margin-top: -2rem !important; + } + .mr-lg-n6, + .mx-lg-n6 { + margin-right: -2rem !important; + } + .mb-lg-n6, + .my-lg-n6 { + margin-bottom: -2rem !important; + } + .ml-lg-n6, + .mx-lg-n6 { + margin-left: -2rem !important; + } + .m-lg-n7 { + margin: -3rem !important; + } + .mt-lg-n7, + .my-lg-n7 { + margin-top: -3rem !important; + } + .mr-lg-n7, + .mx-lg-n7 { + margin-right: -3rem !important; + } + .mb-lg-n7, + .my-lg-n7 { + margin-bottom: -3rem !important; + } + .ml-lg-n7, + .mx-lg-n7 { + margin-left: -3rem !important; + } + .m-lg-n8 { + margin: -4rem !important; + } + .mt-lg-n8, + .my-lg-n8 { + margin-top: -4rem !important; + } + .mr-lg-n8, + .mx-lg-n8 { + margin-right: -4rem !important; + } + .mb-lg-n8, + .my-lg-n8 { + margin-bottom: -4rem !important; + } + .ml-lg-n8, + .mx-lg-n8 { + margin-left: -4rem !important; + } + .m-lg-n9 { + margin: -6rem !important; + } + .mt-lg-n9, + .my-lg-n9 { + margin-top: -6rem !important; + } + .mr-lg-n9, + .mx-lg-n9 { + margin-right: -6rem !important; + } + .mb-lg-n9, + .my-lg-n9 { + margin-bottom: -6rem !important; + } + .ml-lg-n9, + .mx-lg-n9 { + margin-left: -6rem !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: 1280px) { + .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: 0.25rem !important; + } + .mt-xl-1, + .my-xl-1 { + margin-top: 0.25rem !important; + } + .mr-xl-1, + .mx-xl-1 { + margin-right: 0.25rem !important; + } + .mb-xl-1, + .my-xl-1 { + margin-bottom: 0.25rem !important; + } + .ml-xl-1, + .mx-xl-1 { + margin-left: 0.25rem !important; + } + .m-xl-2 { + margin: 0.5rem !important; + } + .mt-xl-2, + .my-xl-2 { + margin-top: 0.5rem !important; + } + .mr-xl-2, + .mx-xl-2 { + margin-right: 0.5rem !important; + } + .mb-xl-2, + .my-xl-2 { + margin-bottom: 0.5rem !important; + } + .ml-xl-2, + .mx-xl-2 { + margin-left: 0.5rem !important; + } + .m-xl-3 { + margin: 0.75rem !important; + } + .mt-xl-3, + .my-xl-3 { + margin-top: 0.75rem !important; + } + .mr-xl-3, + .mx-xl-3 { + margin-right: 0.75rem !important; + } + .mb-xl-3, + .my-xl-3 { + margin-bottom: 0.75rem !important; + } + .ml-xl-3, + .mx-xl-3 { + margin-left: 0.75rem !important; + } + .m-xl-4 { + margin: 1rem !important; + } + .mt-xl-4, + .my-xl-4 { + margin-top: 1rem !important; + } + .mr-xl-4, + .mx-xl-4 { + margin-right: 1rem !important; + } + .mb-xl-4, + .my-xl-4 { + margin-bottom: 1rem !important; + } + .ml-xl-4, + .mx-xl-4 { + margin-left: 1rem !important; + } + .m-xl-5 { + margin: 1.5rem !important; + } + .mt-xl-5, + .my-xl-5 { + margin-top: 1.5rem !important; + } + .mr-xl-5, + .mx-xl-5 { + margin-right: 1.5rem !important; + } + .mb-xl-5, + .my-xl-5 { + margin-bottom: 1.5rem !important; + } + .ml-xl-5, + .mx-xl-5 { + margin-left: 1.5rem !important; + } + .m-xl-6 { + margin: 2rem !important; + } + .mt-xl-6, + .my-xl-6 { + margin-top: 2rem !important; + } + .mr-xl-6, + .mx-xl-6 { + margin-right: 2rem !important; + } + .mb-xl-6, + .my-xl-6 { + margin-bottom: 2rem !important; + } + .ml-xl-6, + .mx-xl-6 { + margin-left: 2rem !important; + } + .m-xl-7 { + margin: 3rem !important; + } + .mt-xl-7, + .my-xl-7 { + margin-top: 3rem !important; + } + .mr-xl-7, + .mx-xl-7 { + margin-right: 3rem !important; + } + .mb-xl-7, + .my-xl-7 { + margin-bottom: 3rem !important; + } + .ml-xl-7, + .mx-xl-7 { + margin-left: 3rem !important; + } + .m-xl-8 { + margin: 4rem !important; + } + .mt-xl-8, + .my-xl-8 { + margin-top: 4rem !important; + } + .mr-xl-8, + .mx-xl-8 { + margin-right: 4rem !important; + } + .mb-xl-8, + .my-xl-8 { + margin-bottom: 4rem !important; + } + .ml-xl-8, + .mx-xl-8 { + margin-left: 4rem !important; + } + .m-xl-9 { + margin: 6rem !important; + } + .mt-xl-9, + .my-xl-9 { + margin-top: 6rem !important; + } + .mr-xl-9, + .mx-xl-9 { + margin-right: 6rem !important; + } + .mb-xl-9, + .my-xl-9 { + margin-bottom: 6rem !important; + } + .ml-xl-9, + .mx-xl-9 { + margin-left: 6rem !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: 0.25rem !important; + } + .pt-xl-1, + .py-xl-1 { + padding-top: 0.25rem !important; + } + .pr-xl-1, + .px-xl-1 { + padding-right: 0.25rem !important; + } + .pb-xl-1, + .py-xl-1 { + padding-bottom: 0.25rem !important; + } + .pl-xl-1, + .px-xl-1 { + padding-left: 0.25rem !important; + } + .p-xl-2 { + padding: 0.5rem !important; + } + .pt-xl-2, + .py-xl-2 { + padding-top: 0.5rem !important; + } + .pr-xl-2, + .px-xl-2 { + padding-right: 0.5rem !important; + } + .pb-xl-2, + .py-xl-2 { + padding-bottom: 0.5rem !important; + } + .pl-xl-2, + .px-xl-2 { + padding-left: 0.5rem !important; + } + .p-xl-3 { + padding: 0.75rem !important; + } + .pt-xl-3, + .py-xl-3 { + padding-top: 0.75rem !important; + } + .pr-xl-3, + .px-xl-3 { + padding-right: 0.75rem !important; + } + .pb-xl-3, + .py-xl-3 { + padding-bottom: 0.75rem !important; + } + .pl-xl-3, + .px-xl-3 { + padding-left: 0.75rem !important; + } + .p-xl-4 { + padding: 1rem !important; + } + .pt-xl-4, + .py-xl-4 { + padding-top: 1rem !important; + } + .pr-xl-4, + .px-xl-4 { + padding-right: 1rem !important; + } + .pb-xl-4, + .py-xl-4 { + padding-bottom: 1rem !important; + } + .pl-xl-4, + .px-xl-4 { + padding-left: 1rem !important; + } + .p-xl-5 { + padding: 1.5rem !important; + } + .pt-xl-5, + .py-xl-5 { + padding-top: 1.5rem !important; + } + .pr-xl-5, + .px-xl-5 { + padding-right: 1.5rem !important; + } + .pb-xl-5, + .py-xl-5 { + padding-bottom: 1.5rem !important; + } + .pl-xl-5, + .px-xl-5 { + padding-left: 1.5rem !important; + } + .p-xl-6 { + padding: 2rem !important; + } + .pt-xl-6, + .py-xl-6 { + padding-top: 2rem !important; + } + .pr-xl-6, + .px-xl-6 { + padding-right: 2rem !important; + } + .pb-xl-6, + .py-xl-6 { + padding-bottom: 2rem !important; + } + .pl-xl-6, + .px-xl-6 { + padding-left: 2rem !important; + } + .p-xl-7 { + padding: 3rem !important; + } + .pt-xl-7, + .py-xl-7 { + padding-top: 3rem !important; + } + .pr-xl-7, + .px-xl-7 { + padding-right: 3rem !important; + } + .pb-xl-7, + .py-xl-7 { + padding-bottom: 3rem !important; + } + .pl-xl-7, + .px-xl-7 { + padding-left: 3rem !important; + } + .p-xl-8 { + padding: 4rem !important; + } + .pt-xl-8, + .py-xl-8 { + padding-top: 4rem !important; + } + .pr-xl-8, + .px-xl-8 { + padding-right: 4rem !important; + } + .pb-xl-8, + .py-xl-8 { + padding-bottom: 4rem !important; + } + .pl-xl-8, + .px-xl-8 { + padding-left: 4rem !important; + } + .p-xl-9 { + padding: 6rem !important; + } + .pt-xl-9, + .py-xl-9 { + padding-top: 6rem !important; + } + .pr-xl-9, + .px-xl-9 { + padding-right: 6rem !important; + } + .pb-xl-9, + .py-xl-9 { + padding-bottom: 6rem !important; + } + .pl-xl-9, + .px-xl-9 { + padding-left: 6rem !important; + } + .m-xl-n1 { + margin: -0.25rem !important; + } + .mt-xl-n1, + .my-xl-n1 { + margin-top: -0.25rem !important; + } + .mr-xl-n1, + .mx-xl-n1 { + margin-right: -0.25rem !important; + } + .mb-xl-n1, + .my-xl-n1 { + margin-bottom: -0.25rem !important; + } + .ml-xl-n1, + .mx-xl-n1 { + margin-left: -0.25rem !important; + } + .m-xl-n2 { + margin: -0.5rem !important; + } + .mt-xl-n2, + .my-xl-n2 { + margin-top: -0.5rem !important; + } + .mr-xl-n2, + .mx-xl-n2 { + margin-right: -0.5rem !important; + } + .mb-xl-n2, + .my-xl-n2 { + margin-bottom: -0.5rem !important; + } + .ml-xl-n2, + .mx-xl-n2 { + margin-left: -0.5rem !important; + } + .m-xl-n3 { + margin: -0.75rem !important; + } + .mt-xl-n3, + .my-xl-n3 { + margin-top: -0.75rem !important; + } + .mr-xl-n3, + .mx-xl-n3 { + margin-right: -0.75rem !important; + } + .mb-xl-n3, + .my-xl-n3 { + margin-bottom: -0.75rem !important; + } + .ml-xl-n3, + .mx-xl-n3 { + margin-left: -0.75rem !important; + } + .m-xl-n4 { + margin: -1rem !important; + } + .mt-xl-n4, + .my-xl-n4 { + margin-top: -1rem !important; + } + .mr-xl-n4, + .mx-xl-n4 { + margin-right: -1rem !important; + } + .mb-xl-n4, + .my-xl-n4 { + margin-bottom: -1rem !important; + } + .ml-xl-n4, + .mx-xl-n4 { + margin-left: -1rem !important; + } + .m-xl-n5 { + margin: -1.5rem !important; + } + .mt-xl-n5, + .my-xl-n5 { + margin-top: -1.5rem !important; + } + .mr-xl-n5, + .mx-xl-n5 { + margin-right: -1.5rem !important; + } + .mb-xl-n5, + .my-xl-n5 { + margin-bottom: -1.5rem !important; + } + .ml-xl-n5, + .mx-xl-n5 { + margin-left: -1.5rem !important; + } + .m-xl-n6 { + margin: -2rem !important; + } + .mt-xl-n6, + .my-xl-n6 { + margin-top: -2rem !important; + } + .mr-xl-n6, + .mx-xl-n6 { + margin-right: -2rem !important; + } + .mb-xl-n6, + .my-xl-n6 { + margin-bottom: -2rem !important; + } + .ml-xl-n6, + .mx-xl-n6 { + margin-left: -2rem !important; + } + .m-xl-n7 { + margin: -3rem !important; + } + .mt-xl-n7, + .my-xl-n7 { + margin-top: -3rem !important; + } + .mr-xl-n7, + .mx-xl-n7 { + margin-right: -3rem !important; + } + .mb-xl-n7, + .my-xl-n7 { + margin-bottom: -3rem !important; + } + .ml-xl-n7, + .mx-xl-n7 { + margin-left: -3rem !important; + } + .m-xl-n8 { + margin: -4rem !important; + } + .mt-xl-n8, + .my-xl-n8 { + margin-top: -4rem !important; + } + .mr-xl-n8, + .mx-xl-n8 { + margin-right: -4rem !important; + } + .mb-xl-n8, + .my-xl-n8 { + margin-bottom: -4rem !important; + } + .ml-xl-n8, + .mx-xl-n8 { + margin-left: -4rem !important; + } + .m-xl-n9 { + margin: -6rem !important; + } + .mt-xl-n9, + .my-xl-n9 { + margin-top: -6rem !important; + } + .mr-xl-n9, + .mx-xl-n9 { + margin-right: -6rem !important; + } + .mb-xl-n9, + .my-xl-n9 { + margin-bottom: -6rem !important; + } + .ml-xl-n9, + .mx-xl-n9 { + margin-left: -6rem !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: 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: 1280px) { + .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: #467fcf !important; +} + +a.text-primary:hover, a.text-primary:focus { + color: #295a9f !important; +} + +.text-secondary { + color: #868e96 !important; +} + +a.text-secondary:hover, a.text-secondary:focus { + color: #60686f !important; +} + +.text-success { + color: #5eba00 !important; +} + +a.text-success:hover, a.text-success:focus { + color: #376e00 !important; +} + +.text-info { + color: #45aaf2 !important; +} + +a.text-info:hover, a.text-info:focus { + color: #0f86db !important; +} + +.text-warning { + color: #f1c40f !important; +} + +a.text-warning:hover, a.text-warning:focus { + color: #aa8a0a !important; +} + +.text-danger { + color: #cd201f !important; +} + +a.text-danger:hover, a.text-danger:focus { + color: #8b1615 !important; +} + +.text-light { + color: #f8f9fa !important; +} + +a.text-light:hover, a.text-light:focus { + color: #cbd3da !important; +} + +.text-dark { + color: #343a40 !important; +} + +a.text-dark:hover, a.text-dark:focus { + color: #121416 !important; +} + +.text-body { + color: #495057 !important; +} + +.text-muted { + color: #9aa0ac !important; +} + +.text-black-50 { + color: rgba(0, 0, 0, 0.5) !important; +} + +.text-white-50 { + color: rgba(255, 255, 255, 0.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 { + *, + *::before, + *::after { + text-shadow: none !important; + box-shadow: none !important; + } + a:not(.btn) { + text-decoration: underline; + } + abbr[title]::after { + content: " (" attr(title) ")"; + } + pre { + white-space: pre-wrap !important; + } + pre, + blockquote { + border: 1px solid #adb5bd; + page-break-inside: avoid; + } + thead { + display: table-header-group; + } + tr, + img { + page-break-inside: avoid; + } + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + h2, + h3 { + page-break-after: avoid; + } + @page { + size: a3; + } + body { + min-width: 992px !important; + } + .container { + min-width: 992px !important; + } + .navbar { + display: none; + } + .badge { + border: 1px solid #000; + } + .table, .text-wrap table { + border-collapse: collapse !important; + } + + .table td, + .text-wrap table td, .table th, .text-wrap table th { + background-color: #fff !important; + } + .table-bordered th, .text-wrap table th, + .table-bordered td, + .text-wrap table td { + border: 1px solid #dee2e6 !important; + } + .table-dark { + color: inherit; + } + .table-dark th, + .table-dark td, + .table-dark thead th, + .table-dark tbody + tbody { + border-color: rgba(0, 40, 100, 0.12); + } + .table .thead-dark th, .text-wrap table .thead-dark th { + color: inherit; + border-color: rgba(0, 40, 100, 0.12); + } +} + +html { + font-size: 16px; + height: 100%; + direction: ltr; +} + +body { + direction: ltr; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + -webkit-tap-highlight-color: transparent; + -webkit-text-size-adjust: none; + -ms-touch-action: manipulation; + touch-action: manipulation; + -webkit-font-feature-settings: "liga" 0; + font-feature-settings: "liga" 0; + height: 100%; + overflow-y: scroll; + position: relative; +} + +@media print { + body { + background: none; + } +} + +body *::-webkit-scrollbar { + width: 6px; + height: 6px; + transition: .3s background; +} + +body *::-webkit-scrollbar-thumb { + background: #ced4da; +} + +body *:hover::-webkit-scrollbar-thumb { + background: #adb5bd; +} + +.lead { + line-height: 1.4; +} + +a { + text-decoration-skip-ink: auto; +} + +h1 a, h2 a, h3 a, h4 a, h5 a, h6 a, +.h1 a, .h2 a, .h3 a, .h4 a, .h5 a, .h6 a { + color: inherit; +} + +strong, +b { + font-weight: 600; +} + +p, +ul, +ol, +blockquote { + margin-bottom: 1em; +} + +blockquote { + font-style: italic; + color: #6e7687; + padding-left: 2rem; + border-left: 2px solid rgba(0, 40, 100, 0.12); +} + +blockquote p { + margin-bottom: 1rem; +} + +blockquote cite { + display: block; + text-align: right; +} + +blockquote cite:before { + content: '— '; +} + +code { + background: rgba(0, 0, 0, 0.025); + border: 1px solid rgba(0, 0, 0, 0.05); + border-radius: 3px; + padding: 3px; +} + +pre code { + padding: 0; + border-radius: 0; + border: none; + background: none; +} + +hr { + margin-top: 2rem; + margin-bottom: 2rem; +} + +pre { + color: #343a40; + padding: 1rem; + overflow: auto; + font-size: 85%; + line-height: 1.45; + background-color: #f8fafc; + border-radius: 3px; + -moz-tab-size: 4; + -o-tab-size: 4; + tab-size: 4; + text-shadow: 0 1px white; + -webkit-hyphens: none; + -moz-hyphens: none; + -ms-hyphens: none; + hyphens: none; +} + +img { + max-width: 100%; +} + +.text-wrap { + font-size: 1rem; + line-height: 1.66; +} + +.text-wrap > :first-child { + margin-top: 0; +} + +.text-wrap > :last-child { + margin-bottom: 0; +} + +.text-wrap > h1, .text-wrap > h2, .text-wrap > h3, .text-wrap > h4, .text-wrap > h5, .text-wrap > h6 { + margin-top: 1em; +} + +.section-nav { + background-color: #f8f9fa; + margin: 1rem 0; + padding: .5rem 1rem; + border: 1px solid rgba(0, 40, 100, 0.12); + border-radius: 3px; + list-style: none; +} + +.section-nav:before { + content: 'Table of contents:'; + display: block; + font-weight: 600; +} + +@media print { + .container { + max-width: none; + } +} + +.row-cards > .col, +.row-cards > [class*='col-'] { + display: -ms-flexbox; + display: flex; + -ms-flex-direction: column; + flex-direction: column; +} + +.row-deck > .col, +.row-deck > [class*='col-'] { + display: -ms-flexbox; + display: flex; + -ms-flex-align: stretch; + align-items: stretch; +} + +.row-deck > .col .card, +.row-deck > [class*='col-'] .card { + -ms-flex: 1 1 auto; + flex: 1 1 auto; +} + +.col-text { + max-width: 48rem; +} + +.col-login { + max-width: 24rem; +} + +.gutters-0 { + margin-right: 0; + margin-left: 0; +} + +.gutters-0 > .col, +.gutters-0 > [class*="col-"] { + padding-right: 0; + padding-left: 0; +} + +.gutters-0 .card { + margin-bottom: 0; +} + +.gutters-xs { + margin-right: -0.25rem; + margin-left: -0.25rem; +} + +.gutters-xs > .col, +.gutters-xs > [class*="col-"] { + padding-right: 0.25rem; + padding-left: 0.25rem; +} + +.gutters-xs .card { + margin-bottom: 0.5rem; +} + +.gutters-sm { + margin-right: -0.5rem; + margin-left: -0.5rem; +} + +.gutters-sm > .col, +.gutters-sm > [class*="col-"] { + padding-right: 0.5rem; + padding-left: 0.5rem; +} + +.gutters-sm .card { + margin-bottom: 1rem; +} + +.gutters-lg { + margin-right: -1rem; + margin-left: -1rem; +} + +.gutters-lg > .col, +.gutters-lg > [class*="col-"] { + padding-right: 1rem; + padding-left: 1rem; +} + +.gutters-lg .card { + margin-bottom: 2rem; +} + +.gutters-xl { + margin-right: -1.5rem; + margin-left: -1.5rem; +} + +.gutters-xl > .col, +.gutters-xl > [class*="col-"] { + padding-right: 1.5rem; + padding-left: 1.5rem; +} + +.gutters-xl .card { + margin-bottom: 3rem; +} + +.page { + display: -ms-flexbox; + display: flex; + -ms-flex-direction: column; + flex-direction: column; + -ms-flex-pack: center; + justify-content: center; + min-height: 100%; +} + +body.fixed-header .page { + padding-top: 4.5rem; +} + +@media (min-width: 1600px) { + body.aside-opened .page { + margin-right: 22rem; + } +} + +.page-content { + margin: .75rem 0; +} + +@media (min-width: 768px) { + .page-content { + margin: 1.5rem 0; + } +} + +.page-header { + display: -ms-flexbox; + display: flex; + -ms-flex-align: center; + align-items: center; + margin: 1.5rem 0 1.5rem; + -ms-flex-wrap: wrap; + flex-wrap: wrap; +} + +.page-title { + margin: 0; + font-size: 1.5rem; + font-weight: 400; + line-height: 2.5rem; +} + +.page-title-icon { + color: #9aa0ac; + font-size: 1.25rem; +} + +.page-subtitle { + font-size: 0.8125rem; + color: #6e7687; + margin-left: 2rem; +} + +.page-subtitle a { + color: inherit; +} + +.page-options { + margin-left: auto; +} + +.page-breadcrumb { + -ms-flex-preferred-size: 100%; + flex-basis: 100%; +} + +.page-description { + margin: .25rem 0 0; + color: #6e7687; +} + +.page-description a { + color: inherit; +} + +.page-single { + -ms-flex: 1 1 auto; + flex: 1 1 auto; + display: -ms-flexbox; + display: flex; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: center; + justify-content: center; + padding: 1rem 0; +} + +.content-heading { + font-weight: 400; + margin: 2rem 0 1.5rem; + font-size: 1.25rem; + line-height: 1.25; +} + +.content-heading:first-child { + margin-top: 0; +} + +.aside { + position: fixed; + top: 0; + right: 0; + bottom: 0; + width: 22rem; + background: #ffffff; + border-left: 1px solid rgba(0, 40, 100, 0.12); + display: -ms-flexbox; + display: flex; + -ms-flex-direction: column; + flex-direction: column; + z-index: 100; + visibility: hidden; + box-shadow: 0 0 5px 2px rgba(0, 0, 0, 0.05); +} + +@media (min-width: 1600px) { + body.aside-opened .aside { + visibility: visible; + } +} + +.aside-body { + padding: 1.5rem; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + overflow: auto; +} + +.aside-footer { + padding: 1rem 1.5rem; + border-top: 1px solid rgba(0, 40, 100, 0.12); +} + +.aside-header { + padding: 1rem 1.5rem; + border-bottom: 1px solid rgba(0, 40, 100, 0.12); +} + +.header { + padding-top: .75rem; + padding-bottom: .75rem; + background: #fff; + border-bottom: 1px solid rgba(0, 40, 100, 0.12); +} + +body.fixed-header .header { + position: fixed; + top: 0; + left: 0; + right: 0; + z-index: 1030; +} + +@media print { + .header { + display: none; + } +} + +.header .dropdown-menu { + margin-top: .75rem; +} + +.nav-unread { + position: absolute; + top: .25rem; + right: .25rem; + background: #cd201f; + width: .5rem; + height: .5rem; + border-radius: 50%; +} + +.header-brand { + color: inherit; + margin-right: 1rem; + font-size: 1.25rem; + white-space: nowrap; + font-weight: 600; + padding: 0; + transition: .3s opacity; + line-height: 2rem; +} + +.header-brand:hover { + opacity: .8; + color: inherit; + text-decoration: none; +} + +.header-brand-img { + height: 2rem; + line-height: 2rem; + vertical-align: bottom; + margin-right: .5rem; + width: auto; +} + +.header-avatar { + width: 2rem; + height: 2rem; + display: inline-block; + vertical-align: bottom; + border-radius: 50%; +} + +.header-btn { + display: inline-block; + width: 2rem; + height: 2rem; + line-height: 2rem; + text-align: center; + font-size: 1rem; +} + +.header-btn.has-new { + position: relative; +} + +.header-btn.has-new:before { + content: ''; + width: 6px; + height: 6px; + background: #cd201f; + position: absolute; + top: 4px; + right: 4px; + border-radius: 50%; +} + +.header-toggler { + width: 2rem; + height: 2rem; + position: relative; + color: #9aa0ac; +} + +.header-toggler:hover { + color: #6e7687; +} + +.header-toggler-icon { + position: absolute; + width: 1rem; + height: 2px; + color: inherit; + background: currentColor; + border-radius: 3px; + top: 50%; + left: 50%; + margin: -2px 0 0 -.5rem; + box-shadow: 0 5px currentColor, 0 -5px currentColor; +} + +.footer { + background: #fff; + border-top: 1px solid rgba(0, 40, 100, 0.12); + font-size: 0.875rem; + padding: 1.25rem 0; + color: #9aa0ac; +} + +.footer a:not(.btn) { + color: #6e7687; +} + +@media print { + .footer { + display: none; + } +} + +.bg-blue-lightest { + background-color: #edf2fa !important; +} + +a.bg-blue-lightest:hover, a.bg-blue-lightest:focus, +button.bg-blue-lightest:hover, +button.bg-blue-lightest:focus { + background-color: #c5d5ef !important; +} + +.bg-blue-lighter { + background-color: #c8d9f1 !important; +} + +a.bg-blue-lighter:hover, a.bg-blue-lighter:focus, +button.bg-blue-lighter:hover, +button.bg-blue-lighter:focus { + background-color: #9fbde7 !important; +} + +.bg-blue-light { + background-color: #7ea5dd !important; +} + +a.bg-blue-light:hover, a.bg-blue-light:focus, +button.bg-blue-light:hover, +button.bg-blue-light:focus { + background-color: #5689d2 !important; +} + +.bg-blue-dark { + background-color: #3866a6 !important; +} + +a.bg-blue-dark:hover, a.bg-blue-dark:focus, +button.bg-blue-dark:hover, +button.bg-blue-dark:focus { + background-color: #2b4f80 !important; +} + +.bg-blue-darker { + background-color: #1c3353 !important; +} + +a.bg-blue-darker:hover, a.bg-blue-darker:focus, +button.bg-blue-darker:hover, +button.bg-blue-darker:focus { + background-color: #0f1c2d !important; +} + +.bg-blue-darkest { + background-color: #0e1929 !important; +} + +a.bg-blue-darkest:hover, a.bg-blue-darkest:focus, +button.bg-blue-darkest:hover, +button.bg-blue-darkest:focus { + background-color: #010203 !important; +} + +.bg-indigo-lightest { + background-color: #f0f1fa !important; +} + +a.bg-indigo-lightest:hover, a.bg-indigo-lightest:focus, +button.bg-indigo-lightest:hover, +button.bg-indigo-lightest:focus { + background-color: #cacded !important; +} + +.bg-indigo-lighter { + background-color: #d1d5f0 !important; +} + +a.bg-indigo-lighter:hover, a.bg-indigo-lighter:focus, +button.bg-indigo-lighter:hover, +button.bg-indigo-lighter:focus { + background-color: #abb2e3 !important; +} + +.bg-indigo-light { + background-color: #939edc !important; +} + +a.bg-indigo-light:hover, a.bg-indigo-light:focus, +button.bg-indigo-light:hover, +button.bg-indigo-light:focus { + background-color: #6c7bd0 !important; +} + +.bg-indigo-dark { + background-color: #515da4 !important; +} + +a.bg-indigo-dark:hover, a.bg-indigo-dark:focus, +button.bg-indigo-dark:hover, +button.bg-indigo-dark:focus { + background-color: #404a82 !important; +} + +.bg-indigo-darker { + background-color: #282e52 !important; +} + +a.bg-indigo-darker:hover, a.bg-indigo-darker:focus, +button.bg-indigo-darker:hover, +button.bg-indigo-darker:focus { + background-color: #171b30 !important; +} + +.bg-indigo-darkest { + background-color: #141729 !important; +} + +a.bg-indigo-darkest:hover, a.bg-indigo-darkest:focus, +button.bg-indigo-darkest:hover, +button.bg-indigo-darkest:focus { + background-color: #030407 !important; +} + +.bg-purple-lightest { + background-color: #f6effd !important; +} + +a.bg-purple-lightest:hover, a.bg-purple-lightest:focus, +button.bg-purple-lightest:hover, +button.bg-purple-lightest:focus { + background-color: #ddc2f7 !important; +} + +.bg-purple-lighter { + background-color: #e4cff9 !important; +} + +a.bg-purple-lighter:hover, a.bg-purple-lighter:focus, +button.bg-purple-lighter:hover, +button.bg-purple-lighter:focus { + background-color: #cba2f3 !important; +} + +.bg-purple-light { + background-color: #c08ef0 !important; +} + +a.bg-purple-light:hover, a.bg-purple-light:focus, +button.bg-purple-light:hover, +button.bg-purple-light:focus { + background-color: #a761ea !important; +} + +.bg-purple-dark { + background-color: #844bbb !important; +} + +a.bg-purple-dark:hover, a.bg-purple-dark:focus, +button.bg-purple-dark:hover, +button.bg-purple-dark:focus { + background-color: #6a3a99 !important; +} + +.bg-purple-darker { + background-color: #42265e !important; +} + +a.bg-purple-darker:hover, a.bg-purple-darker:focus, +button.bg-purple-darker:hover, +button.bg-purple-darker:focus { + background-color: #29173a !important; +} + +.bg-purple-darkest { + background-color: #21132f !important; +} + +a.bg-purple-darkest:hover, a.bg-purple-darkest:focus, +button.bg-purple-darkest:hover, +button.bg-purple-darkest:focus { + background-color: #08040b !important; +} + +.bg-pink-lightest { + background-color: #fef0f5 !important; +} + +a.bg-pink-lightest:hover, a.bg-pink-lightest:focus, +button.bg-pink-lightest:hover, +button.bg-pink-lightest:focus { + background-color: #fbc0d5 !important; +} + +.bg-pink-lighter { + background-color: #fcd3e1 !important; +} + +a.bg-pink-lighter:hover, a.bg-pink-lighter:focus, +button.bg-pink-lighter:hover, +button.bg-pink-lighter:focus { + background-color: #f9a3c0 !important; +} + +.bg-pink-light { + background-color: #f999b9 !important; +} + +a.bg-pink-light:hover, a.bg-pink-light:focus, +button.bg-pink-light:hover, +button.bg-pink-light:focus { + background-color: #f66998 !important; +} + +.bg-pink-dark { + background-color: #c5577c !important; +} + +a.bg-pink-dark:hover, a.bg-pink-dark:focus, +button.bg-pink-dark:hover, +button.bg-pink-dark:focus { + background-color: #ad3c62 !important; +} + +.bg-pink-darker { + background-color: #622c3e !important; +} + +a.bg-pink-darker:hover, a.bg-pink-darker:focus, +button.bg-pink-darker:hover, +button.bg-pink-darker:focus { + background-color: #3f1c28 !important; +} + +.bg-pink-darkest { + background-color: #31161f !important; +} + +a.bg-pink-darkest:hover, a.bg-pink-darkest:focus, +button.bg-pink-darkest:hover, +button.bg-pink-darkest:focus { + background-color: #0e0609 !important; +} + +.bg-red-lightest { + background-color: #fae9e9 !important; +} + +a.bg-red-lightest:hover, a.bg-red-lightest:focus, +button.bg-red-lightest:hover, +button.bg-red-lightest:focus { + background-color: #f1bfbf !important; +} + +.bg-red-lighter { + background-color: #f0bcbc !important; +} + +a.bg-red-lighter:hover, a.bg-red-lighter:focus, +button.bg-red-lighter:hover, +button.bg-red-lighter:focus { + background-color: #e79292 !important; +} + +.bg-red-light { + background-color: #dc6362 !important; +} + +a.bg-red-light:hover, a.bg-red-light:focus, +button.bg-red-light:hover, +button.bg-red-light:focus { + background-color: #d33a38 !important; +} + +.bg-red-dark { + background-color: #a41a19 !important; +} + +a.bg-red-dark:hover, a.bg-red-dark:focus, +button.bg-red-dark:hover, +button.bg-red-dark:focus { + background-color: #781312 !important; +} + +.bg-red-darker { + background-color: #520d0c !important; +} + +a.bg-red-darker:hover, a.bg-red-darker:focus, +button.bg-red-darker:hover, +button.bg-red-darker:focus { + background-color: #260605 !important; +} + +.bg-red-darkest { + background-color: #290606 !important; +} + +a.bg-red-darkest:hover, a.bg-red-darkest:focus, +button.bg-red-darkest:hover, +button.bg-red-darkest:focus { + background-color: black !important; +} + +.bg-orange-lightest { + background-color: #fff5ec !important; +} + +a.bg-orange-lightest:hover, a.bg-orange-lightest:focus, +button.bg-orange-lightest:hover, +button.bg-orange-lightest:focus { + background-color: peachpuff !important; +} + +.bg-orange-lighter { + background-color: #fee0c7 !important; +} + +a.bg-orange-lighter:hover, a.bg-orange-lighter:focus, +button.bg-orange-lighter:hover, +button.bg-orange-lighter:focus { + background-color: #fdc495 !important; +} + +.bg-orange-light { + background-color: #feb67c !important; +} + +a.bg-orange-light:hover, a.bg-orange-light:focus, +button.bg-orange-light:hover, +button.bg-orange-light:focus { + background-color: #fe9a49 !important; +} + +.bg-orange-dark { + background-color: #ca7836 !important; +} + +a.bg-orange-dark:hover, a.bg-orange-dark:focus, +button.bg-orange-dark:hover, +button.bg-orange-dark:focus { + background-color: #a2602b !important; +} + +.bg-orange-darker { + background-color: #653c1b !important; +} + +a.bg-orange-darker:hover, a.bg-orange-darker:focus, +button.bg-orange-darker:hover, +button.bg-orange-darker:focus { + background-color: #3d2410 !important; +} + +.bg-orange-darkest { + background-color: #331e0e !important; +} + +a.bg-orange-darkest:hover, a.bg-orange-darkest:focus, +button.bg-orange-darkest:hover, +button.bg-orange-darkest:focus { + background-color: #0b0603 !important; +} + +.bg-yellow-lightest { + background-color: #fef9e7 !important; +} + +a.bg-yellow-lightest:hover, a.bg-yellow-lightest:focus, +button.bg-yellow-lightest:hover, +button.bg-yellow-lightest:focus { + background-color: #fcedb6 !important; +} + +.bg-yellow-lighter { + background-color: #fbedb7 !important; +} + +a.bg-yellow-lighter:hover, a.bg-yellow-lighter:focus, +button.bg-yellow-lighter:hover, +button.bg-yellow-lighter:focus { + background-color: #f8e187 !important; +} + +.bg-yellow-light { + background-color: #f5d657 !important; +} + +a.bg-yellow-light:hover, a.bg-yellow-light:focus, +button.bg-yellow-light:hover, +button.bg-yellow-light:focus { + background-color: #f2ca27 !important; +} + +.bg-yellow-dark { + background-color: #c19d0c !important; +} + +a.bg-yellow-dark:hover, a.bg-yellow-dark:focus, +button.bg-yellow-dark:hover, +button.bg-yellow-dark:focus { + background-color: #917609 !important; +} + +.bg-yellow-darker { + background-color: #604e06 !important; +} + +a.bg-yellow-darker:hover, a.bg-yellow-darker:focus, +button.bg-yellow-darker:hover, +button.bg-yellow-darker:focus { + background-color: #302703 !important; +} + +.bg-yellow-darkest { + background-color: #302703 !important; +} + +a.bg-yellow-darkest:hover, a.bg-yellow-darkest:focus, +button.bg-yellow-darkest:hover, +button.bg-yellow-darkest:focus { + background-color: black !important; +} + +.bg-green-lightest { + background-color: #eff8e6 !important; +} + +a.bg-green-lightest:hover, a.bg-green-lightest:focus, +button.bg-green-lightest:hover, +button.bg-green-lightest:focus { + background-color: #d6edbe !important; +} + +.bg-green-lighter { + background-color: #cfeab3 !important; +} + +a.bg-green-lighter:hover, a.bg-green-lighter:focus, +button.bg-green-lighter:hover, +button.bg-green-lighter:focus { + background-color: #b6df8b !important; +} + +.bg-green-light { + background-color: #8ecf4d !important; +} + +a.bg-green-light:hover, a.bg-green-light:focus, +button.bg-green-light:hover, +button.bg-green-light:focus { + background-color: #75b831 !important; +} + +.bg-green-dark { + background-color: #4b9500 !important; +} + +a.bg-green-dark:hover, a.bg-green-dark:focus, +button.bg-green-dark:hover, +button.bg-green-dark:focus { + background-color: #316200 !important; +} + +.bg-green-darker { + background-color: #264a00 !important; +} + +a.bg-green-darker:hover, a.bg-green-darker:focus, +button.bg-green-darker:hover, +button.bg-green-darker:focus { + background-color: #0c1700 !important; +} + +.bg-green-darkest { + background-color: #132500 !important; +} + +a.bg-green-darkest:hover, a.bg-green-darkest:focus, +button.bg-green-darkest:hover, +button.bg-green-darkest:focus { + background-color: black !important; +} + +.bg-teal-lightest { + background-color: #eafaf8 !important; +} + +a.bg-teal-lightest:hover, a.bg-teal-lightest:focus, +button.bg-teal-lightest:hover, +button.bg-teal-lightest:focus { + background-color: #c1f0ea !important; +} + +.bg-teal-lighter { + background-color: #bfefea !important; +} + +a.bg-teal-lighter:hover, a.bg-teal-lighter:focus, +button.bg-teal-lighter:hover, +button.bg-teal-lighter:focus { + background-color: #96e5dd !important; +} + +.bg-teal-light { + background-color: #6bdbcf !important; +} + +a.bg-teal-light:hover, a.bg-teal-light:focus, +button.bg-teal-light:hover, +button.bg-teal-light:focus { + background-color: #42d1c2 !important; +} + +.bg-teal-dark { + background-color: #22a295 !important; +} + +a.bg-teal-dark:hover, a.bg-teal-dark:focus, +button.bg-teal-dark:hover, +button.bg-teal-dark:focus { + background-color: #19786e !important; +} + +.bg-teal-darker { + background-color: #11514a !important; +} + +a.bg-teal-darker:hover, a.bg-teal-darker:focus, +button.bg-teal-darker:hover, +button.bg-teal-darker:focus { + background-color: #082723 !important; +} + +.bg-teal-darkest { + background-color: #092925 !important; +} + +a.bg-teal-darkest:hover, a.bg-teal-darkest:focus, +button.bg-teal-darkest:hover, +button.bg-teal-darkest:focus { + background-color: black !important; +} + +.bg-cyan-lightest { + background-color: #e8f6f8 !important; +} + +a.bg-cyan-lightest:hover, a.bg-cyan-lightest:focus, +button.bg-cyan-lightest:hover, +button.bg-cyan-lightest:focus { + background-color: #c1e7ec !important; +} + +.bg-cyan-lighter { + background-color: #b9e3ea !important; +} + +a.bg-cyan-lighter:hover, a.bg-cyan-lighter:focus, +button.bg-cyan-lighter:hover, +button.bg-cyan-lighter:focus { + background-color: #92d3de !important; +} + +.bg-cyan-light { + background-color: #5dbecd !important; +} + +a.bg-cyan-light:hover, a.bg-cyan-light:focus, +button.bg-cyan-light:hover, +button.bg-cyan-light:focus { + background-color: #3aabbd !important; +} + +.bg-cyan-dark { + background-color: #128293 !important; +} + +a.bg-cyan-dark:hover, a.bg-cyan-dark:focus, +button.bg-cyan-dark:hover, +button.bg-cyan-dark:focus { + background-color: #0c5a66 !important; +} + +.bg-cyan-darker { + background-color: #09414a !important; +} + +a.bg-cyan-darker:hover, a.bg-cyan-darker:focus, +button.bg-cyan-darker:hover, +button.bg-cyan-darker:focus { + background-color: #03191d !important; +} + +.bg-cyan-darkest { + background-color: #052025 !important; +} + +a.bg-cyan-darkest:hover, a.bg-cyan-darkest:focus, +button.bg-cyan-darkest:hover, +button.bg-cyan-darkest:focus { + background-color: black !important; +} + +.bg-white-lightest { + background-color: white !important; +} + +a.bg-white-lightest:hover, a.bg-white-lightest:focus, +button.bg-white-lightest:hover, +button.bg-white-lightest:focus { + background-color: #e6e5e5 !important; +} + +.bg-white-lighter { + background-color: white !important; +} + +a.bg-white-lighter:hover, a.bg-white-lighter:focus, +button.bg-white-lighter:hover, +button.bg-white-lighter:focus { + background-color: #e6e5e5 !important; +} + +.bg-white-light { + background-color: white !important; +} + +a.bg-white-light:hover, a.bg-white-light:focus, +button.bg-white-light:hover, +button.bg-white-light:focus { + background-color: #e6e5e5 !important; +} + +.bg-white-dark { + background-color: #cccccc !important; +} + +a.bg-white-dark:hover, a.bg-white-dark:focus, +button.bg-white-dark:hover, +button.bg-white-dark:focus { + background-color: #b3b2b2 !important; +} + +.bg-white-darker { + background-color: #666666 !important; +} + +a.bg-white-darker:hover, a.bg-white-darker:focus, +button.bg-white-darker:hover, +button.bg-white-darker:focus { + background-color: #4d4c4c !important; +} + +.bg-white-darkest { + background-color: #333333 !important; +} + +a.bg-white-darkest:hover, a.bg-white-darkest:focus, +button.bg-white-darkest:hover, +button.bg-white-darkest:focus { + background-color: #1a1919 !important; +} + +.bg-gray-lightest { + background-color: #f3f4f5 !important; +} + +a.bg-gray-lightest:hover, a.bg-gray-lightest:focus, +button.bg-gray-lightest:hover, +button.bg-gray-lightest:focus { + background-color: #d7dbde !important; +} + +.bg-gray-lighter { + background-color: #dbdde0 !important; +} + +a.bg-gray-lighter:hover, a.bg-gray-lighter:focus, +button.bg-gray-lighter:hover, +button.bg-gray-lighter:focus { + background-color: #c0c3c8 !important; +} + +.bg-gray-light { + background-color: #aab0b6 !important; +} + +a.bg-gray-light:hover, a.bg-gray-light:focus, +button.bg-gray-light:hover, +button.bg-gray-light:focus { + background-color: #8f979e !important; +} + +.bg-gray-dark { + background-color: #6b7278 !important; +} + +a.bg-gray-dark:hover, a.bg-gray-dark:focus, +button.bg-gray-dark:hover, +button.bg-gray-dark:focus { + background-color: #53585d !important; +} + +.bg-gray-darker { + background-color: #36393c !important; +} + +a.bg-gray-darker:hover, a.bg-gray-darker:focus, +button.bg-gray-darker:hover, +button.bg-gray-darker:focus { + background-color: #1e2021 !important; +} + +.bg-gray-darkest { + background-color: #1b1c1e !important; +} + +a.bg-gray-darkest:hover, a.bg-gray-darkest:focus, +button.bg-gray-darkest:hover, +button.bg-gray-darkest:focus { + background-color: #030303 !important; +} + +.bg-gray-dark-lightest { + background-color: #ebebec !important; +} + +a.bg-gray-dark-lightest:hover, a.bg-gray-dark-lightest:focus, +button.bg-gray-dark-lightest:hover, +button.bg-gray-dark-lightest:focus { + background-color: #d1d1d3 !important; +} + +.bg-gray-dark-lighter { + background-color: #c2c4c6 !important; +} + +a.bg-gray-dark-lighter:hover, a.bg-gray-dark-lighter:focus, +button.bg-gray-dark-lighter:hover, +button.bg-gray-dark-lighter:focus { + background-color: #a8abad !important; +} + +.bg-gray-dark-light { + background-color: #717579 !important; +} + +a.bg-gray-dark-light:hover, a.bg-gray-dark-light:focus, +button.bg-gray-dark-light:hover, +button.bg-gray-dark-light:focus { + background-color: #585c5f !important; +} + +.bg-gray-dark-dark { + background-color: #2a2e33 !important; +} + +a.bg-gray-dark-dark:hover, a.bg-gray-dark-dark:focus, +button.bg-gray-dark-dark:hover, +button.bg-gray-dark-dark:focus { + background-color: #131517 !important; +} + +.bg-gray-dark-darker { + background-color: #15171a !important; +} + +a.bg-gray-dark-darker:hover, a.bg-gray-dark-darker:focus, +button.bg-gray-dark-darker:hover, +button.bg-gray-dark-darker:focus { + background-color: black !important; +} + +.bg-gray-dark-darkest { + background-color: #0a0c0d !important; +} + +a.bg-gray-dark-darkest:hover, a.bg-gray-dark-darkest:focus, +button.bg-gray-dark-darkest:hover, +button.bg-gray-dark-darkest:focus { + background-color: black !important; +} + +.bg-azure-lightest { + background-color: #ecf7fe !important; +} + +a.bg-azure-lightest:hover, a.bg-azure-lightest:focus, +button.bg-azure-lightest:hover, +button.bg-azure-lightest:focus { + background-color: #bce3fb !important; +} + +.bg-azure-lighter { + background-color: #c7e6fb !important; +} + +a.bg-azure-lighter:hover, a.bg-azure-lighter:focus, +button.bg-azure-lighter:hover, +button.bg-azure-lighter:focus { + background-color: #97d1f8 !important; +} + +.bg-azure-light { + background-color: #7dc4f6 !important; +} + +a.bg-azure-light:hover, a.bg-azure-light:focus, +button.bg-azure-light:hover, +button.bg-azure-light:focus { + background-color: #4daef3 !important; +} + +.bg-azure-dark { + background-color: #3788c2 !important; +} + +a.bg-azure-dark:hover, a.bg-azure-dark:focus, +button.bg-azure-dark:hover, +button.bg-azure-dark:focus { + background-color: #2c6c9a !important; +} + +.bg-azure-darker { + background-color: #1c4461 !important; +} + +a.bg-azure-darker:hover, a.bg-azure-darker:focus, +button.bg-azure-darker:hover, +button.bg-azure-darker:focus { + background-color: #112839 !important; +} + +.bg-azure-darkest { + background-color: #0e2230 !important; +} + +a.bg-azure-darkest:hover, a.bg-azure-darkest:focus, +button.bg-azure-darkest:hover, +button.bg-azure-darkest:focus { + background-color: #020609 !important; +} + +.bg-lime-lightest { + background-color: #f2fbeb !important; +} + +a.bg-lime-lightest:hover, a.bg-lime-lightest:focus, +button.bg-lime-lightest:hover, +button.bg-lime-lightest:focus { + background-color: #d6f3c1 !important; +} + +.bg-lime-lighter { + background-color: #d7f2c2 !important; +} + +a.bg-lime-lighter:hover, a.bg-lime-lighter:focus, +button.bg-lime-lighter:hover, +button.bg-lime-lighter:focus { + background-color: #bbe998 !important; +} + +.bg-lime-light { + background-color: #a3e072 !important; +} + +a.bg-lime-light:hover, a.bg-lime-light:focus, +button.bg-lime-light:hover, +button.bg-lime-light:focus { + background-color: #88d748 !important; +} + +.bg-lime-dark { + background-color: #62a82a !important; +} + +a.bg-lime-dark:hover, a.bg-lime-dark:focus, +button.bg-lime-dark:hover, +button.bg-lime-dark:focus { + background-color: #4a7f20 !important; +} + +.bg-lime-darker { + background-color: #315415 !important; +} + +a.bg-lime-darker:hover, a.bg-lime-darker:focus, +button.bg-lime-darker:hover, +button.bg-lime-darker:focus { + background-color: #192b0b !important; +} + +.bg-lime-darkest { + background-color: #192a0b !important; +} + +a.bg-lime-darkest:hover, a.bg-lime-darkest:focus, +button.bg-lime-darkest:hover, +button.bg-lime-darkest:focus { + background-color: #010200 !important; +} + +.display-1 i, +.display-2 i, +.display-3 i, +.display-4 i { + vertical-align: baseline; + font-size: 0.815em; +} + +.text-inherit { + color: inherit !important; +} + +.text-default { + color: #495057 !important; +} + +.text-muted-dark { + color: #6e7687 !important; +} + +.tracking-tight { + letter-spacing: -0.05em !important; +} + +.tracking-normal { + letter-spacing: 0 !important; +} + +.tracking-wide { + letter-spacing: 0.05em !important; +} + +.leading-none { + line-height: 1 !important; +} + +.leading-tight { + line-height: 1.25 !important; +} + +.leading-normal { + line-height: 1.5 !important; +} + +.leading-loose { + line-height: 2 !important; +} + +.bg-blue { + background-color: #467fcf !important; +} + +a.bg-blue:hover, a.bg-blue:focus, +button.bg-blue:hover, +button.bg-blue:focus { + background-color: #2f66b3 !important; +} + +.text-blue { + color: #467fcf !important; +} + +.bg-indigo { + background-color: #6574cd !important; +} + +a.bg-indigo:hover, a.bg-indigo:focus, +button.bg-indigo:hover, +button.bg-indigo:focus { + background-color: #3f51c1 !important; +} + +.text-indigo { + color: #6574cd !important; +} + +.bg-purple { + background-color: #a55eea !important; +} + +a.bg-purple:hover, a.bg-purple:focus, +button.bg-purple:hover, +button.bg-purple:focus { + background-color: #8c31e4 !important; +} + +.text-purple { + color: #a55eea !important; +} + +.bg-pink { + background-color: #f66d9b !important; +} + +a.bg-pink:hover, a.bg-pink:focus, +button.bg-pink:hover, +button.bg-pink:focus { + background-color: #f33d7a !important; +} + +.text-pink { + color: #f66d9b !important; +} + +.bg-red { + background-color: #cd201f !important; +} + +a.bg-red:hover, a.bg-red:focus, +button.bg-red:hover, +button.bg-red:focus { + background-color: #a11918 !important; +} + +.text-red { + color: #cd201f !important; +} + +.bg-orange { + background-color: #fd9644 !important; +} + +a.bg-orange:hover, a.bg-orange:focus, +button.bg-orange:hover, +button.bg-orange:focus { + background-color: #fc7a12 !important; +} + +.text-orange { + color: #fd9644 !important; +} + +.bg-yellow { + background-color: #f1c40f !important; +} + +a.bg-yellow:hover, a.bg-yellow:focus, +button.bg-yellow:hover, +button.bg-yellow:focus { + background-color: #c29d0b !important; +} + +.text-yellow { + color: #f1c40f !important; +} + +.bg-green { + background-color: #5eba00 !important; +} + +a.bg-green:hover, a.bg-green:focus, +button.bg-green:hover, +button.bg-green:focus { + background-color: #448700 !important; +} + +.text-green { + color: #5eba00 !important; +} + +.bg-teal { + background-color: #2bcbba !important; +} + +a.bg-teal:hover, a.bg-teal:focus, +button.bg-teal:hover, +button.bg-teal:focus { + background-color: #22a193 !important; +} + +.text-teal { + color: #2bcbba !important; +} + +.bg-cyan { + background-color: #17a2b8 !important; +} + +a.bg-cyan:hover, a.bg-cyan:focus, +button.bg-cyan:hover, +button.bg-cyan:focus { + background-color: #117a8b !important; +} + +.text-cyan { + color: #17a2b8 !important; +} + +.bg-white { + background-color: #fff !important; +} + +a.bg-white:hover, a.bg-white:focus, +button.bg-white:hover, +button.bg-white:focus { + background-color: #e6e5e5 !important; +} + +.text-white { + color: #fff !important; +} + +.bg-gray { + background-color: #868e96 !important; +} + +a.bg-gray:hover, a.bg-gray:focus, +button.bg-gray:hover, +button.bg-gray:focus { + background-color: #6c757d !important; +} + +.text-gray { + color: #868e96 !important; +} + +.bg-gray-dark { + background-color: #343a40 !important; +} + +a.bg-gray-dark:hover, a.bg-gray-dark:focus, +button.bg-gray-dark:hover, +button.bg-gray-dark:focus { + background-color: #1d2124 !important; +} + +.text-gray-dark { + color: #343a40 !important; +} + +.bg-azure { + background-color: #45aaf2 !important; +} + +a.bg-azure:hover, a.bg-azure:focus, +button.bg-azure:hover, +button.bg-azure:focus { + background-color: #1594ef !important; +} + +.text-azure { + color: #45aaf2 !important; +} + +.bg-lime { + background-color: #7bd235 !important; +} + +a.bg-lime:hover, a.bg-lime:focus, +button.bg-lime:hover, +button.bg-lime:focus { + background-color: #63ad27 !important; +} + +.text-lime { + color: #7bd235 !important; +} + +.icon { + color: #9aa0ac !important; +} + +.icon i { + vertical-align: -1px; +} + +a.icon { + text-decoration: none; + cursor: pointer; +} + +a.icon:hover { + color: #495057 !important; +} + +.o-auto { + overflow: auto !important; +} + +.o-hidden { + overflow: hidden !important; +} + +.shadow { + box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05) !important; +} + +.shadow-none { + box-shadow: none !important; +} + +.nav-link, +.nav-item { + padding: 0 .75rem; + min-width: 2rem; + transition: .3s color; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + display: -ms-flexbox; + display: flex; + -ms-flex-align: center; + align-items: center; +} + +.nav-link .badge, +.nav-item .badge { + position: absolute; + top: 0; + right: 0; + padding: .2rem .25rem; + min-width: 1rem; +} + +.nav-tabs { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + color: #9aa0ac; + margin: 0 -.75rem; +} + +.nav-tabs .nav-link { + border: 0; + color: inherit; + border-bottom: 1px solid transparent; + margin-bottom: -1px; + transition: .3s border-color; + font-weight: 400; + padding: 1rem 0; +} + +.nav-tabs .nav-link:hover:not(.disabled) { + border-color: #6e7687; + color: #6e7687; +} + +.nav-tabs .nav-link.active { + border-color: #467fcf; + color: #467fcf; + background: transparent; +} + +.nav-tabs .nav-link.disabled { + opacity: .4; + cursor: default; + pointer-events: none; +} + +.nav-tabs .nav-item { + margin-bottom: 0; + position: relative; +} + +.nav-tabs .nav-item i { + margin-right: .25rem; + line-height: 1; + font-size: 0.875rem; + width: 0.875rem; + vertical-align: baseline; + display: inline-block; +} + +.nav-tabs .nav-item:hover .nav-submenu { + display: block; +} + +.nav-tabs .nav-submenu { + display: none; + position: absolute; + background: #fff; + border: 1px solid rgba(0, 40, 100, 0.12); + border-top: none; + z-index: 10; + box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05); + min-width: 10rem; + border-radius: 0 0 3px 3px; +} + +.nav-tabs .nav-submenu .nav-item { + display: block; + padding: .5rem 1rem; + color: #9aa0ac; + margin: 0 !important; + cursor: pointer; + transition: .3s background; +} + +.nav-tabs .nav-submenu .nav-item.active { + color: #467fcf; +} + +.nav-tabs .nav-submenu .nav-item:hover { + color: #6e7687; + text-decoration: none; + background: rgba(0, 0, 0, 0.024); +} + +.btn, .dataTables_wrapper .dataTables_paginate .paginate_button, .dataTables_wrapper .dataTables_paginate .paginate_button.current { + cursor: pointer; + font-weight: 600; + letter-spacing: .03em; + font-size: 0.8125rem; + min-width: 2.375rem; +} + +.btn i, .dataTables_wrapper .dataTables_paginate .paginate_button i, .dataTables_wrapper .dataTables_paginate .paginate_button.current i { + font-size: 1rem; + vertical-align: -2px; +} + +.btn-icon { + padding-left: .5rem; + padding-right: .5rem; + text-align: center; +} + +.btn-secondary, .dataTables_wrapper .dataTables_paginate .paginate_button { + color: #495057; + background-color: #fff; + border-color: rgba(0, 40, 100, 0.12); + box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.05); +} + +.btn-secondary:hover, .dataTables_wrapper .dataTables_paginate .paginate_button:hover { + color: #495057; + background-color: #f6f6f6; + border-color: rgba(0, 20, 49, 0.12); +} + +.btn-secondary:focus, .dataTables_wrapper .dataTables_paginate .paginate_button:focus, .btn-secondary.focus, .dataTables_wrapper .dataTables_paginate .focus.paginate_button { + box-shadow: 0 0 0 2px rgba(54, 69, 90, 0.5); +} + +.btn-secondary.disabled, .dataTables_wrapper .dataTables_paginate .disabled.paginate_button, .btn-secondary:disabled, .dataTables_wrapper .dataTables_paginate .paginate_button:disabled { + color: #495057; + background-color: #fff; + border-color: rgba(0, 40, 100, 0.12); +} + +.btn-secondary:not(:disabled):not(.disabled):active, .dataTables_wrapper .dataTables_paginate .paginate_button:not(:disabled):not(.disabled):active, .btn-secondary:not(:disabled):not(.disabled).active, .dataTables_wrapper .dataTables_paginate .paginate_button:not(:disabled):not(.disabled).active, +.show > .btn-secondary.dropdown-toggle, +.dataTables_wrapper .dataTables_paginate .show > .dropdown-toggle.paginate_button { + color: #495057; + background-color: #e6e5e5; + border-color: rgba(0, 15, 36, 0.12); +} + +.btn-secondary:not(:disabled):not(.disabled):active:focus, .dataTables_wrapper .dataTables_paginate .paginate_button:not(:disabled):not(.disabled):active:focus, .btn-secondary:not(:disabled):not(.disabled).active:focus, .dataTables_wrapper .dataTables_paginate .paginate_button:not(:disabled):not(.disabled).active:focus, +.show > .btn-secondary.dropdown-toggle:focus, +.dataTables_wrapper .dataTables_paginate .show > .dropdown-toggle.paginate_button:focus { + box-shadow: 0 0 0 2px rgba(54, 69, 90, 0.5); +} + +.btn-pill { + border-radius: 10rem; + padding-left: 1.5em; + padding-right: 1.5em; +} + +.btn-square { + border-radius: 0; +} + +.btn-facebook { + color: #fff; + background-color: #3b5998; + border-color: #3b5998; +} + +.btn-facebook:hover { + color: #fff; + background-color: #30497c; + border-color: #2d4373; +} + +.btn-facebook:focus, .btn-facebook.focus { + box-shadow: 0 0 0 2px rgba(88, 114, 167, 0.5); +} + +.btn-facebook.disabled, .btn-facebook:disabled { + color: #fff; + background-color: #3b5998; + border-color: #3b5998; +} + +.btn-facebook:not(:disabled):not(.disabled):active, .btn-facebook:not(:disabled):not(.disabled).active, +.show > .btn-facebook.dropdown-toggle { + color: #fff; + background-color: #2d4373; + border-color: #293e6a; +} + +.btn-facebook:not(:disabled):not(.disabled):active:focus, .btn-facebook:not(:disabled):not(.disabled).active:focus, +.show > .btn-facebook.dropdown-toggle:focus { + box-shadow: 0 0 0 2px rgba(88, 114, 167, 0.5); +} + +.btn-twitter { + color: #fff; + background-color: #1da1f2; + border-color: #1da1f2; +} + +.btn-twitter:hover { + color: #fff; + background-color: #0d8ddc; + border-color: #0c85d0; +} + +.btn-twitter:focus, .btn-twitter.focus { + box-shadow: 0 0 0 2px rgba(63, 175, 244, 0.5); +} + +.btn-twitter.disabled, .btn-twitter:disabled { + color: #fff; + background-color: #1da1f2; + border-color: #1da1f2; +} + +.btn-twitter:not(:disabled):not(.disabled):active, .btn-twitter:not(:disabled):not(.disabled).active, +.show > .btn-twitter.dropdown-toggle { + color: #fff; + background-color: #0c85d0; + border-color: #0b7ec4; +} + +.btn-twitter:not(:disabled):not(.disabled):active:focus, .btn-twitter:not(:disabled):not(.disabled).active:focus, +.show > .btn-twitter.dropdown-toggle:focus { + box-shadow: 0 0 0 2px rgba(63, 175, 244, 0.5); +} + +.btn-google { + color: #fff; + background-color: #dc4e41; + border-color: #dc4e41; +} + +.btn-google:hover { + color: #fff; + background-color: #d03526; + border-color: #c63224; +} + +.btn-google:focus, .btn-google.focus { + box-shadow: 0 0 0 2px rgba(225, 105, 94, 0.5); +} + +.btn-google.disabled, .btn-google:disabled { + color: #fff; + background-color: #dc4e41; + border-color: #dc4e41; +} + +.btn-google:not(:disabled):not(.disabled):active, .btn-google:not(:disabled):not(.disabled).active, +.show > .btn-google.dropdown-toggle { + color: #fff; + background-color: #c63224; + border-color: #bb2f22; +} + +.btn-google:not(:disabled):not(.disabled):active:focus, .btn-google:not(:disabled):not(.disabled).active:focus, +.show > .btn-google.dropdown-toggle:focus { + box-shadow: 0 0 0 2px rgba(225, 105, 94, 0.5); +} + +.btn-youtube { + color: #fff; + background-color: #f00; + border-color: #f00; +} + +.btn-youtube:hover { + color: #fff; + background-color: #d90000; + border-color: #cc0000; +} + +.btn-youtube:focus, .btn-youtube.focus { + box-shadow: 0 0 0 2px rgba(255, 38, 38, 0.5); +} + +.btn-youtube.disabled, .btn-youtube:disabled { + color: #fff; + background-color: #f00; + border-color: #f00; +} + +.btn-youtube:not(:disabled):not(.disabled):active, .btn-youtube:not(:disabled):not(.disabled).active, +.show > .btn-youtube.dropdown-toggle { + color: #fff; + background-color: #cc0000; + border-color: #bf0000; +} + +.btn-youtube:not(:disabled):not(.disabled):active:focus, .btn-youtube:not(:disabled):not(.disabled).active:focus, +.show > .btn-youtube.dropdown-toggle:focus { + box-shadow: 0 0 0 2px rgba(255, 38, 38, 0.5); +} + +.btn-vimeo { + color: #fff; + background-color: #1ab7ea; + border-color: #1ab7ea; +} + +.btn-vimeo:hover { + color: #fff; + background-color: #139ecb; + border-color: #1295bf; +} + +.btn-vimeo:focus, .btn-vimeo.focus { + box-shadow: 0 0 0 2px rgba(60, 194, 237, 0.5); +} + +.btn-vimeo.disabled, .btn-vimeo:disabled { + color: #fff; + background-color: #1ab7ea; + border-color: #1ab7ea; +} + +.btn-vimeo:not(:disabled):not(.disabled):active, .btn-vimeo:not(:disabled):not(.disabled).active, +.show > .btn-vimeo.dropdown-toggle { + color: #fff; + background-color: #1295bf; + border-color: #108cb4; +} + +.btn-vimeo:not(:disabled):not(.disabled):active:focus, .btn-vimeo:not(:disabled):not(.disabled).active:focus, +.show > .btn-vimeo.dropdown-toggle:focus { + box-shadow: 0 0 0 2px rgba(60, 194, 237, 0.5); +} + +.btn-dribbble { + color: #fff; + background-color: #ea4c89; + border-color: #ea4c89; +} + +.btn-dribbble:hover { + color: #fff; + background-color: #e62a72; + border-color: #e51e6b; +} + +.btn-dribbble:focus, .btn-dribbble.focus { + box-shadow: 0 0 0 2px rgba(237, 103, 155, 0.5); +} + +.btn-dribbble.disabled, .btn-dribbble:disabled { + color: #fff; + background-color: #ea4c89; + border-color: #ea4c89; +} + +.btn-dribbble:not(:disabled):not(.disabled):active, .btn-dribbble:not(:disabled):not(.disabled).active, +.show > .btn-dribbble.dropdown-toggle { + color: #fff; + background-color: #e51e6b; + border-color: #dc1a65; +} + +.btn-dribbble:not(:disabled):not(.disabled):active:focus, .btn-dribbble:not(:disabled):not(.disabled).active:focus, +.show > .btn-dribbble.dropdown-toggle:focus { + box-shadow: 0 0 0 2px rgba(237, 103, 155, 0.5); +} + +.btn-github { + color: #fff; + background-color: #181717; + border-color: #181717; +} + +.btn-github:hover { + color: #fff; + background-color: #040404; + border-color: black; +} + +.btn-github:focus, .btn-github.focus { + box-shadow: 0 0 0 2px rgba(59, 58, 58, 0.5); +} + +.btn-github.disabled, .btn-github:disabled { + color: #fff; + background-color: #181717; + border-color: #181717; +} + +.btn-github:not(:disabled):not(.disabled):active, .btn-github:not(:disabled):not(.disabled).active, +.show > .btn-github.dropdown-toggle { + color: #fff; + background-color: black; + border-color: black; +} + +.btn-github:not(:disabled):not(.disabled):active:focus, .btn-github:not(:disabled):not(.disabled).active:focus, +.show > .btn-github.dropdown-toggle:focus { + box-shadow: 0 0 0 2px rgba(59, 58, 58, 0.5); +} + +.btn-instagram { + color: #fff; + background-color: #e4405f; + border-color: #e4405f; +} + +.btn-instagram:hover { + color: #fff; + background-color: #de1f44; + border-color: #d31e40; +} + +.btn-instagram:focus, .btn-instagram.focus { + box-shadow: 0 0 0 2px rgba(232, 93, 119, 0.5); +} + +.btn-instagram.disabled, .btn-instagram:disabled { + color: #fff; + background-color: #e4405f; + border-color: #e4405f; +} + +.btn-instagram:not(:disabled):not(.disabled):active, .btn-instagram:not(:disabled):not(.disabled).active, +.show > .btn-instagram.dropdown-toggle { + color: #fff; + background-color: #d31e40; + border-color: #c81c3d; +} + +.btn-instagram:not(:disabled):not(.disabled):active:focus, .btn-instagram:not(:disabled):not(.disabled).active:focus, +.show > .btn-instagram.dropdown-toggle:focus { + box-shadow: 0 0 0 2px rgba(232, 93, 119, 0.5); +} + +.btn-pinterest { + color: #fff; + background-color: #bd081c; + border-color: #bd081c; +} + +.btn-pinterest:hover { + color: #fff; + background-color: #980617; + border-color: #8c0615; +} + +.btn-pinterest:focus, .btn-pinterest.focus { + box-shadow: 0 0 0 2px rgba(199, 45, 62, 0.5); +} + +.btn-pinterest.disabled, .btn-pinterest:disabled { + color: #fff; + background-color: #bd081c; + border-color: #bd081c; +} + +.btn-pinterest:not(:disabled):not(.disabled):active, .btn-pinterest:not(:disabled):not(.disabled).active, +.show > .btn-pinterest.dropdown-toggle { + color: #fff; + background-color: #8c0615; + border-color: #800513; +} + +.btn-pinterest:not(:disabled):not(.disabled):active:focus, .btn-pinterest:not(:disabled):not(.disabled).active:focus, +.show > .btn-pinterest.dropdown-toggle:focus { + box-shadow: 0 0 0 2px rgba(199, 45, 62, 0.5); +} + +.btn-vk { + color: #fff; + background-color: #6383a8; + border-color: #6383a8; +} + +.btn-vk:hover { + color: #fff; + background-color: #527093; + border-color: #4d6a8b; +} + +.btn-vk:focus, .btn-vk.focus { + box-shadow: 0 0 0 2px rgba(122, 150, 181, 0.5); +} + +.btn-vk.disabled, .btn-vk:disabled { + color: #fff; + background-color: #6383a8; + border-color: #6383a8; +} + +.btn-vk:not(:disabled):not(.disabled):active, .btn-vk:not(:disabled):not(.disabled).active, +.show > .btn-vk.dropdown-toggle { + color: #fff; + background-color: #4d6a8b; + border-color: #496482; +} + +.btn-vk:not(:disabled):not(.disabled):active:focus, .btn-vk:not(:disabled):not(.disabled).active:focus, +.show > .btn-vk.dropdown-toggle:focus { + box-shadow: 0 0 0 2px rgba(122, 150, 181, 0.5); +} + +.btn-rss { + color: #fff; + background-color: #ffa500; + border-color: #ffa500; +} + +.btn-rss:hover { + color: #fff; + background-color: #d98c00; + border-color: #cc8400; +} + +.btn-rss:focus, .btn-rss.focus { + box-shadow: 0 0 0 2px rgba(255, 179, 38, 0.5); +} + +.btn-rss.disabled, .btn-rss:disabled { + color: #fff; + background-color: #ffa500; + border-color: #ffa500; +} + +.btn-rss:not(:disabled):not(.disabled):active, .btn-rss:not(:disabled):not(.disabled).active, +.show > .btn-rss.dropdown-toggle { + color: #fff; + background-color: #cc8400; + border-color: #bf7c00; +} + +.btn-rss:not(:disabled):not(.disabled):active:focus, .btn-rss:not(:disabled):not(.disabled).active:focus, +.show > .btn-rss.dropdown-toggle:focus { + box-shadow: 0 0 0 2px rgba(255, 179, 38, 0.5); +} + +.btn-flickr { + color: #fff; + background-color: #0063dc; + border-color: #0063dc; +} + +.btn-flickr:hover { + color: #fff; + background-color: #0052b6; + border-color: #004ca9; +} + +.btn-flickr:focus, .btn-flickr.focus { + box-shadow: 0 0 0 2px rgba(38, 122, 225, 0.5); +} + +.btn-flickr.disabled, .btn-flickr:disabled { + color: #fff; + background-color: #0063dc; + border-color: #0063dc; +} + +.btn-flickr:not(:disabled):not(.disabled):active, .btn-flickr:not(:disabled):not(.disabled).active, +.show > .btn-flickr.dropdown-toggle { + color: #fff; + background-color: #004ca9; + border-color: #00469c; +} + +.btn-flickr:not(:disabled):not(.disabled):active:focus, .btn-flickr:not(:disabled):not(.disabled).active:focus, +.show > .btn-flickr.dropdown-toggle:focus { + box-shadow: 0 0 0 2px rgba(38, 122, 225, 0.5); +} + +.btn-bitbucket { + color: #fff; + background-color: #0052cc; + border-color: #0052cc; +} + +.btn-bitbucket:hover { + color: #fff; + background-color: #0043a6; + border-color: #003e99; +} + +.btn-bitbucket:focus, .btn-bitbucket.focus { + box-shadow: 0 0 0 2px rgba(38, 108, 212, 0.5); +} + +.btn-bitbucket.disabled, .btn-bitbucket:disabled { + color: #fff; + background-color: #0052cc; + border-color: #0052cc; +} + +.btn-bitbucket:not(:disabled):not(.disabled):active, .btn-bitbucket:not(:disabled):not(.disabled).active, +.show > .btn-bitbucket.dropdown-toggle { + color: #fff; + background-color: #003e99; + border-color: #00388c; +} + +.btn-bitbucket:not(:disabled):not(.disabled):active:focus, .btn-bitbucket:not(:disabled):not(.disabled).active:focus, +.show > .btn-bitbucket.dropdown-toggle:focus { + box-shadow: 0 0 0 2px rgba(38, 108, 212, 0.5); +} + +.btn-blue { + color: #fff; + background-color: #467fcf; + border-color: #467fcf; +} + +.btn-blue:hover { + color: #fff; + background-color: #316cbe; + border-color: #2f66b3; +} + +.btn-blue:focus, .btn-blue.focus { + box-shadow: 0 0 0 2px rgba(98, 146, 214, 0.5); +} + +.btn-blue.disabled, .btn-blue:disabled { + color: #fff; + background-color: #467fcf; + border-color: #467fcf; +} + +.btn-blue:not(:disabled):not(.disabled):active, .btn-blue:not(:disabled):not(.disabled).active, +.show > .btn-blue.dropdown-toggle { + color: #fff; + background-color: #2f66b3; + border-color: #2c60a9; +} + +.btn-blue:not(:disabled):not(.disabled):active:focus, .btn-blue:not(:disabled):not(.disabled).active:focus, +.show > .btn-blue.dropdown-toggle:focus { + box-shadow: 0 0 0 2px rgba(98, 146, 214, 0.5); +} + +.btn-indigo { + color: #fff; + background-color: #6574cd; + border-color: #6574cd; +} + +.btn-indigo:hover { + color: #fff; + background-color: #485ac4; + border-color: #3f51c1; +} + +.btn-indigo:focus, .btn-indigo.focus { + box-shadow: 0 0 0 2px rgba(124, 137, 213, 0.5); +} + +.btn-indigo.disabled, .btn-indigo:disabled { + color: #fff; + background-color: #6574cd; + border-color: #6574cd; +} + +.btn-indigo:not(:disabled):not(.disabled):active, .btn-indigo:not(:disabled):not(.disabled).active, +.show > .btn-indigo.dropdown-toggle { + color: #fff; + background-color: #3f51c1; + border-color: #3b4db7; +} + +.btn-indigo:not(:disabled):not(.disabled):active:focus, .btn-indigo:not(:disabled):not(.disabled).active:focus, +.show > .btn-indigo.dropdown-toggle:focus { + box-shadow: 0 0 0 2px rgba(124, 137, 213, 0.5); +} + +.btn-purple { + color: #fff; + background-color: #a55eea; + border-color: #a55eea; +} + +.btn-purple:hover { + color: #fff; + background-color: #923ce6; + border-color: #8c31e4; +} + +.btn-purple:focus, .btn-purple.focus { + box-shadow: 0 0 0 2px rgba(179, 118, 237, 0.5); +} + +.btn-purple.disabled, .btn-purple:disabled { + color: #fff; + background-color: #a55eea; + border-color: #a55eea; +} + +.btn-purple:not(:disabled):not(.disabled):active, .btn-purple:not(:disabled):not(.disabled).active, +.show > .btn-purple.dropdown-toggle { + color: #fff; + background-color: #8c31e4; + border-color: #8526e3; +} + +.btn-purple:not(:disabled):not(.disabled):active:focus, .btn-purple:not(:disabled):not(.disabled).active:focus, +.show > .btn-purple.dropdown-toggle:focus { + box-shadow: 0 0 0 2px rgba(179, 118, 237, 0.5); +} + +.btn-pink { + color: #fff; + background-color: #f66d9b; + border-color: #f66d9b; +} + +.btn-pink:hover { + color: #fff; + background-color: #f44982; + border-color: #f33d7a; +} + +.btn-pink:focus, .btn-pink.focus { + box-shadow: 0 0 0 2px rgba(247, 131, 170, 0.5); +} + +.btn-pink.disabled, .btn-pink:disabled { + color: #fff; + background-color: #f66d9b; + border-color: #f66d9b; +} + +.btn-pink:not(:disabled):not(.disabled):active, .btn-pink:not(:disabled):not(.disabled).active, +.show > .btn-pink.dropdown-toggle { + color: #fff; + background-color: #f33d7a; + border-color: #f23172; +} + +.btn-pink:not(:disabled):not(.disabled):active:focus, .btn-pink:not(:disabled):not(.disabled).active:focus, +.show > .btn-pink.dropdown-toggle:focus { + box-shadow: 0 0 0 2px rgba(247, 131, 170, 0.5); +} + +.btn-red { + color: #fff; + background-color: #cd201f; + border-color: #cd201f; +} + +.btn-red:hover { + color: #fff; + background-color: #ac1b1a; + border-color: #a11918; +} + +.btn-red:focus, .btn-red.focus { + box-shadow: 0 0 0 2px rgba(213, 65, 65, 0.5); +} + +.btn-red.disabled, .btn-red:disabled { + color: #fff; + background-color: #cd201f; + border-color: #cd201f; +} + +.btn-red:not(:disabled):not(.disabled):active, .btn-red:not(:disabled):not(.disabled).active, +.show > .btn-red.dropdown-toggle { + color: #fff; + background-color: #a11918; + border-color: #961717; +} + +.btn-red:not(:disabled):not(.disabled):active:focus, .btn-red:not(:disabled):not(.disabled).active:focus, +.show > .btn-red.dropdown-toggle:focus { + box-shadow: 0 0 0 2px rgba(213, 65, 65, 0.5); +} + +.btn-orange { + color: #fff; + background-color: #fd9644; + border-color: #fd9644; +} + +.btn-orange:hover { + color: #fff; + background-color: #fd811e; + border-color: #fc7a12; +} + +.btn-orange:focus, .btn-orange.focus { + box-shadow: 0 0 0 2px rgba(253, 166, 96, 0.5); +} + +.btn-orange.disabled, .btn-orange:disabled { + color: #fff; + background-color: #fd9644; + border-color: #fd9644; +} + +.btn-orange:not(:disabled):not(.disabled):active, .btn-orange:not(:disabled):not(.disabled).active, +.show > .btn-orange.dropdown-toggle { + color: #fff; + background-color: #fc7a12; + border-color: #fc7305; +} + +.btn-orange:not(:disabled):not(.disabled):active:focus, .btn-orange:not(:disabled):not(.disabled).active:focus, +.show > .btn-orange.dropdown-toggle:focus { + box-shadow: 0 0 0 2px rgba(253, 166, 96, 0.5); +} + +.btn-yellow { + color: #fff; + background-color: #f1c40f; + border-color: #f1c40f; +} + +.btn-yellow:hover { + color: #fff; + background-color: #cea70c; + border-color: #c29d0b; +} + +.btn-yellow:focus, .btn-yellow.focus { + box-shadow: 0 0 0 2px rgba(243, 205, 51, 0.5); +} + +.btn-yellow.disabled, .btn-yellow:disabled { + color: #fff; + background-color: #f1c40f; + border-color: #f1c40f; +} + +.btn-yellow:not(:disabled):not(.disabled):active, .btn-yellow:not(:disabled):not(.disabled).active, +.show > .btn-yellow.dropdown-toggle { + color: #fff; + background-color: #c29d0b; + border-color: #b6940b; +} + +.btn-yellow:not(:disabled):not(.disabled):active:focus, .btn-yellow:not(:disabled):not(.disabled).active:focus, +.show > .btn-yellow.dropdown-toggle:focus { + box-shadow: 0 0 0 2px rgba(243, 205, 51, 0.5); +} + +.btn-green { + color: #fff; + background-color: #5eba00; + border-color: #5eba00; +} + +.btn-green:hover { + color: #fff; + background-color: #4b9400; + border-color: #448700; +} + +.btn-green:focus, .btn-green.focus { + box-shadow: 0 0 0 2px rgba(118, 196, 38, 0.5); +} + +.btn-green.disabled, .btn-green:disabled { + color: #fff; + background-color: #5eba00; + border-color: #5eba00; +} + +.btn-green:not(:disabled):not(.disabled):active, .btn-green:not(:disabled):not(.disabled).active, +.show > .btn-green.dropdown-toggle { + color: #fff; + background-color: #448700; + border-color: #3e7a00; +} + +.btn-green:not(:disabled):not(.disabled):active:focus, .btn-green:not(:disabled):not(.disabled).active:focus, +.show > .btn-green.dropdown-toggle:focus { + box-shadow: 0 0 0 2px rgba(118, 196, 38, 0.5); +} + +.btn-teal { + color: #fff; + background-color: #2bcbba; + border-color: #2bcbba; +} + +.btn-teal:hover { + color: #fff; + background-color: #24ab9d; + border-color: #22a193; +} + +.btn-teal:focus, .btn-teal.focus { + box-shadow: 0 0 0 2px rgba(75, 211, 196, 0.5); +} + +.btn-teal.disabled, .btn-teal:disabled { + color: #fff; + background-color: #2bcbba; + border-color: #2bcbba; +} + +.btn-teal:not(:disabled):not(.disabled):active, .btn-teal:not(:disabled):not(.disabled).active, +.show > .btn-teal.dropdown-toggle { + color: #fff; + background-color: #22a193; + border-color: #20968a; +} + +.btn-teal:not(:disabled):not(.disabled):active:focus, .btn-teal:not(:disabled):not(.disabled).active:focus, +.show > .btn-teal.dropdown-toggle:focus { + box-shadow: 0 0 0 2px rgba(75, 211, 196, 0.5); +} + +.btn-cyan { + color: #fff; + background-color: #17a2b8; + border-color: #17a2b8; +} + +.btn-cyan:hover { + color: #fff; + background-color: #138496; + border-color: #117a8b; +} + +.btn-cyan:focus, .btn-cyan.focus { + box-shadow: 0 0 0 2px rgba(58, 176, 195, 0.5); +} + +.btn-cyan.disabled, .btn-cyan:disabled { + color: #fff; + background-color: #17a2b8; + border-color: #17a2b8; +} + +.btn-cyan:not(:disabled):not(.disabled):active, .btn-cyan:not(:disabled):not(.disabled).active, +.show > .btn-cyan.dropdown-toggle { + color: #fff; + background-color: #117a8b; + border-color: #10707f; +} + +.btn-cyan:not(:disabled):not(.disabled):active:focus, .btn-cyan:not(:disabled):not(.disabled).active:focus, +.show > .btn-cyan.dropdown-toggle:focus { + box-shadow: 0 0 0 2px rgba(58, 176, 195, 0.5); +} + +.btn-white { + color: #495057; + background-color: #fff; + border-color: #fff; +} + +.btn-white:hover { + color: #495057; + background-color: #ececec; + border-color: #e6e5e5; +} + +.btn-white:focus, .btn-white.focus { + box-shadow: 0 0 0 2px rgba(228, 229, 230, 0.5); +} + +.btn-white.disabled, .btn-white:disabled { + color: #495057; + background-color: #fff; + border-color: #fff; +} + +.btn-white:not(:disabled):not(.disabled):active, .btn-white:not(:disabled):not(.disabled).active, +.show > .btn-white.dropdown-toggle { + color: #495057; + background-color: #e6e5e5; + border-color: #dfdfdf; +} + +.btn-white:not(:disabled):not(.disabled):active:focus, .btn-white:not(:disabled):not(.disabled).active:focus, +.show > .btn-white.dropdown-toggle:focus { + box-shadow: 0 0 0 2px rgba(228, 229, 230, 0.5); +} + +.btn-gray { + color: #fff; + background-color: #868e96; + border-color: #868e96; +} + +.btn-gray:hover { + color: #fff; + background-color: #727b84; + border-color: #6c757d; +} + +.btn-gray:focus, .btn-gray.focus { + box-shadow: 0 0 0 2px rgba(152, 159, 166, 0.5); +} + +.btn-gray.disabled, .btn-gray:disabled { + color: #fff; + background-color: #868e96; + border-color: #868e96; +} + +.btn-gray:not(:disabled):not(.disabled):active, .btn-gray:not(:disabled):not(.disabled).active, +.show > .btn-gray.dropdown-toggle { + color: #fff; + background-color: #6c757d; + border-color: #666e76; +} + +.btn-gray:not(:disabled):not(.disabled):active:focus, .btn-gray:not(:disabled):not(.disabled).active:focus, +.show > .btn-gray.dropdown-toggle:focus { + box-shadow: 0 0 0 2px rgba(152, 159, 166, 0.5); +} + +.btn-gray-dark { + color: #fff; + background-color: #343a40; + border-color: #343a40; +} + +.btn-gray-dark:hover { + color: #fff; + background-color: #23272b; + border-color: #1d2124; +} + +.btn-gray-dark:focus, .btn-gray-dark.focus { + box-shadow: 0 0 0 2px rgba(82, 88, 93, 0.5); +} + +.btn-gray-dark.disabled, .btn-gray-dark:disabled { + color: #fff; + background-color: #343a40; + border-color: #343a40; +} + +.btn-gray-dark:not(:disabled):not(.disabled):active, .btn-gray-dark:not(:disabled):not(.disabled).active, +.show > .btn-gray-dark.dropdown-toggle { + color: #fff; + background-color: #1d2124; + border-color: #171a1d; +} + +.btn-gray-dark:not(:disabled):not(.disabled):active:focus, .btn-gray-dark:not(:disabled):not(.disabled).active:focus, +.show > .btn-gray-dark.dropdown-toggle:focus { + box-shadow: 0 0 0 2px rgba(82, 88, 93, 0.5); +} + +.btn-azure { + color: #fff; + background-color: #45aaf2; + border-color: #45aaf2; +} + +.btn-azure:hover { + color: #fff; + background-color: #219af0; + border-color: #1594ef; +} + +.btn-azure:focus, .btn-azure.focus { + box-shadow: 0 0 0 2px rgba(97, 183, 244, 0.5); +} + +.btn-azure.disabled, .btn-azure:disabled { + color: #fff; + background-color: #45aaf2; + border-color: #45aaf2; +} + +.btn-azure:not(:disabled):not(.disabled):active, .btn-azure:not(:disabled):not(.disabled).active, +.show > .btn-azure.dropdown-toggle { + color: #fff; + background-color: #1594ef; + border-color: #108ee7; +} + +.btn-azure:not(:disabled):not(.disabled):active:focus, .btn-azure:not(:disabled):not(.disabled).active:focus, +.show > .btn-azure.dropdown-toggle:focus { + box-shadow: 0 0 0 2px rgba(97, 183, 244, 0.5); +} + +.btn-lime { + color: #fff; + background-color: #7bd235; + border-color: #7bd235; +} + +.btn-lime:hover { + color: #fff; + background-color: #69b829; + border-color: #63ad27; +} + +.btn-lime:focus, .btn-lime.focus { + box-shadow: 0 0 0 2px rgba(143, 217, 83, 0.5); +} + +.btn-lime.disabled, .btn-lime:disabled { + color: #fff; + background-color: #7bd235; + border-color: #7bd235; +} + +.btn-lime:not(:disabled):not(.disabled):active, .btn-lime:not(:disabled):not(.disabled).active, +.show > .btn-lime.dropdown-toggle { + color: #fff; + background-color: #63ad27; + border-color: #5da324; +} + +.btn-lime:not(:disabled):not(.disabled):active:focus, .btn-lime:not(:disabled):not(.disabled).active:focus, +.show > .btn-lime.dropdown-toggle:focus { + box-shadow: 0 0 0 2px rgba(143, 217, 83, 0.5); +} + +.btn-option { + background: transparent; + color: #9aa0ac; +} + +.btn-option:hover { + color: #6e7687; +} + +.btn-option:focus { + box-shadow: none; + color: #6e7687; +} + +.btn-sm, .btn-group-sm > .btn, .dataTables_wrapper .dataTables_paginate .btn-group-sm > .paginate_button { + font-size: 0.75rem; + min-width: 1.625rem; +} + +.btn-lg, .btn-group-lg > .btn, .dataTables_wrapper .dataTables_paginate .btn-group-lg > .paginate_button { + font-size: 1rem; + min-width: 2.75rem; + font-weight: 400; +} + +.btn-list { + margin-bottom: -.5rem; + font-size: 0; +} + +.btn-list > .btn, .dataTables_wrapper .dataTables_paginate .btn-list > .paginate_button, +.btn-list > .dropdown { + margin-bottom: .5rem; +} + +.btn-list > .btn:not(:last-child), .dataTables_wrapper .dataTables_paginate .btn-list > .paginate_button:not(:last-child), +.btn-list > .dropdown:not(:last-child) { + margin-right: .5rem; +} + +.btn-loading { + color: transparent !important; + pointer-events: none; + position: relative; +} + +.btn-loading:after { + content: ''; + -webkit-animation: loader 500ms infinite linear; + animation: loader 500ms infinite linear; + border: 2px solid #fff; + border-radius: 50%; + border-right-color: transparent !important; + border-top-color: transparent !important; + display: block; + height: 1.4em; + width: 1.4em; + left: calc(50% - (1.4em / 2)); + top: calc(50% - (1.4em / 2)); + -webkit-transform-origin: center; + transform-origin: center; + position: absolute !important; +} + +.btn-loading.btn-sm:after, .btn-group-sm > .btn-loading.btn:after, .dataTables_wrapper .dataTables_paginate .btn-group-sm > .btn-loading.paginate_button:after { + height: 1em; + width: 1em; + left: calc(50% - (1em / 2)); + top: calc(50% - (1em / 2)); +} + +.btn-loading.btn-secondary:after, .dataTables_wrapper .dataTables_paginate .btn-loading.paginate_button:after { + border-color: #495057; +} + +.alert { + font-size: 0.9375rem; +} + +.alert-icon { + padding-left: 3rem; +} + +.alert-icon > i { + color: inherit !important; + font-size: 1rem; + position: absolute; + top: 1rem; + left: 1rem; +} + +.alert-avatar { + padding-left: 3.75rem; +} + +.alert-avatar .avatar { + position: absolute; + top: .5rem; + left: .75rem; +} + +.close { + font-size: 1rem; + line-height: 1.5; + transition: .3s color; +} + +.close:before { + content: '\ea00'; + font-family: feather, sans-serif; +} + +.badge { + color: #fff; +} + +.badge-default { + background: #e9ecef; + color: #868e96; +} + +.table thead th, .text-wrap table thead th { + border-top: 0; + border-bottom-width: 1px; + padding-top: .5rem; + padding-bottom: .5rem; +} + +.table th, .text-wrap table th { + color: #9aa0ac; + text-transform: uppercase; + font-size: 0.875rem; + font-weight: 400; +} + +.table-md th, +.table-md td { + padding: .5rem; +} + +.table-vcenter td, +.table-vcenter th { + vertical-align: middle; +} + +.table-center td, +.table-center th { + text-align: center; +} + +.table-striped tbody tr:nth-of-type(odd) { + background: transparent; +} + +.table-striped tbody tr:nth-of-type(even) { + background-color: rgba(0, 0, 0, 0.02); +} + +.table-calendar { + margin: 0 0 .75rem; +} + +.table-calendar td, +.table-calendar th { + border: 0; + text-align: center; + padding: 0 !important; + width: 14.28571429%; + line-height: 2.5rem; +} + +.table-calendar td { + border-top: 0; +} + +.table-calendar-link { + line-height: 2rem; + min-width: calc(2rem + 2px); + display: inline-block; + border-radius: 3px; + background: #f8f9fa; + color: #495057; + font-weight: 600; + transition: .3s background, .3s color; + position: relative; +} + +.table-calendar-link:before { + content: ''; + width: 4px; + height: 4px; + position: absolute; + left: .25rem; + top: .25rem; + border-radius: 50px; + background: #467fcf; +} + +.table-calendar-link:hover { + color: #fff; + text-decoration: none; + background: #467fcf; + transition: .3s background; +} + +.table-calendar-link:hover:before { + background: #fff; +} + +.table-header { + cursor: pointer; + transition: .3s color; +} + +.table-header:hover { + color: #495057 !important; +} + +.table-header:after { + content: '\f0dc'; + font-family: FontAwesome; + display: inline-block; + margin-left: .5rem; + font-size: .75rem; +} + +.table-header-asc { + color: #495057 !important; +} + +.table-header-asc:after { + content: '\f0de'; +} + +.table-header-desc { + color: #495057 !important; +} + +.table-header-desc:after { + content: '\f0dd'; +} + +.page-breadcrumb { + background: none; + padding: 0; + margin: 1rem 0 0; + font-size: 0.875rem; +} + +@media (min-width: 768px) { + .page-breadcrumb { + margin: -.5rem 0 0; + } +} + +.page-breadcrumb .breadcrumb-item { + color: #9aa0ac; +} + +.page-breadcrumb .breadcrumb-item.active { + color: #6e7687; +} + +.pagination-simple .page-item .page-link { + background: none; + border: none; +} + +.pagination-simple .page-item.active .page-link { + color: #495057; + font-weight: 700; +} + +.pagination-pager .page-prev { + margin-right: auto; +} + +.pagination-pager .page-next { + margin-left: auto; +} + +.page-total-text { + margin-right: 1rem; + -ms-flex-item-align: center; + align-self: center; + color: #6e7687; +} + +.card { + box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05); + position: relative; + margin-bottom: 1.5rem; + width: 100%; +} + +.card .card { + box-shadow: none; +} + +@media print { + .card { + box-shadow: none; + border: none; + } +} + +.card-body { + -ms-flex: 1 1 auto; + flex: 1 1 auto; + margin: 0; + padding: 1.5rem 1.5rem; + position: relative; +} + +.card-body + .card-body { + border-top: 1px solid rgba(0, 40, 100, 0.12); +} + +.card-body > :last-child { + margin-bottom: 0; +} + +@media print { + .card-body { + padding: 0; + } +} + +.card-body-scrollable { + overflow: auto; +} + +.card-footer, +.card-bottom { + padding: 1rem 1.5rem; + background: none; +} + +.card-footer { + border-top: 1px solid rgba(0, 40, 100, 0.12); + color: #6e7687; +} + +.card-header { + background: none; + padding: 0.5rem 1.5rem; + display: -ms-flexbox; + display: flex; + min-height: 3.5rem; + -ms-flex-align: center; + align-items: center; +} + +.card-header .card-title { + margin-bottom: 0; +} + +.card-header.border-0 + .card-body { + padding-top: 0; +} + +@media print { + .card-header { + display: none; + } +} + +.card-img-top { + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} + +.card-img-overlay { + background-color: rgba(0, 0, 0, 0.4); + display: -ms-flexbox; + display: flex; + -ms-flex-direction: column; + flex-direction: column; +} + +.card-title { + font-size: 1.125rem; + line-height: 1.2; + font-weight: 400; + margin-bottom: 1.5rem; +} + +.card-title a { + color: inherit; +} + +.card-title:only-child { + margin-bottom: 0; +} + +.card-title small, +.card-subtitle { + color: #9aa0ac; + font-size: 0.875rem; + display: block; + margin: -.75rem 0 1rem; + line-height: 1.1; + font-weight: 400; +} + +.card-table { + margin-bottom: 0; +} + +.card-table tr:first-child td, +.card-table tr:first-child th { + border-top: 0; +} + +.card-table tr td:first-child, +.card-table tr th:first-child { + padding-left: 1.5rem; +} + +.card-table tr td:last-child, +.card-table tr th:last-child { + padding-right: 1.5rem; +} + +.card-body + .card-table { + border-top: 1px solid rgba(0, 40, 100, 0.12); +} + +.card-profile .card-header { + height: 9rem; + background-size: cover; +} + +.card-profile-img { + max-width: 6rem; + margin-top: -5rem; + margin-bottom: 1rem; + border: 3px solid #fff; + border-radius: 100%; + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); +} + +.card-link + .card-link { + margin-left: 1rem; +} + +.card-body + .card-list-group { + border-top: 1px solid rgba(0, 40, 100, 0.12); +} + +.card-list-group .list-group-item { + border-right: 0; + border-left: 0; + border-radius: 0; + padding-left: 1.5rem; + padding-right: 1.5rem; +} + +.card-list-group .list-group-item:last-child { + border-bottom: 0; +} + +.card-list-group .list-group-item:first-child { + border-top: 0; +} + +.card-header-tabs { + margin: -1.25rem 0; + border-bottom: 0; + line-height: 2rem; +} + +.card-header-tabs .nav-item { + margin-bottom: 1px; +} + +.card-header-pills { + margin: -.75rem 0; +} + +.card-aside { + -ms-flex-direction: row; + flex-direction: row; +} + +.card-aside-column { + min-width: 5rem; + width: 30%; + -ms-flex: 0 0 30%; + flex: 0 0 30%; + border-top-left-radius: 3px; + border-bottom-left-radius: 3px; + background: no-repeat center/cover; +} + +.card-value { + font-size: 2.5rem; + line-height: 3.4rem; + height: 3.4rem; + display: -ms-flexbox; + display: flex; + -ms-flex-align: center; + align-items: center; + font-weight: 400; +} + +.card-value i { + vertical-align: middle; +} + +.card-chart-bg { + height: 4rem; + margin-top: -1rem; + position: relative; + z-index: 1; + overflow: hidden; +} + +.card-options { + margin-left: auto; + display: -ms-flexbox; + display: flex; + -ms-flex-order: 100; + order: 100; + margin-right: -.5rem; + color: #9aa0ac; + -ms-flex-item-align: center; + align-self: center; +} + +.card-options a:not(.btn) { + margin-left: .5rem; + color: #9aa0ac; + display: inline-block; + min-width: 1rem; +} + +.card-options a:not(.btn):hover { + text-decoration: none; + color: #6e7687; +} + +.card-options a:not(.btn) i { + font-size: 1rem; + vertical-align: middle; +} + +.card-options .dropdown-toggle:after { + display: none; +} + +/* +Card options + */ +.card-collapsed > :not(.card-header):not(.card-status) { + display: none; +} + +.card-collapsed .card-options-collapse i:before { + content: '\e92d'; +} + +.card-fullscreen .card-options-fullscreen i:before { + content: '\e992'; +} + +.card-fullscreen .card-options-remove { + display: none; +} + +/* +Card maps + */ +.card-map { + height: 15rem; + background: #e9ecef; +} + +.card-map-placeholder { + background: no-repeat center; +} + +/** +Card tabs + */ +.card-tabs { + display: -ms-flexbox; + display: flex; +} + +.card-tabs-bottom .card-tabs-item { + border: 0; + border-top: 1px solid rgba(0, 40, 100, 0.12); +} + +.card-tabs-bottom .card-tabs-item.active { + border-top-color: #fff; +} + +.card-tabs-item { + -ms-flex: 1 1 auto; + flex: 1 1 auto; + display: block; + padding: 1rem 1.5rem; + border-bottom: 1px solid rgba(0, 40, 100, 0.12); + color: inherit; + overflow: hidden; +} + +a.card-tabs-item { + background: #fafbfc; +} + +a.card-tabs-item:hover { + text-decoration: none; + color: inherit; +} + +a.card-tabs-item:focus { + z-index: 1; +} + +a.card-tabs-item.active { + background: #fff; + border-bottom-color: #fff; +} + +.card-tabs-item + .card-tabs-item { + border-left: 1px solid rgba(0, 40, 100, 0.12); +} + +/** +Card status + */ +.card-status { + position: absolute; + top: -1px; + left: -1px; + right: -1px; + height: 3px; + border-radius: 3px 3px 0 0; + background: rgba(0, 40, 100, 0.12); +} + +.card-status-left { + right: auto; + bottom: 0; + height: auto; + width: 3px; + border-radius: 3px 0 0 3px; +} + +/** +Card icon + */ +.card-icon { + width: 3rem; + font-size: 2.5rem; + line-height: 3rem; + text-align: center; +} + +/** +Card fullscreen + */ +.card-fullscreen { + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + z-index: 1; + margin: 0; +} + +/** +Card alert + */ +.card-alert { + border-radius: 0; + margin: -1px -1px 0; +} + +.card-category { + font-size: 0.875rem; + text-transform: uppercase; + text-align: center; + font-weight: 600; + letter-spacing: .05em; + margin: 0 0 .5rem; +} + +.popover { + -webkit-filter: drop-shadow(0 1px 3px rgba(0, 0, 0, 0.1)); + filter: drop-shadow(0 1px 3px rgba(0, 0, 0, 0.1)); +} + +.popover.bs-popover-top, .popover.bs-popover-auto[x-placement^="top"] { + margin-bottom: 0.625rem; +} + +.popover .arrow { + margin-left: calc(.25rem + 2px); +} + +.dropdown { + display: inline-block; +} + +.dropdown-menu { + box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05); + min-width: 12rem; +} + +.dropdown-item { + color: #6e7687; +} + +.dropdown-menu-arrow:before { + position: absolute; + top: -6px; + left: 12px; + display: inline-block; + border-right: 5px solid transparent; + border-bottom: 5px solid rgba(0, 40, 100, 0.12); + border-left: 5px solid transparent; + border-bottom-color: rgba(0, 0, 0, 0.2); + content: ''; +} + +.dropdown-menu-arrow:after { + position: absolute; + top: -5px; + left: 12px; + display: inline-block; + border-right: 5px solid transparent; + border-bottom: 5px solid #fff; + border-left: 5px solid transparent; + content: ''; +} + +.dropdown-menu-arrow.dropdown-menu-right:before, .dropdown-menu-arrow.dropdown-menu-right:after { + left: auto; + right: 12px; +} + +.dropdown-toggle { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; +} + +.dropdown-toggle:after { + vertical-align: 0.155em; +} + +.dropdown-toggle:empty:after { + margin-left: 0; +} + +.dropdown-icon { + color: #9aa0ac; + margin-right: .5rem; + margin-left: -.5rem; + width: 1em; + display: inline-block; + text-align: center; + vertical-align: -1px; +} + +.list-inline-dots .list-inline-item + .list-inline-item:before { + content: '· '; + margin-left: -2px; + margin-right: 3px; +} + +.list-separated-item { + padding: 1rem 0; +} + +.list-separated-item:first-child { + padding-top: 0; +} + +.list-separated-item:last-child { + padding-bottom: 0; +} + +.list-separated-item + .list-separated-item { + border-top: 1px solid rgba(0, 40, 100, 0.12); +} + +.list-group-item.active .icon { + color: inherit !important; +} + +.list-group-transparent .list-group-item { + background: none; + border: 0; + padding: .5rem 1rem; + border-radius: 3px; +} + +.list-group-transparent .list-group-item.active { + background: rgba(70, 127, 207, 0.06); + font-weight: 600; +} + +.avatar { + width: 2rem; + height: 2rem; + line-height: 2rem; + border-radius: 50%; + display: inline-block; + background: #ced4da no-repeat center/cover; + position: relative; + text-align: center; + color: #868e96; + font-weight: 600; + vertical-align: bottom; + font-size: .875rem; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.avatar i { + font-size: 125%; + vertical-align: sub; +} + +.avatar-status { + position: absolute; + right: -2px; + bottom: -2px; + width: .75rem; + height: .75rem; + border: 2px solid #fff; + background: #868e96; + border-radius: 50%; +} + +.avatar-sm { + width: 1.5rem; + height: 1.5rem; + line-height: 1.5rem; + font-size: .75rem; +} + +.avatar-md { + width: 2.5rem; + height: 2.5rem; + line-height: 2.5rem; + font-size: 1rem; +} + +.avatar-lg { + width: 3rem; + height: 3rem; + line-height: 3rem; + font-size: 1.25rem; +} + +.avatar-xl { + width: 4rem; + height: 4rem; + line-height: 4rem; + font-size: 1.75rem; +} + +.avatar-xxl { + width: 5rem; + height: 5rem; + line-height: 5rem; + font-size: 2rem; +} + +.avatar-placeholder { + background: #ced4da url('data:image/svg+xml;charset=utf8,') no-repeat center/80%; +} + +.avatar-list { + margin: 0 0 -.5rem; + padding: 0; + font-size: 0; +} + +.avatar-list .avatar { + margin-bottom: .5rem; +} + +.avatar-list .avatar:not(:last-child) { + margin-right: .5rem; +} + +.avatar-list-stacked .avatar { + margin-right: -.8em !important; +} + +.avatar-list-stacked .avatar { + box-shadow: 0 0 0 2px #fff; +} + +.avatar-blue { + background-color: #c8d9f1; + color: #467fcf; +} + +.avatar-indigo { + background-color: #d1d5f0; + color: #6574cd; +} + +.avatar-purple { + background-color: #e4cff9; + color: #a55eea; +} + +.avatar-pink { + background-color: #fcd3e1; + color: #f66d9b; +} + +.avatar-red { + background-color: #f0bcbc; + color: #cd201f; +} + +.avatar-orange { + background-color: #fee0c7; + color: #fd9644; +} + +.avatar-yellow { + background-color: #fbedb7; + color: #f1c40f; +} + +.avatar-green { + background-color: #cfeab3; + color: #5eba00; +} + +.avatar-teal { + background-color: #bfefea; + color: #2bcbba; +} + +.avatar-cyan { + background-color: #b9e3ea; + color: #17a2b8; +} + +.avatar-white { + background-color: white; + color: #fff; +} + +.avatar-gray { + background-color: #dbdde0; + color: #868e96; +} + +.avatar-gray-dark { + background-color: #c2c4c6; + color: #343a40; +} + +.avatar-azure { + background-color: #c7e6fb; + color: #45aaf2; +} + +.avatar-lime { + background-color: #d7f2c2; + color: #7bd235; +} + +.product-price { + font-size: 1rem; +} + +.product-price strong { + font-size: 1.5rem; +} + +@-webkit-keyframes indeterminate { + 0% { + left: -35%; + right: 100%; + } + 100%, 60% { + left: 100%; + right: -90%; + } +} + +@keyframes indeterminate { + 0% { + left: -35%; + right: 100%; + } + 100%, 60% { + left: 100%; + right: -90%; + } +} + +@-webkit-keyframes indeterminate-short { + 0% { + left: -200%; + right: 100%; + } + 100%, 60% { + left: 107%; + right: -8%; + } +} + +@keyframes indeterminate-short { + 0% { + left: -200%; + right: 100%; + } + 100%, 60% { + left: 107%; + right: -8%; + } +} + +.progress { + position: relative; +} + +.progress-xs, +.progress-xs .progress-bar { + height: .25rem; +} + +.progress-sm, +.progress-sm .progress-bar { + height: .5rem; +} + +.progress-bar-indeterminate:after, .progress-bar-indeterminate:before { + content: ''; + position: absolute; + background-color: inherit; + left: 0; + will-change: left, right; + top: 0; + bottom: 0; +} + +.progress-bar-indeterminate:before { + -webkit-animation: indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite; + animation: indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite; +} + +.progress-bar-indeterminate:after { + -webkit-animation: indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite; + animation: indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite; + -webkit-animation-delay: 1.15s; + animation-delay: 1.15s; +} + +@-webkit-keyframes loader { + from { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + to { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} + +@keyframes loader { + from { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + to { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} + +/** +Dimmer +*/ +.dimmer { + position: relative; +} + +.dimmer .loader { + display: none; + margin: 0 auto; + position: absolute; + top: 50%; + left: 0; + right: 0; + -webkit-transform: translateY(-50%); + transform: translateY(-50%); +} + +.dimmer.active .loader { + display: block; +} + +.dimmer.active .dimmer-content { + opacity: .5; + pointer-events: none; +} + +/** +Loader +*/ +.loader { + display: block; + position: relative; + height: 2.5rem; + width: 2.5rem; + color: #467fcf; +} + +.loader:before, .loader:after { + width: 2.5rem; + height: 2.5rem; + margin: -1.25rem 0 0 -1.25rem; + position: absolute; + content: ''; + top: 50%; + left: 50%; +} + +.loader:before { + border-radius: 50%; + border: 3px solid currentColor; + opacity: .15; +} + +.loader:after { + -webkit-animation: loader .6s linear; + animation: loader .6s linear; + -webkit-animation-iteration-count: infinite; + animation-iteration-count: infinite; + border-radius: 50%; + border: 3px solid; + border-color: transparent; + border-top-color: currentColor; + box-shadow: 0 0 0 1px transparent; +} + +.icons-list { + list-style: none; + margin: 0 -1px -1px 0; + padding: 0; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; +} + +.icons-list > li { + -ms-flex: 1 0 4rem; + flex: 1 0 4rem; +} + +.icons-list-wrap { + overflow: hidden; +} + +.icons-list-item { + text-align: center; + height: 4rem; + display: -ms-flexbox; + display: flex; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: center; + justify-content: center; + border-right: 1px solid rgba(0, 40, 100, 0.12); + border-bottom: 1px solid rgba(0, 40, 100, 0.12); +} + +.icons-list-item i { + font-size: 1.25rem; +} + +.img-gallery { + margin-right: -.25rem; + margin-left: -.25rem; + margin-bottom: -.5rem; +} + +.img-gallery > .col, +.img-gallery > [class*="col-"] { + padding-left: .25rem; + padding-right: .25rem; + padding-bottom: .5rem; +} + +.link-overlay { + position: relative; +} + +.link-overlay:hover .link-overlay-bg { + opacity: 1; +} + +.link-overlay-bg { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + background: rgba(70, 127, 207, 0.8); + display: -ms-flexbox; + display: flex; + color: #fff; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: center; + justify-content: center; + font-size: 1.25rem; + opacity: 0; + transition: .3s opacity; +} + +.media-icon { + width: 2rem; + height: 2rem; + line-height: 2rem; + text-align: center; + border-radius: 100%; +} + +.media-list { + margin: 0; + padding: 0; + list-style: none; +} + +textarea[cols] { + height: auto; +} + +.form-group { + display: block; +} + +.form-label { + display: block; + margin-bottom: .375rem; + font-weight: 600; + font-size: 0.875rem; +} + +.form-label-small { + float: right; + font-weight: 400; + font-size: 87.5%; +} + +.form-footer { + margin-top: 2rem; +} + +.custom-control { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.custom-controls-stacked .custom-control { + margin-bottom: .25rem; +} + +.custom-control-label { + vertical-align: middle; +} + +.custom-control-label:before { + border: 1px solid rgba(0, 40, 100, 0.12); + background-color: #fff; + background-size: .5rem; +} + +.custom-control-description { + line-height: 1.5rem; +} + +.input-group-prepend, +.input-group-append, +.input-group-btn { + font-size: 0.9375rem; +} + +.input-group-prepend > .btn, .dataTables_wrapper .dataTables_paginate .input-group-prepend > .paginate_button, +.input-group-append > .btn, +.dataTables_wrapper .dataTables_paginate .input-group-append > .paginate_button, +.input-group-btn > .btn, +.dataTables_wrapper .dataTables_paginate .input-group-btn > .paginate_button { + height: 100%; + border-color: rgba(0, 40, 100, 0.12); +} + +.input-group-prepend > .input-group-text { + border-right: 0; +} + +.input-group-append > .input-group-text { + border-left: 0; +} + +/** +Icon input + */ +.input-icon { + position: relative; +} + +.input-icon .form-control:not(:last-child), .input-icon .dataTables_wrapper .dataTables_length select:not(:last-child), .dataTables_wrapper .dataTables_length .input-icon select:not(:last-child), .input-icon .dataTables_wrapper .dataTables_filter input:not(:last-child), .dataTables_wrapper .dataTables_filter .input-icon input:not(:last-child) { + padding-right: 2.5rem; +} + +.input-icon .form-control:not(:first-child), .input-icon .dataTables_wrapper .dataTables_length select:not(:first-child), .dataTables_wrapper .dataTables_length .input-icon select:not(:first-child), .input-icon .dataTables_wrapper .dataTables_filter input:not(:first-child), .dataTables_wrapper .dataTables_filter .input-icon input:not(:first-child) { + padding-left: 2.5rem; +} + +.input-icon-addon { + position: absolute; + top: 0; + bottom: 0; + left: 0; + color: #9aa0ac; + display: -ms-flexbox; + display: flex; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: center; + justify-content: center; + min-width: 2.5rem; + pointer-events: none; +} + +.input-icon-addon:last-child { + left: auto; + right: 0; +} + +.form-fieldset { + background: #f8f9fa; + border: 1px solid #e9ecef; + padding: 1rem; + border-radius: 3px; + margin-bottom: 1rem; +} + +.form-required { + color: #cd201f; +} + +.form-required:before { + content: ' '; +} + +.state-valid { + padding-right: 2rem; + background: url("data:image/svg+xml;charset=utf8,") no-repeat center right 0.5rem/1rem; +} + +.state-invalid { + padding-right: 2rem; + background: url("data:image/svg+xml;charset=utf8,") no-repeat center right 0.5rem/1rem; +} + +.form-help { + display: inline-block; + width: 1rem; + height: 1rem; + text-align: center; + line-height: 1rem; + color: #9aa0ac; + background: #f8f9fa; + border-radius: 50%; + font-size: 0.75rem; + transition: .3s background-color, .3s color; + text-decoration: none; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.form-help:hover, .form-help[aria-describedby] { + background: #467fcf; + color: #fff; +} + +.sparkline { + display: inline-block; + height: 2rem; +} + +.jqstooltip { + box-sizing: content-box; + font-family: inherit !important; + background: #333 !important; + border: none !important; + border-radius: 3px; + font-size: 11px !important; + font-weight: 700 !important; + line-height: 1 !important; + padding: 6px !important; +} + +.jqstooltip .jqsfield { + font: inherit !important; +} + +.social-links li a { + background: #f8f8f8; + border-radius: 50%; + color: #9aa0ac; + display: inline-block; + height: 1.75rem; + width: 1.75rem; + line-height: 1.75rem; + text-align: center; +} + +.map, +.chart { + position: relative; + padding-top: 56.25%; +} + +.map-square, +.chart-square { + padding-top: 100%; +} + +.map-content, +.chart-content { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; +} + +.map-header { + margin-top: -1.5rem; + margin-bottom: 1.5rem; + height: 15rem; + position: relative; + margin-bottom: -1.5rem; +} + +.map-header:before { + content: ''; + position: absolute; + bottom: 0; + left: 0; + right: 0; + height: 10rem; + background: linear-gradient(to bottom, rgba(245, 247, 251, 0) 5%, #f5f7fb 95%); + pointer-events: none; +} + +.map-header-layer { + height: 100%; +} + +.map-static { + height: 120px; + width: 100%; + max-width: 640px; + background-position: center center; + background-size: 640px 120px; +} + +@-webkit-keyframes status-pulse { + 0%, 100% { + opacity: 1; + } + 50% { + opacity: .32; + } +} + +@keyframes status-pulse { + 0%, 100% { + opacity: 1; + } + 50% { + opacity: .32; + } +} + +.status-icon { + content: ''; + width: 0.5rem; + height: 0.5rem; + display: inline-block; + background: currentColor; + border-radius: 50%; + -webkit-transform: translateY(-1px); + transform: translateY(-1px); + margin-right: .375rem; + vertical-align: middle; +} + +.status-animated { + -webkit-animation: 1s status-pulse infinite ease; + animation: 1s status-pulse infinite ease; +} + +.chart-circle { + display: block; + height: 8rem; + width: 8rem; + position: relative; +} + +.chart-circle canvas { + margin: 0 auto; + display: block; + max-width: 100%; + max-height: 100%; +} + +.chart-circle-xs { + height: 2.5rem; + width: 2.5rem; + font-size: .8rem; +} + +.chart-circle-sm { + height: 4rem; + width: 4rem; + font-size: .8rem; +} + +.chart-circle-lg { + height: 10rem; + width: 10rem; + font-size: .8rem; +} + +.chart-circle-value { + position: absolute; + top: 0; + left: 0; + right: 0; + margin-left: auto; + margin-right: auto; + bottom: 0; + display: -ms-flexbox; + display: flex; + -ms-flex-pack: center; + justify-content: center; + -ms-flex-align: center; + align-items: center; + -ms-flex-direction: column; + flex-direction: column; + line-height: 1; +} + +.chart-circle-value small { + display: block; + color: #9aa0ac; + font-size: 0.9375rem; +} + +.chips { + margin: 0 0 -.5rem; +} + +.chips .chip { + margin: 0 .5rem .5rem 0; +} + +.chip { + display: inline-block; + height: 2rem; + line-height: 2rem; + font-size: 0.875rem; + font-weight: 500; + color: #6e7687; + padding: 0 .75rem; + border-radius: 1rem; + background-color: #f8f9fa; + transition: .3s background; +} + +.chip .avatar { + float: left; + margin: 0 .5rem 0 -.75rem; + height: 2rem; + width: 2rem; + border-radius: 50%; +} + +a.chip:hover { + color: inherit; + text-decoration: none; + background-color: #e9ecef; +} + +.stamp { + color: #fff; + background: #868e96; + display: inline-block; + min-width: 2rem; + height: 2rem; + padding: 0 .25rem; + line-height: 2rem; + text-align: center; + border-radius: 3px; + font-weight: 600; +} + +.stamp-md { + min-width: 2.5rem; + height: 2.5rem; + line-height: 2.5rem; +} + +.chat { + outline: 0; + margin: 0; + padding: 0; + list-style-type: none; + display: -ms-flexbox; + display: flex; + -ms-flex-direction: column; + flex-direction: column; + -ms-flex-pack: end; + justify-content: flex-end; + min-height: 100%; +} + +.chat-line { + padding: 0; + text-align: right; + position: relative; + display: -ms-flexbox; + display: flex; + -ms-flex-direction: row-reverse; + flex-direction: row-reverse; +} + +.chat-line + .chat-line { + padding-top: 1rem; +} + +.chat-message { + position: relative; + display: inline-block; + background-color: #467fcf; + color: #fff; + font-size: 0.875rem; + padding: .375rem .5rem; + border-radius: 3px; + white-space: normal; + text-align: left; + margin: 0 .5rem 0 2.5rem; + line-height: 1.4; +} + +.chat-message > :last-child { + margin-bottom: 0 !important; +} + +.chat-message:after { + content: ""; + position: absolute; + right: -5px; + top: 7px; + border-bottom: 6px solid transparent; + border-left: 6px solid #467fcf; + border-top: 6px solid transparent; +} + +.chat-message img { + max-width: 100%; +} + +.chat-message p { + margin-bottom: 1em; +} + +.chat-line-friend { + -ms-flex-direction: row; + flex-direction: row; +} + +.chat-line-friend + .chat-line-friend { + margin-top: -.5rem; +} + +.chat-line-friend + .chat-line-friend .chat-author { + visibility: hidden; +} + +.chat-line-friend + .chat-line-friend .chat-message:after { + display: none; +} + +.chat-line-friend .chat-message { + background-color: #f3f3f3; + color: #495057; + margin-left: .5rem; + margin-right: 2.5rem; +} + +.chat-line-friend .chat-message:after { + right: auto; + left: -5px; + border-left-width: 0; + border-right: 5px solid #f3f3f3; +} + +.example { + padding: 1.5rem; + border: 1px solid rgba(0, 40, 100, 0.12); + border-radius: 3px 3px 0 0; + font-size: 0.9375rem; +} + +.example-bg { + background: #f5f7fb; +} + +.example + .highlight { + border-top: none; + margin-top: 0; + border-radius: 0 0 3px 3px; +} + +.highlight { + margin: 1rem 0 2rem; + border: 1px solid rgba(0, 40, 100, 0.12); + border-radius: 3px; + font-size: 0.9375rem; + max-height: 40rem; + overflow: auto; + background: #fcfcfc; +} + +.highlight pre { + margin-bottom: 0; + background-color: transparent; +} + +.example-column { + margin: 0 auto; +} + +.example-column > .card:last-of-type { + margin-bottom: 0; +} + +.example-column-1 { + max-width: 20rem; +} + +.example-column-2 { + max-width: 40rem; +} + +.tag { + font-size: 0.75rem; + color: #6e7687; + background-color: #e9ecef; + border-radius: 3px; + padding: 0 .5rem; + line-height: 2em; + display: -ms-inline-flexbox; + display: inline-flex; + cursor: default; + font-weight: 400; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +a.tag { + text-decoration: none; + cursor: pointer; + transition: .3s color, .3s background; +} + +a.tag:hover { + background-color: rgba(110, 118, 135, 0.2); + color: inherit; +} + +.tag-addon { + display: inline-block; + padding: 0 .5rem; + color: inherit; + text-decoration: none; + background: rgba(0, 0, 0, 0.06); + margin: 0 -.5rem 0 .5rem; + text-align: center; + min-width: 1.5rem; +} + +.tag-addon:last-child { + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; +} + +.tag-addon i { + vertical-align: middle; + margin: 0 -.25rem; +} + +a.tag-addon { + text-decoration: none; + cursor: pointer; + transition: .3s color, .3s background; +} + +a.tag-addon:hover { + background: rgba(0, 0, 0, 0.16); + color: inherit; +} + +.tag-avatar { + width: 1.5rem; + height: 1.5rem; + border-radius: 3px 0 0 3px; + margin: 0 .5rem 0 -.5rem; +} + +.tag-blue { + background-color: #467fcf; + color: #fff; +} + +.tag-indigo { + background-color: #6574cd; + color: #fff; +} + +.tag-purple { + background-color: #a55eea; + color: #fff; +} + +.tag-pink { + background-color: #f66d9b; + color: #fff; +} + +.tag-red { + background-color: #cd201f; + color: #fff; +} + +.tag-orange { + background-color: #fd9644; + color: #fff; +} + +.tag-yellow { + background-color: #f1c40f; + color: #fff; +} + +.tag-green { + background-color: #5eba00; + color: #fff; +} + +.tag-teal { + background-color: #2bcbba; + color: #fff; +} + +.tag-cyan { + background-color: #17a2b8; + color: #fff; +} + +.tag-white { + background-color: #fff; + color: #fff; +} + +.tag-gray { + background-color: #868e96; + color: #fff; +} + +.tag-gray-dark { + background-color: #343a40; + color: #fff; +} + +.tag-azure { + background-color: #45aaf2; + color: #fff; +} + +.tag-lime { + background-color: #7bd235; + color: #fff; +} + +.tag-primary { + background-color: #467fcf; + color: #fff; +} + +.tag-secondary { + background-color: #868e96; + color: #fff; +} + +.tag-success { + background-color: #5eba00; + color: #fff; +} + +.tag-info { + background-color: #45aaf2; + color: #fff; +} + +.tag-warning { + background-color: #f1c40f; + color: #fff; +} + +.tag-danger { + background-color: #cd201f; + color: #fff; +} + +.tag-light { + background-color: #f8f9fa; + color: #fff; +} + +.tag-dark { + background-color: #343a40; + color: #fff; +} + +.tag-rounded { + border-radius: 50px; +} + +.tag-rounded .tag-avatar { + border-radius: 50px; +} + +.tags { + margin-bottom: -.5rem; + font-size: 0; +} + +.tags > .tag { + margin-bottom: .5rem; +} + +.tags > .tag:not(:last-child) { + margin-right: .5rem; +} + +.highlight .hll { + background-color: #ffc; +} + +.highlight .c { + color: #999; +} + +.highlight .k { + color: #069; +} + +.highlight .o { + color: #555; +} + +.highlight .cm { + color: #999; +} + +.highlight .cp { + color: #099; +} + +.highlight .c1 { + color: #999; +} + +.highlight .cs { + color: #999; +} + +.highlight .gd { + background-color: #fcc; + border: 1px solid #c00; +} + +.highlight .ge { + font-style: italic; +} + +.highlight .gr { + color: #f00; +} + +.highlight .gh { + color: #030; +} + +.highlight .gi { + background-color: #cfc; + border: 1px solid #0c0; +} + +.highlight .go { + color: #aaa; +} + +.highlight .gp { + color: #009; +} + +.highlight .gu { + color: #030; +} + +.highlight .gt { + color: #9c6; +} + +.highlight .kc { + color: #069; +} + +.highlight .kd { + color: #069; +} + +.highlight .kn { + color: #069; +} + +.highlight .kp { + color: #069; +} + +.highlight .kr { + color: #069; +} + +.highlight .kt { + color: #078; +} + +.highlight .m { + color: #f60; +} + +.highlight .s { + color: #d44950; +} + +.highlight .na { + color: #4f9fcf; +} + +.highlight .nb { + color: #366; +} + +.highlight .nc { + color: #0a8; +} + +.highlight .no { + color: #360; +} + +.highlight .nd { + color: #99f; +} + +.highlight .ni { + color: #999; +} + +.highlight .ne { + color: #c00; +} + +.highlight .nf { + color: #c0f; +} + +.highlight .nl { + color: #99f; +} + +.highlight .nn { + color: #0cf; +} + +.highlight .nt { + color: #2f6f9f; +} + +.highlight .nv { + color: #033; +} + +.highlight .ow { + color: #000; +} + +.highlight .w { + color: #bbb; +} + +.highlight .mf { + color: #f60; +} + +.highlight .mh { + color: #f60; +} + +.highlight .mi { + color: #f60; +} + +.highlight .mo { + color: #f60; +} + +.highlight .sb { + color: #c30; +} + +.highlight .sc { + color: #c30; +} + +.highlight .sd { + font-style: italic; + color: #c30; +} + +.highlight .s2 { + color: #c30; +} + +.highlight .se { + color: #c30; +} + +.highlight .sh { + color: #c30; +} + +.highlight .si { + color: #a00; +} + +.highlight .sx { + color: #c30; +} + +.highlight .sr { + color: #3aa; +} + +.highlight .s1 { + color: #c30; +} + +.highlight .ss { + color: #fc3; +} + +.highlight .bp { + color: #366; +} + +.highlight .vc { + color: #033; +} + +.highlight .vg { + color: #033; +} + +.highlight .vi { + color: #033; +} + +.highlight .il { + color: #f60; +} + +.highlight .css .o, +.highlight .css .o + .nt, +.highlight .css .nt + .nt { + color: #999; +} + +.highlight .language-bash::before, +.highlight .language-sh::before { + color: #009; + content: "$ "; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.highlight .language-powershell::before { + color: #009; + content: "PM> "; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.carousel-item-background { + content: ''; + background: rgba(0, 0, 0, 0.5); + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; +} + +.dataTables_wrapper thead .sorting { + position: relative; +} + +.dataTables_wrapper thead .sorting:after { + position: absolute; + right: 0; + bottom: 5px; + content: "\e92d"; + font-family: 'feather' !important; +} + +.dataTables_wrapper thead .sorting:before { + position: absolute; + right: 0; + top: 5px; + content: "\e930"; + font-family: 'feather' !important; +} + +.dataTables_wrapper thead .sorting_desc { + position: relative; +} + +.dataTables_wrapper thead .sorting_desc:after { + position: absolute; + right: 0; + bottom: 5px; + content: "\e92d"; + font-family: 'feather' !important; +} + +.dataTables_wrapper thead .sorting_asc { + position: relative; +} + +.dataTables_wrapper thead .sorting_asc:after { + position: absolute; + right: 0; + top: 5px; + content: "\e930"; + font-family: 'feather' !important; +} + +.dataTables_wrapper .table, .dataTables_wrapper .text-wrap table, .text-wrap .dataTables_wrapper table { + border-top: 1px solid rgba(0, 40, 100, 0.12); + border-bottom: 1px solid rgba(0, 40, 100, 0.12); +} + +.dataTables_wrapper .dataTables_length { + margin: 1rem 1.5rem; + float: left; +} + +.dataTables_wrapper .dataTables_length select { + width: auto; + display: inline-block; + margin: 0 0.2rem; +} + +.dataTables_wrapper .dataTables_filter { + float: right; + margin: 1rem 1.5rem; + text-align: right; + color: #495057; +} + +.dataTables_wrapper .dataTables_filter input { + width: auto; + margin-left: 0.2rem; + display: inline-block; +} + +.dataTables_wrapper .dataTables_paginate { + float: right; + text-align: right; + margin: 1rem 1.5rem; +} + +.dataTables_wrapper .dataTables_paginate .paginate_button { + margin: 0 0.2rem; +} + +.dataTables_wrapper .dataTables_info { + clear: both; + float: left; + margin: 1rem 1.5rem; + color: #495057; + line-height: 38px; +} + +.bottombar { + position: fixed; + bottom: 0; + left: 0; + right: 0; + background: #363F51; + border-top: 1px solid rgba(0, 40, 100, 0.12); + z-index: 100; + font-size: 1rem; + padding: .75rem 0; + color: #fff; + box-shadow: 0 -1px 9px rgba(0, 0, 0, 0.05); +} + +.bottombar-close { + position: absolute; + top: .75rem; + right: 1rem; + color: #9aa0ac; + transition: .3s color; + display: block; + margin-left: 1rem; +} + +.bottombar-close:hover { + color: #6e7687; +} + +.bottombar-image { + position: relative; + display: block; + margin: 0 1rem 0 0; +} + +@media (min-width: 992px) { + .bottombar-image { + margin: -176px 1rem -90px -25px; + } +} + +.bottombar-image img { + width: 109px; + display: block; +} + +@media (min-width: 992px) { + .bottombar-image img { + width: 218px; + } +} + +.custom-range { + -ms-flex-align: center; + align-items: center; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + background: none; + cursor: pointer; + display: -ms-flexbox; + display: flex; + height: 100%; + min-height: 2.375rem; + overflow: hidden; + padding: 0; + border: 0; +} + +.custom-range:focus { + box-shadow: none; + outline: none; +} + +.custom-range:focus::-webkit-slider-thumb { + border-color: #467fcf; + background-color: #467fcf; +} + +.custom-range:focus::-moz-range-thumb { + border-color: #467fcf; + background-color: #467fcf; +} + +.custom-range:focus::-ms-thumb { + border-color: #467fcf; + background-color: #467fcf; +} + +.custom-range::-moz-focus-outer { + border: 0; +} + +.custom-range::-webkit-slider-runnable-track { + background: #467fcf; + content: ''; + height: 2px; + pointer-events: none; +} + +.custom-range::-webkit-slider-thumb { + width: 14px; + height: 14px; + -webkit-appearance: none; + appearance: none; + background: #fff; + border-radius: 50px; + box-shadow: 1px 0 0 -6px rgba(0, 50, 126, 0.12), 6px 0 0 -6px rgba(0, 50, 126, 0.12), 7px 0 0 -6px rgba(0, 50, 126, 0.12), 8px 0 0 -6px rgba(0, 50, 126, 0.12), 9px 0 0 -6px rgba(0, 50, 126, 0.12), 10px 0 0 -6px rgba(0, 50, 126, 0.12), 11px 0 0 -6px rgba(0, 50, 126, 0.12), 12px 0 0 -6px rgba(0, 50, 126, 0.12), 13px 0 0 -6px rgba(0, 50, 126, 0.12), 14px 0 0 -6px rgba(0, 50, 126, 0.12), 15px 0 0 -6px rgba(0, 50, 126, 0.12), 16px 0 0 -6px rgba(0, 50, 126, 0.12), 17px 0 0 -6px rgba(0, 50, 126, 0.12), 18px 0 0 -6px rgba(0, 50, 126, 0.12), 19px 0 0 -6px rgba(0, 50, 126, 0.12), 20px 0 0 -6px rgba(0, 50, 126, 0.12), 21px 0 0 -6px rgba(0, 50, 126, 0.12), 22px 0 0 -6px rgba(0, 50, 126, 0.12), 23px 0 0 -6px rgba(0, 50, 126, 0.12), 24px 0 0 -6px rgba(0, 50, 126, 0.12), 25px 0 0 -6px rgba(0, 50, 126, 0.12), 26px 0 0 -6px rgba(0, 50, 126, 0.12), 27px 0 0 -6px rgba(0, 50, 126, 0.12), 28px 0 0 -6px rgba(0, 50, 126, 0.12), 29px 0 0 -6px rgba(0, 50, 126, 0.12), 30px 0 0 -6px rgba(0, 50, 126, 0.12), 31px 0 0 -6px rgba(0, 50, 126, 0.12), 32px 0 0 -6px rgba(0, 50, 126, 0.12), 33px 0 0 -6px rgba(0, 50, 126, 0.12), 34px 0 0 -6px rgba(0, 50, 126, 0.12), 35px 0 0 -6px rgba(0, 50, 126, 0.12), 36px 0 0 -6px rgba(0, 50, 126, 0.12), 37px 0 0 -6px rgba(0, 50, 126, 0.12), 38px 0 0 -6px rgba(0, 50, 126, 0.12), 39px 0 0 -6px rgba(0, 50, 126, 0.12), 40px 0 0 -6px rgba(0, 50, 126, 0.12), 41px 0 0 -6px rgba(0, 50, 126, 0.12), 42px 0 0 -6px rgba(0, 50, 126, 0.12), 43px 0 0 -6px rgba(0, 50, 126, 0.12), 44px 0 0 -6px rgba(0, 50, 126, 0.12), 45px 0 0 -6px rgba(0, 50, 126, 0.12), 46px 0 0 -6px rgba(0, 50, 126, 0.12), 47px 0 0 -6px rgba(0, 50, 126, 0.12), 48px 0 0 -6px rgba(0, 50, 126, 0.12), 49px 0 0 -6px rgba(0, 50, 126, 0.12), 50px 0 0 -6px rgba(0, 50, 126, 0.12), 51px 0 0 -6px rgba(0, 50, 126, 0.12), 52px 0 0 -6px rgba(0, 50, 126, 0.12), 53px 0 0 -6px rgba(0, 50, 126, 0.12), 54px 0 0 -6px rgba(0, 50, 126, 0.12), 55px 0 0 -6px rgba(0, 50, 126, 0.12), 56px 0 0 -6px rgba(0, 50, 126, 0.12), 57px 0 0 -6px rgba(0, 50, 126, 0.12), 58px 0 0 -6px rgba(0, 50, 126, 0.12), 59px 0 0 -6px rgba(0, 50, 126, 0.12), 60px 0 0 -6px rgba(0, 50, 126, 0.12), 61px 0 0 -6px rgba(0, 50, 126, 0.12), 62px 0 0 -6px rgba(0, 50, 126, 0.12), 63px 0 0 -6px rgba(0, 50, 126, 0.12), 64px 0 0 -6px rgba(0, 50, 126, 0.12), 65px 0 0 -6px rgba(0, 50, 126, 0.12), 66px 0 0 -6px rgba(0, 50, 126, 0.12), 67px 0 0 -6px rgba(0, 50, 126, 0.12), 68px 0 0 -6px rgba(0, 50, 126, 0.12), 69px 0 0 -6px rgba(0, 50, 126, 0.12), 70px 0 0 -6px rgba(0, 50, 126, 0.12), 71px 0 0 -6px rgba(0, 50, 126, 0.12), 72px 0 0 -6px rgba(0, 50, 126, 0.12), 73px 0 0 -6px rgba(0, 50, 126, 0.12), 74px 0 0 -6px rgba(0, 50, 126, 0.12), 75px 0 0 -6px rgba(0, 50, 126, 0.12), 76px 0 0 -6px rgba(0, 50, 126, 0.12), 77px 0 0 -6px rgba(0, 50, 126, 0.12), 78px 0 0 -6px rgba(0, 50, 126, 0.12), 79px 0 0 -6px rgba(0, 50, 126, 0.12), 80px 0 0 -6px rgba(0, 50, 126, 0.12), 81px 0 0 -6px rgba(0, 50, 126, 0.12), 82px 0 0 -6px rgba(0, 50, 126, 0.12), 83px 0 0 -6px rgba(0, 50, 126, 0.12), 84px 0 0 -6px rgba(0, 50, 126, 0.12), 85px 0 0 -6px rgba(0, 50, 126, 0.12), 86px 0 0 -6px rgba(0, 50, 126, 0.12), 87px 0 0 -6px rgba(0, 50, 126, 0.12), 88px 0 0 -6px rgba(0, 50, 126, 0.12), 89px 0 0 -6px rgba(0, 50, 126, 0.12), 90px 0 0 -6px rgba(0, 50, 126, 0.12), 91px 0 0 -6px rgba(0, 50, 126, 0.12), 92px 0 0 -6px rgba(0, 50, 126, 0.12), 93px 0 0 -6px rgba(0, 50, 126, 0.12), 94px 0 0 -6px rgba(0, 50, 126, 0.12), 95px 0 0 -6px rgba(0, 50, 126, 0.12), 96px 0 0 -6px rgba(0, 50, 126, 0.12), 97px 0 0 -6px rgba(0, 50, 126, 0.12), 98px 0 0 -6px rgba(0, 50, 126, 0.12), 99px 0 0 -6px rgba(0, 50, 126, 0.12), 100px 0 0 -6px rgba(0, 50, 126, 0.12), 101px 0 0 -6px rgba(0, 50, 126, 0.12), 102px 0 0 -6px rgba(0, 50, 126, 0.12), 103px 0 0 -6px rgba(0, 50, 126, 0.12), 104px 0 0 -6px rgba(0, 50, 126, 0.12), 105px 0 0 -6px rgba(0, 50, 126, 0.12), 106px 0 0 -6px rgba(0, 50, 126, 0.12), 107px 0 0 -6px rgba(0, 50, 126, 0.12), 108px 0 0 -6px rgba(0, 50, 126, 0.12), 109px 0 0 -6px rgba(0, 50, 126, 0.12), 110px 0 0 -6px rgba(0, 50, 126, 0.12), 111px 0 0 -6px rgba(0, 50, 126, 0.12), 112px 0 0 -6px rgba(0, 50, 126, 0.12), 113px 0 0 -6px rgba(0, 50, 126, 0.12), 114px 0 0 -6px rgba(0, 50, 126, 0.12), 115px 0 0 -6px rgba(0, 50, 126, 0.12), 116px 0 0 -6px rgba(0, 50, 126, 0.12), 117px 0 0 -6px rgba(0, 50, 126, 0.12), 118px 0 0 -6px rgba(0, 50, 126, 0.12), 119px 0 0 -6px rgba(0, 50, 126, 0.12), 120px 0 0 -6px rgba(0, 50, 126, 0.12), 121px 0 0 -6px rgba(0, 50, 126, 0.12), 122px 0 0 -6px rgba(0, 50, 126, 0.12), 123px 0 0 -6px rgba(0, 50, 126, 0.12), 124px 0 0 -6px rgba(0, 50, 126, 0.12), 125px 0 0 -6px rgba(0, 50, 126, 0.12), 126px 0 0 -6px rgba(0, 50, 126, 0.12), 127px 0 0 -6px rgba(0, 50, 126, 0.12), 128px 0 0 -6px rgba(0, 50, 126, 0.12), 129px 0 0 -6px rgba(0, 50, 126, 0.12), 130px 0 0 -6px rgba(0, 50, 126, 0.12), 131px 0 0 -6px rgba(0, 50, 126, 0.12), 132px 0 0 -6px rgba(0, 50, 126, 0.12), 133px 0 0 -6px rgba(0, 50, 126, 0.12), 134px 0 0 -6px rgba(0, 50, 126, 0.12), 135px 0 0 -6px rgba(0, 50, 126, 0.12), 136px 0 0 -6px rgba(0, 50, 126, 0.12), 137px 0 0 -6px rgba(0, 50, 126, 0.12), 138px 0 0 -6px rgba(0, 50, 126, 0.12), 139px 0 0 -6px rgba(0, 50, 126, 0.12), 140px 0 0 -6px rgba(0, 50, 126, 0.12), 141px 0 0 -6px rgba(0, 50, 126, 0.12), 142px 0 0 -6px rgba(0, 50, 126, 0.12), 143px 0 0 -6px rgba(0, 50, 126, 0.12), 144px 0 0 -6px rgba(0, 50, 126, 0.12), 145px 0 0 -6px rgba(0, 50, 126, 0.12), 146px 0 0 -6px rgba(0, 50, 126, 0.12), 147px 0 0 -6px rgba(0, 50, 126, 0.12), 148px 0 0 -6px rgba(0, 50, 126, 0.12), 149px 0 0 -6px rgba(0, 50, 126, 0.12), 150px 0 0 -6px rgba(0, 50, 126, 0.12), 151px 0 0 -6px rgba(0, 50, 126, 0.12), 152px 0 0 -6px rgba(0, 50, 126, 0.12), 153px 0 0 -6px rgba(0, 50, 126, 0.12), 154px 0 0 -6px rgba(0, 50, 126, 0.12), 155px 0 0 -6px rgba(0, 50, 126, 0.12), 156px 0 0 -6px rgba(0, 50, 126, 0.12), 157px 0 0 -6px rgba(0, 50, 126, 0.12), 158px 0 0 -6px rgba(0, 50, 126, 0.12), 159px 0 0 -6px rgba(0, 50, 126, 0.12), 160px 0 0 -6px rgba(0, 50, 126, 0.12), 161px 0 0 -6px rgba(0, 50, 126, 0.12), 162px 0 0 -6px rgba(0, 50, 126, 0.12), 163px 0 0 -6px rgba(0, 50, 126, 0.12), 164px 0 0 -6px rgba(0, 50, 126, 0.12), 165px 0 0 -6px rgba(0, 50, 126, 0.12), 166px 0 0 -6px rgba(0, 50, 126, 0.12), 167px 0 0 -6px rgba(0, 50, 126, 0.12), 168px 0 0 -6px rgba(0, 50, 126, 0.12), 169px 0 0 -6px rgba(0, 50, 126, 0.12), 170px 0 0 -6px rgba(0, 50, 126, 0.12), 171px 0 0 -6px rgba(0, 50, 126, 0.12), 172px 0 0 -6px rgba(0, 50, 126, 0.12), 173px 0 0 -6px rgba(0, 50, 126, 0.12), 174px 0 0 -6px rgba(0, 50, 126, 0.12), 175px 0 0 -6px rgba(0, 50, 126, 0.12), 176px 0 0 -6px rgba(0, 50, 126, 0.12), 177px 0 0 -6px rgba(0, 50, 126, 0.12), 178px 0 0 -6px rgba(0, 50, 126, 0.12), 179px 0 0 -6px rgba(0, 50, 126, 0.12), 180px 0 0 -6px rgba(0, 50, 126, 0.12), 181px 0 0 -6px rgba(0, 50, 126, 0.12), 182px 0 0 -6px rgba(0, 50, 126, 0.12), 183px 0 0 -6px rgba(0, 50, 126, 0.12), 184px 0 0 -6px rgba(0, 50, 126, 0.12), 185px 0 0 -6px rgba(0, 50, 126, 0.12), 186px 0 0 -6px rgba(0, 50, 126, 0.12), 187px 0 0 -6px rgba(0, 50, 126, 0.12), 188px 0 0 -6px rgba(0, 50, 126, 0.12), 189px 0 0 -6px rgba(0, 50, 126, 0.12), 190px 0 0 -6px rgba(0, 50, 126, 0.12), 191px 0 0 -6px rgba(0, 50, 126, 0.12), 192px 0 0 -6px rgba(0, 50, 126, 0.12), 193px 0 0 -6px rgba(0, 50, 126, 0.12), 194px 0 0 -6px rgba(0, 50, 126, 0.12), 195px 0 0 -6px rgba(0, 50, 126, 0.12), 196px 0 0 -6px rgba(0, 50, 126, 0.12), 197px 0 0 -6px rgba(0, 50, 126, 0.12), 198px 0 0 -6px rgba(0, 50, 126, 0.12), 199px 0 0 -6px rgba(0, 50, 126, 0.12), 200px 0 0 -6px rgba(0, 50, 126, 0.12), 201px 0 0 -6px rgba(0, 50, 126, 0.12), 202px 0 0 -6px rgba(0, 50, 126, 0.12), 203px 0 0 -6px rgba(0, 50, 126, 0.12), 204px 0 0 -6px rgba(0, 50, 126, 0.12), 205px 0 0 -6px rgba(0, 50, 126, 0.12), 206px 0 0 -6px rgba(0, 50, 126, 0.12), 207px 0 0 -6px rgba(0, 50, 126, 0.12), 208px 0 0 -6px rgba(0, 50, 126, 0.12), 209px 0 0 -6px rgba(0, 50, 126, 0.12), 210px 0 0 -6px rgba(0, 50, 126, 0.12), 211px 0 0 -6px rgba(0, 50, 126, 0.12), 212px 0 0 -6px rgba(0, 50, 126, 0.12), 213px 0 0 -6px rgba(0, 50, 126, 0.12), 214px 0 0 -6px rgba(0, 50, 126, 0.12), 215px 0 0 -6px rgba(0, 50, 126, 0.12), 216px 0 0 -6px rgba(0, 50, 126, 0.12), 217px 0 0 -6px rgba(0, 50, 126, 0.12), 218px 0 0 -6px rgba(0, 50, 126, 0.12), 219px 0 0 -6px rgba(0, 50, 126, 0.12), 220px 0 0 -6px rgba(0, 50, 126, 0.12), 221px 0 0 -6px rgba(0, 50, 126, 0.12), 222px 0 0 -6px rgba(0, 50, 126, 0.12), 223px 0 0 -6px rgba(0, 50, 126, 0.12), 224px 0 0 -6px rgba(0, 50, 126, 0.12), 225px 0 0 -6px rgba(0, 50, 126, 0.12), 226px 0 0 -6px rgba(0, 50, 126, 0.12), 227px 0 0 -6px rgba(0, 50, 126, 0.12), 228px 0 0 -6px rgba(0, 50, 126, 0.12), 229px 0 0 -6px rgba(0, 50, 126, 0.12), 230px 0 0 -6px rgba(0, 50, 126, 0.12), 231px 0 0 -6px rgba(0, 50, 126, 0.12), 232px 0 0 -6px rgba(0, 50, 126, 0.12), 233px 0 0 -6px rgba(0, 50, 126, 0.12), 234px 0 0 -6px rgba(0, 50, 126, 0.12), 235px 0 0 -6px rgba(0, 50, 126, 0.12), 236px 0 0 -6px rgba(0, 50, 126, 0.12), 237px 0 0 -6px rgba(0, 50, 126, 0.12), 238px 0 0 -6px rgba(0, 50, 126, 0.12), 239px 0 0 -6px rgba(0, 50, 126, 0.12), 240px 0 0 -6px rgba(0, 50, 126, 0.12); + margin-top: -6px; + border: 1px solid rgba(0, 30, 75, 0.12); + transition: .3s border-color, .3s background-color; +} + +.custom-range::-moz-range-track { + width: 240px; + height: 2px; + background: rgba(0, 50, 126, 0.12); +} + +.custom-range::-moz-range-thumb { + width: 14px; + height: 14px; + background: #fff; + border-radius: 50px; + border: 1px solid rgba(0, 30, 75, 0.12); + position: relative; + transition: .3s border-color, .3s background-color; +} + +.custom-range::-moz-range-progress { + height: 2px; + background: #467fcf; + border: 0; + margin-top: 0; +} + +.custom-range::-ms-track { + background: transparent; + border: 0; + border-color: transparent; + border-radius: 0; + border-width: 0; + color: transparent; + height: 2px; + margin-top: 10px; + width: 240px; +} + +.custom-range::-ms-thumb { + width: 240px; + height: 2px; + background: #fff; + border-radius: 50px; + border: 1px solid rgba(0, 30, 75, 0.12); + transition: .3s border-color, .3s background-color; +} + +.custom-range::-ms-fill-lower { + background: #467fcf; + border-radius: 0; +} + +.custom-range::-ms-fill-upper { + background: rgba(0, 50, 126, 0.12); + border-radius: 0; +} + +.custom-range::-ms-tooltip { + display: none; +} + +.selectgroup { + display: -ms-inline-flexbox; + display: inline-flex; +} + +.selectgroup-vertical { + -ms-flex-direction: column; + flex-direction: column; +} + +.selectgroup-item { + -ms-flex-positive: 1; + flex-grow: 1; + position: relative; +} + +.selectgroup:not(.selectgroup-vertical) > .selectgroup-item + .selectgroup-item { + margin-left: -1px; +} + +.selectgroup:not(.selectgroup-vertical) > .selectgroup-item:not(:first-child) .selectgroup-button { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.selectgroup:not(.selectgroup-vertical) > .selectgroup-item:not(:last-child) .selectgroup-button { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.selectgroup-vertical > .selectgroup-item:not(:last-child) { + margin-bottom: 0; +} + +.selectgroup-vertical > .selectgroup-item + .selectgroup-item { + margin-top: -1px; + margin-left: 0; +} + +.selectgroup-vertical > .selectgroup-item:not(:first-child) .selectgroup-button { + border-top-left-radius: 0; + border-top-right-radius: 0; +} + +.selectgroup-vertical > .selectgroup-item:not(:last-child) .selectgroup-button { + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} + +.selectgroup-input { + opacity: 0; + position: absolute; + z-index: -1; + top: 0; + left: 0; +} + +.selectgroup-button { + display: block; + border: 1px solid rgba(0, 40, 100, 0.12); + text-align: center; + padding: 0.375rem 1rem; + position: relative; + cursor: pointer; + border-radius: 3px; + color: #9aa0ac; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + font-size: 0.9375rem; + line-height: 1.5rem; + min-width: 2.375rem; +} + +.selectgroup-button-icon { + padding-left: .5rem; + padding-right: .5rem; + font-size: 1rem; +} + +.selectgroup-input:checked + .selectgroup-button { + border-color: #467fcf; + z-index: 1; + color: #467fcf; + background: #edf2fa; +} + +.selectgroup-input:focus + .selectgroup-button { + border-color: #467fcf; + z-index: 2; + color: #467fcf; + box-shadow: 0 0 0 2px rgba(70, 127, 207, 0.25); +} + +.selectgroup-pills { + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -ms-flex-align: start; + align-items: flex-start; +} + +.selectgroup-pills .selectgroup-item { + margin-right: .5rem; + -ms-flex-positive: 0; + flex-grow: 0; +} + +.selectgroup-pills .selectgroup-button { + border-radius: 50px !important; +} + +.custom-switch { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: default; + display: -ms-inline-flexbox; + display: inline-flex; + -ms-flex-align: center; + align-items: center; + margin: 0; +} + +.custom-switch-input { + position: absolute; + z-index: -1; + opacity: 0; +} + +.custom-switches-stacked { + display: -ms-flexbox; + display: flex; + -ms-flex-direction: column; + flex-direction: column; +} + +.custom-switches-stacked .custom-switch { + margin-bottom: .5rem; +} + +.custom-switch-indicator { + display: inline-block; + height: 1.25rem; + width: 2.25rem; + background: #e9ecef; + border-radius: 50px; + position: relative; + vertical-align: bottom; + border: 1px solid rgba(0, 40, 100, 0.12); + transition: .3s border-color, .3s background-color; +} + +.custom-switch-indicator:before { + content: ''; + position: absolute; + height: calc(1.25rem - 4px); + width: calc(1.25rem - 4px); + top: 1px; + left: 1px; + background: #fff; + border-radius: 50%; + transition: .3s left; + box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.4); +} + +.custom-switch-input:checked ~ .custom-switch-indicator { + background: #467fcf; +} + +.custom-switch-input:checked ~ .custom-switch-indicator:before { + left: calc(1rem + 1px); +} + +.custom-switch-input:focus ~ .custom-switch-indicator { + box-shadow: 0 0 0 2px rgba(70, 127, 207, 0.25); + border-color: #467fcf; +} + +.custom-switch-description { + margin-left: .5rem; + color: #6e7687; + transition: .3s color; +} + +.custom-switch-input:checked ~ .custom-switch-description { + color: #495057; +} + +.imagecheck { + margin: 0; + position: relative; + cursor: pointer; +} + +.imagecheck-input { + position: absolute; + z-index: -1; + opacity: 0; +} + +.imagecheck-figure { + border: 1px solid rgba(0, 40, 100, 0.12); + border-radius: 3px; + margin: 0; + position: relative; +} + +.imagecheck-input:focus ~ .imagecheck-figure { + border-color: #467fcf; + box-shadow: 0 0 0 2px rgba(70, 127, 207, 0.25); +} + +.imagecheck-input:checked ~ .imagecheck-figure { + border-color: rgba(0, 40, 100, 0.24); +} + +.imagecheck-figure:before { + content: ''; + position: absolute; + top: .25rem; + left: .25rem; + display: block; + width: 1rem; + height: 1rem; + pointer-events: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + background: #467fcf url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3e%3c/svg%3e") no-repeat center center/50% 50%; + color: #fff; + z-index: 1; + border-radius: 3px; + opacity: 0; + transition: .3s opacity; +} + +.imagecheck-input:checked ~ .imagecheck-figure:before { + opacity: 1; +} + +.imagecheck-image { + max-width: 100%; + opacity: .64; + transition: .3s opacity; +} + +.imagecheck-image:first-child { + border-top-left-radius: 2px; + border-top-right-radius: 2px; +} + +.imagecheck-image:last-child { + border-bottom-left-radius: 2px; + border-bottom-right-radius: 2px; +} + +.imagecheck:hover .imagecheck-image, +.imagecheck-input:focus ~ .imagecheck-figure .imagecheck-image, +.imagecheck-input:checked ~ .imagecheck-figure .imagecheck-image { + opacity: 1; +} + +.imagecheck-caption { + text-align: center; + padding: .25rem .25rem; + color: #9aa0ac; + font-size: 0.875rem; + transition: .3s color; +} + +.imagecheck:hover .imagecheck-caption, +.imagecheck-input:focus ~ .imagecheck-figure .imagecheck-caption, +.imagecheck-input:checked ~ .imagecheck-figure .imagecheck-caption { + color: #495057; +} + +.colorinput { + margin: 0; + position: relative; + cursor: pointer; +} + +.colorinput-input { + position: absolute; + z-index: -1; + opacity: 0; +} + +.colorinput-color { + display: inline-block; + width: 1.75rem; + height: 1.75rem; + border-radius: 3px; + border: 1px solid rgba(0, 40, 100, 0.12); + color: #fff; + box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05); +} + +.colorinput-color:before { + content: ''; + opacity: 0; + position: absolute; + top: .25rem; + left: .25rem; + height: 1.25rem; + width: 1.25rem; + transition: .3s opacity; + background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3e%3c/svg%3e") no-repeat center center/50% 50%; +} + +.colorinput-input:checked ~ .colorinput-color:before { + opacity: 1; +} + +.colorinput-input:focus ~ .colorinput-color { + border-color: #467fcf; + box-shadow: 0 0 0 2px rgba(70, 127, 207, 0.25); +} + +.timeline { + position: relative; + margin: 0 0 2rem; + padding: 0; + list-style: none; +} + +.timeline:before { + background-color: #e9ecef; + position: absolute; + display: block; + content: ''; + width: 1px; + height: 100%; + top: 0; + bottom: 0; + left: 4px; +} + +.timeline-item { + position: relative; + display: -ms-flexbox; + display: flex; + padding-left: 2rem; + margin: .5rem 0; +} + +.timeline-item:first-child:before, .timeline-item:last-child:before { + content: ''; + position: absolute; + background: #fff; + width: 1px; + left: .25rem; +} + +.timeline-item:first-child { + margin-top: 0; +} + +.timeline-item:first-child:before { + top: 0; + height: .5rem; +} + +.timeline-item:last-child { + margin-bottom: 0; +} + +.timeline-item:last-child:before { + top: .5rem; + bottom: 0; +} + +.timeline-badge { + position: absolute; + display: block; + width: 0.4375rem; + height: 0.4375rem; + left: 1px; + top: .5rem; + border-radius: 100%; + border: 1px solid #fff; + background: #adb5bd; +} + +.timeline-time { + white-space: nowrap; + margin-left: auto; + color: #9aa0ac; + font-size: 87.5%; +} + +.browser { + width: 1.25rem; + height: 1.25rem; + display: inline-block; + background: no-repeat center/100% 100%; + vertical-align: bottom; + font-style: normal; +} + +.browser-android-browser { + background-image: url("../images/browsers/android-browser.svg"); +} + +.browser-aol-explorer { + background-image: url("../images/browsers/aol-explorer.svg"); +} + +.browser-blackberry { + background-image: url("../images/browsers/blackberry.svg"); +} + +.browser-camino { + background-image: url("../images/browsers/camino.svg"); +} + +.browser-chrome { + background-image: url("../images/browsers/chrome.svg"); +} + +.browser-chromium { + background-image: url("../images/browsers/chromium.svg"); +} + +.browser-dolphin { + background-image: url("../images/browsers/dolphin.svg"); +} + +.browser-edge { + background-image: url("../images/browsers/edge.svg"); +} + +.browser-firefox { + background-image: url("../images/browsers/firefox.svg"); +} + +.browser-ie { + background-image: url("../images/browsers/ie.svg"); +} + +.browser-maxthon { + background-image: url("../images/browsers/maxthon.svg"); +} + +.browser-mozilla { + background-image: url("../images/browsers/mozilla.svg"); +} + +.browser-netscape { + background-image: url("../images/browsers/netscape.svg"); +} + +.browser-opera { + background-image: url("../images/browsers/opera.svg"); +} + +.browser-safari { + background-image: url("../images/browsers/safari.svg"); +} + +.browser-sleipnir { + background-image: url("../images/browsers/sleipnir.svg"); +} + +.browser-uc-browser { + background-image: url("../images/browsers/uc-browser.svg"); +} + +.browser-vivaldi { + background-image: url("../images/browsers/vivaldi.svg"); +} + +.flag { + width: 1.6rem; + height: 1.2rem; + display: inline-block; + background: no-repeat center/100% 100%; + vertical-align: bottom; + font-style: normal; + box-shadow: 0 0 1px 1px rgba(0, 0, 0, 0.1); + border-radius: 2px; +} + +.flag-ad { + background-image: url("../images/flags/ad.svg"); +} + +.flag-ae { + background-image: url("../images/flags/ae.svg"); +} + +.flag-af { + background-image: url("../images/flags/af.svg"); +} + +.flag-ag { + background-image: url("../images/flags/ag.svg"); +} + +.flag-ai { + background-image: url("../images/flags/ai.svg"); +} + +.flag-al { + background-image: url("../images/flags/al.svg"); +} + +.flag-am { + background-image: url("../images/flags/am.svg"); +} + +.flag-ao { + background-image: url("../images/flags/ao.svg"); +} + +.flag-aq { + background-image: url("../images/flags/aq.svg"); +} + +.flag-ar { + background-image: url("../images/flags/ar.svg"); +} + +.flag-as { + background-image: url("../images/flags/as.svg"); +} + +.flag-at { + background-image: url("../images/flags/at.svg"); +} + +.flag-au { + background-image: url("../images/flags/au.svg"); +} + +.flag-aw { + background-image: url("../images/flags/aw.svg"); +} + +.flag-ax { + background-image: url("../images/flags/ax.svg"); +} + +.flag-az { + background-image: url("../images/flags/az.svg"); +} + +.flag-ba { + background-image: url("../images/flags/ba.svg"); +} + +.flag-bb { + background-image: url("../images/flags/bb.svg"); +} + +.flag-bd { + background-image: url("../images/flags/bd.svg"); +} + +.flag-be { + background-image: url("../images/flags/be.svg"); +} + +.flag-bf { + background-image: url("../images/flags/bf.svg"); +} + +.flag-bg { + background-image: url("../images/flags/bg.svg"); +} + +.flag-bh { + background-image: url("../images/flags/bh.svg"); +} + +.flag-bi { + background-image: url("../images/flags/bi.svg"); +} + +.flag-bj { + background-image: url("../images/flags/bj.svg"); +} + +.flag-bl { + background-image: url("../images/flags/bl.svg"); +} + +.flag-bm { + background-image: url("../images/flags/bm.svg"); +} + +.flag-bn { + background-image: url("../images/flags/bn.svg"); +} + +.flag-bo { + background-image: url("../images/flags/bo.svg"); +} + +.flag-bq { + background-image: url("../images/flags/bq.svg"); +} + +.flag-br { + background-image: url("../images/flags/br.svg"); +} + +.flag-bs { + background-image: url("../images/flags/bs.svg"); +} + +.flag-bt { + background-image: url("../images/flags/bt.svg"); +} + +.flag-bv { + background-image: url("../images/flags/bv.svg"); +} + +.flag-bw { + background-image: url("../images/flags/bw.svg"); +} + +.flag-by { + background-image: url("../images/flags/by.svg"); +} + +.flag-bz { + background-image: url("../images/flags/bz.svg"); +} + +.flag-ca { + background-image: url("../images/flags/ca.svg"); +} + +.flag-cc { + background-image: url("../images/flags/cc.svg"); +} + +.flag-cd { + background-image: url("../images/flags/cd.svg"); +} + +.flag-cf { + background-image: url("../images/flags/cf.svg"); +} + +.flag-cg { + background-image: url("../images/flags/cg.svg"); +} + +.flag-ch { + background-image: url("../images/flags/ch.svg"); +} + +.flag-ci { + background-image: url("../images/flags/ci.svg"); +} + +.flag-ck { + background-image: url("../images/flags/ck.svg"); +} + +.flag-cl { + background-image: url("../images/flags/cl.svg"); +} + +.flag-cm { + background-image: url("../images/flags/cm.svg"); +} + +.flag-cn { + background-image: url("../images/flags/cn.svg"); +} + +.flag-co { + background-image: url("../images/flags/co.svg"); +} + +.flag-cr { + background-image: url("../images/flags/cr.svg"); +} + +.flag-cu { + background-image: url("../images/flags/cu.svg"); +} + +.flag-cv { + background-image: url("../images/flags/cv.svg"); +} + +.flag-cw { + background-image: url("../images/flags/cw.svg"); +} + +.flag-cx { + background-image: url("../images/flags/cx.svg"); +} + +.flag-cy { + background-image: url("../images/flags/cy.svg"); +} + +.flag-cz { + background-image: url("../images/flags/cz.svg"); +} + +.flag-de { + background-image: url("../images/flags/de.svg"); +} + +.flag-dj { + background-image: url("../images/flags/dj.svg"); +} + +.flag-dk { + background-image: url("../images/flags/dk.svg"); +} + +.flag-dm { + background-image: url("../images/flags/dm.svg"); +} + +.flag-do { + background-image: url("../images/flags/do.svg"); +} + +.flag-dz { + background-image: url("../images/flags/dz.svg"); +} + +.flag-ec { + background-image: url("../images/flags/ec.svg"); +} + +.flag-ee { + background-image: url("../images/flags/ee.svg"); +} + +.flag-eg { + background-image: url("../images/flags/eg.svg"); +} + +.flag-eh { + background-image: url("../images/flags/eh.svg"); +} + +.flag-er { + background-image: url("../images/flags/er.svg"); +} + +.flag-es { + background-image: url("../images/flags/es.svg"); +} + +.flag-et { + background-image: url("../images/flags/et.svg"); +} + +.flag-eu { + background-image: url("../images/flags/eu.svg"); +} + +.flag-fi { + background-image: url("../images/flags/fi.svg"); +} + +.flag-fj { + background-image: url("../images/flags/fj.svg"); +} + +.flag-fk { + background-image: url("../images/flags/fk.svg"); +} + +.flag-fm { + background-image: url("../images/flags/fm.svg"); +} + +.flag-fo { + background-image: url("../images/flags/fo.svg"); +} + +.flag-fr { + background-image: url("../images/flags/fr.svg"); +} + +.flag-ga { + background-image: url("../images/flags/ga.svg"); +} + +.flag-gb-eng { + background-image: url("../images/flags/gb-eng.svg"); +} + +.flag-gb-nir { + background-image: url("../images/flags/gb-nir.svg"); +} + +.flag-gb-sct { + background-image: url("../images/flags/gb-sct.svg"); +} + +.flag-gb-wls { + background-image: url("../images/flags/gb-wls.svg"); +} + +.flag-gb { + background-image: url("../images/flags/gb.svg"); +} + +.flag-gd { + background-image: url("../images/flags/gd.svg"); +} + +.flag-ge { + background-image: url("../images/flags/ge.svg"); +} + +.flag-gf { + background-image: url("../images/flags/gf.svg"); +} + +.flag-gg { + background-image: url("../images/flags/gg.svg"); +} + +.flag-gh { + background-image: url("../images/flags/gh.svg"); +} + +.flag-gi { + background-image: url("../images/flags/gi.svg"); +} + +.flag-gl { + background-image: url("../images/flags/gl.svg"); +} + +.flag-gm { + background-image: url("../images/flags/gm.svg"); +} + +.flag-gn { + background-image: url("../images/flags/gn.svg"); +} + +.flag-gp { + background-image: url("../images/flags/gp.svg"); +} + +.flag-gq { + background-image: url("../images/flags/gq.svg"); +} + +.flag-gr { + background-image: url("../images/flags/gr.svg"); +} + +.flag-gs { + background-image: url("../images/flags/gs.svg"); +} + +.flag-gt { + background-image: url("../images/flags/gt.svg"); +} + +.flag-gu { + background-image: url("../images/flags/gu.svg"); +} + +.flag-gw { + background-image: url("../images/flags/gw.svg"); +} + +.flag-gy { + background-image: url("../images/flags/gy.svg"); +} + +.flag-hk { + background-image: url("../images/flags/hk.svg"); +} + +.flag-hm { + background-image: url("../images/flags/hm.svg"); +} + +.flag-hn { + background-image: url("../images/flags/hn.svg"); +} + +.flag-hr { + background-image: url("../images/flags/hr.svg"); +} + +.flag-ht { + background-image: url("../images/flags/ht.svg"); +} + +.flag-hu { + background-image: url("../images/flags/hu.svg"); +} + +.flag-id { + background-image: url("../images/flags/id.svg"); +} + +.flag-ie { + background-image: url("../images/flags/ie.svg"); +} + +.flag-il { + background-image: url("../images/flags/il.svg"); +} + +.flag-im { + background-image: url("../images/flags/im.svg"); +} + +.flag-in { + background-image: url("../images/flags/in.svg"); +} + +.flag-io { + background-image: url("../images/flags/io.svg"); +} + +.flag-iq { + background-image: url("../images/flags/iq.svg"); +} + +.flag-ir { + background-image: url("../images/flags/ir.svg"); +} + +.flag-is { + background-image: url("../images/flags/is.svg"); +} + +.flag-it { + background-image: url("../images/flags/it.svg"); +} + +.flag-je { + background-image: url("../images/flags/je.svg"); +} + +.flag-jm { + background-image: url("../images/flags/jm.svg"); +} + +.flag-jo { + background-image: url("../images/flags/jo.svg"); +} + +.flag-jp { + background-image: url("../images/flags/jp.svg"); +} + +.flag-ke { + background-image: url("../images/flags/ke.svg"); +} + +.flag-kg { + background-image: url("../images/flags/kg.svg"); +} + +.flag-kh { + background-image: url("../images/flags/kh.svg"); +} + +.flag-ki { + background-image: url("../images/flags/ki.svg"); +} + +.flag-km { + background-image: url("../images/flags/km.svg"); +} + +.flag-kn { + background-image: url("../images/flags/kn.svg"); +} + +.flag-kp { + background-image: url("../images/flags/kp.svg"); +} + +.flag-kr { + background-image: url("../images/flags/kr.svg"); +} + +.flag-kw { + background-image: url("../images/flags/kw.svg"); +} + +.flag-ky { + background-image: url("../images/flags/ky.svg"); +} + +.flag-kz { + background-image: url("../images/flags/kz.svg"); +} + +.flag-la { + background-image: url("../images/flags/la.svg"); +} + +.flag-lb { + background-image: url("../images/flags/lb.svg"); +} + +.flag-lc { + background-image: url("../images/flags/lc.svg"); +} + +.flag-li { + background-image: url("../images/flags/li.svg"); +} + +.flag-lk { + background-image: url("../images/flags/lk.svg"); +} + +.flag-lr { + background-image: url("../images/flags/lr.svg"); +} + +.flag-ls { + background-image: url("../images/flags/ls.svg"); +} + +.flag-lt { + background-image: url("../images/flags/lt.svg"); +} + +.flag-lu { + background-image: url("../images/flags/lu.svg"); +} + +.flag-lv { + background-image: url("../images/flags/lv.svg"); +} + +.flag-ly { + background-image: url("../images/flags/ly.svg"); +} + +.flag-ma { + background-image: url("../images/flags/ma.svg"); +} + +.flag-mc { + background-image: url("../images/flags/mc.svg"); +} + +.flag-md { + background-image: url("../images/flags/md.svg"); +} + +.flag-me { + background-image: url("../images/flags/me.svg"); +} + +.flag-mf { + background-image: url("../images/flags/mf.svg"); +} + +.flag-mg { + background-image: url("../images/flags/mg.svg"); +} + +.flag-mh { + background-image: url("../images/flags/mh.svg"); +} + +.flag-mk { + background-image: url("../images/flags/mk.svg"); +} + +.flag-ml { + background-image: url("../images/flags/ml.svg"); +} + +.flag-mm { + background-image: url("../images/flags/mm.svg"); +} + +.flag-mn { + background-image: url("../images/flags/mn.svg"); +} + +.flag-mo { + background-image: url("../images/flags/mo.svg"); +} + +.flag-mp { + background-image: url("../images/flags/mp.svg"); +} + +.flag-mq { + background-image: url("../images/flags/mq.svg"); +} + +.flag-mr { + background-image: url("../images/flags/mr.svg"); +} + +.flag-ms { + background-image: url("../images/flags/ms.svg"); +} + +.flag-mt { + background-image: url("../images/flags/mt.svg"); +} + +.flag-mu { + background-image: url("../images/flags/mu.svg"); +} + +.flag-mv { + background-image: url("../images/flags/mv.svg"); +} + +.flag-mw { + background-image: url("../images/flags/mw.svg"); +} + +.flag-mx { + background-image: url("../images/flags/mx.svg"); +} + +.flag-my { + background-image: url("../images/flags/my.svg"); +} + +.flag-mz { + background-image: url("../images/flags/mz.svg"); +} + +.flag-na { + background-image: url("../images/flags/na.svg"); +} + +.flag-nc { + background-image: url("../images/flags/nc.svg"); +} + +.flag-ne { + background-image: url("../images/flags/ne.svg"); +} + +.flag-nf { + background-image: url("../images/flags/nf.svg"); +} + +.flag-ng { + background-image: url("../images/flags/ng.svg"); +} + +.flag-ni { + background-image: url("../images/flags/ni.svg"); +} + +.flag-nl { + background-image: url("../images/flags/nl.svg"); +} + +.flag-no { + background-image: url("../images/flags/no.svg"); +} + +.flag-np { + background-image: url("../images/flags/np.svg"); +} + +.flag-nr { + background-image: url("../images/flags/nr.svg"); +} + +.flag-nu { + background-image: url("../images/flags/nu.svg"); +} + +.flag-nz { + background-image: url("../images/flags/nz.svg"); +} + +.flag-om { + background-image: url("../images/flags/om.svg"); +} + +.flag-pa { + background-image: url("../images/flags/pa.svg"); +} + +.flag-pe { + background-image: url("../images/flags/pe.svg"); +} + +.flag-pf { + background-image: url("../images/flags/pf.svg"); +} + +.flag-pg { + background-image: url("../images/flags/pg.svg"); +} + +.flag-ph { + background-image: url("../images/flags/ph.svg"); +} + +.flag-pk { + background-image: url("../images/flags/pk.svg"); +} + +.flag-pl { + background-image: url("../images/flags/pl.svg"); +} + +.flag-pm { + background-image: url("../images/flags/pm.svg"); +} + +.flag-pn { + background-image: url("../images/flags/pn.svg"); +} + +.flag-pr { + background-image: url("../images/flags/pr.svg"); +} + +.flag-ps { + background-image: url("../images/flags/ps.svg"); +} + +.flag-pt { + background-image: url("../images/flags/pt.svg"); +} + +.flag-pw { + background-image: url("../images/flags/pw.svg"); +} + +.flag-py { + background-image: url("../images/flags/py.svg"); +} + +.flag-qa { + background-image: url("../images/flags/qa.svg"); +} + +.flag-re { + background-image: url("../images/flags/re.svg"); +} + +.flag-ro { + background-image: url("../images/flags/ro.svg"); +} + +.flag-rs { + background-image: url("../images/flags/rs.svg"); +} + +.flag-ru { + background-image: url("../images/flags/ru.svg"); +} + +.flag-rw { + background-image: url("../images/flags/rw.svg"); +} + +.flag-sa { + background-image: url("../images/flags/sa.svg"); +} + +.flag-sb { + background-image: url("../images/flags/sb.svg"); +} + +.flag-sc { + background-image: url("../images/flags/sc.svg"); +} + +.flag-sd { + background-image: url("../images/flags/sd.svg"); +} + +.flag-se { + background-image: url("../images/flags/se.svg"); +} + +.flag-sg { + background-image: url("../images/flags/sg.svg"); +} + +.flag-sh { + background-image: url("../images/flags/sh.svg"); +} + +.flag-si { + background-image: url("../images/flags/si.svg"); +} + +.flag-sj { + background-image: url("../images/flags/sj.svg"); +} + +.flag-sk { + background-image: url("../images/flags/sk.svg"); +} + +.flag-sl { + background-image: url("../images/flags/sl.svg"); +} + +.flag-sm { + background-image: url("../images/flags/sm.svg"); +} + +.flag-sn { + background-image: url("../images/flags/sn.svg"); +} + +.flag-so { + background-image: url("../images/flags/so.svg"); +} + +.flag-sr { + background-image: url("../images/flags/sr.svg"); +} + +.flag-ss { + background-image: url("../images/flags/ss.svg"); +} + +.flag-st { + background-image: url("../images/flags/st.svg"); +} + +.flag-sv { + background-image: url("../images/flags/sv.svg"); +} + +.flag-sx { + background-image: url("../images/flags/sx.svg"); +} + +.flag-sy { + background-image: url("../images/flags/sy.svg"); +} + +.flag-sz { + background-image: url("../images/flags/sz.svg"); +} + +.flag-tc { + background-image: url("../images/flags/tc.svg"); +} + +.flag-td { + background-image: url("../images/flags/td.svg"); +} + +.flag-tf { + background-image: url("../images/flags/tf.svg"); +} + +.flag-tg { + background-image: url("../images/flags/tg.svg"); +} + +.flag-th { + background-image: url("../images/flags/th.svg"); +} + +.flag-tj { + background-image: url("../images/flags/tj.svg"); +} + +.flag-tk { + background-image: url("../images/flags/tk.svg"); +} + +.flag-tl { + background-image: url("../images/flags/tl.svg"); +} + +.flag-tm { + background-image: url("../images/flags/tm.svg"); +} + +.flag-tn { + background-image: url("../images/flags/tn.svg"); +} + +.flag-to { + background-image: url("../images/flags/to.svg"); +} + +.flag-tr { + background-image: url("../images/flags/tr.svg"); +} + +.flag-tt { + background-image: url("../images/flags/tt.svg"); +} + +.flag-tv { + background-image: url("../images/flags/tv.svg"); +} + +.flag-tw { + background-image: url("../images/flags/tw.svg"); +} + +.flag-tz { + background-image: url("../images/flags/tz.svg"); +} + +.flag-ua { + background-image: url("../images/flags/ua.svg"); +} + +.flag-ug { + background-image: url("../images/flags/ug.svg"); +} + +.flag-um { + background-image: url("../images/flags/um.svg"); +} + +.flag-un { + background-image: url("../images/flags/un.svg"); +} + +.flag-us { + background-image: url("../images/flags/us.svg"); +} + +.flag-uy { + background-image: url("../images/flags/uy.svg"); +} + +.flag-uz { + background-image: url("../images/flags/uz.svg"); +} + +.flag-va { + background-image: url("../images/flags/va.svg"); +} + +.flag-vc { + background-image: url("../images/flags/vc.svg"); +} + +.flag-ve { + background-image: url("../images/flags/ve.svg"); +} + +.flag-vg { + background-image: url("../images/flags/vg.svg"); +} + +.flag-vi { + background-image: url("../images/flags/vi.svg"); +} + +.flag-vn { + background-image: url("../images/flags/vn.svg"); +} + +.flag-vu { + background-image: url("../images/flags/vu.svg"); +} + +.flag-wf { + background-image: url("../images/flags/wf.svg"); +} + +.flag-ws { + background-image: url("../images/flags/ws.svg"); +} + +.flag-ye { + background-image: url("../images/flags/ye.svg"); +} + +.flag-yt { + background-image: url("../images/flags/yt.svg"); +} + +.flag-za { + background-image: url("../images/flags/za.svg"); +} + +.flag-zm { + background-image: url("../images/flags/zm.svg"); +} + +.flag-zw { + background-image: url("../images/flags/zw.svg"); +} + +.payment { + width: 2.5rem; + height: 1.5rem; + display: inline-block; + background: no-repeat center/100% 100%; + vertical-align: bottom; + font-style: normal; + box-shadow: 0 0 1px 1px rgba(0, 0, 0, 0.1); + border-radius: 2px; +} + +.payment-2checkout-dark { + background-image: url("../images/payments/2checkout-dark.svg"); +} + +.payment-2checkout { + background-image: url("../images/payments/2checkout.svg"); +} + +.payment-alipay-dark { + background-image: url("../images/payments/alipay-dark.svg"); +} + +.payment-alipay { + background-image: url("../images/payments/alipay.svg"); +} + +.payment-amazon-dark { + background-image: url("../images/payments/amazon-dark.svg"); +} + +.payment-amazon { + background-image: url("../images/payments/amazon.svg"); +} + +.payment-americanexpress-dark { + background-image: url("../images/payments/americanexpress-dark.svg"); +} + +.payment-americanexpress { + background-image: url("../images/payments/americanexpress.svg"); +} + +.payment-applepay-dark { + background-image: url("../images/payments/applepay-dark.svg"); +} + +.payment-applepay { + background-image: url("../images/payments/applepay.svg"); +} + +.payment-bancontact-dark { + background-image: url("../images/payments/bancontact-dark.svg"); +} + +.payment-bancontact { + background-image: url("../images/payments/bancontact.svg"); +} + +.payment-bitcoin-dark { + background-image: url("../images/payments/bitcoin-dark.svg"); +} + +.payment-bitcoin { + background-image: url("../images/payments/bitcoin.svg"); +} + +.payment-bitpay-dark { + background-image: url("../images/payments/bitpay-dark.svg"); +} + +.payment-bitpay { + background-image: url("../images/payments/bitpay.svg"); +} + +.payment-cirrus-dark { + background-image: url("../images/payments/cirrus-dark.svg"); +} + +.payment-cirrus { + background-image: url("../images/payments/cirrus.svg"); +} + +.payment-clickandbuy-dark { + background-image: url("../images/payments/clickandbuy-dark.svg"); +} + +.payment-clickandbuy { + background-image: url("../images/payments/clickandbuy.svg"); +} + +.payment-coinkite-dark { + background-image: url("../images/payments/coinkite-dark.svg"); +} + +.payment-coinkite { + background-image: url("../images/payments/coinkite.svg"); +} + +.payment-dinersclub-dark { + background-image: url("../images/payments/dinersclub-dark.svg"); +} + +.payment-dinersclub { + background-image: url("../images/payments/dinersclub.svg"); +} + +.payment-directdebit-dark { + background-image: url("../images/payments/directdebit-dark.svg"); +} + +.payment-directdebit { + background-image: url("../images/payments/directdebit.svg"); +} + +.payment-discover-dark { + background-image: url("../images/payments/discover-dark.svg"); +} + +.payment-discover { + background-image: url("../images/payments/discover.svg"); +} + +.payment-dwolla-dark { + background-image: url("../images/payments/dwolla-dark.svg"); +} + +.payment-dwolla { + background-image: url("../images/payments/dwolla.svg"); +} + +.payment-ebay-dark { + background-image: url("../images/payments/ebay-dark.svg"); +} + +.payment-ebay { + background-image: url("../images/payments/ebay.svg"); +} + +.payment-eway-dark { + background-image: url("../images/payments/eway-dark.svg"); +} + +.payment-eway { + background-image: url("../images/payments/eway.svg"); +} + +.payment-giropay-dark { + background-image: url("../images/payments/giropay-dark.svg"); +} + +.payment-giropay { + background-image: url("../images/payments/giropay.svg"); +} + +.payment-googlewallet-dark { + background-image: url("../images/payments/googlewallet-dark.svg"); +} + +.payment-googlewallet { + background-image: url("../images/payments/googlewallet.svg"); +} + +.payment-ingenico-dark { + background-image: url("../images/payments/ingenico-dark.svg"); +} + +.payment-ingenico { + background-image: url("../images/payments/ingenico.svg"); +} + +.payment-jcb-dark { + background-image: url("../images/payments/jcb-dark.svg"); +} + +.payment-jcb { + background-image: url("../images/payments/jcb.svg"); +} + +.payment-klarna-dark { + background-image: url("../images/payments/klarna-dark.svg"); +} + +.payment-klarna { + background-image: url("../images/payments/klarna.svg"); +} + +.payment-laser-dark { + background-image: url("../images/payments/laser-dark.svg"); +} + +.payment-laser { + background-image: url("../images/payments/laser.svg"); +} + +.payment-maestro-dark { + background-image: url("../images/payments/maestro-dark.svg"); +} + +.payment-maestro { + background-image: url("../images/payments/maestro.svg"); +} + +.payment-mastercard-dark { + background-image: url("../images/payments/mastercard-dark.svg"); +} + +.payment-mastercard { + background-image: url("../images/payments/mastercard.svg"); +} + +.payment-monero-dark { + background-image: url("../images/payments/monero-dark.svg"); +} + +.payment-monero { + background-image: url("../images/payments/monero.svg"); +} + +.payment-neteller-dark { + background-image: url("../images/payments/neteller-dark.svg"); +} + +.payment-neteller { + background-image: url("../images/payments/neteller.svg"); +} + +.payment-ogone-dark { + background-image: url("../images/payments/ogone-dark.svg"); +} + +.payment-ogone { + background-image: url("../images/payments/ogone.svg"); +} + +.payment-okpay-dark { + background-image: url("../images/payments/okpay-dark.svg"); +} + +.payment-okpay { + background-image: url("../images/payments/okpay.svg"); +} + +.payment-paybox-dark { + background-image: url("../images/payments/paybox-dark.svg"); +} + +.payment-paybox { + background-image: url("../images/payments/paybox.svg"); +} + +.payment-paymill-dark { + background-image: url("../images/payments/paymill-dark.svg"); +} + +.payment-paymill { + background-image: url("../images/payments/paymill.svg"); +} + +.payment-payone-dark { + background-image: url("../images/payments/payone-dark.svg"); +} + +.payment-payone { + background-image: url("../images/payments/payone.svg"); +} + +.payment-payoneer-dark { + background-image: url("../images/payments/payoneer-dark.svg"); +} + +.payment-payoneer { + background-image: url("../images/payments/payoneer.svg"); +} + +.payment-paypal-dark { + background-image: url("../images/payments/paypal-dark.svg"); +} + +.payment-paypal { + background-image: url("../images/payments/paypal.svg"); +} + +.payment-paysafecard-dark { + background-image: url("../images/payments/paysafecard-dark.svg"); +} + +.payment-paysafecard { + background-image: url("../images/payments/paysafecard.svg"); +} + +.payment-payu-dark { + background-image: url("../images/payments/payu-dark.svg"); +} + +.payment-payu { + background-image: url("../images/payments/payu.svg"); +} + +.payment-payza-dark { + background-image: url("../images/payments/payza-dark.svg"); +} + +.payment-payza { + background-image: url("../images/payments/payza.svg"); +} + +.payment-ripple-dark { + background-image: url("../images/payments/ripple-dark.svg"); +} + +.payment-ripple { + background-image: url("../images/payments/ripple.svg"); +} + +.payment-sage-dark { + background-image: url("../images/payments/sage-dark.svg"); +} + +.payment-sage { + background-image: url("../images/payments/sage.svg"); +} + +.payment-sepa-dark { + background-image: url("../images/payments/sepa-dark.svg"); +} + +.payment-sepa { + background-image: url("../images/payments/sepa.svg"); +} + +.payment-shopify-dark { + background-image: url("../images/payments/shopify-dark.svg"); +} + +.payment-shopify { + background-image: url("../images/payments/shopify.svg"); +} + +.payment-skrill-dark { + background-image: url("../images/payments/skrill-dark.svg"); +} + +.payment-skrill { + background-image: url("../images/payments/skrill.svg"); +} + +.payment-solo-dark { + background-image: url("../images/payments/solo-dark.svg"); +} + +.payment-solo { + background-image: url("../images/payments/solo.svg"); +} + +.payment-square-dark { + background-image: url("../images/payments/square-dark.svg"); +} + +.payment-square { + background-image: url("../images/payments/square.svg"); +} + +.payment-stripe-dark { + background-image: url("../images/payments/stripe-dark.svg"); +} + +.payment-stripe { + background-image: url("../images/payments/stripe.svg"); +} + +.payment-switch-dark { + background-image: url("../images/payments/switch-dark.svg"); +} + +.payment-switch { + background-image: url("../images/payments/switch.svg"); +} + +.payment-ukash-dark { + background-image: url("../images/payments/ukash-dark.svg"); +} + +.payment-ukash { + background-image: url("../images/payments/ukash.svg"); +} + +.payment-unionpay-dark { + background-image: url("../images/payments/unionpay-dark.svg"); +} + +.payment-unionpay { + background-image: url("../images/payments/unionpay.svg"); +} + +.payment-verifone-dark { + background-image: url("../images/payments/verifone-dark.svg"); +} + +.payment-verifone { + background-image: url("../images/payments/verifone.svg"); +} + +.payment-verisign-dark { + background-image: url("../images/payments/verisign-dark.svg"); +} + +.payment-verisign { + background-image: url("../images/payments/verisign.svg"); +} + +.payment-visa-dark { + background-image: url("../images/payments/visa-dark.svg"); +} + +.payment-visa { + background-image: url("../images/payments/visa.svg"); +} + +.payment-webmoney-dark { + background-image: url("../images/payments/webmoney-dark.svg"); +} + +.payment-webmoney { + background-image: url("../images/payments/webmoney.svg"); +} + +.payment-westernunion-dark { + background-image: url("../images/payments/westernunion-dark.svg"); +} + +.payment-westernunion { + background-image: url("../images/payments/westernunion.svg"); +} + +.payment-worldpay-dark { + background-image: url("../images/payments/worldpay-dark.svg"); +} + +.payment-worldpay { + background-image: url("../images/payments/worldpay.svg"); +} + +svg { + -ms-touch-action: none; + touch-action: none; +} + +.jvectormap-container { + width: 100%; + height: 100%; + position: relative; + overflow: hidden; + -ms-touch-action: none; + touch-action: none; +} + +.jvectormap-tip { + position: absolute; + display: none; + border-radius: 3px; + background: #212529; + color: white; + padding: 6px; + font-size: 11px; + line-height: 1; + font-weight: 700; +} + +.jvectormap-tip small { + font-size: inherit; + font-weight: 400; +} + +.jvectormap-zoomin, .jvectormap-zoomout, .jvectormap-goback { + position: absolute; + left: 10px; + border-radius: 3px; + background: #292929; + padding: 3px; + color: white; + cursor: pointer; + line-height: 10px; + text-align: center; + box-sizing: content-box; +} + +.jvectormap-zoomin, .jvectormap-zoomout { + width: 10px; + height: 10px; +} + +.jvectormap-zoomin { + top: 10px; +} + +.jvectormap-zoomout { + top: 30px; +} + +.jvectormap-goback { + bottom: 10px; + z-index: 1000; + padding: 6px; +} + +.jvectormap-spinner { + position: absolute; + left: 0; + top: 0; + right: 0; + bottom: 0; + background: center no-repeat url(data:image/gif;base64,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); +} + +.jvectormap-legend-title { + font-weight: bold; + font-size: 14px; + text-align: center; +} + +.jvectormap-legend-cnt { + position: absolute; +} + +.jvectormap-legend-cnt-h { + bottom: 0; + right: 0; +} + +.jvectormap-legend-cnt-v { + top: 0; + right: 0; +} + +.jvectormap-legend { + background: black; + color: white; + border-radius: 3px; +} + +.jvectormap-legend-cnt-h .jvectormap-legend { + float: left; + margin: 0 10px 10px 0; + padding: 3px 3px 1px 3px; +} + +.jvectormap-legend-cnt-h .jvectormap-legend .jvectormap-legend-tick { + float: left; +} + +.jvectormap-legend-cnt-v .jvectormap-legend { + margin: 10px 10px 0 0; + padding: 3px; +} + +.jvectormap-legend-cnt-h .jvectormap-legend-tick { + width: 40px; +} + +.jvectormap-legend-cnt-h .jvectormap-legend-tick-sample { + height: 15px; +} + +.jvectormap-legend-cnt-v .jvectormap-legend-tick-sample { + height: 20px; + width: 20px; + display: inline-block; + vertical-align: middle; +} + +.jvectormap-legend-tick-text { + font-size: 12px; +} + +.jvectormap-legend-cnt-h .jvectormap-legend-tick-text { + text-align: center; +} + +.jvectormap-legend-cnt-v .jvectormap-legend-tick-text { + display: inline-block; + vertical-align: middle; + line-height: 20px; + padding-left: 3px; +} + +/** + * selectize.css (v0.12.4) + * Copyright (c) 2013–2015 Brian Reavis & contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this + * file except in compliance with the License. You may obtain a copy of the License at: + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF + * ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + * + * @author Brian Reavis + */ +.selectize-control.plugin-drag_drop.multi > .selectize-input > div.ui-sortable-placeholder { + visibility: visible !important; + background: #f2f2f2 !important; + background: rgba(0, 0, 0, 0.06) !important; + border: 0 none !important; + box-shadow: inset 0 0 12px 4px #fff; +} + +.selectize-control.plugin-drag_drop .ui-sortable-placeholder::after { + content: '!'; + visibility: hidden; +} + +.selectize-control.plugin-drag_drop .ui-sortable-helper { + box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2); +} + +.selectize-dropdown-header { + position: relative; + padding: 5px 8px; + border-bottom: 1px solid #d0d0d0; + background: #f8f8f8; + border-radius: 3px 3px 0 0; +} + +.selectize-dropdown-header-close { + position: absolute; + right: 8px; + top: 50%; + color: #495057; + opacity: 0.4; + margin-top: -12px; + line-height: 20px; + font-size: 20px !important; +} + +.selectize-dropdown-header-close:hover { + color: #000; +} + +.selectize-dropdown.plugin-optgroup_columns .optgroup { + border-right: 1px solid #f2f2f2; + border-top: 0 none; + float: left; + box-sizing: border-box; +} + +.selectize-dropdown.plugin-optgroup_columns .optgroup:last-child { + border-right: 0 none; +} + +.selectize-dropdown.plugin-optgroup_columns .optgroup:before { + display: none; +} + +.selectize-dropdown.plugin-optgroup_columns .optgroup-header { + border-top: 0 none; +} + +.selectize-control.plugin-remove_button [data-value] { + position: relative; + padding-right: 24px !important; +} + +.selectize-control.plugin-remove_button [data-value] .remove { + z-index: 1; + /* fixes ie bug (see #392) */ + position: absolute; + top: 0; + right: 0; + bottom: 0; + width: 17px; + text-align: center; + font-weight: bold; + font-size: 12px; + color: inherit; + text-decoration: none; + vertical-align: middle; + display: inline-block; + padding: 2px 0 0 0; + border-left: 1px solid #d0d0d0; + border-radius: 0 2px 2px 0; + box-sizing: border-box; +} + +.selectize-control.plugin-remove_button [data-value] .remove:hover { + background: rgba(0, 0, 0, 0.05); +} + +.selectize-control.plugin-remove_button [data-value].active .remove { + border-left-color: #cacaca; +} + +.selectize-control.plugin-remove_button .disabled [data-value] .remove:hover { + background: none; +} + +.selectize-control.plugin-remove_button .disabled [data-value] .remove { + border-left-color: #fff; +} + +.selectize-control.plugin-remove_button .remove-single { + position: absolute; + right: 28px; + top: 6px; + font-size: 23px; +} + +.selectize-control { + position: relative; + padding: 0; + border: 0; +} + +.selectize-dropdown, +.selectize-input, +.selectize-input input { + color: #495057; + font-family: inherit; + font-size: 15px; + line-height: 18px; + -webkit-font-smoothing: inherit; +} + +.selectize-input, +.selectize-control.single .selectize-input.input-active { + background: #fff; + cursor: text; + display: inline-block; +} + +.selectize-input { + border: 1px solid rgba(0, 40, 100, 0.12); + padding: 0.5625rem 0.75rem; + display: inline-block; + display: block; + width: 100%; + overflow: hidden; + position: relative; + z-index: 1; + box-sizing: border-box; + border-radius: 3px; + transition: .3s border-color, .3s box-shadow; +} + +.selectize-control.multi .selectize-input.has-items { + padding: 7px 0.75rem 4px 7px; +} + +.selectize-input.full { + background-color: #fff; +} + +.selectize-input.disabled, +.selectize-input.disabled * { + cursor: default !important; +} + +.selectize-input.focus { + border-color: #467fcf; + box-shadow: 0 0 0 2px rgba(70, 127, 207, 0.25); +} + +.selectize-input.dropdown-active { + border-radius: 3px 3px 0 0; +} + +.selectize-input > * { + vertical-align: baseline; + display: -moz-inline-stack; + display: inline-block; + zoom: 1; + *display: inline; +} + +.selectize-control.multi .selectize-input > div { + cursor: pointer; + margin: 0 3px 3px 0; + padding: 2px 6px; + background: #e9ecef; + color: #495057; + font-size: 13px; + border: 0 solid rgba(0, 40, 100, 0.12); + border-radius: 3px; + font-weight: 400; +} + +.selectize-control.multi .selectize-input > div.active { + background: #e8e8e8; + color: #303030; + border: 0 solid #cacaca; +} + +.selectize-control.multi .selectize-input.disabled > div, +.selectize-control.multi .selectize-input.disabled > div.active { + color: #7d7d7d; + background: #fff; + border: 0 solid #fff; +} + +.selectize-input > input { + display: inline-block !important; + padding: 0 !important; + min-height: 0 !important; + max-height: none !important; + max-width: 100% !important; + margin: 0 2px 0 0 !important; + text-indent: 0 !important; + border: 0 none !important; + background: none !important; + line-height: inherit !important; + box-shadow: none !important; +} + +.selectize-input > input::-ms-clear { + display: none; +} + +.selectize-input > input:focus { + outline: none !important; +} + +.selectize-input::after { + content: ' '; + display: block; + clear: left; +} + +.selectize-input.dropdown-active::before { + content: ' '; + display: block; + position: absolute; + background: #f0f0f0; + height: 1px; + bottom: 0; + left: 0; + right: 0; +} + +.selectize-dropdown { + position: absolute; + z-index: 10; + border: 1px solid rgba(0, 40, 100, 0.12); + background: #fff; + margin: -1px 0 0 0; + border-top: 0 none; + box-sizing: border-box; + border-radius: 0 0 3px 3px; + height: auto; + padding: 0; +} + +.selectize-dropdown [data-selectable] { + cursor: pointer; + overflow: hidden; +} + +.selectize-dropdown [data-selectable] .highlight { + background: rgba(125, 168, 208, 0.2); + border-radius: 1px; +} + +.selectize-dropdown [data-selectable], +.selectize-dropdown .optgroup-header { + padding: 6px .75rem; +} + +.selectize-dropdown .optgroup:first-child .optgroup-header { + border-top: 0 none; +} + +.selectize-dropdown .optgroup-header { + color: #495057; + background: #fff; + cursor: default; +} + +.selectize-dropdown .active { + background-color: #F1F4F8; + color: #467fcf; +} + +.selectize-dropdown .active.create { + color: #495057; +} + +.selectize-dropdown .create { + color: rgba(48, 48, 48, 0.5); +} + +.selectize-dropdown-content { + overflow-y: auto; + overflow-x: hidden; + max-height: 200px; + -webkit-overflow-scrolling: touch; +} + +.selectize-control.single .selectize-input, +.selectize-control.single .selectize-input input { + cursor: pointer; +} + +.selectize-control.single .selectize-input.input-active, +.selectize-control.single .selectize-input.input-active input { + cursor: text; +} + +.selectize-control.single .selectize-input:after { + content: ''; + display: block; + position: absolute; + top: 13px; + right: 12px; + width: 8px; + height: 10px; + background: #fff url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 5'%3E%3Cpath fill='%23999' d='M0 0L10 0L5 5L0 0'/%3E%3C/svg%3E") no-repeat center; + background-size: 8px 10px; + transition: .3s transform; +} + +.selectize-control.single .selectize-input.dropdown-active:after { + -webkit-transform: rotate(180deg); + transform: rotate(180deg); +} + +.selectize-control .selectize-input.disabled { + opacity: 0.5; + background-color: #fafafa; +} + +.selectize-dropdown .image, +.selectize-input .image { + width: 1.25rem; + height: 1.25rem; + background-size: contain; + margin: -1px .5rem -1px -4px; + line-height: 1.25rem; + float: left; + display: -ms-flexbox; + display: flex; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: center; + justify-content: center; +} + +.selectize-dropdown .image img, +.selectize-input .image img { + max-width: 100%; + box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.4); + border-radius: 2px; +} + +.selectize-input .image { + width: 1.5rem; + height: 1.5rem; + margin: -3px .75rem -3px -5px; +} + +@font-face { + font-family: "feather"; + src: url("../fonts/feather/feather-webfont.eot?t=1501841394106"); + /* IE9*/ + src: url("../fonts/feather/feather-webfont.eot?t=1501841394106#iefix") format("embedded-opentype"), url("../fonts/feather/feather-webfont.woff?t=1501841394106") format("woff"), url("../fonts/feather/feather-webfont.ttf?t=1501841394106") format("truetype"), url("../fonts/feather/feather-webfont.svg?t=1501841394106#feather") format("svg"); + /* iOS 4.1- */ +} + +.fe { + font-family: 'feather' !important; + speak: none; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.fe-activity:before { + content: "\e900"; +} + +.fe-airplay:before { + content: "\e901"; +} + +.fe-alert-circle:before { + content: "\e902"; +} + +.fe-alert-octagon:before { + content: "\e903"; +} + +.fe-alert-triangle:before { + content: "\e904"; +} + +.fe-align-center:before { + content: "\e905"; +} + +.fe-align-justify:before { + content: "\e906"; +} + +.fe-align-left:before { + content: "\e907"; +} + +.fe-align-right:before { + content: "\e908"; +} + +.fe-anchor:before { + content: "\e909"; +} + +.fe-aperture:before { + content: "\e90a"; +} + +.fe-arrow-down:before { + content: "\e90b"; +} + +.fe-arrow-down-circle:before { + content: "\e90c"; +} + +.fe-arrow-down-left:before { + content: "\e90d"; +} + +.fe-arrow-down-right:before { + content: "\e90e"; +} + +.fe-arrow-left:before { + content: "\e90f"; +} + +.fe-arrow-left-circle:before { + content: "\e910"; +} + +.fe-arrow-right:before { + content: "\e911"; +} + +.fe-arrow-right-circle:before { + content: "\e912"; +} + +.fe-arrow-up:before { + content: "\e913"; +} + +.fe-arrow-up-circle:before { + content: "\e914"; +} + +.fe-arrow-up-left:before { + content: "\e915"; +} + +.fe-arrow-up-right:before { + content: "\e916"; +} + +.fe-at-sign:before { + content: "\e917"; +} + +.fe-award:before { + content: "\e918"; +} + +.fe-bar-chart:before { + content: "\e919"; +} + +.fe-bar-chart-2:before { + content: "\e91a"; +} + +.fe-battery:before { + content: "\e91b"; +} + +.fe-battery-charging:before { + content: "\e91c"; +} + +.fe-bell:before { + content: "\e91d"; +} + +.fe-bell-off:before { + content: "\e91e"; +} + +.fe-bluetooth:before { + content: "\e91f"; +} + +.fe-bold:before { + content: "\e920"; +} + +.fe-book:before { + content: "\e921"; +} + +.fe-book-open:before { + content: "\e922"; +} + +.fe-bookmark:before { + content: "\e923"; +} + +.fe-box:before { + content: "\e924"; +} + +.fe-briefcase:before { + content: "\e925"; +} + +.fe-calendar:before { + content: "\e926"; +} + +.fe-camera:before { + content: "\e927"; +} + +.fe-camera-off:before { + content: "\e928"; +} + +.fe-cast:before { + content: "\e929"; +} + +.fe-check:before { + content: "\e92a"; +} + +.fe-check-circle:before { + content: "\e92b"; +} + +.fe-check-square:before { + content: "\e92c"; +} + +.fe-chevron-down:before { + content: "\e92d"; +} + +.fe-chevron-left:before { + content: "\e92e"; +} + +.fe-chevron-right:before { + content: "\e92f"; +} + +.fe-chevron-up:before { + content: "\e930"; +} + +.fe-chevrons-down:before { + content: "\e931"; +} + +.fe-chevrons-left:before { + content: "\e932"; +} + +.fe-chevrons-right:before { + content: "\e933"; +} + +.fe-chevrons-up:before { + content: "\e934"; +} + +.fe-chrome:before { + content: "\e935"; +} + +.fe-circle:before { + content: "\e936"; +} + +.fe-clipboard:before { + content: "\e937"; +} + +.fe-clock:before { + content: "\e938"; +} + +.fe-cloud:before { + content: "\e939"; +} + +.fe-cloud-drizzle:before { + content: "\e93a"; +} + +.fe-cloud-lightning:before { + content: "\e93b"; +} + +.fe-cloud-off:before { + content: "\e93c"; +} + +.fe-cloud-rain:before { + content: "\e93d"; +} + +.fe-cloud-snow:before { + content: "\e93e"; +} + +.fe-code:before { + content: "\e93f"; +} + +.fe-codepen:before { + content: "\e940"; +} + +.fe-command:before { + content: "\e941"; +} + +.fe-compass:before { + content: "\e942"; +} + +.fe-copy:before { + content: "\e943"; +} + +.fe-corner-down-left:before { + content: "\e944"; +} + +.fe-corner-down-right:before { + content: "\e945"; +} + +.fe-corner-left-down:before { + content: "\e946"; +} + +.fe-corner-left-up:before { + content: "\e947"; +} + +.fe-corner-right-down:before { + content: "\e948"; +} + +.fe-corner-right-up:before { + content: "\e949"; +} + +.fe-corner-up-left:before { + content: "\e94a"; +} + +.fe-corner-up-right:before { + content: "\e94b"; +} + +.fe-cpu:before { + content: "\e94c"; +} + +.fe-credit-card:before { + content: "\e94d"; +} + +.fe-crop:before { + content: "\e94e"; +} + +.fe-crosshair:before { + content: "\e94f"; +} + +.fe-database:before { + content: "\e950"; +} + +.fe-delete:before { + content: "\e951"; +} + +.fe-disc:before { + content: "\e952"; +} + +.fe-dollar-sign:before { + content: "\e953"; +} + +.fe-download:before { + content: "\e954"; +} + +.fe-download-cloud:before { + content: "\e955"; +} + +.fe-droplet:before { + content: "\e956"; +} + +.fe-edit:before { + content: "\e957"; +} + +.fe-edit-2:before { + content: "\e958"; +} + +.fe-edit-3:before { + content: "\e959"; +} + +.fe-external-link:before { + content: "\e95a"; +} + +.fe-eye:before { + content: "\e95b"; +} + +.fe-eye-off:before { + content: "\e95c"; +} + +.fe-facebook:before { + content: "\e95d"; +} + +.fe-fast-forward:before { + content: "\e95e"; +} + +.fe-feather:before { + content: "\e95f"; +} + +.fe-file:before { + content: "\e960"; +} + +.fe-file-minus:before { + content: "\e961"; +} + +.fe-file-plus:before { + content: "\e962"; +} + +.fe-file-text:before { + content: "\e963"; +} + +.fe-film:before { + content: "\e964"; +} + +.fe-filter:before { + content: "\e965"; +} + +.fe-flag:before { + content: "\e966"; +} + +.fe-folder:before { + content: "\e967"; +} + +.fe-folder-minus:before { + content: "\e968"; +} + +.fe-folder-plus:before { + content: "\e969"; +} + +.fe-git-branch:before { + content: "\e96a"; +} + +.fe-git-commit:before { + content: "\e96b"; +} + +.fe-git-merge:before { + content: "\e96c"; +} + +.fe-git-pull-request:before { + content: "\e96d"; +} + +.fe-github:before { + content: "\e96e"; +} + +.fe-gitlab:before { + content: "\e96f"; +} + +.fe-globe:before { + content: "\e970"; +} + +.fe-grid:before { + content: "\e971"; +} + +.fe-hard-drive:before { + content: "\e972"; +} + +.fe-hash:before { + content: "\e973"; +} + +.fe-headphones:before { + content: "\e974"; +} + +.fe-heart:before { + content: "\e975"; +} + +.fe-help-circle:before { + content: "\e976"; +} + +.fe-home:before { + content: "\e977"; +} + +.fe-image:before { + content: "\e978"; +} + +.fe-inbox:before { + content: "\e979"; +} + +.fe-info:before { + content: "\e97a"; +} + +.fe-instagram:before { + content: "\e97b"; +} + +.fe-italic:before { + content: "\e97c"; +} + +.fe-layers:before { + content: "\e97d"; +} + +.fe-layout:before { + content: "\e97e"; +} + +.fe-life-buoy:before { + content: "\e97f"; +} + +.fe-link:before { + content: "\e980"; +} + +.fe-link-2:before { + content: "\e981"; +} + +.fe-linkedin:before { + content: "\e982"; +} + +.fe-list:before { + content: "\e983"; +} + +.fe-loader:before { + content: "\e984"; +} + +.fe-lock:before { + content: "\e985"; +} + +.fe-log-in:before { + content: "\e986"; +} + +.fe-log-out:before { + content: "\e987"; +} + +.fe-mail:before { + content: "\e988"; +} + +.fe-map:before { + content: "\e989"; +} + +.fe-map-pin:before { + content: "\e98a"; +} + +.fe-maximize:before { + content: "\e98b"; +} + +.fe-maximize-2:before { + content: "\e98c"; +} + +.fe-menu:before { + content: "\e98d"; +} + +.fe-message-circle:before { + content: "\e98e"; +} + +.fe-message-square:before { + content: "\e98f"; +} + +.fe-mic:before { + content: "\e990"; +} + +.fe-mic-off:before { + content: "\e991"; +} + +.fe-minimize:before { + content: "\e992"; +} + +.fe-minimize-2:before { + content: "\e993"; +} + +.fe-minus:before { + content: "\e994"; +} + +.fe-minus-circle:before { + content: "\e995"; +} + +.fe-minus-square:before { + content: "\e996"; +} + +.fe-monitor:before { + content: "\e997"; +} + +.fe-moon:before { + content: "\e998"; +} + +.fe-more-horizontal:before { + content: "\e999"; +} + +.fe-more-vertical:before { + content: "\e99a"; +} + +.fe-move:before { + content: "\e99b"; +} + +.fe-music:before { + content: "\e99c"; +} + +.fe-navigation:before { + content: "\e99d"; +} + +.fe-navigation-2:before { + content: "\e99e"; +} + +.fe-octagon:before { + content: "\e99f"; +} + +.fe-package:before { + content: "\e9a0"; +} + +.fe-paperclip:before { + content: "\e9a1"; +} + +.fe-pause:before { + content: "\e9a2"; +} + +.fe-pause-circle:before { + content: "\e9a3"; +} + +.fe-percent:before { + content: "\e9a4"; +} + +.fe-phone:before { + content: "\e9a5"; +} + +.fe-phone-call:before { + content: "\e9a6"; +} + +.fe-phone-forwarded:before { + content: "\e9a7"; +} + +.fe-phone-incoming:before { + content: "\e9a8"; +} + +.fe-phone-missed:before { + content: "\e9a9"; +} + +.fe-phone-off:before { + content: "\e9aa"; +} + +.fe-phone-outgoing:before { + content: "\e9ab"; +} + +.fe-pie-chart:before { + content: "\e9ac"; +} + +.fe-play:before { + content: "\e9ad"; +} + +.fe-play-circle:before { + content: "\e9ae"; +} + +.fe-plus:before { + content: "\e9af"; +} + +.fe-plus-circle:before { + content: "\e9b0"; +} + +.fe-plus-square:before { + content: "\e9b1"; +} + +.fe-pocket:before { + content: "\e9b2"; +} + +.fe-power:before { + content: "\e9b3"; +} + +.fe-printer:before { + content: "\e9b4"; +} + +.fe-radio:before { + content: "\e9b5"; +} + +.fe-refresh-ccw:before { + content: "\e9b6"; +} + +.fe-refresh-cw:before { + content: "\e9b7"; +} + +.fe-repeat:before { + content: "\e9b8"; +} + +.fe-rewind:before { + content: "\e9b9"; +} + +.fe-rotate-ccw:before { + content: "\e9ba"; +} + +.fe-rotate-cw:before { + content: "\e9bb"; +} + +.fe-rss:before { + content: "\e9bc"; +} + +.fe-save:before { + content: "\e9bd"; +} + +.fe-scissors:before { + content: "\e9be"; +} + +.fe-search:before { + content: "\e9bf"; +} + +.fe-send:before { + content: "\e9c0"; +} + +.fe-server:before { + content: "\e9c1"; +} + +.fe-settings:before { + content: "\e9c2"; +} + +.fe-share:before { + content: "\e9c3"; +} + +.fe-share-2:before { + content: "\e9c4"; +} + +.fe-shield:before { + content: "\e9c5"; +} + +.fe-shield-off:before { + content: "\e9c6"; +} + +.fe-shopping-bag:before { + content: "\e9c7"; +} + +.fe-shopping-cart:before { + content: "\e9c8"; +} + +.fe-shuffle:before { + content: "\e9c9"; +} + +.fe-sidebar:before { + content: "\e9ca"; +} + +.fe-skip-back:before { + content: "\e9cb"; +} + +.fe-skip-forward:before { + content: "\e9cc"; +} + +.fe-slack:before { + content: "\e9cd"; +} + +.fe-slash:before { + content: "\e9ce"; +} + +.fe-sliders:before { + content: "\e9cf"; +} + +.fe-smartphone:before { + content: "\e9d0"; +} + +.fe-speaker:before { + content: "\e9d1"; +} + +.fe-square:before { + content: "\e9d2"; +} + +.fe-star:before { + content: "\e9d3"; +} + +.fe-stop-circle:before { + content: "\e9d4"; +} + +.fe-sun:before { + content: "\e9d5"; +} + +.fe-sunrise:before { + content: "\e9d6"; +} + +.fe-sunset:before { + content: "\e9d7"; +} + +.fe-tablet:before { + content: "\e9d8"; +} + +.fe-tag:before { + content: "\e9d9"; +} + +.fe-target:before { + content: "\e9da"; +} + +.fe-terminal:before { + content: "\e9db"; +} + +.fe-thermometer:before { + content: "\e9dc"; +} + +.fe-thumbs-down:before { + content: "\e9dd"; +} + +.fe-thumbs-up:before { + content: "\e9de"; +} + +.fe-toggle-left:before { + content: "\e9df"; +} + +.fe-toggle-right:before { + content: "\e9e0"; +} + +.fe-trash:before { + content: "\e9e1"; +} + +.fe-trash-2:before { + content: "\e9e2"; +} + +.fe-trending-down:before { + content: "\e9e3"; +} + +.fe-trending-up:before { + content: "\e9e4"; +} + +.fe-triangle:before { + content: "\e9e5"; +} + +.fe-truck:before { + content: "\e9e6"; +} + +.fe-tv:before { + content: "\e9e7"; +} + +.fe-twitter:before { + content: "\e9e8"; +} + +.fe-type:before { + content: "\e9e9"; +} + +.fe-umbrella:before { + content: "\e9ea"; +} + +.fe-underline:before { + content: "\e9eb"; +} + +.fe-unlock:before { + content: "\e9ec"; +} + +.fe-upload:before { + content: "\e9ed"; +} + +.fe-upload-cloud:before { + content: "\e9ee"; +} + +.fe-user:before { + content: "\e9ef"; +} + +.fe-user-check:before { + content: "\e9f0"; +} + +.fe-user-minus:before { + content: "\e9f1"; +} + +.fe-user-plus:before { + content: "\e9f2"; +} + +.fe-user-x:before { + content: "\e9f3"; +} + +.fe-users:before { + content: "\e9f4"; +} + +.fe-video:before { + content: "\e9f5"; +} + +.fe-video-off:before { + content: "\e9f6"; +} + +.fe-voicemail:before { + content: "\e9f7"; +} + +.fe-volume:before { + content: "\e9f8"; +} + +.fe-volume-1:before { + content: "\e9f9"; +} + +.fe-volume-2:before { + content: "\e9fa"; +} + +.fe-volume-x:before { + content: "\e9fb"; +} + +.fe-watch:before { + content: "\e9fc"; +} + +.fe-wifi:before { + content: "\e9fd"; +} + +.fe-wifi-off:before { + content: "\e9fe"; +} + +.fe-wind:before { + content: "\e9ff"; +} + +.fe-x:before { + content: "\ea00"; +} + +.fe-x-circle:before { + content: "\ea01"; +} + +.fe-x-square:before { + content: "\ea02"; +} + +.fe-zap:before { + content: "\ea03"; +} + +.fe-zap-off:before { + content: "\ea04"; +} + +.fe-zoom-in:before { + content: "\ea05"; +} + +.fe-zoom-out:before { + content: "\ea06"; +} diff --git a/static/assets/css/dashboard.rtl.css b/static/assets/css/dashboard.rtl.css new file mode 100755 index 00000000..836ef4ee --- /dev/null +++ b/static/assets/css/dashboard.rtl.css @@ -0,0 +1,20346 @@ +@charset "UTF-8"; +/** + * Dashboard UI + */ +/*! + * Bootstrap v4.3.1 (https://getbootstrap.com/) + * Copyright 2011-2019 The Bootstrap Authors + * Copyright 2011-2019 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ +:root { + --blue: #467fcf; + --indigo: #6574cd; + --purple: #a55eea; + --pink: #f66d9b; + --red: #cd201f; + --orange: #fd9644; + --yellow: #f1c40f; + --green: #5eba00; + --teal: #2bcbba; + --cyan: #17a2b8; + --white: #fff; + --gray: #868e96; + --gray-dark: #343a40; + --azure: #45aaf2; + --lime: #7bd235; + --primary: #467fcf; + --secondary: #868e96; + --success: #5eba00; + --info: #45aaf2; + --warning: #f1c40f; + --danger: #cd201f; + --light: #f8f9fa; + --dark: #343a40; + --breakpoint-xs: 0; + --breakpoint-sm: 576px; + --breakpoint-md: 768px; + --breakpoint-lg: 992px; + --breakpoint-xl: 1280px; + --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: Monaco, Consolas, "Liberation Mono", "Courier New", monospace; +} + +*, +*::before, +*::after { + 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: "Source Sans Pro", -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", Arial, sans-serif; + font-size: 0.9375rem; + font-weight: 400; + line-height: 1.5; + color: #495057; + text-align: right; + background-color: #f5f7fb; +} + +[tabindex="-1"]:focus { + outline: 0 !important; +} + +hr { + box-sizing: content-box; + height: 0; + overflow: visible; +} + +h1, h2, h3, h4, h5, h6 { + margin-top: 0; + margin-bottom: 0.66em; +} + +p { + margin-top: 0; + margin-bottom: 1rem; +} + +abbr[title], +abbr[data-original-title] { + text-decoration: underline; + -webkit-text-decoration: underline dotted; + text-decoration: underline dotted; + cursor: help; + border-bottom: 0; + text-decoration-skip-ink: none; +} + +address { + margin-bottom: 1rem; + font-style: normal; + line-height: inherit; +} + +ol, +ul, +dl { + margin-top: 0; + margin-bottom: 1rem; +} + +ol ol, +ul ul, +ol ul, +ul ol { + margin-bottom: 0; +} + +dt { + font-weight: 700; +} + +dd { + margin-bottom: .5rem; + margin-right: 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: #467fcf; + text-decoration: none; + background-color: transparent; +} + +a:hover { + color: #295a9f; + text-decoration: underline; +} + +a:not([href]):not([tabindex]) { + color: inherit; + text-decoration: none; +} + +a:not([href]):not([tabindex]):hover, a:not([href]):not([tabindex]):focus { + color: inherit; + text-decoration: none; +} + +a:not([href]):not([tabindex]):focus { + outline: 0; +} + +pre, +code, +kbd, +samp { + font-family: 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 { + vertical-align: middle; + border-style: none; +} + +svg { + overflow: hidden; + vertical-align: middle; +} + +table { + border-collapse: collapse; +} + +caption { + padding-top: 0.75rem; + padding-bottom: 0.75rem; + color: #9aa0ac; + text-align: right; + caption-side: bottom; +} + +th { + text-align: inherit; +} + +label { + display: inline-block; + margin-bottom: 0.5rem; +} + +button { + border-radius: 0; +} + +button:focus { + outline: 1px dotted; + outline: 5px auto -webkit-focus-ring-color; +} + +input, +button, +select, +optgroup, +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; +} + +button, +[type="button"], +[type="reset"], +[type="submit"] { + -webkit-appearance: button; +} + +button:not(:disabled), +[type="button"]:not(:disabled), +[type="reset"]:not(:disabled), +[type="submit"]:not(:disabled) { + cursor: pointer; +} + +button::-moz-focus-inner, +[type="button"]::-moz-focus-inner, +[type="reset"]::-moz-focus-inner, +[type="submit"]::-moz-focus-inner { + padding: 0; + border-style: none; +} + +input[type="radio"], +input[type="checkbox"] { + box-sizing: border-box; + padding: 0; +} + +input[type="date"], +input[type="time"], +input[type="datetime-local"], +input[type="month"] { + -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: 0.66em; + font-family: inherit; + font-weight: 600; + line-height: 1.1; + color: inherit; +} + +h1, .h1 { + font-size: 2rem; +} + +h2, .h2 { + font-size: 1.75rem; +} + +h3, .h3 { + font-size: 1.5rem; +} + +h4, .h4 { + font-size: 1.125rem; +} + +h5, .h5 { + font-size: 1rem; +} + +h6, .h6 { + font-size: 0.875rem; +} + +.lead { + font-size: 1.171875rem; + font-weight: 300; +} + +.display-1 { + font-size: 4.5rem; + font-weight: 300; + line-height: 1.1; +} + +.display-2 { + font-size: 4rem; + font-weight: 300; + line-height: 1.1; +} + +.display-3 { + font-size: 3.5rem; + font-weight: 300; + line-height: 1.1; +} + +.display-4 { + font-size: 3rem; + font-weight: 300; + line-height: 1.1; +} + +hr { + margin-top: 1rem; + margin-bottom: 1rem; + border: 0; + border-top: 1px solid rgba(0, 40, 100, 0.12); +} + +small, +.small { + font-size: 87.5%; + font-weight: 400; +} + +mark, +.mark { + padding: 0.2em; + background-color: #fcf8e3; +} + +.list-unstyled { + padding-right: 0; + list-style: none; +} + +.list-inline { + padding-right: 0; + list-style: none; +} + +.list-inline-item { + display: inline-block; +} + +.list-inline-item:not(:last-child) { + margin-left: 0.5rem; +} + +.initialism { + font-size: 90%; + text-transform: uppercase; +} + +.blockquote { + margin-bottom: 1rem; + font-size: 1.171875rem; +} + +.blockquote-footer { + display: block; + font-size: 87.5%; + color: #868e96; +} + +.blockquote-footer::before { + content: "\2014\00A0"; +} + +.img-fluid { + max-width: 100%; + height: auto; +} + +.img-thumbnail { + padding: 0.25rem; + background-color: #fff; + border: 1px solid #dee2e6; + border-radius: 3px; + max-width: 100%; + height: auto; +} + +.figure { + display: inline-block; +} + +.figure-img { + margin-bottom: 0.5rem; + line-height: 1; +} + +.figure-caption { + font-size: 90%; + color: #868e96; +} + +code { + font-size: 85%; + color: inherit; + word-break: break-word; +} + +a > code { + color: inherit; +} + +kbd { + padding: 0.2rem 0.4rem; + font-size: 85%; + color: #fff; + background-color: #343a40; + border-radius: 3px; +} + +kbd kbd { + padding: 0; + font-size: 100%; + font-weight: 700; +} + +pre { + display: block; + font-size: 85%; + color: #212529; +} + +pre code { + font-size: inherit; + color: inherit; + word-break: normal; +} + +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; +} + +.container { + width: 100%; + padding-left: 0.75rem; + padding-right: 0.75rem; + margin-left: auto; + margin-right: auto; +} + +@media (min-width: 576px) { + .container { + max-width: 540px; + } +} + +@media (min-width: 768px) { + .container { + max-width: 720px; + } +} + +@media (min-width: 992px) { + .container { + max-width: 960px; + } +} + +@media (min-width: 1280px) { + .container { + max-width: 1200px; + } +} + +.container-fluid { + width: 100%; + padding-left: 0.75rem; + padding-right: 0.75rem; + margin-left: auto; + margin-right: auto; +} + +.row { + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + margin-left: -0.75rem; + margin-right: -0.75rem; +} + +.no-gutters { + margin-left: 0; + margin-right: 0; +} + +.no-gutters > .col, +.no-gutters > [class*="col-"] { + padding-left: 0; + padding-right: 0; +} + +.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, +.col-auto, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm, +.col-sm-auto, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md, +.col-md-auto, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg, +.col-lg-auto, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl, +.col-xl-auto { + position: relative; + width: 100%; + padding-left: 0.75rem; + padding-right: 0.75rem; +} + +.col { + -ms-flex-preferred-size: 0; + flex-basis: 0; + -ms-flex-positive: 1; + flex-grow: 1; + max-width: 100%; +} + +.col-auto { + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + max-width: 100%; +} + +.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-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-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-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-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-11 { + -ms-flex: 0 0 91.66666667%; + flex: 0 0 91.66666667%; + max-width: 91.66666667%; +} + +.col-12 { + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; +} + +.order-first { + -ms-flex-order: -1; + order: -1; +} + +.order-last { + -ms-flex-order: 13; + order: 13; +} + +.order-0 { + -ms-flex-order: 0; + order: 0; +} + +.order-1 { + -ms-flex-order: 1; + order: 1; +} + +.order-2 { + -ms-flex-order: 2; + order: 2; +} + +.order-3 { + -ms-flex-order: 3; + order: 3; +} + +.order-4 { + -ms-flex-order: 4; + order: 4; +} + +.order-5 { + -ms-flex-order: 5; + order: 5; +} + +.order-6 { + -ms-flex-order: 6; + order: 6; +} + +.order-7 { + -ms-flex-order: 7; + order: 7; +} + +.order-8 { + -ms-flex-order: 8; + order: 8; +} + +.order-9 { + -ms-flex-order: 9; + order: 9; +} + +.order-10 { + -ms-flex-order: 10; + order: 10; +} + +.order-11 { + -ms-flex-order: 11; + order: 11; +} + +.order-12 { + -ms-flex-order: 12; + order: 12; +} + +.offset-1 { + margin-right: 8.33333333%; +} + +.offset-2 { + margin-right: 16.66666667%; +} + +.offset-3 { + margin-right: 25%; +} + +.offset-4 { + margin-right: 33.33333333%; +} + +.offset-5 { + margin-right: 41.66666667%; +} + +.offset-6 { + margin-right: 50%; +} + +.offset-7 { + margin-right: 58.33333333%; +} + +.offset-8 { + margin-right: 66.66666667%; +} + +.offset-9 { + margin-right: 75%; +} + +.offset-10 { + margin-right: 83.33333333%; +} + +.offset-11 { + margin-right: 91.66666667%; +} + +@media (min-width: 576px) { + .col-sm { + -ms-flex-preferred-size: 0; + flex-basis: 0; + -ms-flex-positive: 1; + flex-grow: 1; + max-width: 100%; + } + .col-sm-auto { + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + max-width: 100%; + } + .col-sm-1 { + -ms-flex: 0 0 8.33333333%; + flex: 0 0 8.33333333%; + max-width: 8.33333333%; + } + .col-sm-2 { + -ms-flex: 0 0 16.66666667%; + flex: 0 0 16.66666667%; + max-width: 16.66666667%; + } + .col-sm-3 { + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; + } + .col-sm-4 { + -ms-flex: 0 0 33.33333333%; + flex: 0 0 33.33333333%; + max-width: 33.33333333%; + } + .col-sm-5 { + -ms-flex: 0 0 41.66666667%; + flex: 0 0 41.66666667%; + max-width: 41.66666667%; + } + .col-sm-6 { + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; + } + .col-sm-7 { + -ms-flex: 0 0 58.33333333%; + flex: 0 0 58.33333333%; + max-width: 58.33333333%; + } + .col-sm-8 { + -ms-flex: 0 0 66.66666667%; + flex: 0 0 66.66666667%; + max-width: 66.66666667%; + } + .col-sm-9 { + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75%; + } + .col-sm-10 { + -ms-flex: 0 0 83.33333333%; + flex: 0 0 83.33333333%; + max-width: 83.33333333%; + } + .col-sm-11 { + -ms-flex: 0 0 91.66666667%; + flex: 0 0 91.66666667%; + max-width: 91.66666667%; + } + .col-sm-12 { + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; + } + .order-sm-first { + -ms-flex-order: -1; + order: -1; + } + .order-sm-last { + -ms-flex-order: 13; + order: 13; + } + .order-sm-0 { + -ms-flex-order: 0; + order: 0; + } + .order-sm-1 { + -ms-flex-order: 1; + order: 1; + } + .order-sm-2 { + -ms-flex-order: 2; + order: 2; + } + .order-sm-3 { + -ms-flex-order: 3; + order: 3; + } + .order-sm-4 { + -ms-flex-order: 4; + order: 4; + } + .order-sm-5 { + -ms-flex-order: 5; + order: 5; + } + .order-sm-6 { + -ms-flex-order: 6; + order: 6; + } + .order-sm-7 { + -ms-flex-order: 7; + order: 7; + } + .order-sm-8 { + -ms-flex-order: 8; + order: 8; + } + .order-sm-9 { + -ms-flex-order: 9; + order: 9; + } + .order-sm-10 { + -ms-flex-order: 10; + order: 10; + } + .order-sm-11 { + -ms-flex-order: 11; + order: 11; + } + .order-sm-12 { + -ms-flex-order: 12; + order: 12; + } + .offset-sm-0 { + margin-right: 0; + } + .offset-sm-1 { + margin-right: 8.33333333%; + } + .offset-sm-2 { + margin-right: 16.66666667%; + } + .offset-sm-3 { + margin-right: 25%; + } + .offset-sm-4 { + margin-right: 33.33333333%; + } + .offset-sm-5 { + margin-right: 41.66666667%; + } + .offset-sm-6 { + margin-right: 50%; + } + .offset-sm-7 { + margin-right: 58.33333333%; + } + .offset-sm-8 { + margin-right: 66.66666667%; + } + .offset-sm-9 { + margin-right: 75%; + } + .offset-sm-10 { + margin-right: 83.33333333%; + } + .offset-sm-11 { + margin-right: 91.66666667%; + } +} + +@media (min-width: 768px) { + .col-md { + -ms-flex-preferred-size: 0; + flex-basis: 0; + -ms-flex-positive: 1; + flex-grow: 1; + max-width: 100%; + } + .col-md-auto { + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + max-width: 100%; + } + .col-md-1 { + -ms-flex: 0 0 8.33333333%; + flex: 0 0 8.33333333%; + max-width: 8.33333333%; + } + .col-md-2 { + -ms-flex: 0 0 16.66666667%; + flex: 0 0 16.66666667%; + max-width: 16.66666667%; + } + .col-md-3 { + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; + } + .col-md-4 { + -ms-flex: 0 0 33.33333333%; + flex: 0 0 33.33333333%; + max-width: 33.33333333%; + } + .col-md-5 { + -ms-flex: 0 0 41.66666667%; + flex: 0 0 41.66666667%; + max-width: 41.66666667%; + } + .col-md-6 { + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; + } + .col-md-7 { + -ms-flex: 0 0 58.33333333%; + flex: 0 0 58.33333333%; + max-width: 58.33333333%; + } + .col-md-8 { + -ms-flex: 0 0 66.66666667%; + flex: 0 0 66.66666667%; + max-width: 66.66666667%; + } + .col-md-9 { + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75%; + } + .col-md-10 { + -ms-flex: 0 0 83.33333333%; + flex: 0 0 83.33333333%; + max-width: 83.33333333%; + } + .col-md-11 { + -ms-flex: 0 0 91.66666667%; + flex: 0 0 91.66666667%; + max-width: 91.66666667%; + } + .col-md-12 { + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; + } + .order-md-first { + -ms-flex-order: -1; + order: -1; + } + .order-md-last { + -ms-flex-order: 13; + order: 13; + } + .order-md-0 { + -ms-flex-order: 0; + order: 0; + } + .order-md-1 { + -ms-flex-order: 1; + order: 1; + } + .order-md-2 { + -ms-flex-order: 2; + order: 2; + } + .order-md-3 { + -ms-flex-order: 3; + order: 3; + } + .order-md-4 { + -ms-flex-order: 4; + order: 4; + } + .order-md-5 { + -ms-flex-order: 5; + order: 5; + } + .order-md-6 { + -ms-flex-order: 6; + order: 6; + } + .order-md-7 { + -ms-flex-order: 7; + order: 7; + } + .order-md-8 { + -ms-flex-order: 8; + order: 8; + } + .order-md-9 { + -ms-flex-order: 9; + order: 9; + } + .order-md-10 { + -ms-flex-order: 10; + order: 10; + } + .order-md-11 { + -ms-flex-order: 11; + order: 11; + } + .order-md-12 { + -ms-flex-order: 12; + order: 12; + } + .offset-md-0 { + margin-right: 0; + } + .offset-md-1 { + margin-right: 8.33333333%; + } + .offset-md-2 { + margin-right: 16.66666667%; + } + .offset-md-3 { + margin-right: 25%; + } + .offset-md-4 { + margin-right: 33.33333333%; + } + .offset-md-5 { + margin-right: 41.66666667%; + } + .offset-md-6 { + margin-right: 50%; + } + .offset-md-7 { + margin-right: 58.33333333%; + } + .offset-md-8 { + margin-right: 66.66666667%; + } + .offset-md-9 { + margin-right: 75%; + } + .offset-md-10 { + margin-right: 83.33333333%; + } + .offset-md-11 { + margin-right: 91.66666667%; + } +} + +@media (min-width: 992px) { + .col-lg { + -ms-flex-preferred-size: 0; + flex-basis: 0; + -ms-flex-positive: 1; + flex-grow: 1; + max-width: 100%; + } + .col-lg-auto { + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + max-width: 100%; + } + .col-lg-1 { + -ms-flex: 0 0 8.33333333%; + flex: 0 0 8.33333333%; + max-width: 8.33333333%; + } + .col-lg-2 { + -ms-flex: 0 0 16.66666667%; + flex: 0 0 16.66666667%; + max-width: 16.66666667%; + } + .col-lg-3 { + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; + } + .col-lg-4 { + -ms-flex: 0 0 33.33333333%; + flex: 0 0 33.33333333%; + max-width: 33.33333333%; + } + .col-lg-5 { + -ms-flex: 0 0 41.66666667%; + flex: 0 0 41.66666667%; + max-width: 41.66666667%; + } + .col-lg-6 { + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; + } + .col-lg-7 { + -ms-flex: 0 0 58.33333333%; + flex: 0 0 58.33333333%; + max-width: 58.33333333%; + } + .col-lg-8 { + -ms-flex: 0 0 66.66666667%; + flex: 0 0 66.66666667%; + max-width: 66.66666667%; + } + .col-lg-9 { + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75%; + } + .col-lg-10 { + -ms-flex: 0 0 83.33333333%; + flex: 0 0 83.33333333%; + max-width: 83.33333333%; + } + .col-lg-11 { + -ms-flex: 0 0 91.66666667%; + flex: 0 0 91.66666667%; + max-width: 91.66666667%; + } + .col-lg-12 { + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; + } + .order-lg-first { + -ms-flex-order: -1; + order: -1; + } + .order-lg-last { + -ms-flex-order: 13; + order: 13; + } + .order-lg-0 { + -ms-flex-order: 0; + order: 0; + } + .order-lg-1 { + -ms-flex-order: 1; + order: 1; + } + .order-lg-2 { + -ms-flex-order: 2; + order: 2; + } + .order-lg-3 { + -ms-flex-order: 3; + order: 3; + } + .order-lg-4 { + -ms-flex-order: 4; + order: 4; + } + .order-lg-5 { + -ms-flex-order: 5; + order: 5; + } + .order-lg-6 { + -ms-flex-order: 6; + order: 6; + } + .order-lg-7 { + -ms-flex-order: 7; + order: 7; + } + .order-lg-8 { + -ms-flex-order: 8; + order: 8; + } + .order-lg-9 { + -ms-flex-order: 9; + order: 9; + } + .order-lg-10 { + -ms-flex-order: 10; + order: 10; + } + .order-lg-11 { + -ms-flex-order: 11; + order: 11; + } + .order-lg-12 { + -ms-flex-order: 12; + order: 12; + } + .offset-lg-0 { + margin-right: 0; + } + .offset-lg-1 { + margin-right: 8.33333333%; + } + .offset-lg-2 { + margin-right: 16.66666667%; + } + .offset-lg-3 { + margin-right: 25%; + } + .offset-lg-4 { + margin-right: 33.33333333%; + } + .offset-lg-5 { + margin-right: 41.66666667%; + } + .offset-lg-6 { + margin-right: 50%; + } + .offset-lg-7 { + margin-right: 58.33333333%; + } + .offset-lg-8 { + margin-right: 66.66666667%; + } + .offset-lg-9 { + margin-right: 75%; + } + .offset-lg-10 { + margin-right: 83.33333333%; + } + .offset-lg-11 { + margin-right: 91.66666667%; + } +} + +@media (min-width: 1280px) { + .col-xl { + -ms-flex-preferred-size: 0; + flex-basis: 0; + -ms-flex-positive: 1; + flex-grow: 1; + max-width: 100%; + } + .col-xl-auto { + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + max-width: 100%; + } + .col-xl-1 { + -ms-flex: 0 0 8.33333333%; + flex: 0 0 8.33333333%; + max-width: 8.33333333%; + } + .col-xl-2 { + -ms-flex: 0 0 16.66666667%; + flex: 0 0 16.66666667%; + max-width: 16.66666667%; + } + .col-xl-3 { + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; + } + .col-xl-4 { + -ms-flex: 0 0 33.33333333%; + flex: 0 0 33.33333333%; + max-width: 33.33333333%; + } + .col-xl-5 { + -ms-flex: 0 0 41.66666667%; + flex: 0 0 41.66666667%; + max-width: 41.66666667%; + } + .col-xl-6 { + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; + } + .col-xl-7 { + -ms-flex: 0 0 58.33333333%; + flex: 0 0 58.33333333%; + max-width: 58.33333333%; + } + .col-xl-8 { + -ms-flex: 0 0 66.66666667%; + flex: 0 0 66.66666667%; + max-width: 66.66666667%; + } + .col-xl-9 { + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75%; + } + .col-xl-10 { + -ms-flex: 0 0 83.33333333%; + flex: 0 0 83.33333333%; + max-width: 83.33333333%; + } + .col-xl-11 { + -ms-flex: 0 0 91.66666667%; + flex: 0 0 91.66666667%; + max-width: 91.66666667%; + } + .col-xl-12 { + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; + } + .order-xl-first { + -ms-flex-order: -1; + order: -1; + } + .order-xl-last { + -ms-flex-order: 13; + order: 13; + } + .order-xl-0 { + -ms-flex-order: 0; + order: 0; + } + .order-xl-1 { + -ms-flex-order: 1; + order: 1; + } + .order-xl-2 { + -ms-flex-order: 2; + order: 2; + } + .order-xl-3 { + -ms-flex-order: 3; + order: 3; + } + .order-xl-4 { + -ms-flex-order: 4; + order: 4; + } + .order-xl-5 { + -ms-flex-order: 5; + order: 5; + } + .order-xl-6 { + -ms-flex-order: 6; + order: 6; + } + .order-xl-7 { + -ms-flex-order: 7; + order: 7; + } + .order-xl-8 { + -ms-flex-order: 8; + order: 8; + } + .order-xl-9 { + -ms-flex-order: 9; + order: 9; + } + .order-xl-10 { + -ms-flex-order: 10; + order: 10; + } + .order-xl-11 { + -ms-flex-order: 11; + order: 11; + } + .order-xl-12 { + -ms-flex-order: 12; + order: 12; + } + .offset-xl-0 { + margin-right: 0; + } + .offset-xl-1 { + margin-right: 8.33333333%; + } + .offset-xl-2 { + margin-right: 16.66666667%; + } + .offset-xl-3 { + margin-right: 25%; + } + .offset-xl-4 { + margin-right: 33.33333333%; + } + .offset-xl-5 { + margin-right: 41.66666667%; + } + .offset-xl-6 { + margin-right: 50%; + } + .offset-xl-7 { + margin-right: 58.33333333%; + } + .offset-xl-8 { + margin-right: 66.66666667%; + } + .offset-xl-9 { + margin-right: 75%; + } + .offset-xl-10 { + margin-right: 83.33333333%; + } + .offset-xl-11 { + margin-right: 91.66666667%; + } +} + +.table, .text-wrap table { + width: 100%; + margin-bottom: 1rem; + color: #495057; +} + +.table th, .text-wrap table th, +.table td, +.text-wrap table td { + padding: 0.75rem; + vertical-align: top; + border-top: 1px solid rgba(0, 40, 100, 0.12); +} + +.table thead th, .text-wrap table thead th { + vertical-align: bottom; + border-bottom: 2px solid rgba(0, 40, 100, 0.12); +} + +.table tbody + tbody, .text-wrap table tbody + tbody { + border-top: 2px solid rgba(0, 40, 100, 0.12); +} + +.table-sm th, +.table-sm td { + padding: 0.3rem; +} + +.table-bordered, .text-wrap table { + border: 1px solid rgba(0, 40, 100, 0.12); +} + +.table-bordered th, .text-wrap table th, +.table-bordered td, +.text-wrap table td { + border: 1px solid rgba(0, 40, 100, 0.12); +} + +.table-bordered thead th, .text-wrap table thead th, +.table-bordered thead td, +.text-wrap table thead td { + border-bottom-width: 2px; +} + +.table-borderless th, +.table-borderless td, +.table-borderless thead th, +.table-borderless tbody + tbody { + border: 0; +} + +.table-striped tbody tr:nth-of-type(odd) { + background-color: rgba(0, 0, 0, 0.02); +} + +.table-hover tbody tr:hover { + color: #495057; + background-color: rgba(0, 0, 0, 0.04); +} + +.table-primary, +.table-primary > th, +.table-primary > td { + background-color: #cbdbf2; +} + +.table-primary th, +.table-primary td, +.table-primary thead th, +.table-primary tbody + tbody { + border-color: #9fbce6; +} + +.table-hover .table-primary:hover { + background-color: #b7cded; +} + +.table-hover .table-primary:hover > td, +.table-hover .table-primary:hover > th { + background-color: #b7cded; +} + +.table-secondary, +.table-secondary > th, +.table-secondary > td { + background-color: #dddfe2; +} + +.table-secondary th, +.table-secondary td, +.table-secondary thead th, +.table-secondary tbody + tbody { + border-color: #c0c4c8; +} + +.table-hover .table-secondary:hover { + background-color: #cfd2d6; +} + +.table-hover .table-secondary:hover > td, +.table-hover .table-secondary:hover > th { + background-color: #cfd2d6; +} + +.table-success, +.table-success > th, +.table-success > td { + background-color: #d2ecb8; +} + +.table-success th, +.table-success td, +.table-success thead th, +.table-success tbody + tbody { + border-color: #abdb7a; +} + +.table-hover .table-success:hover { + background-color: #c5e7a4; +} + +.table-hover .table-success:hover > td, +.table-hover .table-success:hover > th { + background-color: #c5e7a4; +} + +.table-info, +.table-info > th, +.table-info > td { + background-color: #cbe7fb; +} + +.table-info th, +.table-info td, +.table-info thead th, +.table-info tbody + tbody { + border-color: #9ed3f8; +} + +.table-hover .table-info:hover { + background-color: #b3dcf9; +} + +.table-hover .table-info:hover > td, +.table-hover .table-info:hover > th { + background-color: #b3dcf9; +} + +.table-warning, +.table-warning > th, +.table-warning > td { + background-color: #fbeebc; +} + +.table-warning th, +.table-warning td, +.table-warning thead th, +.table-warning tbody + tbody { + border-color: #f8e082; +} + +.table-hover .table-warning:hover { + background-color: #fae8a4; +} + +.table-hover .table-warning:hover > td, +.table-hover .table-warning:hover > th { + background-color: #fae8a4; +} + +.table-danger, +.table-danger > th, +.table-danger > td { + background-color: #f1c1c0; +} + +.table-danger th, +.table-danger td, +.table-danger thead th, +.table-danger tbody + tbody { + border-color: #e58b8b; +} + +.table-hover .table-danger:hover { + background-color: #ecacab; +} + +.table-hover .table-danger:hover > td, +.table-hover .table-danger:hover > th { + background-color: #ecacab; +} + +.table-light, +.table-light > th, +.table-light > td { + background-color: #fdfdfe; +} + +.table-light th, +.table-light td, +.table-light thead th, +.table-light tbody + tbody { + border-color: #fbfcfc; +} + +.table-hover .table-light:hover { + background-color: #ececf6; +} + +.table-hover .table-light:hover > td, +.table-hover .table-light:hover > th { + background-color: #ececf6; +} + +.table-dark, +.table-dark > th, +.table-dark > td { + background-color: #c6c8ca; +} + +.table-dark th, +.table-dark td, +.table-dark thead th, +.table-dark tbody + tbody { + border-color: #95999c; +} + +.table-hover .table-dark:hover { + background-color: #b9bbbe; +} + +.table-hover .table-dark:hover > td, +.table-hover .table-dark:hover > th { + background-color: #b9bbbe; +} + +.table-active, +.table-active > th, +.table-active > td { + background-color: rgba(0, 0, 0, 0.04); +} + +.table-hover .table-active:hover { + background-color: rgba(0, 0, 0, 0.04); +} + +.table-hover .table-active:hover > td, +.table-hover .table-active:hover > th { + background-color: rgba(0, 0, 0, 0.04); +} + +.table .thead-dark th, .text-wrap table .thead-dark th { + color: #fff; + background-color: #343a40; + border-color: #454d55; +} + +.table .thead-light th, .text-wrap table .thead-light th { + color: #495057; + background-color: #e9ecef; + border-color: rgba(0, 40, 100, 0.12); +} + +.table-dark { + color: #fff; + background-color: #343a40; +} + +.table-dark th, +.table-dark td, +.table-dark thead th { + border-color: #454d55; +} + +.table-dark.table-bordered, .text-wrap table.table-dark { + border: 0; +} + +.table-dark.table-striped tbody tr:nth-of-type(odd) { + background-color: rgba(255, 255, 255, 0.05); +} + +.table-dark.table-hover tbody tr:hover { + color: #fff; + background-color: rgba(255, 255, 255, 0.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, .text-wrap .table-responsive-sm > table { + 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, .text-wrap .table-responsive-md > table { + 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, .text-wrap .table-responsive-lg > table { + border: 0; + } +} + +@media (max-width: 1279.98px) { + .table-responsive-xl { + display: block; + width: 100%; + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } + .table-responsive-xl > .table-bordered, .text-wrap .table-responsive-xl > table { + border: 0; + } +} + +.table-responsive { + display: block; + width: 100%; + overflow-x: auto; + -webkit-overflow-scrolling: touch; +} + +.table-responsive > .table-bordered, .text-wrap .table-responsive > table { + border: 0; +} + +.form-control, .dataTables_wrapper .dataTables_length select, .dataTables_wrapper .dataTables_filter input { + display: block; + width: 100%; + height: 2.375rem; + padding: 0.375rem 0.75rem; + font-size: 0.9375rem; + font-weight: 400; + line-height: 1.6; + color: #495057; + background-color: #fff; + background-clip: padding-box; + border: 1px solid rgba(0, 40, 100, 0.12); + border-radius: 3px; + transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} + +@media (prefers-reduced-motion: reduce) { + .form-control, .dataTables_wrapper .dataTables_length select, .dataTables_wrapper .dataTables_filter input { + transition: none; + } +} + +.form-control::-ms-expand, .dataTables_wrapper .dataTables_length select::-ms-expand, .dataTables_wrapper .dataTables_filter input::-ms-expand { + background-color: transparent; + border: 0; +} + +.form-control:focus, .dataTables_wrapper .dataTables_length select:focus, .dataTables_wrapper .dataTables_filter input:focus { + color: #495057; + background-color: #fff; + border-color: #1991eb; + outline: 0; + box-shadow: 0 0 0 2px rgba(70, 127, 207, 0.25); +} + +.form-control::-webkit-input-placeholder, .dataTables_wrapper .dataTables_length select::-webkit-input-placeholder, .dataTables_wrapper .dataTables_filter input::-webkit-input-placeholder { + color: #adb5bd; + opacity: 1; +} + +.form-control::-moz-placeholder, .dataTables_wrapper .dataTables_length select::-moz-placeholder, .dataTables_wrapper .dataTables_filter input::-moz-placeholder { + color: #adb5bd; + opacity: 1; +} + +.form-control::-ms-input-placeholder, .dataTables_wrapper .dataTables_length select::-ms-input-placeholder, .dataTables_wrapper .dataTables_filter input::-ms-input-placeholder { + color: #adb5bd; + opacity: 1; +} + +.form-control::placeholder, .dataTables_wrapper .dataTables_length select::placeholder, .dataTables_wrapper .dataTables_filter input::placeholder { + color: #adb5bd; + opacity: 1; +} + +.form-control:disabled, .dataTables_wrapper .dataTables_length select:disabled, .dataTables_wrapper .dataTables_filter input:disabled, .form-control[readonly], .dataTables_wrapper .dataTables_length select[readonly], .dataTables_wrapper .dataTables_filter input[readonly] { + background-color: #f8f9fa; + opacity: 1; +} + +select.form-control:focus::-ms-value, .dataTables_wrapper .dataTables_length select:focus::-ms-value { + color: #495057; + background-color: #fff; +} + +.form-control-file, +.form-control-range { + display: block; + width: 100%; +} + +.col-form-label { + padding-top: calc(0.375rem + 1px); + padding-bottom: calc(0.375rem + 1px); + margin-bottom: 0; + font-size: inherit; + line-height: 1.6; +} + +.col-form-label-lg { + padding-top: calc(0.5rem + 1px); + padding-bottom: calc(0.5rem + 1px); + font-size: 1.125rem; + line-height: 1.44444444; +} + +.col-form-label-sm { + padding-top: calc(0.25rem + 1px); + padding-bottom: calc(0.25rem + 1px); + font-size: 0.875rem; + line-height: 1.14285714; +} + +.form-control-plaintext { + display: block; + width: 100%; + padding-top: 0.375rem; + padding-bottom: 0.375rem; + margin-bottom: 0; + line-height: 1.6; + color: #495057; + background-color: transparent; + border: solid transparent; + border-width: 1px 0; +} + +.form-control-plaintext.form-control-sm, .form-control-plaintext.form-control-lg { + padding-left: 0; + padding-right: 0; +} + +.form-control-sm { + height: calc(1.14285714em + 0.5rem + 2px); + padding: 0.25rem 0.5rem; + font-size: 0.875rem; + line-height: 1.14285714; + border-radius: 3px; +} + +.form-control-lg { + height: calc(1.44444444em + 1rem + 2px); + padding: 0.5rem 1rem; + font-size: 1.125rem; + line-height: 1.44444444; + border-radius: 3px; +} + +select.form-control[size], .dataTables_wrapper .dataTables_length select[size], select.form-control[multiple], .dataTables_wrapper .dataTables_length select[multiple] { + height: auto; +} + +textarea.form-control { + height: auto; +} + +.form-group { + margin-bottom: 1rem; +} + +.form-text { + display: block; + margin-top: 0.25rem; +} + +.form-row { + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + margin-left: -5px; + margin-right: -5px; +} + +.form-row > .col, +.form-row > [class*="col-"] { + padding-left: 5px; + padding-right: 5px; +} + +.form-check { + position: relative; + display: block; + padding-right: 1.25rem; +} + +.form-check-input { + position: absolute; + margin-top: 0.3rem; + margin-right: -1.25rem; +} + +.form-check-input:disabled ~ .form-check-label { + color: #9aa0ac; +} + +.form-check-label { + margin-bottom: 0; +} + +.form-check-inline { + display: -ms-inline-flexbox; + display: inline-flex; + -ms-flex-align: center; + align-items: center; + padding-right: 0; + margin-left: 0.75rem; +} + +.form-check-inline .form-check-input { + position: static; + margin-top: 0; + margin-left: 0.3125rem; + margin-right: 0; +} + +.valid-feedback { + display: none; + width: 100%; + margin-top: 0.25rem; + font-size: 87.5%; + color: #5eba00; +} + +.valid-tooltip { + position: absolute; + top: 100%; + z-index: 5; + display: none; + max-width: 100%; + padding: 0.25rem 0.5rem; + margin-top: .1rem; + font-size: 0.875rem; + line-height: 1.5; + color: #fff; + background-color: rgba(94, 186, 0, 0.9); + border-radius: 3px; +} + +.was-validated .form-control:valid, .was-validated .dataTables_wrapper .dataTables_length select:valid, .dataTables_wrapper .dataTables_length .was-validated select:valid, .was-validated .dataTables_wrapper .dataTables_filter input:valid, .dataTables_wrapper .dataTables_filter .was-validated input:valid, .form-control.is-valid, .dataTables_wrapper .dataTables_length select.is-valid, .dataTables_wrapper .dataTables_filter input.is-valid { + border-color: #5eba00; + padding-left: calc(1.6em + 0.75rem); + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%235eba00' 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: center left calc(0.4em + 0.1875rem); + background-size: calc(0.8em + 0.375rem) calc(0.8em + 0.375rem); +} + +.was-validated .form-control:valid:focus, .was-validated .dataTables_wrapper .dataTables_length select:valid:focus, .dataTables_wrapper .dataTables_length .was-validated select:valid:focus, .was-validated .dataTables_wrapper .dataTables_filter input:valid:focus, .dataTables_wrapper .dataTables_filter .was-validated input:valid:focus, .form-control.is-valid:focus, .dataTables_wrapper .dataTables_length select.is-valid:focus, .dataTables_wrapper .dataTables_filter input.is-valid:focus { + border-color: #5eba00; + box-shadow: 0 0 0 2px rgba(94, 186, 0, 0.25); +} + +.was-validated .form-control:valid ~ .valid-feedback, .was-validated .dataTables_wrapper .dataTables_length select:valid ~ .valid-feedback, .dataTables_wrapper .dataTables_length .was-validated select:valid ~ .valid-feedback, .was-validated .dataTables_wrapper .dataTables_filter input:valid ~ .valid-feedback, .dataTables_wrapper .dataTables_filter .was-validated input:valid ~ .valid-feedback, +.was-validated .form-control:valid ~ .valid-tooltip, +.was-validated .dataTables_wrapper .dataTables_length select:valid ~ .valid-tooltip, +.dataTables_wrapper .dataTables_length .was-validated select:valid ~ .valid-tooltip, +.was-validated .dataTables_wrapper .dataTables_filter input:valid ~ .valid-tooltip, +.dataTables_wrapper .dataTables_filter .was-validated input:valid ~ .valid-tooltip, .form-control.is-valid ~ .valid-feedback, .dataTables_wrapper .dataTables_length select.is-valid ~ .valid-feedback, .dataTables_wrapper .dataTables_filter input.is-valid ~ .valid-feedback, +.form-control.is-valid ~ .valid-tooltip, +.dataTables_wrapper .dataTables_length select.is-valid ~ .valid-tooltip, +.dataTables_wrapper .dataTables_filter input.is-valid ~ .valid-tooltip { + display: block; +} + +.was-validated textarea.form-control:valid, textarea.form-control.is-valid { + padding-left: calc(1.6em + 0.75rem); + background-position: top calc(0.4em + 0.1875rem) left calc(0.4em + 0.1875rem); +} + +.was-validated .custom-select:valid, .was-validated .dataTables_wrapper .dataTables_length select:valid, .dataTables_wrapper .dataTables_length .was-validated select:valid, .custom-select.is-valid, .dataTables_wrapper .dataTables_length select.is-valid { + border-color: #5eba00; + padding-left: calc((1em + 1rem) * 3 / 4 + 1.75rem); + background: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 5'%3E%3Cpath fill='#999' d='M0 0L10 0L5 5L0 0'/%3E%3C/svg%3E") no-repeat left 0.75rem center/8px 10px, url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%235eba00' 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(0.8em + 0.375rem) calc(0.8em + 0.375rem); +} + +.was-validated .custom-select:valid:focus, .was-validated .dataTables_wrapper .dataTables_length select:valid:focus, .dataTables_wrapper .dataTables_length .was-validated select:valid:focus, .custom-select.is-valid:focus, .dataTables_wrapper .dataTables_length select.is-valid:focus { + border-color: #5eba00; + box-shadow: 0 0 0 2px rgba(94, 186, 0, 0.25); +} + +.was-validated .custom-select:valid ~ .valid-feedback, .was-validated .dataTables_wrapper .dataTables_length select:valid ~ .valid-feedback, .dataTables_wrapper .dataTables_length .was-validated select:valid ~ .valid-feedback, +.was-validated .custom-select:valid ~ .valid-tooltip, +.was-validated .dataTables_wrapper .dataTables_length select:valid ~ .valid-tooltip, +.dataTables_wrapper .dataTables_length .was-validated select:valid ~ .valid-tooltip, .custom-select.is-valid ~ .valid-feedback, .dataTables_wrapper .dataTables_length select.is-valid ~ .valid-feedback, +.custom-select.is-valid ~ .valid-tooltip, +.dataTables_wrapper .dataTables_length select.is-valid ~ .valid-tooltip { + display: block; +} + +.was-validated .form-control-file:valid ~ .valid-feedback, +.was-validated .form-control-file:valid ~ .valid-tooltip, .form-control-file.is-valid ~ .valid-feedback, +.form-control-file.is-valid ~ .valid-tooltip { + display: block; +} + +.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label { + color: #5eba00; +} + +.was-validated .form-check-input:valid ~ .valid-feedback, +.was-validated .form-check-input:valid ~ .valid-tooltip, .form-check-input.is-valid ~ .valid-feedback, +.form-check-input.is-valid ~ .valid-tooltip { + display: block; +} + +.was-validated .custom-control-input:valid ~ .custom-control-label, .custom-control-input.is-valid ~ .custom-control-label { + color: #5eba00; +} + +.was-validated .custom-control-input:valid ~ .custom-control-label::before, .custom-control-input.is-valid ~ .custom-control-label::before { + border-color: #5eba00; +} + +.was-validated .custom-control-input:valid ~ .valid-feedback, +.was-validated .custom-control-input:valid ~ .valid-tooltip, .custom-control-input.is-valid ~ .valid-feedback, +.custom-control-input.is-valid ~ .valid-tooltip { + display: block; +} + +.was-validated .custom-control-input:valid:checked ~ .custom-control-label::before, .custom-control-input.is-valid:checked ~ .custom-control-label::before { + border-color: #78ed00; + background-color: #78ed00; +} + +.was-validated .custom-control-input:valid:focus ~ .custom-control-label::before, .custom-control-input.is-valid:focus ~ .custom-control-label::before { + box-shadow: 0 0 0 2px rgba(94, 186, 0, 0.25); +} + +.was-validated .custom-control-input:valid:focus:not(:checked) ~ .custom-control-label::before, .custom-control-input.is-valid:focus:not(:checked) ~ .custom-control-label::before { + border-color: #5eba00; +} + +.was-validated .custom-file-input:valid ~ .custom-file-label, .custom-file-input.is-valid ~ .custom-file-label { + border-color: #5eba00; +} + +.was-validated .custom-file-input:valid ~ .valid-feedback, +.was-validated .custom-file-input:valid ~ .valid-tooltip, .custom-file-input.is-valid ~ .valid-feedback, +.custom-file-input.is-valid ~ .valid-tooltip { + display: block; +} + +.was-validated .custom-file-input:valid:focus ~ .custom-file-label, .custom-file-input.is-valid:focus ~ .custom-file-label { + border-color: #5eba00; + box-shadow: 0 0 0 2px rgba(94, 186, 0, 0.25); +} + +.invalid-feedback { + display: none; + width: 100%; + margin-top: 0.25rem; + font-size: 87.5%; + color: #cd201f; +} + +.invalid-tooltip { + position: absolute; + top: 100%; + z-index: 5; + display: none; + max-width: 100%; + padding: 0.25rem 0.5rem; + margin-top: .1rem; + font-size: 0.875rem; + line-height: 1.5; + color: #fff; + background-color: rgba(205, 32, 31, 0.9); + border-radius: 3px; +} + +.was-validated .form-control:invalid, .was-validated .dataTables_wrapper .dataTables_length select:invalid, .dataTables_wrapper .dataTables_length .was-validated select:invalid, .was-validated .dataTables_wrapper .dataTables_filter input:invalid, .dataTables_wrapper .dataTables_filter .was-validated input:invalid, .form-control.is-invalid, .dataTables_wrapper .dataTables_length select.is-invalid, .dataTables_wrapper .dataTables_filter input.is-invalid { + border-color: #cd201f; + padding-left: calc(1.6em + 0.75rem); + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23cd201f' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23cd201f' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E"); + background-repeat: no-repeat; + background-position: center left calc(0.4em + 0.1875rem); + background-size: calc(0.8em + 0.375rem) calc(0.8em + 0.375rem); +} + +.was-validated .form-control:invalid:focus, .was-validated .dataTables_wrapper .dataTables_length select:invalid:focus, .dataTables_wrapper .dataTables_length .was-validated select:invalid:focus, .was-validated .dataTables_wrapper .dataTables_filter input:invalid:focus, .dataTables_wrapper .dataTables_filter .was-validated input:invalid:focus, .form-control.is-invalid:focus, .dataTables_wrapper .dataTables_length select.is-invalid:focus, .dataTables_wrapper .dataTables_filter input.is-invalid:focus { + border-color: #cd201f; + box-shadow: 0 0 0 2px rgba(205, 32, 31, 0.25); +} + +.was-validated .form-control:invalid ~ .invalid-feedback, .was-validated .dataTables_wrapper .dataTables_length select:invalid ~ .invalid-feedback, .dataTables_wrapper .dataTables_length .was-validated select:invalid ~ .invalid-feedback, .was-validated .dataTables_wrapper .dataTables_filter input:invalid ~ .invalid-feedback, .dataTables_wrapper .dataTables_filter .was-validated input:invalid ~ .invalid-feedback, +.was-validated .form-control:invalid ~ .invalid-tooltip, +.was-validated .dataTables_wrapper .dataTables_length select:invalid ~ .invalid-tooltip, +.dataTables_wrapper .dataTables_length .was-validated select:invalid ~ .invalid-tooltip, +.was-validated .dataTables_wrapper .dataTables_filter input:invalid ~ .invalid-tooltip, +.dataTables_wrapper .dataTables_filter .was-validated input:invalid ~ .invalid-tooltip, .form-control.is-invalid ~ .invalid-feedback, .dataTables_wrapper .dataTables_length select.is-invalid ~ .invalid-feedback, .dataTables_wrapper .dataTables_filter input.is-invalid ~ .invalid-feedback, +.form-control.is-invalid ~ .invalid-tooltip, +.dataTables_wrapper .dataTables_length select.is-invalid ~ .invalid-tooltip, +.dataTables_wrapper .dataTables_filter input.is-invalid ~ .invalid-tooltip { + display: block; +} + +.was-validated textarea.form-control:invalid, textarea.form-control.is-invalid { + padding-left: calc(1.6em + 0.75rem); + background-position: top calc(0.4em + 0.1875rem) left calc(0.4em + 0.1875rem); +} + +.was-validated .custom-select:invalid, .was-validated .dataTables_wrapper .dataTables_length select:invalid, .dataTables_wrapper .dataTables_length .was-validated select:invalid, .custom-select.is-invalid, .dataTables_wrapper .dataTables_length select.is-invalid { + border-color: #cd201f; + padding-left: calc((1em + 1rem) * 3 / 4 + 1.75rem); + background: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 5'%3E%3Cpath fill='#999' d='M0 0L10 0L5 5L0 0'/%3E%3C/svg%3E") no-repeat left 0.75rem center/8px 10px, url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23cd201f' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23cd201f' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E") #fff no-repeat center right 1.75rem/calc(0.8em + 0.375rem) calc(0.8em + 0.375rem); +} + +.was-validated .custom-select:invalid:focus, .was-validated .dataTables_wrapper .dataTables_length select:invalid:focus, .dataTables_wrapper .dataTables_length .was-validated select:invalid:focus, .custom-select.is-invalid:focus, .dataTables_wrapper .dataTables_length select.is-invalid:focus { + border-color: #cd201f; + box-shadow: 0 0 0 2px rgba(205, 32, 31, 0.25); +} + +.was-validated .custom-select:invalid ~ .invalid-feedback, .was-validated .dataTables_wrapper .dataTables_length select:invalid ~ .invalid-feedback, .dataTables_wrapper .dataTables_length .was-validated select:invalid ~ .invalid-feedback, +.was-validated .custom-select:invalid ~ .invalid-tooltip, +.was-validated .dataTables_wrapper .dataTables_length select:invalid ~ .invalid-tooltip, +.dataTables_wrapper .dataTables_length .was-validated select:invalid ~ .invalid-tooltip, .custom-select.is-invalid ~ .invalid-feedback, .dataTables_wrapper .dataTables_length select.is-invalid ~ .invalid-feedback, +.custom-select.is-invalid ~ .invalid-tooltip, +.dataTables_wrapper .dataTables_length select.is-invalid ~ .invalid-tooltip { + display: block; +} + +.was-validated .form-control-file:invalid ~ .invalid-feedback, +.was-validated .form-control-file:invalid ~ .invalid-tooltip, .form-control-file.is-invalid ~ .invalid-feedback, +.form-control-file.is-invalid ~ .invalid-tooltip { + display: block; +} + +.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label { + color: #cd201f; +} + +.was-validated .form-check-input:invalid ~ .invalid-feedback, +.was-validated .form-check-input:invalid ~ .invalid-tooltip, .form-check-input.is-invalid ~ .invalid-feedback, +.form-check-input.is-invalid ~ .invalid-tooltip { + display: block; +} + +.was-validated .custom-control-input:invalid ~ .custom-control-label, .custom-control-input.is-invalid ~ .custom-control-label { + color: #cd201f; +} + +.was-validated .custom-control-input:invalid ~ .custom-control-label::before, .custom-control-input.is-invalid ~ .custom-control-label::before { + border-color: #cd201f; +} + +.was-validated .custom-control-input:invalid ~ .invalid-feedback, +.was-validated .custom-control-input:invalid ~ .invalid-tooltip, .custom-control-input.is-invalid ~ .invalid-feedback, +.custom-control-input.is-invalid ~ .invalid-tooltip { + display: block; +} + +.was-validated .custom-control-input:invalid:checked ~ .custom-control-label::before, .custom-control-input.is-invalid:checked ~ .custom-control-label::before { + border-color: #e23e3d; + background-color: #e23e3d; +} + +.was-validated .custom-control-input:invalid:focus ~ .custom-control-label::before, .custom-control-input.is-invalid:focus ~ .custom-control-label::before { + box-shadow: 0 0 0 2px rgba(205, 32, 31, 0.25); +} + +.was-validated .custom-control-input:invalid:focus:not(:checked) ~ .custom-control-label::before, .custom-control-input.is-invalid:focus:not(:checked) ~ .custom-control-label::before { + border-color: #cd201f; +} + +.was-validated .custom-file-input:invalid ~ .custom-file-label, .custom-file-input.is-invalid ~ .custom-file-label { + border-color: #cd201f; +} + +.was-validated .custom-file-input:invalid ~ .invalid-feedback, +.was-validated .custom-file-input:invalid ~ .invalid-tooltip, .custom-file-input.is-invalid ~ .invalid-feedback, +.custom-file-input.is-invalid ~ .invalid-tooltip { + display: block; +} + +.was-validated .custom-file-input:invalid:focus ~ .custom-file-label, .custom-file-input.is-invalid:focus ~ .custom-file-label { + border-color: #cd201f; + box-shadow: 0 0 0 2px rgba(205, 32, 31, 0.25); +} + +.form-inline { + display: -ms-flexbox; + display: flex; + -ms-flex-flow: row wrap; + flex-flow: row wrap; + -ms-flex-align: center; + align-items: center; +} + +.form-inline .form-check { + width: 100%; +} + +@media (min-width: 576px) { + .form-inline label { + display: -ms-flexbox; + display: flex; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: center; + justify-content: center; + margin-bottom: 0; + } + .form-inline .form-group { + display: -ms-flexbox; + display: flex; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + -ms-flex-flow: row wrap; + flex-flow: row wrap; + -ms-flex-align: center; + align-items: center; + margin-bottom: 0; + } + .form-inline .form-control, .form-inline .dataTables_wrapper .dataTables_length select, .dataTables_wrapper .dataTables_length .form-inline select, .form-inline .dataTables_wrapper .dataTables_filter input, .dataTables_wrapper .dataTables_filter .form-inline input { + display: inline-block; + width: auto; + vertical-align: middle; + } + .form-inline .form-control-plaintext { + display: inline-block; + } + .form-inline .input-group, + .form-inline .custom-select, + .form-inline .dataTables_wrapper .dataTables_length select, + .dataTables_wrapper .dataTables_length .form-inline select { + width: auto; + } + .form-inline .form-check { + display: -ms-flexbox; + display: flex; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: center; + justify-content: center; + width: auto; + padding-right: 0; + } + .form-inline .form-check-input { + position: relative; + -ms-flex-negative: 0; + flex-shrink: 0; + margin-top: 0; + margin-left: 0.25rem; + margin-right: 0; + } + .form-inline .custom-control { + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: center; + justify-content: center; + } + .form-inline .custom-control-label { + margin-bottom: 0; + } +} + +.btn, .dataTables_wrapper .dataTables_paginate .paginate_button, .dataTables_wrapper .dataTables_paginate .paginate_button.current { + display: inline-block; + font-weight: 400; + color: #495057; + text-align: center; + vertical-align: middle; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + background-color: transparent; + border: 1px solid transparent; + padding: 0.375rem 0.75rem; + font-size: 0.9375rem; + line-height: 1.84615385; + border-radius: 3px; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} + +@media (prefers-reduced-motion: reduce) { + .btn, .dataTables_wrapper .dataTables_paginate .paginate_button, .dataTables_wrapper .dataTables_paginate .paginate_button.current { + transition: none; + } +} + +.btn:hover, .dataTables_wrapper .dataTables_paginate .paginate_button:hover { + color: #495057; + text-decoration: none; +} + +.btn:focus, .dataTables_wrapper .dataTables_paginate .paginate_button:focus, .btn.focus, .dataTables_wrapper .dataTables_paginate .focus.paginate_button { + outline: 0; + box-shadow: 0 0 0 2px rgba(70, 127, 207, 0.25); +} + +.btn.disabled, .dataTables_wrapper .dataTables_paginate .disabled.paginate_button, .btn:disabled, .dataTables_wrapper .dataTables_paginate .paginate_button:disabled { + opacity: 0.65; +} + +a.btn.disabled, .dataTables_wrapper .dataTables_paginate a.disabled.paginate_button, +fieldset:disabled a.btn, +fieldset:disabled .dataTables_wrapper .dataTables_paginate a.paginate_button, +.dataTables_wrapper .dataTables_paginate fieldset:disabled a.paginate_button { + pointer-events: none; +} + +.btn-primary, .dataTables_wrapper .dataTables_paginate .paginate_button.current { + color: #fff; + background-color: #467fcf; + border-color: #467fcf; +} + +.btn-primary:hover, .dataTables_wrapper .dataTables_paginate .paginate_button.current:hover { + color: #fff; + background-color: #316cbe; + border-color: #2f66b3; +} + +.btn-primary:focus, .dataTables_wrapper .dataTables_paginate .paginate_button.current:focus, .btn-primary.focus, .dataTables_wrapper .dataTables_paginate .focus.paginate_button.current { + box-shadow: 0 0 0 2px rgba(98, 146, 214, 0.5); +} + +.btn-primary.disabled, .dataTables_wrapper .dataTables_paginate .disabled.paginate_button.current, .btn-primary:disabled, .dataTables_wrapper .dataTables_paginate .paginate_button.current:disabled { + color: #fff; + background-color: #467fcf; + border-color: #467fcf; +} + +.btn-primary:not(:disabled):not(.disabled):active, .dataTables_wrapper .dataTables_paginate .paginate_button.current:not(:disabled):not(.disabled):active, .btn-primary:not(:disabled):not(.disabled).active, .dataTables_wrapper .dataTables_paginate .paginate_button.current:not(:disabled):not(.disabled).active, +.show > .btn-primary.dropdown-toggle, +.dataTables_wrapper .dataTables_paginate .show > .dropdown-toggle.paginate_button.current { + color: #fff; + background-color: #2f66b3; + border-color: #2c60a9; +} + +.btn-primary:not(:disabled):not(.disabled):active:focus, .dataTables_wrapper .dataTables_paginate .paginate_button.current:not(:disabled):not(.disabled):active:focus, .btn-primary:not(:disabled):not(.disabled).active:focus, .dataTables_wrapper .dataTables_paginate .paginate_button.current:not(:disabled):not(.disabled).active:focus, +.show > .btn-primary.dropdown-toggle:focus, +.dataTables_wrapper .dataTables_paginate .show > .dropdown-toggle.paginate_button.current:focus { + box-shadow: 0 0 0 2px rgba(98, 146, 214, 0.5); +} + +.btn-secondary, .dataTables_wrapper .dataTables_paginate .paginate_button { + color: #fff; + background-color: #868e96; + border-color: #868e96; +} + +.btn-secondary:hover, .dataTables_wrapper .dataTables_paginate .paginate_button:hover { + color: #fff; + background-color: #727b84; + border-color: #6c757d; +} + +.btn-secondary:focus, .dataTables_wrapper .dataTables_paginate .paginate_button:focus, .btn-secondary.focus, .dataTables_wrapper .dataTables_paginate .focus.paginate_button { + box-shadow: 0 0 0 2px rgba(152, 159, 166, 0.5); +} + +.btn-secondary.disabled, .dataTables_wrapper .dataTables_paginate .disabled.paginate_button, .btn-secondary:disabled, .dataTables_wrapper .dataTables_paginate .paginate_button:disabled { + color: #fff; + background-color: #868e96; + border-color: #868e96; +} + +.btn-secondary:not(:disabled):not(.disabled):active, .dataTables_wrapper .dataTables_paginate .paginate_button:not(:disabled):not(.disabled):active, .btn-secondary:not(:disabled):not(.disabled).active, .dataTables_wrapper .dataTables_paginate .paginate_button:not(:disabled):not(.disabled).active, +.show > .btn-secondary.dropdown-toggle, +.dataTables_wrapper .dataTables_paginate .show > .dropdown-toggle.paginate_button { + color: #fff; + background-color: #6c757d; + border-color: #666e76; +} + +.btn-secondary:not(:disabled):not(.disabled):active:focus, .dataTables_wrapper .dataTables_paginate .paginate_button:not(:disabled):not(.disabled):active:focus, .btn-secondary:not(:disabled):not(.disabled).active:focus, .dataTables_wrapper .dataTables_paginate .paginate_button:not(:disabled):not(.disabled).active:focus, +.show > .btn-secondary.dropdown-toggle:focus, +.dataTables_wrapper .dataTables_paginate .show > .dropdown-toggle.paginate_button:focus { + box-shadow: 0 0 0 2px rgba(152, 159, 166, 0.5); +} + +.btn-success { + color: #fff; + background-color: #5eba00; + border-color: #5eba00; +} + +.btn-success:hover { + color: #fff; + background-color: #4b9400; + border-color: #448700; +} + +.btn-success:focus, .btn-success.focus { + box-shadow: 0 0 0 2px rgba(118, 196, 38, 0.5); +} + +.btn-success.disabled, .btn-success:disabled { + color: #fff; + background-color: #5eba00; + border-color: #5eba00; +} + +.btn-success:not(:disabled):not(.disabled):active, .btn-success:not(:disabled):not(.disabled).active, +.show > .btn-success.dropdown-toggle { + color: #fff; + background-color: #448700; + border-color: #3e7a00; +} + +.btn-success:not(:disabled):not(.disabled):active:focus, .btn-success:not(:disabled):not(.disabled).active:focus, +.show > .btn-success.dropdown-toggle:focus { + box-shadow: 0 0 0 2px rgba(118, 196, 38, 0.5); +} + +.btn-info { + color: #fff; + background-color: #45aaf2; + border-color: #45aaf2; +} + +.btn-info:hover { + color: #fff; + background-color: #219af0; + border-color: #1594ef; +} + +.btn-info:focus, .btn-info.focus { + box-shadow: 0 0 0 2px rgba(97, 183, 244, 0.5); +} + +.btn-info.disabled, .btn-info:disabled { + color: #fff; + background-color: #45aaf2; + border-color: #45aaf2; +} + +.btn-info:not(:disabled):not(.disabled):active, .btn-info:not(:disabled):not(.disabled).active, +.show > .btn-info.dropdown-toggle { + color: #fff; + background-color: #1594ef; + border-color: #108ee7; +} + +.btn-info:not(:disabled):not(.disabled):active:focus, .btn-info:not(:disabled):not(.disabled).active:focus, +.show > .btn-info.dropdown-toggle:focus { + box-shadow: 0 0 0 2px rgba(97, 183, 244, 0.5); +} + +.btn-warning { + color: #fff; + background-color: #f1c40f; + border-color: #f1c40f; +} + +.btn-warning:hover { + color: #fff; + background-color: #cea70c; + border-color: #c29d0b; +} + +.btn-warning:focus, .btn-warning.focus { + box-shadow: 0 0 0 2px rgba(243, 205, 51, 0.5); +} + +.btn-warning.disabled, .btn-warning:disabled { + color: #fff; + background-color: #f1c40f; + border-color: #f1c40f; +} + +.btn-warning:not(:disabled):not(.disabled):active, .btn-warning:not(:disabled):not(.disabled).active, +.show > .btn-warning.dropdown-toggle { + color: #fff; + background-color: #c29d0b; + border-color: #b6940b; +} + +.btn-warning:not(:disabled):not(.disabled):active:focus, .btn-warning:not(:disabled):not(.disabled).active:focus, +.show > .btn-warning.dropdown-toggle:focus { + box-shadow: 0 0 0 2px rgba(243, 205, 51, 0.5); +} + +.btn-danger { + color: #fff; + background-color: #cd201f; + border-color: #cd201f; +} + +.btn-danger:hover { + color: #fff; + background-color: #ac1b1a; + border-color: #a11918; +} + +.btn-danger:focus, .btn-danger.focus { + box-shadow: 0 0 0 2px rgba(213, 65, 65, 0.5); +} + +.btn-danger.disabled, .btn-danger:disabled { + color: #fff; + background-color: #cd201f; + border-color: #cd201f; +} + +.btn-danger:not(:disabled):not(.disabled):active, .btn-danger:not(:disabled):not(.disabled).active, +.show > .btn-danger.dropdown-toggle { + color: #fff; + background-color: #a11918; + border-color: #961717; +} + +.btn-danger:not(:disabled):not(.disabled):active:focus, .btn-danger:not(:disabled):not(.disabled).active:focus, +.show > .btn-danger.dropdown-toggle:focus { + box-shadow: 0 0 0 2px rgba(213, 65, 65, 0.5); +} + +.btn-light { + color: #495057; + background-color: #f8f9fa; + border-color: #f8f9fa; +} + +.btn-light:hover { + color: #495057; + background-color: #e2e6ea; + border-color: #dae0e5; +} + +.btn-light:focus, .btn-light.focus { + box-shadow: 0 0 0 2px rgba(222, 224, 226, 0.5); +} + +.btn-light.disabled, .btn-light:disabled { + color: #495057; + background-color: #f8f9fa; + border-color: #f8f9fa; +} + +.btn-light:not(:disabled):not(.disabled):active, .btn-light:not(:disabled):not(.disabled).active, +.show > .btn-light.dropdown-toggle { + color: #495057; + background-color: #dae0e5; + border-color: #d3d9df; +} + +.btn-light:not(:disabled):not(.disabled):active:focus, .btn-light:not(:disabled):not(.disabled).active:focus, +.show > .btn-light.dropdown-toggle:focus { + box-shadow: 0 0 0 2px rgba(222, 224, 226, 0.5); +} + +.btn-dark { + color: #fff; + background-color: #343a40; + border-color: #343a40; +} + +.btn-dark:hover { + color: #fff; + background-color: #23272b; + border-color: #1d2124; +} + +.btn-dark:focus, .btn-dark.focus { + box-shadow: 0 0 0 2px rgba(82, 88, 93, 0.5); +} + +.btn-dark.disabled, .btn-dark:disabled { + color: #fff; + background-color: #343a40; + border-color: #343a40; +} + +.btn-dark:not(:disabled):not(.disabled):active, .btn-dark:not(:disabled):not(.disabled).active, +.show > .btn-dark.dropdown-toggle { + color: #fff; + background-color: #1d2124; + border-color: #171a1d; +} + +.btn-dark:not(:disabled):not(.disabled):active:focus, .btn-dark:not(:disabled):not(.disabled).active:focus, +.show > .btn-dark.dropdown-toggle:focus { + box-shadow: 0 0 0 2px rgba(82, 88, 93, 0.5); +} + +.btn-outline-primary { + color: #467fcf; + border-color: #467fcf; +} + +.btn-outline-primary:hover { + color: #fff; + background-color: #467fcf; + border-color: #467fcf; +} + +.btn-outline-primary:focus, .btn-outline-primary.focus { + box-shadow: 0 0 0 2px rgba(70, 127, 207, 0.5); +} + +.btn-outline-primary.disabled, .btn-outline-primary:disabled { + color: #467fcf; + 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: #467fcf; + border-color: #467fcf; +} + +.btn-outline-primary:not(:disabled):not(.disabled):active:focus, .btn-outline-primary:not(:disabled):not(.disabled).active:focus, +.show > .btn-outline-primary.dropdown-toggle:focus { + box-shadow: 0 0 0 2px rgba(70, 127, 207, 0.5); +} + +.btn-outline-secondary { + color: #868e96; + border-color: #868e96; +} + +.btn-outline-secondary:hover { + color: #fff; + background-color: #868e96; + border-color: #868e96; +} + +.btn-outline-secondary:focus, .btn-outline-secondary.focus { + box-shadow: 0 0 0 2px rgba(134, 142, 150, 0.5); +} + +.btn-outline-secondary.disabled, .btn-outline-secondary:disabled { + color: #868e96; + 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: #868e96; + border-color: #868e96; +} + +.btn-outline-secondary:not(:disabled):not(.disabled):active:focus, .btn-outline-secondary:not(:disabled):not(.disabled).active:focus, +.show > .btn-outline-secondary.dropdown-toggle:focus { + box-shadow: 0 0 0 2px rgba(134, 142, 150, 0.5); +} + +.btn-outline-success { + color: #5eba00; + border-color: #5eba00; +} + +.btn-outline-success:hover { + color: #fff; + background-color: #5eba00; + border-color: #5eba00; +} + +.btn-outline-success:focus, .btn-outline-success.focus { + box-shadow: 0 0 0 2px rgba(94, 186, 0, 0.5); +} + +.btn-outline-success.disabled, .btn-outline-success:disabled { + color: #5eba00; + 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: #5eba00; + border-color: #5eba00; +} + +.btn-outline-success:not(:disabled):not(.disabled):active:focus, .btn-outline-success:not(:disabled):not(.disabled).active:focus, +.show > .btn-outline-success.dropdown-toggle:focus { + box-shadow: 0 0 0 2px rgba(94, 186, 0, 0.5); +} + +.btn-outline-info { + color: #45aaf2; + border-color: #45aaf2; +} + +.btn-outline-info:hover { + color: #fff; + background-color: #45aaf2; + border-color: #45aaf2; +} + +.btn-outline-info:focus, .btn-outline-info.focus { + box-shadow: 0 0 0 2px rgba(69, 170, 242, 0.5); +} + +.btn-outline-info.disabled, .btn-outline-info:disabled { + color: #45aaf2; + 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: #45aaf2; + border-color: #45aaf2; +} + +.btn-outline-info:not(:disabled):not(.disabled):active:focus, .btn-outline-info:not(:disabled):not(.disabled).active:focus, +.show > .btn-outline-info.dropdown-toggle:focus { + box-shadow: 0 0 0 2px rgba(69, 170, 242, 0.5); +} + +.btn-outline-warning { + color: #f1c40f; + border-color: #f1c40f; +} + +.btn-outline-warning:hover { + color: #fff; + background-color: #f1c40f; + border-color: #f1c40f; +} + +.btn-outline-warning:focus, .btn-outline-warning.focus { + box-shadow: 0 0 0 2px rgba(241, 196, 15, 0.5); +} + +.btn-outline-warning.disabled, .btn-outline-warning:disabled { + color: #f1c40f; + 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: #fff; + background-color: #f1c40f; + border-color: #f1c40f; +} + +.btn-outline-warning:not(:disabled):not(.disabled):active:focus, .btn-outline-warning:not(:disabled):not(.disabled).active:focus, +.show > .btn-outline-warning.dropdown-toggle:focus { + box-shadow: 0 0 0 2px rgba(241, 196, 15, 0.5); +} + +.btn-outline-danger { + color: #cd201f; + border-color: #cd201f; +} + +.btn-outline-danger:hover { + color: #fff; + background-color: #cd201f; + border-color: #cd201f; +} + +.btn-outline-danger:focus, .btn-outline-danger.focus { + box-shadow: 0 0 0 2px rgba(205, 32, 31, 0.5); +} + +.btn-outline-danger.disabled, .btn-outline-danger:disabled { + color: #cd201f; + 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: #cd201f; + border-color: #cd201f; +} + +.btn-outline-danger:not(:disabled):not(.disabled):active:focus, .btn-outline-danger:not(:disabled):not(.disabled).active:focus, +.show > .btn-outline-danger.dropdown-toggle:focus { + box-shadow: 0 0 0 2px rgba(205, 32, 31, 0.5); +} + +.btn-outline-light { + color: #f8f9fa; + border-color: #f8f9fa; +} + +.btn-outline-light:hover { + color: #495057; + background-color: #f8f9fa; + border-color: #f8f9fa; +} + +.btn-outline-light:focus, .btn-outline-light.focus { + box-shadow: 0 0 0 2px rgba(248, 249, 250, 0.5); +} + +.btn-outline-light.disabled, .btn-outline-light:disabled { + color: #f8f9fa; + 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: #495057; + background-color: #f8f9fa; + border-color: #f8f9fa; +} + +.btn-outline-light:not(:disabled):not(.disabled):active:focus, .btn-outline-light:not(:disabled):not(.disabled).active:focus, +.show > .btn-outline-light.dropdown-toggle:focus { + box-shadow: 0 0 0 2px rgba(248, 249, 250, 0.5); +} + +.btn-outline-dark { + color: #343a40; + border-color: #343a40; +} + +.btn-outline-dark:hover { + color: #fff; + background-color: #343a40; + border-color: #343a40; +} + +.btn-outline-dark:focus, .btn-outline-dark.focus { + box-shadow: 0 0 0 2px rgba(52, 58, 64, 0.5); +} + +.btn-outline-dark.disabled, .btn-outline-dark:disabled { + color: #343a40; + 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: #343a40; + border-color: #343a40; +} + +.btn-outline-dark:not(:disabled):not(.disabled):active:focus, .btn-outline-dark:not(:disabled):not(.disabled).active:focus, +.show > .btn-outline-dark.dropdown-toggle:focus { + box-shadow: 0 0 0 2px rgba(52, 58, 64, 0.5); +} + +.btn-link { + font-weight: 400; + color: #467fcf; + text-decoration: none; +} + +.btn-link:hover { + color: #295a9f; + text-decoration: underline; +} + +.btn-link:focus, .btn-link.focus { + text-decoration: underline; + box-shadow: none; +} + +.btn-link:disabled, .btn-link.disabled { + color: #868e96; + pointer-events: none; +} + +.btn-lg, .btn-group-lg > .btn, .dataTables_wrapper .dataTables_paginate .btn-group-lg > .paginate_button { + padding: 0.5rem 1rem; + font-size: 1.125rem; + line-height: 1.625; + border-radius: 3px; +} + +.btn-sm, .btn-group-sm > .btn, .dataTables_wrapper .dataTables_paginate .btn-group-sm > .paginate_button { + padding: 0.25rem 0.5rem; + font-size: 0.875rem; + line-height: 1.33333333; + border-radius: 3px; +} + +.btn-block { + display: block; + width: 100%; +} + +.btn-block + .btn-block { + margin-top: 0.5rem; +} + +input[type="submit"].btn-block, +input[type="reset"].btn-block, +input[type="button"].btn-block { + width: 100%; +} + +.fade { + transition: opacity 0.15s linear; +} + +@media (prefers-reduced-motion: reduce) { + .fade { + transition: none; + } +} + +.fade:not(.show) { + opacity: 0; +} + +.collapse:not(.show) { + display: none; +} + +.collapsing { + position: relative; + height: 0; + overflow: hidden; + transition: height 0.35s ease; +} + +@media (prefers-reduced-motion: reduce) { + .collapsing { + transition: none; + } +} + +.dropup, +.dropright, +.dropdown, +.dropleft { + position: relative; +} + +.dropdown-toggle { + white-space: nowrap; +} + +.dropdown-toggle::after { + display: inline-block; + margin-right: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0.3em solid; + border-left: 0.3em solid transparent; + border-bottom: 0; + border-right: 0.3em solid transparent; +} + +.dropdown-toggle:empty::after { + margin-right: 0; +} + +.dropdown-menu { + position: absolute; + top: 100%; + right: 0; + z-index: 1000; + display: none; + float: right; + min-width: 10rem; + padding: 0.5rem 0; + margin: 0.125rem 0 0; + font-size: 0.9375rem; + color: #495057; + text-align: right; + list-style: none; + background-color: #fff; + background-clip: padding-box; + border: 1px solid rgba(0, 40, 100, 0.12); + border-radius: 3px; +} + +.dropdown-menu-left { + left: auto; + right: 0; +} + +.dropdown-menu-right { + left: 0; + right: auto; +} + +@media (min-width: 576px) { + .dropdown-menu-sm-left { + left: auto; + right: 0; + } + .dropdown-menu-sm-right { + left: 0; + right: auto; + } +} + +@media (min-width: 768px) { + .dropdown-menu-md-left { + left: auto; + right: 0; + } + .dropdown-menu-md-right { + left: 0; + right: auto; + } +} + +@media (min-width: 992px) { + .dropdown-menu-lg-left { + left: auto; + right: 0; + } + .dropdown-menu-lg-right { + left: 0; + right: auto; + } +} + +@media (min-width: 1280px) { + .dropdown-menu-xl-left { + left: auto; + right: 0; + } + .dropdown-menu-xl-right { + left: 0; + right: auto; + } +} + +.dropup .dropdown-menu { + top: auto; + bottom: 100%; + margin-top: 0; + margin-bottom: 0.125rem; +} + +.dropup .dropdown-toggle::after { + display: inline-block; + margin-right: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0; + border-left: 0.3em solid transparent; + border-bottom: 0.3em solid; + border-right: 0.3em solid transparent; +} + +.dropup .dropdown-toggle:empty::after { + margin-right: 0; +} + +.dropright .dropdown-menu { + top: 0; + left: auto; + right: 100%; + margin-top: 0; + margin-right: 0.125rem; +} + +.dropright .dropdown-toggle::after { + display: inline-block; + margin-right: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0.3em solid transparent; + border-left: 0; + border-bottom: 0.3em solid transparent; + border-right: 0.3em solid; +} + +.dropright .dropdown-toggle:empty::after { + margin-right: 0; +} + +.dropright .dropdown-toggle::after { + vertical-align: 0; +} + +.dropleft .dropdown-menu { + top: 0; + left: 100%; + right: auto; + margin-top: 0; + margin-left: 0.125rem; +} + +.dropleft .dropdown-toggle::after { + display: inline-block; + margin-right: 0.255em; + vertical-align: 0.255em; + content: ""; +} + +.dropleft .dropdown-toggle::after { + display: none; +} + +.dropleft .dropdown-toggle::before { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0.3em solid transparent; + border-left: 0.3em solid; + border-bottom: 0.3em solid transparent; +} + +.dropleft .dropdown-toggle:empty::after { + margin-right: 0; +} + +.dropleft .dropdown-toggle::before { + vertical-align: 0; +} + +.dropdown-menu[x-placement^="top"], .dropdown-menu[x-placement^="right"], .dropdown-menu[x-placement^="bottom"], .dropdown-menu[x-placement^="left"] { + left: auto; + bottom: auto; +} + +.dropdown-divider { + height: 0; + margin: 0.5rem 0; + overflow: hidden; + border-top: 1px solid #e9ecef; +} + +.dropdown-item { + display: block; + width: 100%; + padding: 0.25rem 1.5rem; + clear: both; + font-weight: 400; + color: #212529; + text-align: inherit; + white-space: nowrap; + background-color: transparent; + border: 0; +} + +.dropdown-item:hover, .dropdown-item:focus { + color: #16181b; + text-decoration: none; + background-color: #f8f9fa; +} + +.dropdown-item.active, .dropdown-item:active { + color: #fff; + text-decoration: none; + background-color: #467fcf; +} + +.dropdown-item.disabled, .dropdown-item:disabled { + color: #868e96; + pointer-events: none; + background-color: transparent; +} + +.dropdown-menu.show { + display: block; +} + +.dropdown-header { + display: block; + padding: 0.5rem 1.5rem; + margin-bottom: 0; + font-size: 0.875rem; + color: #868e96; + white-space: nowrap; +} + +.dropdown-item-text { + display: block; + padding: 0.25rem 1.5rem; + color: #212529; +} + +.btn-group, +.btn-group-vertical { + position: relative; + display: -ms-inline-flexbox; + display: inline-flex; + vertical-align: middle; +} + +.btn-group > .btn, .dataTables_wrapper .dataTables_paginate .btn-group > .paginate_button, +.btn-group-vertical > .btn, +.dataTables_wrapper .dataTables_paginate .btn-group-vertical > .paginate_button { + position: relative; + -ms-flex: 1 1 auto; + flex: 1 1 auto; +} + +.btn-group > .btn:hover, .dataTables_wrapper .dataTables_paginate .btn-group > .paginate_button:hover, +.btn-group-vertical > .btn:hover, +.dataTables_wrapper .dataTables_paginate .btn-group-vertical > .paginate_button:hover { + z-index: 1; +} + +.btn-group > .btn:focus, .dataTables_wrapper .dataTables_paginate .btn-group > .paginate_button:focus, .btn-group > .btn:active, .dataTables_wrapper .dataTables_paginate .btn-group > .paginate_button:active, .btn-group > .btn.active, .dataTables_wrapper .dataTables_paginate .btn-group > .active.paginate_button, +.btn-group-vertical > .btn:focus, +.dataTables_wrapper .dataTables_paginate .btn-group-vertical > .paginate_button:focus, +.btn-group-vertical > .btn:active, +.dataTables_wrapper .dataTables_paginate .btn-group-vertical > .paginate_button:active, +.btn-group-vertical > .btn.active, +.dataTables_wrapper .dataTables_paginate .btn-group-vertical > .active.paginate_button { + z-index: 1; +} + +.btn-toolbar { + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -ms-flex-pack: start; + justify-content: flex-start; +} + +.btn-toolbar .input-group { + width: auto; +} + +.btn-group > .btn:not(:first-child), .dataTables_wrapper .dataTables_paginate .btn-group > .paginate_button:not(:first-child), +.btn-group > .btn-group:not(:first-child) { + margin-right: -1px; +} + +.btn-group > .btn:not(:last-child):not(.dropdown-toggle), .dataTables_wrapper .dataTables_paginate .btn-group > .paginate_button:not(:last-child):not(.dropdown-toggle), +.btn-group > .btn-group:not(:last-child) > .btn, +.dataTables_wrapper .dataTables_paginate .btn-group > .btn-group:not(:last-child) > .paginate_button { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.btn-group > .btn:not(:first-child), .dataTables_wrapper .dataTables_paginate .btn-group > .paginate_button:not(:first-child), +.btn-group > .btn-group:not(:first-child) > .btn, +.dataTables_wrapper .dataTables_paginate .btn-group > .btn-group:not(:first-child) > .paginate_button { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.dropdown-toggle-split { + padding-left: 0.5625rem; + padding-right: 0.5625rem; +} + +.dropdown-toggle-split::after, +.dropup .dropdown-toggle-split::after, +.dropright .dropdown-toggle-split::after { + margin-right: 0; +} + +.dropleft .dropdown-toggle-split::before { + margin-left: 0; +} + +.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split, .dataTables_wrapper .dataTables_paginate .btn-group-sm > .paginate_button + .dropdown-toggle-split { + padding-left: 0.375rem; + padding-right: 0.375rem; +} + +.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split, .dataTables_wrapper .dataTables_paginate .btn-group-lg > .paginate_button + .dropdown-toggle-split { + padding-left: 0.75rem; + padding-right: 0.75rem; +} + +.btn-group-vertical { + -ms-flex-direction: column; + flex-direction: column; + -ms-flex-align: start; + align-items: flex-start; + -ms-flex-pack: center; + justify-content: center; +} + + +.btn-group-vertical > .btn, +.dataTables_wrapper .dataTables_paginate .btn-group-vertical > .paginate_button, +.btn-group-vertical > .btn-group { + width: 100%; +} + +.btn-group-vertical > .btn:not(:first-child), .dataTables_wrapper .dataTables_paginate .btn-group-vertical > .paginate_button:not(:first-child), +.btn-group-vertical > .btn-group:not(:first-child) { + margin-top: -1px; +} + +.btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle), .dataTables_wrapper .dataTables_paginate .btn-group-vertical > .paginate_button:not(:last-child):not(.dropdown-toggle), +.btn-group-vertical > .btn-group:not(:last-child) > .btn, +.dataTables_wrapper .dataTables_paginate .btn-group-vertical > .btn-group:not(:last-child) > .paginate_button { + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} + +.btn-group-vertical > .btn:not(:first-child), .dataTables_wrapper .dataTables_paginate .btn-group-vertical > .paginate_button:not(:first-child), +.btn-group-vertical > .btn-group:not(:first-child) > .btn, +.dataTables_wrapper .dataTables_paginate .btn-group-vertical > .btn-group:not(:first-child) > .paginate_button { + border-top-right-radius: 0; + border-top-left-radius: 0; +} + +.btn-group-toggle > .btn, .dataTables_wrapper .dataTables_paginate .btn-group-toggle > .paginate_button, +.btn-group-toggle > .btn-group > .btn, +.dataTables_wrapper .dataTables_paginate .btn-group-toggle > .btn-group > .paginate_button { + margin-bottom: 0; +} + +.btn-group-toggle > .btn input[type="radio"], .dataTables_wrapper .dataTables_paginate .btn-group-toggle > .paginate_button input[type="radio"], +.btn-group-toggle > .btn input[type="checkbox"], +.dataTables_wrapper .dataTables_paginate .btn-group-toggle > .paginate_button input[type="checkbox"], +.btn-group-toggle > .btn-group > .btn input[type="radio"], +.dataTables_wrapper .dataTables_paginate .btn-group-toggle > .btn-group > .paginate_button input[type="radio"], +.btn-group-toggle > .btn-group > .btn input[type="checkbox"], +.dataTables_wrapper .dataTables_paginate .btn-group-toggle > .btn-group > .paginate_button input[type="checkbox"] { + position: absolute; + clip: rect(0, 0, 0, 0); + pointer-events: none; +} + +.input-group { + position: relative; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -ms-flex-align: stretch; + align-items: stretch; + width: 100%; +} + +.input-group > .form-control, .dataTables_wrapper .dataTables_length .input-group > select, .dataTables_wrapper .dataTables_filter .input-group > input, +.input-group > .form-control-plaintext, +.input-group > .custom-select, +.dataTables_wrapper .dataTables_length .input-group > select, +.input-group > .custom-file { + position: relative; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + width: 1%; + margin-bottom: 0; +} + +.input-group > .form-control + .form-control, .dataTables_wrapper .dataTables_length .input-group > select + .form-control, .dataTables_wrapper .dataTables_filter .input-group > input + .form-control, .dataTables_wrapper .dataTables_length .input-group > .form-control + select, .dataTables_wrapper .dataTables_length .input-group > select + select, .dataTables_wrapper .dataTables_filter .dataTables_length .input-group > input + select, .dataTables_wrapper .dataTables_length .dataTables_filter .input-group > input + select, .dataTables_wrapper .dataTables_filter .input-group > .form-control + input, .dataTables_wrapper .dataTables_length .dataTables_filter .input-group > select + input, .dataTables_wrapper .dataTables_filter .dataTables_length .input-group > select + input, .dataTables_wrapper .dataTables_filter .input-group > input + input, +.input-group > .form-control + .custom-select, +.dataTables_wrapper .dataTables_length .input-group > select + .custom-select, +.dataTables_wrapper .dataTables_filter .input-group > input + .custom-select, +.dataTables_wrapper .dataTables_length .input-group > .form-control + select, +.dataTables_wrapper .dataTables_length .input-group > select + select, +.dataTables_wrapper .dataTables_filter .dataTables_length .input-group > input + select, +.dataTables_wrapper .dataTables_length .dataTables_filter .input-group > input + select, +.input-group > .form-control + .custom-file, +.dataTables_wrapper .dataTables_length .input-group > select + .custom-file, +.dataTables_wrapper .dataTables_filter .input-group > input + .custom-file, +.input-group > .form-control-plaintext + .form-control, +.dataTables_wrapper .dataTables_length .input-group > .form-control-plaintext + select, +.dataTables_wrapper .dataTables_filter .input-group > .form-control-plaintext + input, +.input-group > .form-control-plaintext + .custom-select, +.dataTables_wrapper .dataTables_length .input-group > .form-control-plaintext + select, +.input-group > .form-control-plaintext + .custom-file, +.input-group > .custom-select + .form-control, +.dataTables_wrapper .dataTables_length .input-group > select + .form-control, +.dataTables_wrapper .dataTables_length .input-group > .custom-select + select, +.dataTables_wrapper .dataTables_length .input-group > select + select, +.dataTables_wrapper .dataTables_filter .input-group > .custom-select + input, +.dataTables_wrapper .dataTables_length .dataTables_filter .input-group > select + input, +.dataTables_wrapper .dataTables_filter .dataTables_length .input-group > select + input, +.input-group > .custom-select + .custom-select, +.dataTables_wrapper .dataTables_length .input-group > select + .custom-select, +.dataTables_wrapper .dataTables_length .input-group > .custom-select + select, +.dataTables_wrapper .dataTables_length .input-group > select + select, +.input-group > .custom-select + .custom-file, +.dataTables_wrapper .dataTables_length .input-group > select + .custom-file, +.input-group > .custom-file + .form-control, +.dataTables_wrapper .dataTables_length .input-group > .custom-file + select, +.dataTables_wrapper .dataTables_filter .input-group > .custom-file + input, +.input-group > .custom-file + .custom-select, +.dataTables_wrapper .dataTables_length .input-group > .custom-file + select, +.input-group > .custom-file + .custom-file { + margin-right: -1px; +} + +.input-group > .form-control:focus, .dataTables_wrapper .dataTables_length .input-group > select:focus, .dataTables_wrapper .dataTables_filter .input-group > input:focus, +.input-group > .custom-select:focus, +.dataTables_wrapper .dataTables_length .input-group > select:focus, +.input-group > .custom-file .custom-file-input:focus ~ .custom-file-label { + z-index: 3; +} + +.input-group > .custom-file .custom-file-input:focus { + z-index: 4; +} + +.input-group > .form-control:not(:last-child), .dataTables_wrapper .dataTables_length .input-group > select:not(:last-child), .dataTables_wrapper .dataTables_filter .input-group > input:not(:last-child), +.input-group > .custom-select:not(:last-child), +.dataTables_wrapper .dataTables_length .input-group > select:not(:last-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.input-group > .form-control:not(:first-child), .dataTables_wrapper .dataTables_length .input-group > select:not(:first-child), .dataTables_wrapper .dataTables_filter .input-group > input:not(:first-child), +.input-group > .custom-select:not(:first-child), +.dataTables_wrapper .dataTables_length .input-group > select:not(:first-child) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.input-group > .custom-file { + display: -ms-flexbox; + display: flex; + -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-left-radius: 0; + border-bottom-left-radius: 0; +} + +.input-group > .custom-file:not(:first-child) .custom-file-label { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.input-group-prepend, +.input-group-append { + display: -ms-flexbox; + display: flex; +} + +.input-group-prepend .btn, .input-group-prepend .dataTables_wrapper .dataTables_paginate .paginate_button, .dataTables_wrapper .dataTables_paginate .input-group-prepend .paginate_button, +.input-group-append .btn, +.input-group-append .dataTables_wrapper .dataTables_paginate .paginate_button, +.dataTables_wrapper .dataTables_paginate .input-group-append .paginate_button { + position: relative; + z-index: 2; +} + +.input-group-prepend .btn:focus, .input-group-prepend .dataTables_wrapper .dataTables_paginate .paginate_button:focus, .dataTables_wrapper .dataTables_paginate .input-group-prepend .paginate_button:focus, +.input-group-append .btn:focus, +.input-group-append .dataTables_wrapper .dataTables_paginate .paginate_button:focus, +.dataTables_wrapper .dataTables_paginate .input-group-append .paginate_button:focus { + z-index: 3; +} + +.input-group-prepend .btn + .btn, .input-group-prepend .dataTables_wrapper .dataTables_paginate .paginate_button + .btn, .dataTables_wrapper .dataTables_paginate .input-group-prepend .paginate_button + .btn, .input-group-prepend .dataTables_wrapper .dataTables_paginate .btn + .paginate_button, .dataTables_wrapper .dataTables_paginate .input-group-prepend .btn + .paginate_button, .input-group-prepend .dataTables_wrapper .dataTables_paginate .paginate_button + .paginate_button, .dataTables_wrapper .dataTables_paginate .input-group-prepend .paginate_button + .paginate_button, +.input-group-prepend .btn + .input-group-text, +.input-group-prepend .dataTables_wrapper .dataTables_paginate .paginate_button + .input-group-text, +.dataTables_wrapper .dataTables_paginate .input-group-prepend .paginate_button + .input-group-text, +.input-group-prepend .input-group-text + .input-group-text, +.input-group-prepend .input-group-text + .btn, +.input-group-prepend .dataTables_wrapper .dataTables_paginate .input-group-text + .paginate_button, +.dataTables_wrapper .dataTables_paginate .input-group-prepend .input-group-text + .paginate_button, +.input-group-append .btn + .btn, +.input-group-append .dataTables_wrapper .dataTables_paginate .paginate_button + .btn, +.dataTables_wrapper .dataTables_paginate .input-group-append .paginate_button + .btn, +.input-group-append .dataTables_wrapper .dataTables_paginate .btn + .paginate_button, +.dataTables_wrapper .dataTables_paginate .input-group-append .btn + .paginate_button, +.input-group-append .dataTables_wrapper .dataTables_paginate .paginate_button + .paginate_button, +.dataTables_wrapper .dataTables_paginate .input-group-append .paginate_button + .paginate_button, +.input-group-append .btn + .input-group-text, +.input-group-append .dataTables_wrapper .dataTables_paginate .paginate_button + .input-group-text, +.dataTables_wrapper .dataTables_paginate .input-group-append .paginate_button + .input-group-text, +.input-group-append .input-group-text + .input-group-text, +.input-group-append .input-group-text + .btn, +.input-group-append .dataTables_wrapper .dataTables_paginate .input-group-text + .paginate_button, +.dataTables_wrapper .dataTables_paginate .input-group-append .input-group-text + .paginate_button { + margin-right: -1px; +} + +.input-group-prepend { + margin-left: -1px; +} + +.input-group-append { + margin-right: -1px; +} + +.input-group-text { + display: -ms-flexbox; + display: flex; + -ms-flex-align: center; + align-items: center; + padding: 0.375rem 0.75rem; + margin-bottom: 0; + font-size: 0.9375rem; + font-weight: 400; + line-height: 1.6; + color: #495057; + text-align: center; + white-space: nowrap; + background-color: #fbfbfc; + border: 1px solid rgba(0, 40, 100, 0.12); + border-radius: 3px; +} + +.input-group-text input[type="radio"], +.input-group-text input[type="checkbox"] { + margin-top: 0; +} + +.input-group-lg > .form-control:not(textarea), .dataTables_wrapper .dataTables_length .input-group-lg > select:not(textarea), .dataTables_wrapper .dataTables_filter .input-group-lg > input:not(textarea), +.input-group-lg > .custom-select, +.dataTables_wrapper .dataTables_length .input-group-lg > select { + height: calc(1.44444444em + 1rem + 2px); +} + +.input-group-lg > .form-control, .dataTables_wrapper .dataTables_length .input-group-lg > select, .dataTables_wrapper .dataTables_filter .input-group-lg > input, +.input-group-lg > .custom-select, +.dataTables_wrapper .dataTables_length .input-group-lg > select, +.input-group-lg > .input-group-prepend > .input-group-text, +.input-group-lg > .input-group-append > .input-group-text, +.input-group-lg > .input-group-prepend > .btn, +.dataTables_wrapper .dataTables_paginate .input-group-lg > .input-group-prepend > .paginate_button, +.input-group-lg > .input-group-append > .btn, +.dataTables_wrapper .dataTables_paginate .input-group-lg > .input-group-append > .paginate_button { + padding: 0.5rem 1rem; + font-size: 1.125rem; + line-height: 1.44444444; + border-radius: 3px; +} + +.input-group-sm > .form-control:not(textarea), .dataTables_wrapper .dataTables_length .input-group-sm > select:not(textarea), .dataTables_wrapper .dataTables_filter .input-group-sm > input:not(textarea), +.input-group-sm > .custom-select, +.dataTables_wrapper .dataTables_length .input-group-sm > select { + height: calc(1.14285714em + 0.5rem + 2px); +} + +.input-group-sm > .form-control, .dataTables_wrapper .dataTables_length .input-group-sm > select, .dataTables_wrapper .dataTables_filter .input-group-sm > input, +.input-group-sm > .custom-select, +.dataTables_wrapper .dataTables_length .input-group-sm > select, +.input-group-sm > .input-group-prepend > .input-group-text, +.input-group-sm > .input-group-append > .input-group-text, +.input-group-sm > .input-group-prepend > .btn, +.dataTables_wrapper .dataTables_paginate .input-group-sm > .input-group-prepend > .paginate_button, +.input-group-sm > .input-group-append > .btn, +.dataTables_wrapper .dataTables_paginate .input-group-sm > .input-group-append > .paginate_button { + padding: 0.25rem 0.5rem; + font-size: 0.875rem; + line-height: 1.14285714; + border-radius: 3px; +} + + +.input-group-lg > .custom-select, +.dataTables_wrapper .dataTables_length .input-group-lg > select, +.input-group-sm > .custom-select, +.dataTables_wrapper .dataTables_length .input-group-sm > select { + padding-left: 1.75rem; +} + +.input-group > .input-group-prepend > .btn, .dataTables_wrapper .dataTables_paginate .input-group > .input-group-prepend > .paginate_button, +.input-group > .input-group-prepend > .input-group-text, +.input-group > .input-group-append:not(:last-child) > .btn, +.dataTables_wrapper .dataTables_paginate .input-group > .input-group-append:not(:last-child) > .paginate_button, +.input-group > .input-group-append:not(:last-child) > .input-group-text, +.input-group > .input-group-append:last-child > .btn:not(:last-child):not(.dropdown-toggle), +.dataTables_wrapper .dataTables_paginate .input-group > .input-group-append:last-child > .paginate_button:not(:last-child):not(.dropdown-toggle), +.input-group > .input-group-append:last-child > .input-group-text:not(:last-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.input-group > .input-group-append > .btn, .dataTables_wrapper .dataTables_paginate .input-group > .input-group-append > .paginate_button, +.input-group > .input-group-append > .input-group-text, +.input-group > .input-group-prepend:not(:first-child) > .btn, +.dataTables_wrapper .dataTables_paginate .input-group > .input-group-prepend:not(:first-child) > .paginate_button, +.input-group > .input-group-prepend:not(:first-child) > .input-group-text, +.input-group > .input-group-prepend:first-child > .btn:not(:first-child), +.dataTables_wrapper .dataTables_paginate .input-group > .input-group-prepend:first-child > .paginate_button:not(:first-child), +.input-group > .input-group-prepend:first-child > .input-group-text:not(:first-child) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.custom-control { + position: relative; + display: block; + min-height: 1.40625rem; + padding-right: 1.5rem; +} + +.custom-control-inline { + display: -ms-inline-flexbox; + display: inline-flex; + margin-left: 1rem; +} + +.custom-control-input { + position: absolute; + z-index: -1; + opacity: 0; +} + +.custom-control-input:checked ~ .custom-control-label::before { + color: #fff; + border-color: #467fcf; + background-color: #467fcf; +} + +.custom-control-input:focus ~ .custom-control-label::before { + box-shadow: 0 0 0 2px rgba(70, 127, 207, 0.25); +} + +.custom-control-input:focus:not(:checked) ~ .custom-control-label::before { + border-color: #1991eb; +} + +.custom-control-input:not(:disabled):active ~ .custom-control-label::before { + color: #fff; + background-color: #d4e1f4; + border-color: #d4e1f4; +} + +.custom-control-input:disabled ~ .custom-control-label { + color: #868e96; +} + +.custom-control-input:disabled ~ .custom-control-label::before { + background-color: #f8f9fa; +} + +.custom-control-label { + position: relative; + margin-bottom: 0; + vertical-align: top; +} + +.custom-control-label::before { + position: absolute; + top: 0.203125rem; + right: -1.5rem; + display: block; + width: 1rem; + height: 1rem; + pointer-events: none; + content: ""; + background-color: #fff; + border: #adb5bd solid 1px; +} + +.custom-control-label::after { + position: absolute; + top: 0.203125rem; + right: -1.5rem; + display: block; + width: 1rem; + height: 1rem; + content: ""; + background: no-repeat 50% / 50% 50%; +} + +.custom-checkbox .custom-control-label::before { + border-radius: 3px; +} + +.custom-checkbox .custom-control-input:checked ~ .custom-control-label::after { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3e%3c/svg%3e"); +} + +.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::before { + border-color: #467fcf; + background-color: #467fcf; +} + +.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::after { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e"); +} + +.custom-checkbox .custom-control-input:disabled:checked ~ .custom-control-label::before { + background-color: rgba(70, 127, 207, 0.5); +} + +.custom-checkbox .custom-control-input:disabled:indeterminate ~ .custom-control-label::before { + background-color: rgba(70, 127, 207, 0.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,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e"); +} + +.custom-radio .custom-control-input:disabled:checked ~ .custom-control-label::before { + background-color: rgba(70, 127, 207, 0.5); +} + +.custom-switch { + padding-right: 2.25rem; +} + +.custom-switch .custom-control-label::before { + right: -2.25rem; + width: 1.75rem; + pointer-events: all; + border-radius: 0.5rem; +} + +.custom-switch .custom-control-label::after { + top: calc(0.203125rem + 2px); + right: calc(-2.25rem + 2px); + width: calc(1rem - 4px); + height: calc(1rem - 4px); + background-color: #adb5bd; + border-radius: 0.5rem; + transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-transform 0.15s ease-in-out; + transition: transform 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + transition: transform 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-transform 0.15s ease-in-out; +} + +@media (prefers-reduced-motion: reduce) { + .custom-switch .custom-control-label::after { + transition: none; + } +} + +.custom-switch .custom-control-input:checked ~ .custom-control-label::after { + background-color: #fff; + -webkit-transform: translateX(-0.75rem); + transform: translateX(-0.75rem); +} + +.custom-switch .custom-control-input:disabled:checked ~ .custom-control-label::before { + background-color: rgba(70, 127, 207, 0.5); +} + +.custom-select, .dataTables_wrapper .dataTables_length select { + display: inline-block; + width: 100%; + height: 2.375rem; + padding: 0.5rem 0.75rem 0.5rem 1.75rem; + font-size: 0.9375rem; + font-weight: 400; + line-height: 1.6; + color: #495057; + vertical-align: middle; + background: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 5'%3E%3Cpath fill='#999' d='M0 0L10 0L5 5L0 0'/%3E%3C/svg%3E") no-repeat left 0.75rem center/8px 10px; + background-color: #fff; + border: 1px solid rgba(0, 40, 100, 0.12); + border-radius: 3px; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; +} + +.custom-select:focus, .dataTables_wrapper .dataTables_length select:focus { + border-color: #1991eb; + outline: 0; + box-shadow: 0 0 0 2px rgba(70, 127, 207, 0.25); +} + +.custom-select:focus::-ms-value, .dataTables_wrapper .dataTables_length select:focus::-ms-value { + color: #495057; + background-color: #fff; +} + +.custom-select[multiple], .dataTables_wrapper .dataTables_length select[multiple], .custom-select[size]:not([size="1"]), .dataTables_wrapper .dataTables_length select[size]:not([size="1"]) { + height: auto; + padding-left: 0.75rem; + background-image: none; +} + +.custom-select:disabled, .dataTables_wrapper .dataTables_length select:disabled { + color: #868e96; + background-color: #e9ecef; +} + +.custom-select::-ms-expand, .dataTables_wrapper .dataTables_length select::-ms-expand { + display: none; +} + +.custom-select-sm { + height: calc(1.14285714em + 0.5rem + 2px); + padding-top: 0.25rem; + padding-bottom: 0.25rem; + padding-right: 0.5rem; + font-size: 0.875rem; +} + +.custom-select-lg { + height: calc(1.44444444em + 1rem + 2px); + padding-top: 0.5rem; + padding-bottom: 0.5rem; + padding-right: 1rem; + font-size: 1.125rem; +} + +.custom-file { + position: relative; + display: inline-block; + width: 100%; + height: 2.375rem; + margin-bottom: 0; +} + +.custom-file-input { + position: relative; + z-index: 2; + width: 100%; + height: 2.375rem; + margin: 0; + opacity: 0; +} + +.custom-file-input:focus ~ .custom-file-label { + border-color: #1991eb; + box-shadow: 0 0 0 2px rgba(70, 127, 207, 0.25); +} + +.custom-file-input:disabled ~ .custom-file-label { + background-color: #f8f9fa; +} + +.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 { + position: absolute; + top: 0; + left: 0; + right: 0; + z-index: 1; + height: 2.375rem; + padding: 0.375rem 0.75rem; + font-weight: 400; + line-height: 1.6; + color: #495057; + background-color: #fff; + border: 1px solid rgba(0, 40, 100, 0.12); + border-radius: 3px; +} + +.custom-file-label::after { + position: absolute; + top: 0; + left: 0; + bottom: 0; + z-index: 3; + display: block; + height: calc(1.6em + 0.75rem); + padding: 0.375rem 0.75rem; + line-height: 1.6; + color: #495057; + content: "Browse"; + background-color: #fbfbfc; + border-right: inherit; + border-radius: 3px 0 0 3px; +} + +.custom-range { + width: 100%; + height: calc(1rem + 4px); + padding: 0; + background-color: transparent; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; +} + +.custom-range:focus { + outline: none; +} + +.custom-range:focus::-webkit-slider-thumb { + box-shadow: 0 0 0 1px #f5f7fb, 0 0 0 2px rgba(70, 127, 207, 0.25); +} + +.custom-range:focus::-moz-range-thumb { + box-shadow: 0 0 0 1px #f5f7fb, 0 0 0 2px rgba(70, 127, 207, 0.25); +} + +.custom-range:focus::-ms-thumb { + box-shadow: 0 0 0 1px #f5f7fb, 0 0 0 2px rgba(70, 127, 207, 0.25); +} + +.custom-range::-moz-focus-outer { + border: 0; +} + +.custom-range::-webkit-slider-thumb { + width: 1rem; + height: 1rem; + margin-top: -0.25rem; + background-color: #467fcf; + border: 0; + border-radius: 1rem; + transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + -webkit-appearance: none; + appearance: none; +} + +@media (prefers-reduced-motion: reduce) { + .custom-range::-webkit-slider-thumb { + transition: none; + } +} + +.custom-range::-webkit-slider-thumb:active { + background-color: #d4e1f4; +} + +.custom-range::-webkit-slider-runnable-track { + width: 100%; + height: 0.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: #467fcf; + border: 0; + border-radius: 1rem; + transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + -moz-appearance: none; + appearance: none; +} + +@media (prefers-reduced-motion: reduce) { + .custom-range::-moz-range-thumb { + transition: none; + } +} + +.custom-range::-moz-range-thumb:active { + background-color: #d4e1f4; +} + +.custom-range::-moz-range-track { + width: 100%; + height: 0.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-left: 2px; + margin-right: 2px; + background-color: #467fcf; + border: 0; + border-radius: 1rem; + transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + appearance: none; +} + +@media (prefers-reduced-motion: reduce) { + .custom-range::-ms-thumb { + transition: none; + } +} + +.custom-range::-ms-thumb:active { + background-color: #d4e1f4; +} + +.custom-range::-ms-track { + width: 100%; + height: 0.5rem; + color: transparent; + cursor: pointer; + background-color: transparent; + border-color: transparent; + border-width: 0.5rem; +} + +.custom-range::-ms-fill-lower { + background-color: #dee2e6; + border-radius: 1rem; +} + +.custom-range::-ms-fill-upper { + margin-left: 15px; + background-color: #dee2e6; + border-radius: 1rem; +} + +.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, .dataTables_wrapper .dataTables_length select { + transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} + +@media (prefers-reduced-motion: reduce) { + .custom-control-label::before, + .custom-file-label, .custom-select, .dataTables_wrapper .dataTables_length select { + transition: none; + } +} + +.nav { + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + padding-right: 0; + margin-bottom: 0; + list-style: none; +} + +.nav-link { + display: block; + padding: 0.5rem 1rem; +} + +.nav-link:hover, .nav-link:focus { + text-decoration: none; +} + +.nav-link.disabled { + color: #868e96; + 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-right-radius: 3px; + border-top-left-radius: 3px; +} + +.nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus { + border-color: #e9ecef #e9ecef #dee2e6; +} + +.nav-tabs .nav-link.disabled { + color: #868e96; + background-color: transparent; + border-color: transparent; +} + +.nav-tabs .nav-link.active, +.nav-tabs .nav-item.show .nav-link { + color: #495057; + background-color: transparent; + border-color: #dee2e6 #dee2e6 transparent; +} + +.nav-tabs .dropdown-menu { + margin-top: -1px; + border-top-right-radius: 0; + border-top-left-radius: 0; +} + +.nav-pills .nav-link { + border-radius: 3px; +} + +.nav-pills .nav-link.active, +.nav-pills .show > .nav-link { + color: #fff; + background-color: #467fcf; +} + +.nav-fill .nav-item { + -ms-flex: 1 1 auto; + flex: 1 1 auto; + text-align: center; +} + +.nav-justified .nav-item { + -ms-flex-preferred-size: 0; + flex-basis: 0; + -ms-flex-positive: 1; + flex-grow: 1; + text-align: center; +} + +.tab-content > .tab-pane { + display: none; +} + +.tab-content > .active { + display: block; +} + +.navbar { + position: relative; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: justify; + justify-content: space-between; + padding: 0.5rem 1rem; +} + +.navbar > .container, +.navbar > .container-fluid { + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: justify; + justify-content: space-between; +} + +.navbar-brand { + display: inline-block; + padding-top: 0.359375rem; + padding-bottom: 0.359375rem; + margin-left: 1rem; + font-size: 1.125rem; + line-height: inherit; + white-space: nowrap; +} + +.navbar-brand:hover, .navbar-brand:focus { + text-decoration: none; +} + +.navbar-nav { + display: -ms-flexbox; + display: flex; + -ms-flex-direction: column; + flex-direction: column; + padding-right: 0; + margin-bottom: 0; + list-style: none; +} + +.navbar-nav .nav-link { + padding-left: 0; + padding-right: 0; +} + +.navbar-nav .dropdown-menu { + position: static; + float: none; +} + +.navbar-text { + display: inline-block; + padding-top: 0.5rem; + padding-bottom: 0.5rem; +} + +.navbar-collapse { + -ms-flex-preferred-size: 100%; + flex-basis: 100%; + -ms-flex-positive: 1; + flex-grow: 1; + -ms-flex-align: center; + align-items: center; +} + +.navbar-toggler { + padding: 0.25rem 0.75rem; + font-size: 1.125rem; + line-height: 1; + background-color: transparent; + border: 1px solid transparent; + border-radius: 3px; +} + +.navbar-toggler:hover, .navbar-toggler:focus { + text-decoration: none; +} + +.navbar-toggler-icon { + display: inline-block; + width: 1.5em; + height: 1.5em; + vertical-align: middle; + content: ""; + background: no-repeat center center; + background-size: 100% 100%; +} + +@media (max-width: 575.98px) { + .navbar-expand-sm > .container, + .navbar-expand-sm > .container-fluid { + padding-left: 0; + padding-right: 0; + } +} + +@media (min-width: 576px) { + .navbar-expand-sm { + -ms-flex-flow: row nowrap; + flex-flow: row nowrap; + -ms-flex-pack: start; + justify-content: flex-start; + } + .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-left: 0.5rem; + padding-right: 0.5rem; + } + .navbar-expand-sm > .container, + .navbar-expand-sm > .container-fluid { + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + } + .navbar-expand-sm .navbar-collapse { + 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 { + padding-left: 0; + padding-right: 0; + } +} + +@media (min-width: 768px) { + .navbar-expand-md { + -ms-flex-flow: row nowrap; + flex-flow: row nowrap; + -ms-flex-pack: start; + justify-content: flex-start; + } + .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-left: 0.5rem; + padding-right: 0.5rem; + } + .navbar-expand-md > .container, + .navbar-expand-md > .container-fluid { + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + } + .navbar-expand-md .navbar-collapse { + 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 { + padding-left: 0; + padding-right: 0; + } +} + +@media (min-width: 992px) { + .navbar-expand-lg { + -ms-flex-flow: row nowrap; + flex-flow: row nowrap; + -ms-flex-pack: start; + justify-content: flex-start; + } + .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-left: 0.5rem; + padding-right: 0.5rem; + } + .navbar-expand-lg > .container, + .navbar-expand-lg > .container-fluid { + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + } + .navbar-expand-lg .navbar-collapse { + 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: 1279.98px) { + .navbar-expand-xl > .container, + .navbar-expand-xl > .container-fluid { + padding-left: 0; + padding-right: 0; + } +} + +@media (min-width: 1280px) { + .navbar-expand-xl { + -ms-flex-flow: row nowrap; + flex-flow: row nowrap; + -ms-flex-pack: start; + justify-content: flex-start; + } + .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-left: 0.5rem; + padding-right: 0.5rem; + } + .navbar-expand-xl > .container, + .navbar-expand-xl > .container-fluid { + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + } + .navbar-expand-xl .navbar-collapse { + display: -ms-flexbox !important; + display: flex !important; + -ms-flex-preferred-size: auto; + flex-basis: auto; + } + .navbar-expand-xl .navbar-toggler { + display: none; + } +} + +.navbar-expand { + -ms-flex-flow: row nowrap; + flex-flow: row nowrap; + -ms-flex-pack: start; + justify-content: flex-start; +} + +.navbar-expand > .container, +.navbar-expand > .container-fluid { + padding-left: 0; + padding-right: 0; +} + +.navbar-expand .navbar-nav { + -ms-flex-direction: row; + flex-direction: row; +} + +.navbar-expand .navbar-nav .dropdown-menu { + position: absolute; +} + +.navbar-expand .navbar-nav .nav-link { + padding-left: 0.5rem; + padding-right: 0.5rem; +} + +.navbar-expand > .container, +.navbar-expand > .container-fluid { + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; +} + +.navbar-expand .navbar-collapse { + 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 { + color: rgba(0, 0, 0, 0.9); +} + +.navbar-light .navbar-brand:hover, .navbar-light .navbar-brand:focus { + color: rgba(0, 0, 0, 0.9); +} + +.navbar-light .navbar-nav .nav-link { + color: rgba(0, 0, 0, 0.5); +} + +.navbar-light .navbar-nav .nav-link:hover, .navbar-light .navbar-nav .nav-link:focus { + color: rgba(0, 0, 0, 0.7); +} + +.navbar-light .navbar-nav .nav-link.disabled { + color: rgba(0, 0, 0, 0.3); +} + +.navbar-light .navbar-nav .show > .nav-link, +.navbar-light .navbar-nav .active > .nav-link, +.navbar-light .navbar-nav .nav-link.show, +.navbar-light .navbar-nav .nav-link.active { + color: rgba(0, 0, 0, 0.9); +} + +.navbar-light .navbar-toggler { + color: rgba(0, 0, 0, 0.5); + border-color: rgba(0, 0, 0, 0.1); +} + +.navbar-light .navbar-toggler-icon { + background-image: url("data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); +} + +.navbar-light .navbar-text { + color: rgba(0, 0, 0, 0.5); +} + +.navbar-light .navbar-text a { + color: rgba(0, 0, 0, 0.9); +} + +.navbar-light .navbar-text a:hover, .navbar-light .navbar-text a:focus { + color: rgba(0, 0, 0, 0.9); +} + +.navbar-dark .navbar-brand { + color: #fff; +} + +.navbar-dark .navbar-brand:hover, .navbar-dark .navbar-brand:focus { + color: #fff; +} + +.navbar-dark .navbar-nav .nav-link { + color: rgba(255, 255, 255, 0.5); +} + +.navbar-dark .navbar-nav .nav-link:hover, .navbar-dark .navbar-nav .nav-link:focus { + color: rgba(255, 255, 255, 0.75); +} + +.navbar-dark .navbar-nav .nav-link.disabled { + color: rgba(255, 255, 255, 0.25); +} + +.navbar-dark .navbar-nav .show > .nav-link, +.navbar-dark .navbar-nav .active > .nav-link, +.navbar-dark .navbar-nav .nav-link.show, +.navbar-dark .navbar-nav .nav-link.active { + color: #fff; +} + +.navbar-dark .navbar-toggler { + color: rgba(255, 255, 255, 0.5); + border-color: rgba(255, 255, 255, 0.1); +} + +.navbar-dark .navbar-toggler-icon { + background-image: url("data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); +} + +.navbar-dark .navbar-text { + color: rgba(255, 255, 255, 0.5); +} + +.navbar-dark .navbar-text a { + color: #fff; +} + +.navbar-dark .navbar-text a:hover, .navbar-dark .navbar-text a:focus { + color: #fff; +} + +.card { + position: relative; + display: -ms-flexbox; + display: flex; + -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, 40, 100, 0.12); + border-radius: 3px; +} + +.card > hr { + margin-left: 0; + margin-right: 0; +} + +.card > .list-group:first-child .list-group-item:first-child { + border-top-right-radius: 3px; + border-top-left-radius: 3px; +} + +.card > .list-group:last-child .list-group-item:last-child { + border-bottom-left-radius: 3px; + border-bottom-right-radius: 3px; +} + +.card-body { + -ms-flex: 1 1 auto; + flex: 1 1 auto; + padding: 1.5rem; +} + +.card-title { + margin-bottom: 1.5rem; +} + +.card-subtitle { + margin-top: -0.75rem; + margin-bottom: 0; +} + +.card-text:last-child { + margin-bottom: 0; +} + +.card-link:hover { + text-decoration: none; +} + +.card-link + .card-link { + margin-right: 1.5rem; +} + +.card-header { + padding: 1.5rem 1.5rem; + margin-bottom: 0; + background-color: rgba(0, 0, 0, 0.03); + border-bottom: 1px solid rgba(0, 40, 100, 0.12); +} + +.card-header:first-child { + border-radius: calc(3px - 1px) calc(3px - 1px) 0 0; +} + +.card-header + .list-group .list-group-item:first-child { + border-top: 0; +} + +.card-footer { + padding: 1.5rem 1.5rem; + background-color: rgba(0, 0, 0, 0.03); + border-top: 1px solid rgba(0, 40, 100, 0.12); +} + +.card-footer:last-child { + border-radius: 0 0 calc(3px - 1px) calc(3px - 1px); +} + +.card-header-tabs { + margin-left: -0.75rem; + margin-bottom: -1.5rem; + margin-right: -0.75rem; + border-bottom: 0; +} + +.card-header-pills { + margin-left: -0.75rem; + margin-right: -0.75rem; +} + +.card-img-overlay { + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + padding: 1.25rem; +} + +.card-img { + width: 100%; + border-radius: calc(3px - 1px); +} + +.card-img-top { + width: 100%; + border-top-right-radius: calc(3px - 1px); + border-top-left-radius: calc(3px - 1px); +} + +.card-img-bottom { + width: 100%; + border-bottom-left-radius: calc(3px - 1px); + border-bottom-right-radius: calc(3px - 1px); +} + +.card-deck { + display: -ms-flexbox; + display: flex; + -ms-flex-direction: column; + flex-direction: column; +} + +.card-deck .card { + margin-bottom: 0.75rem; +} + +@media (min-width: 576px) { + .card-deck { + -ms-flex-flow: row wrap; + flex-flow: row wrap; + margin-left: -0.75rem; + margin-right: -0.75rem; + } + .card-deck .card { + display: -ms-flexbox; + display: flex; + -ms-flex: 1 0 0%; + flex: 1 0 0%; + -ms-flex-direction: column; + flex-direction: column; + margin-left: 0.75rem; + margin-bottom: 0; + margin-right: 0.75rem; + } +} + +.card-group { + display: -ms-flexbox; + display: flex; + -ms-flex-direction: column; + flex-direction: column; +} + +.card-group > .card { + margin-bottom: 0.75rem; +} + +@media (min-width: 576px) { + .card-group { + -ms-flex-flow: row wrap; + flex-flow: row wrap; + } + .card-group > .card { + -ms-flex: 1 0 0%; + flex: 1 0 0%; + margin-bottom: 0; + } + .card-group > .card + .card { + margin-right: 0; + border-right: 0; + } + .card-group > .card:not(:last-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + } + .card-group > .card:not(:last-child) .card-img-top, + .card-group > .card:not(:last-child) .card-header { + border-top-left-radius: 0; + } + .card-group > .card:not(:last-child) .card-img-bottom, + .card-group > .card:not(:last-child) .card-footer { + border-bottom-left-radius: 0; + } + .card-group > .card:not(:first-child) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + } + .card-group > .card:not(:first-child) .card-img-top, + .card-group > .card:not(:first-child) .card-header { + border-top-right-radius: 0; + } + .card-group > .card:not(:first-child) .card-img-bottom, + .card-group > .card:not(:first-child) .card-footer { + border-bottom-right-radius: 0; + } +} + +.card-columns .card { + margin-bottom: 1.5rem; +} + +@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(:first-of-type) .card-header:first-child { + border-radius: 0; +} + +.accordion > .card:not(:first-of-type):not(:last-of-type) { + border-bottom: 0; + border-radius: 0; +} + +.accordion > .card:first-of-type { + border-bottom: 0; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} + +.accordion > .card:last-of-type { + border-top-right-radius: 0; + border-top-left-radius: 0; +} + +.accordion > .card .card-header { + margin-bottom: -1px; +} + +.breadcrumb { + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + padding: 0.75rem 1rem; + margin-bottom: 1rem; + list-style: none; + background-color: #e9ecef; + border-radius: 3px; +} + +.breadcrumb-item + .breadcrumb-item { + padding-right: 0.5rem; +} + +.breadcrumb-item + .breadcrumb-item::before { + display: inline-block; + padding-left: 0.5rem; + color: #868e96; + content: "/"; +} + +.breadcrumb-item + .breadcrumb-item:hover::before { + text-decoration: underline; +} + +.breadcrumb-item + .breadcrumb-item:hover::before { + text-decoration: none; +} + +.breadcrumb-item.active { + color: #868e96; +} + +.pagination { + display: -ms-flexbox; + display: flex; + padding-right: 0; + list-style: none; + border-radius: 3px; +} + +.page-link { + position: relative; + display: block; + padding: 0.5rem 0.75rem; + margin-right: -1px; + line-height: 1.25; + color: #495057; + background-color: #fff; + border: 1px solid #dee2e6; +} + +.page-link:hover { + z-index: 2; + color: #295a9f; + text-decoration: none; + background-color: #e9ecef; + border-color: #dee2e6; +} + +.page-link:focus { + z-index: 2; + outline: 0; + box-shadow: 0 0 0 2px rgba(70, 127, 207, 0.25); +} + +.page-item:first-child .page-link { + margin-right: 0; + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; +} + +.page-item:last-child .page-link { + border-top-left-radius: 3px; + border-bottom-left-radius: 3px; +} + +.page-item.active .page-link { + z-index: 1; + color: #fff; + background-color: #467fcf; + border-color: #467fcf; +} + +.page-item.disabled .page-link { + color: #ced4da; + pointer-events: none; + cursor: auto; + background-color: #fff; + border-color: #dee2e6; +} + +.pagination-lg .page-link { + padding: 0.75rem 1.5rem; + font-size: 1.125rem; + line-height: 1.5; +} + +.pagination-lg .page-item:first-child .page-link { + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; +} + +.pagination-lg .page-item:last-child .page-link { + border-top-left-radius: 3px; + border-bottom-left-radius: 3px; +} + +.pagination-sm .page-link { + padding: 0.25rem 0.5rem; + font-size: 0.875rem; + line-height: 1.5; +} + +.pagination-sm .page-item:first-child .page-link { + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; +} + +.pagination-sm .page-item:last-child .page-link { + border-top-left-radius: 3px; + border-bottom-left-radius: 3px; +} + +.badge { + display: inline-block; + padding: 0.25em 0.4em; + font-size: 75%; + font-weight: 600; + line-height: 1; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: 3px; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} + +@media (prefers-reduced-motion: reduce) { + .badge { + transition: none; + } +} + +a.badge:hover, a.badge:focus { + text-decoration: none; +} + +.badge:empty { + display: none; +} + +.btn .badge, .dataTables_wrapper .dataTables_paginate .paginate_button .badge { + position: relative; + top: -1px; +} + +.badge-pill { + padding-left: 0.6em; + padding-right: 0.6em; + border-radius: 10rem; +} + +.badge-primary { + color: #fff; + background-color: #467fcf; +} + +a.badge-primary:hover, a.badge-primary:focus { + color: #fff; + background-color: #2f66b3; +} + +a.badge-primary:focus, a.badge-primary.focus { + outline: 0; + box-shadow: 0 0 0 2px rgba(70, 127, 207, 0.5); +} + +.badge-secondary { + color: #fff; + background-color: #868e96; +} + +a.badge-secondary:hover, a.badge-secondary:focus { + color: #fff; + background-color: #6c757d; +} + +a.badge-secondary:focus, a.badge-secondary.focus { + outline: 0; + box-shadow: 0 0 0 2px rgba(134, 142, 150, 0.5); +} + +.badge-success { + color: #fff; + background-color: #5eba00; +} + +a.badge-success:hover, a.badge-success:focus { + color: #fff; + background-color: #448700; +} + +a.badge-success:focus, a.badge-success.focus { + outline: 0; + box-shadow: 0 0 0 2px rgba(94, 186, 0, 0.5); +} + +.badge-info { + color: #fff; + background-color: #45aaf2; +} + +a.badge-info:hover, a.badge-info:focus { + color: #fff; + background-color: #1594ef; +} + +a.badge-info:focus, a.badge-info.focus { + outline: 0; + box-shadow: 0 0 0 2px rgba(69, 170, 242, 0.5); +} + +.badge-warning { + color: #fff; + background-color: #f1c40f; +} + +a.badge-warning:hover, a.badge-warning:focus { + color: #fff; + background-color: #c29d0b; +} + +a.badge-warning:focus, a.badge-warning.focus { + outline: 0; + box-shadow: 0 0 0 2px rgba(241, 196, 15, 0.5); +} + +.badge-danger { + color: #fff; + background-color: #cd201f; +} + +a.badge-danger:hover, a.badge-danger:focus { + color: #fff; + background-color: #a11918; +} + +a.badge-danger:focus, a.badge-danger.focus { + outline: 0; + box-shadow: 0 0 0 2px rgba(205, 32, 31, 0.5); +} + +.badge-light { + color: #495057; + background-color: #f8f9fa; +} + +a.badge-light:hover, a.badge-light:focus { + color: #495057; + background-color: #dae0e5; +} + +a.badge-light:focus, a.badge-light.focus { + outline: 0; + box-shadow: 0 0 0 2px rgba(248, 249, 250, 0.5); +} + +.badge-dark { + color: #fff; + background-color: #343a40; +} + +a.badge-dark:hover, a.badge-dark:focus { + color: #fff; + background-color: #1d2124; +} + +a.badge-dark:focus, a.badge-dark.focus { + outline: 0; + box-shadow: 0 0 0 2px rgba(52, 58, 64, 0.5); +} + +.jumbotron { + padding: 2rem 1rem; + margin-bottom: 2rem; + background-color: #e9ecef; + border-radius: 3px; +} + +@media (min-width: 576px) { + .jumbotron { + padding: 4rem 2rem; + } +} + +.jumbotron-fluid { + padding-left: 0; + padding-right: 0; + border-radius: 0; +} + +.alert { + position: relative; + padding: 0.75rem 1.25rem; + margin-bottom: 1rem; + border: 1px solid transparent; + border-radius: 3px; +} + +.alert-heading { + color: inherit; +} + +.alert-link { + font-weight: 600; +} + +.alert-dismissible { + padding-left: 3.90625rem; +} + +.alert-dismissible .close { + position: absolute; + top: 0; + left: 0; + padding: 0.75rem 1.25rem; + color: inherit; +} + +.alert-primary { + color: #24426c; + background-color: #dae5f5; + border-color: #cbdbf2; +} + +.alert-primary hr { + border-top-color: #b7cded; +} + +.alert-primary .alert-link { + color: #172b46; +} + +.alert-secondary { + color: #464a4e; + background-color: #e7e8ea; + border-color: #dddfe2; +} + +.alert-secondary hr { + border-top-color: #cfd2d6; +} + +.alert-secondary .alert-link { + color: #2e3133; +} + +.alert-success { + color: #316100; + background-color: #dff1cc; + border-color: #d2ecb8; +} + +.alert-success hr { + border-top-color: #c5e7a4; +} + +.alert-success .alert-link { + color: #172e00; +} + +.alert-info { + color: #24587e; + background-color: #daeefc; + border-color: #cbe7fb; +} + +.alert-info hr { + border-top-color: #b3dcf9; +} + +.alert-info .alert-link { + color: #193c56; +} + +.alert-warning { + color: #7d6608; + background-color: #fcf3cf; + border-color: #fbeebc; +} + +.alert-warning hr { + border-top-color: #fae8a4; +} + +.alert-warning .alert-link { + color: #4d3f05; +} + +.alert-danger { + color: #6b1110; + background-color: #f5d2d2; + border-color: #f1c1c0; +} + +.alert-danger hr { + border-top-color: #ecacab; +} + +.alert-danger .alert-link { + color: #3f0a09; +} + +.alert-light { + color: #818182; + background-color: #fefefe; + border-color: #fdfdfe; +} + +.alert-light hr { + border-top-color: #ececf6; +} + +.alert-light .alert-link { + color: #686868; +} + +.alert-dark { + color: #1b1e21; + background-color: #d6d8d9; + border-color: #c6c8ca; +} + +.alert-dark hr { + border-top-color: #b9bbbe; +} + +.alert-dark .alert-link { + color: #040505; +} + +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 1rem 0; + } + to { + background-position: 100% 0; + } +} + +@keyframes progress-bar-stripes { + from { + background-position: 1rem 0; + } + to { + background-position: 100% 0; + } +} + +.progress { + display: -ms-flexbox; + display: flex; + height: 1rem; + overflow: hidden; + font-size: 0.703125rem; + background-color: #e9ecef; + border-radius: 3px; +} + +.progress-bar { + display: -ms-flexbox; + display: flex; + -ms-flex-direction: column; + flex-direction: column; + -ms-flex-pack: center; + justify-content: center; + color: #fff; + text-align: center; + white-space: nowrap; + background-color: #467fcf; + transition: width 0.6s ease; +} + +@media (prefers-reduced-motion: reduce) { + .progress-bar { + transition: none; + } +} + +.progress-bar-striped { + background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-size: 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: -ms-flexbox; + display: flex; + -ms-flex-align: start; + align-items: flex-start; +} + +.media-body { + -ms-flex: 1; + flex: 1; +} + +.list-group { + display: -ms-flexbox; + display: flex; + -ms-flex-direction: column; + flex-direction: column; + padding-right: 0; + margin-bottom: 0; +} + +.list-group-item-action { + width: 100%; + color: #495057; + text-align: inherit; +} + +.list-group-item-action:hover, .list-group-item-action:focus { + z-index: 1; + color: #495057; + text-decoration: none; + background-color: #f8f9fa; +} + +.list-group-item-action:active { + color: #495057; + background-color: #e9ecef; +} + +.list-group-item { + position: relative; + display: block; + padding: 0.75rem 1.25rem; + margin-bottom: -1px; + background-color: #fff; + border: 1px solid rgba(0, 40, 100, 0.12); +} + +.list-group-item:first-child { + border-top-right-radius: 3px; + border-top-left-radius: 3px; +} + +.list-group-item:last-child { + margin-bottom: 0; + border-bottom-left-radius: 3px; + border-bottom-right-radius: 3px; +} + +.list-group-item.disabled, .list-group-item:disabled { + color: #868e96; + pointer-events: none; + background-color: #fff; +} + +.list-group-item.active { + z-index: 2; + color: #467fcf; + background-color: #f8fafd; + border-color: rgba(0, 40, 100, 0.12); +} + +.list-group-horizontal { + -ms-flex-direction: row; + flex-direction: row; +} + +.list-group-horizontal .list-group-item { + margin-left: -1px; + margin-bottom: 0; +} + +.list-group-horizontal .list-group-item:first-child { + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; + border-top-left-radius: 0; +} + +.list-group-horizontal .list-group-item:last-child { + margin-left: 0; + border-top-left-radius: 3px; + border-bottom-left-radius: 3px; + border-bottom-right-radius: 0; +} + +@media (min-width: 576px) { + .list-group-horizontal-sm { + -ms-flex-direction: row; + flex-direction: row; + } + .list-group-horizontal-sm .list-group-item { + margin-left: -1px; + margin-bottom: 0; + } + .list-group-horizontal-sm .list-group-item:first-child { + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; + border-top-left-radius: 0; + } + .list-group-horizontal-sm .list-group-item:last-child { + margin-left: 0; + border-top-left-radius: 3px; + border-bottom-left-radius: 3px; + border-bottom-right-radius: 0; + } +} + +@media (min-width: 768px) { + .list-group-horizontal-md { + -ms-flex-direction: row; + flex-direction: row; + } + .list-group-horizontal-md .list-group-item { + margin-left: -1px; + margin-bottom: 0; + } + .list-group-horizontal-md .list-group-item:first-child { + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; + border-top-left-radius: 0; + } + .list-group-horizontal-md .list-group-item:last-child { + margin-left: 0; + border-top-left-radius: 3px; + border-bottom-left-radius: 3px; + border-bottom-right-radius: 0; + } +} + +@media (min-width: 992px) { + .list-group-horizontal-lg { + -ms-flex-direction: row; + flex-direction: row; + } + .list-group-horizontal-lg .list-group-item { + margin-left: -1px; + margin-bottom: 0; + } + .list-group-horizontal-lg .list-group-item:first-child { + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; + border-top-left-radius: 0; + } + .list-group-horizontal-lg .list-group-item:last-child { + margin-left: 0; + border-top-left-radius: 3px; + border-bottom-left-radius: 3px; + border-bottom-right-radius: 0; + } +} + +@media (min-width: 1280px) { + .list-group-horizontal-xl { + -ms-flex-direction: row; + flex-direction: row; + } + .list-group-horizontal-xl .list-group-item { + margin-left: -1px; + margin-bottom: 0; + } + .list-group-horizontal-xl .list-group-item:first-child { + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; + border-top-left-radius: 0; + } + .list-group-horizontal-xl .list-group-item:last-child { + margin-left: 0; + border-top-left-radius: 3px; + border-bottom-left-radius: 3px; + border-bottom-right-radius: 0; + } +} + +.list-group-flush .list-group-item { + border-left: 0; + border-right: 0; + border-radius: 0; +} + +.list-group-flush .list-group-item:last-child { + margin-bottom: -1px; +} + +.list-group-flush:first-child .list-group-item:first-child { + border-top: 0; +} + +.list-group-flush:last-child .list-group-item:last-child { + margin-bottom: 0; + border-bottom: 0; +} + +.list-group-item-primary { + color: #24426c; + background-color: #cbdbf2; +} + +.list-group-item-primary.list-group-item-action:hover, .list-group-item-primary.list-group-item-action:focus { + color: #24426c; + background-color: #b7cded; +} + +.list-group-item-primary.list-group-item-action.active { + color: #fff; + background-color: #24426c; + border-color: #24426c; +} + +.list-group-item-secondary { + color: #464a4e; + background-color: #dddfe2; +} + +.list-group-item-secondary.list-group-item-action:hover, .list-group-item-secondary.list-group-item-action:focus { + color: #464a4e; + background-color: #cfd2d6; +} + +.list-group-item-secondary.list-group-item-action.active { + color: #fff; + background-color: #464a4e; + border-color: #464a4e; +} + +.list-group-item-success { + color: #316100; + background-color: #d2ecb8; +} + +.list-group-item-success.list-group-item-action:hover, .list-group-item-success.list-group-item-action:focus { + color: #316100; + background-color: #c5e7a4; +} + +.list-group-item-success.list-group-item-action.active { + color: #fff; + background-color: #316100; + border-color: #316100; +} + +.list-group-item-info { + color: #24587e; + background-color: #cbe7fb; +} + +.list-group-item-info.list-group-item-action:hover, .list-group-item-info.list-group-item-action:focus { + color: #24587e; + background-color: #b3dcf9; +} + +.list-group-item-info.list-group-item-action.active { + color: #fff; + background-color: #24587e; + border-color: #24587e; +} + +.list-group-item-warning { + color: #7d6608; + background-color: #fbeebc; +} + +.list-group-item-warning.list-group-item-action:hover, .list-group-item-warning.list-group-item-action:focus { + color: #7d6608; + background-color: #fae8a4; +} + +.list-group-item-warning.list-group-item-action.active { + color: #fff; + background-color: #7d6608; + border-color: #7d6608; +} + +.list-group-item-danger { + color: #6b1110; + background-color: #f1c1c0; +} + +.list-group-item-danger.list-group-item-action:hover, .list-group-item-danger.list-group-item-action:focus { + color: #6b1110; + background-color: #ecacab; +} + +.list-group-item-danger.list-group-item-action.active { + color: #fff; + background-color: #6b1110; + border-color: #6b1110; +} + +.list-group-item-light { + color: #818182; + background-color: #fdfdfe; +} + +.list-group-item-light.list-group-item-action:hover, .list-group-item-light.list-group-item-action:focus { + color: #818182; + background-color: #ececf6; +} + +.list-group-item-light.list-group-item-action.active { + color: #fff; + background-color: #818182; + border-color: #818182; +} + +.list-group-item-dark { + color: #1b1e21; + background-color: #c6c8ca; +} + +.list-group-item-dark.list-group-item-action:hover, .list-group-item-dark.list-group-item-action:focus { + color: #1b1e21; + background-color: #b9bbbe; +} + +.list-group-item-dark.list-group-item-action.active { + color: #fff; + background-color: #1b1e21; + border-color: #1b1e21; +} + +.close { + float: left; + font-size: 1.40625rem; + 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):hover, .close:not(:disabled):not(.disabled):focus { + 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: 0.875rem; + background-color: rgba(255, 255, 255, 0.85); + background-clip: padding-box; + border: 1px solid rgba(0, 0, 0, 0.1); + box-shadow: 0 0.25rem 0.75rem rgba(0, 0, 0, 0.1); + -webkit-backdrop-filter: blur(10px); + backdrop-filter: blur(10px); + opacity: 0; + border-radius: 0.25rem; +} + +.toast:not(:last-child) { + margin-bottom: 0.75rem; +} + +.toast.showing { + opacity: 1; +} + +.toast.show { + display: block; + opacity: 1; +} + +.toast.hide { + display: none; +} + +.toast-header { + display: -ms-flexbox; + display: flex; + -ms-flex-align: center; + align-items: center; + padding: 0.25rem 0.75rem; + color: #868e96; + background-color: rgba(255, 255, 255, 0.85); + background-clip: padding-box; + border-bottom: 1px solid rgba(0, 0, 0, 0.05); +} + +.toast-body { + padding: 0.75rem; +} + +.modal-open { + overflow: hidden; +} + +.modal-open .modal { + overflow-x: hidden; + overflow-y: auto; +} + +.modal { + position: fixed; + top: 0; + right: 0; + z-index: 1050; + display: none; + width: 100%; + height: 100%; + overflow: hidden; + outline: 0; +} + +.modal-dialog { + position: relative; + width: auto; + margin: 0.5rem; + pointer-events: none; +} + +.modal.fade .modal-dialog { + transition: -webkit-transform 0.3s ease-out; + transition: transform 0.3s ease-out; + transition: transform 0.3s ease-out, -webkit-transform 0.3s ease-out; + -webkit-transform: translate(0, -50px); + transform: translate(0, -50px); +} + +@media (prefers-reduced-motion: reduce) { + .modal.fade .modal-dialog { + transition: none; + } +} + +.modal.show .modal-dialog { + -webkit-transform: none; + transform: none; +} + +.modal-dialog-scrollable { + 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-header, +.modal-dialog-scrollable .modal-footer { + -ms-flex-negative: 0; + flex-shrink: 0; +} + +.modal-dialog-scrollable .modal-body { + overflow-y: auto; +} + +.modal-dialog-centered { + display: -ms-flexbox; + display: flex; + -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 { + -ms-flex-direction: column; + flex-direction: column; + -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: -ms-flexbox; + display: flex; + -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, 0.2); + border-radius: 3px; + outline: 0; +} + +.modal-backdrop { + position: fixed; + top: 0; + right: 0; + z-index: 1040; + width: 100vw; + height: 100vh; + background-color: #000; +} + +.modal-backdrop.fade { + opacity: 0; +} + +.modal-backdrop.show { + opacity: 0.5; +} + +.modal-header { + display: -ms-flexbox; + display: flex; + -ms-flex-align: start; + align-items: flex-start; + -ms-flex-pack: justify; + justify-content: space-between; + padding: 1rem 1rem; + border-bottom: 1px solid rgba(0, 40, 100, 0.12); + border-top-right-radius: 3px; + border-top-left-radius: 3px; +} + +.modal-header .close { + padding: 1rem 1rem; + margin: -1rem auto -1rem -1rem; +} + +.modal-title { + margin-bottom: 0; + line-height: 1.5; +} + +.modal-body { + position: relative; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + padding: 1rem; +} + +.modal-footer { + display: -ms-flexbox; + display: flex; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: end; + justify-content: flex-end; + padding: 1rem; + border-top: 1px solid rgba(0, 40, 100, 0.12); + border-bottom-left-radius: 3px; + border-bottom-right-radius: 3px; +} + +.modal-footer > :not(:first-child) { + margin-right: .25rem; +} + +.modal-footer > :not(:last-child) { + margin-left: .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: 1280px) { + .modal-xl { + max-width: 1140px; + } +} + +.tooltip { + position: absolute; + z-index: 1070; + display: block; + margin: 0; + font-family: "Source Sans Pro", -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", Arial, sans-serif; + font-style: normal; + font-weight: 400; + line-height: 1.5; + text-align: right; + 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: 0.875rem; + word-wrap: break-word; + opacity: 0; +} + +.tooltip.show { + opacity: 0.9; +} + +.tooltip .arrow { + position: absolute; + display: block; + width: 0.8rem; + height: 0.4rem; +} + +.tooltip .arrow::before { + position: absolute; + content: ""; + border-color: transparent; + border-style: solid; +} + +.bs-tooltip-top, .bs-tooltip-auto[x-placement^="top"] { + padding: 0.4rem 0; +} + +.bs-tooltip-top .arrow, .bs-tooltip-auto[x-placement^="top"] .arrow { + bottom: 0; +} + +.bs-tooltip-top .arrow::before, .bs-tooltip-auto[x-placement^="top"] .arrow::before { + top: 0; + border-width: 0.4rem 0.4rem 0; + border-top-color: #000; +} + +.bs-tooltip-right, .bs-tooltip-auto[x-placement^="right"] { + padding: 0 0.4rem; +} + +.bs-tooltip-right .arrow, .bs-tooltip-auto[x-placement^="right"] .arrow { + right: 0; + width: 0.4rem; + height: 0.8rem; +} + +.bs-tooltip-right .arrow::before, .bs-tooltip-auto[x-placement^="right"] .arrow::before { + left: 0; + border-width: 0.4rem 0 0.4rem 0.4rem; + border-left-color: #000; +} + +.bs-tooltip-bottom, .bs-tooltip-auto[x-placement^="bottom"] { + padding: 0.4rem 0; +} + +.bs-tooltip-bottom .arrow, .bs-tooltip-auto[x-placement^="bottom"] .arrow { + top: 0; +} + +.bs-tooltip-bottom .arrow::before, .bs-tooltip-auto[x-placement^="bottom"] .arrow::before { + bottom: 0; + border-width: 0 0.4rem 0.4rem; + border-bottom-color: #000; +} + +.bs-tooltip-left, .bs-tooltip-auto[x-placement^="left"] { + padding: 0 0.4rem; +} + +.bs-tooltip-left .arrow, .bs-tooltip-auto[x-placement^="left"] .arrow { + left: 0; + width: 0.4rem; + height: 0.8rem; +} + +.bs-tooltip-left .arrow::before, .bs-tooltip-auto[x-placement^="left"] .arrow::before { + right: 0; + border-width: 0.4rem 0.4rem 0.4rem 0; + border-right-color: #000; +} + +.tooltip-inner { + max-width: 200px; + padding: 0.25rem 0.5rem; + color: #fff; + text-align: center; + background-color: #000; + border-radius: 3px; +} + +.popover { + position: absolute; + top: 0; + right: 0; + z-index: 1060; + display: block; + max-width: 276px; + font-family: "Source Sans Pro", -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", Arial, sans-serif; + font-style: normal; + font-weight: 400; + line-height: 1.5; + text-align: right; + 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: 0.875rem; + word-wrap: break-word; + background-color: #fff; + background-clip: padding-box; + border: 1px solid #dee3eb; + border-radius: 3px; +} + +.popover .arrow { + position: absolute; + display: block; + width: 0.5rem; + height: 0.5rem; + margin: 0 3px; +} + +.popover .arrow::before, .popover .arrow::after { + position: absolute; + display: block; + content: ""; + border-color: transparent; + border-style: solid; +} + +.bs-popover-top, .bs-popover-auto[x-placement^="top"] { + margin-bottom: 0.5rem; +} + +.bs-popover-top > .arrow, .bs-popover-auto[x-placement^="top"] > .arrow { + bottom: calc((0.5rem + 1px) * -1); +} + +.bs-popover-top > .arrow::before, .bs-popover-auto[x-placement^="top"] > .arrow::before { + bottom: 0; + border-width: 0.5rem 0.25rem 0; + border-top-color: #dee3eb; +} + +.bs-popover-top > .arrow::after, .bs-popover-auto[x-placement^="top"] > .arrow::after { + bottom: 1px; + border-width: 0.5rem 0.25rem 0; + border-top-color: #fff; +} + +.bs-popover-right, .bs-popover-auto[x-placement^="right"] { + margin-right: 0.5rem; +} + +.bs-popover-right > .arrow, .bs-popover-auto[x-placement^="right"] > .arrow { + right: calc((0.5rem + 1px) * -1); + width: 0.5rem; + height: 0.5rem; + margin: 3px 0; +} + +.bs-popover-right > .arrow::before, .bs-popover-auto[x-placement^="right"] > .arrow::before { + right: 0; + border-width: 0.25rem 0 0.25rem 0.5rem; + border-left-color: #dee3eb; +} + +.bs-popover-right > .arrow::after, .bs-popover-auto[x-placement^="right"] > .arrow::after { + right: 1px; + border-width: 0.25rem 0 0.25rem 0.5rem; + border-left-color: #fff; +} + +.bs-popover-bottom, .bs-popover-auto[x-placement^="bottom"] { + margin-top: 0.5rem; +} + +.bs-popover-bottom > .arrow, .bs-popover-auto[x-placement^="bottom"] > .arrow { + top: calc((0.5rem + 1px) * -1); +} + +.bs-popover-bottom > .arrow::before, .bs-popover-auto[x-placement^="bottom"] > .arrow::before { + top: 0; + border-width: 0 0.25rem 0.5rem 0.25rem; + border-bottom-color: #dee3eb; +} + +.bs-popover-bottom > .arrow::after, .bs-popover-auto[x-placement^="bottom"] > .arrow::after { + top: 1px; + border-width: 0 0.25rem 0.5rem 0.25rem; + border-bottom-color: #fff; +} + +.bs-popover-bottom .popover-header::before, .bs-popover-auto[x-placement^="bottom"] .popover-header::before { + position: absolute; + top: 0; + right: 50%; + display: block; + width: 0.5rem; + margin-right: -0.25rem; + content: ""; + border-bottom: 1px solid #f7f7f7; +} + +.bs-popover-left, .bs-popover-auto[x-placement^="left"] { + margin-left: 0.5rem; +} + +.bs-popover-left > .arrow, .bs-popover-auto[x-placement^="left"] > .arrow { + left: calc((0.5rem + 1px) * -1); + width: 0.5rem; + height: 0.5rem; + margin: 3px 0; +} + +.bs-popover-left > .arrow::before, .bs-popover-auto[x-placement^="left"] > .arrow::before { + left: 0; + border-width: 0.25rem 0.5rem 0.25rem 0; + border-right-color: #dee3eb; +} + +.bs-popover-left > .arrow::after, .bs-popover-auto[x-placement^="left"] > .arrow::after { + left: 1px; + border-width: 0.25rem 0.5rem 0.25rem 0; + border-right-color: #fff; +} + +.popover-header { + padding: 0.5rem 0.75rem; + margin-bottom: 0; + font-size: 0.9375rem; + color: inherit; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + border-top-right-radius: calc(3px - 1px); + border-top-left-radius: calc(3px - 1px); +} + +.popover-header:empty { + display: none; +} + +.popover-body { + padding: 0.75rem 1rem; + color: #6e7687; +} + +.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: right; + width: 100%; + margin-left: -100%; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + transition: -webkit-transform 0.6s ease-in-out; + transition: transform 0.6s ease-in-out; + transition: transform 0.6s ease-in-out, -webkit-transform 0.6s ease-in-out; +} + +@media (prefers-reduced-motion: reduce) { + .carousel-item { + transition: none; + } +} + +.carousel-item.active, +.carousel-item-next, +.carousel-item-prev { + display: block; +} + +.carousel-item-next:not(.carousel-item-left), +.active.carousel-item-right { + -webkit-transform: translateX(-100%); + transform: translateX(-100%); +} + +.carousel-item-prev:not(.carousel-item-right), +.active.carousel-item-left { + -webkit-transform: translateX(100%); + transform: translateX(100%); +} + +.carousel-fade .carousel-item { + opacity: 0; + transition-property: opacity; + -webkit-transform: none; + transform: none; +} + +.carousel-fade .carousel-item.active, +.carousel-fade .carousel-item-next.carousel-item-left, +.carousel-fade .carousel-item-prev.carousel-item-right { + z-index: 1; + opacity: 1; +} + +.carousel-fade .active.carousel-item-left, +.carousel-fade .active.carousel-item-right { + z-index: 0; + opacity: 0; + transition: 0s 0.6s opacity; +} + +@media (prefers-reduced-motion: reduce) { + .carousel-fade .active.carousel-item-left, + .carousel-fade .active.carousel-item-right { + transition: none; + } +} + +.carousel-control-prev, +.carousel-control-next { + position: absolute; + top: 0; + bottom: 0; + z-index: 1; + display: -ms-flexbox; + display: flex; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: center; + justify-content: center; + width: 15%; + color: #fff; + text-align: center; + opacity: 0.5; + transition: opacity 0.15s ease; +} + +@media (prefers-reduced-motion: reduce) { + .carousel-control-prev, + .carousel-control-next { + transition: none; + } +} + +.carousel-control-prev:hover, .carousel-control-prev:focus, +.carousel-control-next:hover, +.carousel-control-next:focus { + color: #fff; + text-decoration: none; + outline: 0; + opacity: 0.9; +} + +.carousel-control-prev { + right: 0; +} + +.carousel-control-next { + left: 0; +} + +.carousel-control-prev-icon, +.carousel-control-next-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,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3e%3c/svg%3e"); +} + +.carousel-control-next-icon { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3e%3c/svg%3e"); +} + +.carousel-indicators { + position: absolute; + left: 0; + bottom: 0; + right: 0; + z-index: 15; + display: -ms-flexbox; + display: flex; + -ms-flex-pack: center; + justify-content: center; + padding-right: 0; + margin-left: 15%; + margin-right: 15%; + list-style: none; +} + +.carousel-indicators li { + box-sizing: content-box; + -ms-flex: 0 1 auto; + flex: 0 1 auto; + width: 30px; + height: 3px; + margin-left: 3px; + margin-right: 3px; + text-indent: -999px; + cursor: pointer; + background-color: #fff; + background-clip: padding-box; + border-top: 10px solid transparent; + border-bottom: 10px solid transparent; + opacity: .5; + transition: opacity 0.6s ease; +} + +@media (prefers-reduced-motion: reduce) { + .carousel-indicators li { + transition: none; + } +} + +.carousel-indicators .active { + opacity: 1; +} + +.carousel-caption { + position: absolute; + left: 15%; + bottom: 20px; + right: 15%; + z-index: 10; + padding-top: 20px; + padding-bottom: 20px; + color: #fff; + text-align: center; +} + +@-webkit-keyframes spinner-border { + to { + -webkit-transform: rotate(-360deg); + transform: rotate(-360deg); + } +} + +@keyframes spinner-border { + to { + -webkit-transform: rotate(-360deg); + transform: rotate(-360deg); + } +} + +.spinner-border { + display: inline-block; + width: 2rem; + height: 2rem; + vertical-align: text-bottom; + border: 0.25em solid currentColor; + border-left-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: 0.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: #467fcf !important; +} + +a.bg-primary:hover, a.bg-primary:focus, +button.bg-primary:hover, +button.bg-primary:focus { + background-color: #2f66b3 !important; +} + +.bg-secondary { + background-color: #868e96 !important; +} + +a.bg-secondary:hover, a.bg-secondary:focus, +button.bg-secondary:hover, +button.bg-secondary:focus { + background-color: #6c757d !important; +} + +.bg-success { + background-color: #5eba00 !important; +} + +a.bg-success:hover, a.bg-success:focus, +button.bg-success:hover, +button.bg-success:focus { + background-color: #448700 !important; +} + +.bg-info { + background-color: #45aaf2 !important; +} + +a.bg-info:hover, a.bg-info:focus, +button.bg-info:hover, +button.bg-info:focus { + background-color: #1594ef !important; +} + +.bg-warning { + background-color: #f1c40f !important; +} + +a.bg-warning:hover, a.bg-warning:focus, +button.bg-warning:hover, +button.bg-warning:focus { + background-color: #c29d0b !important; +} + +.bg-danger { + background-color: #cd201f !important; +} + +a.bg-danger:hover, a.bg-danger:focus, +button.bg-danger:hover, +button.bg-danger:focus { + background-color: #a11918 !important; +} + +.bg-light { + background-color: #f8f9fa !important; +} + +a.bg-light:hover, a.bg-light:focus, +button.bg-light:hover, +button.bg-light:focus { + background-color: #dae0e5 !important; +} + +.bg-dark { + background-color: #343a40 !important; +} + +a.bg-dark:hover, a.bg-dark:focus, +button.bg-dark:hover, +button.bg-dark:focus { + background-color: #1d2124 !important; +} + +.bg-white { + background-color: #fff !important; +} + +.bg-transparent { + background-color: transparent !important; +} + +.border { + border: 1px solid rgba(0, 40, 100, 0.12) !important; +} + +.border-top { + border-top: 1px solid rgba(0, 40, 100, 0.12) !important; +} + +.border-right { + border-left: 1px solid rgba(0, 40, 100, 0.12) !important; +} + +.border-bottom { + border-bottom: 1px solid rgba(0, 40, 100, 0.12) !important; +} + +.border-left { + border-right: 1px solid rgba(0, 40, 100, 0.12) !important; +} + +.border-0 { + border: 0 !important; +} + +.border-top-0 { + border-top: 0 !important; +} + +.border-right-0 { + border-left: 0 !important; +} + +.border-bottom-0 { + border-bottom: 0 !important; +} + +.border-left-0 { + border-right: 0 !important; +} + +.border-primary { + border-color: #467fcf !important; +} + +.border-secondary { + border-color: #868e96 !important; +} + +.border-success { + border-color: #5eba00 !important; +} + +.border-info { + border-color: #45aaf2 !important; +} + +.border-warning { + border-color: #f1c40f !important; +} + +.border-danger { + border-color: #cd201f !important; +} + +.border-light { + border-color: #f8f9fa !important; +} + +.border-dark { + border-color: #343a40 !important; +} + +.border-white { + border-color: #fff !important; +} + +.rounded-sm { + border-radius: 3px !important; +} + +.rounded { + border-radius: 3px !important; +} + +.rounded-top { + border-top-right-radius: 3px !important; + border-top-left-radius: 3px !important; +} + +.rounded-right { + border-top-left-radius: 3px !important; + border-bottom-left-radius: 3px !important; +} + +.rounded-bottom { + border-bottom-left-radius: 3px !important; + border-bottom-right-radius: 3px !important; +} + +.rounded-left { + border-top-right-radius: 3px !important; + border-bottom-right-radius: 3px !important; +} + +.rounded-lg { + border-radius: 3px !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: -ms-flexbox !important; + display: flex !important; +} + +.d-inline-flex { + 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: -ms-flexbox !important; + display: flex !important; + } + .d-sm-inline-flex { + 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: -ms-flexbox !important; + display: flex !important; + } + .d-md-inline-flex { + 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: -ms-flexbox !important; + display: flex !important; + } + .d-lg-inline-flex { + display: -ms-inline-flexbox !important; + display: inline-flex !important; + } +} + +@media (min-width: 1280px) { + .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: -ms-flexbox !important; + display: flex !important; + } + .d-xl-inline-flex { + 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: -ms-flexbox !important; + display: flex !important; + } + .d-print-inline-flex { + 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 iframe, +.embed-responsive embed, +.embed-responsive object, +.embed-responsive video { + position: absolute; + top: 0; + bottom: 0; + right: 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 { + -ms-flex-direction: row !important; + flex-direction: row !important; +} + +.flex-column { + -ms-flex-direction: column !important; + flex-direction: column !important; +} + +.flex-row-reverse { + -ms-flex-direction: row-reverse !important; + flex-direction: row-reverse !important; +} + +.flex-column-reverse { + -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 { + -ms-flex: 1 1 auto !important; + flex: 1 1 auto !important; +} + +.flex-grow-0 { + -ms-flex-positive: 0 !important; + flex-grow: 0 !important; +} + +.flex-grow-1 { + -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 { + -ms-flex-pack: start !important; + justify-content: flex-start !important; +} + +.justify-content-end { + -ms-flex-pack: end !important; + justify-content: flex-end !important; +} + +.justify-content-center { + -ms-flex-pack: center !important; + justify-content: center !important; +} + +.justify-content-between { + -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 { + -ms-flex-align: start !important; + align-items: flex-start !important; +} + +.align-items-end { + -ms-flex-align: end !important; + align-items: flex-end !important; +} + +.align-items-center { + -ms-flex-align: center !important; + align-items: center !important; +} + +.align-items-baseline { + -ms-flex-align: baseline !important; + align-items: baseline !important; +} + +.align-items-stretch { + -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 { + -ms-flex-direction: row !important; + flex-direction: row !important; + } + .flex-sm-column { + -ms-flex-direction: column !important; + flex-direction: column !important; + } + .flex-sm-row-reverse { + -ms-flex-direction: row-reverse !important; + flex-direction: row-reverse !important; + } + .flex-sm-column-reverse { + -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 { + -ms-flex: 1 1 auto !important; + flex: 1 1 auto !important; + } + .flex-sm-grow-0 { + -ms-flex-positive: 0 !important; + flex-grow: 0 !important; + } + .flex-sm-grow-1 { + -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 { + -ms-flex-pack: start !important; + justify-content: flex-start !important; + } + .justify-content-sm-end { + -ms-flex-pack: end !important; + justify-content: flex-end !important; + } + .justify-content-sm-center { + -ms-flex-pack: center !important; + justify-content: center !important; + } + .justify-content-sm-between { + -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 { + -ms-flex-align: start !important; + align-items: flex-start !important; + } + .align-items-sm-end { + -ms-flex-align: end !important; + align-items: flex-end !important; + } + .align-items-sm-center { + -ms-flex-align: center !important; + align-items: center !important; + } + .align-items-sm-baseline { + -ms-flex-align: baseline !important; + align-items: baseline !important; + } + .align-items-sm-stretch { + -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 { + -ms-flex-direction: row !important; + flex-direction: row !important; + } + .flex-md-column { + -ms-flex-direction: column !important; + flex-direction: column !important; + } + .flex-md-row-reverse { + -ms-flex-direction: row-reverse !important; + flex-direction: row-reverse !important; + } + .flex-md-column-reverse { + -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 { + -ms-flex: 1 1 auto !important; + flex: 1 1 auto !important; + } + .flex-md-grow-0 { + -ms-flex-positive: 0 !important; + flex-grow: 0 !important; + } + .flex-md-grow-1 { + -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 { + -ms-flex-pack: start !important; + justify-content: flex-start !important; + } + .justify-content-md-end { + -ms-flex-pack: end !important; + justify-content: flex-end !important; + } + .justify-content-md-center { + -ms-flex-pack: center !important; + justify-content: center !important; + } + .justify-content-md-between { + -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 { + -ms-flex-align: start !important; + align-items: flex-start !important; + } + .align-items-md-end { + -ms-flex-align: end !important; + align-items: flex-end !important; + } + .align-items-md-center { + -ms-flex-align: center !important; + align-items: center !important; + } + .align-items-md-baseline { + -ms-flex-align: baseline !important; + align-items: baseline !important; + } + .align-items-md-stretch { + -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 { + -ms-flex-direction: row !important; + flex-direction: row !important; + } + .flex-lg-column { + -ms-flex-direction: column !important; + flex-direction: column !important; + } + .flex-lg-row-reverse { + -ms-flex-direction: row-reverse !important; + flex-direction: row-reverse !important; + } + .flex-lg-column-reverse { + -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 { + -ms-flex: 1 1 auto !important; + flex: 1 1 auto !important; + } + .flex-lg-grow-0 { + -ms-flex-positive: 0 !important; + flex-grow: 0 !important; + } + .flex-lg-grow-1 { + -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 { + -ms-flex-pack: start !important; + justify-content: flex-start !important; + } + .justify-content-lg-end { + -ms-flex-pack: end !important; + justify-content: flex-end !important; + } + .justify-content-lg-center { + -ms-flex-pack: center !important; + justify-content: center !important; + } + .justify-content-lg-between { + -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 { + -ms-flex-align: start !important; + align-items: flex-start !important; + } + .align-items-lg-end { + -ms-flex-align: end !important; + align-items: flex-end !important; + } + .align-items-lg-center { + -ms-flex-align: center !important; + align-items: center !important; + } + .align-items-lg-baseline { + -ms-flex-align: baseline !important; + align-items: baseline !important; + } + .align-items-lg-stretch { + -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: 1280px) { + .flex-xl-row { + -ms-flex-direction: row !important; + flex-direction: row !important; + } + .flex-xl-column { + -ms-flex-direction: column !important; + flex-direction: column !important; + } + .flex-xl-row-reverse { + -ms-flex-direction: row-reverse !important; + flex-direction: row-reverse !important; + } + .flex-xl-column-reverse { + -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 { + -ms-flex: 1 1 auto !important; + flex: 1 1 auto !important; + } + .flex-xl-grow-0 { + -ms-flex-positive: 0 !important; + flex-grow: 0 !important; + } + .flex-xl-grow-1 { + -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 { + -ms-flex-pack: start !important; + justify-content: flex-start !important; + } + .justify-content-xl-end { + -ms-flex-pack: end !important; + justify-content: flex-end !important; + } + .justify-content-xl-center { + -ms-flex-pack: center !important; + justify-content: center !important; + } + .justify-content-xl-between { + -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 { + -ms-flex-align: start !important; + align-items: flex-start !important; + } + .align-items-xl-end { + -ms-flex-align: end !important; + align-items: flex-end !important; + } + .align-items-xl-center { + -ms-flex-align: center !important; + align-items: center !important; + } + .align-items-xl-baseline { + -ms-flex-align: baseline !important; + align-items: baseline !important; + } + .align-items-xl-stretch { + -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: right !important; +} + +.float-right { + float: left !important; +} + +.float-none { + float: none !important; +} + +@media (min-width: 576px) { + .float-sm-left { + float: right !important; + } + .float-sm-right { + float: left !important; + } + .float-sm-none { + float: none !important; + } +} + +@media (min-width: 768px) { + .float-md-left { + float: right !important; + } + .float-md-right { + float: left !important; + } + .float-md-none { + float: none !important; + } +} + +@media (min-width: 992px) { + .float-lg-left { + float: right !important; + } + .float-lg-right { + float: left !important; + } + .float-lg-none { + float: none !important; + } +} + +@media (min-width: 1280px) { + .float-xl-left { + float: right !important; + } + .float-xl-right { + float: left !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 { + position: fixed; + top: 0; + left: 0; + right: 0; + z-index: 1030; +} + +.fixed-bottom { + position: fixed; + left: 0; + bottom: 0; + right: 0; + z-index: 1030; +} + +@supports ((position: -webkit-sticky) or (position: sticky)) { + .sticky-top { + position: -webkit-sticky; + position: sticky; + top: 0; + z-index: 1020; + } +} + +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border: 0; +} + +.sr-only-focusable:active, .sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + overflow: visible; + clip: auto; + white-space: normal; +} + +.shadow-sm { + box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important; +} + +.shadow { + box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important; +} + +.shadow-lg { + box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important; +} + +.shadow-none { + box-shadow: none !important; +} + +.w-25 { + width: 25% !important; +} + +.w-50 { + width: 50% !important; +} + +.w-75 { + width: 75% !important; +} + +.w-100 { + width: 100% !important; +} + +.w-auto { + width: auto !important; +} + +.w-0 { + width: 0 !important; +} + +.w-1 { + width: 0.25rem !important; +} + +.w-2 { + width: 0.5rem !important; +} + +.w-3 { + width: 0.75rem !important; +} + +.w-4 { + width: 1rem !important; +} + +.w-5 { + width: 1.5rem !important; +} + +.w-6 { + width: 2rem !important; +} + +.w-7 { + width: 3rem !important; +} + +.w-8 { + width: 4rem !important; +} + +.w-9 { + width: 6rem !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; +} + +.h-0 { + height: 0 !important; +} + +.h-1 { + height: 0.25rem !important; +} + +.h-2 { + height: 0.5rem !important; +} + +.h-3 { + height: 0.75rem !important; +} + +.h-4 { + height: 1rem !important; +} + +.h-5 { + height: 1.5rem !important; +} + +.h-6 { + height: 2rem !important; +} + +.h-7 { + height: 3rem !important; +} + +.h-8 { + height: 4rem !important; +} + +.h-9 { + height: 6rem !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; + left: 0; + bottom: 0; + right: 0; + z-index: 1; + pointer-events: auto; + content: ""; + background-color: rgba(0, 0, 0, 0); +} + +.m-0 { + margin: 0 !important; +} + +.mt-0, +.my-0 { + margin-top: 0 !important; +} + +.mr-0, +.mx-0 { + margin-left: 0 !important; +} + +.mb-0, +.my-0 { + margin-bottom: 0 !important; +} + +.ml-0, +.mx-0 { + margin-right: 0 !important; +} + +.m-1 { + margin: 0.25rem !important; +} + +.mt-1, +.my-1 { + margin-top: 0.25rem !important; +} + +.mr-1, +.mx-1 { + margin-left: 0.25rem !important; +} + +.mb-1, +.my-1 { + margin-bottom: 0.25rem !important; +} + +.ml-1, +.mx-1 { + margin-right: 0.25rem !important; +} + +.m-2 { + margin: 0.5rem !important; +} + +.mt-2, +.my-2 { + margin-top: 0.5rem !important; +} + +.mr-2, +.mx-2 { + margin-left: 0.5rem !important; +} + +.mb-2, +.my-2 { + margin-bottom: 0.5rem !important; +} + +.ml-2, +.mx-2 { + margin-right: 0.5rem !important; +} + +.m-3 { + margin: 0.75rem !important; +} + +.mt-3, +.my-3 { + margin-top: 0.75rem !important; +} + +.mr-3, +.mx-3 { + margin-left: 0.75rem !important; +} + +.mb-3, +.my-3 { + margin-bottom: 0.75rem !important; +} + +.ml-3, +.mx-3 { + margin-right: 0.75rem !important; +} + +.m-4 { + margin: 1rem !important; +} + +.mt-4, +.my-4 { + margin-top: 1rem !important; +} + +.mr-4, +.mx-4 { + margin-left: 1rem !important; +} + +.mb-4, +.my-4 { + margin-bottom: 1rem !important; +} + +.ml-4, +.mx-4 { + margin-right: 1rem !important; +} + +.m-5 { + margin: 1.5rem !important; +} + +.mt-5, +.my-5 { + margin-top: 1.5rem !important; +} + +.mr-5, +.mx-5 { + margin-left: 1.5rem !important; +} + +.mb-5, +.my-5 { + margin-bottom: 1.5rem !important; +} + +.ml-5, +.mx-5 { + margin-right: 1.5rem !important; +} + +.m-6 { + margin: 2rem !important; +} + +.mt-6, +.my-6 { + margin-top: 2rem !important; +} + +.mr-6, +.mx-6 { + margin-left: 2rem !important; +} + +.mb-6, +.my-6 { + margin-bottom: 2rem !important; +} + +.ml-6, +.mx-6 { + margin-right: 2rem !important; +} + +.m-7 { + margin: 3rem !important; +} + +.mt-7, +.my-7 { + margin-top: 3rem !important; +} + +.mr-7, +.mx-7 { + margin-left: 3rem !important; +} + +.mb-7, +.my-7 { + margin-bottom: 3rem !important; +} + +.ml-7, +.mx-7 { + margin-right: 3rem !important; +} + +.m-8 { + margin: 4rem !important; +} + +.mt-8, +.my-8 { + margin-top: 4rem !important; +} + +.mr-8, +.mx-8 { + margin-left: 4rem !important; +} + +.mb-8, +.my-8 { + margin-bottom: 4rem !important; +} + +.ml-8, +.mx-8 { + margin-right: 4rem !important; +} + +.m-9 { + margin: 6rem !important; +} + +.mt-9, +.my-9 { + margin-top: 6rem !important; +} + +.mr-9, +.mx-9 { + margin-left: 6rem !important; +} + +.mb-9, +.my-9 { + margin-bottom: 6rem !important; +} + +.ml-9, +.mx-9 { + margin-right: 6rem !important; +} + +.p-0 { + padding: 0 !important; +} + +.pt-0, +.py-0 { + padding-top: 0 !important; +} + +.pr-0, +.px-0 { + padding-left: 0 !important; +} + +.pb-0, +.py-0 { + padding-bottom: 0 !important; +} + +.pl-0, +.px-0 { + padding-right: 0 !important; +} + +.p-1 { + padding: 0.25rem !important; +} + +.pt-1, +.py-1 { + padding-top: 0.25rem !important; +} + +.pr-1, +.px-1 { + padding-left: 0.25rem !important; +} + +.pb-1, +.py-1 { + padding-bottom: 0.25rem !important; +} + +.pl-1, +.px-1 { + padding-right: 0.25rem !important; +} + +.p-2 { + padding: 0.5rem !important; +} + +.pt-2, +.py-2 { + padding-top: 0.5rem !important; +} + +.pr-2, +.px-2 { + padding-left: 0.5rem !important; +} + +.pb-2, +.py-2 { + padding-bottom: 0.5rem !important; +} + +.pl-2, +.px-2 { + padding-right: 0.5rem !important; +} + +.p-3 { + padding: 0.75rem !important; +} + +.pt-3, +.py-3 { + padding-top: 0.75rem !important; +} + +.pr-3, +.px-3 { + padding-left: 0.75rem !important; +} + +.pb-3, +.py-3 { + padding-bottom: 0.75rem !important; +} + +.pl-3, +.px-3 { + padding-right: 0.75rem !important; +} + +.p-4 { + padding: 1rem !important; +} + +.pt-4, +.py-4 { + padding-top: 1rem !important; +} + +.pr-4, +.px-4 { + padding-left: 1rem !important; +} + +.pb-4, +.py-4 { + padding-bottom: 1rem !important; +} + +.pl-4, +.px-4 { + padding-right: 1rem !important; +} + +.p-5 { + padding: 1.5rem !important; +} + +.pt-5, +.py-5 { + padding-top: 1.5rem !important; +} + +.pr-5, +.px-5 { + padding-left: 1.5rem !important; +} + +.pb-5, +.py-5 { + padding-bottom: 1.5rem !important; +} + +.pl-5, +.px-5 { + padding-right: 1.5rem !important; +} + +.p-6 { + padding: 2rem !important; +} + +.pt-6, +.py-6 { + padding-top: 2rem !important; +} + +.pr-6, +.px-6 { + padding-left: 2rem !important; +} + +.pb-6, +.py-6 { + padding-bottom: 2rem !important; +} + +.pl-6, +.px-6 { + padding-right: 2rem !important; +} + +.p-7 { + padding: 3rem !important; +} + +.pt-7, +.py-7 { + padding-top: 3rem !important; +} + +.pr-7, +.px-7 { + padding-left: 3rem !important; +} + +.pb-7, +.py-7 { + padding-bottom: 3rem !important; +} + +.pl-7, +.px-7 { + padding-right: 3rem !important; +} + +.p-8 { + padding: 4rem !important; +} + +.pt-8, +.py-8 { + padding-top: 4rem !important; +} + +.pr-8, +.px-8 { + padding-left: 4rem !important; +} + +.pb-8, +.py-8 { + padding-bottom: 4rem !important; +} + +.pl-8, +.px-8 { + padding-right: 4rem !important; +} + +.p-9 { + padding: 6rem !important; +} + +.pt-9, +.py-9 { + padding-top: 6rem !important; +} + +.pr-9, +.px-9 { + padding-left: 6rem !important; +} + +.pb-9, +.py-9 { + padding-bottom: 6rem !important; +} + +.pl-9, +.px-9 { + padding-right: 6rem !important; +} + +.m-n1 { + margin: -0.25rem !important; +} + +.mt-n1, +.my-n1 { + margin-top: -0.25rem !important; +} + +.mr-n1, +.mx-n1 { + margin-left: -0.25rem !important; +} + +.mb-n1, +.my-n1 { + margin-bottom: -0.25rem !important; +} + +.ml-n1, +.mx-n1 { + margin-right: -0.25rem !important; +} + +.m-n2 { + margin: -0.5rem !important; +} + +.mt-n2, +.my-n2 { + margin-top: -0.5rem !important; +} + +.mr-n2, +.mx-n2 { + margin-left: -0.5rem !important; +} + +.mb-n2, +.my-n2 { + margin-bottom: -0.5rem !important; +} + +.ml-n2, +.mx-n2 { + margin-right: -0.5rem !important; +} + +.m-n3 { + margin: -0.75rem !important; +} + +.mt-n3, +.my-n3 { + margin-top: -0.75rem !important; +} + +.mr-n3, +.mx-n3 { + margin-left: -0.75rem !important; +} + +.mb-n3, +.my-n3 { + margin-bottom: -0.75rem !important; +} + +.ml-n3, +.mx-n3 { + margin-right: -0.75rem !important; +} + +.m-n4 { + margin: -1rem !important; +} + +.mt-n4, +.my-n4 { + margin-top: -1rem !important; +} + +.mr-n4, +.mx-n4 { + margin-left: -1rem !important; +} + +.mb-n4, +.my-n4 { + margin-bottom: -1rem !important; +} + +.ml-n4, +.mx-n4 { + margin-right: -1rem !important; +} + +.m-n5 { + margin: -1.5rem !important; +} + +.mt-n5, +.my-n5 { + margin-top: -1.5rem !important; +} + +.mr-n5, +.mx-n5 { + margin-left: -1.5rem !important; +} + +.mb-n5, +.my-n5 { + margin-bottom: -1.5rem !important; +} + +.ml-n5, +.mx-n5 { + margin-right: -1.5rem !important; +} + +.m-n6 { + margin: -2rem !important; +} + +.mt-n6, +.my-n6 { + margin-top: -2rem !important; +} + +.mr-n6, +.mx-n6 { + margin-left: -2rem !important; +} + +.mb-n6, +.my-n6 { + margin-bottom: -2rem !important; +} + +.ml-n6, +.mx-n6 { + margin-right: -2rem !important; +} + +.m-n7 { + margin: -3rem !important; +} + +.mt-n7, +.my-n7 { + margin-top: -3rem !important; +} + +.mr-n7, +.mx-n7 { + margin-left: -3rem !important; +} + +.mb-n7, +.my-n7 { + margin-bottom: -3rem !important; +} + +.ml-n7, +.mx-n7 { + margin-right: -3rem !important; +} + +.m-n8 { + margin: -4rem !important; +} + +.mt-n8, +.my-n8 { + margin-top: -4rem !important; +} + +.mr-n8, +.mx-n8 { + margin-left: -4rem !important; +} + +.mb-n8, +.my-n8 { + margin-bottom: -4rem !important; +} + +.ml-n8, +.mx-n8 { + margin-right: -4rem !important; +} + +.m-n9 { + margin: -6rem !important; +} + +.mt-n9, +.my-n9 { + margin-top: -6rem !important; +} + +.mr-n9, +.mx-n9 { + margin-left: -6rem !important; +} + +.mb-n9, +.my-n9 { + margin-bottom: -6rem !important; +} + +.ml-n9, +.mx-n9 { + margin-right: -6rem !important; +} + +.m-auto { + margin: auto !important; +} + +.mt-auto, +.my-auto { + margin-top: auto !important; +} + +.mr-auto, +.mx-auto { + margin-left: auto !important; +} + +.mb-auto, +.my-auto { + margin-bottom: auto !important; +} + +.ml-auto, +.mx-auto { + margin-right: 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-left: 0 !important; + } + .mb-sm-0, + .my-sm-0 { + margin-bottom: 0 !important; + } + .ml-sm-0, + .mx-sm-0 { + margin-right: 0 !important; + } + .m-sm-1 { + margin: 0.25rem !important; + } + .mt-sm-1, + .my-sm-1 { + margin-top: 0.25rem !important; + } + .mr-sm-1, + .mx-sm-1 { + margin-left: 0.25rem !important; + } + .mb-sm-1, + .my-sm-1 { + margin-bottom: 0.25rem !important; + } + .ml-sm-1, + .mx-sm-1 { + margin-right: 0.25rem !important; + } + .m-sm-2 { + margin: 0.5rem !important; + } + .mt-sm-2, + .my-sm-2 { + margin-top: 0.5rem !important; + } + .mr-sm-2, + .mx-sm-2 { + margin-left: 0.5rem !important; + } + .mb-sm-2, + .my-sm-2 { + margin-bottom: 0.5rem !important; + } + .ml-sm-2, + .mx-sm-2 { + margin-right: 0.5rem !important; + } + .m-sm-3 { + margin: 0.75rem !important; + } + .mt-sm-3, + .my-sm-3 { + margin-top: 0.75rem !important; + } + .mr-sm-3, + .mx-sm-3 { + margin-left: 0.75rem !important; + } + .mb-sm-3, + .my-sm-3 { + margin-bottom: 0.75rem !important; + } + .ml-sm-3, + .mx-sm-3 { + margin-right: 0.75rem !important; + } + .m-sm-4 { + margin: 1rem !important; + } + .mt-sm-4, + .my-sm-4 { + margin-top: 1rem !important; + } + .mr-sm-4, + .mx-sm-4 { + margin-left: 1rem !important; + } + .mb-sm-4, + .my-sm-4 { + margin-bottom: 1rem !important; + } + .ml-sm-4, + .mx-sm-4 { + margin-right: 1rem !important; + } + .m-sm-5 { + margin: 1.5rem !important; + } + .mt-sm-5, + .my-sm-5 { + margin-top: 1.5rem !important; + } + .mr-sm-5, + .mx-sm-5 { + margin-left: 1.5rem !important; + } + .mb-sm-5, + .my-sm-5 { + margin-bottom: 1.5rem !important; + } + .ml-sm-5, + .mx-sm-5 { + margin-right: 1.5rem !important; + } + .m-sm-6 { + margin: 2rem !important; + } + .mt-sm-6, + .my-sm-6 { + margin-top: 2rem !important; + } + .mr-sm-6, + .mx-sm-6 { + margin-left: 2rem !important; + } + .mb-sm-6, + .my-sm-6 { + margin-bottom: 2rem !important; + } + .ml-sm-6, + .mx-sm-6 { + margin-right: 2rem !important; + } + .m-sm-7 { + margin: 3rem !important; + } + .mt-sm-7, + .my-sm-7 { + margin-top: 3rem !important; + } + .mr-sm-7, + .mx-sm-7 { + margin-left: 3rem !important; + } + .mb-sm-7, + .my-sm-7 { + margin-bottom: 3rem !important; + } + .ml-sm-7, + .mx-sm-7 { + margin-right: 3rem !important; + } + .m-sm-8 { + margin: 4rem !important; + } + .mt-sm-8, + .my-sm-8 { + margin-top: 4rem !important; + } + .mr-sm-8, + .mx-sm-8 { + margin-left: 4rem !important; + } + .mb-sm-8, + .my-sm-8 { + margin-bottom: 4rem !important; + } + .ml-sm-8, + .mx-sm-8 { + margin-right: 4rem !important; + } + .m-sm-9 { + margin: 6rem !important; + } + .mt-sm-9, + .my-sm-9 { + margin-top: 6rem !important; + } + .mr-sm-9, + .mx-sm-9 { + margin-left: 6rem !important; + } + .mb-sm-9, + .my-sm-9 { + margin-bottom: 6rem !important; + } + .ml-sm-9, + .mx-sm-9 { + margin-right: 6rem !important; + } + .p-sm-0 { + padding: 0 !important; + } + .pt-sm-0, + .py-sm-0 { + padding-top: 0 !important; + } + .pr-sm-0, + .px-sm-0 { + padding-left: 0 !important; + } + .pb-sm-0, + .py-sm-0 { + padding-bottom: 0 !important; + } + .pl-sm-0, + .px-sm-0 { + padding-right: 0 !important; + } + .p-sm-1 { + padding: 0.25rem !important; + } + .pt-sm-1, + .py-sm-1 { + padding-top: 0.25rem !important; + } + .pr-sm-1, + .px-sm-1 { + padding-left: 0.25rem !important; + } + .pb-sm-1, + .py-sm-1 { + padding-bottom: 0.25rem !important; + } + .pl-sm-1, + .px-sm-1 { + padding-right: 0.25rem !important; + } + .p-sm-2 { + padding: 0.5rem !important; + } + .pt-sm-2, + .py-sm-2 { + padding-top: 0.5rem !important; + } + .pr-sm-2, + .px-sm-2 { + padding-left: 0.5rem !important; + } + .pb-sm-2, + .py-sm-2 { + padding-bottom: 0.5rem !important; + } + .pl-sm-2, + .px-sm-2 { + padding-right: 0.5rem !important; + } + .p-sm-3 { + padding: 0.75rem !important; + } + .pt-sm-3, + .py-sm-3 { + padding-top: 0.75rem !important; + } + .pr-sm-3, + .px-sm-3 { + padding-left: 0.75rem !important; + } + .pb-sm-3, + .py-sm-3 { + padding-bottom: 0.75rem !important; + } + .pl-sm-3, + .px-sm-3 { + padding-right: 0.75rem !important; + } + .p-sm-4 { + padding: 1rem !important; + } + .pt-sm-4, + .py-sm-4 { + padding-top: 1rem !important; + } + .pr-sm-4, + .px-sm-4 { + padding-left: 1rem !important; + } + .pb-sm-4, + .py-sm-4 { + padding-bottom: 1rem !important; + } + .pl-sm-4, + .px-sm-4 { + padding-right: 1rem !important; + } + .p-sm-5 { + padding: 1.5rem !important; + } + .pt-sm-5, + .py-sm-5 { + padding-top: 1.5rem !important; + } + .pr-sm-5, + .px-sm-5 { + padding-left: 1.5rem !important; + } + .pb-sm-5, + .py-sm-5 { + padding-bottom: 1.5rem !important; + } + .pl-sm-5, + .px-sm-5 { + padding-right: 1.5rem !important; + } + .p-sm-6 { + padding: 2rem !important; + } + .pt-sm-6, + .py-sm-6 { + padding-top: 2rem !important; + } + .pr-sm-6, + .px-sm-6 { + padding-left: 2rem !important; + } + .pb-sm-6, + .py-sm-6 { + padding-bottom: 2rem !important; + } + .pl-sm-6, + .px-sm-6 { + padding-right: 2rem !important; + } + .p-sm-7 { + padding: 3rem !important; + } + .pt-sm-7, + .py-sm-7 { + padding-top: 3rem !important; + } + .pr-sm-7, + .px-sm-7 { + padding-left: 3rem !important; + } + .pb-sm-7, + .py-sm-7 { + padding-bottom: 3rem !important; + } + .pl-sm-7, + .px-sm-7 { + padding-right: 3rem !important; + } + .p-sm-8 { + padding: 4rem !important; + } + .pt-sm-8, + .py-sm-8 { + padding-top: 4rem !important; + } + .pr-sm-8, + .px-sm-8 { + padding-left: 4rem !important; + } + .pb-sm-8, + .py-sm-8 { + padding-bottom: 4rem !important; + } + .pl-sm-8, + .px-sm-8 { + padding-right: 4rem !important; + } + .p-sm-9 { + padding: 6rem !important; + } + .pt-sm-9, + .py-sm-9 { + padding-top: 6rem !important; + } + .pr-sm-9, + .px-sm-9 { + padding-left: 6rem !important; + } + .pb-sm-9, + .py-sm-9 { + padding-bottom: 6rem !important; + } + .pl-sm-9, + .px-sm-9 { + padding-right: 6rem !important; + } + .m-sm-n1 { + margin: -0.25rem !important; + } + .mt-sm-n1, + .my-sm-n1 { + margin-top: -0.25rem !important; + } + .mr-sm-n1, + .mx-sm-n1 { + margin-left: -0.25rem !important; + } + .mb-sm-n1, + .my-sm-n1 { + margin-bottom: -0.25rem !important; + } + .ml-sm-n1, + .mx-sm-n1 { + margin-right: -0.25rem !important; + } + .m-sm-n2 { + margin: -0.5rem !important; + } + .mt-sm-n2, + .my-sm-n2 { + margin-top: -0.5rem !important; + } + .mr-sm-n2, + .mx-sm-n2 { + margin-left: -0.5rem !important; + } + .mb-sm-n2, + .my-sm-n2 { + margin-bottom: -0.5rem !important; + } + .ml-sm-n2, + .mx-sm-n2 { + margin-right: -0.5rem !important; + } + .m-sm-n3 { + margin: -0.75rem !important; + } + .mt-sm-n3, + .my-sm-n3 { + margin-top: -0.75rem !important; + } + .mr-sm-n3, + .mx-sm-n3 { + margin-left: -0.75rem !important; + } + .mb-sm-n3, + .my-sm-n3 { + margin-bottom: -0.75rem !important; + } + .ml-sm-n3, + .mx-sm-n3 { + margin-right: -0.75rem !important; + } + .m-sm-n4 { + margin: -1rem !important; + } + .mt-sm-n4, + .my-sm-n4 { + margin-top: -1rem !important; + } + .mr-sm-n4, + .mx-sm-n4 { + margin-left: -1rem !important; + } + .mb-sm-n4, + .my-sm-n4 { + margin-bottom: -1rem !important; + } + .ml-sm-n4, + .mx-sm-n4 { + margin-right: -1rem !important; + } + .m-sm-n5 { + margin: -1.5rem !important; + } + .mt-sm-n5, + .my-sm-n5 { + margin-top: -1.5rem !important; + } + .mr-sm-n5, + .mx-sm-n5 { + margin-left: -1.5rem !important; + } + .mb-sm-n5, + .my-sm-n5 { + margin-bottom: -1.5rem !important; + } + .ml-sm-n5, + .mx-sm-n5 { + margin-right: -1.5rem !important; + } + .m-sm-n6 { + margin: -2rem !important; + } + .mt-sm-n6, + .my-sm-n6 { + margin-top: -2rem !important; + } + .mr-sm-n6, + .mx-sm-n6 { + margin-left: -2rem !important; + } + .mb-sm-n6, + .my-sm-n6 { + margin-bottom: -2rem !important; + } + .ml-sm-n6, + .mx-sm-n6 { + margin-right: -2rem !important; + } + .m-sm-n7 { + margin: -3rem !important; + } + .mt-sm-n7, + .my-sm-n7 { + margin-top: -3rem !important; + } + .mr-sm-n7, + .mx-sm-n7 { + margin-left: -3rem !important; + } + .mb-sm-n7, + .my-sm-n7 { + margin-bottom: -3rem !important; + } + .ml-sm-n7, + .mx-sm-n7 { + margin-right: -3rem !important; + } + .m-sm-n8 { + margin: -4rem !important; + } + .mt-sm-n8, + .my-sm-n8 { + margin-top: -4rem !important; + } + .mr-sm-n8, + .mx-sm-n8 { + margin-left: -4rem !important; + } + .mb-sm-n8, + .my-sm-n8 { + margin-bottom: -4rem !important; + } + .ml-sm-n8, + .mx-sm-n8 { + margin-right: -4rem !important; + } + .m-sm-n9 { + margin: -6rem !important; + } + .mt-sm-n9, + .my-sm-n9 { + margin-top: -6rem !important; + } + .mr-sm-n9, + .mx-sm-n9 { + margin-left: -6rem !important; + } + .mb-sm-n9, + .my-sm-n9 { + margin-bottom: -6rem !important; + } + .ml-sm-n9, + .mx-sm-n9 { + margin-right: -6rem !important; + } + .m-sm-auto { + margin: auto !important; + } + .mt-sm-auto, + .my-sm-auto { + margin-top: auto !important; + } + .mr-sm-auto, + .mx-sm-auto { + margin-left: auto !important; + } + .mb-sm-auto, + .my-sm-auto { + margin-bottom: auto !important; + } + .ml-sm-auto, + .mx-sm-auto { + margin-right: 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-left: 0 !important; + } + .mb-md-0, + .my-md-0 { + margin-bottom: 0 !important; + } + .ml-md-0, + .mx-md-0 { + margin-right: 0 !important; + } + .m-md-1 { + margin: 0.25rem !important; + } + .mt-md-1, + .my-md-1 { + margin-top: 0.25rem !important; + } + .mr-md-1, + .mx-md-1 { + margin-left: 0.25rem !important; + } + .mb-md-1, + .my-md-1 { + margin-bottom: 0.25rem !important; + } + .ml-md-1, + .mx-md-1 { + margin-right: 0.25rem !important; + } + .m-md-2 { + margin: 0.5rem !important; + } + .mt-md-2, + .my-md-2 { + margin-top: 0.5rem !important; + } + .mr-md-2, + .mx-md-2 { + margin-left: 0.5rem !important; + } + .mb-md-2, + .my-md-2 { + margin-bottom: 0.5rem !important; + } + .ml-md-2, + .mx-md-2 { + margin-right: 0.5rem !important; + } + .m-md-3 { + margin: 0.75rem !important; + } + .mt-md-3, + .my-md-3 { + margin-top: 0.75rem !important; + } + .mr-md-3, + .mx-md-3 { + margin-left: 0.75rem !important; + } + .mb-md-3, + .my-md-3 { + margin-bottom: 0.75rem !important; + } + .ml-md-3, + .mx-md-3 { + margin-right: 0.75rem !important; + } + .m-md-4 { + margin: 1rem !important; + } + .mt-md-4, + .my-md-4 { + margin-top: 1rem !important; + } + .mr-md-4, + .mx-md-4 { + margin-left: 1rem !important; + } + .mb-md-4, + .my-md-4 { + margin-bottom: 1rem !important; + } + .ml-md-4, + .mx-md-4 { + margin-right: 1rem !important; + } + .m-md-5 { + margin: 1.5rem !important; + } + .mt-md-5, + .my-md-5 { + margin-top: 1.5rem !important; + } + .mr-md-5, + .mx-md-5 { + margin-left: 1.5rem !important; + } + .mb-md-5, + .my-md-5 { + margin-bottom: 1.5rem !important; + } + .ml-md-5, + .mx-md-5 { + margin-right: 1.5rem !important; + } + .m-md-6 { + margin: 2rem !important; + } + .mt-md-6, + .my-md-6 { + margin-top: 2rem !important; + } + .mr-md-6, + .mx-md-6 { + margin-left: 2rem !important; + } + .mb-md-6, + .my-md-6 { + margin-bottom: 2rem !important; + } + .ml-md-6, + .mx-md-6 { + margin-right: 2rem !important; + } + .m-md-7 { + margin: 3rem !important; + } + .mt-md-7, + .my-md-7 { + margin-top: 3rem !important; + } + .mr-md-7, + .mx-md-7 { + margin-left: 3rem !important; + } + .mb-md-7, + .my-md-7 { + margin-bottom: 3rem !important; + } + .ml-md-7, + .mx-md-7 { + margin-right: 3rem !important; + } + .m-md-8 { + margin: 4rem !important; + } + .mt-md-8, + .my-md-8 { + margin-top: 4rem !important; + } + .mr-md-8, + .mx-md-8 { + margin-left: 4rem !important; + } + .mb-md-8, + .my-md-8 { + margin-bottom: 4rem !important; + } + .ml-md-8, + .mx-md-8 { + margin-right: 4rem !important; + } + .m-md-9 { + margin: 6rem !important; + } + .mt-md-9, + .my-md-9 { + margin-top: 6rem !important; + } + .mr-md-9, + .mx-md-9 { + margin-left: 6rem !important; + } + .mb-md-9, + .my-md-9 { + margin-bottom: 6rem !important; + } + .ml-md-9, + .mx-md-9 { + margin-right: 6rem !important; + } + .p-md-0 { + padding: 0 !important; + } + .pt-md-0, + .py-md-0 { + padding-top: 0 !important; + } + .pr-md-0, + .px-md-0 { + padding-left: 0 !important; + } + .pb-md-0, + .py-md-0 { + padding-bottom: 0 !important; + } + .pl-md-0, + .px-md-0 { + padding-right: 0 !important; + } + .p-md-1 { + padding: 0.25rem !important; + } + .pt-md-1, + .py-md-1 { + padding-top: 0.25rem !important; + } + .pr-md-1, + .px-md-1 { + padding-left: 0.25rem !important; + } + .pb-md-1, + .py-md-1 { + padding-bottom: 0.25rem !important; + } + .pl-md-1, + .px-md-1 { + padding-right: 0.25rem !important; + } + .p-md-2 { + padding: 0.5rem !important; + } + .pt-md-2, + .py-md-2 { + padding-top: 0.5rem !important; + } + .pr-md-2, + .px-md-2 { + padding-left: 0.5rem !important; + } + .pb-md-2, + .py-md-2 { + padding-bottom: 0.5rem !important; + } + .pl-md-2, + .px-md-2 { + padding-right: 0.5rem !important; + } + .p-md-3 { + padding: 0.75rem !important; + } + .pt-md-3, + .py-md-3 { + padding-top: 0.75rem !important; + } + .pr-md-3, + .px-md-3 { + padding-left: 0.75rem !important; + } + .pb-md-3, + .py-md-3 { + padding-bottom: 0.75rem !important; + } + .pl-md-3, + .px-md-3 { + padding-right: 0.75rem !important; + } + .p-md-4 { + padding: 1rem !important; + } + .pt-md-4, + .py-md-4 { + padding-top: 1rem !important; + } + .pr-md-4, + .px-md-4 { + padding-left: 1rem !important; + } + .pb-md-4, + .py-md-4 { + padding-bottom: 1rem !important; + } + .pl-md-4, + .px-md-4 { + padding-right: 1rem !important; + } + .p-md-5 { + padding: 1.5rem !important; + } + .pt-md-5, + .py-md-5 { + padding-top: 1.5rem !important; + } + .pr-md-5, + .px-md-5 { + padding-left: 1.5rem !important; + } + .pb-md-5, + .py-md-5 { + padding-bottom: 1.5rem !important; + } + .pl-md-5, + .px-md-5 { + padding-right: 1.5rem !important; + } + .p-md-6 { + padding: 2rem !important; + } + .pt-md-6, + .py-md-6 { + padding-top: 2rem !important; + } + .pr-md-6, + .px-md-6 { + padding-left: 2rem !important; + } + .pb-md-6, + .py-md-6 { + padding-bottom: 2rem !important; + } + .pl-md-6, + .px-md-6 { + padding-right: 2rem !important; + } + .p-md-7 { + padding: 3rem !important; + } + .pt-md-7, + .py-md-7 { + padding-top: 3rem !important; + } + .pr-md-7, + .px-md-7 { + padding-left: 3rem !important; + } + .pb-md-7, + .py-md-7 { + padding-bottom: 3rem !important; + } + .pl-md-7, + .px-md-7 { + padding-right: 3rem !important; + } + .p-md-8 { + padding: 4rem !important; + } + .pt-md-8, + .py-md-8 { + padding-top: 4rem !important; + } + .pr-md-8, + .px-md-8 { + padding-left: 4rem !important; + } + .pb-md-8, + .py-md-8 { + padding-bottom: 4rem !important; + } + .pl-md-8, + .px-md-8 { + padding-right: 4rem !important; + } + .p-md-9 { + padding: 6rem !important; + } + .pt-md-9, + .py-md-9 { + padding-top: 6rem !important; + } + .pr-md-9, + .px-md-9 { + padding-left: 6rem !important; + } + .pb-md-9, + .py-md-9 { + padding-bottom: 6rem !important; + } + .pl-md-9, + .px-md-9 { + padding-right: 6rem !important; + } + .m-md-n1 { + margin: -0.25rem !important; + } + .mt-md-n1, + .my-md-n1 { + margin-top: -0.25rem !important; + } + .mr-md-n1, + .mx-md-n1 { + margin-left: -0.25rem !important; + } + .mb-md-n1, + .my-md-n1 { + margin-bottom: -0.25rem !important; + } + .ml-md-n1, + .mx-md-n1 { + margin-right: -0.25rem !important; + } + .m-md-n2 { + margin: -0.5rem !important; + } + .mt-md-n2, + .my-md-n2 { + margin-top: -0.5rem !important; + } + .mr-md-n2, + .mx-md-n2 { + margin-left: -0.5rem !important; + } + .mb-md-n2, + .my-md-n2 { + margin-bottom: -0.5rem !important; + } + .ml-md-n2, + .mx-md-n2 { + margin-right: -0.5rem !important; + } + .m-md-n3 { + margin: -0.75rem !important; + } + .mt-md-n3, + .my-md-n3 { + margin-top: -0.75rem !important; + } + .mr-md-n3, + .mx-md-n3 { + margin-left: -0.75rem !important; + } + .mb-md-n3, + .my-md-n3 { + margin-bottom: -0.75rem !important; + } + .ml-md-n3, + .mx-md-n3 { + margin-right: -0.75rem !important; + } + .m-md-n4 { + margin: -1rem !important; + } + .mt-md-n4, + .my-md-n4 { + margin-top: -1rem !important; + } + .mr-md-n4, + .mx-md-n4 { + margin-left: -1rem !important; + } + .mb-md-n4, + .my-md-n4 { + margin-bottom: -1rem !important; + } + .ml-md-n4, + .mx-md-n4 { + margin-right: -1rem !important; + } + .m-md-n5 { + margin: -1.5rem !important; + } + .mt-md-n5, + .my-md-n5 { + margin-top: -1.5rem !important; + } + .mr-md-n5, + .mx-md-n5 { + margin-left: -1.5rem !important; + } + .mb-md-n5, + .my-md-n5 { + margin-bottom: -1.5rem !important; + } + .ml-md-n5, + .mx-md-n5 { + margin-right: -1.5rem !important; + } + .m-md-n6 { + margin: -2rem !important; + } + .mt-md-n6, + .my-md-n6 { + margin-top: -2rem !important; + } + .mr-md-n6, + .mx-md-n6 { + margin-left: -2rem !important; + } + .mb-md-n6, + .my-md-n6 { + margin-bottom: -2rem !important; + } + .ml-md-n6, + .mx-md-n6 { + margin-right: -2rem !important; + } + .m-md-n7 { + margin: -3rem !important; + } + .mt-md-n7, + .my-md-n7 { + margin-top: -3rem !important; + } + .mr-md-n7, + .mx-md-n7 { + margin-left: -3rem !important; + } + .mb-md-n7, + .my-md-n7 { + margin-bottom: -3rem !important; + } + .ml-md-n7, + .mx-md-n7 { + margin-right: -3rem !important; + } + .m-md-n8 { + margin: -4rem !important; + } + .mt-md-n8, + .my-md-n8 { + margin-top: -4rem !important; + } + .mr-md-n8, + .mx-md-n8 { + margin-left: -4rem !important; + } + .mb-md-n8, + .my-md-n8 { + margin-bottom: -4rem !important; + } + .ml-md-n8, + .mx-md-n8 { + margin-right: -4rem !important; + } + .m-md-n9 { + margin: -6rem !important; + } + .mt-md-n9, + .my-md-n9 { + margin-top: -6rem !important; + } + .mr-md-n9, + .mx-md-n9 { + margin-left: -6rem !important; + } + .mb-md-n9, + .my-md-n9 { + margin-bottom: -6rem !important; + } + .ml-md-n9, + .mx-md-n9 { + margin-right: -6rem !important; + } + .m-md-auto { + margin: auto !important; + } + .mt-md-auto, + .my-md-auto { + margin-top: auto !important; + } + .mr-md-auto, + .mx-md-auto { + margin-left: auto !important; + } + .mb-md-auto, + .my-md-auto { + margin-bottom: auto !important; + } + .ml-md-auto, + .mx-md-auto { + margin-right: 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-left: 0 !important; + } + .mb-lg-0, + .my-lg-0 { + margin-bottom: 0 !important; + } + .ml-lg-0, + .mx-lg-0 { + margin-right: 0 !important; + } + .m-lg-1 { + margin: 0.25rem !important; + } + .mt-lg-1, + .my-lg-1 { + margin-top: 0.25rem !important; + } + .mr-lg-1, + .mx-lg-1 { + margin-left: 0.25rem !important; + } + .mb-lg-1, + .my-lg-1 { + margin-bottom: 0.25rem !important; + } + .ml-lg-1, + .mx-lg-1 { + margin-right: 0.25rem !important; + } + .m-lg-2 { + margin: 0.5rem !important; + } + .mt-lg-2, + .my-lg-2 { + margin-top: 0.5rem !important; + } + .mr-lg-2, + .mx-lg-2 { + margin-left: 0.5rem !important; + } + .mb-lg-2, + .my-lg-2 { + margin-bottom: 0.5rem !important; + } + .ml-lg-2, + .mx-lg-2 { + margin-right: 0.5rem !important; + } + .m-lg-3 { + margin: 0.75rem !important; + } + .mt-lg-3, + .my-lg-3 { + margin-top: 0.75rem !important; + } + .mr-lg-3, + .mx-lg-3 { + margin-left: 0.75rem !important; + } + .mb-lg-3, + .my-lg-3 { + margin-bottom: 0.75rem !important; + } + .ml-lg-3, + .mx-lg-3 { + margin-right: 0.75rem !important; + } + .m-lg-4 { + margin: 1rem !important; + } + .mt-lg-4, + .my-lg-4 { + margin-top: 1rem !important; + } + .mr-lg-4, + .mx-lg-4 { + margin-left: 1rem !important; + } + .mb-lg-4, + .my-lg-4 { + margin-bottom: 1rem !important; + } + .ml-lg-4, + .mx-lg-4 { + margin-right: 1rem !important; + } + .m-lg-5 { + margin: 1.5rem !important; + } + .mt-lg-5, + .my-lg-5 { + margin-top: 1.5rem !important; + } + .mr-lg-5, + .mx-lg-5 { + margin-left: 1.5rem !important; + } + .mb-lg-5, + .my-lg-5 { + margin-bottom: 1.5rem !important; + } + .ml-lg-5, + .mx-lg-5 { + margin-right: 1.5rem !important; + } + .m-lg-6 { + margin: 2rem !important; + } + .mt-lg-6, + .my-lg-6 { + margin-top: 2rem !important; + } + .mr-lg-6, + .mx-lg-6 { + margin-left: 2rem !important; + } + .mb-lg-6, + .my-lg-6 { + margin-bottom: 2rem !important; + } + .ml-lg-6, + .mx-lg-6 { + margin-right: 2rem !important; + } + .m-lg-7 { + margin: 3rem !important; + } + .mt-lg-7, + .my-lg-7 { + margin-top: 3rem !important; + } + .mr-lg-7, + .mx-lg-7 { + margin-left: 3rem !important; + } + .mb-lg-7, + .my-lg-7 { + margin-bottom: 3rem !important; + } + .ml-lg-7, + .mx-lg-7 { + margin-right: 3rem !important; + } + .m-lg-8 { + margin: 4rem !important; + } + .mt-lg-8, + .my-lg-8 { + margin-top: 4rem !important; + } + .mr-lg-8, + .mx-lg-8 { + margin-left: 4rem !important; + } + .mb-lg-8, + .my-lg-8 { + margin-bottom: 4rem !important; + } + .ml-lg-8, + .mx-lg-8 { + margin-right: 4rem !important; + } + .m-lg-9 { + margin: 6rem !important; + } + .mt-lg-9, + .my-lg-9 { + margin-top: 6rem !important; + } + .mr-lg-9, + .mx-lg-9 { + margin-left: 6rem !important; + } + .mb-lg-9, + .my-lg-9 { + margin-bottom: 6rem !important; + } + .ml-lg-9, + .mx-lg-9 { + margin-right: 6rem !important; + } + .p-lg-0 { + padding: 0 !important; + } + .pt-lg-0, + .py-lg-0 { + padding-top: 0 !important; + } + .pr-lg-0, + .px-lg-0 { + padding-left: 0 !important; + } + .pb-lg-0, + .py-lg-0 { + padding-bottom: 0 !important; + } + .pl-lg-0, + .px-lg-0 { + padding-right: 0 !important; + } + .p-lg-1 { + padding: 0.25rem !important; + } + .pt-lg-1, + .py-lg-1 { + padding-top: 0.25rem !important; + } + .pr-lg-1, + .px-lg-1 { + padding-left: 0.25rem !important; + } + .pb-lg-1, + .py-lg-1 { + padding-bottom: 0.25rem !important; + } + .pl-lg-1, + .px-lg-1 { + padding-right: 0.25rem !important; + } + .p-lg-2 { + padding: 0.5rem !important; + } + .pt-lg-2, + .py-lg-2 { + padding-top: 0.5rem !important; + } + .pr-lg-2, + .px-lg-2 { + padding-left: 0.5rem !important; + } + .pb-lg-2, + .py-lg-2 { + padding-bottom: 0.5rem !important; + } + .pl-lg-2, + .px-lg-2 { + padding-right: 0.5rem !important; + } + .p-lg-3 { + padding: 0.75rem !important; + } + .pt-lg-3, + .py-lg-3 { + padding-top: 0.75rem !important; + } + .pr-lg-3, + .px-lg-3 { + padding-left: 0.75rem !important; + } + .pb-lg-3, + .py-lg-3 { + padding-bottom: 0.75rem !important; + } + .pl-lg-3, + .px-lg-3 { + padding-right: 0.75rem !important; + } + .p-lg-4 { + padding: 1rem !important; + } + .pt-lg-4, + .py-lg-4 { + padding-top: 1rem !important; + } + .pr-lg-4, + .px-lg-4 { + padding-left: 1rem !important; + } + .pb-lg-4, + .py-lg-4 { + padding-bottom: 1rem !important; + } + .pl-lg-4, + .px-lg-4 { + padding-right: 1rem !important; + } + .p-lg-5 { + padding: 1.5rem !important; + } + .pt-lg-5, + .py-lg-5 { + padding-top: 1.5rem !important; + } + .pr-lg-5, + .px-lg-5 { + padding-left: 1.5rem !important; + } + .pb-lg-5, + .py-lg-5 { + padding-bottom: 1.5rem !important; + } + .pl-lg-5, + .px-lg-5 { + padding-right: 1.5rem !important; + } + .p-lg-6 { + padding: 2rem !important; + } + .pt-lg-6, + .py-lg-6 { + padding-top: 2rem !important; + } + .pr-lg-6, + .px-lg-6 { + padding-left: 2rem !important; + } + .pb-lg-6, + .py-lg-6 { + padding-bottom: 2rem !important; + } + .pl-lg-6, + .px-lg-6 { + padding-right: 2rem !important; + } + .p-lg-7 { + padding: 3rem !important; + } + .pt-lg-7, + .py-lg-7 { + padding-top: 3rem !important; + } + .pr-lg-7, + .px-lg-7 { + padding-left: 3rem !important; + } + .pb-lg-7, + .py-lg-7 { + padding-bottom: 3rem !important; + } + .pl-lg-7, + .px-lg-7 { + padding-right: 3rem !important; + } + .p-lg-8 { + padding: 4rem !important; + } + .pt-lg-8, + .py-lg-8 { + padding-top: 4rem !important; + } + .pr-lg-8, + .px-lg-8 { + padding-left: 4rem !important; + } + .pb-lg-8, + .py-lg-8 { + padding-bottom: 4rem !important; + } + .pl-lg-8, + .px-lg-8 { + padding-right: 4rem !important; + } + .p-lg-9 { + padding: 6rem !important; + } + .pt-lg-9, + .py-lg-9 { + padding-top: 6rem !important; + } + .pr-lg-9, + .px-lg-9 { + padding-left: 6rem !important; + } + .pb-lg-9, + .py-lg-9 { + padding-bottom: 6rem !important; + } + .pl-lg-9, + .px-lg-9 { + padding-right: 6rem !important; + } + .m-lg-n1 { + margin: -0.25rem !important; + } + .mt-lg-n1, + .my-lg-n1 { + margin-top: -0.25rem !important; + } + .mr-lg-n1, + .mx-lg-n1 { + margin-left: -0.25rem !important; + } + .mb-lg-n1, + .my-lg-n1 { + margin-bottom: -0.25rem !important; + } + .ml-lg-n1, + .mx-lg-n1 { + margin-right: -0.25rem !important; + } + .m-lg-n2 { + margin: -0.5rem !important; + } + .mt-lg-n2, + .my-lg-n2 { + margin-top: -0.5rem !important; + } + .mr-lg-n2, + .mx-lg-n2 { + margin-left: -0.5rem !important; + } + .mb-lg-n2, + .my-lg-n2 { + margin-bottom: -0.5rem !important; + } + .ml-lg-n2, + .mx-lg-n2 { + margin-right: -0.5rem !important; + } + .m-lg-n3 { + margin: -0.75rem !important; + } + .mt-lg-n3, + .my-lg-n3 { + margin-top: -0.75rem !important; + } + .mr-lg-n3, + .mx-lg-n3 { + margin-left: -0.75rem !important; + } + .mb-lg-n3, + .my-lg-n3 { + margin-bottom: -0.75rem !important; + } + .ml-lg-n3, + .mx-lg-n3 { + margin-right: -0.75rem !important; + } + .m-lg-n4 { + margin: -1rem !important; + } + .mt-lg-n4, + .my-lg-n4 { + margin-top: -1rem !important; + } + .mr-lg-n4, + .mx-lg-n4 { + margin-left: -1rem !important; + } + .mb-lg-n4, + .my-lg-n4 { + margin-bottom: -1rem !important; + } + .ml-lg-n4, + .mx-lg-n4 { + margin-right: -1rem !important; + } + .m-lg-n5 { + margin: -1.5rem !important; + } + .mt-lg-n5, + .my-lg-n5 { + margin-top: -1.5rem !important; + } + .mr-lg-n5, + .mx-lg-n5 { + margin-left: -1.5rem !important; + } + .mb-lg-n5, + .my-lg-n5 { + margin-bottom: -1.5rem !important; + } + .ml-lg-n5, + .mx-lg-n5 { + margin-right: -1.5rem !important; + } + .m-lg-n6 { + margin: -2rem !important; + } + .mt-lg-n6, + .my-lg-n6 { + margin-top: -2rem !important; + } + .mr-lg-n6, + .mx-lg-n6 { + margin-left: -2rem !important; + } + .mb-lg-n6, + .my-lg-n6 { + margin-bottom: -2rem !important; + } + .ml-lg-n6, + .mx-lg-n6 { + margin-right: -2rem !important; + } + .m-lg-n7 { + margin: -3rem !important; + } + .mt-lg-n7, + .my-lg-n7 { + margin-top: -3rem !important; + } + .mr-lg-n7, + .mx-lg-n7 { + margin-left: -3rem !important; + } + .mb-lg-n7, + .my-lg-n7 { + margin-bottom: -3rem !important; + } + .ml-lg-n7, + .mx-lg-n7 { + margin-right: -3rem !important; + } + .m-lg-n8 { + margin: -4rem !important; + } + .mt-lg-n8, + .my-lg-n8 { + margin-top: -4rem !important; + } + .mr-lg-n8, + .mx-lg-n8 { + margin-left: -4rem !important; + } + .mb-lg-n8, + .my-lg-n8 { + margin-bottom: -4rem !important; + } + .ml-lg-n8, + .mx-lg-n8 { + margin-right: -4rem !important; + } + .m-lg-n9 { + margin: -6rem !important; + } + .mt-lg-n9, + .my-lg-n9 { + margin-top: -6rem !important; + } + .mr-lg-n9, + .mx-lg-n9 { + margin-left: -6rem !important; + } + .mb-lg-n9, + .my-lg-n9 { + margin-bottom: -6rem !important; + } + .ml-lg-n9, + .mx-lg-n9 { + margin-right: -6rem !important; + } + .m-lg-auto { + margin: auto !important; + } + .mt-lg-auto, + .my-lg-auto { + margin-top: auto !important; + } + .mr-lg-auto, + .mx-lg-auto { + margin-left: auto !important; + } + .mb-lg-auto, + .my-lg-auto { + margin-bottom: auto !important; + } + .ml-lg-auto, + .mx-lg-auto { + margin-right: auto !important; + } +} + +@media (min-width: 1280px) { + .m-xl-0 { + margin: 0 !important; + } + .mt-xl-0, + .my-xl-0 { + margin-top: 0 !important; + } + .mr-xl-0, + .mx-xl-0 { + margin-left: 0 !important; + } + .mb-xl-0, + .my-xl-0 { + margin-bottom: 0 !important; + } + .ml-xl-0, + .mx-xl-0 { + margin-right: 0 !important; + } + .m-xl-1 { + margin: 0.25rem !important; + } + .mt-xl-1, + .my-xl-1 { + margin-top: 0.25rem !important; + } + .mr-xl-1, + .mx-xl-1 { + margin-left: 0.25rem !important; + } + .mb-xl-1, + .my-xl-1 { + margin-bottom: 0.25rem !important; + } + .ml-xl-1, + .mx-xl-1 { + margin-right: 0.25rem !important; + } + .m-xl-2 { + margin: 0.5rem !important; + } + .mt-xl-2, + .my-xl-2 { + margin-top: 0.5rem !important; + } + .mr-xl-2, + .mx-xl-2 { + margin-left: 0.5rem !important; + } + .mb-xl-2, + .my-xl-2 { + margin-bottom: 0.5rem !important; + } + .ml-xl-2, + .mx-xl-2 { + margin-right: 0.5rem !important; + } + .m-xl-3 { + margin: 0.75rem !important; + } + .mt-xl-3, + .my-xl-3 { + margin-top: 0.75rem !important; + } + .mr-xl-3, + .mx-xl-3 { + margin-left: 0.75rem !important; + } + .mb-xl-3, + .my-xl-3 { + margin-bottom: 0.75rem !important; + } + .ml-xl-3, + .mx-xl-3 { + margin-right: 0.75rem !important; + } + .m-xl-4 { + margin: 1rem !important; + } + .mt-xl-4, + .my-xl-4 { + margin-top: 1rem !important; + } + .mr-xl-4, + .mx-xl-4 { + margin-left: 1rem !important; + } + .mb-xl-4, + .my-xl-4 { + margin-bottom: 1rem !important; + } + .ml-xl-4, + .mx-xl-4 { + margin-right: 1rem !important; + } + .m-xl-5 { + margin: 1.5rem !important; + } + .mt-xl-5, + .my-xl-5 { + margin-top: 1.5rem !important; + } + .mr-xl-5, + .mx-xl-5 { + margin-left: 1.5rem !important; + } + .mb-xl-5, + .my-xl-5 { + margin-bottom: 1.5rem !important; + } + .ml-xl-5, + .mx-xl-5 { + margin-right: 1.5rem !important; + } + .m-xl-6 { + margin: 2rem !important; + } + .mt-xl-6, + .my-xl-6 { + margin-top: 2rem !important; + } + .mr-xl-6, + .mx-xl-6 { + margin-left: 2rem !important; + } + .mb-xl-6, + .my-xl-6 { + margin-bottom: 2rem !important; + } + .ml-xl-6, + .mx-xl-6 { + margin-right: 2rem !important; + } + .m-xl-7 { + margin: 3rem !important; + } + .mt-xl-7, + .my-xl-7 { + margin-top: 3rem !important; + } + .mr-xl-7, + .mx-xl-7 { + margin-left: 3rem !important; + } + .mb-xl-7, + .my-xl-7 { + margin-bottom: 3rem !important; + } + .ml-xl-7, + .mx-xl-7 { + margin-right: 3rem !important; + } + .m-xl-8 { + margin: 4rem !important; + } + .mt-xl-8, + .my-xl-8 { + margin-top: 4rem !important; + } + .mr-xl-8, + .mx-xl-8 { + margin-left: 4rem !important; + } + .mb-xl-8, + .my-xl-8 { + margin-bottom: 4rem !important; + } + .ml-xl-8, + .mx-xl-8 { + margin-right: 4rem !important; + } + .m-xl-9 { + margin: 6rem !important; + } + .mt-xl-9, + .my-xl-9 { + margin-top: 6rem !important; + } + .mr-xl-9, + .mx-xl-9 { + margin-left: 6rem !important; + } + .mb-xl-9, + .my-xl-9 { + margin-bottom: 6rem !important; + } + .ml-xl-9, + .mx-xl-9 { + margin-right: 6rem !important; + } + .p-xl-0 { + padding: 0 !important; + } + .pt-xl-0, + .py-xl-0 { + padding-top: 0 !important; + } + .pr-xl-0, + .px-xl-0 { + padding-left: 0 !important; + } + .pb-xl-0, + .py-xl-0 { + padding-bottom: 0 !important; + } + .pl-xl-0, + .px-xl-0 { + padding-right: 0 !important; + } + .p-xl-1 { + padding: 0.25rem !important; + } + .pt-xl-1, + .py-xl-1 { + padding-top: 0.25rem !important; + } + .pr-xl-1, + .px-xl-1 { + padding-left: 0.25rem !important; + } + .pb-xl-1, + .py-xl-1 { + padding-bottom: 0.25rem !important; + } + .pl-xl-1, + .px-xl-1 { + padding-right: 0.25rem !important; + } + .p-xl-2 { + padding: 0.5rem !important; + } + .pt-xl-2, + .py-xl-2 { + padding-top: 0.5rem !important; + } + .pr-xl-2, + .px-xl-2 { + padding-left: 0.5rem !important; + } + .pb-xl-2, + .py-xl-2 { + padding-bottom: 0.5rem !important; + } + .pl-xl-2, + .px-xl-2 { + padding-right: 0.5rem !important; + } + .p-xl-3 { + padding: 0.75rem !important; + } + .pt-xl-3, + .py-xl-3 { + padding-top: 0.75rem !important; + } + .pr-xl-3, + .px-xl-3 { + padding-left: 0.75rem !important; + } + .pb-xl-3, + .py-xl-3 { + padding-bottom: 0.75rem !important; + } + .pl-xl-3, + .px-xl-3 { + padding-right: 0.75rem !important; + } + .p-xl-4 { + padding: 1rem !important; + } + .pt-xl-4, + .py-xl-4 { + padding-top: 1rem !important; + } + .pr-xl-4, + .px-xl-4 { + padding-left: 1rem !important; + } + .pb-xl-4, + .py-xl-4 { + padding-bottom: 1rem !important; + } + .pl-xl-4, + .px-xl-4 { + padding-right: 1rem !important; + } + .p-xl-5 { + padding: 1.5rem !important; + } + .pt-xl-5, + .py-xl-5 { + padding-top: 1.5rem !important; + } + .pr-xl-5, + .px-xl-5 { + padding-left: 1.5rem !important; + } + .pb-xl-5, + .py-xl-5 { + padding-bottom: 1.5rem !important; + } + .pl-xl-5, + .px-xl-5 { + padding-right: 1.5rem !important; + } + .p-xl-6 { + padding: 2rem !important; + } + .pt-xl-6, + .py-xl-6 { + padding-top: 2rem !important; + } + .pr-xl-6, + .px-xl-6 { + padding-left: 2rem !important; + } + .pb-xl-6, + .py-xl-6 { + padding-bottom: 2rem !important; + } + .pl-xl-6, + .px-xl-6 { + padding-right: 2rem !important; + } + .p-xl-7 { + padding: 3rem !important; + } + .pt-xl-7, + .py-xl-7 { + padding-top: 3rem !important; + } + .pr-xl-7, + .px-xl-7 { + padding-left: 3rem !important; + } + .pb-xl-7, + .py-xl-7 { + padding-bottom: 3rem !important; + } + .pl-xl-7, + .px-xl-7 { + padding-right: 3rem !important; + } + .p-xl-8 { + padding: 4rem !important; + } + .pt-xl-8, + .py-xl-8 { + padding-top: 4rem !important; + } + .pr-xl-8, + .px-xl-8 { + padding-left: 4rem !important; + } + .pb-xl-8, + .py-xl-8 { + padding-bottom: 4rem !important; + } + .pl-xl-8, + .px-xl-8 { + padding-right: 4rem !important; + } + .p-xl-9 { + padding: 6rem !important; + } + .pt-xl-9, + .py-xl-9 { + padding-top: 6rem !important; + } + .pr-xl-9, + .px-xl-9 { + padding-left: 6rem !important; + } + .pb-xl-9, + .py-xl-9 { + padding-bottom: 6rem !important; + } + .pl-xl-9, + .px-xl-9 { + padding-right: 6rem !important; + } + .m-xl-n1 { + margin: -0.25rem !important; + } + .mt-xl-n1, + .my-xl-n1 { + margin-top: -0.25rem !important; + } + .mr-xl-n1, + .mx-xl-n1 { + margin-left: -0.25rem !important; + } + .mb-xl-n1, + .my-xl-n1 { + margin-bottom: -0.25rem !important; + } + .ml-xl-n1, + .mx-xl-n1 { + margin-right: -0.25rem !important; + } + .m-xl-n2 { + margin: -0.5rem !important; + } + .mt-xl-n2, + .my-xl-n2 { + margin-top: -0.5rem !important; + } + .mr-xl-n2, + .mx-xl-n2 { + margin-left: -0.5rem !important; + } + .mb-xl-n2, + .my-xl-n2 { + margin-bottom: -0.5rem !important; + } + .ml-xl-n2, + .mx-xl-n2 { + margin-right: -0.5rem !important; + } + .m-xl-n3 { + margin: -0.75rem !important; + } + .mt-xl-n3, + .my-xl-n3 { + margin-top: -0.75rem !important; + } + .mr-xl-n3, + .mx-xl-n3 { + margin-left: -0.75rem !important; + } + .mb-xl-n3, + .my-xl-n3 { + margin-bottom: -0.75rem !important; + } + .ml-xl-n3, + .mx-xl-n3 { + margin-right: -0.75rem !important; + } + .m-xl-n4 { + margin: -1rem !important; + } + .mt-xl-n4, + .my-xl-n4 { + margin-top: -1rem !important; + } + .mr-xl-n4, + .mx-xl-n4 { + margin-left: -1rem !important; + } + .mb-xl-n4, + .my-xl-n4 { + margin-bottom: -1rem !important; + } + .ml-xl-n4, + .mx-xl-n4 { + margin-right: -1rem !important; + } + .m-xl-n5 { + margin: -1.5rem !important; + } + .mt-xl-n5, + .my-xl-n5 { + margin-top: -1.5rem !important; + } + .mr-xl-n5, + .mx-xl-n5 { + margin-left: -1.5rem !important; + } + .mb-xl-n5, + .my-xl-n5 { + margin-bottom: -1.5rem !important; + } + .ml-xl-n5, + .mx-xl-n5 { + margin-right: -1.5rem !important; + } + .m-xl-n6 { + margin: -2rem !important; + } + .mt-xl-n6, + .my-xl-n6 { + margin-top: -2rem !important; + } + .mr-xl-n6, + .mx-xl-n6 { + margin-left: -2rem !important; + } + .mb-xl-n6, + .my-xl-n6 { + margin-bottom: -2rem !important; + } + .ml-xl-n6, + .mx-xl-n6 { + margin-right: -2rem !important; + } + .m-xl-n7 { + margin: -3rem !important; + } + .mt-xl-n7, + .my-xl-n7 { + margin-top: -3rem !important; + } + .mr-xl-n7, + .mx-xl-n7 { + margin-left: -3rem !important; + } + .mb-xl-n7, + .my-xl-n7 { + margin-bottom: -3rem !important; + } + .ml-xl-n7, + .mx-xl-n7 { + margin-right: -3rem !important; + } + .m-xl-n8 { + margin: -4rem !important; + } + .mt-xl-n8, + .my-xl-n8 { + margin-top: -4rem !important; + } + .mr-xl-n8, + .mx-xl-n8 { + margin-left: -4rem !important; + } + .mb-xl-n8, + .my-xl-n8 { + margin-bottom: -4rem !important; + } + .ml-xl-n8, + .mx-xl-n8 { + margin-right: -4rem !important; + } + .m-xl-n9 { + margin: -6rem !important; + } + .mt-xl-n9, + .my-xl-n9 { + margin-top: -6rem !important; + } + .mr-xl-n9, + .mx-xl-n9 { + margin-left: -6rem !important; + } + .mb-xl-n9, + .my-xl-n9 { + margin-bottom: -6rem !important; + } + .ml-xl-n9, + .mx-xl-n9 { + margin-right: -6rem !important; + } + .m-xl-auto { + margin: auto !important; + } + .mt-xl-auto, + .my-xl-auto { + margin-top: auto !important; + } + .mr-xl-auto, + .mx-xl-auto { + margin-left: auto !important; + } + .mb-xl-auto, + .my-xl-auto { + margin-bottom: auto !important; + } + .ml-xl-auto, + .mx-xl-auto { + margin-right: auto !important; + } +} + +.text-monospace { + font-family: 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: right !important; +} + +.text-right { + text-align: left !important; +} + +.text-center { + text-align: center !important; +} + +@media (min-width: 576px) { + .text-sm-left { + text-align: right !important; + } + .text-sm-right { + text-align: left !important; + } + .text-sm-center { + text-align: center !important; + } +} + +@media (min-width: 768px) { + .text-md-left { + text-align: right !important; + } + .text-md-right { + text-align: left !important; + } + .text-md-center { + text-align: center !important; + } +} + +@media (min-width: 992px) { + .text-lg-left { + text-align: right !important; + } + .text-lg-right { + text-align: left !important; + } + .text-lg-center { + text-align: center !important; + } +} + +@media (min-width: 1280px) { + .text-xl-left { + text-align: right !important; + } + .text-xl-right { + text-align: left !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: #467fcf !important; +} + +a.text-primary:hover, a.text-primary:focus { + color: #295a9f !important; +} + +.text-secondary { + color: #868e96 !important; +} + +a.text-secondary:hover, a.text-secondary:focus { + color: #60686f !important; +} + +.text-success { + color: #5eba00 !important; +} + +a.text-success:hover, a.text-success:focus { + color: #376e00 !important; +} + +.text-info { + color: #45aaf2 !important; +} + +a.text-info:hover, a.text-info:focus { + color: #0f86db !important; +} + +.text-warning { + color: #f1c40f !important; +} + +a.text-warning:hover, a.text-warning:focus { + color: #aa8a0a !important; +} + +.text-danger { + color: #cd201f !important; +} + +a.text-danger:hover, a.text-danger:focus { + color: #8b1615 !important; +} + +.text-light { + color: #f8f9fa !important; +} + +a.text-light:hover, a.text-light:focus { + color: #cbd3da !important; +} + +.text-dark { + color: #343a40 !important; +} + +a.text-dark:hover, a.text-dark:focus { + color: #121416 !important; +} + +.text-body { + color: #495057 !important; +} + +.text-muted { + color: #9aa0ac !important; +} + +.text-black-50 { + color: rgba(0, 0, 0, 0.5) !important; +} + +.text-white-50 { + color: rgba(255, 255, 255, 0.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 { + *, + *::before, + *::after { + text-shadow: none !important; + box-shadow: none !important; + } + a:not(.btn) { + text-decoration: underline; + } + abbr[title]::after { + content: " (" attr(title) ")"; + } + pre { + white-space: pre-wrap !important; + } + pre, + blockquote { + border: 1px solid #adb5bd; + page-break-inside: avoid; + } + thead { + display: table-header-group; + } + tr, + img { + page-break-inside: avoid; + } + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + h2, + h3 { + page-break-after: avoid; + } + @page { + size: a3; + } + body { + min-width: 992px !important; + } + .container { + min-width: 992px !important; + } + .navbar { + display: none; + } + .badge { + border: 1px solid #000; + } + .table, .text-wrap table { + border-collapse: collapse !important; + } + + .table td, + .text-wrap table td, .table th, .text-wrap table th { + background-color: #fff !important; + } + .table-bordered th, .text-wrap table th, + .table-bordered td, + .text-wrap table td { + border: 1px solid #dee2e6 !important; + } + .table-dark { + color: inherit; + } + .table-dark th, + .table-dark td, + .table-dark thead th, + .table-dark tbody + tbody { + border-color: rgba(0, 40, 100, 0.12); + } + .table .thead-dark th, .text-wrap table .thead-dark th { + color: inherit; + border-color: rgba(0, 40, 100, 0.12); + } +} + +html { + font-size: 16px; + height: 100%; + direction: rtl; +} + +body { + direction: rtl; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + -webkit-tap-highlight-color: transparent; + -webkit-text-size-adjust: none; + -ms-touch-action: manipulation; + touch-action: manipulation; + -webkit-font-feature-settings: "liga" 0; + font-feature-settings: "liga" 0; + height: 100%; + overflow-y: scroll; + position: relative; +} + +@media print { + body { + background: none; + } +} + +body *::-webkit-scrollbar { + width: 6px; + height: 6px; + transition: .3s background; +} + +body *::-webkit-scrollbar-thumb { + background: #ced4da; +} + +body *:hover::-webkit-scrollbar-thumb { + background: #adb5bd; +} + +.lead { + line-height: 1.4; +} + +a { + text-decoration-skip-ink: auto; +} + +h1 a, h2 a, h3 a, h4 a, h5 a, h6 a, +.h1 a, .h2 a, .h3 a, .h4 a, .h5 a, .h6 a { + color: inherit; +} + +strong, +b { + font-weight: 600; +} + +p, +ul, +ol, +blockquote { + margin-bottom: 1em; +} + +blockquote { + font-style: italic; + color: #6e7687; + padding-right: 2rem; + border-right: 2px solid rgba(0, 40, 100, 0.12); +} + +blockquote p { + margin-bottom: 1rem; +} + +blockquote cite { + display: block; + text-align: left; +} + +blockquote cite:before { + content: '— '; +} + +code { + background: rgba(0, 0, 0, 0.025); + border: 1px solid rgba(0, 0, 0, 0.05); + border-radius: 3px; + padding: 3px; +} + +pre code { + padding: 0; + border-radius: 0; + border: none; + background: none; +} + +hr { + margin-top: 2rem; + margin-bottom: 2rem; +} + +pre { + color: #343a40; + padding: 1rem; + overflow: auto; + font-size: 85%; + line-height: 1.45; + background-color: #f8fafc; + border-radius: 3px; + -moz-tab-size: 4; + -o-tab-size: 4; + tab-size: 4; + text-shadow: 0 1px white; + -webkit-hyphens: none; + -moz-hyphens: none; + -ms-hyphens: none; + hyphens: none; +} + +img { + max-width: 100%; +} + +.text-wrap { + font-size: 1rem; + line-height: 1.66; +} + +.text-wrap > :first-child { + margin-top: 0; +} + +.text-wrap > :last-child { + margin-bottom: 0; +} + +.text-wrap > h1, .text-wrap > h2, .text-wrap > h3, .text-wrap > h4, .text-wrap > h5, .text-wrap > h6 { + margin-top: 1em; +} + +.section-nav { + background-color: #f8f9fa; + margin: 1rem 0; + padding: .5rem 1rem; + border: 1px solid rgba(0, 40, 100, 0.12); + border-radius: 3px; + list-style: none; +} + +.section-nav:before { + content: 'Table of contents:'; + display: block; + font-weight: 600; +} + +@media print { + .container { + max-width: none; + } +} + +.row-cards > .col, +.row-cards > [class*='col-'] { + display: -ms-flexbox; + display: flex; + -ms-flex-direction: column; + flex-direction: column; +} + +.row-deck > .col, +.row-deck > [class*='col-'] { + display: -ms-flexbox; + display: flex; + -ms-flex-align: stretch; + align-items: stretch; +} + +.row-deck > .col .card, +.row-deck > [class*='col-'] .card { + -ms-flex: 1 1 auto; + flex: 1 1 auto; +} + +.col-text { + max-width: 48rem; +} + +.col-login { + max-width: 24rem; +} + +.gutters-0 { + margin-left: 0; + margin-right: 0; +} + +.gutters-0 > .col, +.gutters-0 > [class*="col-"] { + padding-left: 0; + padding-right: 0; +} + +.gutters-0 .card { + margin-bottom: 0; +} + +.gutters-xs { + margin-left: -0.25rem; + margin-right: -0.25rem; +} + +.gutters-xs > .col, +.gutters-xs > [class*="col-"] { + padding-left: 0.25rem; + padding-right: 0.25rem; +} + +.gutters-xs .card { + margin-bottom: 0.5rem; +} + +.gutters-sm { + margin-left: -0.5rem; + margin-right: -0.5rem; +} + +.gutters-sm > .col, +.gutters-sm > [class*="col-"] { + padding-left: 0.5rem; + padding-right: 0.5rem; +} + +.gutters-sm .card { + margin-bottom: 1rem; +} + +.gutters-lg { + margin-left: -1rem; + margin-right: -1rem; +} + +.gutters-lg > .col, +.gutters-lg > [class*="col-"] { + padding-left: 1rem; + padding-right: 1rem; +} + +.gutters-lg .card { + margin-bottom: 2rem; +} + +.gutters-xl { + margin-left: -1.5rem; + margin-right: -1.5rem; +} + +.gutters-xl > .col, +.gutters-xl > [class*="col-"] { + padding-left: 1.5rem; + padding-right: 1.5rem; +} + +.gutters-xl .card { + margin-bottom: 3rem; +} + +.page { + display: -ms-flexbox; + display: flex; + -ms-flex-direction: column; + flex-direction: column; + -ms-flex-pack: center; + justify-content: center; + min-height: 100%; +} + +body.fixed-header .page { + padding-top: 4.5rem; +} + +@media (min-width: 1600px) { + body.aside-opened .page { + margin-left: 22rem; + } +} + +.page-content { + margin: .75rem 0; +} + +@media (min-width: 768px) { + .page-content { + margin: 1.5rem 0; + } +} + +.page-header { + display: -ms-flexbox; + display: flex; + -ms-flex-align: center; + align-items: center; + margin: 1.5rem 0 1.5rem; + -ms-flex-wrap: wrap; + flex-wrap: wrap; +} + +.page-title { + margin: 0; + font-size: 1.5rem; + font-weight: 400; + line-height: 2.5rem; +} + +.page-title-icon { + color: #9aa0ac; + font-size: 1.25rem; +} + +.page-subtitle { + font-size: 0.8125rem; + color: #6e7687; + margin-right: 2rem; +} + +.page-subtitle a { + color: inherit; +} + +.page-options { + margin-right: auto; +} + +.page-breadcrumb { + -ms-flex-preferred-size: 100%; + flex-basis: 100%; +} + +.page-description { + margin: .25rem 0 0; + color: #6e7687; +} + +.page-description a { + color: inherit; +} + +.page-single { + -ms-flex: 1 1 auto; + flex: 1 1 auto; + display: -ms-flexbox; + display: flex; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: center; + justify-content: center; + padding: 1rem 0; +} + +.content-heading { + font-weight: 400; + margin: 2rem 0 1.5rem; + font-size: 1.25rem; + line-height: 1.25; +} + +.content-heading:first-child { + margin-top: 0; +} + +.aside { + position: fixed; + top: 0; + left: 0; + bottom: 0; + width: 22rem; + background: #ffffff; + border-right: 1px solid rgba(0, 40, 100, 0.12); + display: -ms-flexbox; + display: flex; + -ms-flex-direction: column; + flex-direction: column; + z-index: 100; + visibility: hidden; + box-shadow: 0 0 5px 2px rgba(0, 0, 0, 0.05); +} + +@media (min-width: 1600px) { + body.aside-opened .aside { + visibility: visible; + } +} + +.aside-body { + padding: 1.5rem; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + overflow: auto; +} + +.aside-footer { + padding: 1rem 1.5rem; + border-top: 1px solid rgba(0, 40, 100, 0.12); +} + +.aside-header { + padding: 1rem 1.5rem; + border-bottom: 1px solid rgba(0, 40, 100, 0.12); +} + +.header { + padding-top: .75rem; + padding-bottom: .75rem; + background: #fff; + border-bottom: 1px solid rgba(0, 40, 100, 0.12); +} + +body.fixed-header .header { + position: fixed; + top: 0; + right: 0; + left: 0; + z-index: 1030; +} + +@media print { + .header { + display: none; + } +} + +.header .dropdown-menu { + margin-top: .75rem; +} + +.nav-unread { + position: absolute; + top: .25rem; + left: .25rem; + background: #cd201f; + width: .5rem; + height: .5rem; + border-radius: 50%; +} + +.header-brand { + color: inherit; + margin-left: 1rem; + font-size: 1.25rem; + white-space: nowrap; + font-weight: 600; + padding: 0; + transition: .3s opacity; + line-height: 2rem; +} + +.header-brand:hover { + opacity: .8; + color: inherit; + text-decoration: none; +} + +.header-brand-img { + height: 2rem; + line-height: 2rem; + vertical-align: bottom; + margin-left: .5rem; + width: auto; +} + +.header-avatar { + width: 2rem; + height: 2rem; + display: inline-block; + vertical-align: bottom; + border-radius: 50%; +} + +.header-btn { + display: inline-block; + width: 2rem; + height: 2rem; + line-height: 2rem; + text-align: center; + font-size: 1rem; +} + +.header-btn.has-new { + position: relative; +} + +.header-btn.has-new:before { + content: ''; + width: 6px; + height: 6px; + background: #cd201f; + position: absolute; + top: 4px; + left: 4px; + border-radius: 50%; +} + +.header-toggler { + width: 2rem; + height: 2rem; + position: relative; + color: #9aa0ac; +} + +.header-toggler:hover { + color: #6e7687; +} + +.header-toggler-icon { + position: absolute; + width: 1rem; + height: 2px; + color: inherit; + background: currentColor; + border-radius: 3px; + top: 50%; + right: 50%; + margin: -2px -.5rem 0 0; + box-shadow: 0 5px currentColor, 0 -5px currentColor; +} + +.footer { + background: #fff; + border-top: 1px solid rgba(0, 40, 100, 0.12); + font-size: 0.875rem; + padding: 1.25rem 0; + color: #9aa0ac; +} + +.footer a:not(.btn) { + color: #6e7687; +} + +@media print { + .footer { + display: none; + } +} + +.bg-blue-lightest { + background-color: #edf2fa !important; +} + +a.bg-blue-lightest:hover, a.bg-blue-lightest:focus, +button.bg-blue-lightest:hover, +button.bg-blue-lightest:focus { + background-color: #c5d5ef !important; +} + +.bg-blue-lighter { + background-color: #c8d9f1 !important; +} + +a.bg-blue-lighter:hover, a.bg-blue-lighter:focus, +button.bg-blue-lighter:hover, +button.bg-blue-lighter:focus { + background-color: #9fbde7 !important; +} + +.bg-blue-light { + background-color: #7ea5dd !important; +} + +a.bg-blue-light:hover, a.bg-blue-light:focus, +button.bg-blue-light:hover, +button.bg-blue-light:focus { + background-color: #5689d2 !important; +} + +.bg-blue-dark { + background-color: #3866a6 !important; +} + +a.bg-blue-dark:hover, a.bg-blue-dark:focus, +button.bg-blue-dark:hover, +button.bg-blue-dark:focus { + background-color: #2b4f80 !important; +} + +.bg-blue-darker { + background-color: #1c3353 !important; +} + +a.bg-blue-darker:hover, a.bg-blue-darker:focus, +button.bg-blue-darker:hover, +button.bg-blue-darker:focus { + background-color: #0f1c2d !important; +} + +.bg-blue-darkest { + background-color: #0e1929 !important; +} + +a.bg-blue-darkest:hover, a.bg-blue-darkest:focus, +button.bg-blue-darkest:hover, +button.bg-blue-darkest:focus { + background-color: #010203 !important; +} + +.bg-indigo-lightest { + background-color: #f0f1fa !important; +} + +a.bg-indigo-lightest:hover, a.bg-indigo-lightest:focus, +button.bg-indigo-lightest:hover, +button.bg-indigo-lightest:focus { + background-color: #cacded !important; +} + +.bg-indigo-lighter { + background-color: #d1d5f0 !important; +} + +a.bg-indigo-lighter:hover, a.bg-indigo-lighter:focus, +button.bg-indigo-lighter:hover, +button.bg-indigo-lighter:focus { + background-color: #abb2e3 !important; +} + +.bg-indigo-light { + background-color: #939edc !important; +} + +a.bg-indigo-light:hover, a.bg-indigo-light:focus, +button.bg-indigo-light:hover, +button.bg-indigo-light:focus { + background-color: #6c7bd0 !important; +} + +.bg-indigo-dark { + background-color: #515da4 !important; +} + +a.bg-indigo-dark:hover, a.bg-indigo-dark:focus, +button.bg-indigo-dark:hover, +button.bg-indigo-dark:focus { + background-color: #404a82 !important; +} + +.bg-indigo-darker { + background-color: #282e52 !important; +} + +a.bg-indigo-darker:hover, a.bg-indigo-darker:focus, +button.bg-indigo-darker:hover, +button.bg-indigo-darker:focus { + background-color: #171b30 !important; +} + +.bg-indigo-darkest { + background-color: #141729 !important; +} + +a.bg-indigo-darkest:hover, a.bg-indigo-darkest:focus, +button.bg-indigo-darkest:hover, +button.bg-indigo-darkest:focus { + background-color: #030407 !important; +} + +.bg-purple-lightest { + background-color: #f6effd !important; +} + +a.bg-purple-lightest:hover, a.bg-purple-lightest:focus, +button.bg-purple-lightest:hover, +button.bg-purple-lightest:focus { + background-color: #ddc2f7 !important; +} + +.bg-purple-lighter { + background-color: #e4cff9 !important; +} + +a.bg-purple-lighter:hover, a.bg-purple-lighter:focus, +button.bg-purple-lighter:hover, +button.bg-purple-lighter:focus { + background-color: #cba2f3 !important; +} + +.bg-purple-light { + background-color: #c08ef0 !important; +} + +a.bg-purple-light:hover, a.bg-purple-light:focus, +button.bg-purple-light:hover, +button.bg-purple-light:focus { + background-color: #a761ea !important; +} + +.bg-purple-dark { + background-color: #844bbb !important; +} + +a.bg-purple-dark:hover, a.bg-purple-dark:focus, +button.bg-purple-dark:hover, +button.bg-purple-dark:focus { + background-color: #6a3a99 !important; +} + +.bg-purple-darker { + background-color: #42265e !important; +} + +a.bg-purple-darker:hover, a.bg-purple-darker:focus, +button.bg-purple-darker:hover, +button.bg-purple-darker:focus { + background-color: #29173a !important; +} + +.bg-purple-darkest { + background-color: #21132f !important; +} + +a.bg-purple-darkest:hover, a.bg-purple-darkest:focus, +button.bg-purple-darkest:hover, +button.bg-purple-darkest:focus { + background-color: #08040b !important; +} + +.bg-pink-lightest { + background-color: #fef0f5 !important; +} + +a.bg-pink-lightest:hover, a.bg-pink-lightest:focus, +button.bg-pink-lightest:hover, +button.bg-pink-lightest:focus { + background-color: #fbc0d5 !important; +} + +.bg-pink-lighter { + background-color: #fcd3e1 !important; +} + +a.bg-pink-lighter:hover, a.bg-pink-lighter:focus, +button.bg-pink-lighter:hover, +button.bg-pink-lighter:focus { + background-color: #f9a3c0 !important; +} + +.bg-pink-light { + background-color: #f999b9 !important; +} + +a.bg-pink-light:hover, a.bg-pink-light:focus, +button.bg-pink-light:hover, +button.bg-pink-light:focus { + background-color: #f66998 !important; +} + +.bg-pink-dark { + background-color: #c5577c !important; +} + +a.bg-pink-dark:hover, a.bg-pink-dark:focus, +button.bg-pink-dark:hover, +button.bg-pink-dark:focus { + background-color: #ad3c62 !important; +} + +.bg-pink-darker { + background-color: #622c3e !important; +} + +a.bg-pink-darker:hover, a.bg-pink-darker:focus, +button.bg-pink-darker:hover, +button.bg-pink-darker:focus { + background-color: #3f1c28 !important; +} + +.bg-pink-darkest { + background-color: #31161f !important; +} + +a.bg-pink-darkest:hover, a.bg-pink-darkest:focus, +button.bg-pink-darkest:hover, +button.bg-pink-darkest:focus { + background-color: #0e0609 !important; +} + +.bg-red-lightest { + background-color: #fae9e9 !important; +} + +a.bg-red-lightest:hover, a.bg-red-lightest:focus, +button.bg-red-lightest:hover, +button.bg-red-lightest:focus { + background-color: #f1bfbf !important; +} + +.bg-red-lighter { + background-color: #f0bcbc !important; +} + +a.bg-red-lighter:hover, a.bg-red-lighter:focus, +button.bg-red-lighter:hover, +button.bg-red-lighter:focus { + background-color: #e79292 !important; +} + +.bg-red-light { + background-color: #dc6362 !important; +} + +a.bg-red-light:hover, a.bg-red-light:focus, +button.bg-red-light:hover, +button.bg-red-light:focus { + background-color: #d33a38 !important; +} + +.bg-red-dark { + background-color: #a41a19 !important; +} + +a.bg-red-dark:hover, a.bg-red-dark:focus, +button.bg-red-dark:hover, +button.bg-red-dark:focus { + background-color: #781312 !important; +} + +.bg-red-darker { + background-color: #520d0c !important; +} + +a.bg-red-darker:hover, a.bg-red-darker:focus, +button.bg-red-darker:hover, +button.bg-red-darker:focus { + background-color: #260605 !important; +} + +.bg-red-darkest { + background-color: #290606 !important; +} + +a.bg-red-darkest:hover, a.bg-red-darkest:focus, +button.bg-red-darkest:hover, +button.bg-red-darkest:focus { + background-color: black !important; +} + +.bg-orange-lightest { + background-color: #fff5ec !important; +} + +a.bg-orange-lightest:hover, a.bg-orange-lightest:focus, +button.bg-orange-lightest:hover, +button.bg-orange-lightest:focus { + background-color: peachpuff !important; +} + +.bg-orange-lighter { + background-color: #fee0c7 !important; +} + +a.bg-orange-lighter:hover, a.bg-orange-lighter:focus, +button.bg-orange-lighter:hover, +button.bg-orange-lighter:focus { + background-color: #fdc495 !important; +} + +.bg-orange-light { + background-color: #feb67c !important; +} + +a.bg-orange-light:hover, a.bg-orange-light:focus, +button.bg-orange-light:hover, +button.bg-orange-light:focus { + background-color: #fe9a49 !important; +} + +.bg-orange-dark { + background-color: #ca7836 !important; +} + +a.bg-orange-dark:hover, a.bg-orange-dark:focus, +button.bg-orange-dark:hover, +button.bg-orange-dark:focus { + background-color: #a2602b !important; +} + +.bg-orange-darker { + background-color: #653c1b !important; +} + +a.bg-orange-darker:hover, a.bg-orange-darker:focus, +button.bg-orange-darker:hover, +button.bg-orange-darker:focus { + background-color: #3d2410 !important; +} + +.bg-orange-darkest { + background-color: #331e0e !important; +} + +a.bg-orange-darkest:hover, a.bg-orange-darkest:focus, +button.bg-orange-darkest:hover, +button.bg-orange-darkest:focus { + background-color: #0b0603 !important; +} + +.bg-yellow-lightest { + background-color: #fef9e7 !important; +} + +a.bg-yellow-lightest:hover, a.bg-yellow-lightest:focus, +button.bg-yellow-lightest:hover, +button.bg-yellow-lightest:focus { + background-color: #fcedb6 !important; +} + +.bg-yellow-lighter { + background-color: #fbedb7 !important; +} + +a.bg-yellow-lighter:hover, a.bg-yellow-lighter:focus, +button.bg-yellow-lighter:hover, +button.bg-yellow-lighter:focus { + background-color: #f8e187 !important; +} + +.bg-yellow-light { + background-color: #f5d657 !important; +} + +a.bg-yellow-light:hover, a.bg-yellow-light:focus, +button.bg-yellow-light:hover, +button.bg-yellow-light:focus { + background-color: #f2ca27 !important; +} + +.bg-yellow-dark { + background-color: #c19d0c !important; +} + +a.bg-yellow-dark:hover, a.bg-yellow-dark:focus, +button.bg-yellow-dark:hover, +button.bg-yellow-dark:focus { + background-color: #917609 !important; +} + +.bg-yellow-darker { + background-color: #604e06 !important; +} + +a.bg-yellow-darker:hover, a.bg-yellow-darker:focus, +button.bg-yellow-darker:hover, +button.bg-yellow-darker:focus { + background-color: #302703 !important; +} + +.bg-yellow-darkest { + background-color: #302703 !important; +} + +a.bg-yellow-darkest:hover, a.bg-yellow-darkest:focus, +button.bg-yellow-darkest:hover, +button.bg-yellow-darkest:focus { + background-color: black !important; +} + +.bg-green-lightest { + background-color: #eff8e6 !important; +} + +a.bg-green-lightest:hover, a.bg-green-lightest:focus, +button.bg-green-lightest:hover, +button.bg-green-lightest:focus { + background-color: #d6edbe !important; +} + +.bg-green-lighter { + background-color: #cfeab3 !important; +} + +a.bg-green-lighter:hover, a.bg-green-lighter:focus, +button.bg-green-lighter:hover, +button.bg-green-lighter:focus { + background-color: #b6df8b !important; +} + +.bg-green-light { + background-color: #8ecf4d !important; +} + +a.bg-green-light:hover, a.bg-green-light:focus, +button.bg-green-light:hover, +button.bg-green-light:focus { + background-color: #75b831 !important; +} + +.bg-green-dark { + background-color: #4b9500 !important; +} + +a.bg-green-dark:hover, a.bg-green-dark:focus, +button.bg-green-dark:hover, +button.bg-green-dark:focus { + background-color: #316200 !important; +} + +.bg-green-darker { + background-color: #264a00 !important; +} + +a.bg-green-darker:hover, a.bg-green-darker:focus, +button.bg-green-darker:hover, +button.bg-green-darker:focus { + background-color: #0c1700 !important; +} + +.bg-green-darkest { + background-color: #132500 !important; +} + +a.bg-green-darkest:hover, a.bg-green-darkest:focus, +button.bg-green-darkest:hover, +button.bg-green-darkest:focus { + background-color: black !important; +} + +.bg-teal-lightest { + background-color: #eafaf8 !important; +} + +a.bg-teal-lightest:hover, a.bg-teal-lightest:focus, +button.bg-teal-lightest:hover, +button.bg-teal-lightest:focus { + background-color: #c1f0ea !important; +} + +.bg-teal-lighter { + background-color: #bfefea !important; +} + +a.bg-teal-lighter:hover, a.bg-teal-lighter:focus, +button.bg-teal-lighter:hover, +button.bg-teal-lighter:focus { + background-color: #96e5dd !important; +} + +.bg-teal-light { + background-color: #6bdbcf !important; +} + +a.bg-teal-light:hover, a.bg-teal-light:focus, +button.bg-teal-light:hover, +button.bg-teal-light:focus { + background-color: #42d1c2 !important; +} + +.bg-teal-dark { + background-color: #22a295 !important; +} + +a.bg-teal-dark:hover, a.bg-teal-dark:focus, +button.bg-teal-dark:hover, +button.bg-teal-dark:focus { + background-color: #19786e !important; +} + +.bg-teal-darker { + background-color: #11514a !important; +} + +a.bg-teal-darker:hover, a.bg-teal-darker:focus, +button.bg-teal-darker:hover, +button.bg-teal-darker:focus { + background-color: #082723 !important; +} + +.bg-teal-darkest { + background-color: #092925 !important; +} + +a.bg-teal-darkest:hover, a.bg-teal-darkest:focus, +button.bg-teal-darkest:hover, +button.bg-teal-darkest:focus { + background-color: black !important; +} + +.bg-cyan-lightest { + background-color: #e8f6f8 !important; +} + +a.bg-cyan-lightest:hover, a.bg-cyan-lightest:focus, +button.bg-cyan-lightest:hover, +button.bg-cyan-lightest:focus { + background-color: #c1e7ec !important; +} + +.bg-cyan-lighter { + background-color: #b9e3ea !important; +} + +a.bg-cyan-lighter:hover, a.bg-cyan-lighter:focus, +button.bg-cyan-lighter:hover, +button.bg-cyan-lighter:focus { + background-color: #92d3de !important; +} + +.bg-cyan-light { + background-color: #5dbecd !important; +} + +a.bg-cyan-light:hover, a.bg-cyan-light:focus, +button.bg-cyan-light:hover, +button.bg-cyan-light:focus { + background-color: #3aabbd !important; +} + +.bg-cyan-dark { + background-color: #128293 !important; +} + +a.bg-cyan-dark:hover, a.bg-cyan-dark:focus, +button.bg-cyan-dark:hover, +button.bg-cyan-dark:focus { + background-color: #0c5a66 !important; +} + +.bg-cyan-darker { + background-color: #09414a !important; +} + +a.bg-cyan-darker:hover, a.bg-cyan-darker:focus, +button.bg-cyan-darker:hover, +button.bg-cyan-darker:focus { + background-color: #03191d !important; +} + +.bg-cyan-darkest { + background-color: #052025 !important; +} + +a.bg-cyan-darkest:hover, a.bg-cyan-darkest:focus, +button.bg-cyan-darkest:hover, +button.bg-cyan-darkest:focus { + background-color: black !important; +} + +.bg-white-lightest { + background-color: white !important; +} + +a.bg-white-lightest:hover, a.bg-white-lightest:focus, +button.bg-white-lightest:hover, +button.bg-white-lightest:focus { + background-color: #e6e5e5 !important; +} + +.bg-white-lighter { + background-color: white !important; +} + +a.bg-white-lighter:hover, a.bg-white-lighter:focus, +button.bg-white-lighter:hover, +button.bg-white-lighter:focus { + background-color: #e6e5e5 !important; +} + +.bg-white-light { + background-color: white !important; +} + +a.bg-white-light:hover, a.bg-white-light:focus, +button.bg-white-light:hover, +button.bg-white-light:focus { + background-color: #e6e5e5 !important; +} + +.bg-white-dark { + background-color: #cccccc !important; +} + +a.bg-white-dark:hover, a.bg-white-dark:focus, +button.bg-white-dark:hover, +button.bg-white-dark:focus { + background-color: #b3b2b2 !important; +} + +.bg-white-darker { + background-color: #666666 !important; +} + +a.bg-white-darker:hover, a.bg-white-darker:focus, +button.bg-white-darker:hover, +button.bg-white-darker:focus { + background-color: #4d4c4c !important; +} + +.bg-white-darkest { + background-color: #333333 !important; +} + +a.bg-white-darkest:hover, a.bg-white-darkest:focus, +button.bg-white-darkest:hover, +button.bg-white-darkest:focus { + background-color: #1a1919 !important; +} + +.bg-gray-lightest { + background-color: #f3f4f5 !important; +} + +a.bg-gray-lightest:hover, a.bg-gray-lightest:focus, +button.bg-gray-lightest:hover, +button.bg-gray-lightest:focus { + background-color: #d7dbde !important; +} + +.bg-gray-lighter { + background-color: #dbdde0 !important; +} + +a.bg-gray-lighter:hover, a.bg-gray-lighter:focus, +button.bg-gray-lighter:hover, +button.bg-gray-lighter:focus { + background-color: #c0c3c8 !important; +} + +.bg-gray-light { + background-color: #aab0b6 !important; +} + +a.bg-gray-light:hover, a.bg-gray-light:focus, +button.bg-gray-light:hover, +button.bg-gray-light:focus { + background-color: #8f979e !important; +} + +.bg-gray-dark { + background-color: #6b7278 !important; +} + +a.bg-gray-dark:hover, a.bg-gray-dark:focus, +button.bg-gray-dark:hover, +button.bg-gray-dark:focus { + background-color: #53585d !important; +} + +.bg-gray-darker { + background-color: #36393c !important; +} + +a.bg-gray-darker:hover, a.bg-gray-darker:focus, +button.bg-gray-darker:hover, +button.bg-gray-darker:focus { + background-color: #1e2021 !important; +} + +.bg-gray-darkest { + background-color: #1b1c1e !important; +} + +a.bg-gray-darkest:hover, a.bg-gray-darkest:focus, +button.bg-gray-darkest:hover, +button.bg-gray-darkest:focus { + background-color: #030303 !important; +} + +.bg-gray-dark-lightest { + background-color: #ebebec !important; +} + +a.bg-gray-dark-lightest:hover, a.bg-gray-dark-lightest:focus, +button.bg-gray-dark-lightest:hover, +button.bg-gray-dark-lightest:focus { + background-color: #d1d1d3 !important; +} + +.bg-gray-dark-lighter { + background-color: #c2c4c6 !important; +} + +a.bg-gray-dark-lighter:hover, a.bg-gray-dark-lighter:focus, +button.bg-gray-dark-lighter:hover, +button.bg-gray-dark-lighter:focus { + background-color: #a8abad !important; +} + +.bg-gray-dark-light { + background-color: #717579 !important; +} + +a.bg-gray-dark-light:hover, a.bg-gray-dark-light:focus, +button.bg-gray-dark-light:hover, +button.bg-gray-dark-light:focus { + background-color: #585c5f !important; +} + +.bg-gray-dark-dark { + background-color: #2a2e33 !important; +} + +a.bg-gray-dark-dark:hover, a.bg-gray-dark-dark:focus, +button.bg-gray-dark-dark:hover, +button.bg-gray-dark-dark:focus { + background-color: #131517 !important; +} + +.bg-gray-dark-darker { + background-color: #15171a !important; +} + +a.bg-gray-dark-darker:hover, a.bg-gray-dark-darker:focus, +button.bg-gray-dark-darker:hover, +button.bg-gray-dark-darker:focus { + background-color: black !important; +} + +.bg-gray-dark-darkest { + background-color: #0a0c0d !important; +} + +a.bg-gray-dark-darkest:hover, a.bg-gray-dark-darkest:focus, +button.bg-gray-dark-darkest:hover, +button.bg-gray-dark-darkest:focus { + background-color: black !important; +} + +.bg-azure-lightest { + background-color: #ecf7fe !important; +} + +a.bg-azure-lightest:hover, a.bg-azure-lightest:focus, +button.bg-azure-lightest:hover, +button.bg-azure-lightest:focus { + background-color: #bce3fb !important; +} + +.bg-azure-lighter { + background-color: #c7e6fb !important; +} + +a.bg-azure-lighter:hover, a.bg-azure-lighter:focus, +button.bg-azure-lighter:hover, +button.bg-azure-lighter:focus { + background-color: #97d1f8 !important; +} + +.bg-azure-light { + background-color: #7dc4f6 !important; +} + +a.bg-azure-light:hover, a.bg-azure-light:focus, +button.bg-azure-light:hover, +button.bg-azure-light:focus { + background-color: #4daef3 !important; +} + +.bg-azure-dark { + background-color: #3788c2 !important; +} + +a.bg-azure-dark:hover, a.bg-azure-dark:focus, +button.bg-azure-dark:hover, +button.bg-azure-dark:focus { + background-color: #2c6c9a !important; +} + +.bg-azure-darker { + background-color: #1c4461 !important; +} + +a.bg-azure-darker:hover, a.bg-azure-darker:focus, +button.bg-azure-darker:hover, +button.bg-azure-darker:focus { + background-color: #112839 !important; +} + +.bg-azure-darkest { + background-color: #0e2230 !important; +} + +a.bg-azure-darkest:hover, a.bg-azure-darkest:focus, +button.bg-azure-darkest:hover, +button.bg-azure-darkest:focus { + background-color: #020609 !important; +} + +.bg-lime-lightest { + background-color: #f2fbeb !important; +} + +a.bg-lime-lightest:hover, a.bg-lime-lightest:focus, +button.bg-lime-lightest:hover, +button.bg-lime-lightest:focus { + background-color: #d6f3c1 !important; +} + +.bg-lime-lighter { + background-color: #d7f2c2 !important; +} + +a.bg-lime-lighter:hover, a.bg-lime-lighter:focus, +button.bg-lime-lighter:hover, +button.bg-lime-lighter:focus { + background-color: #bbe998 !important; +} + +.bg-lime-light { + background-color: #a3e072 !important; +} + +a.bg-lime-light:hover, a.bg-lime-light:focus, +button.bg-lime-light:hover, +button.bg-lime-light:focus { + background-color: #88d748 !important; +} + +.bg-lime-dark { + background-color: #62a82a !important; +} + +a.bg-lime-dark:hover, a.bg-lime-dark:focus, +button.bg-lime-dark:hover, +button.bg-lime-dark:focus { + background-color: #4a7f20 !important; +} + +.bg-lime-darker { + background-color: #315415 !important; +} + +a.bg-lime-darker:hover, a.bg-lime-darker:focus, +button.bg-lime-darker:hover, +button.bg-lime-darker:focus { + background-color: #192b0b !important; +} + +.bg-lime-darkest { + background-color: #192a0b !important; +} + +a.bg-lime-darkest:hover, a.bg-lime-darkest:focus, +button.bg-lime-darkest:hover, +button.bg-lime-darkest:focus { + background-color: #010200 !important; +} + +.display-1 i, +.display-2 i, +.display-3 i, +.display-4 i { + vertical-align: baseline; + font-size: 0.815em; +} + +.text-inherit { + color: inherit !important; +} + +.text-default { + color: #495057 !important; +} + +.text-muted-dark { + color: #6e7687 !important; +} + +.tracking-tight { + letter-spacing: -0.05em !important; +} + +.tracking-normal { + letter-spacing: 0 !important; +} + +.tracking-wide { + letter-spacing: 0.05em !important; +} + +.leading-none { + line-height: 1 !important; +} + +.leading-tight { + line-height: 1.25 !important; +} + +.leading-normal { + line-height: 1.5 !important; +} + +.leading-loose { + line-height: 2 !important; +} + +.bg-blue { + background-color: #467fcf !important; +} + +a.bg-blue:hover, a.bg-blue:focus, +button.bg-blue:hover, +button.bg-blue:focus { + background-color: #2f66b3 !important; +} + +.text-blue { + color: #467fcf !important; +} + +.bg-indigo { + background-color: #6574cd !important; +} + +a.bg-indigo:hover, a.bg-indigo:focus, +button.bg-indigo:hover, +button.bg-indigo:focus { + background-color: #3f51c1 !important; +} + +.text-indigo { + color: #6574cd !important; +} + +.bg-purple { + background-color: #a55eea !important; +} + +a.bg-purple:hover, a.bg-purple:focus, +button.bg-purple:hover, +button.bg-purple:focus { + background-color: #8c31e4 !important; +} + +.text-purple { + color: #a55eea !important; +} + +.bg-pink { + background-color: #f66d9b !important; +} + +a.bg-pink:hover, a.bg-pink:focus, +button.bg-pink:hover, +button.bg-pink:focus { + background-color: #f33d7a !important; +} + +.text-pink { + color: #f66d9b !important; +} + +.bg-red { + background-color: #cd201f !important; +} + +a.bg-red:hover, a.bg-red:focus, +button.bg-red:hover, +button.bg-red:focus { + background-color: #a11918 !important; +} + +.text-red { + color: #cd201f !important; +} + +.bg-orange { + background-color: #fd9644 !important; +} + +a.bg-orange:hover, a.bg-orange:focus, +button.bg-orange:hover, +button.bg-orange:focus { + background-color: #fc7a12 !important; +} + +.text-orange { + color: #fd9644 !important; +} + +.bg-yellow { + background-color: #f1c40f !important; +} + +a.bg-yellow:hover, a.bg-yellow:focus, +button.bg-yellow:hover, +button.bg-yellow:focus { + background-color: #c29d0b !important; +} + +.text-yellow { + color: #f1c40f !important; +} + +.bg-green { + background-color: #5eba00 !important; +} + +a.bg-green:hover, a.bg-green:focus, +button.bg-green:hover, +button.bg-green:focus { + background-color: #448700 !important; +} + +.text-green { + color: #5eba00 !important; +} + +.bg-teal { + background-color: #2bcbba !important; +} + +a.bg-teal:hover, a.bg-teal:focus, +button.bg-teal:hover, +button.bg-teal:focus { + background-color: #22a193 !important; +} + +.text-teal { + color: #2bcbba !important; +} + +.bg-cyan { + background-color: #17a2b8 !important; +} + +a.bg-cyan:hover, a.bg-cyan:focus, +button.bg-cyan:hover, +button.bg-cyan:focus { + background-color: #117a8b !important; +} + +.text-cyan { + color: #17a2b8 !important; +} + +.bg-white { + background-color: #fff !important; +} + +a.bg-white:hover, a.bg-white:focus, +button.bg-white:hover, +button.bg-white:focus { + background-color: #e6e5e5 !important; +} + +.text-white { + color: #fff !important; +} + +.bg-gray { + background-color: #868e96 !important; +} + +a.bg-gray:hover, a.bg-gray:focus, +button.bg-gray:hover, +button.bg-gray:focus { + background-color: #6c757d !important; +} + +.text-gray { + color: #868e96 !important; +} + +.bg-gray-dark { + background-color: #343a40 !important; +} + +a.bg-gray-dark:hover, a.bg-gray-dark:focus, +button.bg-gray-dark:hover, +button.bg-gray-dark:focus { + background-color: #1d2124 !important; +} + +.text-gray-dark { + color: #343a40 !important; +} + +.bg-azure { + background-color: #45aaf2 !important; +} + +a.bg-azure:hover, a.bg-azure:focus, +button.bg-azure:hover, +button.bg-azure:focus { + background-color: #1594ef !important; +} + +.text-azure { + color: #45aaf2 !important; +} + +.bg-lime { + background-color: #7bd235 !important; +} + +a.bg-lime:hover, a.bg-lime:focus, +button.bg-lime:hover, +button.bg-lime:focus { + background-color: #63ad27 !important; +} + +.text-lime { + color: #7bd235 !important; +} + +.icon { + color: #9aa0ac !important; +} + +.icon i { + vertical-align: -1px; +} + +a.icon { + text-decoration: none; + cursor: pointer; +} + +a.icon:hover { + color: #495057 !important; +} + +.o-auto { + overflow: auto !important; +} + +.o-hidden { + overflow: hidden !important; +} + +.shadow { + box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05) !important; +} + +.shadow-none { + box-shadow: none !important; +} + +.nav-link, +.nav-item { + padding: 0 .75rem; + min-width: 2rem; + transition: .3s color; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + display: -ms-flexbox; + display: flex; + -ms-flex-align: center; + align-items: center; +} + +.nav-link .badge, +.nav-item .badge { + position: absolute; + top: 0; + left: 0; + padding: .2rem .25rem; + min-width: 1rem; +} + +.nav-tabs { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + color: #9aa0ac; + margin: 0 -.75rem; +} + +.nav-tabs .nav-link { + border: 0; + color: inherit; + border-bottom: 1px solid transparent; + margin-bottom: -1px; + transition: .3s border-color; + font-weight: 400; + padding: 1rem 0; +} + +.nav-tabs .nav-link:hover:not(.disabled) { + border-color: #6e7687; + color: #6e7687; +} + +.nav-tabs .nav-link.active { + border-color: #467fcf; + color: #467fcf; + background: transparent; +} + +.nav-tabs .nav-link.disabled { + opacity: .4; + cursor: default; + pointer-events: none; +} + +.nav-tabs .nav-item { + margin-bottom: 0; + position: relative; +} + +.nav-tabs .nav-item i { + margin-left: .25rem; + line-height: 1; + font-size: 0.875rem; + width: 0.875rem; + vertical-align: baseline; + display: inline-block; +} + +.nav-tabs .nav-item:hover .nav-submenu { + display: block; +} + +.nav-tabs .nav-submenu { + display: none; + position: absolute; + background: #fff; + border: 1px solid rgba(0, 40, 100, 0.12); + border-top: none; + z-index: 10; + box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05); + min-width: 10rem; + border-radius: 0 0 3px 3px; +} + +.nav-tabs .nav-submenu .nav-item { + display: block; + padding: .5rem 1rem; + color: #9aa0ac; + margin: 0 !important; + cursor: pointer; + transition: .3s background; +} + +.nav-tabs .nav-submenu .nav-item.active { + color: #467fcf; +} + +.nav-tabs .nav-submenu .nav-item:hover { + color: #6e7687; + text-decoration: none; + background: rgba(0, 0, 0, 0.024); +} + +.btn, .dataTables_wrapper .dataTables_paginate .paginate_button, .dataTables_wrapper .dataTables_paginate .paginate_button.current { + cursor: pointer; + font-weight: 600; + letter-spacing: .03em; + font-size: 0.8125rem; + min-width: 2.375rem; +} + +.btn i, .dataTables_wrapper .dataTables_paginate .paginate_button i, .dataTables_wrapper .dataTables_paginate .paginate_button.current i { + font-size: 1rem; + vertical-align: -2px; +} + +.btn-icon { + padding-right: .5rem; + padding-left: .5rem; + text-align: center; +} + +.btn-secondary, .dataTables_wrapper .dataTables_paginate .paginate_button { + color: #495057; + background-color: #fff; + border-color: rgba(0, 40, 100, 0.12); + box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.05); +} + +.btn-secondary:hover, .dataTables_wrapper .dataTables_paginate .paginate_button:hover { + color: #495057; + background-color: #f6f6f6; + border-color: rgba(0, 20, 49, 0.12); +} + +.btn-secondary:focus, .dataTables_wrapper .dataTables_paginate .paginate_button:focus, .btn-secondary.focus, .dataTables_wrapper .dataTables_paginate .focus.paginate_button { + box-shadow: 0 0 0 2px rgba(54, 69, 90, 0.5); +} + +.btn-secondary.disabled, .dataTables_wrapper .dataTables_paginate .disabled.paginate_button, .btn-secondary:disabled, .dataTables_wrapper .dataTables_paginate .paginate_button:disabled { + color: #495057; + background-color: #fff; + border-color: rgba(0, 40, 100, 0.12); +} + +.btn-secondary:not(:disabled):not(.disabled):active, .dataTables_wrapper .dataTables_paginate .paginate_button:not(:disabled):not(.disabled):active, .btn-secondary:not(:disabled):not(.disabled).active, .dataTables_wrapper .dataTables_paginate .paginate_button:not(:disabled):not(.disabled).active, +.show > .btn-secondary.dropdown-toggle, +.dataTables_wrapper .dataTables_paginate .show > .dropdown-toggle.paginate_button { + color: #495057; + background-color: #e6e5e5; + border-color: rgba(0, 15, 36, 0.12); +} + +.btn-secondary:not(:disabled):not(.disabled):active:focus, .dataTables_wrapper .dataTables_paginate .paginate_button:not(:disabled):not(.disabled):active:focus, .btn-secondary:not(:disabled):not(.disabled).active:focus, .dataTables_wrapper .dataTables_paginate .paginate_button:not(:disabled):not(.disabled).active:focus, +.show > .btn-secondary.dropdown-toggle:focus, +.dataTables_wrapper .dataTables_paginate .show > .dropdown-toggle.paginate_button:focus { + box-shadow: 0 0 0 2px rgba(54, 69, 90, 0.5); +} + +.btn-pill { + border-radius: 10rem; + padding-right: 1.5em; + padding-left: 1.5em; +} + +.btn-square { + border-radius: 0; +} + +.btn-facebook { + color: #fff; + background-color: #3b5998; + border-color: #3b5998; +} + +.btn-facebook:hover { + color: #fff; + background-color: #30497c; + border-color: #2d4373; +} + +.btn-facebook:focus, .btn-facebook.focus { + box-shadow: 0 0 0 2px rgba(88, 114, 167, 0.5); +} + +.btn-facebook.disabled, .btn-facebook:disabled { + color: #fff; + background-color: #3b5998; + border-color: #3b5998; +} + +.btn-facebook:not(:disabled):not(.disabled):active, .btn-facebook:not(:disabled):not(.disabled).active, +.show > .btn-facebook.dropdown-toggle { + color: #fff; + background-color: #2d4373; + border-color: #293e6a; +} + +.btn-facebook:not(:disabled):not(.disabled):active:focus, .btn-facebook:not(:disabled):not(.disabled).active:focus, +.show > .btn-facebook.dropdown-toggle:focus { + box-shadow: 0 0 0 2px rgba(88, 114, 167, 0.5); +} + +.btn-twitter { + color: #fff; + background-color: #1da1f2; + border-color: #1da1f2; +} + +.btn-twitter:hover { + color: #fff; + background-color: #0d8ddc; + border-color: #0c85d0; +} + +.btn-twitter:focus, .btn-twitter.focus { + box-shadow: 0 0 0 2px rgba(63, 175, 244, 0.5); +} + +.btn-twitter.disabled, .btn-twitter:disabled { + color: #fff; + background-color: #1da1f2; + border-color: #1da1f2; +} + +.btn-twitter:not(:disabled):not(.disabled):active, .btn-twitter:not(:disabled):not(.disabled).active, +.show > .btn-twitter.dropdown-toggle { + color: #fff; + background-color: #0c85d0; + border-color: #0b7ec4; +} + +.btn-twitter:not(:disabled):not(.disabled):active:focus, .btn-twitter:not(:disabled):not(.disabled).active:focus, +.show > .btn-twitter.dropdown-toggle:focus { + box-shadow: 0 0 0 2px rgba(63, 175, 244, 0.5); +} + +.btn-google { + color: #fff; + background-color: #dc4e41; + border-color: #dc4e41; +} + +.btn-google:hover { + color: #fff; + background-color: #d03526; + border-color: #c63224; +} + +.btn-google:focus, .btn-google.focus { + box-shadow: 0 0 0 2px rgba(225, 105, 94, 0.5); +} + +.btn-google.disabled, .btn-google:disabled { + color: #fff; + background-color: #dc4e41; + border-color: #dc4e41; +} + +.btn-google:not(:disabled):not(.disabled):active, .btn-google:not(:disabled):not(.disabled).active, +.show > .btn-google.dropdown-toggle { + color: #fff; + background-color: #c63224; + border-color: #bb2f22; +} + +.btn-google:not(:disabled):not(.disabled):active:focus, .btn-google:not(:disabled):not(.disabled).active:focus, +.show > .btn-google.dropdown-toggle:focus { + box-shadow: 0 0 0 2px rgba(225, 105, 94, 0.5); +} + +.btn-youtube { + color: #fff; + background-color: #f00; + border-color: #f00; +} + +.btn-youtube:hover { + color: #fff; + background-color: #d90000; + border-color: #cc0000; +} + +.btn-youtube:focus, .btn-youtube.focus { + box-shadow: 0 0 0 2px rgba(255, 38, 38, 0.5); +} + +.btn-youtube.disabled, .btn-youtube:disabled { + color: #fff; + background-color: #f00; + border-color: #f00; +} + +.btn-youtube:not(:disabled):not(.disabled):active, .btn-youtube:not(:disabled):not(.disabled).active, +.show > .btn-youtube.dropdown-toggle { + color: #fff; + background-color: #cc0000; + border-color: #bf0000; +} + +.btn-youtube:not(:disabled):not(.disabled):active:focus, .btn-youtube:not(:disabled):not(.disabled).active:focus, +.show > .btn-youtube.dropdown-toggle:focus { + box-shadow: 0 0 0 2px rgba(255, 38, 38, 0.5); +} + +.btn-vimeo { + color: #fff; + background-color: #1ab7ea; + border-color: #1ab7ea; +} + +.btn-vimeo:hover { + color: #fff; + background-color: #139ecb; + border-color: #1295bf; +} + +.btn-vimeo:focus, .btn-vimeo.focus { + box-shadow: 0 0 0 2px rgba(60, 194, 237, 0.5); +} + +.btn-vimeo.disabled, .btn-vimeo:disabled { + color: #fff; + background-color: #1ab7ea; + border-color: #1ab7ea; +} + +.btn-vimeo:not(:disabled):not(.disabled):active, .btn-vimeo:not(:disabled):not(.disabled).active, +.show > .btn-vimeo.dropdown-toggle { + color: #fff; + background-color: #1295bf; + border-color: #108cb4; +} + +.btn-vimeo:not(:disabled):not(.disabled):active:focus, .btn-vimeo:not(:disabled):not(.disabled).active:focus, +.show > .btn-vimeo.dropdown-toggle:focus { + box-shadow: 0 0 0 2px rgba(60, 194, 237, 0.5); +} + +.btn-dribbble { + color: #fff; + background-color: #ea4c89; + border-color: #ea4c89; +} + +.btn-dribbble:hover { + color: #fff; + background-color: #e62a72; + border-color: #e51e6b; +} + +.btn-dribbble:focus, .btn-dribbble.focus { + box-shadow: 0 0 0 2px rgba(237, 103, 155, 0.5); +} + +.btn-dribbble.disabled, .btn-dribbble:disabled { + color: #fff; + background-color: #ea4c89; + border-color: #ea4c89; +} + +.btn-dribbble:not(:disabled):not(.disabled):active, .btn-dribbble:not(:disabled):not(.disabled).active, +.show > .btn-dribbble.dropdown-toggle { + color: #fff; + background-color: #e51e6b; + border-color: #dc1a65; +} + +.btn-dribbble:not(:disabled):not(.disabled):active:focus, .btn-dribbble:not(:disabled):not(.disabled).active:focus, +.show > .btn-dribbble.dropdown-toggle:focus { + box-shadow: 0 0 0 2px rgba(237, 103, 155, 0.5); +} + +.btn-github { + color: #fff; + background-color: #181717; + border-color: #181717; +} + +.btn-github:hover { + color: #fff; + background-color: #040404; + border-color: black; +} + +.btn-github:focus, .btn-github.focus { + box-shadow: 0 0 0 2px rgba(59, 58, 58, 0.5); +} + +.btn-github.disabled, .btn-github:disabled { + color: #fff; + background-color: #181717; + border-color: #181717; +} + +.btn-github:not(:disabled):not(.disabled):active, .btn-github:not(:disabled):not(.disabled).active, +.show > .btn-github.dropdown-toggle { + color: #fff; + background-color: black; + border-color: black; +} + +.btn-github:not(:disabled):not(.disabled):active:focus, .btn-github:not(:disabled):not(.disabled).active:focus, +.show > .btn-github.dropdown-toggle:focus { + box-shadow: 0 0 0 2px rgba(59, 58, 58, 0.5); +} + +.btn-instagram { + color: #fff; + background-color: #e4405f; + border-color: #e4405f; +} + +.btn-instagram:hover { + color: #fff; + background-color: #de1f44; + border-color: #d31e40; +} + +.btn-instagram:focus, .btn-instagram.focus { + box-shadow: 0 0 0 2px rgba(232, 93, 119, 0.5); +} + +.btn-instagram.disabled, .btn-instagram:disabled { + color: #fff; + background-color: #e4405f; + border-color: #e4405f; +} + +.btn-instagram:not(:disabled):not(.disabled):active, .btn-instagram:not(:disabled):not(.disabled).active, +.show > .btn-instagram.dropdown-toggle { + color: #fff; + background-color: #d31e40; + border-color: #c81c3d; +} + +.btn-instagram:not(:disabled):not(.disabled):active:focus, .btn-instagram:not(:disabled):not(.disabled).active:focus, +.show > .btn-instagram.dropdown-toggle:focus { + box-shadow: 0 0 0 2px rgba(232, 93, 119, 0.5); +} + +.btn-pinterest { + color: #fff; + background-color: #bd081c; + border-color: #bd081c; +} + +.btn-pinterest:hover { + color: #fff; + background-color: #980617; + border-color: #8c0615; +} + +.btn-pinterest:focus, .btn-pinterest.focus { + box-shadow: 0 0 0 2px rgba(199, 45, 62, 0.5); +} + +.btn-pinterest.disabled, .btn-pinterest:disabled { + color: #fff; + background-color: #bd081c; + border-color: #bd081c; +} + +.btn-pinterest:not(:disabled):not(.disabled):active, .btn-pinterest:not(:disabled):not(.disabled).active, +.show > .btn-pinterest.dropdown-toggle { + color: #fff; + background-color: #8c0615; + border-color: #800513; +} + +.btn-pinterest:not(:disabled):not(.disabled):active:focus, .btn-pinterest:not(:disabled):not(.disabled).active:focus, +.show > .btn-pinterest.dropdown-toggle:focus { + box-shadow: 0 0 0 2px rgba(199, 45, 62, 0.5); +} + +.btn-vk { + color: #fff; + background-color: #6383a8; + border-color: #6383a8; +} + +.btn-vk:hover { + color: #fff; + background-color: #527093; + border-color: #4d6a8b; +} + +.btn-vk:focus, .btn-vk.focus { + box-shadow: 0 0 0 2px rgba(122, 150, 181, 0.5); +} + +.btn-vk.disabled, .btn-vk:disabled { + color: #fff; + background-color: #6383a8; + border-color: #6383a8; +} + +.btn-vk:not(:disabled):not(.disabled):active, .btn-vk:not(:disabled):not(.disabled).active, +.show > .btn-vk.dropdown-toggle { + color: #fff; + background-color: #4d6a8b; + border-color: #496482; +} + +.btn-vk:not(:disabled):not(.disabled):active:focus, .btn-vk:not(:disabled):not(.disabled).active:focus, +.show > .btn-vk.dropdown-toggle:focus { + box-shadow: 0 0 0 2px rgba(122, 150, 181, 0.5); +} + +.btn-rss { + color: #fff; + background-color: #ffa500; + border-color: #ffa500; +} + +.btn-rss:hover { + color: #fff; + background-color: #d98c00; + border-color: #cc8400; +} + +.btn-rss:focus, .btn-rss.focus { + box-shadow: 0 0 0 2px rgba(255, 179, 38, 0.5); +} + +.btn-rss.disabled, .btn-rss:disabled { + color: #fff; + background-color: #ffa500; + border-color: #ffa500; +} + +.btn-rss:not(:disabled):not(.disabled):active, .btn-rss:not(:disabled):not(.disabled).active, +.show > .btn-rss.dropdown-toggle { + color: #fff; + background-color: #cc8400; + border-color: #bf7c00; +} + +.btn-rss:not(:disabled):not(.disabled):active:focus, .btn-rss:not(:disabled):not(.disabled).active:focus, +.show > .btn-rss.dropdown-toggle:focus { + box-shadow: 0 0 0 2px rgba(255, 179, 38, 0.5); +} + +.btn-flickr { + color: #fff; + background-color: #0063dc; + border-color: #0063dc; +} + +.btn-flickr:hover { + color: #fff; + background-color: #0052b6; + border-color: #004ca9; +} + +.btn-flickr:focus, .btn-flickr.focus { + box-shadow: 0 0 0 2px rgba(38, 122, 225, 0.5); +} + +.btn-flickr.disabled, .btn-flickr:disabled { + color: #fff; + background-color: #0063dc; + border-color: #0063dc; +} + +.btn-flickr:not(:disabled):not(.disabled):active, .btn-flickr:not(:disabled):not(.disabled).active, +.show > .btn-flickr.dropdown-toggle { + color: #fff; + background-color: #004ca9; + border-color: #00469c; +} + +.btn-flickr:not(:disabled):not(.disabled):active:focus, .btn-flickr:not(:disabled):not(.disabled).active:focus, +.show > .btn-flickr.dropdown-toggle:focus { + box-shadow: 0 0 0 2px rgba(38, 122, 225, 0.5); +} + +.btn-bitbucket { + color: #fff; + background-color: #0052cc; + border-color: #0052cc; +} + +.btn-bitbucket:hover { + color: #fff; + background-color: #0043a6; + border-color: #003e99; +} + +.btn-bitbucket:focus, .btn-bitbucket.focus { + box-shadow: 0 0 0 2px rgba(38, 108, 212, 0.5); +} + +.btn-bitbucket.disabled, .btn-bitbucket:disabled { + color: #fff; + background-color: #0052cc; + border-color: #0052cc; +} + +.btn-bitbucket:not(:disabled):not(.disabled):active, .btn-bitbucket:not(:disabled):not(.disabled).active, +.show > .btn-bitbucket.dropdown-toggle { + color: #fff; + background-color: #003e99; + border-color: #00388c; +} + +.btn-bitbucket:not(:disabled):not(.disabled):active:focus, .btn-bitbucket:not(:disabled):not(.disabled).active:focus, +.show > .btn-bitbucket.dropdown-toggle:focus { + box-shadow: 0 0 0 2px rgba(38, 108, 212, 0.5); +} + +.btn-blue { + color: #fff; + background-color: #467fcf; + border-color: #467fcf; +} + +.btn-blue:hover { + color: #fff; + background-color: #316cbe; + border-color: #2f66b3; +} + +.btn-blue:focus, .btn-blue.focus { + box-shadow: 0 0 0 2px rgba(98, 146, 214, 0.5); +} + +.btn-blue.disabled, .btn-blue:disabled { + color: #fff; + background-color: #467fcf; + border-color: #467fcf; +} + +.btn-blue:not(:disabled):not(.disabled):active, .btn-blue:not(:disabled):not(.disabled).active, +.show > .btn-blue.dropdown-toggle { + color: #fff; + background-color: #2f66b3; + border-color: #2c60a9; +} + +.btn-blue:not(:disabled):not(.disabled):active:focus, .btn-blue:not(:disabled):not(.disabled).active:focus, +.show > .btn-blue.dropdown-toggle:focus { + box-shadow: 0 0 0 2px rgba(98, 146, 214, 0.5); +} + +.btn-indigo { + color: #fff; + background-color: #6574cd; + border-color: #6574cd; +} + +.btn-indigo:hover { + color: #fff; + background-color: #485ac4; + border-color: #3f51c1; +} + +.btn-indigo:focus, .btn-indigo.focus { + box-shadow: 0 0 0 2px rgba(124, 137, 213, 0.5); +} + +.btn-indigo.disabled, .btn-indigo:disabled { + color: #fff; + background-color: #6574cd; + border-color: #6574cd; +} + +.btn-indigo:not(:disabled):not(.disabled):active, .btn-indigo:not(:disabled):not(.disabled).active, +.show > .btn-indigo.dropdown-toggle { + color: #fff; + background-color: #3f51c1; + border-color: #3b4db7; +} + +.btn-indigo:not(:disabled):not(.disabled):active:focus, .btn-indigo:not(:disabled):not(.disabled).active:focus, +.show > .btn-indigo.dropdown-toggle:focus { + box-shadow: 0 0 0 2px rgba(124, 137, 213, 0.5); +} + +.btn-purple { + color: #fff; + background-color: #a55eea; + border-color: #a55eea; +} + +.btn-purple:hover { + color: #fff; + background-color: #923ce6; + border-color: #8c31e4; +} + +.btn-purple:focus, .btn-purple.focus { + box-shadow: 0 0 0 2px rgba(179, 118, 237, 0.5); +} + +.btn-purple.disabled, .btn-purple:disabled { + color: #fff; + background-color: #a55eea; + border-color: #a55eea; +} + +.btn-purple:not(:disabled):not(.disabled):active, .btn-purple:not(:disabled):not(.disabled).active, +.show > .btn-purple.dropdown-toggle { + color: #fff; + background-color: #8c31e4; + border-color: #8526e3; +} + +.btn-purple:not(:disabled):not(.disabled):active:focus, .btn-purple:not(:disabled):not(.disabled).active:focus, +.show > .btn-purple.dropdown-toggle:focus { + box-shadow: 0 0 0 2px rgba(179, 118, 237, 0.5); +} + +.btn-pink { + color: #fff; + background-color: #f66d9b; + border-color: #f66d9b; +} + +.btn-pink:hover { + color: #fff; + background-color: #f44982; + border-color: #f33d7a; +} + +.btn-pink:focus, .btn-pink.focus { + box-shadow: 0 0 0 2px rgba(247, 131, 170, 0.5); +} + +.btn-pink.disabled, .btn-pink:disabled { + color: #fff; + background-color: #f66d9b; + border-color: #f66d9b; +} + +.btn-pink:not(:disabled):not(.disabled):active, .btn-pink:not(:disabled):not(.disabled).active, +.show > .btn-pink.dropdown-toggle { + color: #fff; + background-color: #f33d7a; + border-color: #f23172; +} + +.btn-pink:not(:disabled):not(.disabled):active:focus, .btn-pink:not(:disabled):not(.disabled).active:focus, +.show > .btn-pink.dropdown-toggle:focus { + box-shadow: 0 0 0 2px rgba(247, 131, 170, 0.5); +} + +.btn-red { + color: #fff; + background-color: #cd201f; + border-color: #cd201f; +} + +.btn-red:hover { + color: #fff; + background-color: #ac1b1a; + border-color: #a11918; +} + +.btn-red:focus, .btn-red.focus { + box-shadow: 0 0 0 2px rgba(213, 65, 65, 0.5); +} + +.btn-red.disabled, .btn-red:disabled { + color: #fff; + background-color: #cd201f; + border-color: #cd201f; +} + +.btn-red:not(:disabled):not(.disabled):active, .btn-red:not(:disabled):not(.disabled).active, +.show > .btn-red.dropdown-toggle { + color: #fff; + background-color: #a11918; + border-color: #961717; +} + +.btn-red:not(:disabled):not(.disabled):active:focus, .btn-red:not(:disabled):not(.disabled).active:focus, +.show > .btn-red.dropdown-toggle:focus { + box-shadow: 0 0 0 2px rgba(213, 65, 65, 0.5); +} + +.btn-orange { + color: #fff; + background-color: #fd9644; + border-color: #fd9644; +} + +.btn-orange:hover { + color: #fff; + background-color: #fd811e; + border-color: #fc7a12; +} + +.btn-orange:focus, .btn-orange.focus { + box-shadow: 0 0 0 2px rgba(253, 166, 96, 0.5); +} + +.btn-orange.disabled, .btn-orange:disabled { + color: #fff; + background-color: #fd9644; + border-color: #fd9644; +} + +.btn-orange:not(:disabled):not(.disabled):active, .btn-orange:not(:disabled):not(.disabled).active, +.show > .btn-orange.dropdown-toggle { + color: #fff; + background-color: #fc7a12; + border-color: #fc7305; +} + +.btn-orange:not(:disabled):not(.disabled):active:focus, .btn-orange:not(:disabled):not(.disabled).active:focus, +.show > .btn-orange.dropdown-toggle:focus { + box-shadow: 0 0 0 2px rgba(253, 166, 96, 0.5); +} + +.btn-yellow { + color: #fff; + background-color: #f1c40f; + border-color: #f1c40f; +} + +.btn-yellow:hover { + color: #fff; + background-color: #cea70c; + border-color: #c29d0b; +} + +.btn-yellow:focus, .btn-yellow.focus { + box-shadow: 0 0 0 2px rgba(243, 205, 51, 0.5); +} + +.btn-yellow.disabled, .btn-yellow:disabled { + color: #fff; + background-color: #f1c40f; + border-color: #f1c40f; +} + +.btn-yellow:not(:disabled):not(.disabled):active, .btn-yellow:not(:disabled):not(.disabled).active, +.show > .btn-yellow.dropdown-toggle { + color: #fff; + background-color: #c29d0b; + border-color: #b6940b; +} + +.btn-yellow:not(:disabled):not(.disabled):active:focus, .btn-yellow:not(:disabled):not(.disabled).active:focus, +.show > .btn-yellow.dropdown-toggle:focus { + box-shadow: 0 0 0 2px rgba(243, 205, 51, 0.5); +} + +.btn-green { + color: #fff; + background-color: #5eba00; + border-color: #5eba00; +} + +.btn-green:hover { + color: #fff; + background-color: #4b9400; + border-color: #448700; +} + +.btn-green:focus, .btn-green.focus { + box-shadow: 0 0 0 2px rgba(118, 196, 38, 0.5); +} + +.btn-green.disabled, .btn-green:disabled { + color: #fff; + background-color: #5eba00; + border-color: #5eba00; +} + +.btn-green:not(:disabled):not(.disabled):active, .btn-green:not(:disabled):not(.disabled).active, +.show > .btn-green.dropdown-toggle { + color: #fff; + background-color: #448700; + border-color: #3e7a00; +} + +.btn-green:not(:disabled):not(.disabled):active:focus, .btn-green:not(:disabled):not(.disabled).active:focus, +.show > .btn-green.dropdown-toggle:focus { + box-shadow: 0 0 0 2px rgba(118, 196, 38, 0.5); +} + +.btn-teal { + color: #fff; + background-color: #2bcbba; + border-color: #2bcbba; +} + +.btn-teal:hover { + color: #fff; + background-color: #24ab9d; + border-color: #22a193; +} + +.btn-teal:focus, .btn-teal.focus { + box-shadow: 0 0 0 2px rgba(75, 211, 196, 0.5); +} + +.btn-teal.disabled, .btn-teal:disabled { + color: #fff; + background-color: #2bcbba; + border-color: #2bcbba; +} + +.btn-teal:not(:disabled):not(.disabled):active, .btn-teal:not(:disabled):not(.disabled).active, +.show > .btn-teal.dropdown-toggle { + color: #fff; + background-color: #22a193; + border-color: #20968a; +} + +.btn-teal:not(:disabled):not(.disabled):active:focus, .btn-teal:not(:disabled):not(.disabled).active:focus, +.show > .btn-teal.dropdown-toggle:focus { + box-shadow: 0 0 0 2px rgba(75, 211, 196, 0.5); +} + +.btn-cyan { + color: #fff; + background-color: #17a2b8; + border-color: #17a2b8; +} + +.btn-cyan:hover { + color: #fff; + background-color: #138496; + border-color: #117a8b; +} + +.btn-cyan:focus, .btn-cyan.focus { + box-shadow: 0 0 0 2px rgba(58, 176, 195, 0.5); +} + +.btn-cyan.disabled, .btn-cyan:disabled { + color: #fff; + background-color: #17a2b8; + border-color: #17a2b8; +} + +.btn-cyan:not(:disabled):not(.disabled):active, .btn-cyan:not(:disabled):not(.disabled).active, +.show > .btn-cyan.dropdown-toggle { + color: #fff; + background-color: #117a8b; + border-color: #10707f; +} + +.btn-cyan:not(:disabled):not(.disabled):active:focus, .btn-cyan:not(:disabled):not(.disabled).active:focus, +.show > .btn-cyan.dropdown-toggle:focus { + box-shadow: 0 0 0 2px rgba(58, 176, 195, 0.5); +} + +.btn-white { + color: #495057; + background-color: #fff; + border-color: #fff; +} + +.btn-white:hover { + color: #495057; + background-color: #ececec; + border-color: #e6e5e5; +} + +.btn-white:focus, .btn-white.focus { + box-shadow: 0 0 0 2px rgba(228, 229, 230, 0.5); +} + +.btn-white.disabled, .btn-white:disabled { + color: #495057; + background-color: #fff; + border-color: #fff; +} + +.btn-white:not(:disabled):not(.disabled):active, .btn-white:not(:disabled):not(.disabled).active, +.show > .btn-white.dropdown-toggle { + color: #495057; + background-color: #e6e5e5; + border-color: #dfdfdf; +} + +.btn-white:not(:disabled):not(.disabled):active:focus, .btn-white:not(:disabled):not(.disabled).active:focus, +.show > .btn-white.dropdown-toggle:focus { + box-shadow: 0 0 0 2px rgba(228, 229, 230, 0.5); +} + +.btn-gray { + color: #fff; + background-color: #868e96; + border-color: #868e96; +} + +.btn-gray:hover { + color: #fff; + background-color: #727b84; + border-color: #6c757d; +} + +.btn-gray:focus, .btn-gray.focus { + box-shadow: 0 0 0 2px rgba(152, 159, 166, 0.5); +} + +.btn-gray.disabled, .btn-gray:disabled { + color: #fff; + background-color: #868e96; + border-color: #868e96; +} + +.btn-gray:not(:disabled):not(.disabled):active, .btn-gray:not(:disabled):not(.disabled).active, +.show > .btn-gray.dropdown-toggle { + color: #fff; + background-color: #6c757d; + border-color: #666e76; +} + +.btn-gray:not(:disabled):not(.disabled):active:focus, .btn-gray:not(:disabled):not(.disabled).active:focus, +.show > .btn-gray.dropdown-toggle:focus { + box-shadow: 0 0 0 2px rgba(152, 159, 166, 0.5); +} + +.btn-gray-dark { + color: #fff; + background-color: #343a40; + border-color: #343a40; +} + +.btn-gray-dark:hover { + color: #fff; + background-color: #23272b; + border-color: #1d2124; +} + +.btn-gray-dark:focus, .btn-gray-dark.focus { + box-shadow: 0 0 0 2px rgba(82, 88, 93, 0.5); +} + +.btn-gray-dark.disabled, .btn-gray-dark:disabled { + color: #fff; + background-color: #343a40; + border-color: #343a40; +} + +.btn-gray-dark:not(:disabled):not(.disabled):active, .btn-gray-dark:not(:disabled):not(.disabled).active, +.show > .btn-gray-dark.dropdown-toggle { + color: #fff; + background-color: #1d2124; + border-color: #171a1d; +} + +.btn-gray-dark:not(:disabled):not(.disabled):active:focus, .btn-gray-dark:not(:disabled):not(.disabled).active:focus, +.show > .btn-gray-dark.dropdown-toggle:focus { + box-shadow: 0 0 0 2px rgba(82, 88, 93, 0.5); +} + +.btn-azure { + color: #fff; + background-color: #45aaf2; + border-color: #45aaf2; +} + +.btn-azure:hover { + color: #fff; + background-color: #219af0; + border-color: #1594ef; +} + +.btn-azure:focus, .btn-azure.focus { + box-shadow: 0 0 0 2px rgba(97, 183, 244, 0.5); +} + +.btn-azure.disabled, .btn-azure:disabled { + color: #fff; + background-color: #45aaf2; + border-color: #45aaf2; +} + +.btn-azure:not(:disabled):not(.disabled):active, .btn-azure:not(:disabled):not(.disabled).active, +.show > .btn-azure.dropdown-toggle { + color: #fff; + background-color: #1594ef; + border-color: #108ee7; +} + +.btn-azure:not(:disabled):not(.disabled):active:focus, .btn-azure:not(:disabled):not(.disabled).active:focus, +.show > .btn-azure.dropdown-toggle:focus { + box-shadow: 0 0 0 2px rgba(97, 183, 244, 0.5); +} + +.btn-lime { + color: #fff; + background-color: #7bd235; + border-color: #7bd235; +} + +.btn-lime:hover { + color: #fff; + background-color: #69b829; + border-color: #63ad27; +} + +.btn-lime:focus, .btn-lime.focus { + box-shadow: 0 0 0 2px rgba(143, 217, 83, 0.5); +} + +.btn-lime.disabled, .btn-lime:disabled { + color: #fff; + background-color: #7bd235; + border-color: #7bd235; +} + +.btn-lime:not(:disabled):not(.disabled):active, .btn-lime:not(:disabled):not(.disabled).active, +.show > .btn-lime.dropdown-toggle { + color: #fff; + background-color: #63ad27; + border-color: #5da324; +} + +.btn-lime:not(:disabled):not(.disabled):active:focus, .btn-lime:not(:disabled):not(.disabled).active:focus, +.show > .btn-lime.dropdown-toggle:focus { + box-shadow: 0 0 0 2px rgba(143, 217, 83, 0.5); +} + +.btn-option { + background: transparent; + color: #9aa0ac; +} + +.btn-option:hover { + color: #6e7687; +} + +.btn-option:focus { + box-shadow: none; + color: #6e7687; +} + +.btn-sm, .btn-group-sm > .btn, .dataTables_wrapper .dataTables_paginate .btn-group-sm > .paginate_button { + font-size: 0.75rem; + min-width: 1.625rem; +} + +.btn-lg, .btn-group-lg > .btn, .dataTables_wrapper .dataTables_paginate .btn-group-lg > .paginate_button { + font-size: 1rem; + min-width: 2.75rem; + font-weight: 400; +} + +.btn-list { + margin-bottom: -.5rem; + font-size: 0; +} + +.btn-list > .btn, .dataTables_wrapper .dataTables_paginate .btn-list > .paginate_button, +.btn-list > .dropdown { + margin-bottom: .5rem; +} + +.btn-list > .btn:not(:last-child), .dataTables_wrapper .dataTables_paginate .btn-list > .paginate_button:not(:last-child), +.btn-list > .dropdown:not(:last-child) { + margin-left: .5rem; +} + +.btn-loading { + color: transparent !important; + pointer-events: none; + position: relative; +} + +.btn-loading:after { + content: ''; + -webkit-animation: loader 500ms infinite linear; + animation: loader 500ms infinite linear; + border: 2px solid #fff; + border-radius: 50%; + border-left-color: transparent !important; + border-top-color: transparent !important; + display: block; + height: 1.4em; + width: 1.4em; + right: calc(50% - (1.4em / 2)); + top: calc(50% - (1.4em / 2)); + -webkit-transform-origin: center; + transform-origin: center; + position: absolute !important; +} + +.btn-loading.btn-sm:after, .btn-group-sm > .btn-loading.btn:after, .dataTables_wrapper .dataTables_paginate .btn-group-sm > .btn-loading.paginate_button:after { + height: 1em; + width: 1em; + right: calc(50% - (1em / 2)); + top: calc(50% - (1em / 2)); +} + +.btn-loading.btn-secondary:after, .dataTables_wrapper .dataTables_paginate .btn-loading.paginate_button:after { + border-color: #495057; +} + +.alert { + font-size: 0.9375rem; +} + +.alert-icon { + padding-right: 3rem; +} + +.alert-icon > i { + color: inherit !important; + font-size: 1rem; + position: absolute; + top: 1rem; + right: 1rem; +} + +.alert-avatar { + padding-right: 3.75rem; +} + +.alert-avatar .avatar { + position: absolute; + top: .5rem; + right: .75rem; +} + +.close { + font-size: 1rem; + line-height: 1.5; + transition: .3s color; +} + +.close:before { + content: '\ea00'; + font-family: feather, sans-serif; +} + +.badge { + color: #fff; +} + +.badge-default { + background: #e9ecef; + color: #868e96; +} + +.table thead th, .text-wrap table thead th { + border-top: 0; + border-bottom-width: 1px; + padding-top: .5rem; + padding-bottom: .5rem; +} + +.table th, .text-wrap table th { + color: #9aa0ac; + text-transform: uppercase; + font-size: 0.875rem; + font-weight: 400; +} + +.table-md th, +.table-md td { + padding: .5rem; +} + +.table-vcenter td, +.table-vcenter th { + vertical-align: middle; +} + +.table-center td, +.table-center th { + text-align: center; +} + +.table-striped tbody tr:nth-of-type(odd) { + background: transparent; +} + +.table-striped tbody tr:nth-of-type(even) { + background-color: rgba(0, 0, 0, 0.02); +} + +.table-calendar { + margin: 0 0 .75rem; +} + +.table-calendar td, +.table-calendar th { + border: 0; + text-align: center; + padding: 0 !important; + width: 14.28571429%; + line-height: 2.5rem; +} + +.table-calendar td { + border-top: 0; +} + +.table-calendar-link { + line-height: 2rem; + min-width: calc(2rem + 2px); + display: inline-block; + border-radius: 3px; + background: #f8f9fa; + color: #495057; + font-weight: 600; + transition: .3s background, .3s color; + position: relative; +} + +.table-calendar-link:before { + content: ''; + width: 4px; + height: 4px; + position: absolute; + right: .25rem; + top: .25rem; + border-radius: 50px; + background: #467fcf; +} + +.table-calendar-link:hover { + color: #fff; + text-decoration: none; + background: #467fcf; + transition: .3s background; +} + +.table-calendar-link:hover:before { + background: #fff; +} + +.table-header { + cursor: pointer; + transition: .3s color; +} + +.table-header:hover { + color: #495057 !important; +} + +.table-header:after { + content: '\f0dc'; + font-family: FontAwesome; + display: inline-block; + margin-right: .5rem; + font-size: .75rem; +} + +.table-header-asc { + color: #495057 !important; +} + +.table-header-asc:after { + content: '\f0de'; +} + +.table-header-desc { + color: #495057 !important; +} + +.table-header-desc:after { + content: '\f0dd'; +} + +.page-breadcrumb { + background: none; + padding: 0; + margin: 1rem 0 0; + font-size: 0.875rem; +} + +@media (min-width: 768px) { + .page-breadcrumb { + margin: -.5rem 0 0; + } +} + +.page-breadcrumb .breadcrumb-item { + color: #9aa0ac; +} + +.page-breadcrumb .breadcrumb-item.active { + color: #6e7687; +} + +.pagination-simple .page-item .page-link { + background: none; + border: none; +} + +.pagination-simple .page-item.active .page-link { + color: #495057; + font-weight: 700; +} + +.pagination-pager .page-prev { + margin-left: auto; +} + +.pagination-pager .page-next { + margin-right: auto; +} + +.page-total-text { + margin-left: 1rem; + -ms-flex-item-align: center; + align-self: center; + color: #6e7687; +} + +.card { + box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05); + position: relative; + margin-bottom: 1.5rem; + width: 100%; +} + +.card .card { + box-shadow: none; +} + +@media print { + .card { + box-shadow: none; + border: none; + } +} + +.card-body { + -ms-flex: 1 1 auto; + flex: 1 1 auto; + margin: 0; + padding: 1.5rem 1.5rem; + position: relative; +} + +.card-body + .card-body { + border-top: 1px solid rgba(0, 40, 100, 0.12); +} + +.card-body > :last-child { + margin-bottom: 0; +} + +@media print { + .card-body { + padding: 0; + } +} + +.card-body-scrollable { + overflow: auto; +} + +.card-footer, +.card-bottom { + padding: 1rem 1.5rem; + background: none; +} + +.card-footer { + border-top: 1px solid rgba(0, 40, 100, 0.12); + color: #6e7687; +} + +.card-header { + background: none; + padding: 0.5rem 1.5rem; + display: -ms-flexbox; + display: flex; + min-height: 3.5rem; + -ms-flex-align: center; + align-items: center; +} + +.card-header .card-title { + margin-bottom: 0; +} + +.card-header.border-0 + .card-body { + padding-top: 0; +} + +@media print { + .card-header { + display: none; + } +} + +.card-img-top { + border-top-right-radius: 3px; + border-top-left-radius: 3px; +} + +.card-img-overlay { + background-color: rgba(0, 0, 0, 0.4); + display: -ms-flexbox; + display: flex; + -ms-flex-direction: column; + flex-direction: column; +} + +.card-title { + font-size: 1.125rem; + line-height: 1.2; + font-weight: 400; + margin-bottom: 1.5rem; +} + +.card-title a { + color: inherit; +} + +.card-title:only-child { + margin-bottom: 0; +} + +.card-title small, +.card-subtitle { + color: #9aa0ac; + font-size: 0.875rem; + display: block; + margin: -.75rem 0 1rem; + line-height: 1.1; + font-weight: 400; +} + +.card-table { + margin-bottom: 0; +} + +.card-table tr:first-child td, +.card-table tr:first-child th { + border-top: 0; +} + +.card-table tr td:first-child, +.card-table tr th:first-child { + padding-right: 1.5rem; +} + +.card-table tr td:last-child, +.card-table tr th:last-child { + padding-left: 1.5rem; +} + +.card-body + .card-table { + border-top: 1px solid rgba(0, 40, 100, 0.12); +} + +.card-profile .card-header { + height: 9rem; + background-size: cover; +} + +.card-profile-img { + max-width: 6rem; + margin-top: -5rem; + margin-bottom: 1rem; + border: 3px solid #fff; + border-radius: 100%; + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); +} + +.card-link + .card-link { + margin-right: 1rem; +} + +.card-body + .card-list-group { + border-top: 1px solid rgba(0, 40, 100, 0.12); +} + +.card-list-group .list-group-item { + border-left: 0; + border-right: 0; + border-radius: 0; + padding-right: 1.5rem; + padding-left: 1.5rem; +} + +.card-list-group .list-group-item:last-child { + border-bottom: 0; +} + +.card-list-group .list-group-item:first-child { + border-top: 0; +} + +.card-header-tabs { + margin: -1.25rem 0; + border-bottom: 0; + line-height: 2rem; +} + +.card-header-tabs .nav-item { + margin-bottom: 1px; +} + +.card-header-pills { + margin: -.75rem 0; +} + +.card-aside { + -ms-flex-direction: row; + flex-direction: row; +} + +.card-aside-column { + min-width: 5rem; + width: 30%; + -ms-flex: 0 0 30%; + flex: 0 0 30%; + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; + background: no-repeat center/cover; +} + +.card-value { + font-size: 2.5rem; + line-height: 3.4rem; + height: 3.4rem; + display: -ms-flexbox; + display: flex; + -ms-flex-align: center; + align-items: center; + font-weight: 400; +} + +.card-value i { + vertical-align: middle; +} + +.card-chart-bg { + height: 4rem; + margin-top: -1rem; + position: relative; + z-index: 1; + overflow: hidden; +} + +.card-options { + margin-right: auto; + display: -ms-flexbox; + display: flex; + -ms-flex-order: 100; + order: 100; + margin-left: -.5rem; + color: #9aa0ac; + -ms-flex-item-align: center; + align-self: center; +} + +.card-options a:not(.btn) { + margin-right: .5rem; + color: #9aa0ac; + display: inline-block; + min-width: 1rem; +} + +.card-options a:not(.btn):hover { + text-decoration: none; + color: #6e7687; +} + +.card-options a:not(.btn) i { + font-size: 1rem; + vertical-align: middle; +} + +.card-options .dropdown-toggle:after { + display: none; +} + +/* +Card options + */ +.card-collapsed > :not(.card-header):not(.card-status) { + display: none; +} + +.card-collapsed .card-options-collapse i:before { + content: '\e92d'; +} + +.card-fullscreen .card-options-fullscreen i:before { + content: '\e992'; +} + +.card-fullscreen .card-options-remove { + display: none; +} + +/* +Card maps + */ +.card-map { + height: 15rem; + background: #e9ecef; +} + +.card-map-placeholder { + background: no-repeat center; +} + +/** +Card tabs + */ +.card-tabs { + display: -ms-flexbox; + display: flex; +} + +.card-tabs-bottom .card-tabs-item { + border: 0; + border-top: 1px solid rgba(0, 40, 100, 0.12); +} + +.card-tabs-bottom .card-tabs-item.active { + border-top-color: #fff; +} + +.card-tabs-item { + -ms-flex: 1 1 auto; + flex: 1 1 auto; + display: block; + padding: 1rem 1.5rem; + border-bottom: 1px solid rgba(0, 40, 100, 0.12); + color: inherit; + overflow: hidden; +} + +a.card-tabs-item { + background: #fafbfc; +} + +a.card-tabs-item:hover { + text-decoration: none; + color: inherit; +} + +a.card-tabs-item:focus { + z-index: 1; +} + +a.card-tabs-item.active { + background: #fff; + border-bottom-color: #fff; +} + +.card-tabs-item + .card-tabs-item { + border-right: 1px solid rgba(0, 40, 100, 0.12); +} + +/** +Card status + */ +.card-status { + position: absolute; + top: -1px; + right: -1px; + left: -1px; + height: 3px; + border-radius: 3px 3px 0 0; + background: rgba(0, 40, 100, 0.12); +} + +.card-status-left { + left: auto; + bottom: 0; + height: auto; + width: 3px; + border-radius: 0 3px 3px 0; +} + +/** +Card icon + */ +.card-icon { + width: 3rem; + font-size: 2.5rem; + line-height: 3rem; + text-align: center; +} + +/** +Card fullscreen + */ +.card-fullscreen { + position: fixed; + top: 0; + right: 0; + left: 0; + bottom: 0; + z-index: 1; + margin: 0; +} + +/** +Card alert + */ +.card-alert { + border-radius: 0; + margin: -1px -1px 0; +} + +.card-category { + font-size: 0.875rem; + text-transform: uppercase; + text-align: center; + font-weight: 600; + letter-spacing: .05em; + margin: 0 0 .5rem; +} + +.popover { + -webkit-filter: drop-shadow(0 1px 3px rgba(0, 0, 0, 0.1)); + filter: drop-shadow(0 1px 3px rgba(0, 0, 0, 0.1)); +} + +.popover.bs-popover-top, .popover.bs-popover-auto[x-placement^="top"] { + margin-bottom: 0.625rem; +} + +.popover .arrow { + margin-right: calc(.25rem + 2px); +} + +.dropdown { + display: inline-block; +} + +.dropdown-menu { + box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05); + min-width: 12rem; +} + +.dropdown-item { + color: #6e7687; +} + +.dropdown-menu-arrow:before { + position: absolute; + top: -6px; + right: 12px; + display: inline-block; + border-left: 5px solid transparent; + border-bottom: 5px solid rgba(0, 40, 100, 0.12); + border-right: 5px solid transparent; + border-bottom-color: rgba(0, 0, 0, 0.2); + content: ''; +} + +.dropdown-menu-arrow:after { + position: absolute; + top: -5px; + right: 12px; + display: inline-block; + border-left: 5px solid transparent; + border-bottom: 5px solid #fff; + border-right: 5px solid transparent; + content: ''; +} + +.dropdown-menu-arrow.dropdown-menu-right:before, .dropdown-menu-arrow.dropdown-menu-right:after { + right: auto; + left: 12px; +} + +.dropdown-toggle { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; +} + +.dropdown-toggle:after { + vertical-align: 0.155em; +} + +.dropdown-toggle:empty:after { + margin-right: 0; +} + +.dropdown-icon { + color: #9aa0ac; + margin-left: .5rem; + margin-right: -.5rem; + width: 1em; + display: inline-block; + text-align: center; + vertical-align: -1px; +} + +.list-inline-dots .list-inline-item + .list-inline-item:before { + content: '· '; + margin-right: -2px; + margin-left: 3px; +} + +.list-separated-item { + padding: 1rem 0; +} + +.list-separated-item:first-child { + padding-top: 0; +} + +.list-separated-item:last-child { + padding-bottom: 0; +} + +.list-separated-item + .list-separated-item { + border-top: 1px solid rgba(0, 40, 100, 0.12); +} + +.list-group-item.active .icon { + color: inherit !important; +} + +.list-group-transparent .list-group-item { + background: none; + border: 0; + padding: .5rem 1rem; + border-radius: 3px; +} + +.list-group-transparent .list-group-item.active { + background: rgba(70, 127, 207, 0.06); + font-weight: 600; +} + +.avatar { + width: 2rem; + height: 2rem; + line-height: 2rem; + border-radius: 50%; + display: inline-block; + background: #ced4da no-repeat center/cover; + position: relative; + text-align: center; + color: #868e96; + font-weight: 600; + vertical-align: bottom; + font-size: .875rem; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.avatar i { + font-size: 125%; + vertical-align: sub; +} + +.avatar-status { + position: absolute; + left: -2px; + bottom: -2px; + width: .75rem; + height: .75rem; + border: 2px solid #fff; + background: #868e96; + border-radius: 50%; +} + +.avatar-sm { + width: 1.5rem; + height: 1.5rem; + line-height: 1.5rem; + font-size: .75rem; +} + +.avatar-md { + width: 2.5rem; + height: 2.5rem; + line-height: 2.5rem; + font-size: 1rem; +} + +.avatar-lg { + width: 3rem; + height: 3rem; + line-height: 3rem; + font-size: 1.25rem; +} + +.avatar-xl { + width: 4rem; + height: 4rem; + line-height: 4rem; + font-size: 1.75rem; +} + +.avatar-xxl { + width: 5rem; + height: 5rem; + line-height: 5rem; + font-size: 2rem; +} + +.avatar-placeholder { + background: #ced4da url('data:image/svg+xml;charset=utf8,') no-repeat center/80%; +} + +.avatar-list { + margin: 0 0 -.5rem; + padding: 0; + font-size: 0; +} + +.avatar-list .avatar { + margin-bottom: .5rem; +} + +.avatar-list .avatar:not(:last-child) { + margin-left: .5rem; +} + +.avatar-list-stacked .avatar { + margin-left: -.8em !important; +} + +.avatar-list-stacked .avatar { + box-shadow: 0 0 0 2px #fff; +} + +.avatar-blue { + background-color: #c8d9f1; + color: #467fcf; +} + +.avatar-indigo { + background-color: #d1d5f0; + color: #6574cd; +} + +.avatar-purple { + background-color: #e4cff9; + color: #a55eea; +} + +.avatar-pink { + background-color: #fcd3e1; + color: #f66d9b; +} + +.avatar-red { + background-color: #f0bcbc; + color: #cd201f; +} + +.avatar-orange { + background-color: #fee0c7; + color: #fd9644; +} + +.avatar-yellow { + background-color: #fbedb7; + color: #f1c40f; +} + +.avatar-green { + background-color: #cfeab3; + color: #5eba00; +} + +.avatar-teal { + background-color: #bfefea; + color: #2bcbba; +} + +.avatar-cyan { + background-color: #b9e3ea; + color: #17a2b8; +} + +.avatar-white { + background-color: white; + color: #fff; +} + +.avatar-gray { + background-color: #dbdde0; + color: #868e96; +} + +.avatar-gray-dark { + background-color: #c2c4c6; + color: #343a40; +} + +.avatar-azure { + background-color: #c7e6fb; + color: #45aaf2; +} + +.avatar-lime { + background-color: #d7f2c2; + color: #7bd235; +} + +.product-price { + font-size: 1rem; +} + +.product-price strong { + font-size: 1.5rem; +} + +@-webkit-keyframes indeterminate { + 0% { + right: -35%; + left: 100%; + } + 100%, 60% { + right: 100%; + left: -90%; + } +} + +@keyframes indeterminate { + 0% { + right: -35%; + left: 100%; + } + 100%, 60% { + right: 100%; + left: -90%; + } +} + +@-webkit-keyframes indeterminate-short { + 0% { + right: -200%; + left: 100%; + } + 100%, 60% { + right: 107%; + left: -8%; + } +} + +@keyframes indeterminate-short { + 0% { + right: -200%; + left: 100%; + } + 100%, 60% { + right: 107%; + left: -8%; + } +} + +.progress { + position: relative; +} + +.progress-xs, +.progress-xs .progress-bar { + height: .25rem; +} + +.progress-sm, +.progress-sm .progress-bar { + height: .5rem; +} + +.progress-bar-indeterminate:after, .progress-bar-indeterminate:before { + content: ''; + position: absolute; + background-color: inherit; + right: 0; + will-change: left, right; + top: 0; + bottom: 0; +} + +.progress-bar-indeterminate:before { + -webkit-animation: indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite; + animation: indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite; +} + +.progress-bar-indeterminate:after { + -webkit-animation: indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite; + animation: indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite; + -webkit-animation-delay: 1.15s; + animation-delay: 1.15s; +} + +@-webkit-keyframes loader { + from { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + to { + -webkit-transform: rotate(-360deg); + transform: rotate(-360deg); + } +} + +@keyframes loader { + from { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + to { + -webkit-transform: rotate(-360deg); + transform: rotate(-360deg); + } +} + +/** +Dimmer +*/ +.dimmer { + position: relative; +} + +.dimmer .loader { + display: none; + margin: 0 auto; + position: absolute; + top: 50%; + right: 0; + left: 0; + -webkit-transform: translateY(-50%); + transform: translateY(-50%); +} + +.dimmer.active .loader { + display: block; +} + +.dimmer.active .dimmer-content { + opacity: .5; + pointer-events: none; +} + +/** +Loader +*/ +.loader { + display: block; + position: relative; + height: 2.5rem; + width: 2.5rem; + color: #467fcf; +} + +.loader:before, .loader:after { + width: 2.5rem; + height: 2.5rem; + margin: -1.25rem -1.25rem 0 0; + position: absolute; + content: ''; + top: 50%; + right: 50%; +} + +.loader:before { + border-radius: 50%; + border: 3px solid currentColor; + opacity: .15; +} + +.loader:after { + -webkit-animation: loader .6s linear; + animation: loader .6s linear; + -webkit-animation-iteration-count: infinite; + animation-iteration-count: infinite; + border-radius: 50%; + border: 3px solid; + border-color: transparent; + border-top-color: currentColor; + box-shadow: 0 0 0 1px transparent; +} + +.icons-list { + list-style: none; + margin: 0 0 -1px -1px; + padding: 0; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; +} + +.icons-list > li { + -ms-flex: 1 0 4rem; + flex: 1 0 4rem; +} + +.icons-list-wrap { + overflow: hidden; +} + +.icons-list-item { + text-align: center; + height: 4rem; + display: -ms-flexbox; + display: flex; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: center; + justify-content: center; + border-left: 1px solid rgba(0, 40, 100, 0.12); + border-bottom: 1px solid rgba(0, 40, 100, 0.12); +} + +.icons-list-item i { + font-size: 1.25rem; +} + +.img-gallery { + margin-left: -.25rem; + margin-right: -.25rem; + margin-bottom: -.5rem; +} + +.img-gallery > .col, +.img-gallery > [class*="col-"] { + padding-right: .25rem; + padding-left: .25rem; + padding-bottom: .5rem; +} + +.link-overlay { + position: relative; +} + +.link-overlay:hover .link-overlay-bg { + opacity: 1; +} + +.link-overlay-bg { + position: absolute; + top: 0; + right: 0; + left: 0; + bottom: 0; + background: rgba(70, 127, 207, 0.8); + display: -ms-flexbox; + display: flex; + color: #fff; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: center; + justify-content: center; + font-size: 1.25rem; + opacity: 0; + transition: .3s opacity; +} + +.media-icon { + width: 2rem; + height: 2rem; + line-height: 2rem; + text-align: center; + border-radius: 100%; +} + +.media-list { + margin: 0; + padding: 0; + list-style: none; +} + +textarea[cols] { + height: auto; +} + +.form-group { + display: block; +} + +.form-label { + display: block; + margin-bottom: .375rem; + font-weight: 600; + font-size: 0.875rem; +} + +.form-label-small { + float: left; + font-weight: 400; + font-size: 87.5%; +} + +.form-footer { + margin-top: 2rem; +} + +.custom-control { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.custom-controls-stacked .custom-control { + margin-bottom: .25rem; +} + +.custom-control-label { + vertical-align: middle; +} + +.custom-control-label:before { + border: 1px solid rgba(0, 40, 100, 0.12); + background-color: #fff; + background-size: .5rem; +} + +.custom-control-description { + line-height: 1.5rem; +} + +.input-group-prepend, +.input-group-append, +.input-group-btn { + font-size: 0.9375rem; +} + +.input-group-prepend > .btn, .dataTables_wrapper .dataTables_paginate .input-group-prepend > .paginate_button, +.input-group-append > .btn, +.dataTables_wrapper .dataTables_paginate .input-group-append > .paginate_button, +.input-group-btn > .btn, +.dataTables_wrapper .dataTables_paginate .input-group-btn > .paginate_button { + height: 100%; + border-color: rgba(0, 40, 100, 0.12); +} + +.input-group-prepend > .input-group-text { + border-left: 0; +} + +.input-group-append > .input-group-text { + border-right: 0; +} + +/** +Icon input + */ +.input-icon { + position: relative; +} + +.input-icon .form-control:not(:last-child), .input-icon .dataTables_wrapper .dataTables_length select:not(:last-child), .dataTables_wrapper .dataTables_length .input-icon select:not(:last-child), .input-icon .dataTables_wrapper .dataTables_filter input:not(:last-child), .dataTables_wrapper .dataTables_filter .input-icon input:not(:last-child) { + padding-left: 2.5rem; +} + +.input-icon .form-control:not(:first-child), .input-icon .dataTables_wrapper .dataTables_length select:not(:first-child), .dataTables_wrapper .dataTables_length .input-icon select:not(:first-child), .input-icon .dataTables_wrapper .dataTables_filter input:not(:first-child), .dataTables_wrapper .dataTables_filter .input-icon input:not(:first-child) { + padding-right: 2.5rem; +} + +.input-icon-addon { + position: absolute; + top: 0; + bottom: 0; + right: 0; + color: #9aa0ac; + display: -ms-flexbox; + display: flex; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: center; + justify-content: center; + min-width: 2.5rem; + pointer-events: none; +} + +.input-icon-addon:last-child { + right: auto; + left: 0; +} + +.form-fieldset { + background: #f8f9fa; + border: 1px solid #e9ecef; + padding: 1rem; + border-radius: 3px; + margin-bottom: 1rem; +} + +.form-required { + color: #cd201f; +} + +.form-required:before { + content: ' '; +} + +.state-valid { + padding-left: 2rem; + background: url("data:image/svg+xml;charset=utf8,") no-repeat center right 0.5rem/1rem; +} + +.state-invalid { + padding-left: 2rem; + background: url("data:image/svg+xml;charset=utf8,") no-repeat center right 0.5rem/1rem; +} + +.form-help { + display: inline-block; + width: 1rem; + height: 1rem; + text-align: center; + line-height: 1rem; + color: #9aa0ac; + background: #f8f9fa; + border-radius: 50%; + font-size: 0.75rem; + transition: .3s background-color, .3s color; + text-decoration: none; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.form-help:hover, .form-help[aria-describedby] { + background: #467fcf; + color: #fff; +} + +.sparkline { + display: inline-block; + height: 2rem; +} + +.jqstooltip { + box-sizing: content-box; + font-family: inherit !important; + background: #333 !important; + border: none !important; + border-radius: 3px; + font-size: 11px !important; + font-weight: 700 !important; + line-height: 1 !important; + padding: 6px !important; +} + +.jqstooltip .jqsfield { + font: inherit !important; +} + +.social-links li a { + background: #f8f8f8; + border-radius: 50%; + color: #9aa0ac; + display: inline-block; + height: 1.75rem; + width: 1.75rem; + line-height: 1.75rem; + text-align: center; +} + +.map, +.chart { + position: relative; + padding-top: 56.25%; +} + +.map-square, +.chart-square { + padding-top: 100%; +} + +.map-content, +.chart-content { + position: absolute; + top: 0; + right: 0; + left: 0; + bottom: 0; +} + +.map-header { + margin-top: -1.5rem; + margin-bottom: 1.5rem; + height: 15rem; + position: relative; + margin-bottom: -1.5rem; +} + +.map-header:before { + content: ''; + position: absolute; + bottom: 0; + right: 0; + left: 0; + height: 10rem; + background: linear-gradient(to bottom, rgba(245, 247, 251, 0) 5%, #f5f7fb 95%); + pointer-events: none; +} + +.map-header-layer { + height: 100%; +} + +.map-static { + height: 120px; + width: 100%; + max-width: 640px; + background-position: center center; + background-size: 640px 120px; +} + +@-webkit-keyframes status-pulse { + 0%, 100% { + opacity: 1; + } + 50% { + opacity: .32; + } +} + +@keyframes status-pulse { + 0%, 100% { + opacity: 1; + } + 50% { + opacity: .32; + } +} + +.status-icon { + content: ''; + width: 0.5rem; + height: 0.5rem; + display: inline-block; + background: currentColor; + border-radius: 50%; + -webkit-transform: translateY(-1px); + transform: translateY(-1px); + margin-left: .375rem; + vertical-align: middle; +} + +.status-animated { + -webkit-animation: 1s status-pulse infinite ease; + animation: 1s status-pulse infinite ease; +} + +.chart-circle { + display: block; + height: 8rem; + width: 8rem; + position: relative; +} + +.chart-circle canvas { + margin: 0 auto; + display: block; + max-width: 100%; + max-height: 100%; +} + +.chart-circle-xs { + height: 2.5rem; + width: 2.5rem; + font-size: .8rem; +} + +.chart-circle-sm { + height: 4rem; + width: 4rem; + font-size: .8rem; +} + +.chart-circle-lg { + height: 10rem; + width: 10rem; + font-size: .8rem; +} + +.chart-circle-value { + position: absolute; + top: 0; + right: 0; + left: 0; + margin-right: auto; + margin-left: auto; + bottom: 0; + display: -ms-flexbox; + display: flex; + -ms-flex-pack: center; + justify-content: center; + -ms-flex-align: center; + align-items: center; + -ms-flex-direction: column; + flex-direction: column; + line-height: 1; +} + +.chart-circle-value small { + display: block; + color: #9aa0ac; + font-size: 0.9375rem; +} + +.chips { + margin: 0 0 -.5rem; +} + +.chips .chip { + margin: 0 0 .5rem .5rem; +} + +.chip { + display: inline-block; + height: 2rem; + line-height: 2rem; + font-size: 0.875rem; + font-weight: 500; + color: #6e7687; + padding: 0 .75rem; + border-radius: 1rem; + background-color: #f8f9fa; + transition: .3s background; +} + +.chip .avatar { + float: right; + margin: 0 -.75rem 0 .5rem; + height: 2rem; + width: 2rem; + border-radius: 50%; +} + +a.chip:hover { + color: inherit; + text-decoration: none; + background-color: #e9ecef; +} + +.stamp { + color: #fff; + background: #868e96; + display: inline-block; + min-width: 2rem; + height: 2rem; + padding: 0 .25rem; + line-height: 2rem; + text-align: center; + border-radius: 3px; + font-weight: 600; +} + +.stamp-md { + min-width: 2.5rem; + height: 2.5rem; + line-height: 2.5rem; +} + +.chat { + outline: 0; + margin: 0; + padding: 0; + list-style-type: none; + display: -ms-flexbox; + display: flex; + -ms-flex-direction: column; + flex-direction: column; + -ms-flex-pack: end; + justify-content: flex-end; + min-height: 100%; +} + +.chat-line { + padding: 0; + text-align: left; + position: relative; + display: -ms-flexbox; + display: flex; + -ms-flex-direction: row-reverse; + flex-direction: row-reverse; +} + +.chat-line + .chat-line { + padding-top: 1rem; +} + +.chat-message { + position: relative; + display: inline-block; + background-color: #467fcf; + color: #fff; + font-size: 0.875rem; + padding: .375rem .5rem; + border-radius: 3px; + white-space: normal; + text-align: right; + margin: 0 2.5rem 0 .5rem; + line-height: 1.4; +} + +.chat-message > :last-child { + margin-bottom: 0 !important; +} + +.chat-message:after { + content: ""; + position: absolute; + left: -5px; + top: 7px; + border-bottom: 6px solid transparent; + border-right: 6px solid #467fcf; + border-top: 6px solid transparent; +} + +.chat-message img { + max-width: 100%; +} + +.chat-message p { + margin-bottom: 1em; +} + +.chat-line-friend { + -ms-flex-direction: row; + flex-direction: row; +} + +.chat-line-friend + .chat-line-friend { + margin-top: -.5rem; +} + +.chat-line-friend + .chat-line-friend .chat-author { + visibility: hidden; +} + +.chat-line-friend + .chat-line-friend .chat-message:after { + display: none; +} + +.chat-line-friend .chat-message { + background-color: #f3f3f3; + color: #495057; + margin-right: .5rem; + margin-left: 2.5rem; +} + +.chat-line-friend .chat-message:after { + left: auto; + right: -5px; + border-right-width: 0; + border-left: 5px solid #f3f3f3; +} + +.example { + padding: 1.5rem; + border: 1px solid rgba(0, 40, 100, 0.12); + border-radius: 3px 3px 0 0; + font-size: 0.9375rem; +} + +.example-bg { + background: #f5f7fb; +} + +.example + .highlight { + border-top: none; + margin-top: 0; + border-radius: 0 0 3px 3px; +} + +.highlight { + margin: 1rem 0 2rem; + border: 1px solid rgba(0, 40, 100, 0.12); + border-radius: 3px; + font-size: 0.9375rem; + max-height: 40rem; + overflow: auto; + background: #fcfcfc; +} + +.highlight pre { + margin-bottom: 0; + background-color: transparent; +} + +.example-column { + margin: 0 auto; +} + +.example-column > .card:last-of-type { + margin-bottom: 0; +} + +.example-column-1 { + max-width: 20rem; +} + +.example-column-2 { + max-width: 40rem; +} + +.tag { + font-size: 0.75rem; + color: #6e7687; + background-color: #e9ecef; + border-radius: 3px; + padding: 0 .5rem; + line-height: 2em; + display: -ms-inline-flexbox; + display: inline-flex; + cursor: default; + font-weight: 400; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +a.tag { + text-decoration: none; + cursor: pointer; + transition: .3s color, .3s background; +} + +a.tag:hover { + background-color: rgba(110, 118, 135, 0.2); + color: inherit; +} + +.tag-addon { + display: inline-block; + padding: 0 .5rem; + color: inherit; + text-decoration: none; + background: rgba(0, 0, 0, 0.06); + margin: 0 .5rem 0 -.5rem; + text-align: center; + min-width: 1.5rem; +} + +.tag-addon:last-child { + border-top-left-radius: 3px; + border-bottom-left-radius: 3px; +} + +.tag-addon i { + vertical-align: middle; + margin: 0 -.25rem; +} + +a.tag-addon { + text-decoration: none; + cursor: pointer; + transition: .3s color, .3s background; +} + +a.tag-addon:hover { + background: rgba(0, 0, 0, 0.16); + color: inherit; +} + +.tag-avatar { + width: 1.5rem; + height: 1.5rem; + border-radius: 0 3px 3px 0; + margin: 0 -.5rem 0 .5rem; +} + +.tag-blue { + background-color: #467fcf; + color: #fff; +} + +.tag-indigo { + background-color: #6574cd; + color: #fff; +} + +.tag-purple { + background-color: #a55eea; + color: #fff; +} + +.tag-pink { + background-color: #f66d9b; + color: #fff; +} + +.tag-red { + background-color: #cd201f; + color: #fff; +} + +.tag-orange { + background-color: #fd9644; + color: #fff; +} + +.tag-yellow { + background-color: #f1c40f; + color: #fff; +} + +.tag-green { + background-color: #5eba00; + color: #fff; +} + +.tag-teal { + background-color: #2bcbba; + color: #fff; +} + +.tag-cyan { + background-color: #17a2b8; + color: #fff; +} + +.tag-white { + background-color: #fff; + color: #fff; +} + +.tag-gray { + background-color: #868e96; + color: #fff; +} + +.tag-gray-dark { + background-color: #343a40; + color: #fff; +} + +.tag-azure { + background-color: #45aaf2; + color: #fff; +} + +.tag-lime { + background-color: #7bd235; + color: #fff; +} + +.tag-primary { + background-color: #467fcf; + color: #fff; +} + +.tag-secondary { + background-color: #868e96; + color: #fff; +} + +.tag-success { + background-color: #5eba00; + color: #fff; +} + +.tag-info { + background-color: #45aaf2; + color: #fff; +} + +.tag-warning { + background-color: #f1c40f; + color: #fff; +} + +.tag-danger { + background-color: #cd201f; + color: #fff; +} + +.tag-light { + background-color: #f8f9fa; + color: #fff; +} + +.tag-dark { + background-color: #343a40; + color: #fff; +} + +.tag-rounded { + border-radius: 50px; +} + +.tag-rounded .tag-avatar { + border-radius: 50px; +} + +.tags { + margin-bottom: -.5rem; + font-size: 0; +} + +.tags > .tag { + margin-bottom: .5rem; +} + +.tags > .tag:not(:last-child) { + margin-left: .5rem; +} + +.highlight .hll { + background-color: #ffc; +} + +.highlight .c { + color: #999; +} + +.highlight .k { + color: #069; +} + +.highlight .o { + color: #555; +} + +.highlight .cm { + color: #999; +} + +.highlight .cp { + color: #099; +} + +.highlight .c1 { + color: #999; +} + +.highlight .cs { + color: #999; +} + +.highlight .gd { + background-color: #fcc; + border: 1px solid #c00; +} + +.highlight .ge { + font-style: italic; +} + +.highlight .gr { + color: #f00; +} + +.highlight .gh { + color: #030; +} + +.highlight .gi { + background-color: #cfc; + border: 1px solid #0c0; +} + +.highlight .go { + color: #aaa; +} + +.highlight .gp { + color: #009; +} + +.highlight .gu { + color: #030; +} + +.highlight .gt { + color: #9c6; +} + +.highlight .kc { + color: #069; +} + +.highlight .kd { + color: #069; +} + +.highlight .kn { + color: #069; +} + +.highlight .kp { + color: #069; +} + +.highlight .kr { + color: #069; +} + +.highlight .kt { + color: #078; +} + +.highlight .m { + color: #f60; +} + +.highlight .s { + color: #d44950; +} + +.highlight .na { + color: #4f9fcf; +} + +.highlight .nb { + color: #366; +} + +.highlight .nc { + color: #0a8; +} + +.highlight .no { + color: #360; +} + +.highlight .nd { + color: #99f; +} + +.highlight .ni { + color: #999; +} + +.highlight .ne { + color: #c00; +} + +.highlight .nf { + color: #c0f; +} + +.highlight .nl { + color: #99f; +} + +.highlight .nn { + color: #0cf; +} + +.highlight .nt { + color: #2f6f9f; +} + +.highlight .nv { + color: #033; +} + +.highlight .ow { + color: #000; +} + +.highlight .w { + color: #bbb; +} + +.highlight .mf { + color: #f60; +} + +.highlight .mh { + color: #f60; +} + +.highlight .mi { + color: #f60; +} + +.highlight .mo { + color: #f60; +} + +.highlight .sb { + color: #c30; +} + +.highlight .sc { + color: #c30; +} + +.highlight .sd { + font-style: italic; + color: #c30; +} + +.highlight .s2 { + color: #c30; +} + +.highlight .se { + color: #c30; +} + +.highlight .sh { + color: #c30; +} + +.highlight .si { + color: #a00; +} + +.highlight .sx { + color: #c30; +} + +.highlight .sr { + color: #3aa; +} + +.highlight .s1 { + color: #c30; +} + +.highlight .ss { + color: #fc3; +} + +.highlight .bp { + color: #366; +} + +.highlight .vc { + color: #033; +} + +.highlight .vg { + color: #033; +} + +.highlight .vi { + color: #033; +} + +.highlight .il { + color: #f60; +} + +.highlight .css .o, +.highlight .css .o + .nt, +.highlight .css .nt + .nt { + color: #999; +} + +.highlight .language-bash::before, +.highlight .language-sh::before { + color: #009; + content: "$ "; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.highlight .language-powershell::before { + color: #009; + content: "PM> "; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.carousel-item-background { + content: ''; + background: rgba(0, 0, 0, 0.5); + position: absolute; + top: 0; + right: 0; + left: 0; + bottom: 0; +} + +.dataTables_wrapper thead .sorting { + position: relative; +} + +.dataTables_wrapper thead .sorting:after { + position: absolute; + left: 0; + bottom: 5px; + content: "\e92d"; + font-family: 'feather' !important; +} + +.dataTables_wrapper thead .sorting:before { + position: absolute; + left: 0; + top: 5px; + content: "\e930"; + font-family: 'feather' !important; +} + +.dataTables_wrapper thead .sorting_desc { + position: relative; +} + +.dataTables_wrapper thead .sorting_desc:after { + position: absolute; + left: 0; + bottom: 5px; + content: "\e92d"; + font-family: 'feather' !important; +} + +.dataTables_wrapper thead .sorting_asc { + position: relative; +} + +.dataTables_wrapper thead .sorting_asc:after { + position: absolute; + left: 0; + top: 5px; + content: "\e930"; + font-family: 'feather' !important; +} + +.dataTables_wrapper .table, .dataTables_wrapper .text-wrap table, .text-wrap .dataTables_wrapper table { + border-top: 1px solid rgba(0, 40, 100, 0.12); + border-bottom: 1px solid rgba(0, 40, 100, 0.12); +} + +.dataTables_wrapper .dataTables_length { + margin: 1rem 1.5rem; + float: right; +} + +.dataTables_wrapper .dataTables_length select { + width: auto; + display: inline-block; + margin: 0 0.2rem; +} + +.dataTables_wrapper .dataTables_filter { + float: left; + margin: 1rem 1.5rem; + text-align: left; + color: #495057; +} + +.dataTables_wrapper .dataTables_filter input { + width: auto; + margin-right: 0.2rem; + display: inline-block; +} + +.dataTables_wrapper .dataTables_paginate { + float: left; + text-align: left; + margin: 1rem 1.5rem; +} + +.dataTables_wrapper .dataTables_paginate .paginate_button { + margin: 0 0.2rem; +} + +.dataTables_wrapper .dataTables_info { + clear: both; + float: right; + margin: 1rem 1.5rem; + color: #495057; + line-height: 38px; +} + +.bottombar { + position: fixed; + bottom: 0; + right: 0; + left: 0; + background: #363F51; + border-top: 1px solid rgba(0, 40, 100, 0.12); + z-index: 100; + font-size: 1rem; + padding: .75rem 0; + color: #fff; + box-shadow: 0 -1px 9px rgba(0, 0, 0, 0.05); +} + +.bottombar-close { + position: absolute; + top: .75rem; + left: 1rem; + color: #9aa0ac; + transition: .3s color; + display: block; + margin-right: 1rem; +} + +.bottombar-close:hover { + color: #6e7687; +} + +.bottombar-image { + position: relative; + display: block; + margin: 0 0 0 1rem; +} + +@media (min-width: 992px) { + .bottombar-image { + margin: -176px -25px -90px 1rem; + } +} + +.bottombar-image img { + width: 109px; + display: block; +} + +@media (min-width: 992px) { + .bottombar-image img { + width: 218px; + } +} + +.custom-range { + -ms-flex-align: center; + align-items: center; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + background: none; + cursor: pointer; + display: -ms-flexbox; + display: flex; + height: 100%; + min-height: 2.375rem; + overflow: hidden; + padding: 0; + border: 0; +} + +.custom-range:focus { + box-shadow: none; + outline: none; +} + +.custom-range:focus::-webkit-slider-thumb { + border-color: #467fcf; + background-color: #467fcf; +} + +.custom-range:focus::-moz-range-thumb { + border-color: #467fcf; + background-color: #467fcf; +} + +.custom-range:focus::-ms-thumb { + border-color: #467fcf; + background-color: #467fcf; +} + +.custom-range::-moz-focus-outer { + border: 0; +} + +.custom-range::-webkit-slider-runnable-track { + background: #467fcf; + content: ''; + height: 2px; + pointer-events: none; +} + +.custom-range::-webkit-slider-thumb { + width: 14px; + height: 14px; + -webkit-appearance: none; + appearance: none; + background: #fff; + border-radius: 50px; + box-shadow: -1px 0 0 -6px rgba(0, 50, 126, 0.12), -6px 0 0 -6px rgba(0, 50, 126, 0.12), -7px 0 0 -6px rgba(0, 50, 126, 0.12), -8px 0 0 -6px rgba(0, 50, 126, 0.12), -9px 0 0 -6px rgba(0, 50, 126, 0.12), -10px 0 0 -6px rgba(0, 50, 126, 0.12), -11px 0 0 -6px rgba(0, 50, 126, 0.12), -12px 0 0 -6px rgba(0, 50, 126, 0.12), -13px 0 0 -6px rgba(0, 50, 126, 0.12), -14px 0 0 -6px rgba(0, 50, 126, 0.12), -15px 0 0 -6px rgba(0, 50, 126, 0.12), -16px 0 0 -6px rgba(0, 50, 126, 0.12), -17px 0 0 -6px rgba(0, 50, 126, 0.12), -18px 0 0 -6px rgba(0, 50, 126, 0.12), -19px 0 0 -6px rgba(0, 50, 126, 0.12), -20px 0 0 -6px rgba(0, 50, 126, 0.12), -21px 0 0 -6px rgba(0, 50, 126, 0.12), -22px 0 0 -6px rgba(0, 50, 126, 0.12), -23px 0 0 -6px rgba(0, 50, 126, 0.12), -24px 0 0 -6px rgba(0, 50, 126, 0.12), -25px 0 0 -6px rgba(0, 50, 126, 0.12), -26px 0 0 -6px rgba(0, 50, 126, 0.12), -27px 0 0 -6px rgba(0, 50, 126, 0.12), -28px 0 0 -6px rgba(0, 50, 126, 0.12), -29px 0 0 -6px rgba(0, 50, 126, 0.12), -30px 0 0 -6px rgba(0, 50, 126, 0.12), -31px 0 0 -6px rgba(0, 50, 126, 0.12), -32px 0 0 -6px rgba(0, 50, 126, 0.12), -33px 0 0 -6px rgba(0, 50, 126, 0.12), -34px 0 0 -6px rgba(0, 50, 126, 0.12), -35px 0 0 -6px rgba(0, 50, 126, 0.12), -36px 0 0 -6px rgba(0, 50, 126, 0.12), -37px 0 0 -6px rgba(0, 50, 126, 0.12), -38px 0 0 -6px rgba(0, 50, 126, 0.12), -39px 0 0 -6px rgba(0, 50, 126, 0.12), -40px 0 0 -6px rgba(0, 50, 126, 0.12), -41px 0 0 -6px rgba(0, 50, 126, 0.12), -42px 0 0 -6px rgba(0, 50, 126, 0.12), -43px 0 0 -6px rgba(0, 50, 126, 0.12), -44px 0 0 -6px rgba(0, 50, 126, 0.12), -45px 0 0 -6px rgba(0, 50, 126, 0.12), -46px 0 0 -6px rgba(0, 50, 126, 0.12), -47px 0 0 -6px rgba(0, 50, 126, 0.12), -48px 0 0 -6px rgba(0, 50, 126, 0.12), -49px 0 0 -6px rgba(0, 50, 126, 0.12), -50px 0 0 -6px rgba(0, 50, 126, 0.12), -51px 0 0 -6px rgba(0, 50, 126, 0.12), -52px 0 0 -6px rgba(0, 50, 126, 0.12), -53px 0 0 -6px rgba(0, 50, 126, 0.12), -54px 0 0 -6px rgba(0, 50, 126, 0.12), -55px 0 0 -6px rgba(0, 50, 126, 0.12), -56px 0 0 -6px rgba(0, 50, 126, 0.12), -57px 0 0 -6px rgba(0, 50, 126, 0.12), -58px 0 0 -6px rgba(0, 50, 126, 0.12), -59px 0 0 -6px rgba(0, 50, 126, 0.12), -60px 0 0 -6px rgba(0, 50, 126, 0.12), -61px 0 0 -6px rgba(0, 50, 126, 0.12), -62px 0 0 -6px rgba(0, 50, 126, 0.12), -63px 0 0 -6px rgba(0, 50, 126, 0.12), -64px 0 0 -6px rgba(0, 50, 126, 0.12), -65px 0 0 -6px rgba(0, 50, 126, 0.12), -66px 0 0 -6px rgba(0, 50, 126, 0.12), -67px 0 0 -6px rgba(0, 50, 126, 0.12), -68px 0 0 -6px rgba(0, 50, 126, 0.12), -69px 0 0 -6px rgba(0, 50, 126, 0.12), -70px 0 0 -6px rgba(0, 50, 126, 0.12), -71px 0 0 -6px rgba(0, 50, 126, 0.12), -72px 0 0 -6px rgba(0, 50, 126, 0.12), -73px 0 0 -6px rgba(0, 50, 126, 0.12), -74px 0 0 -6px rgba(0, 50, 126, 0.12), -75px 0 0 -6px rgba(0, 50, 126, 0.12), -76px 0 0 -6px rgba(0, 50, 126, 0.12), -77px 0 0 -6px rgba(0, 50, 126, 0.12), -78px 0 0 -6px rgba(0, 50, 126, 0.12), -79px 0 0 -6px rgba(0, 50, 126, 0.12), -80px 0 0 -6px rgba(0, 50, 126, 0.12), -81px 0 0 -6px rgba(0, 50, 126, 0.12), -82px 0 0 -6px rgba(0, 50, 126, 0.12), -83px 0 0 -6px rgba(0, 50, 126, 0.12), -84px 0 0 -6px rgba(0, 50, 126, 0.12), -85px 0 0 -6px rgba(0, 50, 126, 0.12), -86px 0 0 -6px rgba(0, 50, 126, 0.12), -87px 0 0 -6px rgba(0, 50, 126, 0.12), -88px 0 0 -6px rgba(0, 50, 126, 0.12), -89px 0 0 -6px rgba(0, 50, 126, 0.12), -90px 0 0 -6px rgba(0, 50, 126, 0.12), -91px 0 0 -6px rgba(0, 50, 126, 0.12), -92px 0 0 -6px rgba(0, 50, 126, 0.12), -93px 0 0 -6px rgba(0, 50, 126, 0.12), -94px 0 0 -6px rgba(0, 50, 126, 0.12), -95px 0 0 -6px rgba(0, 50, 126, 0.12), -96px 0 0 -6px rgba(0, 50, 126, 0.12), -97px 0 0 -6px rgba(0, 50, 126, 0.12), -98px 0 0 -6px rgba(0, 50, 126, 0.12), -99px 0 0 -6px rgba(0, 50, 126, 0.12), -100px 0 0 -6px rgba(0, 50, 126, 0.12), -101px 0 0 -6px rgba(0, 50, 126, 0.12), -102px 0 0 -6px rgba(0, 50, 126, 0.12), -103px 0 0 -6px rgba(0, 50, 126, 0.12), -104px 0 0 -6px rgba(0, 50, 126, 0.12), -105px 0 0 -6px rgba(0, 50, 126, 0.12), -106px 0 0 -6px rgba(0, 50, 126, 0.12), -107px 0 0 -6px rgba(0, 50, 126, 0.12), -108px 0 0 -6px rgba(0, 50, 126, 0.12), -109px 0 0 -6px rgba(0, 50, 126, 0.12), -110px 0 0 -6px rgba(0, 50, 126, 0.12), -111px 0 0 -6px rgba(0, 50, 126, 0.12), -112px 0 0 -6px rgba(0, 50, 126, 0.12), -113px 0 0 -6px rgba(0, 50, 126, 0.12), -114px 0 0 -6px rgba(0, 50, 126, 0.12), -115px 0 0 -6px rgba(0, 50, 126, 0.12), -116px 0 0 -6px rgba(0, 50, 126, 0.12), -117px 0 0 -6px rgba(0, 50, 126, 0.12), -118px 0 0 -6px rgba(0, 50, 126, 0.12), -119px 0 0 -6px rgba(0, 50, 126, 0.12), -120px 0 0 -6px rgba(0, 50, 126, 0.12), -121px 0 0 -6px rgba(0, 50, 126, 0.12), -122px 0 0 -6px rgba(0, 50, 126, 0.12), -123px 0 0 -6px rgba(0, 50, 126, 0.12), -124px 0 0 -6px rgba(0, 50, 126, 0.12), -125px 0 0 -6px rgba(0, 50, 126, 0.12), -126px 0 0 -6px rgba(0, 50, 126, 0.12), -127px 0 0 -6px rgba(0, 50, 126, 0.12), -128px 0 0 -6px rgba(0, 50, 126, 0.12), -129px 0 0 -6px rgba(0, 50, 126, 0.12), -130px 0 0 -6px rgba(0, 50, 126, 0.12), -131px 0 0 -6px rgba(0, 50, 126, 0.12), -132px 0 0 -6px rgba(0, 50, 126, 0.12), -133px 0 0 -6px rgba(0, 50, 126, 0.12), -134px 0 0 -6px rgba(0, 50, 126, 0.12), -135px 0 0 -6px rgba(0, 50, 126, 0.12), -136px 0 0 -6px rgba(0, 50, 126, 0.12), -137px 0 0 -6px rgba(0, 50, 126, 0.12), -138px 0 0 -6px rgba(0, 50, 126, 0.12), -139px 0 0 -6px rgba(0, 50, 126, 0.12), -140px 0 0 -6px rgba(0, 50, 126, 0.12), -141px 0 0 -6px rgba(0, 50, 126, 0.12), -142px 0 0 -6px rgba(0, 50, 126, 0.12), -143px 0 0 -6px rgba(0, 50, 126, 0.12), -144px 0 0 -6px rgba(0, 50, 126, 0.12), -145px 0 0 -6px rgba(0, 50, 126, 0.12), -146px 0 0 -6px rgba(0, 50, 126, 0.12), -147px 0 0 -6px rgba(0, 50, 126, 0.12), -148px 0 0 -6px rgba(0, 50, 126, 0.12), -149px 0 0 -6px rgba(0, 50, 126, 0.12), -150px 0 0 -6px rgba(0, 50, 126, 0.12), -151px 0 0 -6px rgba(0, 50, 126, 0.12), -152px 0 0 -6px rgba(0, 50, 126, 0.12), -153px 0 0 -6px rgba(0, 50, 126, 0.12), -154px 0 0 -6px rgba(0, 50, 126, 0.12), -155px 0 0 -6px rgba(0, 50, 126, 0.12), -156px 0 0 -6px rgba(0, 50, 126, 0.12), -157px 0 0 -6px rgba(0, 50, 126, 0.12), -158px 0 0 -6px rgba(0, 50, 126, 0.12), -159px 0 0 -6px rgba(0, 50, 126, 0.12), -160px 0 0 -6px rgba(0, 50, 126, 0.12), -161px 0 0 -6px rgba(0, 50, 126, 0.12), -162px 0 0 -6px rgba(0, 50, 126, 0.12), -163px 0 0 -6px rgba(0, 50, 126, 0.12), -164px 0 0 -6px rgba(0, 50, 126, 0.12), -165px 0 0 -6px rgba(0, 50, 126, 0.12), -166px 0 0 -6px rgba(0, 50, 126, 0.12), -167px 0 0 -6px rgba(0, 50, 126, 0.12), -168px 0 0 -6px rgba(0, 50, 126, 0.12), -169px 0 0 -6px rgba(0, 50, 126, 0.12), -170px 0 0 -6px rgba(0, 50, 126, 0.12), -171px 0 0 -6px rgba(0, 50, 126, 0.12), -172px 0 0 -6px rgba(0, 50, 126, 0.12), -173px 0 0 -6px rgba(0, 50, 126, 0.12), -174px 0 0 -6px rgba(0, 50, 126, 0.12), -175px 0 0 -6px rgba(0, 50, 126, 0.12), -176px 0 0 -6px rgba(0, 50, 126, 0.12), -177px 0 0 -6px rgba(0, 50, 126, 0.12), -178px 0 0 -6px rgba(0, 50, 126, 0.12), -179px 0 0 -6px rgba(0, 50, 126, 0.12), -180px 0 0 -6px rgba(0, 50, 126, 0.12), -181px 0 0 -6px rgba(0, 50, 126, 0.12), -182px 0 0 -6px rgba(0, 50, 126, 0.12), -183px 0 0 -6px rgba(0, 50, 126, 0.12), -184px 0 0 -6px rgba(0, 50, 126, 0.12), -185px 0 0 -6px rgba(0, 50, 126, 0.12), -186px 0 0 -6px rgba(0, 50, 126, 0.12), -187px 0 0 -6px rgba(0, 50, 126, 0.12), -188px 0 0 -6px rgba(0, 50, 126, 0.12), -189px 0 0 -6px rgba(0, 50, 126, 0.12), -190px 0 0 -6px rgba(0, 50, 126, 0.12), -191px 0 0 -6px rgba(0, 50, 126, 0.12), -192px 0 0 -6px rgba(0, 50, 126, 0.12), -193px 0 0 -6px rgba(0, 50, 126, 0.12), -194px 0 0 -6px rgba(0, 50, 126, 0.12), -195px 0 0 -6px rgba(0, 50, 126, 0.12), -196px 0 0 -6px rgba(0, 50, 126, 0.12), -197px 0 0 -6px rgba(0, 50, 126, 0.12), -198px 0 0 -6px rgba(0, 50, 126, 0.12), -199px 0 0 -6px rgba(0, 50, 126, 0.12), -200px 0 0 -6px rgba(0, 50, 126, 0.12), -201px 0 0 -6px rgba(0, 50, 126, 0.12), -202px 0 0 -6px rgba(0, 50, 126, 0.12), -203px 0 0 -6px rgba(0, 50, 126, 0.12), -204px 0 0 -6px rgba(0, 50, 126, 0.12), -205px 0 0 -6px rgba(0, 50, 126, 0.12), -206px 0 0 -6px rgba(0, 50, 126, 0.12), -207px 0 0 -6px rgba(0, 50, 126, 0.12), -208px 0 0 -6px rgba(0, 50, 126, 0.12), -209px 0 0 -6px rgba(0, 50, 126, 0.12), -210px 0 0 -6px rgba(0, 50, 126, 0.12), -211px 0 0 -6px rgba(0, 50, 126, 0.12), -212px 0 0 -6px rgba(0, 50, 126, 0.12), -213px 0 0 -6px rgba(0, 50, 126, 0.12), -214px 0 0 -6px rgba(0, 50, 126, 0.12), -215px 0 0 -6px rgba(0, 50, 126, 0.12), -216px 0 0 -6px rgba(0, 50, 126, 0.12), -217px 0 0 -6px rgba(0, 50, 126, 0.12), -218px 0 0 -6px rgba(0, 50, 126, 0.12), -219px 0 0 -6px rgba(0, 50, 126, 0.12), -220px 0 0 -6px rgba(0, 50, 126, 0.12), -221px 0 0 -6px rgba(0, 50, 126, 0.12), -222px 0 0 -6px rgba(0, 50, 126, 0.12), -223px 0 0 -6px rgba(0, 50, 126, 0.12), -224px 0 0 -6px rgba(0, 50, 126, 0.12), -225px 0 0 -6px rgba(0, 50, 126, 0.12), -226px 0 0 -6px rgba(0, 50, 126, 0.12), -227px 0 0 -6px rgba(0, 50, 126, 0.12), -228px 0 0 -6px rgba(0, 50, 126, 0.12), -229px 0 0 -6px rgba(0, 50, 126, 0.12), -230px 0 0 -6px rgba(0, 50, 126, 0.12), -231px 0 0 -6px rgba(0, 50, 126, 0.12), -232px 0 0 -6px rgba(0, 50, 126, 0.12), -233px 0 0 -6px rgba(0, 50, 126, 0.12), -234px 0 0 -6px rgba(0, 50, 126, 0.12), -235px 0 0 -6px rgba(0, 50, 126, 0.12), -236px 0 0 -6px rgba(0, 50, 126, 0.12), -237px 0 0 -6px rgba(0, 50, 126, 0.12), -238px 0 0 -6px rgba(0, 50, 126, 0.12), -239px 0 0 -6px rgba(0, 50, 126, 0.12), -240px 0 0 -6px rgba(0, 50, 126, 0.12); + margin-top: -6px; + border: 1px solid rgba(0, 30, 75, 0.12); + transition: .3s border-color, .3s background-color; +} + +.custom-range::-moz-range-track { + width: 240px; + height: 2px; + background: rgba(0, 50, 126, 0.12); +} + +.custom-range::-moz-range-thumb { + width: 14px; + height: 14px; + background: #fff; + border-radius: 50px; + border: 1px solid rgba(0, 30, 75, 0.12); + position: relative; + transition: .3s border-color, .3s background-color; +} + +.custom-range::-moz-range-progress { + height: 2px; + background: #467fcf; + border: 0; + margin-top: 0; +} + +.custom-range::-ms-track { + background: transparent; + border: 0; + border-color: transparent; + border-radius: 0; + border-width: 0; + color: transparent; + height: 2px; + margin-top: 10px; + width: 240px; +} + +.custom-range::-ms-thumb { + width: 240px; + height: 2px; + background: #fff; + border-radius: 50px; + border: 1px solid rgba(0, 30, 75, 0.12); + transition: .3s border-color, .3s background-color; +} + +.custom-range::-ms-fill-lower { + background: #467fcf; + border-radius: 0; +} + +.custom-range::-ms-fill-upper { + background: rgba(0, 50, 126, 0.12); + border-radius: 0; +} + +.custom-range::-ms-tooltip { + display: none; +} + +.selectgroup { + display: -ms-inline-flexbox; + display: inline-flex; +} + +.selectgroup-vertical { + -ms-flex-direction: column; + flex-direction: column; +} + +.selectgroup-item { + -ms-flex-positive: 1; + flex-grow: 1; + position: relative; +} + +.selectgroup:not(.selectgroup-vertical) > .selectgroup-item + .selectgroup-item { + margin-right: -1px; +} + +.selectgroup:not(.selectgroup-vertical) > .selectgroup-item:not(:first-child) .selectgroup-button { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.selectgroup:not(.selectgroup-vertical) > .selectgroup-item:not(:last-child) .selectgroup-button { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.selectgroup-vertical > .selectgroup-item:not(:last-child) { + margin-bottom: 0; +} + +.selectgroup-vertical > .selectgroup-item + .selectgroup-item { + margin-top: -1px; + margin-right: 0; +} + +.selectgroup-vertical > .selectgroup-item:not(:first-child) .selectgroup-button { + border-top-right-radius: 0; + border-top-left-radius: 0; +} + +.selectgroup-vertical > .selectgroup-item:not(:last-child) .selectgroup-button { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} + +.selectgroup-input { + opacity: 0; + position: absolute; + z-index: -1; + top: 0; + right: 0; +} + +.selectgroup-button { + display: block; + border: 1px solid rgba(0, 40, 100, 0.12); + text-align: center; + padding: 0.375rem 1rem; + position: relative; + cursor: pointer; + border-radius: 3px; + color: #9aa0ac; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + font-size: 0.9375rem; + line-height: 1.5rem; + min-width: 2.375rem; +} + +.selectgroup-button-icon { + padding-right: .5rem; + padding-left: .5rem; + font-size: 1rem; +} + +.selectgroup-input:checked + .selectgroup-button { + border-color: #467fcf; + z-index: 1; + color: #467fcf; + background: #edf2fa; +} + +.selectgroup-input:focus + .selectgroup-button { + border-color: #467fcf; + z-index: 2; + color: #467fcf; + box-shadow: 0 0 0 2px rgba(70, 127, 207, 0.25); +} + +.selectgroup-pills { + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -ms-flex-align: start; + align-items: flex-start; +} + +.selectgroup-pills .selectgroup-item { + margin-left: .5rem; + -ms-flex-positive: 0; + flex-grow: 0; +} + +.selectgroup-pills .selectgroup-button { + border-radius: 50px !important; +} + +.custom-switch { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: default; + display: -ms-inline-flexbox; + display: inline-flex; + -ms-flex-align: center; + align-items: center; + margin: 0; +} + +.custom-switch-input { + position: absolute; + z-index: -1; + opacity: 0; +} + +.custom-switches-stacked { + display: -ms-flexbox; + display: flex; + -ms-flex-direction: column; + flex-direction: column; +} + +.custom-switches-stacked .custom-switch { + margin-bottom: .5rem; +} + +.custom-switch-indicator { + display: inline-block; + height: 1.25rem; + width: 2.25rem; + background: #e9ecef; + border-radius: 50px; + position: relative; + vertical-align: bottom; + border: 1px solid rgba(0, 40, 100, 0.12); + transition: .3s border-color, .3s background-color; +} + +.custom-switch-indicator:before { + content: ''; + position: absolute; + height: calc(1.25rem - 4px); + width: calc(1.25rem - 4px); + top: 1px; + right: 1px; + background: #fff; + border-radius: 50%; + transition: .3s right; + box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.4); +} + +.custom-switch-input:checked ~ .custom-switch-indicator { + background: #467fcf; +} + +.custom-switch-input:checked ~ .custom-switch-indicator:before { + right: calc(1rem + 1px); +} + +.custom-switch-input:focus ~ .custom-switch-indicator { + box-shadow: 0 0 0 2px rgba(70, 127, 207, 0.25); + border-color: #467fcf; +} + +.custom-switch-description { + margin-right: .5rem; + color: #6e7687; + transition: .3s color; +} + +.custom-switch-input:checked ~ .custom-switch-description { + color: #495057; +} + +.imagecheck { + margin: 0; + position: relative; + cursor: pointer; +} + +.imagecheck-input { + position: absolute; + z-index: -1; + opacity: 0; +} + +.imagecheck-figure { + border: 1px solid rgba(0, 40, 100, 0.12); + border-radius: 3px; + margin: 0; + position: relative; +} + +.imagecheck-input:focus ~ .imagecheck-figure { + border-color: #467fcf; + box-shadow: 0 0 0 2px rgba(70, 127, 207, 0.25); +} + +.imagecheck-input:checked ~ .imagecheck-figure { + border-color: rgba(0, 40, 100, 0.24); +} + +.imagecheck-figure:before { + content: ''; + position: absolute; + top: .25rem; + right: .25rem; + display: block; + width: 1rem; + height: 1rem; + pointer-events: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + background: #467fcf url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3e%3c/svg%3e") no-repeat center center/50% 50%; + color: #fff; + z-index: 1; + border-radius: 3px; + opacity: 0; + transition: .3s opacity; +} + +.imagecheck-input:checked ~ .imagecheck-figure:before { + opacity: 1; +} + +.imagecheck-image { + max-width: 100%; + opacity: .64; + transition: .3s opacity; +} + +.imagecheck-image:first-child { + border-top-right-radius: 2px; + border-top-left-radius: 2px; +} + +.imagecheck-image:last-child { + border-bottom-right-radius: 2px; + border-bottom-left-radius: 2px; +} + +.imagecheck:hover .imagecheck-image, +.imagecheck-input:focus ~ .imagecheck-figure .imagecheck-image, +.imagecheck-input:checked ~ .imagecheck-figure .imagecheck-image { + opacity: 1; +} + +.imagecheck-caption { + text-align: center; + padding: .25rem .25rem; + color: #9aa0ac; + font-size: 0.875rem; + transition: .3s color; +} + +.imagecheck:hover .imagecheck-caption, +.imagecheck-input:focus ~ .imagecheck-figure .imagecheck-caption, +.imagecheck-input:checked ~ .imagecheck-figure .imagecheck-caption { + color: #495057; +} + +.colorinput { + margin: 0; + position: relative; + cursor: pointer; +} + +.colorinput-input { + position: absolute; + z-index: -1; + opacity: 0; +} + +.colorinput-color { + display: inline-block; + width: 1.75rem; + height: 1.75rem; + border-radius: 3px; + border: 1px solid rgba(0, 40, 100, 0.12); + color: #fff; + box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05); +} + +.colorinput-color:before { + content: ''; + opacity: 0; + position: absolute; + top: .25rem; + right: .25rem; + height: 1.25rem; + width: 1.25rem; + transition: .3s opacity; + background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3e%3c/svg%3e") no-repeat center center/50% 50%; +} + +.colorinput-input:checked ~ .colorinput-color:before { + opacity: 1; +} + +.colorinput-input:focus ~ .colorinput-color { + border-color: #467fcf; + box-shadow: 0 0 0 2px rgba(70, 127, 207, 0.25); +} + +.timeline { + position: relative; + margin: 0 0 2rem; + padding: 0; + list-style: none; +} + +.timeline:before { + background-color: #e9ecef; + position: absolute; + display: block; + content: ''; + width: 1px; + height: 100%; + top: 0; + bottom: 0; + right: 4px; +} + +.timeline-item { + position: relative; + display: -ms-flexbox; + display: flex; + padding-right: 2rem; + margin: .5rem 0; +} + +.timeline-item:first-child:before, .timeline-item:last-child:before { + content: ''; + position: absolute; + background: #fff; + width: 1px; + right: .25rem; +} + +.timeline-item:first-child { + margin-top: 0; +} + +.timeline-item:first-child:before { + top: 0; + height: .5rem; +} + +.timeline-item:last-child { + margin-bottom: 0; +} + +.timeline-item:last-child:before { + top: .5rem; + bottom: 0; +} + +.timeline-badge { + position: absolute; + display: block; + width: 0.4375rem; + height: 0.4375rem; + right: 1px; + top: .5rem; + border-radius: 100%; + border: 1px solid #fff; + background: #adb5bd; +} + +.timeline-time { + white-space: nowrap; + margin-right: auto; + color: #9aa0ac; + font-size: 87.5%; +} + +.browser { + width: 1.25rem; + height: 1.25rem; + display: inline-block; + background: no-repeat center/100% 100%; + vertical-align: bottom; + font-style: normal; +} + +.browser-android-browser { + background-image: url("../images/browsers/android-browser.svg"); +} + +.browser-aol-explorer { + background-image: url("../images/browsers/aol-explorer.svg"); +} + +.browser-blackberry { + background-image: url("../images/browsers/blackberry.svg"); +} + +.browser-camino { + background-image: url("../images/browsers/camino.svg"); +} + +.browser-chrome { + background-image: url("../images/browsers/chrome.svg"); +} + +.browser-chromium { + background-image: url("../images/browsers/chromium.svg"); +} + +.browser-dolphin { + background-image: url("../images/browsers/dolphin.svg"); +} + +.browser-edge { + background-image: url("../images/browsers/edge.svg"); +} + +.browser-firefox { + background-image: url("../images/browsers/firefox.svg"); +} + +.browser-ie { + background-image: url("../images/browsers/ie.svg"); +} + +.browser-maxthon { + background-image: url("../images/browsers/maxthon.svg"); +} + +.browser-mozilla { + background-image: url("../images/browsers/mozilla.svg"); +} + +.browser-netscape { + background-image: url("../images/browsers/netscape.svg"); +} + +.browser-opera { + background-image: url("../images/browsers/opera.svg"); +} + +.browser-safari { + background-image: url("../images/browsers/safari.svg"); +} + +.browser-sleipnir { + background-image: url("../images/browsers/sleipnir.svg"); +} + +.browser-uc-browser { + background-image: url("../images/browsers/uc-browser.svg"); +} + +.browser-vivaldi { + background-image: url("../images/browsers/vivaldi.svg"); +} + +.flag { + width: 1.6rem; + height: 1.2rem; + display: inline-block; + background: no-repeat center/100% 100%; + vertical-align: bottom; + font-style: normal; + box-shadow: 0 0 1px 1px rgba(0, 0, 0, 0.1); + border-radius: 2px; +} + +.flag-ad { + background-image: url("../images/flags/ad.svg"); +} + +.flag-ae { + background-image: url("../images/flags/ae.svg"); +} + +.flag-af { + background-image: url("../images/flags/af.svg"); +} + +.flag-ag { + background-image: url("../images/flags/ag.svg"); +} + +.flag-ai { + background-image: url("../images/flags/ai.svg"); +} + +.flag-al { + background-image: url("../images/flags/al.svg"); +} + +.flag-am { + background-image: url("../images/flags/am.svg"); +} + +.flag-ao { + background-image: url("../images/flags/ao.svg"); +} + +.flag-aq { + background-image: url("../images/flags/aq.svg"); +} + +.flag-ar { + background-image: url("../images/flags/ar.svg"); +} + +.flag-as { + background-image: url("../images/flags/as.svg"); +} + +.flag-at { + background-image: url("../images/flags/at.svg"); +} + +.flag-au { + background-image: url("../images/flags/au.svg"); +} + +.flag-aw { + background-image: url("../images/flags/aw.svg"); +} + +.flag-ax { + background-image: url("../images/flags/ax.svg"); +} + +.flag-az { + background-image: url("../images/flags/az.svg"); +} + +.flag-ba { + background-image: url("../images/flags/ba.svg"); +} + +.flag-bb { + background-image: url("../images/flags/bb.svg"); +} + +.flag-bd { + background-image: url("../images/flags/bd.svg"); +} + +.flag-be { + background-image: url("../images/flags/be.svg"); +} + +.flag-bf { + background-image: url("../images/flags/bf.svg"); +} + +.flag-bg { + background-image: url("../images/flags/bg.svg"); +} + +.flag-bh { + background-image: url("../images/flags/bh.svg"); +} + +.flag-bi { + background-image: url("../images/flags/bi.svg"); +} + +.flag-bj { + background-image: url("../images/flags/bj.svg"); +} + +.flag-bl { + background-image: url("../images/flags/bl.svg"); +} + +.flag-bm { + background-image: url("../images/flags/bm.svg"); +} + +.flag-bn { + background-image: url("../images/flags/bn.svg"); +} + +.flag-bo { + background-image: url("../images/flags/bo.svg"); +} + +.flag-bq { + background-image: url("../images/flags/bq.svg"); +} + +.flag-br { + background-image: url("../images/flags/br.svg"); +} + +.flag-bs { + background-image: url("../images/flags/bs.svg"); +} + +.flag-bt { + background-image: url("../images/flags/bt.svg"); +} + +.flag-bv { + background-image: url("../images/flags/bv.svg"); +} + +.flag-bw { + background-image: url("../images/flags/bw.svg"); +} + +.flag-by { + background-image: url("../images/flags/by.svg"); +} + +.flag-bz { + background-image: url("../images/flags/bz.svg"); +} + +.flag-ca { + background-image: url("../images/flags/ca.svg"); +} + +.flag-cc { + background-image: url("../images/flags/cc.svg"); +} + +.flag-cd { + background-image: url("../images/flags/cd.svg"); +} + +.flag-cf { + background-image: url("../images/flags/cf.svg"); +} + +.flag-cg { + background-image: url("../images/flags/cg.svg"); +} + +.flag-ch { + background-image: url("../images/flags/ch.svg"); +} + +.flag-ci { + background-image: url("../images/flags/ci.svg"); +} + +.flag-ck { + background-image: url("../images/flags/ck.svg"); +} + +.flag-cl { + background-image: url("../images/flags/cl.svg"); +} + +.flag-cm { + background-image: url("../images/flags/cm.svg"); +} + +.flag-cn { + background-image: url("../images/flags/cn.svg"); +} + +.flag-co { + background-image: url("../images/flags/co.svg"); +} + +.flag-cr { + background-image: url("../images/flags/cr.svg"); +} + +.flag-cu { + background-image: url("../images/flags/cu.svg"); +} + +.flag-cv { + background-image: url("../images/flags/cv.svg"); +} + +.flag-cw { + background-image: url("../images/flags/cw.svg"); +} + +.flag-cx { + background-image: url("../images/flags/cx.svg"); +} + +.flag-cy { + background-image: url("../images/flags/cy.svg"); +} + +.flag-cz { + background-image: url("../images/flags/cz.svg"); +} + +.flag-de { + background-image: url("../images/flags/de.svg"); +} + +.flag-dj { + background-image: url("../images/flags/dj.svg"); +} + +.flag-dk { + background-image: url("../images/flags/dk.svg"); +} + +.flag-dm { + background-image: url("../images/flags/dm.svg"); +} + +.flag-do { + background-image: url("../images/flags/do.svg"); +} + +.flag-dz { + background-image: url("../images/flags/dz.svg"); +} + +.flag-ec { + background-image: url("../images/flags/ec.svg"); +} + +.flag-ee { + background-image: url("../images/flags/ee.svg"); +} + +.flag-eg { + background-image: url("../images/flags/eg.svg"); +} + +.flag-eh { + background-image: url("../images/flags/eh.svg"); +} + +.flag-er { + background-image: url("../images/flags/er.svg"); +} + +.flag-es { + background-image: url("../images/flags/es.svg"); +} + +.flag-et { + background-image: url("../images/flags/et.svg"); +} + +.flag-eu { + background-image: url("../images/flags/eu.svg"); +} + +.flag-fi { + background-image: url("../images/flags/fi.svg"); +} + +.flag-fj { + background-image: url("../images/flags/fj.svg"); +} + +.flag-fk { + background-image: url("../images/flags/fk.svg"); +} + +.flag-fm { + background-image: url("../images/flags/fm.svg"); +} + +.flag-fo { + background-image: url("../images/flags/fo.svg"); +} + +.flag-fr { + background-image: url("../images/flags/fr.svg"); +} + +.flag-ga { + background-image: url("../images/flags/ga.svg"); +} + +.flag-gb-eng { + background-image: url("../images/flags/gb-eng.svg"); +} + +.flag-gb-nir { + background-image: url("../images/flags/gb-nir.svg"); +} + +.flag-gb-sct { + background-image: url("../images/flags/gb-sct.svg"); +} + +.flag-gb-wls { + background-image: url("../images/flags/gb-wls.svg"); +} + +.flag-gb { + background-image: url("../images/flags/gb.svg"); +} + +.flag-gd { + background-image: url("../images/flags/gd.svg"); +} + +.flag-ge { + background-image: url("../images/flags/ge.svg"); +} + +.flag-gf { + background-image: url("../images/flags/gf.svg"); +} + +.flag-gg { + background-image: url("../images/flags/gg.svg"); +} + +.flag-gh { + background-image: url("../images/flags/gh.svg"); +} + +.flag-gi { + background-image: url("../images/flags/gi.svg"); +} + +.flag-gl { + background-image: url("../images/flags/gl.svg"); +} + +.flag-gm { + background-image: url("../images/flags/gm.svg"); +} + +.flag-gn { + background-image: url("../images/flags/gn.svg"); +} + +.flag-gp { + background-image: url("../images/flags/gp.svg"); +} + +.flag-gq { + background-image: url("../images/flags/gq.svg"); +} + +.flag-gr { + background-image: url("../images/flags/gr.svg"); +} + +.flag-gs { + background-image: url("../images/flags/gs.svg"); +} + +.flag-gt { + background-image: url("../images/flags/gt.svg"); +} + +.flag-gu { + background-image: url("../images/flags/gu.svg"); +} + +.flag-gw { + background-image: url("../images/flags/gw.svg"); +} + +.flag-gy { + background-image: url("../images/flags/gy.svg"); +} + +.flag-hk { + background-image: url("../images/flags/hk.svg"); +} + +.flag-hm { + background-image: url("../images/flags/hm.svg"); +} + +.flag-hn { + background-image: url("../images/flags/hn.svg"); +} + +.flag-hr { + background-image: url("../images/flags/hr.svg"); +} + +.flag-ht { + background-image: url("../images/flags/ht.svg"); +} + +.flag-hu { + background-image: url("../images/flags/hu.svg"); +} + +.flag-id { + background-image: url("../images/flags/id.svg"); +} + +.flag-ie { + background-image: url("../images/flags/ie.svg"); +} + +.flag-il { + background-image: url("../images/flags/il.svg"); +} + +.flag-im { + background-image: url("../images/flags/im.svg"); +} + +.flag-in { + background-image: url("../images/flags/in.svg"); +} + +.flag-io { + background-image: url("../images/flags/io.svg"); +} + +.flag-iq { + background-image: url("../images/flags/iq.svg"); +} + +.flag-ir { + background-image: url("../images/flags/ir.svg"); +} + +.flag-is { + background-image: url("../images/flags/is.svg"); +} + +.flag-it { + background-image: url("../images/flags/it.svg"); +} + +.flag-je { + background-image: url("../images/flags/je.svg"); +} + +.flag-jm { + background-image: url("../images/flags/jm.svg"); +} + +.flag-jo { + background-image: url("../images/flags/jo.svg"); +} + +.flag-jp { + background-image: url("../images/flags/jp.svg"); +} + +.flag-ke { + background-image: url("../images/flags/ke.svg"); +} + +.flag-kg { + background-image: url("../images/flags/kg.svg"); +} + +.flag-kh { + background-image: url("../images/flags/kh.svg"); +} + +.flag-ki { + background-image: url("../images/flags/ki.svg"); +} + +.flag-km { + background-image: url("../images/flags/km.svg"); +} + +.flag-kn { + background-image: url("../images/flags/kn.svg"); +} + +.flag-kp { + background-image: url("../images/flags/kp.svg"); +} + +.flag-kr { + background-image: url("../images/flags/kr.svg"); +} + +.flag-kw { + background-image: url("../images/flags/kw.svg"); +} + +.flag-ky { + background-image: url("../images/flags/ky.svg"); +} + +.flag-kz { + background-image: url("../images/flags/kz.svg"); +} + +.flag-la { + background-image: url("../images/flags/la.svg"); +} + +.flag-lb { + background-image: url("../images/flags/lb.svg"); +} + +.flag-lc { + background-image: url("../images/flags/lc.svg"); +} + +.flag-li { + background-image: url("../images/flags/li.svg"); +} + +.flag-lk { + background-image: url("../images/flags/lk.svg"); +} + +.flag-lr { + background-image: url("../images/flags/lr.svg"); +} + +.flag-ls { + background-image: url("../images/flags/ls.svg"); +} + +.flag-lt { + background-image: url("../images/flags/lt.svg"); +} + +.flag-lu { + background-image: url("../images/flags/lu.svg"); +} + +.flag-lv { + background-image: url("../images/flags/lv.svg"); +} + +.flag-ly { + background-image: url("../images/flags/ly.svg"); +} + +.flag-ma { + background-image: url("../images/flags/ma.svg"); +} + +.flag-mc { + background-image: url("../images/flags/mc.svg"); +} + +.flag-md { + background-image: url("../images/flags/md.svg"); +} + +.flag-me { + background-image: url("../images/flags/me.svg"); +} + +.flag-mf { + background-image: url("../images/flags/mf.svg"); +} + +.flag-mg { + background-image: url("../images/flags/mg.svg"); +} + +.flag-mh { + background-image: url("../images/flags/mh.svg"); +} + +.flag-mk { + background-image: url("../images/flags/mk.svg"); +} + +.flag-ml { + background-image: url("../images/flags/ml.svg"); +} + +.flag-mm { + background-image: url("../images/flags/mm.svg"); +} + +.flag-mn { + background-image: url("../images/flags/mn.svg"); +} + +.flag-mo { + background-image: url("../images/flags/mo.svg"); +} + +.flag-mp { + background-image: url("../images/flags/mp.svg"); +} + +.flag-mq { + background-image: url("../images/flags/mq.svg"); +} + +.flag-mr { + background-image: url("../images/flags/mr.svg"); +} + +.flag-ms { + background-image: url("../images/flags/ms.svg"); +} + +.flag-mt { + background-image: url("../images/flags/mt.svg"); +} + +.flag-mu { + background-image: url("../images/flags/mu.svg"); +} + +.flag-mv { + background-image: url("../images/flags/mv.svg"); +} + +.flag-mw { + background-image: url("../images/flags/mw.svg"); +} + +.flag-mx { + background-image: url("../images/flags/mx.svg"); +} + +.flag-my { + background-image: url("../images/flags/my.svg"); +} + +.flag-mz { + background-image: url("../images/flags/mz.svg"); +} + +.flag-na { + background-image: url("../images/flags/na.svg"); +} + +.flag-nc { + background-image: url("../images/flags/nc.svg"); +} + +.flag-ne { + background-image: url("../images/flags/ne.svg"); +} + +.flag-nf { + background-image: url("../images/flags/nf.svg"); +} + +.flag-ng { + background-image: url("../images/flags/ng.svg"); +} + +.flag-ni { + background-image: url("../images/flags/ni.svg"); +} + +.flag-nl { + background-image: url("../images/flags/nl.svg"); +} + +.flag-no { + background-image: url("../images/flags/no.svg"); +} + +.flag-np { + background-image: url("../images/flags/np.svg"); +} + +.flag-nr { + background-image: url("../images/flags/nr.svg"); +} + +.flag-nu { + background-image: url("../images/flags/nu.svg"); +} + +.flag-nz { + background-image: url("../images/flags/nz.svg"); +} + +.flag-om { + background-image: url("../images/flags/om.svg"); +} + +.flag-pa { + background-image: url("../images/flags/pa.svg"); +} + +.flag-pe { + background-image: url("../images/flags/pe.svg"); +} + +.flag-pf { + background-image: url("../images/flags/pf.svg"); +} + +.flag-pg { + background-image: url("../images/flags/pg.svg"); +} + +.flag-ph { + background-image: url("../images/flags/ph.svg"); +} + +.flag-pk { + background-image: url("../images/flags/pk.svg"); +} + +.flag-pl { + background-image: url("../images/flags/pl.svg"); +} + +.flag-pm { + background-image: url("../images/flags/pm.svg"); +} + +.flag-pn { + background-image: url("../images/flags/pn.svg"); +} + +.flag-pr { + background-image: url("../images/flags/pr.svg"); +} + +.flag-ps { + background-image: url("../images/flags/ps.svg"); +} + +.flag-pt { + background-image: url("../images/flags/pt.svg"); +} + +.flag-pw { + background-image: url("../images/flags/pw.svg"); +} + +.flag-py { + background-image: url("../images/flags/py.svg"); +} + +.flag-qa { + background-image: url("../images/flags/qa.svg"); +} + +.flag-re { + background-image: url("../images/flags/re.svg"); +} + +.flag-ro { + background-image: url("../images/flags/ro.svg"); +} + +.flag-rs { + background-image: url("../images/flags/rs.svg"); +} + +.flag-ru { + background-image: url("../images/flags/ru.svg"); +} + +.flag-rw { + background-image: url("../images/flags/rw.svg"); +} + +.flag-sa { + background-image: url("../images/flags/sa.svg"); +} + +.flag-sb { + background-image: url("../images/flags/sb.svg"); +} + +.flag-sc { + background-image: url("../images/flags/sc.svg"); +} + +.flag-sd { + background-image: url("../images/flags/sd.svg"); +} + +.flag-se { + background-image: url("../images/flags/se.svg"); +} + +.flag-sg { + background-image: url("../images/flags/sg.svg"); +} + +.flag-sh { + background-image: url("../images/flags/sh.svg"); +} + +.flag-si { + background-image: url("../images/flags/si.svg"); +} + +.flag-sj { + background-image: url("../images/flags/sj.svg"); +} + +.flag-sk { + background-image: url("../images/flags/sk.svg"); +} + +.flag-sl { + background-image: url("../images/flags/sl.svg"); +} + +.flag-sm { + background-image: url("../images/flags/sm.svg"); +} + +.flag-sn { + background-image: url("../images/flags/sn.svg"); +} + +.flag-so { + background-image: url("../images/flags/so.svg"); +} + +.flag-sr { + background-image: url("../images/flags/sr.svg"); +} + +.flag-ss { + background-image: url("../images/flags/ss.svg"); +} + +.flag-st { + background-image: url("../images/flags/st.svg"); +} + +.flag-sv { + background-image: url("../images/flags/sv.svg"); +} + +.flag-sx { + background-image: url("../images/flags/sx.svg"); +} + +.flag-sy { + background-image: url("../images/flags/sy.svg"); +} + +.flag-sz { + background-image: url("../images/flags/sz.svg"); +} + +.flag-tc { + background-image: url("../images/flags/tc.svg"); +} + +.flag-td { + background-image: url("../images/flags/td.svg"); +} + +.flag-tf { + background-image: url("../images/flags/tf.svg"); +} + +.flag-tg { + background-image: url("../images/flags/tg.svg"); +} + +.flag-th { + background-image: url("../images/flags/th.svg"); +} + +.flag-tj { + background-image: url("../images/flags/tj.svg"); +} + +.flag-tk { + background-image: url("../images/flags/tk.svg"); +} + +.flag-tl { + background-image: url("../images/flags/tl.svg"); +} + +.flag-tm { + background-image: url("../images/flags/tm.svg"); +} + +.flag-tn { + background-image: url("../images/flags/tn.svg"); +} + +.flag-to { + background-image: url("../images/flags/to.svg"); +} + +.flag-tr { + background-image: url("../images/flags/tr.svg"); +} + +.flag-tt { + background-image: url("../images/flags/tt.svg"); +} + +.flag-tv { + background-image: url("../images/flags/tv.svg"); +} + +.flag-tw { + background-image: url("../images/flags/tw.svg"); +} + +.flag-tz { + background-image: url("../images/flags/tz.svg"); +} + +.flag-ua { + background-image: url("../images/flags/ua.svg"); +} + +.flag-ug { + background-image: url("../images/flags/ug.svg"); +} + +.flag-um { + background-image: url("../images/flags/um.svg"); +} + +.flag-un { + background-image: url("../images/flags/un.svg"); +} + +.flag-us { + background-image: url("../images/flags/us.svg"); +} + +.flag-uy { + background-image: url("../images/flags/uy.svg"); +} + +.flag-uz { + background-image: url("../images/flags/uz.svg"); +} + +.flag-va { + background-image: url("../images/flags/va.svg"); +} + +.flag-vc { + background-image: url("../images/flags/vc.svg"); +} + +.flag-ve { + background-image: url("../images/flags/ve.svg"); +} + +.flag-vg { + background-image: url("../images/flags/vg.svg"); +} + +.flag-vi { + background-image: url("../images/flags/vi.svg"); +} + +.flag-vn { + background-image: url("../images/flags/vn.svg"); +} + +.flag-vu { + background-image: url("../images/flags/vu.svg"); +} + +.flag-wf { + background-image: url("../images/flags/wf.svg"); +} + +.flag-ws { + background-image: url("../images/flags/ws.svg"); +} + +.flag-ye { + background-image: url("../images/flags/ye.svg"); +} + +.flag-yt { + background-image: url("../images/flags/yt.svg"); +} + +.flag-za { + background-image: url("../images/flags/za.svg"); +} + +.flag-zm { + background-image: url("../images/flags/zm.svg"); +} + +.flag-zw { + background-image: url("../images/flags/zw.svg"); +} + +.payment { + width: 2.5rem; + height: 1.5rem; + display: inline-block; + background: no-repeat center/100% 100%; + vertical-align: bottom; + font-style: normal; + box-shadow: 0 0 1px 1px rgba(0, 0, 0, 0.1); + border-radius: 2px; +} + +.payment-2checkout-dark { + background-image: url("../images/payments/2checkout-dark.svg"); +} + +.payment-2checkout { + background-image: url("../images/payments/2checkout.svg"); +} + +.payment-alipay-dark { + background-image: url("../images/payments/alipay-dark.svg"); +} + +.payment-alipay { + background-image: url("../images/payments/alipay.svg"); +} + +.payment-amazon-dark { + background-image: url("../images/payments/amazon-dark.svg"); +} + +.payment-amazon { + background-image: url("../images/payments/amazon.svg"); +} + +.payment-americanexpress-dark { + background-image: url("../images/payments/americanexpress-dark.svg"); +} + +.payment-americanexpress { + background-image: url("../images/payments/americanexpress.svg"); +} + +.payment-applepay-dark { + background-image: url("../images/payments/applepay-dark.svg"); +} + +.payment-applepay { + background-image: url("../images/payments/applepay.svg"); +} + +.payment-bancontact-dark { + background-image: url("../images/payments/bancontact-dark.svg"); +} + +.payment-bancontact { + background-image: url("../images/payments/bancontact.svg"); +} + +.payment-bitcoin-dark { + background-image: url("../images/payments/bitcoin-dark.svg"); +} + +.payment-bitcoin { + background-image: url("../images/payments/bitcoin.svg"); +} + +.payment-bitpay-dark { + background-image: url("../images/payments/bitpay-dark.svg"); +} + +.payment-bitpay { + background-image: url("../images/payments/bitpay.svg"); +} + +.payment-cirrus-dark { + background-image: url("../images/payments/cirrus-dark.svg"); +} + +.payment-cirrus { + background-image: url("../images/payments/cirrus.svg"); +} + +.payment-clickandbuy-dark { + background-image: url("../images/payments/clickandbuy-dark.svg"); +} + +.payment-clickandbuy { + background-image: url("../images/payments/clickandbuy.svg"); +} + +.payment-coinkite-dark { + background-image: url("../images/payments/coinkite-dark.svg"); +} + +.payment-coinkite { + background-image: url("../images/payments/coinkite.svg"); +} + +.payment-dinersclub-dark { + background-image: url("../images/payments/dinersclub-dark.svg"); +} + +.payment-dinersclub { + background-image: url("../images/payments/dinersclub.svg"); +} + +.payment-directdebit-dark { + background-image: url("../images/payments/directdebit-dark.svg"); +} + +.payment-directdebit { + background-image: url("../images/payments/directdebit.svg"); +} + +.payment-discover-dark { + background-image: url("../images/payments/discover-dark.svg"); +} + +.payment-discover { + background-image: url("../images/payments/discover.svg"); +} + +.payment-dwolla-dark { + background-image: url("../images/payments/dwolla-dark.svg"); +} + +.payment-dwolla { + background-image: url("../images/payments/dwolla.svg"); +} + +.payment-ebay-dark { + background-image: url("../images/payments/ebay-dark.svg"); +} + +.payment-ebay { + background-image: url("../images/payments/ebay.svg"); +} + +.payment-eway-dark { + background-image: url("../images/payments/eway-dark.svg"); +} + +.payment-eway { + background-image: url("../images/payments/eway.svg"); +} + +.payment-giropay-dark { + background-image: url("../images/payments/giropay-dark.svg"); +} + +.payment-giropay { + background-image: url("../images/payments/giropay.svg"); +} + +.payment-googlewallet-dark { + background-image: url("../images/payments/googlewallet-dark.svg"); +} + +.payment-googlewallet { + background-image: url("../images/payments/googlewallet.svg"); +} + +.payment-ingenico-dark { + background-image: url("../images/payments/ingenico-dark.svg"); +} + +.payment-ingenico { + background-image: url("../images/payments/ingenico.svg"); +} + +.payment-jcb-dark { + background-image: url("../images/payments/jcb-dark.svg"); +} + +.payment-jcb { + background-image: url("../images/payments/jcb.svg"); +} + +.payment-klarna-dark { + background-image: url("../images/payments/klarna-dark.svg"); +} + +.payment-klarna { + background-image: url("../images/payments/klarna.svg"); +} + +.payment-laser-dark { + background-image: url("../images/payments/laser-dark.svg"); +} + +.payment-laser { + background-image: url("../images/payments/laser.svg"); +} + +.payment-maestro-dark { + background-image: url("../images/payments/maestro-dark.svg"); +} + +.payment-maestro { + background-image: url("../images/payments/maestro.svg"); +} + +.payment-mastercard-dark { + background-image: url("../images/payments/mastercard-dark.svg"); +} + +.payment-mastercard { + background-image: url("../images/payments/mastercard.svg"); +} + +.payment-monero-dark { + background-image: url("../images/payments/monero-dark.svg"); +} + +.payment-monero { + background-image: url("../images/payments/monero.svg"); +} + +.payment-neteller-dark { + background-image: url("../images/payments/neteller-dark.svg"); +} + +.payment-neteller { + background-image: url("../images/payments/neteller.svg"); +} + +.payment-ogone-dark { + background-image: url("../images/payments/ogone-dark.svg"); +} + +.payment-ogone { + background-image: url("../images/payments/ogone.svg"); +} + +.payment-okpay-dark { + background-image: url("../images/payments/okpay-dark.svg"); +} + +.payment-okpay { + background-image: url("../images/payments/okpay.svg"); +} + +.payment-paybox-dark { + background-image: url("../images/payments/paybox-dark.svg"); +} + +.payment-paybox { + background-image: url("../images/payments/paybox.svg"); +} + +.payment-paymill-dark { + background-image: url("../images/payments/paymill-dark.svg"); +} + +.payment-paymill { + background-image: url("../images/payments/paymill.svg"); +} + +.payment-payone-dark { + background-image: url("../images/payments/payone-dark.svg"); +} + +.payment-payone { + background-image: url("../images/payments/payone.svg"); +} + +.payment-payoneer-dark { + background-image: url("../images/payments/payoneer-dark.svg"); +} + +.payment-payoneer { + background-image: url("../images/payments/payoneer.svg"); +} + +.payment-paypal-dark { + background-image: url("../images/payments/paypal-dark.svg"); +} + +.payment-paypal { + background-image: url("../images/payments/paypal.svg"); +} + +.payment-paysafecard-dark { + background-image: url("../images/payments/paysafecard-dark.svg"); +} + +.payment-paysafecard { + background-image: url("../images/payments/paysafecard.svg"); +} + +.payment-payu-dark { + background-image: url("../images/payments/payu-dark.svg"); +} + +.payment-payu { + background-image: url("../images/payments/payu.svg"); +} + +.payment-payza-dark { + background-image: url("../images/payments/payza-dark.svg"); +} + +.payment-payza { + background-image: url("../images/payments/payza.svg"); +} + +.payment-ripple-dark { + background-image: url("../images/payments/ripple-dark.svg"); +} + +.payment-ripple { + background-image: url("../images/payments/ripple.svg"); +} + +.payment-sage-dark { + background-image: url("../images/payments/sage-dark.svg"); +} + +.payment-sage { + background-image: url("../images/payments/sage.svg"); +} + +.payment-sepa-dark { + background-image: url("../images/payments/sepa-dark.svg"); +} + +.payment-sepa { + background-image: url("../images/payments/sepa.svg"); +} + +.payment-shopify-dark { + background-image: url("../images/payments/shopify-dark.svg"); +} + +.payment-shopify { + background-image: url("../images/payments/shopify.svg"); +} + +.payment-skrill-dark { + background-image: url("../images/payments/skrill-dark.svg"); +} + +.payment-skrill { + background-image: url("../images/payments/skrill.svg"); +} + +.payment-solo-dark { + background-image: url("../images/payments/solo-dark.svg"); +} + +.payment-solo { + background-image: url("../images/payments/solo.svg"); +} + +.payment-square-dark { + background-image: url("../images/payments/square-dark.svg"); +} + +.payment-square { + background-image: url("../images/payments/square.svg"); +} + +.payment-stripe-dark { + background-image: url("../images/payments/stripe-dark.svg"); +} + +.payment-stripe { + background-image: url("../images/payments/stripe.svg"); +} + +.payment-switch-dark { + background-image: url("../images/payments/switch-dark.svg"); +} + +.payment-switch { + background-image: url("../images/payments/switch.svg"); +} + +.payment-ukash-dark { + background-image: url("../images/payments/ukash-dark.svg"); +} + +.payment-ukash { + background-image: url("../images/payments/ukash.svg"); +} + +.payment-unionpay-dark { + background-image: url("../images/payments/unionpay-dark.svg"); +} + +.payment-unionpay { + background-image: url("../images/payments/unionpay.svg"); +} + +.payment-verifone-dark { + background-image: url("../images/payments/verifone-dark.svg"); +} + +.payment-verifone { + background-image: url("../images/payments/verifone.svg"); +} + +.payment-verisign-dark { + background-image: url("../images/payments/verisign-dark.svg"); +} + +.payment-verisign { + background-image: url("../images/payments/verisign.svg"); +} + +.payment-visa-dark { + background-image: url("../images/payments/visa-dark.svg"); +} + +.payment-visa { + background-image: url("../images/payments/visa.svg"); +} + +.payment-webmoney-dark { + background-image: url("../images/payments/webmoney-dark.svg"); +} + +.payment-webmoney { + background-image: url("../images/payments/webmoney.svg"); +} + +.payment-westernunion-dark { + background-image: url("../images/payments/westernunion-dark.svg"); +} + +.payment-westernunion { + background-image: url("../images/payments/westernunion.svg"); +} + +.payment-worldpay-dark { + background-image: url("../images/payments/worldpay-dark.svg"); +} + +.payment-worldpay { + background-image: url("../images/payments/worldpay.svg"); +} + +svg { + -ms-touch-action: none; + touch-action: none; +} + +.jvectormap-container { + width: 100%; + height: 100%; + position: relative; + overflow: hidden; + -ms-touch-action: none; + touch-action: none; +} + +.jvectormap-tip { + position: absolute; + display: none; + border-radius: 3px; + background: #212529; + color: white; + padding: 6px; + font-size: 11px; + line-height: 1; + font-weight: 700; +} + +.jvectormap-tip small { + font-size: inherit; + font-weight: 400; +} + +.jvectormap-zoomin, .jvectormap-zoomout, .jvectormap-goback { + position: absolute; + right: 10px; + border-radius: 3px; + background: #292929; + padding: 3px; + color: white; + cursor: pointer; + line-height: 10px; + text-align: center; + box-sizing: content-box; +} + +.jvectormap-zoomin, .jvectormap-zoomout { + width: 10px; + height: 10px; +} + +.jvectormap-zoomin { + top: 10px; +} + +.jvectormap-zoomout { + top: 30px; +} + +.jvectormap-goback { + bottom: 10px; + z-index: 1000; + padding: 6px; +} + +.jvectormap-spinner { + position: absolute; + right: 0; + top: 0; + left: 0; + bottom: 0; + background: center no-repeat url(data:image/gif;base64,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); +} + +.jvectormap-legend-title { + font-weight: bold; + font-size: 14px; + text-align: center; +} + +.jvectormap-legend-cnt { + position: absolute; +} + +.jvectormap-legend-cnt-h { + bottom: 0; + left: 0; +} + +.jvectormap-legend-cnt-v { + top: 0; + left: 0; +} + +.jvectormap-legend { + background: black; + color: white; + border-radius: 3px; +} + +.jvectormap-legend-cnt-h .jvectormap-legend { + float: right; + margin: 0 0 10px 10px; + padding: 3px 3px 1px 3px; +} + +.jvectormap-legend-cnt-h .jvectormap-legend .jvectormap-legend-tick { + float: right; +} + +.jvectormap-legend-cnt-v .jvectormap-legend { + margin: 10px 0 0 10px; + padding: 3px; +} + +.jvectormap-legend-cnt-h .jvectormap-legend-tick { + width: 40px; +} + +.jvectormap-legend-cnt-h .jvectormap-legend-tick-sample { + height: 15px; +} + +.jvectormap-legend-cnt-v .jvectormap-legend-tick-sample { + height: 20px; + width: 20px; + display: inline-block; + vertical-align: middle; +} + +.jvectormap-legend-tick-text { + font-size: 12px; +} + +.jvectormap-legend-cnt-h .jvectormap-legend-tick-text { + text-align: center; +} + +.jvectormap-legend-cnt-v .jvectormap-legend-tick-text { + display: inline-block; + vertical-align: middle; + line-height: 20px; + padding-right: 3px; +} + +/** + * selectize.css (v0.12.4) + * Copyright (c) 2013–2015 Brian Reavis & contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this + * file except in compliance with the License. You may obtain a copy of the License at: + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF + * ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + * + * @author Brian Reavis + */ +.selectize-control.plugin-drag_drop.multi > .selectize-input > div.ui-sortable-placeholder { + visibility: visible !important; + background: #f2f2f2 !important; + background: rgba(0, 0, 0, 0.06) !important; + border: 0 none !important; + box-shadow: inset 0 0 12px 4px #fff; +} + +.selectize-control.plugin-drag_drop .ui-sortable-placeholder::after { + content: '!'; + visibility: hidden; +} + +.selectize-control.plugin-drag_drop .ui-sortable-helper { + box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2); +} + +.selectize-dropdown-header { + position: relative; + padding: 5px 8px; + border-bottom: 1px solid #d0d0d0; + background: #f8f8f8; + border-radius: 3px 3px 0 0; +} + +.selectize-dropdown-header-close { + position: absolute; + left: 8px; + top: 50%; + color: #495057; + opacity: 0.4; + margin-top: -12px; + line-height: 20px; + font-size: 20px !important; +} + +.selectize-dropdown-header-close:hover { + color: #000; +} + +.selectize-dropdown.plugin-optgroup_columns .optgroup { + border-left: 1px solid #f2f2f2; + border-top: 0 none; + float: right; + box-sizing: border-box; +} + +.selectize-dropdown.plugin-optgroup_columns .optgroup:last-child { + border-left: 0 none; +} + +.selectize-dropdown.plugin-optgroup_columns .optgroup:before { + display: none; +} + +.selectize-dropdown.plugin-optgroup_columns .optgroup-header { + border-top: 0 none; +} + +.selectize-control.plugin-remove_button [data-value] { + position: relative; + padding-left: 24px !important; +} + +.selectize-control.plugin-remove_button [data-value] .remove { + z-index: 1; + /* fixes ie bug (see #392) */ + position: absolute; + top: 0; + left: 0; + bottom: 0; + width: 17px; + text-align: center; + font-weight: bold; + font-size: 12px; + color: inherit; + text-decoration: none; + vertical-align: middle; + display: inline-block; + padding: 2px 0 0 0; + border-right: 1px solid #d0d0d0; + border-radius: 2px 0 0 2px; + box-sizing: border-box; +} + +.selectize-control.plugin-remove_button [data-value] .remove:hover { + background: rgba(0, 0, 0, 0.05); +} + +.selectize-control.plugin-remove_button [data-value].active .remove { + border-right-color: #cacaca; +} + +.selectize-control.plugin-remove_button .disabled [data-value] .remove:hover { + background: none; +} + +.selectize-control.plugin-remove_button .disabled [data-value] .remove { + border-right-color: #fff; +} + +.selectize-control.plugin-remove_button .remove-single { + position: absolute; + left: 28px; + top: 6px; + font-size: 23px; +} + +.selectize-control { + position: relative; + padding: 0; + border: 0; +} + +.selectize-dropdown, +.selectize-input, +.selectize-input input { + color: #495057; + font-family: inherit; + font-size: 15px; + line-height: 18px; + -webkit-font-smoothing: inherit; +} + +.selectize-input, +.selectize-control.single .selectize-input.input-active { + background: #fff; + cursor: text; + display: inline-block; +} + +.selectize-input { + border: 1px solid rgba(0, 40, 100, 0.12); + padding: 0.5625rem 0.75rem; + display: inline-block; + display: block; + width: 100%; + overflow: hidden; + position: relative; + z-index: 1; + box-sizing: border-box; + border-radius: 3px; + transition: .3s border-color, .3s box-shadow; +} + +.selectize-control.multi .selectize-input.has-items { + padding: 7px 7px 4px 0.75rem; +} + +.selectize-input.full { + background-color: #fff; +} + +.selectize-input.disabled, +.selectize-input.disabled * { + cursor: default !important; +} + +.selectize-input.focus { + border-color: #467fcf; + box-shadow: 0 0 0 2px rgba(70, 127, 207, 0.25); +} + +.selectize-input.dropdown-active { + border-radius: 3px 3px 0 0; +} + +.selectize-input > * { + vertical-align: baseline; + display: -moz-inline-stack; + display: inline-block; + zoom: 1; + *display: inline; +} + +.selectize-control.multi .selectize-input > div { + cursor: pointer; + margin: 0 0 3px 3px; + padding: 2px 6px; + background: #e9ecef; + color: #495057; + font-size: 13px; + border: 0 solid rgba(0, 40, 100, 0.12); + border-radius: 3px; + font-weight: 400; +} + +.selectize-control.multi .selectize-input > div.active { + background: #e8e8e8; + color: #303030; + border: 0 solid #cacaca; +} + +.selectize-control.multi .selectize-input.disabled > div, +.selectize-control.multi .selectize-input.disabled > div.active { + color: #7d7d7d; + background: #fff; + border: 0 solid #fff; +} + +.selectize-input > input { + display: inline-block !important; + padding: 0 !important; + min-height: 0 !important; + max-height: none !important; + max-width: 100% !important; + margin: 0 0 0 2px !important; + text-indent: 0 !important; + border: 0 none !important; + background: none !important; + line-height: inherit !important; + box-shadow: none !important; +} + +.selectize-input > input::-ms-clear { + display: none; +} + +.selectize-input > input:focus { + outline: none !important; +} + +.selectize-input::after { + content: ' '; + display: block; + clear: right; +} + +.selectize-input.dropdown-active::before { + content: ' '; + display: block; + position: absolute; + background: #f0f0f0; + height: 1px; + bottom: 0; + right: 0; + left: 0; +} + +.selectize-dropdown { + position: absolute; + z-index: 10; + border: 1px solid rgba(0, 40, 100, 0.12); + background: #fff; + margin: -1px 0 0 0; + border-top: 0 none; + box-sizing: border-box; + border-radius: 0 0 3px 3px; + height: auto; + padding: 0; +} + +.selectize-dropdown [data-selectable] { + cursor: pointer; + overflow: hidden; +} + +.selectize-dropdown [data-selectable] .highlight { + background: rgba(125, 168, 208, 0.2); + border-radius: 1px; +} + +.selectize-dropdown [data-selectable], +.selectize-dropdown .optgroup-header { + padding: 6px .75rem; +} + +.selectize-dropdown .optgroup:first-child .optgroup-header { + border-top: 0 none; +} + +.selectize-dropdown .optgroup-header { + color: #495057; + background: #fff; + cursor: default; +} + +.selectize-dropdown .active { + background-color: #F1F4F8; + color: #467fcf; +} + +.selectize-dropdown .active.create { + color: #495057; +} + +.selectize-dropdown .create { + color: rgba(48, 48, 48, 0.5); +} + +.selectize-dropdown-content { + overflow-y: auto; + overflow-x: hidden; + max-height: 200px; + -webkit-overflow-scrolling: touch; +} + +.selectize-control.single .selectize-input, +.selectize-control.single .selectize-input input { + cursor: pointer; +} + +.selectize-control.single .selectize-input.input-active, +.selectize-control.single .selectize-input.input-active input { + cursor: text; +} + +.selectize-control.single .selectize-input:after { + content: ''; + display: block; + position: absolute; + top: 13px; + left: 12px; + width: 8px; + height: 10px; + background: #fff url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 5'%3E%3Cpath fill='%23999' d='M0 0L10 0L5 5L0 0'/%3E%3C/svg%3E") no-repeat center; + background-size: 8px 10px; + transition: .3s transform; +} + +.selectize-control.single .selectize-input.dropdown-active:after { + -webkit-transform: rotate(-180deg); + transform: rotate(-180deg); +} + +.selectize-control .selectize-input.disabled { + opacity: 0.5; + background-color: #fafafa; +} + +.selectize-dropdown .image, +.selectize-input .image { + width: 1.25rem; + height: 1.25rem; + background-size: contain; + margin: -1px -4px -1px .5rem; + line-height: 1.25rem; + float: right; + display: -ms-flexbox; + display: flex; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: center; + justify-content: center; +} + +.selectize-dropdown .image img, +.selectize-input .image img { + max-width: 100%; + box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.4); + border-radius: 2px; +} + +.selectize-input .image { + width: 1.5rem; + height: 1.5rem; + margin: -3px -5px -3px .75rem; +} + +@font-face { + font-family: "feather"; + src: url("../fonts/feather/feather-webfont.eot?t=1501841394106"); + /* IE9*/ + src: url("../fonts/feather/feather-webfont.eot?t=1501841394106#iefix") format("embedded-opentype"), url("../fonts/feather/feather-webfont.woff?t=1501841394106") format("woff"), url("../fonts/feather/feather-webfont.ttf?t=1501841394106") format("truetype"), url("../fonts/feather/feather-webfont.svg?t=1501841394106#feather") format("svg"); + /* iOS 4.1- */ +} + +.fe { + font-family: 'feather' !important; + speak: none; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.fe-activity:before { + content: "\e900"; +} + +.fe-airplay:before { + content: "\e901"; +} + +.fe-alert-circle:before { + content: "\e902"; +} + +.fe-alert-octagon:before { + content: "\e903"; +} + +.fe-alert-triangle:before { + content: "\e904"; +} + +.fe-align-center:before { + content: "\e905"; +} + +.fe-align-justify:before { + content: "\e906"; +} + +.fe-align-left:before { + content: "\e907"; +} + +.fe-align-right:before { + content: "\e908"; +} + +.fe-anchor:before { + content: "\e909"; +} + +.fe-aperture:before { + content: "\e90a"; +} + +.fe-arrow-down:before { + content: "\e90b"; +} + +.fe-arrow-down-circle:before { + content: "\e90c"; +} + +.fe-arrow-down-left:before { + content: "\e90d"; +} + +.fe-arrow-down-right:before { + content: "\e90e"; +} + +.fe-arrow-left:before { + content: "\e90f"; +} + +.fe-arrow-left-circle:before { + content: "\e910"; +} + +.fe-arrow-right:before { + content: "\e911"; +} + +.fe-arrow-right-circle:before { + content: "\e912"; +} + +.fe-arrow-up:before { + content: "\e913"; +} + +.fe-arrow-up-circle:before { + content: "\e914"; +} + +.fe-arrow-up-left:before { + content: "\e915"; +} + +.fe-arrow-up-right:before { + content: "\e916"; +} + +.fe-at-sign:before { + content: "\e917"; +} + +.fe-award:before { + content: "\e918"; +} + +.fe-bar-chart:before { + content: "\e919"; +} + +.fe-bar-chart-2:before { + content: "\e91a"; +} + +.fe-battery:before { + content: "\e91b"; +} + +.fe-battery-charging:before { + content: "\e91c"; +} + +.fe-bell:before { + content: "\e91d"; +} + +.fe-bell-off:before { + content: "\e91e"; +} + +.fe-bluetooth:before { + content: "\e91f"; +} + +.fe-bold:before { + content: "\e920"; +} + +.fe-book:before { + content: "\e921"; +} + +.fe-book-open:before { + content: "\e922"; +} + +.fe-bookmark:before { + content: "\e923"; +} + +.fe-box:before { + content: "\e924"; +} + +.fe-briefcase:before { + content: "\e925"; +} + +.fe-calendar:before { + content: "\e926"; +} + +.fe-camera:before { + content: "\e927"; +} + +.fe-camera-off:before { + content: "\e928"; +} + +.fe-cast:before { + content: "\e929"; +} + +.fe-check:before { + content: "\e92a"; +} + +.fe-check-circle:before { + content: "\e92b"; +} + +.fe-check-square:before { + content: "\e92c"; +} + +.fe-chevron-down:before { + content: "\e92d"; +} + +.fe-chevron-left:before { + content: "\e92e"; +} + +.fe-chevron-right:before { + content: "\e92f"; +} + +.fe-chevron-up:before { + content: "\e930"; +} + +.fe-chevrons-down:before { + content: "\e931"; +} + +.fe-chevrons-left:before { + content: "\e932"; +} + +.fe-chevrons-right:before { + content: "\e933"; +} + +.fe-chevrons-up:before { + content: "\e934"; +} + +.fe-chrome:before { + content: "\e935"; +} + +.fe-circle:before { + content: "\e936"; +} + +.fe-clipboard:before { + content: "\e937"; +} + +.fe-clock:before { + content: "\e938"; +} + +.fe-cloud:before { + content: "\e939"; +} + +.fe-cloud-drizzle:before { + content: "\e93a"; +} + +.fe-cloud-lightning:before { + content: "\e93b"; +} + +.fe-cloud-off:before { + content: "\e93c"; +} + +.fe-cloud-rain:before { + content: "\e93d"; +} + +.fe-cloud-snow:before { + content: "\e93e"; +} + +.fe-code:before { + content: "\e93f"; +} + +.fe-codepen:before { + content: "\e940"; +} + +.fe-command:before { + content: "\e941"; +} + +.fe-compass:before { + content: "\e942"; +} + +.fe-copy:before { + content: "\e943"; +} + +.fe-corner-down-left:before { + content: "\e944"; +} + +.fe-corner-down-right:before { + content: "\e945"; +} + +.fe-corner-left-down:before { + content: "\e946"; +} + +.fe-corner-left-up:before { + content: "\e947"; +} + +.fe-corner-right-down:before { + content: "\e948"; +} + +.fe-corner-right-up:before { + content: "\e949"; +} + +.fe-corner-up-left:before { + content: "\e94a"; +} + +.fe-corner-up-right:before { + content: "\e94b"; +} + +.fe-cpu:before { + content: "\e94c"; +} + +.fe-credit-card:before { + content: "\e94d"; +} + +.fe-crop:before { + content: "\e94e"; +} + +.fe-crosshair:before { + content: "\e94f"; +} + +.fe-database:before { + content: "\e950"; +} + +.fe-delete:before { + content: "\e951"; +} + +.fe-disc:before { + content: "\e952"; +} + +.fe-dollar-sign:before { + content: "\e953"; +} + +.fe-download:before { + content: "\e954"; +} + +.fe-download-cloud:before { + content: "\e955"; +} + +.fe-droplet:before { + content: "\e956"; +} + +.fe-edit:before { + content: "\e957"; +} + +.fe-edit-2:before { + content: "\e958"; +} + +.fe-edit-3:before { + content: "\e959"; +} + +.fe-external-link:before { + content: "\e95a"; +} + +.fe-eye:before { + content: "\e95b"; +} + +.fe-eye-off:before { + content: "\e95c"; +} + +.fe-facebook:before { + content: "\e95d"; +} + +.fe-fast-forward:before { + content: "\e95e"; +} + +.fe-feather:before { + content: "\e95f"; +} + +.fe-file:before { + content: "\e960"; +} + +.fe-file-minus:before { + content: "\e961"; +} + +.fe-file-plus:before { + content: "\e962"; +} + +.fe-file-text:before { + content: "\e963"; +} + +.fe-film:before { + content: "\e964"; +} + +.fe-filter:before { + content: "\e965"; +} + +.fe-flag:before { + content: "\e966"; +} + +.fe-folder:before { + content: "\e967"; +} + +.fe-folder-minus:before { + content: "\e968"; +} + +.fe-folder-plus:before { + content: "\e969"; +} + +.fe-git-branch:before { + content: "\e96a"; +} + +.fe-git-commit:before { + content: "\e96b"; +} + +.fe-git-merge:before { + content: "\e96c"; +} + +.fe-git-pull-request:before { + content: "\e96d"; +} + +.fe-github:before { + content: "\e96e"; +} + +.fe-gitlab:before { + content: "\e96f"; +} + +.fe-globe:before { + content: "\e970"; +} + +.fe-grid:before { + content: "\e971"; +} + +.fe-hard-drive:before { + content: "\e972"; +} + +.fe-hash:before { + content: "\e973"; +} + +.fe-headphones:before { + content: "\e974"; +} + +.fe-heart:before { + content: "\e975"; +} + +.fe-help-circle:before { + content: "\e976"; +} + +.fe-home:before { + content: "\e977"; +} + +.fe-image:before { + content: "\e978"; +} + +.fe-inbox:before { + content: "\e979"; +} + +.fe-info:before { + content: "\e97a"; +} + +.fe-instagram:before { + content: "\e97b"; +} + +.fe-italic:before { + content: "\e97c"; +} + +.fe-layers:before { + content: "\e97d"; +} + +.fe-layout:before { + content: "\e97e"; +} + +.fe-life-buoy:before { + content: "\e97f"; +} + +.fe-link:before { + content: "\e980"; +} + +.fe-link-2:before { + content: "\e981"; +} + +.fe-linkedin:before { + content: "\e982"; +} + +.fe-list:before { + content: "\e983"; +} + +.fe-loader:before { + content: "\e984"; +} + +.fe-lock:before { + content: "\e985"; +} + +.fe-log-in:before { + content: "\e986"; +} + +.fe-log-out:before { + content: "\e987"; +} + +.fe-mail:before { + content: "\e988"; +} + +.fe-map:before { + content: "\e989"; +} + +.fe-map-pin:before { + content: "\e98a"; +} + +.fe-maximize:before { + content: "\e98b"; +} + +.fe-maximize-2:before { + content: "\e98c"; +} + +.fe-menu:before { + content: "\e98d"; +} + +.fe-message-circle:before { + content: "\e98e"; +} + +.fe-message-square:before { + content: "\e98f"; +} + +.fe-mic:before { + content: "\e990"; +} + +.fe-mic-off:before { + content: "\e991"; +} + +.fe-minimize:before { + content: "\e992"; +} + +.fe-minimize-2:before { + content: "\e993"; +} + +.fe-minus:before { + content: "\e994"; +} + +.fe-minus-circle:before { + content: "\e995"; +} + +.fe-minus-square:before { + content: "\e996"; +} + +.fe-monitor:before { + content: "\e997"; +} + +.fe-moon:before { + content: "\e998"; +} + +.fe-more-horizontal:before { + content: "\e999"; +} + +.fe-more-vertical:before { + content: "\e99a"; +} + +.fe-move:before { + content: "\e99b"; +} + +.fe-music:before { + content: "\e99c"; +} + +.fe-navigation:before { + content: "\e99d"; +} + +.fe-navigation-2:before { + content: "\e99e"; +} + +.fe-octagon:before { + content: "\e99f"; +} + +.fe-package:before { + content: "\e9a0"; +} + +.fe-paperclip:before { + content: "\e9a1"; +} + +.fe-pause:before { + content: "\e9a2"; +} + +.fe-pause-circle:before { + content: "\e9a3"; +} + +.fe-percent:before { + content: "\e9a4"; +} + +.fe-phone:before { + content: "\e9a5"; +} + +.fe-phone-call:before { + content: "\e9a6"; +} + +.fe-phone-forwarded:before { + content: "\e9a7"; +} + +.fe-phone-incoming:before { + content: "\e9a8"; +} + +.fe-phone-missed:before { + content: "\e9a9"; +} + +.fe-phone-off:before { + content: "\e9aa"; +} + +.fe-phone-outgoing:before { + content: "\e9ab"; +} + +.fe-pie-chart:before { + content: "\e9ac"; +} + +.fe-play:before { + content: "\e9ad"; +} + +.fe-play-circle:before { + content: "\e9ae"; +} + +.fe-plus:before { + content: "\e9af"; +} + +.fe-plus-circle:before { + content: "\e9b0"; +} + +.fe-plus-square:before { + content: "\e9b1"; +} + +.fe-pocket:before { + content: "\e9b2"; +} + +.fe-power:before { + content: "\e9b3"; +} + +.fe-printer:before { + content: "\e9b4"; +} + +.fe-radio:before { + content: "\e9b5"; +} + +.fe-refresh-ccw:before { + content: "\e9b6"; +} + +.fe-refresh-cw:before { + content: "\e9b7"; +} + +.fe-repeat:before { + content: "\e9b8"; +} + +.fe-rewind:before { + content: "\e9b9"; +} + +.fe-rotate-ccw:before { + content: "\e9ba"; +} + +.fe-rotate-cw:before { + content: "\e9bb"; +} + +.fe-rss:before { + content: "\e9bc"; +} + +.fe-save:before { + content: "\e9bd"; +} + +.fe-scissors:before { + content: "\e9be"; +} + +.fe-search:before { + content: "\e9bf"; +} + +.fe-send:before { + content: "\e9c0"; +} + +.fe-server:before { + content: "\e9c1"; +} + +.fe-settings:before { + content: "\e9c2"; +} + +.fe-share:before { + content: "\e9c3"; +} + +.fe-share-2:before { + content: "\e9c4"; +} + +.fe-shield:before { + content: "\e9c5"; +} + +.fe-shield-off:before { + content: "\e9c6"; +} + +.fe-shopping-bag:before { + content: "\e9c7"; +} + +.fe-shopping-cart:before { + content: "\e9c8"; +} + +.fe-shuffle:before { + content: "\e9c9"; +} + +.fe-sidebar:before { + content: "\e9ca"; +} + +.fe-skip-back:before { + content: "\e9cb"; +} + +.fe-skip-forward:before { + content: "\e9cc"; +} + +.fe-slack:before { + content: "\e9cd"; +} + +.fe-slash:before { + content: "\e9ce"; +} + +.fe-sliders:before { + content: "\e9cf"; +} + +.fe-smartphone:before { + content: "\e9d0"; +} + +.fe-speaker:before { + content: "\e9d1"; +} + +.fe-square:before { + content: "\e9d2"; +} + +.fe-star:before { + content: "\e9d3"; +} + +.fe-stop-circle:before { + content: "\e9d4"; +} + +.fe-sun:before { + content: "\e9d5"; +} + +.fe-sunrise:before { + content: "\e9d6"; +} + +.fe-sunset:before { + content: "\e9d7"; +} + +.fe-tablet:before { + content: "\e9d8"; +} + +.fe-tag:before { + content: "\e9d9"; +} + +.fe-target:before { + content: "\e9da"; +} + +.fe-terminal:before { + content: "\e9db"; +} + +.fe-thermometer:before { + content: "\e9dc"; +} + +.fe-thumbs-down:before { + content: "\e9dd"; +} + +.fe-thumbs-up:before { + content: "\e9de"; +} + +.fe-toggle-left:before { + content: "\e9df"; +} + +.fe-toggle-right:before { + content: "\e9e0"; +} + +.fe-trash:before { + content: "\e9e1"; +} + +.fe-trash-2:before { + content: "\e9e2"; +} + +.fe-trending-down:before { + content: "\e9e3"; +} + +.fe-trending-up:before { + content: "\e9e4"; +} + +.fe-triangle:before { + content: "\e9e5"; +} + +.fe-truck:before { + content: "\e9e6"; +} + +.fe-tv:before { + content: "\e9e7"; +} + +.fe-twitter:before { + content: "\e9e8"; +} + +.fe-type:before { + content: "\e9e9"; +} + +.fe-umbrella:before { + content: "\e9ea"; +} + +.fe-underline:before { + content: "\e9eb"; +} + +.fe-unlock:before { + content: "\e9ec"; +} + +.fe-upload:before { + content: "\e9ed"; +} + +.fe-upload-cloud:before { + content: "\e9ee"; +} + +.fe-user:before { + content: "\e9ef"; +} + +.fe-user-check:before { + content: "\e9f0"; +} + +.fe-user-minus:before { + content: "\e9f1"; +} + +.fe-user-plus:before { + content: "\e9f2"; +} + +.fe-user-x:before { + content: "\e9f3"; +} + +.fe-users:before { + content: "\e9f4"; +} + +.fe-video:before { + content: "\e9f5"; +} + +.fe-video-off:before { + content: "\e9f6"; +} + +.fe-voicemail:before { + content: "\e9f7"; +} + +.fe-volume:before { + content: "\e9f8"; +} + +.fe-volume-1:before { + content: "\e9f9"; +} + +.fe-volume-2:before { + content: "\e9fa"; +} + +.fe-volume-x:before { + content: "\e9fb"; +} + +.fe-watch:before { + content: "\e9fc"; +} + +.fe-wifi:before { + content: "\e9fd"; +} + +.fe-wifi-off:before { + content: "\e9fe"; +} + +.fe-wind:before { + content: "\e9ff"; +} + +.fe-x:before { + content: "\ea00"; +} + +.fe-x-circle:before { + content: "\ea01"; +} + +.fe-x-square:before { + content: "\ea02"; +} + +.fe-zap:before { + content: "\ea03"; +} + +.fe-zap-off:before { + content: "\ea04"; +} + +.fe-zoom-in:before { + content: "\ea05"; +} + +.fe-zoom-out:before { + content: "\ea06"; +} diff --git a/static/assets/fonts/feather/feather-webfont.eot b/static/assets/fonts/feather/feather-webfont.eot new file mode 100755 index 00000000..8350e161 Binary files /dev/null and b/static/assets/fonts/feather/feather-webfont.eot differ diff --git a/static/assets/fonts/feather/feather-webfont.svg b/static/assets/fonts/feather/feather-webfont.svg new file mode 100755 index 00000000..164c09c6 --- /dev/null +++ b/static/assets/fonts/feather/feather-webfont.svg @@ -0,0 +1,1038 @@ + + + + +Created by FontForge 20170910 at Tue Jan 16 19:54:31 2018 + By jimmywarting + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/static/assets/fonts/feather/feather-webfont.ttf b/static/assets/fonts/feather/feather-webfont.ttf new file mode 100755 index 00000000..f75018c8 Binary files /dev/null and b/static/assets/fonts/feather/feather-webfont.ttf differ diff --git a/static/assets/fonts/feather/feather-webfont.woff b/static/assets/fonts/feather/feather-webfont.woff new file mode 100755 index 00000000..8ce9004f Binary files /dev/null and b/static/assets/fonts/feather/feather-webfont.woff differ diff --git a/static/assets/images/browsers/android-browser.svg b/static/assets/images/browsers/android-browser.svg new file mode 100755 index 00000000..8065c1c3 --- /dev/null +++ b/static/assets/images/browsers/android-browser.svg @@ -0,0 +1 @@ +android-browserCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/browsers/aol-explorer.svg b/static/assets/images/browsers/aol-explorer.svg new file mode 100755 index 00000000..77422f43 --- /dev/null +++ b/static/assets/images/browsers/aol-explorer.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/browsers/blackberry.svg b/static/assets/images/browsers/blackberry.svg new file mode 100755 index 00000000..ea1682cb --- /dev/null +++ b/static/assets/images/browsers/blackberry.svg @@ -0,0 +1 @@ +blackberryCreated with Sketch.Layer 1 \ No newline at end of file diff --git a/static/assets/images/browsers/camino.svg b/static/assets/images/browsers/camino.svg new file mode 100755 index 00000000..317a76d3 --- /dev/null +++ b/static/assets/images/browsers/camino.svg @@ -0,0 +1 @@ +caminoCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/browsers/chrome.svg b/static/assets/images/browsers/chrome.svg new file mode 100755 index 00000000..0a5c3a8b --- /dev/null +++ b/static/assets/images/browsers/chrome.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/browsers/chromium.svg b/static/assets/images/browsers/chromium.svg new file mode 100755 index 00000000..19514f11 --- /dev/null +++ b/static/assets/images/browsers/chromium.svg @@ -0,0 +1 @@ +image/svg+xml \ No newline at end of file diff --git a/static/assets/images/browsers/dolphin.svg b/static/assets/images/browsers/dolphin.svg new file mode 100755 index 00000000..de753f56 --- /dev/null +++ b/static/assets/images/browsers/dolphin.svg @@ -0,0 +1 @@ +dolphinCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/browsers/edge.svg b/static/assets/images/browsers/edge.svg new file mode 100755 index 00000000..7626d767 --- /dev/null +++ b/static/assets/images/browsers/edge.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/browsers/firefox.svg b/static/assets/images/browsers/firefox.svg new file mode 100755 index 00000000..6e0299b9 --- /dev/null +++ b/static/assets/images/browsers/firefox.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/browsers/ie.svg b/static/assets/images/browsers/ie.svg new file mode 100755 index 00000000..015ab2d3 --- /dev/null +++ b/static/assets/images/browsers/ie.svg @@ -0,0 +1 @@ +image/svg+xml \ No newline at end of file diff --git a/static/assets/images/browsers/maxthon.svg b/static/assets/images/browsers/maxthon.svg new file mode 100755 index 00000000..f64fe8de --- /dev/null +++ b/static/assets/images/browsers/maxthon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/browsers/mozilla.svg b/static/assets/images/browsers/mozilla.svg new file mode 100755 index 00000000..d5774e80 --- /dev/null +++ b/static/assets/images/browsers/mozilla.svg @@ -0,0 +1 @@ +mozillaCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/browsers/netscape.svg b/static/assets/images/browsers/netscape.svg new file mode 100755 index 00000000..201a165b --- /dev/null +++ b/static/assets/images/browsers/netscape.svg @@ -0,0 +1 @@ +netscapeCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/browsers/opera.svg b/static/assets/images/browsers/opera.svg new file mode 100755 index 00000000..f761fcfc --- /dev/null +++ b/static/assets/images/browsers/opera.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/browsers/safari.svg b/static/assets/images/browsers/safari.svg new file mode 100755 index 00000000..3a5b5674 --- /dev/null +++ b/static/assets/images/browsers/safari.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/browsers/sleipnir.svg b/static/assets/images/browsers/sleipnir.svg new file mode 100755 index 00000000..a940c5f2 --- /dev/null +++ b/static/assets/images/browsers/sleipnir.svg @@ -0,0 +1 @@ +slepnir-mobileCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/browsers/uc-browser.svg b/static/assets/images/browsers/uc-browser.svg new file mode 100755 index 00000000..8041f873 --- /dev/null +++ b/static/assets/images/browsers/uc-browser.svg @@ -0,0 +1 @@ +uc-browserCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/browsers/vivaldi.svg b/static/assets/images/browsers/vivaldi.svg new file mode 100755 index 00000000..d53054b3 --- /dev/null +++ b/static/assets/images/browsers/vivaldi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/crypto-currencies/bitcoin.svg b/static/assets/images/crypto-currencies/bitcoin.svg new file mode 100755 index 00000000..cae4d6a3 --- /dev/null +++ b/static/assets/images/crypto-currencies/bitcoin.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/crypto-currencies/cardano.svg b/static/assets/images/crypto-currencies/cardano.svg new file mode 100755 index 00000000..b732eef6 --- /dev/null +++ b/static/assets/images/crypto-currencies/cardano.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/crypto-currencies/dash.svg b/static/assets/images/crypto-currencies/dash.svg new file mode 100755 index 00000000..73da05d9 --- /dev/null +++ b/static/assets/images/crypto-currencies/dash.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/crypto-currencies/eos.svg b/static/assets/images/crypto-currencies/eos.svg new file mode 100755 index 00000000..edf882ed --- /dev/null +++ b/static/assets/images/crypto-currencies/eos.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/crypto-currencies/ethereum.svg b/static/assets/images/crypto-currencies/ethereum.svg new file mode 100755 index 00000000..45b3820c --- /dev/null +++ b/static/assets/images/crypto-currencies/ethereum.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/crypto-currencies/litecoin.svg b/static/assets/images/crypto-currencies/litecoin.svg new file mode 100755 index 00000000..109d98de --- /dev/null +++ b/static/assets/images/crypto-currencies/litecoin.svg @@ -0,0 +1 @@ +Litecoin \ No newline at end of file diff --git a/static/assets/images/crypto-currencies/nem.svg b/static/assets/images/crypto-currencies/nem.svg new file mode 100755 index 00000000..327bcab9 --- /dev/null +++ b/static/assets/images/crypto-currencies/nem.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/crypto-currencies/ripple.svg b/static/assets/images/crypto-currencies/ripple.svg new file mode 100755 index 00000000..56718617 --- /dev/null +++ b/static/assets/images/crypto-currencies/ripple.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/ad.svg b/static/assets/images/flags/ad.svg new file mode 100755 index 00000000..b9ceae5c --- /dev/null +++ b/static/assets/images/flags/ad.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/ae.svg b/static/assets/images/flags/ae.svg new file mode 100755 index 00000000..3b88fd0f --- /dev/null +++ b/static/assets/images/flags/ae.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/af.svg b/static/assets/images/flags/af.svg new file mode 100755 index 00000000..16184ee6 --- /dev/null +++ b/static/assets/images/flags/af.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/ag.svg b/static/assets/images/flags/ag.svg new file mode 100755 index 00000000..7e71e4f4 --- /dev/null +++ b/static/assets/images/flags/ag.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/ai.svg b/static/assets/images/flags/ai.svg new file mode 100755 index 00000000..302f7122 --- /dev/null +++ b/static/assets/images/flags/ai.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/al.svg b/static/assets/images/flags/al.svg new file mode 100755 index 00000000..381148e4 --- /dev/null +++ b/static/assets/images/flags/al.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/am.svg b/static/assets/images/flags/am.svg new file mode 100755 index 00000000..fcd656d6 --- /dev/null +++ b/static/assets/images/flags/am.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/ao.svg b/static/assets/images/flags/ao.svg new file mode 100755 index 00000000..f9370f94 --- /dev/null +++ b/static/assets/images/flags/ao.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/aq.svg b/static/assets/images/flags/aq.svg new file mode 100755 index 00000000..c466788a --- /dev/null +++ b/static/assets/images/flags/aq.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/ar.svg b/static/assets/images/flags/ar.svg new file mode 100755 index 00000000..5859716b --- /dev/null +++ b/static/assets/images/flags/ar.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/as.svg b/static/assets/images/flags/as.svg new file mode 100755 index 00000000..8cdcfb90 --- /dev/null +++ b/static/assets/images/flags/as.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/at.svg b/static/assets/images/flags/at.svg new file mode 100755 index 00000000..87128f22 --- /dev/null +++ b/static/assets/images/flags/at.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/au.svg b/static/assets/images/flags/au.svg new file mode 100755 index 00000000..69bb9a46 --- /dev/null +++ b/static/assets/images/flags/au.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/aw.svg b/static/assets/images/flags/aw.svg new file mode 100755 index 00000000..13c1a70a --- /dev/null +++ b/static/assets/images/flags/aw.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/ax.svg b/static/assets/images/flags/ax.svg new file mode 100755 index 00000000..07076830 --- /dev/null +++ b/static/assets/images/flags/ax.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/az.svg b/static/assets/images/flags/az.svg new file mode 100755 index 00000000..3e446e7f --- /dev/null +++ b/static/assets/images/flags/az.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/ba.svg b/static/assets/images/flags/ba.svg new file mode 100755 index 00000000..94291a48 --- /dev/null +++ b/static/assets/images/flags/ba.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/bb.svg b/static/assets/images/flags/bb.svg new file mode 100755 index 00000000..23f3a336 --- /dev/null +++ b/static/assets/images/flags/bb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/bd.svg b/static/assets/images/flags/bd.svg new file mode 100755 index 00000000..2e07b68f --- /dev/null +++ b/static/assets/images/flags/bd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/be.svg b/static/assets/images/flags/be.svg new file mode 100755 index 00000000..907e4700 --- /dev/null +++ b/static/assets/images/flags/be.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/bf.svg b/static/assets/images/flags/bf.svg new file mode 100755 index 00000000..3ea79912 --- /dev/null +++ b/static/assets/images/flags/bf.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/bg.svg b/static/assets/images/flags/bg.svg new file mode 100755 index 00000000..3d76818b --- /dev/null +++ b/static/assets/images/flags/bg.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/bh.svg b/static/assets/images/flags/bh.svg new file mode 100755 index 00000000..6da13f44 --- /dev/null +++ b/static/assets/images/flags/bh.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/bi.svg b/static/assets/images/flags/bi.svg new file mode 100755 index 00000000..498a2777 --- /dev/null +++ b/static/assets/images/flags/bi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/bj.svg b/static/assets/images/flags/bj.svg new file mode 100755 index 00000000..fef1eccd --- /dev/null +++ b/static/assets/images/flags/bj.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/bl.svg b/static/assets/images/flags/bl.svg new file mode 100755 index 00000000..cd256c5f --- /dev/null +++ b/static/assets/images/flags/bl.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/bm.svg b/static/assets/images/flags/bm.svg new file mode 100755 index 00000000..3599e0fb --- /dev/null +++ b/static/assets/images/flags/bm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/bn.svg b/static/assets/images/flags/bn.svg new file mode 100755 index 00000000..4e3d0fe7 --- /dev/null +++ b/static/assets/images/flags/bn.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/bo.svg b/static/assets/images/flags/bo.svg new file mode 100755 index 00000000..c208bde3 --- /dev/null +++ b/static/assets/images/flags/bo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/bq.svg b/static/assets/images/flags/bq.svg new file mode 100755 index 00000000..93446cfd --- /dev/null +++ b/static/assets/images/flags/bq.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/br.svg b/static/assets/images/flags/br.svg new file mode 100755 index 00000000..8561ea7b --- /dev/null +++ b/static/assets/images/flags/br.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/bs.svg b/static/assets/images/flags/bs.svg new file mode 100755 index 00000000..91dc2d7e --- /dev/null +++ b/static/assets/images/flags/bs.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/bt.svg b/static/assets/images/flags/bt.svg new file mode 100755 index 00000000..4d2c5f53 --- /dev/null +++ b/static/assets/images/flags/bt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/bv.svg b/static/assets/images/flags/bv.svg new file mode 100755 index 00000000..cda48ff6 --- /dev/null +++ b/static/assets/images/flags/bv.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/bw.svg b/static/assets/images/flags/bw.svg new file mode 100755 index 00000000..cc154b99 --- /dev/null +++ b/static/assets/images/flags/bw.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/by.svg b/static/assets/images/flags/by.svg new file mode 100755 index 00000000..1e7be250 --- /dev/null +++ b/static/assets/images/flags/by.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/bz.svg b/static/assets/images/flags/bz.svg new file mode 100755 index 00000000..0fec282b --- /dev/null +++ b/static/assets/images/flags/bz.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/ca.svg b/static/assets/images/flags/ca.svg new file mode 100755 index 00000000..fb542b02 --- /dev/null +++ b/static/assets/images/flags/ca.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/static/assets/images/flags/cc.svg b/static/assets/images/flags/cc.svg new file mode 100755 index 00000000..09958459 --- /dev/null +++ b/static/assets/images/flags/cc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/cd.svg b/static/assets/images/flags/cd.svg new file mode 100755 index 00000000..a54f831a --- /dev/null +++ b/static/assets/images/flags/cd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/cf.svg b/static/assets/images/flags/cf.svg new file mode 100755 index 00000000..2c64d40f --- /dev/null +++ b/static/assets/images/flags/cf.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/cg.svg b/static/assets/images/flags/cg.svg new file mode 100755 index 00000000..3b9a6732 --- /dev/null +++ b/static/assets/images/flags/cg.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/ch.svg b/static/assets/images/flags/ch.svg new file mode 100755 index 00000000..11a20552 --- /dev/null +++ b/static/assets/images/flags/ch.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/ci.svg b/static/assets/images/flags/ci.svg new file mode 100755 index 00000000..9a82ef37 --- /dev/null +++ b/static/assets/images/flags/ci.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/ck.svg b/static/assets/images/flags/ck.svg new file mode 100755 index 00000000..a404e2ff --- /dev/null +++ b/static/assets/images/flags/ck.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/cl.svg b/static/assets/images/flags/cl.svg new file mode 100755 index 00000000..60d316c2 --- /dev/null +++ b/static/assets/images/flags/cl.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/cm.svg b/static/assets/images/flags/cm.svg new file mode 100755 index 00000000..f5ec52ae --- /dev/null +++ b/static/assets/images/flags/cm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/cn.svg b/static/assets/images/flags/cn.svg new file mode 100755 index 00000000..e9e74970 --- /dev/null +++ b/static/assets/images/flags/cn.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/co.svg b/static/assets/images/flags/co.svg new file mode 100755 index 00000000..926d620b --- /dev/null +++ b/static/assets/images/flags/co.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/cr.svg b/static/assets/images/flags/cr.svg new file mode 100755 index 00000000..e5a9cb98 --- /dev/null +++ b/static/assets/images/flags/cr.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/cu.svg b/static/assets/images/flags/cu.svg new file mode 100755 index 00000000..a48cda4d --- /dev/null +++ b/static/assets/images/flags/cu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/cv.svg b/static/assets/images/flags/cv.svg new file mode 100755 index 00000000..9004e89b --- /dev/null +++ b/static/assets/images/flags/cv.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/cw.svg b/static/assets/images/flags/cw.svg new file mode 100755 index 00000000..974c2c0b --- /dev/null +++ b/static/assets/images/flags/cw.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/cx.svg b/static/assets/images/flags/cx.svg new file mode 100755 index 00000000..117abe2b --- /dev/null +++ b/static/assets/images/flags/cx.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/cy.svg b/static/assets/images/flags/cy.svg new file mode 100755 index 00000000..12ef15c3 --- /dev/null +++ b/static/assets/images/flags/cy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/cz.svg b/static/assets/images/flags/cz.svg new file mode 100755 index 00000000..b5a58cc1 --- /dev/null +++ b/static/assets/images/flags/cz.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/de.svg b/static/assets/images/flags/de.svg new file mode 100755 index 00000000..d681fce8 --- /dev/null +++ b/static/assets/images/flags/de.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/dj.svg b/static/assets/images/flags/dj.svg new file mode 100755 index 00000000..4e7114cd --- /dev/null +++ b/static/assets/images/flags/dj.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/dk.svg b/static/assets/images/flags/dk.svg new file mode 100755 index 00000000..af7775ac --- /dev/null +++ b/static/assets/images/flags/dk.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/dm.svg b/static/assets/images/flags/dm.svg new file mode 100755 index 00000000..7bf9a07f --- /dev/null +++ b/static/assets/images/flags/dm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/do.svg b/static/assets/images/flags/do.svg new file mode 100755 index 00000000..5001b18e --- /dev/null +++ b/static/assets/images/flags/do.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/dz.svg b/static/assets/images/flags/dz.svg new file mode 100755 index 00000000..aa0834c7 --- /dev/null +++ b/static/assets/images/flags/dz.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/ec.svg b/static/assets/images/flags/ec.svg new file mode 100755 index 00000000..7da884fc --- /dev/null +++ b/static/assets/images/flags/ec.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/ee.svg b/static/assets/images/flags/ee.svg new file mode 100755 index 00000000..b0b67006 --- /dev/null +++ b/static/assets/images/flags/ee.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/eg.svg b/static/assets/images/flags/eg.svg new file mode 100755 index 00000000..55a7401c --- /dev/null +++ b/static/assets/images/flags/eg.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/eh.svg b/static/assets/images/flags/eh.svg new file mode 100755 index 00000000..3a2c1e6a --- /dev/null +++ b/static/assets/images/flags/eh.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/er.svg b/static/assets/images/flags/er.svg new file mode 100755 index 00000000..5470eb25 --- /dev/null +++ b/static/assets/images/flags/er.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/es.svg b/static/assets/images/flags/es.svg new file mode 100755 index 00000000..dbc15788 --- /dev/null +++ b/static/assets/images/flags/es.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/et.svg b/static/assets/images/flags/et.svg new file mode 100755 index 00000000..6a4d0cf5 --- /dev/null +++ b/static/assets/images/flags/et.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/eu.svg b/static/assets/images/flags/eu.svg new file mode 100755 index 00000000..dbd6971a --- /dev/null +++ b/static/assets/images/flags/eu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/fi.svg b/static/assets/images/flags/fi.svg new file mode 100755 index 00000000..06d3048c --- /dev/null +++ b/static/assets/images/flags/fi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/fj.svg b/static/assets/images/flags/fj.svg new file mode 100755 index 00000000..6aab0a7e --- /dev/null +++ b/static/assets/images/flags/fj.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/fk.svg b/static/assets/images/flags/fk.svg new file mode 100755 index 00000000..c80f0110 --- /dev/null +++ b/static/assets/images/flags/fk.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/fm.svg b/static/assets/images/flags/fm.svg new file mode 100755 index 00000000..6925a8f2 --- /dev/null +++ b/static/assets/images/flags/fm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/fo.svg b/static/assets/images/flags/fo.svg new file mode 100755 index 00000000..7ec4a613 --- /dev/null +++ b/static/assets/images/flags/fo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/fr.svg b/static/assets/images/flags/fr.svg new file mode 100755 index 00000000..33c456dd --- /dev/null +++ b/static/assets/images/flags/fr.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/ga.svg b/static/assets/images/flags/ga.svg new file mode 100755 index 00000000..b8f264a8 --- /dev/null +++ b/static/assets/images/flags/ga.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/gb-eng.svg b/static/assets/images/flags/gb-eng.svg new file mode 100755 index 00000000..0f693830 --- /dev/null +++ b/static/assets/images/flags/gb-eng.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/gb-nir.svg b/static/assets/images/flags/gb-nir.svg new file mode 100755 index 00000000..ac560251 --- /dev/null +++ b/static/assets/images/flags/gb-nir.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/gb-sct.svg b/static/assets/images/flags/gb-sct.svg new file mode 100755 index 00000000..859e49db --- /dev/null +++ b/static/assets/images/flags/gb-sct.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/gb-wls.svg b/static/assets/images/flags/gb-wls.svg new file mode 100755 index 00000000..bc5d42da --- /dev/null +++ b/static/assets/images/flags/gb-wls.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/gb.svg b/static/assets/images/flags/gb.svg new file mode 100755 index 00000000..001f884b --- /dev/null +++ b/static/assets/images/flags/gb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/gd.svg b/static/assets/images/flags/gd.svg new file mode 100755 index 00000000..502ee928 --- /dev/null +++ b/static/assets/images/flags/gd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/ge.svg b/static/assets/images/flags/ge.svg new file mode 100755 index 00000000..1c994a7c --- /dev/null +++ b/static/assets/images/flags/ge.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/gf.svg b/static/assets/images/flags/gf.svg new file mode 100755 index 00000000..1bd8664e --- /dev/null +++ b/static/assets/images/flags/gf.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/gg.svg b/static/assets/images/flags/gg.svg new file mode 100755 index 00000000..de79b30c --- /dev/null +++ b/static/assets/images/flags/gg.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/gh.svg b/static/assets/images/flags/gh.svg new file mode 100755 index 00000000..31cf2349 --- /dev/null +++ b/static/assets/images/flags/gh.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/gi.svg b/static/assets/images/flags/gi.svg new file mode 100755 index 00000000..4e7711b1 --- /dev/null +++ b/static/assets/images/flags/gi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/gl.svg b/static/assets/images/flags/gl.svg new file mode 100755 index 00000000..2239044a --- /dev/null +++ b/static/assets/images/flags/gl.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/gm.svg b/static/assets/images/flags/gm.svg new file mode 100755 index 00000000..c4dd45b1 --- /dev/null +++ b/static/assets/images/flags/gm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/gn.svg b/static/assets/images/flags/gn.svg new file mode 100755 index 00000000..c56e03e4 --- /dev/null +++ b/static/assets/images/flags/gn.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/gp.svg b/static/assets/images/flags/gp.svg new file mode 100755 index 00000000..33c456dd --- /dev/null +++ b/static/assets/images/flags/gp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/gq.svg b/static/assets/images/flags/gq.svg new file mode 100755 index 00000000..a7232443 --- /dev/null +++ b/static/assets/images/flags/gq.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/gr.svg b/static/assets/images/flags/gr.svg new file mode 100755 index 00000000..10b87ef6 --- /dev/null +++ b/static/assets/images/flags/gr.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/gs.svg b/static/assets/images/flags/gs.svg new file mode 100755 index 00000000..8b693124 --- /dev/null +++ b/static/assets/images/flags/gs.svg @@ -0,0 +1 @@ +LEOTERRRRREOOAAAMPPPITTMG \ No newline at end of file diff --git a/static/assets/images/flags/gt.svg b/static/assets/images/flags/gt.svg new file mode 100755 index 00000000..eef9fc93 --- /dev/null +++ b/static/assets/images/flags/gt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/gu.svg b/static/assets/images/flags/gu.svg new file mode 100755 index 00000000..6993c523 --- /dev/null +++ b/static/assets/images/flags/gu.svg @@ -0,0 +1 @@ +GUAMGUAM \ No newline at end of file diff --git a/static/assets/images/flags/gw.svg b/static/assets/images/flags/gw.svg new file mode 100755 index 00000000..6ffb4202 --- /dev/null +++ b/static/assets/images/flags/gw.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/gy.svg b/static/assets/images/flags/gy.svg new file mode 100755 index 00000000..571d44c9 --- /dev/null +++ b/static/assets/images/flags/gy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/hk.svg b/static/assets/images/flags/hk.svg new file mode 100755 index 00000000..f06e36fe --- /dev/null +++ b/static/assets/images/flags/hk.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/hm.svg b/static/assets/images/flags/hm.svg new file mode 100755 index 00000000..e94952ad --- /dev/null +++ b/static/assets/images/flags/hm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/hn.svg b/static/assets/images/flags/hn.svg new file mode 100755 index 00000000..1bd8321f --- /dev/null +++ b/static/assets/images/flags/hn.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/hr.svg b/static/assets/images/flags/hr.svg new file mode 100755 index 00000000..2b737ee1 --- /dev/null +++ b/static/assets/images/flags/hr.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/ht.svg b/static/assets/images/flags/ht.svg new file mode 100755 index 00000000..fbdff3aa --- /dev/null +++ b/static/assets/images/flags/ht.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/hu.svg b/static/assets/images/flags/hu.svg new file mode 100755 index 00000000..c7e18767 --- /dev/null +++ b/static/assets/images/flags/hu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/id.svg b/static/assets/images/flags/id.svg new file mode 100755 index 00000000..a0cb094a --- /dev/null +++ b/static/assets/images/flags/id.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/ie.svg b/static/assets/images/flags/ie.svg new file mode 100755 index 00000000..8ca940c9 --- /dev/null +++ b/static/assets/images/flags/ie.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/il.svg b/static/assets/images/flags/il.svg new file mode 100755 index 00000000..8fffe6cf --- /dev/null +++ b/static/assets/images/flags/il.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/im.svg b/static/assets/images/flags/im.svg new file mode 100755 index 00000000..9cb47264 --- /dev/null +++ b/static/assets/images/flags/im.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/in.svg b/static/assets/images/flags/in.svg new file mode 100755 index 00000000..50defbf0 --- /dev/null +++ b/static/assets/images/flags/in.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/io.svg b/static/assets/images/flags/io.svg new file mode 100755 index 00000000..baa770de --- /dev/null +++ b/static/assets/images/flags/io.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/iq.svg b/static/assets/images/flags/iq.svg new file mode 100755 index 00000000..bdfe7213 --- /dev/null +++ b/static/assets/images/flags/iq.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/ir.svg b/static/assets/images/flags/ir.svg new file mode 100755 index 00000000..22f97cf6 --- /dev/null +++ b/static/assets/images/flags/ir.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/is.svg b/static/assets/images/flags/is.svg new file mode 100755 index 00000000..6545c56e --- /dev/null +++ b/static/assets/images/flags/is.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/it.svg b/static/assets/images/flags/it.svg new file mode 100755 index 00000000..721c0ce5 --- /dev/null +++ b/static/assets/images/flags/it.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/je.svg b/static/assets/images/flags/je.svg new file mode 100755 index 00000000..22482efc --- /dev/null +++ b/static/assets/images/flags/je.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/jm.svg b/static/assets/images/flags/jm.svg new file mode 100755 index 00000000..794ebff3 --- /dev/null +++ b/static/assets/images/flags/jm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/jo.svg b/static/assets/images/flags/jo.svg new file mode 100755 index 00000000..e6e92465 --- /dev/null +++ b/static/assets/images/flags/jo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/jp.svg b/static/assets/images/flags/jp.svg new file mode 100755 index 00000000..5b8fef55 --- /dev/null +++ b/static/assets/images/flags/jp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/ke.svg b/static/assets/images/flags/ke.svg new file mode 100755 index 00000000..7c03d523 --- /dev/null +++ b/static/assets/images/flags/ke.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/kg.svg b/static/assets/images/flags/kg.svg new file mode 100755 index 00000000..bf79897e --- /dev/null +++ b/static/assets/images/flags/kg.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/kh.svg b/static/assets/images/flags/kh.svg new file mode 100755 index 00000000..e4192905 --- /dev/null +++ b/static/assets/images/flags/kh.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/ki.svg b/static/assets/images/flags/ki.svg new file mode 100755 index 00000000..f7f76eba --- /dev/null +++ b/static/assets/images/flags/ki.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/km.svg b/static/assets/images/flags/km.svg new file mode 100755 index 00000000..02cade42 --- /dev/null +++ b/static/assets/images/flags/km.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/kn.svg b/static/assets/images/flags/kn.svg new file mode 100755 index 00000000..802da76e --- /dev/null +++ b/static/assets/images/flags/kn.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/kp.svg b/static/assets/images/flags/kp.svg new file mode 100755 index 00000000..5a78b526 --- /dev/null +++ b/static/assets/images/flags/kp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/kr.svg b/static/assets/images/flags/kr.svg new file mode 100755 index 00000000..3ba5e92c --- /dev/null +++ b/static/assets/images/flags/kr.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/kw.svg b/static/assets/images/flags/kw.svg new file mode 100755 index 00000000..24e3a108 --- /dev/null +++ b/static/assets/images/flags/kw.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/ky.svg b/static/assets/images/flags/ky.svg new file mode 100755 index 00000000..bbbc4cd5 --- /dev/null +++ b/static/assets/images/flags/ky.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/kz.svg b/static/assets/images/flags/kz.svg new file mode 100755 index 00000000..d9af6f83 --- /dev/null +++ b/static/assets/images/flags/kz.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/la.svg b/static/assets/images/flags/la.svg new file mode 100755 index 00000000..0fcec31e --- /dev/null +++ b/static/assets/images/flags/la.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/lb.svg b/static/assets/images/flags/lb.svg new file mode 100755 index 00000000..e2f6f2b6 --- /dev/null +++ b/static/assets/images/flags/lb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/lc.svg b/static/assets/images/flags/lc.svg new file mode 100755 index 00000000..d44ffca1 --- /dev/null +++ b/static/assets/images/flags/lc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/li.svg b/static/assets/images/flags/li.svg new file mode 100755 index 00000000..245b721e --- /dev/null +++ b/static/assets/images/flags/li.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/lk.svg b/static/assets/images/flags/lk.svg new file mode 100755 index 00000000..d3b5e820 --- /dev/null +++ b/static/assets/images/flags/lk.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/lr.svg b/static/assets/images/flags/lr.svg new file mode 100755 index 00000000..3386c26a --- /dev/null +++ b/static/assets/images/flags/lr.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/ls.svg b/static/assets/images/flags/ls.svg new file mode 100755 index 00000000..17bbf6cd --- /dev/null +++ b/static/assets/images/flags/ls.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/lt.svg b/static/assets/images/flags/lt.svg new file mode 100755 index 00000000..6a103ff5 --- /dev/null +++ b/static/assets/images/flags/lt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/lu.svg b/static/assets/images/flags/lu.svg new file mode 100755 index 00000000..3e657e96 --- /dev/null +++ b/static/assets/images/flags/lu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/lv.svg b/static/assets/images/flags/lv.svg new file mode 100755 index 00000000..e6200ea4 --- /dev/null +++ b/static/assets/images/flags/lv.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/ly.svg b/static/assets/images/flags/ly.svg new file mode 100755 index 00000000..0ac04146 --- /dev/null +++ b/static/assets/images/flags/ly.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/ma.svg b/static/assets/images/flags/ma.svg new file mode 100755 index 00000000..4795e6c6 --- /dev/null +++ b/static/assets/images/flags/ma.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/mc.svg b/static/assets/images/flags/mc.svg new file mode 100755 index 00000000..53ea91dd --- /dev/null +++ b/static/assets/images/flags/mc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/md.svg b/static/assets/images/flags/md.svg new file mode 100755 index 00000000..b18b4957 --- /dev/null +++ b/static/assets/images/flags/md.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/me.svg b/static/assets/images/flags/me.svg new file mode 100755 index 00000000..6624c272 --- /dev/null +++ b/static/assets/images/flags/me.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/mf.svg b/static/assets/images/flags/mf.svg new file mode 100755 index 00000000..33c456dd --- /dev/null +++ b/static/assets/images/flags/mf.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/mg.svg b/static/assets/images/flags/mg.svg new file mode 100755 index 00000000..157d074e --- /dev/null +++ b/static/assets/images/flags/mg.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/mh.svg b/static/assets/images/flags/mh.svg new file mode 100755 index 00000000..22703ab5 --- /dev/null +++ b/static/assets/images/flags/mh.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/mk.svg b/static/assets/images/flags/mk.svg new file mode 100755 index 00000000..a77d5e8b --- /dev/null +++ b/static/assets/images/flags/mk.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/ml.svg b/static/assets/images/flags/ml.svg new file mode 100755 index 00000000..648eede1 --- /dev/null +++ b/static/assets/images/flags/ml.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/mm.svg b/static/assets/images/flags/mm.svg new file mode 100755 index 00000000..eca1371b --- /dev/null +++ b/static/assets/images/flags/mm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/mn.svg b/static/assets/images/flags/mn.svg new file mode 100755 index 00000000..ef0d3ee9 --- /dev/null +++ b/static/assets/images/flags/mn.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/mo.svg b/static/assets/images/flags/mo.svg new file mode 100755 index 00000000..14b80bd6 --- /dev/null +++ b/static/assets/images/flags/mo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/mp.svg b/static/assets/images/flags/mp.svg new file mode 100755 index 00000000..38f1009c --- /dev/null +++ b/static/assets/images/flags/mp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/mq.svg b/static/assets/images/flags/mq.svg new file mode 100755 index 00000000..711b0456 --- /dev/null +++ b/static/assets/images/flags/mq.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/mr.svg b/static/assets/images/flags/mr.svg new file mode 100755 index 00000000..d823a938 --- /dev/null +++ b/static/assets/images/flags/mr.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/ms.svg b/static/assets/images/flags/ms.svg new file mode 100755 index 00000000..2a5951b0 --- /dev/null +++ b/static/assets/images/flags/ms.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/mt.svg b/static/assets/images/flags/mt.svg new file mode 100755 index 00000000..2777777c --- /dev/null +++ b/static/assets/images/flags/mt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/mu.svg b/static/assets/images/flags/mu.svg new file mode 100755 index 00000000..dcc048ca --- /dev/null +++ b/static/assets/images/flags/mu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/mv.svg b/static/assets/images/flags/mv.svg new file mode 100755 index 00000000..52938d23 --- /dev/null +++ b/static/assets/images/flags/mv.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/mw.svg b/static/assets/images/flags/mw.svg new file mode 100755 index 00000000..3dc4e80e --- /dev/null +++ b/static/assets/images/flags/mw.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/mx.svg b/static/assets/images/flags/mx.svg new file mode 100755 index 00000000..61d9aa9d --- /dev/null +++ b/static/assets/images/flags/mx.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/my.svg b/static/assets/images/flags/my.svg new file mode 100755 index 00000000..534a4be0 --- /dev/null +++ b/static/assets/images/flags/my.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/mz.svg b/static/assets/images/flags/mz.svg new file mode 100755 index 00000000..ce9e8a80 --- /dev/null +++ b/static/assets/images/flags/mz.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/na.svg b/static/assets/images/flags/na.svg new file mode 100755 index 00000000..60caec25 --- /dev/null +++ b/static/assets/images/flags/na.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/nc.svg b/static/assets/images/flags/nc.svg new file mode 100755 index 00000000..6c95ad54 --- /dev/null +++ b/static/assets/images/flags/nc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/ne.svg b/static/assets/images/flags/ne.svg new file mode 100755 index 00000000..a3870866 --- /dev/null +++ b/static/assets/images/flags/ne.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/nf.svg b/static/assets/images/flags/nf.svg new file mode 100755 index 00000000..de845bc9 --- /dev/null +++ b/static/assets/images/flags/nf.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/ng.svg b/static/assets/images/flags/ng.svg new file mode 100755 index 00000000..9a2e663a --- /dev/null +++ b/static/assets/images/flags/ng.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/ni.svg b/static/assets/images/flags/ni.svg new file mode 100755 index 00000000..91f31240 --- /dev/null +++ b/static/assets/images/flags/ni.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/nl.svg b/static/assets/images/flags/nl.svg new file mode 100755 index 00000000..37c63900 --- /dev/null +++ b/static/assets/images/flags/nl.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/no.svg b/static/assets/images/flags/no.svg new file mode 100755 index 00000000..5739ea09 --- /dev/null +++ b/static/assets/images/flags/no.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/np.svg b/static/assets/images/flags/np.svg new file mode 100755 index 00000000..85cb38dc --- /dev/null +++ b/static/assets/images/flags/np.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/nr.svg b/static/assets/images/flags/nr.svg new file mode 100755 index 00000000..f33ab737 --- /dev/null +++ b/static/assets/images/flags/nr.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/nu.svg b/static/assets/images/flags/nu.svg new file mode 100755 index 00000000..4834fe8c --- /dev/null +++ b/static/assets/images/flags/nu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/nz.svg b/static/assets/images/flags/nz.svg new file mode 100755 index 00000000..ddcd5027 --- /dev/null +++ b/static/assets/images/flags/nz.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/om.svg b/static/assets/images/flags/om.svg new file mode 100755 index 00000000..c5851cbf --- /dev/null +++ b/static/assets/images/flags/om.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/pa.svg b/static/assets/images/flags/pa.svg new file mode 100755 index 00000000..8b6900f6 --- /dev/null +++ b/static/assets/images/flags/pa.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/pe.svg b/static/assets/images/flags/pe.svg new file mode 100755 index 00000000..da10e7df --- /dev/null +++ b/static/assets/images/flags/pe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/pf.svg b/static/assets/images/flags/pf.svg new file mode 100755 index 00000000..264217fd --- /dev/null +++ b/static/assets/images/flags/pf.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/pg.svg b/static/assets/images/flags/pg.svg new file mode 100755 index 00000000..38d06791 --- /dev/null +++ b/static/assets/images/flags/pg.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/ph.svg b/static/assets/images/flags/ph.svg new file mode 100755 index 00000000..f49c92ac --- /dev/null +++ b/static/assets/images/flags/ph.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/pk.svg b/static/assets/images/flags/pk.svg new file mode 100755 index 00000000..0478f54a --- /dev/null +++ b/static/assets/images/flags/pk.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/pl.svg b/static/assets/images/flags/pl.svg new file mode 100755 index 00000000..53ec758f --- /dev/null +++ b/static/assets/images/flags/pl.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/pm.svg b/static/assets/images/flags/pm.svg new file mode 100755 index 00000000..6c95ad54 --- /dev/null +++ b/static/assets/images/flags/pm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/pn.svg b/static/assets/images/flags/pn.svg new file mode 100755 index 00000000..e9b37f9d --- /dev/null +++ b/static/assets/images/flags/pn.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/pr.svg b/static/assets/images/flags/pr.svg new file mode 100755 index 00000000..58e2613f --- /dev/null +++ b/static/assets/images/flags/pr.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/ps.svg b/static/assets/images/flags/ps.svg new file mode 100755 index 00000000..77ac5981 --- /dev/null +++ b/static/assets/images/flags/ps.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/pt.svg b/static/assets/images/flags/pt.svg new file mode 100755 index 00000000..3b8f934b --- /dev/null +++ b/static/assets/images/flags/pt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/pw.svg b/static/assets/images/flags/pw.svg new file mode 100755 index 00000000..91620ba4 --- /dev/null +++ b/static/assets/images/flags/pw.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/py.svg b/static/assets/images/flags/py.svg new file mode 100755 index 00000000..93800948 --- /dev/null +++ b/static/assets/images/flags/py.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/qa.svg b/static/assets/images/flags/qa.svg new file mode 100755 index 00000000..c98d4899 --- /dev/null +++ b/static/assets/images/flags/qa.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/re.svg b/static/assets/images/flags/re.svg new file mode 100755 index 00000000..6c95ad54 --- /dev/null +++ b/static/assets/images/flags/re.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/ro.svg b/static/assets/images/flags/ro.svg new file mode 100755 index 00000000..dce850ab --- /dev/null +++ b/static/assets/images/flags/ro.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/rs.svg b/static/assets/images/flags/rs.svg new file mode 100755 index 00000000..d6a04b35 --- /dev/null +++ b/static/assets/images/flags/rs.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/ru.svg b/static/assets/images/flags/ru.svg new file mode 100755 index 00000000..273d9bed --- /dev/null +++ b/static/assets/images/flags/ru.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/rw.svg b/static/assets/images/flags/rw.svg new file mode 100755 index 00000000..990b51c1 --- /dev/null +++ b/static/assets/images/flags/rw.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/sa.svg b/static/assets/images/flags/sa.svg new file mode 100755 index 00000000..a5180581 --- /dev/null +++ b/static/assets/images/flags/sa.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/sb.svg b/static/assets/images/flags/sb.svg new file mode 100755 index 00000000..a4cb3e68 --- /dev/null +++ b/static/assets/images/flags/sb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/sc.svg b/static/assets/images/flags/sc.svg new file mode 100755 index 00000000..480f4baf --- /dev/null +++ b/static/assets/images/flags/sc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/sd.svg b/static/assets/images/flags/sd.svg new file mode 100755 index 00000000..b59f65fb --- /dev/null +++ b/static/assets/images/flags/sd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/se.svg b/static/assets/images/flags/se.svg new file mode 100755 index 00000000..a1a818fb --- /dev/null +++ b/static/assets/images/flags/se.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/sg.svg b/static/assets/images/flags/sg.svg new file mode 100755 index 00000000..ea670f9b --- /dev/null +++ b/static/assets/images/flags/sg.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/sh.svg b/static/assets/images/flags/sh.svg new file mode 100755 index 00000000..f5ce3d9e --- /dev/null +++ b/static/assets/images/flags/sh.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/si.svg b/static/assets/images/flags/si.svg new file mode 100755 index 00000000..0b3ee205 --- /dev/null +++ b/static/assets/images/flags/si.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/sj.svg b/static/assets/images/flags/sj.svg new file mode 100755 index 00000000..5739ea09 --- /dev/null +++ b/static/assets/images/flags/sj.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/sk.svg b/static/assets/images/flags/sk.svg new file mode 100755 index 00000000..35776341 --- /dev/null +++ b/static/assets/images/flags/sk.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/sl.svg b/static/assets/images/flags/sl.svg new file mode 100755 index 00000000..42e0d621 --- /dev/null +++ b/static/assets/images/flags/sl.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/sm.svg b/static/assets/images/flags/sm.svg new file mode 100755 index 00000000..133ae34c --- /dev/null +++ b/static/assets/images/flags/sm.svg @@ -0,0 +1 @@ +LIBERTAS \ No newline at end of file diff --git a/static/assets/images/flags/sn.svg b/static/assets/images/flags/sn.svg new file mode 100755 index 00000000..28a1e7fd --- /dev/null +++ b/static/assets/images/flags/sn.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/so.svg b/static/assets/images/flags/so.svg new file mode 100755 index 00000000..651cfee9 --- /dev/null +++ b/static/assets/images/flags/so.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/sr.svg b/static/assets/images/flags/sr.svg new file mode 100755 index 00000000..d968261e --- /dev/null +++ b/static/assets/images/flags/sr.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/ss.svg b/static/assets/images/flags/ss.svg new file mode 100755 index 00000000..c5458ee2 --- /dev/null +++ b/static/assets/images/flags/ss.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/st.svg b/static/assets/images/flags/st.svg new file mode 100755 index 00000000..b48da60e --- /dev/null +++ b/static/assets/images/flags/st.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/sv.svg b/static/assets/images/flags/sv.svg new file mode 100755 index 00000000..dec1600c --- /dev/null +++ b/static/assets/images/flags/sv.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/sx.svg b/static/assets/images/flags/sx.svg new file mode 100755 index 00000000..cea8d7f6 --- /dev/null +++ b/static/assets/images/flags/sx.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/sy.svg b/static/assets/images/flags/sy.svg new file mode 100755 index 00000000..3ab1b134 --- /dev/null +++ b/static/assets/images/flags/sy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/sz.svg b/static/assets/images/flags/sz.svg new file mode 100755 index 00000000..0b05d5c8 --- /dev/null +++ b/static/assets/images/flags/sz.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/tc.svg b/static/assets/images/flags/tc.svg new file mode 100755 index 00000000..e30c4196 --- /dev/null +++ b/static/assets/images/flags/tc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/td.svg b/static/assets/images/flags/td.svg new file mode 100755 index 00000000..b0aeeeca --- /dev/null +++ b/static/assets/images/flags/td.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/tf.svg b/static/assets/images/flags/tf.svg new file mode 100755 index 00000000..effb5adb --- /dev/null +++ b/static/assets/images/flags/tf.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/tg.svg b/static/assets/images/flags/tg.svg new file mode 100755 index 00000000..40d569d0 --- /dev/null +++ b/static/assets/images/flags/tg.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/th.svg b/static/assets/images/flags/th.svg new file mode 100755 index 00000000..753a2ced --- /dev/null +++ b/static/assets/images/flags/th.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/tj.svg b/static/assets/images/flags/tj.svg new file mode 100755 index 00000000..b605fe7a --- /dev/null +++ b/static/assets/images/flags/tj.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/tk.svg b/static/assets/images/flags/tk.svg new file mode 100755 index 00000000..570f08e7 --- /dev/null +++ b/static/assets/images/flags/tk.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/tl.svg b/static/assets/images/flags/tl.svg new file mode 100755 index 00000000..745064c4 --- /dev/null +++ b/static/assets/images/flags/tl.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/tm.svg b/static/assets/images/flags/tm.svg new file mode 100755 index 00000000..368d8ea8 --- /dev/null +++ b/static/assets/images/flags/tm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/tn.svg b/static/assets/images/flags/tn.svg new file mode 100755 index 00000000..e3190c9f --- /dev/null +++ b/static/assets/images/flags/tn.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/to.svg b/static/assets/images/flags/to.svg new file mode 100755 index 00000000..ce7f3cf9 --- /dev/null +++ b/static/assets/images/flags/to.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/tr.svg b/static/assets/images/flags/tr.svg new file mode 100755 index 00000000..db16e185 --- /dev/null +++ b/static/assets/images/flags/tr.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/tt.svg b/static/assets/images/flags/tt.svg new file mode 100755 index 00000000..6c71f86f --- /dev/null +++ b/static/assets/images/flags/tt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/tv.svg b/static/assets/images/flags/tv.svg new file mode 100755 index 00000000..54ca302a --- /dev/null +++ b/static/assets/images/flags/tv.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/tw.svg b/static/assets/images/flags/tw.svg new file mode 100755 index 00000000..d11ddfca --- /dev/null +++ b/static/assets/images/flags/tw.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/tz.svg b/static/assets/images/flags/tz.svg new file mode 100755 index 00000000..b2f7141f --- /dev/null +++ b/static/assets/images/flags/tz.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/ua.svg b/static/assets/images/flags/ua.svg new file mode 100755 index 00000000..11862095 --- /dev/null +++ b/static/assets/images/flags/ua.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/ug.svg b/static/assets/images/flags/ug.svg new file mode 100755 index 00000000..e0ed3c68 --- /dev/null +++ b/static/assets/images/flags/ug.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/um.svg b/static/assets/images/flags/um.svg new file mode 100755 index 00000000..370cd29e --- /dev/null +++ b/static/assets/images/flags/um.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/un.svg b/static/assets/images/flags/un.svg new file mode 100755 index 00000000..e95206b5 --- /dev/null +++ b/static/assets/images/flags/un.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/us.svg b/static/assets/images/flags/us.svg new file mode 100755 index 00000000..95e707b4 --- /dev/null +++ b/static/assets/images/flags/us.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/static/assets/images/flags/uy.svg b/static/assets/images/flags/uy.svg new file mode 100755 index 00000000..81fc1f16 --- /dev/null +++ b/static/assets/images/flags/uy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/uz.svg b/static/assets/images/flags/uz.svg new file mode 100755 index 00000000..b63fdbf5 --- /dev/null +++ b/static/assets/images/flags/uz.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/va.svg b/static/assets/images/flags/va.svg new file mode 100755 index 00000000..00c9eea4 --- /dev/null +++ b/static/assets/images/flags/va.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/vc.svg b/static/assets/images/flags/vc.svg new file mode 100755 index 00000000..11428099 --- /dev/null +++ b/static/assets/images/flags/vc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/ve.svg b/static/assets/images/flags/ve.svg new file mode 100755 index 00000000..839a6ccc --- /dev/null +++ b/static/assets/images/flags/ve.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/vg.svg b/static/assets/images/flags/vg.svg new file mode 100755 index 00000000..b46659b3 --- /dev/null +++ b/static/assets/images/flags/vg.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/vi.svg b/static/assets/images/flags/vi.svg new file mode 100755 index 00000000..e292e17f --- /dev/null +++ b/static/assets/images/flags/vi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/vn.svg b/static/assets/images/flags/vn.svg new file mode 100755 index 00000000..1b546a29 --- /dev/null +++ b/static/assets/images/flags/vn.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/vu.svg b/static/assets/images/flags/vu.svg new file mode 100755 index 00000000..f9dbd67f --- /dev/null +++ b/static/assets/images/flags/vu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/wf.svg b/static/assets/images/flags/wf.svg new file mode 100755 index 00000000..8a3ced1e --- /dev/null +++ b/static/assets/images/flags/wf.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/ws.svg b/static/assets/images/flags/ws.svg new file mode 100755 index 00000000..94f42a09 --- /dev/null +++ b/static/assets/images/flags/ws.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/ye.svg b/static/assets/images/flags/ye.svg new file mode 100755 index 00000000..00e3500a --- /dev/null +++ b/static/assets/images/flags/ye.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/yt.svg b/static/assets/images/flags/yt.svg new file mode 100755 index 00000000..6c95ad54 --- /dev/null +++ b/static/assets/images/flags/yt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/za.svg b/static/assets/images/flags/za.svg new file mode 100755 index 00000000..273f48f1 --- /dev/null +++ b/static/assets/images/flags/za.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/zm.svg b/static/assets/images/flags/zm.svg new file mode 100755 index 00000000..6bb03734 --- /dev/null +++ b/static/assets/images/flags/zm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/flags/zw.svg b/static/assets/images/flags/zw.svg new file mode 100755 index 00000000..138c5358 --- /dev/null +++ b/static/assets/images/flags/zw.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/assets/images/payments/2checkout-dark.svg b/static/assets/images/payments/2checkout-dark.svg new file mode 100755 index 00000000..c61fb140 --- /dev/null +++ b/static/assets/images/payments/2checkout-dark.svg @@ -0,0 +1 @@ +2checkout-darkCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/2checkout.svg b/static/assets/images/payments/2checkout.svg new file mode 100755 index 00000000..6dd6537d --- /dev/null +++ b/static/assets/images/payments/2checkout.svg @@ -0,0 +1 @@ +2checkout-lightCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/alipay-dark.svg b/static/assets/images/payments/alipay-dark.svg new file mode 100755 index 00000000..0959682f --- /dev/null +++ b/static/assets/images/payments/alipay-dark.svg @@ -0,0 +1 @@ +AliPay-darkCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/alipay.svg b/static/assets/images/payments/alipay.svg new file mode 100755 index 00000000..8ac60eda --- /dev/null +++ b/static/assets/images/payments/alipay.svg @@ -0,0 +1 @@ +AliPay-lightCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/amazon-dark.svg b/static/assets/images/payments/amazon-dark.svg new file mode 100755 index 00000000..1a57e5e8 --- /dev/null +++ b/static/assets/images/payments/amazon-dark.svg @@ -0,0 +1 @@ +Amazon-darkCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/amazon.svg b/static/assets/images/payments/amazon.svg new file mode 100755 index 00000000..9c103a95 --- /dev/null +++ b/static/assets/images/payments/amazon.svg @@ -0,0 +1 @@ +Amazon-lightCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/americanexpress-dark.svg b/static/assets/images/payments/americanexpress-dark.svg new file mode 100755 index 00000000..574c9583 --- /dev/null +++ b/static/assets/images/payments/americanexpress-dark.svg @@ -0,0 +1 @@ +AmericanExpress-darkCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/americanexpress.svg b/static/assets/images/payments/americanexpress.svg new file mode 100755 index 00000000..c300f96d --- /dev/null +++ b/static/assets/images/payments/americanexpress.svg @@ -0,0 +1 @@ +AmericanExpress-lightCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/applepay-dark.svg b/static/assets/images/payments/applepay-dark.svg new file mode 100755 index 00000000..9f752f6b --- /dev/null +++ b/static/assets/images/payments/applepay-dark.svg @@ -0,0 +1 @@ +ApplePay-darkCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/applepay.svg b/static/assets/images/payments/applepay.svg new file mode 100755 index 00000000..a3bc1c49 --- /dev/null +++ b/static/assets/images/payments/applepay.svg @@ -0,0 +1 @@ +ApplePay-lightCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/bancontact-dark.svg b/static/assets/images/payments/bancontact-dark.svg new file mode 100755 index 00000000..6b84177a --- /dev/null +++ b/static/assets/images/payments/bancontact-dark.svg @@ -0,0 +1 @@ +Bancontact-darkCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/bancontact.svg b/static/assets/images/payments/bancontact.svg new file mode 100755 index 00000000..4f74650c --- /dev/null +++ b/static/assets/images/payments/bancontact.svg @@ -0,0 +1 @@ +Bancontact-lightCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/bitcoin-dark.svg b/static/assets/images/payments/bitcoin-dark.svg new file mode 100755 index 00000000..5a871ee0 --- /dev/null +++ b/static/assets/images/payments/bitcoin-dark.svg @@ -0,0 +1 @@ +Bitcoin-darkCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/bitcoin.svg b/static/assets/images/payments/bitcoin.svg new file mode 100755 index 00000000..e0c06561 --- /dev/null +++ b/static/assets/images/payments/bitcoin.svg @@ -0,0 +1 @@ +Bitcoin-lightCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/bitpay-dark.svg b/static/assets/images/payments/bitpay-dark.svg new file mode 100755 index 00000000..5954891f --- /dev/null +++ b/static/assets/images/payments/bitpay-dark.svg @@ -0,0 +1 @@ +Bitpay-darkCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/bitpay.svg b/static/assets/images/payments/bitpay.svg new file mode 100755 index 00000000..96536308 --- /dev/null +++ b/static/assets/images/payments/bitpay.svg @@ -0,0 +1 @@ +Bitpay-lightCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/cirrus-dark.svg b/static/assets/images/payments/cirrus-dark.svg new file mode 100755 index 00000000..28af2a4d --- /dev/null +++ b/static/assets/images/payments/cirrus-dark.svg @@ -0,0 +1 @@ +Cirrus-darkCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/cirrus.svg b/static/assets/images/payments/cirrus.svg new file mode 100755 index 00000000..56160ef8 --- /dev/null +++ b/static/assets/images/payments/cirrus.svg @@ -0,0 +1 @@ +Cirrus-lightCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/clickandbuy-dark.svg b/static/assets/images/payments/clickandbuy-dark.svg new file mode 100755 index 00000000..6e147350 --- /dev/null +++ b/static/assets/images/payments/clickandbuy-dark.svg @@ -0,0 +1 @@ +Clickandbuy-darkCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/clickandbuy.svg b/static/assets/images/payments/clickandbuy.svg new file mode 100755 index 00000000..719fd882 --- /dev/null +++ b/static/assets/images/payments/clickandbuy.svg @@ -0,0 +1 @@ +Clickandbuy-lightCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/coinkite-dark.svg b/static/assets/images/payments/coinkite-dark.svg new file mode 100755 index 00000000..019f934e --- /dev/null +++ b/static/assets/images/payments/coinkite-dark.svg @@ -0,0 +1 @@ +CoinKite-darkCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/coinkite.svg b/static/assets/images/payments/coinkite.svg new file mode 100755 index 00000000..b31a1bc4 --- /dev/null +++ b/static/assets/images/payments/coinkite.svg @@ -0,0 +1 @@ +Coinkite-lightCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/dinersclub-dark.svg b/static/assets/images/payments/dinersclub-dark.svg new file mode 100755 index 00000000..4b15a210 --- /dev/null +++ b/static/assets/images/payments/dinersclub-dark.svg @@ -0,0 +1 @@ +DinersClub-darkCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/dinersclub.svg b/static/assets/images/payments/dinersclub.svg new file mode 100755 index 00000000..c907b0d2 --- /dev/null +++ b/static/assets/images/payments/dinersclub.svg @@ -0,0 +1 @@ +DinersClub-lightCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/directdebit-dark.svg b/static/assets/images/payments/directdebit-dark.svg new file mode 100755 index 00000000..4fcacfa1 --- /dev/null +++ b/static/assets/images/payments/directdebit-dark.svg @@ -0,0 +1 @@ +DirectDebit-darkCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/directdebit.svg b/static/assets/images/payments/directdebit.svg new file mode 100755 index 00000000..37ad454c --- /dev/null +++ b/static/assets/images/payments/directdebit.svg @@ -0,0 +1 @@ +DirectDebit-lightCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/discover-dark.svg b/static/assets/images/payments/discover-dark.svg new file mode 100755 index 00000000..bb3ca4cb --- /dev/null +++ b/static/assets/images/payments/discover-dark.svg @@ -0,0 +1 @@ +Discover-darkCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/discover.svg b/static/assets/images/payments/discover.svg new file mode 100755 index 00000000..6e89ad8b --- /dev/null +++ b/static/assets/images/payments/discover.svg @@ -0,0 +1 @@ +Discover-lightCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/dwolla-dark.svg b/static/assets/images/payments/dwolla-dark.svg new file mode 100755 index 00000000..abfbe8e0 --- /dev/null +++ b/static/assets/images/payments/dwolla-dark.svg @@ -0,0 +1 @@ +Dwolla-darkCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/dwolla.svg b/static/assets/images/payments/dwolla.svg new file mode 100755 index 00000000..772c0847 --- /dev/null +++ b/static/assets/images/payments/dwolla.svg @@ -0,0 +1 @@ +Dwolla-lightCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/ebay-dark.svg b/static/assets/images/payments/ebay-dark.svg new file mode 100755 index 00000000..19f5fbc1 --- /dev/null +++ b/static/assets/images/payments/ebay-dark.svg @@ -0,0 +1 @@ +Ebay-darkCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/ebay.svg b/static/assets/images/payments/ebay.svg new file mode 100755 index 00000000..a50f1d13 --- /dev/null +++ b/static/assets/images/payments/ebay.svg @@ -0,0 +1 @@ +Ebay-lightCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/eway-dark.svg b/static/assets/images/payments/eway-dark.svg new file mode 100755 index 00000000..9efc3ab2 --- /dev/null +++ b/static/assets/images/payments/eway-dark.svg @@ -0,0 +1 @@ +Eway-darkCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/eway.svg b/static/assets/images/payments/eway.svg new file mode 100755 index 00000000..248503bc --- /dev/null +++ b/static/assets/images/payments/eway.svg @@ -0,0 +1 @@ +Eway-lightCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/giropay-dark.svg b/static/assets/images/payments/giropay-dark.svg new file mode 100755 index 00000000..2e074168 --- /dev/null +++ b/static/assets/images/payments/giropay-dark.svg @@ -0,0 +1 @@ +GiroPay-darkCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/giropay.svg b/static/assets/images/payments/giropay.svg new file mode 100755 index 00000000..f1da29ce --- /dev/null +++ b/static/assets/images/payments/giropay.svg @@ -0,0 +1 @@ +GiroPay-lightCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/googlewallet-dark.svg b/static/assets/images/payments/googlewallet-dark.svg new file mode 100755 index 00000000..49c32a4b --- /dev/null +++ b/static/assets/images/payments/googlewallet-dark.svg @@ -0,0 +1 @@ +GoogleWallet-darkCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/googlewallet.svg b/static/assets/images/payments/googlewallet.svg new file mode 100755 index 00000000..4423d949 --- /dev/null +++ b/static/assets/images/payments/googlewallet.svg @@ -0,0 +1 @@ +GoogleWallet-lightCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/ingenico-dark.svg b/static/assets/images/payments/ingenico-dark.svg new file mode 100755 index 00000000..ef252951 --- /dev/null +++ b/static/assets/images/payments/ingenico-dark.svg @@ -0,0 +1 @@ +Ingenico-darkCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/ingenico.svg b/static/assets/images/payments/ingenico.svg new file mode 100755 index 00000000..03f64bf3 --- /dev/null +++ b/static/assets/images/payments/ingenico.svg @@ -0,0 +1 @@ +Ingenico-lightCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/jcb-dark.svg b/static/assets/images/payments/jcb-dark.svg new file mode 100755 index 00000000..8fcdd6c0 --- /dev/null +++ b/static/assets/images/payments/jcb-dark.svg @@ -0,0 +1 @@ +JCB-darkCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/jcb.svg b/static/assets/images/payments/jcb.svg new file mode 100755 index 00000000..3ecc0843 --- /dev/null +++ b/static/assets/images/payments/jcb.svg @@ -0,0 +1 @@ +JCB-lightCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/klarna-dark.svg b/static/assets/images/payments/klarna-dark.svg new file mode 100755 index 00000000..772558a1 --- /dev/null +++ b/static/assets/images/payments/klarna-dark.svg @@ -0,0 +1 @@ +Klarna-darkCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/klarna.svg b/static/assets/images/payments/klarna.svg new file mode 100755 index 00000000..47359a38 --- /dev/null +++ b/static/assets/images/payments/klarna.svg @@ -0,0 +1 @@ +Klarna-lightCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/laser-dark.svg b/static/assets/images/payments/laser-dark.svg new file mode 100755 index 00000000..682534cc --- /dev/null +++ b/static/assets/images/payments/laser-dark.svg @@ -0,0 +1 @@ +Laser-darkCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/laser.svg b/static/assets/images/payments/laser.svg new file mode 100755 index 00000000..f5754eaa --- /dev/null +++ b/static/assets/images/payments/laser.svg @@ -0,0 +1 @@ +Laser-lightCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/maestro-dark.svg b/static/assets/images/payments/maestro-dark.svg new file mode 100755 index 00000000..2464d396 --- /dev/null +++ b/static/assets/images/payments/maestro-dark.svg @@ -0,0 +1 @@ +Maestro-darkCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/maestro.svg b/static/assets/images/payments/maestro.svg new file mode 100755 index 00000000..b18b89e7 --- /dev/null +++ b/static/assets/images/payments/maestro.svg @@ -0,0 +1 @@ +Maestro-lightCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/mastercard-dark.svg b/static/assets/images/payments/mastercard-dark.svg new file mode 100755 index 00000000..c5062ebc --- /dev/null +++ b/static/assets/images/payments/mastercard-dark.svg @@ -0,0 +1 @@ +MasterCard-darkCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/mastercard.svg b/static/assets/images/payments/mastercard.svg new file mode 100755 index 00000000..f70f2572 --- /dev/null +++ b/static/assets/images/payments/mastercard.svg @@ -0,0 +1 @@ +MasterCard-lightCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/monero-dark.svg b/static/assets/images/payments/monero-dark.svg new file mode 100755 index 00000000..497dd601 --- /dev/null +++ b/static/assets/images/payments/monero-dark.svg @@ -0,0 +1 @@ +Monero-darkCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/monero.svg b/static/assets/images/payments/monero.svg new file mode 100755 index 00000000..2a1d4341 --- /dev/null +++ b/static/assets/images/payments/monero.svg @@ -0,0 +1 @@ +Monero-lightCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/neteller-dark.svg b/static/assets/images/payments/neteller-dark.svg new file mode 100755 index 00000000..f6c76c14 --- /dev/null +++ b/static/assets/images/payments/neteller-dark.svg @@ -0,0 +1 @@ +Neteller-darkCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/neteller.svg b/static/assets/images/payments/neteller.svg new file mode 100755 index 00000000..433e3a18 --- /dev/null +++ b/static/assets/images/payments/neteller.svg @@ -0,0 +1 @@ +Neteller-lightCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/ogone-dark.svg b/static/assets/images/payments/ogone-dark.svg new file mode 100755 index 00000000..5847469f --- /dev/null +++ b/static/assets/images/payments/ogone-dark.svg @@ -0,0 +1 @@ +Ogone-darkCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/ogone.svg b/static/assets/images/payments/ogone.svg new file mode 100755 index 00000000..dd0e5157 --- /dev/null +++ b/static/assets/images/payments/ogone.svg @@ -0,0 +1 @@ +Ogone-lightCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/okpay-dark.svg b/static/assets/images/payments/okpay-dark.svg new file mode 100755 index 00000000..50a22c35 --- /dev/null +++ b/static/assets/images/payments/okpay-dark.svg @@ -0,0 +1 @@ +OkPay-darkCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/okpay.svg b/static/assets/images/payments/okpay.svg new file mode 100755 index 00000000..11667282 --- /dev/null +++ b/static/assets/images/payments/okpay.svg @@ -0,0 +1 @@ +OkPay-lightCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/paybox-dark.svg b/static/assets/images/payments/paybox-dark.svg new file mode 100755 index 00000000..464ba31a --- /dev/null +++ b/static/assets/images/payments/paybox-dark.svg @@ -0,0 +1 @@ +Paybox-darkCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/paybox.svg b/static/assets/images/payments/paybox.svg new file mode 100755 index 00000000..8ea00796 --- /dev/null +++ b/static/assets/images/payments/paybox.svg @@ -0,0 +1 @@ +Paybox-lightCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/paymill-dark.svg b/static/assets/images/payments/paymill-dark.svg new file mode 100755 index 00000000..4c5db48f --- /dev/null +++ b/static/assets/images/payments/paymill-dark.svg @@ -0,0 +1 @@ +Paymill-darkCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/paymill.svg b/static/assets/images/payments/paymill.svg new file mode 100755 index 00000000..fc748735 --- /dev/null +++ b/static/assets/images/payments/paymill.svg @@ -0,0 +1 @@ +Paymill-lightCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/payone-dark.svg b/static/assets/images/payments/payone-dark.svg new file mode 100755 index 00000000..7d65a78b --- /dev/null +++ b/static/assets/images/payments/payone-dark.svg @@ -0,0 +1 @@ +Payone-darkCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/payone.svg b/static/assets/images/payments/payone.svg new file mode 100755 index 00000000..a0c70b70 --- /dev/null +++ b/static/assets/images/payments/payone.svg @@ -0,0 +1 @@ +Payone-lightCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/payoneer-dark.svg b/static/assets/images/payments/payoneer-dark.svg new file mode 100755 index 00000000..36b371c2 --- /dev/null +++ b/static/assets/images/payments/payoneer-dark.svg @@ -0,0 +1 @@ +Payoneer-darkCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/payoneer.svg b/static/assets/images/payments/payoneer.svg new file mode 100755 index 00000000..357d0755 --- /dev/null +++ b/static/assets/images/payments/payoneer.svg @@ -0,0 +1 @@ +Payoneer-lightCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/paypal-dark.svg b/static/assets/images/payments/paypal-dark.svg new file mode 100755 index 00000000..3d613c51 --- /dev/null +++ b/static/assets/images/payments/paypal-dark.svg @@ -0,0 +1 @@ +Paypal-darkCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/paypal.svg b/static/assets/images/payments/paypal.svg new file mode 100755 index 00000000..36df6e95 --- /dev/null +++ b/static/assets/images/payments/paypal.svg @@ -0,0 +1 @@ +Paypal-lightCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/paysafecard-dark.svg b/static/assets/images/payments/paysafecard-dark.svg new file mode 100755 index 00000000..897b7909 --- /dev/null +++ b/static/assets/images/payments/paysafecard-dark.svg @@ -0,0 +1 @@ +PaysafeCard-darkCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/paysafecard.svg b/static/assets/images/payments/paysafecard.svg new file mode 100755 index 00000000..f8ad324d --- /dev/null +++ b/static/assets/images/payments/paysafecard.svg @@ -0,0 +1 @@ +PaysafeCard-lightCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/payu-dark.svg b/static/assets/images/payments/payu-dark.svg new file mode 100755 index 00000000..aef45df2 --- /dev/null +++ b/static/assets/images/payments/payu-dark.svg @@ -0,0 +1 @@ +PayU-darkCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/payu.svg b/static/assets/images/payments/payu.svg new file mode 100755 index 00000000..93664375 --- /dev/null +++ b/static/assets/images/payments/payu.svg @@ -0,0 +1 @@ +PayU-lightCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/payza-dark.svg b/static/assets/images/payments/payza-dark.svg new file mode 100755 index 00000000..419fd550 --- /dev/null +++ b/static/assets/images/payments/payza-dark.svg @@ -0,0 +1 @@ +Payza-darkCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/payza.svg b/static/assets/images/payments/payza.svg new file mode 100755 index 00000000..76252431 --- /dev/null +++ b/static/assets/images/payments/payza.svg @@ -0,0 +1 @@ +Payza-lightCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/ripple-dark.svg b/static/assets/images/payments/ripple-dark.svg new file mode 100755 index 00000000..5fecdd71 --- /dev/null +++ b/static/assets/images/payments/ripple-dark.svg @@ -0,0 +1 @@ +Ripple-darkCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/ripple.svg b/static/assets/images/payments/ripple.svg new file mode 100755 index 00000000..62c0b588 --- /dev/null +++ b/static/assets/images/payments/ripple.svg @@ -0,0 +1 @@ +Ripple-lightCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/sage-dark.svg b/static/assets/images/payments/sage-dark.svg new file mode 100755 index 00000000..84cff147 --- /dev/null +++ b/static/assets/images/payments/sage-dark.svg @@ -0,0 +1 @@ +Sage-darkCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/sage.svg b/static/assets/images/payments/sage.svg new file mode 100755 index 00000000..11623bdf --- /dev/null +++ b/static/assets/images/payments/sage.svg @@ -0,0 +1 @@ +Sage-lightCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/sepa-dark.svg b/static/assets/images/payments/sepa-dark.svg new file mode 100755 index 00000000..5db63235 --- /dev/null +++ b/static/assets/images/payments/sepa-dark.svg @@ -0,0 +1 @@ +Sepa-darkCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/sepa.svg b/static/assets/images/payments/sepa.svg new file mode 100755 index 00000000..845952a2 --- /dev/null +++ b/static/assets/images/payments/sepa.svg @@ -0,0 +1 @@ +Sepa-lightCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/shopify-dark.svg b/static/assets/images/payments/shopify-dark.svg new file mode 100755 index 00000000..c0265cd1 --- /dev/null +++ b/static/assets/images/payments/shopify-dark.svg @@ -0,0 +1 @@ +Shopify-darkCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/shopify.svg b/static/assets/images/payments/shopify.svg new file mode 100755 index 00000000..084fbed8 --- /dev/null +++ b/static/assets/images/payments/shopify.svg @@ -0,0 +1 @@ +Shopify-lightCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/skrill-dark.svg b/static/assets/images/payments/skrill-dark.svg new file mode 100755 index 00000000..e1008353 --- /dev/null +++ b/static/assets/images/payments/skrill-dark.svg @@ -0,0 +1 @@ +Skrill-darkCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/skrill.svg b/static/assets/images/payments/skrill.svg new file mode 100755 index 00000000..5ad3300b --- /dev/null +++ b/static/assets/images/payments/skrill.svg @@ -0,0 +1 @@ +Skrill-lightCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/solo-dark.svg b/static/assets/images/payments/solo-dark.svg new file mode 100755 index 00000000..bbe6e3b6 --- /dev/null +++ b/static/assets/images/payments/solo-dark.svg @@ -0,0 +1 @@ +Solo-darkCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/solo.svg b/static/assets/images/payments/solo.svg new file mode 100755 index 00000000..344c23b9 --- /dev/null +++ b/static/assets/images/payments/solo.svg @@ -0,0 +1 @@ +Solo-lightCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/square-dark.svg b/static/assets/images/payments/square-dark.svg new file mode 100755 index 00000000..acfbca90 --- /dev/null +++ b/static/assets/images/payments/square-dark.svg @@ -0,0 +1 @@ +Square-darkCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/square.svg b/static/assets/images/payments/square.svg new file mode 100755 index 00000000..e775d863 --- /dev/null +++ b/static/assets/images/payments/square.svg @@ -0,0 +1 @@ +Square-lightCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/stripe-dark.svg b/static/assets/images/payments/stripe-dark.svg new file mode 100755 index 00000000..466fd87d --- /dev/null +++ b/static/assets/images/payments/stripe-dark.svg @@ -0,0 +1 @@ +Stripe-darkCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/stripe.svg b/static/assets/images/payments/stripe.svg new file mode 100755 index 00000000..4bafa86c --- /dev/null +++ b/static/assets/images/payments/stripe.svg @@ -0,0 +1 @@ +Stripe-lightCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/switch-dark.svg b/static/assets/images/payments/switch-dark.svg new file mode 100755 index 00000000..4e878797 --- /dev/null +++ b/static/assets/images/payments/switch-dark.svg @@ -0,0 +1 @@ +Switch-darkCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/switch.svg b/static/assets/images/payments/switch.svg new file mode 100755 index 00000000..e4a8e5b0 --- /dev/null +++ b/static/assets/images/payments/switch.svg @@ -0,0 +1 @@ +Switch-lightCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/ukash-dark.svg b/static/assets/images/payments/ukash-dark.svg new file mode 100755 index 00000000..f48a474d --- /dev/null +++ b/static/assets/images/payments/ukash-dark.svg @@ -0,0 +1 @@ +Ukash-darkCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/ukash.svg b/static/assets/images/payments/ukash.svg new file mode 100755 index 00000000..fd22ed2d --- /dev/null +++ b/static/assets/images/payments/ukash.svg @@ -0,0 +1 @@ +Ukash-lightCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/unionpay-dark.svg b/static/assets/images/payments/unionpay-dark.svg new file mode 100755 index 00000000..4665ee93 --- /dev/null +++ b/static/assets/images/payments/unionpay-dark.svg @@ -0,0 +1 @@ +UnionPay-darkCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/unionpay.svg b/static/assets/images/payments/unionpay.svg new file mode 100755 index 00000000..90bdea51 --- /dev/null +++ b/static/assets/images/payments/unionpay.svg @@ -0,0 +1 @@ +UnionPay-lightCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/verifone-dark.svg b/static/assets/images/payments/verifone-dark.svg new file mode 100755 index 00000000..9215cc6d --- /dev/null +++ b/static/assets/images/payments/verifone-dark.svg @@ -0,0 +1 @@ +Verifone-darkCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/verifone.svg b/static/assets/images/payments/verifone.svg new file mode 100755 index 00000000..f7ffab86 --- /dev/null +++ b/static/assets/images/payments/verifone.svg @@ -0,0 +1 @@ +Verifone-lightCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/verisign-dark.svg b/static/assets/images/payments/verisign-dark.svg new file mode 100755 index 00000000..2f47d3a3 --- /dev/null +++ b/static/assets/images/payments/verisign-dark.svg @@ -0,0 +1 @@ +VeriSign-darkCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/verisign.svg b/static/assets/images/payments/verisign.svg new file mode 100755 index 00000000..a557a0dd --- /dev/null +++ b/static/assets/images/payments/verisign.svg @@ -0,0 +1 @@ +VeriSign-lightCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/visa-dark.svg b/static/assets/images/payments/visa-dark.svg new file mode 100755 index 00000000..95619ac3 --- /dev/null +++ b/static/assets/images/payments/visa-dark.svg @@ -0,0 +1 @@ +Visa-darkCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/visa.svg b/static/assets/images/payments/visa.svg new file mode 100755 index 00000000..f8d98135 --- /dev/null +++ b/static/assets/images/payments/visa.svg @@ -0,0 +1 @@ +Visa-lightCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/webmoney-dark.svg b/static/assets/images/payments/webmoney-dark.svg new file mode 100755 index 00000000..ab37c57a --- /dev/null +++ b/static/assets/images/payments/webmoney-dark.svg @@ -0,0 +1 @@ +WebMoney-darkCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/webmoney.svg b/static/assets/images/payments/webmoney.svg new file mode 100755 index 00000000..c745bffd --- /dev/null +++ b/static/assets/images/payments/webmoney.svg @@ -0,0 +1 @@ +WebMoney-lightCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/westernunion-dark.svg b/static/assets/images/payments/westernunion-dark.svg new file mode 100755 index 00000000..a1826ff6 --- /dev/null +++ b/static/assets/images/payments/westernunion-dark.svg @@ -0,0 +1 @@ +WesternUnion-darkCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/westernunion.svg b/static/assets/images/payments/westernunion.svg new file mode 100755 index 00000000..5c55f712 --- /dev/null +++ b/static/assets/images/payments/westernunion.svg @@ -0,0 +1 @@ +WesternUnion-lightCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/worldpay-dark.svg b/static/assets/images/payments/worldpay-dark.svg new file mode 100755 index 00000000..a1dc42d5 --- /dev/null +++ b/static/assets/images/payments/worldpay-dark.svg @@ -0,0 +1 @@ +WorldPay-darkCreated with Sketch. \ No newline at end of file diff --git a/static/assets/images/payments/worldpay.svg b/static/assets/images/payments/worldpay.svg new file mode 100755 index 00000000..d48408b2 --- /dev/null +++ b/static/assets/images/payments/worldpay.svg @@ -0,0 +1 @@ +WorldPay-lightCreated with Sketch. \ No newline at end of file diff --git a/static/assets/js/core.js b/static/assets/js/core.js new file mode 100755 index 00000000..6333a12a --- /dev/null +++ b/static/assets/js/core.js @@ -0,0 +1,107 @@ +/** + * + */ +let hexToRgba = function(hex, opacity) { + let result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex); + let rgb = result ? { + r: parseInt(result[1], 16), + g: parseInt(result[2], 16), + b: parseInt(result[3], 16) + } : null; + + return 'rgba(' + rgb.r + ', ' + rgb.g + ', ' + rgb.b + ', ' + opacity + ')'; +}; + +/** + * + */ +$(document).ready(function() { + /** Constant div card */ + const DIV_CARD = 'div.card'; + + /** Initialize tooltips */ + $('[data-toggle="tooltip"]').tooltip(); + + /** Initialize popovers */ + $('[data-toggle="popover"]').popover({ + html: true + }); + + /** Function for remove card */ + $('[data-toggle="card-remove"]').on('click', function(e) { + let $card = $(this).closest(DIV_CARD); + + $card.remove(); + + e.preventDefault(); + return false; + }); + + /** Function for collapse card */ + $('[data-toggle="card-collapse"]').on('click', function(e) { + let $card = $(this).closest(DIV_CARD); + + $card.toggleClass('card-collapsed'); + + e.preventDefault(); + return false; + }); + + /** Function for fullscreen card */ + $('[data-toggle="card-fullscreen"]').on('click', function(e) { + let $card = $(this).closest(DIV_CARD); + + $card.toggleClass('card-fullscreen').removeClass('card-collapsed'); + + e.preventDefault(); + return false; + }); + + /** */ + if ($('[data-sparkline]').length) { + let generateSparkline = function($elem, data, params) { + $elem.sparkline(data, { + type: $elem.attr('data-sparkline-type'), + height: '100%', + barColor: params.color, + lineColor: params.color, + fillColor: 'transparent', + spotColor: params.color, + spotRadius: 0, + lineWidth: 2, + highlightColor: hexToRgba(params.color, .6), + highlightLineColor: '#666', + defaultPixelsPerValue: 5 + }); + }; + + require(['sparkline'], function() { + $('[data-sparkline]').each(function() { + let $chart = $(this); + + generateSparkline($chart, JSON.parse($chart.attr('data-sparkline')), { + color: $chart.attr('data-sparkline-color') + }); + }); + }); + } + + /** */ + if ($('.chart-circle').length) { + require(['circle-progress'], function() { + $('.chart-circle').each(function() { + let $this = $(this); + + $this.circleProgress({ + fill: { + color: tabler.colors[$this.attr('data-color')] || tabler.colors.blue + }, + size: $this.height(), + startAngle: -Math.PI / 4 * 2, + emptyFill: '#F4F4F4', + lineCap: 'round' + }); + }); + }); + } +}); \ No newline at end of file diff --git a/static/assets/js/dashboard.js b/static/assets/js/dashboard.js new file mode 100755 index 00000000..32bf3785 --- /dev/null +++ b/static/assets/js/dashboard.js @@ -0,0 +1,126 @@ +require.config({ +shim: { +'bootstrap': ['jquery'], +'sparkline': ['jquery'], +'tablesorter': ['jquery'], +'vector-map': ['jquery'], +'vector-map-de': ['vector-map', 'jquery'], +'vector-map-world': ['vector-map', 'jquery'], +'core': ['bootstrap', 'jquery'], +}, +paths: { +'core': 'assets/js/core', +'jquery': 'assets/js/vendors/jquery-3.2.1.min', +'bootstrap': 'assets/js/vendors/bootstrap.bundle.min', +'sparkline': 'assets/js/vendors/jquery.sparkline.min', +'selectize': 'assets/js/vendors/selectize.min', +'tablesorter': 'assets/js/vendors/jquery.tablesorter.min', +'vector-map': 'assets/js/vendors/jquery-jvectormap-2.0.3.min', +'vector-map-de': 'assets/js/vendors/jquery-jvectormap-de-merc', +'vector-map-world': 'assets/js/vendors/jquery-jvectormap-world-mill', +'circle-progress': 'assets/js/vendors/circle-progress.min', +} +}); +window.tabler = { +colors: { +'blue': '#467fcf', +'blue-darkest': '#0e1929', +'blue-darker': '#1c3353', +'blue-dark': '#3866a6', +'blue-light': '#7ea5dd', +'blue-lighter': '#c8d9f1', +'blue-lightest': '#edf2fa', +'azure': '#45aaf2', +'azure-darkest': '#0e2230', +'azure-darker': '#1c4461', +'azure-dark': '#3788c2', +'azure-light': '#7dc4f6', +'azure-lighter': '#c7e6fb', +'azure-lightest': '#ecf7fe', +'indigo': '#6574cd', +'indigo-darkest': '#141729', +'indigo-darker': '#282e52', +'indigo-dark': '#515da4', +'indigo-light': '#939edc', +'indigo-lighter': '#d1d5f0', +'indigo-lightest': '#f0f1fa', +'purple': '#a55eea', +'purple-darkest': '#21132f', +'purple-darker': '#42265e', +'purple-dark': '#844bbb', +'purple-light': '#c08ef0', +'purple-lighter': '#e4cff9', +'purple-lightest': '#f6effd', +'pink': '#f66d9b', +'pink-darkest': '#31161f', +'pink-darker': '#622c3e', +'pink-dark': '#c5577c', +'pink-light': '#f999b9', +'pink-lighter': '#fcd3e1', +'pink-lightest': '#fef0f5', +'red': '#e74c3c', +'red-darkest': '#2e0f0c', +'red-darker': '#5c1e18', +'red-dark': '#b93d30', +'red-light': '#ee8277', +'red-lighter': '#f8c9c5', +'red-lightest': '#fdedec', +'orange': '#fd9644', +'orange-darkest': '#331e0e', +'orange-darker': '#653c1b', +'orange-dark': '#ca7836', +'orange-light': '#feb67c', +'orange-lighter': '#fee0c7', +'orange-lightest': '#fff5ec', +'yellow': '#f1c40f', +'yellow-darkest': '#302703', +'yellow-darker': '#604e06', +'yellow-dark': '#c19d0c', +'yellow-light': '#f5d657', +'yellow-lighter': '#fbedb7', +'yellow-lightest': '#fef9e7', +'lime': '#7bd235', +'lime-darkest': '#192a0b', +'lime-darker': '#315415', +'lime-dark': '#62a82a', +'lime-light': '#a3e072', +'lime-lighter': '#d7f2c2', +'lime-lightest': '#f2fbeb', +'green': '#5eba00', +'green-darkest': '#132500', +'green-darker': '#264a00', +'green-dark': '#4b9500', +'green-light': '#8ecf4d', +'green-lighter': '#cfeab3', +'green-lightest': '#eff8e6', +'teal': '#2bcbba', +'teal-darkest': '#092925', +'teal-darker': '#11514a', +'teal-dark': '#22a295', +'teal-light': '#6bdbcf', +'teal-lighter': '#bfefea', +'teal-lightest': '#eafaf8', +'cyan': '#17a2b8', +'cyan-darkest': '#052025', +'cyan-darker': '#09414a', +'cyan-dark': '#128293', +'cyan-light': '#5dbecd', +'cyan-lighter': '#b9e3ea', +'cyan-lightest': '#e8f6f8', +'gray': '#868e96', +'gray-darkest': '#1b1c1e', +'gray-darker': '#36393c', +'gray-dark': '#6b7278', +'gray-light': '#aab0b6', +'gray-lighter': '#dbdde0', +'gray-lightest': '#f3f4f5', +'gray-dark': '#343a40', +'gray-dark-darkest': '#0a0c0d', +'gray-dark-darker': '#15171a', +'gray-dark-dark': '#2a2e33', +'gray-dark-light': '#717579', +'gray-dark-lighter': '#c2c4c6', +'gray-dark-lightest': '#ebebec' +} +}; +require(['core']); \ No newline at end of file diff --git a/static/assets/js/require.min.js b/static/assets/js/require.min.js new file mode 100755 index 00000000..a3ca583b --- /dev/null +++ b/static/assets/js/require.min.js @@ -0,0 +1,5 @@ +/** vim: et:ts=4:sw=4:sts=4 + * @license RequireJS 2.3.5 Copyright jQuery Foundation and other contributors. + * Released under MIT license, https://github.com/requirejs/requirejs/blob/master/LICENSE + */ +var requirejs,require,define;!function(global,setTimeout){function commentReplace(e,t){return t||""}function isFunction(e){return"[object Function]"===ostring.call(e)}function isArray(e){return"[object Array]"===ostring.call(e)}function each(e,t){if(e){var i;for(i=0;i-1&&(!e[i]||!t(e[i],i,e));i-=1);}}function hasProp(e,t){return hasOwn.call(e,t)}function getOwn(e,t){return hasProp(e,t)&&e[t]}function eachProp(e,t){var i;for(i in e)if(hasProp(e,i)&&t(e[i],i))break}function mixin(e,t,i,r){return t&&eachProp(t,function(t,n){!i&&hasProp(e,n)||(!r||"object"!=typeof t||!t||isArray(t)||isFunction(t)||t instanceof RegExp?e[n]=t:(e[n]||(e[n]={}),mixin(e[n],t,i,r)))}),e}function bind(e,t){return function(){return t.apply(e,arguments)}}function scripts(){return document.getElementsByTagName("script")}function defaultOnError(e){throw e}function getGlobal(e){if(!e)return e;var t=global;return each(e.split("."),function(e){t=t[e]}),t}function makeError(e,t,i,r){var n=new Error(t+"\nhttp://requirejs.org/docs/errors.html#"+e);return n.requireType=e,n.requireModules=r,i&&(n.originalError=i),n}function newContext(e){function t(e){var t,i;for(t=0;t0&&(e.splice(t-1,2),t-=2)}}function i(e,i,r){var n,o,a,s,u,c,d,p,f,l,h=i&&i.split("/"),m=y.map,g=m&&m["*"];if(e&&(c=(e=e.split("/")).length-1,y.nodeIdCompat&&jsSuffixRegExp.test(e[c])&&(e[c]=e[c].replace(jsSuffixRegExp,"")),"."===e[0].charAt(0)&&h&&(e=h.slice(0,h.length-1).concat(e)),t(e),e=e.join("/")),r&&m&&(h||g)){e:for(a=(o=e.split("/")).length;a>0;a-=1){if(u=o.slice(0,a).join("/"),h)for(s=h.length;s>0;s-=1)if((n=getOwn(m,h.slice(0,s).join("/")))&&(n=getOwn(n,u))){d=n,p=a;break e}!f&&g&&getOwn(g,u)&&(f=getOwn(g,u),l=a)}!d&&f&&(d=f,p=l),d&&(o.splice(0,p,d),e=o.join("/"))}return getOwn(y.pkgs,e)||e}function r(e){isBrowser&&each(scripts(),function(t){if(t.getAttribute("data-requiremodule")===e&&t.getAttribute("data-requirecontext")===q.contextName)return t.parentNode.removeChild(t),!0})}function n(e){var t=getOwn(y.paths,e);if(t&&isArray(t)&&t.length>1)return t.shift(),q.require.undef(e),q.makeRequire(null,{skipMap:!0})([e]),!0}function o(e){var t,i=e?e.indexOf("!"):-1;return i>-1&&(t=e.substring(0,i),e=e.substring(i+1,e.length)),[t,e]}function a(e,t,r,n){var a,s,u,c,d=null,p=t?t.name:null,f=e,l=!0,h="";return e||(l=!1,e="_@r"+(T+=1)),c=o(e),d=c[0],e=c[1],d&&(d=i(d,p,n),s=getOwn(j,d)),e&&(d?h=r?e:s&&s.normalize?s.normalize(e,function(e){return i(e,p,n)}):-1===e.indexOf("!")?i(e,p,n):e:(d=(c=o(h=i(e,p,n)))[0],h=c[1],r=!0,a=q.nameToUrl(h))),u=!d||s||r?"":"_unnormalized"+(A+=1),{prefix:d,name:h,parentMap:t,unnormalized:!!u,url:a,originalName:f,isDefine:l,id:(d?d+"!"+h:h)+u}}function s(e){var t=e.id,i=getOwn(S,t);return i||(i=S[t]=new q.Module(e)),i}function u(e,t,i){var r=e.id,n=getOwn(S,r);!hasProp(j,r)||n&&!n.defineEmitComplete?(n=s(e)).error&&"error"===t?i(n.error):n.on(t,i):"defined"===t&&i(j[r])}function c(e,t){var i=e.requireModules,r=!1;t?t(e):(each(i,function(t){var i=getOwn(S,t);i&&(i.error=e,i.events.error&&(r=!0,i.emit("error",e)))}),r||req.onError(e))}function d(){globalDefQueue.length&&(each(globalDefQueue,function(e){var t=e[0];"string"==typeof t&&(q.defQueueMap[t]=!0),O.push(e)}),globalDefQueue=[])}function p(e){delete S[e],delete k[e]}function f(e,t,i){var r=e.map.id;e.error?e.emit("error",e.error):(t[r]=!0,each(e.depMaps,function(r,n){var o=r.id,a=getOwn(S,o);!a||e.depMatched[n]||i[o]||(getOwn(t,o)?(e.defineDep(n,j[o]),e.check()):f(a,t,i))}),i[r]=!0)}function l(){var e,t,i=1e3*y.waitSeconds,o=i&&q.startTime+i<(new Date).getTime(),a=[],s=[],u=!1,d=!0;if(!x){if(x=!0,eachProp(k,function(e){var i=e.map,c=i.id;if(e.enabled&&(i.isDefine||s.push(e),!e.error))if(!e.inited&&o)n(c)?(t=!0,u=!0):(a.push(c),r(c));else if(!e.inited&&e.fetched&&i.isDefine&&(u=!0,!i.prefix))return d=!1}),o&&a.length)return e=makeError("timeout","Load timeout for modules: "+a,null,a),e.contextName=q.contextName,c(e);d&&each(s,function(e){f(e,{},{})}),o&&!t||!u||!isBrowser&&!isWebWorker||w||(w=setTimeout(function(){w=0,l()},50)),x=!1}}function h(e){hasProp(j,e[0])||s(a(e[0],null,!0)).init(e[1],e[2])}function m(e,t,i,r){e.detachEvent&&!isOpera?r&&e.detachEvent(r,t):e.removeEventListener(i,t,!1)}function g(e){var t=e.currentTarget||e.srcElement;return m(t,q.onScriptLoad,"load","onreadystatechange"),m(t,q.onScriptError,"error"),{node:t,id:t&&t.getAttribute("data-requiremodule")}}function v(){var e;for(d();O.length;){if(null===(e=O.shift())[0])return c(makeError("mismatch","Mismatched anonymous define() module: "+e[e.length-1]));h(e)}q.defQueueMap={}}var x,b,q,E,w,y={waitSeconds:7,baseUrl:"./",paths:{},bundles:{},pkgs:{},shim:{},config:{}},S={},k={},M={},O=[],j={},P={},R={},T=1,A=1;return E={require:function(e){return e.require?e.require:e.require=q.makeRequire(e.map)},exports:function(e){if(e.usingExports=!0,e.map.isDefine)return e.exports?j[e.map.id]=e.exports:e.exports=j[e.map.id]={}},module:function(e){return e.module?e.module:e.module={id:e.map.id,uri:e.map.url,config:function(){return getOwn(y.config,e.map.id)||{}},exports:e.exports||(e.exports={})}}},b=function(e){this.events=getOwn(M,e.id)||{},this.map=e,this.shim=getOwn(y.shim,e.id),this.depExports=[],this.depMaps=[],this.depMatched=[],this.pluginMaps={},this.depCount=0},b.prototype={init:function(e,t,i,r){r=r||{},this.inited||(this.factory=t,i?this.on("error",i):this.events.error&&(i=bind(this,function(e){this.emit("error",e)})),this.depMaps=e&&e.slice(0),this.errback=i,this.inited=!0,this.ignore=r.ignore,r.enabled||this.enabled?this.enable():this.check())},defineDep:function(e,t){this.depMatched[e]||(this.depMatched[e]=!0,this.depCount-=1,this.depExports[e]=t)},fetch:function(){if(!this.fetched){this.fetched=!0,q.startTime=(new Date).getTime();var e=this.map;if(!this.shim)return e.prefix?this.callPlugin():this.load();q.makeRequire(this.map,{enableBuildCallback:!0})(this.shim.deps||[],bind(this,function(){return e.prefix?this.callPlugin():this.load()}))}},load:function(){var e=this.map.url;P[e]||(P[e]=!0,q.load(this.map.id,e))},check:function(){if(this.enabled&&!this.enabling){var e,t,i=this.map.id,r=this.depExports,n=this.exports,o=this.factory;if(this.inited){if(this.error)this.emit("error",this.error);else if(!this.defining){if(this.defining=!0,this.depCount<1&&!this.defined){if(isFunction(o)){if(this.events.error&&this.map.isDefine||req.onError!==defaultOnError)try{n=q.execCb(i,o,r,n)}catch(t){e=t}else n=q.execCb(i,o,r,n);if(this.map.isDefine&&void 0===n&&((t=this.module)?n=t.exports:this.usingExports&&(n=this.exports)),e)return e.requireMap=this.map,e.requireModules=this.map.isDefine?[this.map.id]:null,e.requireType=this.map.isDefine?"define":"require",c(this.error=e)}else n=o;if(this.exports=n,this.map.isDefine&&!this.ignore&&(j[i]=n,req.onResourceLoad)){var a=[];each(this.depMaps,function(e){a.push(e.normalizedMap||e)}),req.onResourceLoad(q,this.map,a)}p(i),this.defined=!0}this.defining=!1,this.defined&&!this.defineEmitted&&(this.defineEmitted=!0,this.emit("defined",this.exports),this.defineEmitComplete=!0)}}else hasProp(q.defQueueMap,i)||this.fetch()}},callPlugin:function(){var e=this.map,t=e.id,r=a(e.prefix);this.depMaps.push(r),u(r,"defined",bind(this,function(r){var n,o,d,f=getOwn(R,this.map.id),l=this.map.name,h=this.map.parentMap?this.map.parentMap.name:null,m=q.makeRequire(e.parentMap,{enableBuildCallback:!0});return this.map.unnormalized?(r.normalize&&(l=r.normalize(l,function(e){return i(e,h,!0)})||""),o=a(e.prefix+"!"+l,this.map.parentMap,!0),u(o,"defined",bind(this,function(e){this.map.normalizedMap=o,this.init([],function(){return e},null,{enabled:!0,ignore:!0})})),void((d=getOwn(S,o.id))&&(this.depMaps.push(o),this.events.error&&d.on("error",bind(this,function(e){this.emit("error",e)})),d.enable()))):f?(this.map.url=q.nameToUrl(f),void this.load()):((n=bind(this,function(e){this.init([],function(){return e},null,{enabled:!0})})).error=bind(this,function(e){this.inited=!0,this.error=e,e.requireModules=[t],eachProp(S,function(e){0===e.map.id.indexOf(t+"_unnormalized")&&p(e.map.id)}),c(e)}),n.fromText=bind(this,function(i,r){var o=e.name,u=a(o),d=useInteractive;r&&(i=r),d&&(useInteractive=!1),s(u),hasProp(y.config,t)&&(y.config[o]=y.config[t]);try{req.exec(i)}catch(e){return c(makeError("fromtexteval","fromText eval for "+t+" failed: "+e,e,[t]))}d&&(useInteractive=!0),this.depMaps.push(u),q.completeLoad(o),m([o],n)}),void r.load(e.name,m,n,y))})),q.enable(r,this),this.pluginMaps[r.id]=r},enable:function(){k[this.map.id]=this,this.enabled=!0,this.enabling=!0,each(this.depMaps,bind(this,function(e,t){var i,r,n;if("string"==typeof e){if(e=a(e,this.map.isDefine?this.map:this.map.parentMap,!1,!this.skipMap),this.depMaps[t]=e,n=getOwn(E,e.id))return void(this.depExports[t]=n(this));this.depCount+=1,u(e,"defined",bind(this,function(e){this.undefed||(this.defineDep(t,e),this.check())})),this.errback?u(e,"error",bind(this,this.errback)):this.events.error&&u(e,"error",bind(this,function(e){this.emit("error",e)}))}i=e.id,r=S[i],hasProp(E,i)||!r||r.enabled||q.enable(e,this)})),eachProp(this.pluginMaps,bind(this,function(e){var t=getOwn(S,e.id);t&&!t.enabled&&q.enable(e,this)})),this.enabling=!1,this.check()},on:function(e,t){var i=this.events[e];i||(i=this.events[e]=[]),i.push(t)},emit:function(e,t){each(this.events[e],function(e){e(t)}),"error"===e&&delete this.events[e]}},q={config:y,contextName:e,registry:S,defined:j,urlFetched:P,defQueue:O,defQueueMap:{},Module:b,makeModuleMap:a,nextTick:req.nextTick,onError:c,configure:function(e){if(e.baseUrl&&"/"!==e.baseUrl.charAt(e.baseUrl.length-1)&&(e.baseUrl+="/"),"string"==typeof e.urlArgs){var t=e.urlArgs;e.urlArgs=function(e,i){return(-1===i.indexOf("?")?"?":"&")+t}}var i=y.shim,r={paths:!0,bundles:!0,config:!0,map:!0};eachProp(e,function(e,t){r[t]?(y[t]||(y[t]={}),mixin(y[t],e,!0,!0)):y[t]=e}),e.bundles&&eachProp(e.bundles,function(e,t){each(e,function(e){e!==t&&(R[e]=t)})}),e.shim&&(eachProp(e.shim,function(e,t){isArray(e)&&(e={deps:e}),!e.exports&&!e.init||e.exportsFn||(e.exportsFn=q.makeShimExports(e)),i[t]=e}),y.shim=i),e.packages&&each(e.packages,function(e){var t;t=(e="string"==typeof e?{name:e}:e).name,e.location&&(y.paths[t]=e.location),y.pkgs[t]=e.name+"/"+(e.main||"main").replace(currDirRegExp,"").replace(jsSuffixRegExp,"")}),eachProp(S,function(e,t){e.inited||e.map.unnormalized||(e.map=a(t,null,!0))}),(e.deps||e.callback)&&q.require(e.deps||[],e.callback)},makeShimExports:function(e){return function(){var t;return e.init&&(t=e.init.apply(global,arguments)),t||e.exports&&getGlobal(e.exports)}},makeRequire:function(t,n){function o(i,r,u){var d,p,f;return n.enableBuildCallback&&r&&isFunction(r)&&(r.__requireJsBuild=!0),"string"==typeof i?isFunction(r)?c(makeError("requireargs","Invalid require call"),u):t&&hasProp(E,i)?E[i](S[t.id]):req.get?req.get(q,i,t,o):(p=a(i,t,!1,!0),d=p.id,hasProp(j,d)?j[d]:c(makeError("notloaded",'Module name "'+d+'" has not been loaded yet for context: '+e+(t?"":". Use require([])")))):(v(),q.nextTick(function(){v(),(f=s(a(null,t))).skipMap=n.skipMap,f.init(i,r,u,{enabled:!0}),l()}),o)}return n=n||{},mixin(o,{isBrowser:isBrowser,toUrl:function(e){var r,n=e.lastIndexOf("."),o=e.split("/")[0],a="."===o||".."===o;return-1!==n&&(!a||n>1)&&(r=e.substring(n,e.length),e=e.substring(0,n)),q.nameToUrl(i(e,t&&t.id,!0),r,!0)},defined:function(e){return hasProp(j,a(e,t,!1,!0).id)},specified:function(e){return e=a(e,t,!1,!0).id,hasProp(j,e)||hasProp(S,e)}}),t||(o.undef=function(e){d();var i=a(e,t,!0),n=getOwn(S,e);n.undefed=!0,r(e),delete j[e],delete P[i.url],delete M[e],eachReverse(O,function(t,i){t[0]===e&&O.splice(i,1)}),delete q.defQueueMap[e],n&&(n.events.defined&&(M[e]=n.events),p(e))}),o},enable:function(e){getOwn(S,e.id)&&s(e).enable()},completeLoad:function(e){var t,i,r,o=getOwn(y.shim,e)||{},a=o.exports;for(d();O.length;){if(null===(i=O.shift())[0]){if(i[0]=e,t)break;t=!0}else i[0]===e&&(t=!0);h(i)}if(q.defQueueMap={},r=getOwn(S,e),!t&&!hasProp(j,e)&&r&&!r.inited){if(!(!y.enforceDefine||a&&getGlobal(a)))return n(e)?void 0:c(makeError("nodefine","No define call for "+e,null,[e]));h([e,o.deps||[],o.exportsFn])}l()},nameToUrl:function(e,t,i){var r,n,o,a,s,u,c,d=getOwn(y.pkgs,e);if(d&&(e=d),c=getOwn(R,e))return q.nameToUrl(c,t,i);if(req.jsExtRegExp.test(e))s=e+(t||"");else{for(r=y.paths,o=(n=e.split("/")).length;o>0;o-=1)if(a=n.slice(0,o).join("/"),u=getOwn(r,a)){isArray(u)&&(u=u[0]),n.splice(0,o,u);break}s=n.join("/"),s=("/"===(s+=t||(/^data\:|^blob\:|\?/.test(s)||i?"":".js")).charAt(0)||s.match(/^[\w\+\.\-]+:/)?"":y.baseUrl)+s}return y.urlArgs&&!/^blob\:/.test(s)?s+y.urlArgs(e,s):s},load:function(e,t){req.load(q,e,t)},execCb:function(e,t,i,r){return t.apply(r,i)},onScriptLoad:function(e){if("load"===e.type||readyRegExp.test((e.currentTarget||e.srcElement).readyState)){interactiveScript=null;var t=g(e);q.completeLoad(t.id)}},onScriptError:function(e){var t=g(e);if(!n(t.id)){var i=[];return eachProp(S,function(e,r){0!==r.indexOf("_@r")&&each(e.depMaps,function(e){if(e.id===t.id)return i.push(r),!0})}),c(makeError("scripterror",'Script error for "'+t.id+(i.length?'", needed by: '+i.join(", "):'"'),e,[t.id]))}}},q.require=q.makeRequire(),q}function getInteractiveScript(){return interactiveScript&&"interactive"===interactiveScript.readyState?interactiveScript:(eachReverse(scripts(),function(e){if("interactive"===e.readyState)return interactiveScript=e}),interactiveScript)}var req,s,head,baseElement,dataMain,src,interactiveScript,currentlyAddingScript,mainScript,subPath,version="2.3.5",commentRegExp=/\/\*[\s\S]*?\*\/|([^:"'=]|^)\/\/.*$/gm,cjsRequireRegExp=/[^.]\s*require\s*\(\s*["']([^'"\s]+)["']\s*\)/g,jsSuffixRegExp=/\.js$/,currDirRegExp=/^\.\//,op=Object.prototype,ostring=op.toString,hasOwn=op.hasOwnProperty,isBrowser=!("undefined"==typeof window||"undefined"==typeof navigator||!window.document),isWebWorker=!isBrowser&&"undefined"!=typeof importScripts,readyRegExp=isBrowser&&"PLAYSTATION 3"===navigator.platform?/^complete$/:/^(complete|loaded)$/,defContextName="_",isOpera="undefined"!=typeof opera&&"[object Opera]"===opera.toString(),contexts={},cfg={},globalDefQueue=[],useInteractive=!1;if(void 0===define){if(void 0!==requirejs){if(isFunction(requirejs))return;cfg=requirejs,requirejs=void 0}void 0===require||isFunction(require)||(cfg=require,require=void 0),req=requirejs=function(e,t,i,r){var n,o,a=defContextName;return isArray(e)||"string"==typeof e||(o=e,isArray(t)?(e=t,t=i,i=r):e=[]),o&&o.context&&(a=o.context),(n=getOwn(contexts,a))||(n=contexts[a]=req.s.newContext(a)),o&&n.configure(o),n.require(e,t,i)},req.config=function(e){return req(e)},req.nextTick=void 0!==setTimeout?function(e){setTimeout(e,4)}:function(e){e()},require||(require=req),req.version=version,req.jsExtRegExp=/^\/|:|\?|\.js$/,req.isBrowser=isBrowser,s=req.s={contexts:contexts,newContext:newContext},req({}),each(["toUrl","undef","defined","specified"],function(e){req[e]=function(){var t=contexts[defContextName];return t.require[e].apply(t,arguments)}}),isBrowser&&(head=s.head=document.getElementsByTagName("head")[0],(baseElement=document.getElementsByTagName("base")[0])&&(head=s.head=baseElement.parentNode)),req.onError=defaultOnError,req.createNode=function(e,t,i){var r=e.xhtml?document.createElementNS("http://www.w3.org/1999/xhtml","html:script"):document.createElement("script");return r.type=e.scriptType||"text/javascript",r.charset="utf-8",r.async=!0,r},req.load=function(e,t,i){var r,n=e&&e.config||{};if(isBrowser)return(r=req.createNode(n,t,i)).setAttribute("data-requirecontext",e.contextName),r.setAttribute("data-requiremodule",t),!r.attachEvent||r.attachEvent.toString&&r.attachEvent.toString().indexOf("[native code")<0||isOpera?(r.addEventListener("load",e.onScriptLoad,!1),r.addEventListener("error",e.onScriptError,!1)):(useInteractive=!0,r.attachEvent("onreadystatechange",e.onScriptLoad)),r.src=i,n.onNodeCreated&&n.onNodeCreated(r,n,t,i),currentlyAddingScript=r,baseElement?head.insertBefore(r,baseElement):head.appendChild(r),currentlyAddingScript=null,r;if(isWebWorker)try{setTimeout(function(){},0),importScripts(i),e.completeLoad(t)}catch(r){e.onError(makeError("importscripts","importScripts failed for "+t+" at "+i,r,[t]))}},isBrowser&&!cfg.skipDataMain&&eachReverse(scripts(),function(e){if(head||(head=e.parentNode),dataMain=e.getAttribute("data-main"))return mainScript=dataMain,cfg.baseUrl||-1!==mainScript.indexOf("!")||(src=mainScript.split("/"),mainScript=src.pop(),subPath=src.length?src.join("/")+"/":"./",cfg.baseUrl=subPath),mainScript=mainScript.replace(jsSuffixRegExp,""),req.jsExtRegExp.test(mainScript)&&(mainScript=dataMain),cfg.deps=cfg.deps?cfg.deps.concat(mainScript):[mainScript],!0}),define=function(e,t,i){var r,n;"string"!=typeof e&&(i=t,t=e,e=null),isArray(t)||(i=t,t=null),!t&&isFunction(i)&&(t=[],i.length&&(i.toString().replace(commentRegExp,commentReplace).replace(cjsRequireRegExp,function(e,i){t.push(i)}),t=(1===i.length?["require"]:["require","exports","module"]).concat(t))),useInteractive&&(r=currentlyAddingScript||getInteractiveScript())&&(e||(e=r.getAttribute("data-requiremodule")),n=contexts[r.getAttribute("data-requirecontext")]),n?(n.defQueue.push([e,t,i]),n.defQueueMap[e]=!0):globalDefQueue.push([e,t,i])},define.amd={jQuery:!0},req.exec=function(text){return eval(text)},req(cfg)}}(this,"undefined"==typeof setTimeout?void 0:setTimeout); \ No newline at end of file diff --git a/static/assets/js/vendors/bootstrap.bundle.min.js b/static/assets/js/vendors/bootstrap.bundle.min.js new file mode 100755 index 00000000..be7336ad --- /dev/null +++ b/static/assets/js/vendors/bootstrap.bundle.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap v4.0.0 (https://getbootstrap.com) + * Copyright 2011-2018 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("jquery")):"function"==typeof define&&define.amd?define(["exports","jquery"],e):e(t.bootstrap={},t.jQuery)}(this,function(t,e){"use strict";function n(t,e){for(var n=0;n0?n:null}catch(t){return null}},reflow:function(t){return t.offsetHeight},triggerTransitionEnd:function(n){t(n).trigger(e.end)},supportsTransitionEnd:function(){return Boolean(e)},isElement:function(t){return(t[0]||t).nodeType},typeCheckConfig:function(t,e,n){for(var r in n)if(Object.prototype.hasOwnProperty.call(n,r)){var o=n[r],s=e[r],a=s&&i.isElement(s)?"element":(l=s,{}.toString.call(l).match(/\s([a-z]+)/i)[1].toLowerCase());if(!new RegExp(o).test(a))throw new Error(t.toUpperCase()+': Option "'+r+'" provided type "'+a+'" but expected type "'+o+'".')}var l}};return e=("undefined"==typeof window||!window.QUnit)&&{end:"transitionend"},t.fn.emulateTransitionEnd=n,i.supportsTransitionEnd()&&(t.event.special[i.TRANSITION_END]={bindType:e.end,delegateType:e.end,handle:function(e){if(t(e.target).is(this))return e.handleObj.handler.apply(this,arguments)}}),i}(e=e&&e.hasOwnProperty("default")?e.default:e),mt=(s="alert",l="."+(a="bs.alert"),c=(o=e).fn[s],h={CLOSE:"close"+l,CLOSED:"closed"+l,CLICK_DATA_API:"click"+l+".data-api"},f="alert",u="fade",d="show",p=function(){function t(t){this._element=t}var e=t.prototype;return e.close=function(t){t=t||this._element;var e=this._getRootElement(t);this._triggerCloseEvent(e).isDefaultPrevented()||this._removeElement(e)},e.dispose=function(){o.removeData(this._element,a),this._element=null},e._getRootElement=function(t){var e=gt.getSelectorFromElement(t),n=!1;return e&&(n=o(e)[0]),n||(n=o(t).closest("."+f)[0]),n},e._triggerCloseEvent=function(t){var e=o.Event(h.CLOSE);return o(t).trigger(e),e},e._removeElement=function(t){var e=this;o(t).removeClass(d),gt.supportsTransitionEnd()&&o(t).hasClass(u)?o(t).one(gt.TRANSITION_END,function(n){return e._destroyElement(t,n)}).emulateTransitionEnd(150):this._destroyElement(t)},e._destroyElement=function(t){o(t).detach().trigger(h.CLOSED).remove()},t._jQueryInterface=function(e){return this.each(function(){var n=o(this),i=n.data(a);i||(i=new t(this),n.data(a,i)),"close"===e&&i[e](this)})},t._handleDismiss=function(t){return function(e){e&&e.preventDefault(),t.close(this)}},i(t,null,[{key:"VERSION",get:function(){return"4.0.0"}}]),t}(),o(document).on(h.CLICK_DATA_API,'[data-dismiss="alert"]',p._handleDismiss(new p)),o.fn[s]=p._jQueryInterface,o.fn[s].Constructor=p,o.fn[s].noConflict=function(){return o.fn[s]=c,p._jQueryInterface},p),_t=(m="button",v="."+(_="bs.button"),E=".data-api",y=(g=e).fn[m],b="active",T="btn",C="focus",w='[data-toggle^="button"]',I='[data-toggle="buttons"]',A="input",D=".active",S=".btn",O={CLICK_DATA_API:"click"+v+E,FOCUS_BLUR_DATA_API:"focus"+v+E+" blur"+v+E},N=function(){function t(t){this._element=t}var e=t.prototype;return e.toggle=function(){var t=!0,e=!0,n=g(this._element).closest(I)[0];if(n){var i=g(this._element).find(A)[0];if(i){if("radio"===i.type)if(i.checked&&g(this._element).hasClass(b))t=!1;else{var r=g(n).find(D)[0];r&&g(r).removeClass(b)}if(t){if(i.hasAttribute("disabled")||n.hasAttribute("disabled")||i.classList.contains("disabled")||n.classList.contains("disabled"))return;i.checked=!g(this._element).hasClass(b),g(i).trigger("change")}i.focus(),e=!1}}e&&this._element.setAttribute("aria-pressed",!g(this._element).hasClass(b)),t&&g(this._element).toggleClass(b)},e.dispose=function(){g.removeData(this._element,_),this._element=null},t._jQueryInterface=function(e){return this.each(function(){var n=g(this).data(_);n||(n=new t(this),g(this).data(_,n)),"toggle"===e&&n[e]()})},i(t,null,[{key:"VERSION",get:function(){return"4.0.0"}}]),t}(),g(document).on(O.CLICK_DATA_API,w,function(t){t.preventDefault();var e=t.target;g(e).hasClass(T)||(e=g(e).closest(S)),N._jQueryInterface.call(g(e),"toggle")}).on(O.FOCUS_BLUR_DATA_API,w,function(t){var e=g(t.target).closest(S)[0];g(e).toggleClass(C,/^focus(in)?$/.test(t.type))}),g.fn[m]=N._jQueryInterface,g.fn[m].Constructor=N,g.fn[m].noConflict=function(){return g.fn[m]=y,N._jQueryInterface},N),vt=(L="carousel",x="."+(P="bs.carousel"),R=".data-api",j=(k=e).fn[L],H={interval:5e3,keyboard:!0,slide:!1,pause:"hover",wrap:!0},M={interval:"(number|boolean)",keyboard:"boolean",slide:"(boolean|string)",pause:"(string|boolean)",wrap:"boolean"},W="next",U="prev",F="left",B="right",K={SLIDE:"slide"+x,SLID:"slid"+x,KEYDOWN:"keydown"+x,MOUSEENTER:"mouseenter"+x,MOUSELEAVE:"mouseleave"+x,TOUCHEND:"touchend"+x,LOAD_DATA_API:"load"+x+R,CLICK_DATA_API:"click"+x+R},V="carousel",Q="active",Y="slide",G="carousel-item-right",q="carousel-item-left",z="carousel-item-next",X="carousel-item-prev",J={ACTIVE:".active",ACTIVE_ITEM:".active.carousel-item",ITEM:".carousel-item",NEXT_PREV:".carousel-item-next, .carousel-item-prev",INDICATORS:".carousel-indicators",DATA_SLIDE:"[data-slide], [data-slide-to]",DATA_RIDE:'[data-ride="carousel"]'},Z=function(){function t(t,e){this._items=null,this._interval=null,this._activeElement=null,this._isPaused=!1,this._isSliding=!1,this.touchTimeout=null,this._config=this._getConfig(e),this._element=k(t)[0],this._indicatorsElement=k(this._element).find(J.INDICATORS)[0],this._transitionDuration=this._getTransitionDuration(),this._addEventListeners()}var e=t.prototype;return e.next=function(){this._isSliding||this._slide(W)},e.nextWhenVisible=function(){!document.hidden&&k(this._element).is(":visible")&&"hidden"!==k(this._element).css("visibility")&&this.next()},e.prev=function(){this._isSliding||this._slide(U)},e.pause=function(t){t||(this._isPaused=!0),k(this._element).find(J.NEXT_PREV)[0]&>.supportsTransitionEnd()&&(gt.triggerTransitionEnd(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null},e.cycle=function(t){t||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config.interval&&!this._isPaused&&(this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))},e.to=function(t){var e=this;this._activeElement=k(this._element).find(J.ACTIVE_ITEM)[0];var n=this._getItemIndex(this._activeElement);if(!(t>this._items.length-1||t<0))if(this._isSliding)k(this._element).one(K.SLID,function(){return e.to(t)});else{if(n===t)return this.pause(),void this.cycle();var i=t>n?W:U;this._slide(i,this._items[t])}},e.dispose=function(){k(this._element).off(x),k.removeData(this._element,P),this._items=null,this._config=null,this._element=null,this._interval=null,this._isPaused=null,this._isSliding=null,this._activeElement=null,this._indicatorsElement=null},e._getConfig=function(t){return t=r({},H,t),gt.typeCheckConfig(L,t,M),t},e._getTransitionDuration=function(){var t=k(this._element).find(J.ITEM).css("transition-duration");return t?(t=t.split(",")[0]).indexOf("ms")>-1?parseFloat(t):1e3*parseFloat(t):0},e._addEventListeners=function(){var t=this;this._config.keyboard&&k(this._element).on(K.KEYDOWN,function(e){return t._keydown(e)}),"hover"===this._config.pause&&(k(this._element).on(K.MOUSEENTER,function(e){return t.pause(e)}).on(K.MOUSELEAVE,function(e){return t.cycle(e)}),"ontouchstart"in document.documentElement&&k(this._element).on(K.TOUCHEND,function(){t.pause(),t.touchTimeout&&clearTimeout(t.touchTimeout),t.touchTimeout=setTimeout(function(e){return t.cycle(e)},500+t._config.interval)}))},e._keydown=function(t){if(!/input|textarea/i.test(t.target.tagName))switch(t.which){case 37:t.preventDefault(),this.prev();break;case 39:t.preventDefault(),this.next()}},e._getItemIndex=function(t){return this._items=k.makeArray(k(t).parent().find(J.ITEM)),this._items.indexOf(t)},e._getItemByDirection=function(t,e){var n=t===W,i=t===U,r=this._getItemIndex(e),o=this._items.length-1;if((i&&0===r||n&&r===o)&&!this._config.wrap)return e;var s=(r+(t===U?-1:1))%this._items.length;return-1===s?this._items[this._items.length-1]:this._items[s]},e._triggerSlideEvent=function(t,e){var n=this._getItemIndex(t),i=this._getItemIndex(k(this._element).find(J.ACTIVE_ITEM)[0]),r=k.Event(K.SLIDE,{relatedTarget:t,direction:e,from:i,to:n});return k(this._element).trigger(r),r},e._setActiveIndicatorElement=function(t){if(this._indicatorsElement){k(this._indicatorsElement).find(J.ACTIVE).removeClass(Q);var e=this._indicatorsElement.children[this._getItemIndex(t)];e&&k(e).addClass(Q)}},e._slide=function(t,e){var n,i,r,o=this,s=k(this._element).find(J.ACTIVE_ITEM)[0],a=this._getItemIndex(s),l=e||s&&this._getItemByDirection(t,s),c=this._getItemIndex(l),h=Boolean(this._interval);if(t===W?(n=q,i=z,r=F):(n=G,i=X,r=B),l&&k(l).hasClass(Q))this._isSliding=!1;else if(!this._triggerSlideEvent(l,r).isDefaultPrevented()&&s&&l){this._isSliding=!0,h&&this.pause(),this._setActiveIndicatorElement(l);var f=k.Event(K.SLID,{relatedTarget:l,direction:r,from:a,to:c});gt.supportsTransitionEnd()&&k(this._element).hasClass(Y)?(k(l).addClass(i),gt.reflow(l),k(s).addClass(n),k(l).addClass(n),k(s).one(gt.TRANSITION_END,function(){k(l).removeClass(n+" "+i).addClass(Q),k(s).removeClass(Q+" "+i+" "+n),o._isSliding=!1,setTimeout(function(){return k(o._element).trigger(f)},0)}).emulateTransitionEnd(this._transitionDuration)):(k(s).removeClass(Q),k(l).addClass(Q),this._isSliding=!1,k(this._element).trigger(f)),h&&this.cycle()}},t._jQueryInterface=function(e){return this.each(function(){var n=k(this).data(P),i=r({},H,k(this).data());"object"==typeof e&&(i=r({},i,e));var o="string"==typeof e?e:i.slide;if(n||(n=new t(this,i),k(this).data(P,n)),"number"==typeof e)n.to(e);else if("string"==typeof o){if("undefined"==typeof n[o])throw new TypeError('No method named "'+o+'"');n[o]()}else i.interval&&(n.pause(),n.cycle())})},t._dataApiClickHandler=function(e){var n=gt.getSelectorFromElement(this);if(n){var i=k(n)[0];if(i&&k(i).hasClass(V)){var o=r({},k(i).data(),k(this).data()),s=this.getAttribute("data-slide-to");s&&(o.interval=!1),t._jQueryInterface.call(k(i),o),s&&k(i).data(P).to(s),e.preventDefault()}}},i(t,null,[{key:"VERSION",get:function(){return"4.0.0"}},{key:"Default",get:function(){return H}}]),t}(),k(document).on(K.CLICK_DATA_API,J.DATA_SLIDE,Z._dataApiClickHandler),k(window).on(K.LOAD_DATA_API,function(){k(J.DATA_RIDE).each(function(){var t=k(this);Z._jQueryInterface.call(t,t.data())})}),k.fn[L]=Z._jQueryInterface,k.fn[L].Constructor=Z,k.fn[L].noConflict=function(){return k.fn[L]=j,Z._jQueryInterface},Z),Et=(tt="collapse",nt="."+(et="bs.collapse"),it=($=e).fn[tt],rt={toggle:!0,parent:""},ot={toggle:"boolean",parent:"(string|element)"},st={SHOW:"show"+nt,SHOWN:"shown"+nt,HIDE:"hide"+nt,HIDDEN:"hidden"+nt,CLICK_DATA_API:"click"+nt+".data-api"},at="show",lt="collapse",ct="collapsing",ht="collapsed",ft="width",ut="height",dt={ACTIVES:".show, .collapsing",DATA_TOGGLE:'[data-toggle="collapse"]'},pt=function(){function t(t,e){this._isTransitioning=!1,this._element=t,this._config=this._getConfig(e),this._triggerArray=$.makeArray($('[data-toggle="collapse"][href="#'+t.id+'"],[data-toggle="collapse"][data-target="#'+t.id+'"]'));for(var n=$(dt.DATA_TOGGLE),i=0;i0&&(this._selector=o,this._triggerArray.push(r))}this._parent=this._config.parent?this._getParent():null,this._config.parent||this._addAriaAndCollapsedClass(this._element,this._triggerArray),this._config.toggle&&this.toggle()}var e=t.prototype;return e.toggle=function(){$(this._element).hasClass(at)?this.hide():this.show()},e.show=function(){var e,n,i=this;if(!this._isTransitioning&&!$(this._element).hasClass(at)&&(this._parent&&0===(e=$.makeArray($(this._parent).find(dt.ACTIVES).filter('[data-parent="'+this._config.parent+'"]'))).length&&(e=null),!(e&&(n=$(e).not(this._selector).data(et))&&n._isTransitioning))){var r=$.Event(st.SHOW);if($(this._element).trigger(r),!r.isDefaultPrevented()){e&&(t._jQueryInterface.call($(e).not(this._selector),"hide"),n||$(e).data(et,null));var o=this._getDimension();$(this._element).removeClass(lt).addClass(ct),this._element.style[o]=0,this._triggerArray.length>0&&$(this._triggerArray).removeClass(ht).attr("aria-expanded",!0),this.setTransitioning(!0);var s=function(){$(i._element).removeClass(ct).addClass(lt).addClass(at),i._element.style[o]="",i.setTransitioning(!1),$(i._element).trigger(st.SHOWN)};if(gt.supportsTransitionEnd()){var a="scroll"+(o[0].toUpperCase()+o.slice(1));$(this._element).one(gt.TRANSITION_END,s).emulateTransitionEnd(600),this._element.style[o]=this._element[a]+"px"}else s()}}},e.hide=function(){var t=this;if(!this._isTransitioning&&$(this._element).hasClass(at)){var e=$.Event(st.HIDE);if($(this._element).trigger(e),!e.isDefaultPrevented()){var n=this._getDimension();if(this._element.style[n]=this._element.getBoundingClientRect()[n]+"px",gt.reflow(this._element),$(this._element).addClass(ct).removeClass(lt).removeClass(at),this._triggerArray.length>0)for(var i=0;i0&&$(e).toggleClass(ht,!n).attr("aria-expanded",n)}},t._getTargetFromElement=function(t){var e=gt.getSelectorFromElement(t);return e?$(e)[0]:null},t._jQueryInterface=function(e){return this.each(function(){var n=$(this),i=n.data(et),o=r({},rt,n.data(),"object"==typeof e&&e);if(!i&&o.toggle&&/show|hide/.test(e)&&(o.toggle=!1),i||(i=new t(this,o),n.data(et,i)),"string"==typeof e){if("undefined"==typeof i[e])throw new TypeError('No method named "'+e+'"');i[e]()}})},i(t,null,[{key:"VERSION",get:function(){return"4.0.0"}},{key:"Default",get:function(){return rt}}]),t}(),$(document).on(st.CLICK_DATA_API,dt.DATA_TOGGLE,function(t){"A"===t.currentTarget.tagName&&t.preventDefault();var e=$(this),n=gt.getSelectorFromElement(this);$(n).each(function(){var t=$(this),n=t.data(et)?"toggle":e.data();pt._jQueryInterface.call(t,n)})}),$.fn[tt]=pt._jQueryInterface,$.fn[tt].Constructor=pt,$.fn[tt].noConflict=function(){return $.fn[tt]=it,pt._jQueryInterface},pt),yt="undefined"!=typeof window&&"undefined"!=typeof document,bt=["Edge","Trident","Firefox"],Tt=0,Ct=0;Ct=0){Tt=1;break}var wt=yt&&window.Promise?function(t){var e=!1;return function(){e||(e=!0,window.Promise.resolve().then(function(){e=!1,t()}))}}:function(t){var e=!1;return function(){e||(e=!0,setTimeout(function(){e=!1,t()},Tt))}};function It(t){return t&&"[object Function]"==={}.toString.call(t)}function At(t,e){if(1!==t.nodeType)return[];var n=getComputedStyle(t,null);return e?n[e]:n}function Dt(t){return"HTML"===t.nodeName?t:t.parentNode||t.host}function St(t){if(!t)return document.body;switch(t.nodeName){case"HTML":case"BODY":return t.ownerDocument.body;case"#document":return t.body}var e=At(t),n=e.overflow,i=e.overflowX,r=e.overflowY;return/(auto|scroll)/.test(n+r+i)?t:St(Dt(t))}function Ot(t){var e=t&&t.offsetParent,n=e&&e.nodeName;return n&&"BODY"!==n&&"HTML"!==n?-1!==["TD","TABLE"].indexOf(e.nodeName)&&"static"===At(e,"position")?Ot(e):e:t?t.ownerDocument.documentElement:document.documentElement}function Nt(t){return null!==t.parentNode?Nt(t.parentNode):t}function kt(t,e){if(!(t&&t.nodeType&&e&&e.nodeType))return document.documentElement;var n=t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_FOLLOWING,i=n?t:e,r=n?e:t,o=document.createRange();o.setStart(i,0),o.setEnd(r,0);var s,a,l=o.commonAncestorContainer;if(t!==l&&e!==l||i.contains(r))return"BODY"===(a=(s=l).nodeName)||"HTML"!==a&&Ot(s.firstElementChild)!==s?Ot(l):l;var c=Nt(t);return c.host?kt(c.host,e):kt(t,Nt(e).host)}function Lt(t){var e="top"===(arguments.length>1&&void 0!==arguments[1]?arguments[1]:"top")?"scrollTop":"scrollLeft",n=t.nodeName;if("BODY"===n||"HTML"===n){var i=t.ownerDocument.documentElement;return(t.ownerDocument.scrollingElement||i)[e]}return t[e]}function Pt(t,e){var n="x"===e?"Left":"Top",i="Left"===n?"Right":"Bottom";return parseFloat(t["border"+n+"Width"],10)+parseFloat(t["border"+i+"Width"],10)}var xt=void 0,Rt=function(){return void 0===xt&&(xt=-1!==navigator.appVersion.indexOf("MSIE 10")),xt};function jt(t,e,n,i){return Math.max(e["offset"+t],e["scroll"+t],n["client"+t],n["offset"+t],n["scroll"+t],Rt()?n["offset"+t]+i["margin"+("Height"===t?"Top":"Left")]+i["margin"+("Height"===t?"Bottom":"Right")]:0)}function Ht(){var t=document.body,e=document.documentElement,n=Rt()&&getComputedStyle(e);return{height:jt("Height",t,e,n),width:jt("Width",t,e,n)}}var Mt=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},Wt=function(){function t(t,e){for(var n=0;n2&&void 0!==arguments[2]&&arguments[2],i=Lt(e,"top"),r=Lt(e,"left"),o=n?-1:1;return t.top+=i*o,t.bottom+=i*o,t.left+=r*o,t.right+=r*o,t}(h,e)),h}function Qt(t,e,n,i){var r,o,s,a,l,c,h,f={top:0,left:0},u=kt(t,e);if("viewport"===i)o=(r=u).ownerDocument.documentElement,s=Vt(r,o),a=Math.max(o.clientWidth,window.innerWidth||0),l=Math.max(o.clientHeight,window.innerHeight||0),c=Lt(o),h=Lt(o,"left"),f=Bt({top:c-s.top+s.marginTop,left:h-s.left+s.marginLeft,width:a,height:l});else{var d=void 0;"scrollParent"===i?"BODY"===(d=St(Dt(e))).nodeName&&(d=t.ownerDocument.documentElement):d="window"===i?t.ownerDocument.documentElement:i;var p=Vt(d,u);if("HTML"!==d.nodeName||function t(e){var n=e.nodeName;return"BODY"!==n&&"HTML"!==n&&("fixed"===At(e,"position")||t(Dt(e)))}(u))f=p;else{var g=Ht(),m=g.height,_=g.width;f.top+=p.top-p.marginTop,f.bottom=m+p.top,f.left+=p.left-p.marginLeft,f.right=_+p.left}}return f.left+=n,f.top+=n,f.right-=n,f.bottom-=n,f}function Yt(t,e,n,i,r){var o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0;if(-1===t.indexOf("auto"))return t;var s=Qt(n,i,o,r),a={top:{width:s.width,height:e.top-s.top},right:{width:s.right-e.right,height:s.height},bottom:{width:s.width,height:s.bottom-e.bottom},left:{width:e.left-s.left,height:s.height}},l=Object.keys(a).map(function(t){return Ft({key:t},a[t],{area:(e=a[t],e.width*e.height)});var e}).sort(function(t,e){return e.area-t.area}),c=l.filter(function(t){var e=t.width,i=t.height;return e>=n.clientWidth&&i>=n.clientHeight}),h=c.length>0?c[0].key:l[0].key,f=t.split("-")[1];return h+(f?"-"+f:"")}function Gt(t,e,n){return Vt(n,kt(e,n))}function qt(t){var e=getComputedStyle(t),n=parseFloat(e.marginTop)+parseFloat(e.marginBottom),i=parseFloat(e.marginLeft)+parseFloat(e.marginRight);return{width:t.offsetWidth+i,height:t.offsetHeight+n}}function zt(t){var e={left:"right",right:"left",bottom:"top",top:"bottom"};return t.replace(/left|right|bottom|top/g,function(t){return e[t]})}function Xt(t,e,n){n=n.split("-")[0];var i=qt(t),r={width:i.width,height:i.height},o=-1!==["right","left"].indexOf(n),s=o?"top":"left",a=o?"left":"top",l=o?"height":"width",c=o?"width":"height";return r[s]=e[s]+e[l]/2-i[l]/2,r[a]=n===a?e[a]-i[c]:e[zt(a)],r}function Jt(t,e){return Array.prototype.find?t.find(e):t.filter(e)[0]}function Zt(t,e,n){return(void 0===n?t:t.slice(0,function(t,e,n){if(Array.prototype.findIndex)return t.findIndex(function(t){return t[e]===n});var i=Jt(t,function(t){return t[e]===n});return t.indexOf(i)}(t,"name",n))).forEach(function(t){t.function&&console.warn("`modifier.function` is deprecated, use `modifier.fn`!");var n=t.function||t.fn;t.enabled&&It(n)&&(e.offsets.popper=Bt(e.offsets.popper),e.offsets.reference=Bt(e.offsets.reference),e=n(e,t))}),e}function $t(t,e){return t.some(function(t){var n=t.name;return t.enabled&&n===e})}function te(t){for(var e=[!1,"ms","Webkit","Moz","O"],n=t.charAt(0).toUpperCase()+t.slice(1),i=0;i1&&void 0!==arguments[1]&&arguments[1],n=le.indexOf(t),i=le.slice(n+1).concat(le.slice(0,n));return e?i.reverse():i}var he={FLIP:"flip",CLOCKWISE:"clockwise",COUNTERCLOCKWISE:"counterclockwise"};function fe(t,e,n,i){var r=[0,0],o=-1!==["right","left"].indexOf(i),s=t.split(/(\+|\-)/).map(function(t){return t.trim()}),a=s.indexOf(Jt(s,function(t){return-1!==t.search(/,|\s/)}));s[a]&&-1===s[a].indexOf(",")&&console.warn("Offsets separated by white space(s) are deprecated, use a comma (,) instead.");var l=/\s*,\s*|\s+/,c=-1!==a?[s.slice(0,a).concat([s[a].split(l)[0]]),[s[a].split(l)[1]].concat(s.slice(a+1))]:[s];return(c=c.map(function(t,i){var r=(1===i?!o:o)?"height":"width",s=!1;return t.reduce(function(t,e){return""===t[t.length-1]&&-1!==["+","-"].indexOf(e)?(t[t.length-1]=e,s=!0,t):s?(t[t.length-1]+=e,s=!1,t):t.concat(e)},[]).map(function(t){return function(t,e,n,i){var r=t.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),o=+r[1],s=r[2];if(!o)return t;if(0===s.indexOf("%")){var a=void 0;switch(s){case"%p":a=n;break;case"%":case"%r":default:a=i}return Bt(a)[e]/100*o}if("vh"===s||"vw"===s)return("vh"===s?Math.max(document.documentElement.clientHeight,window.innerHeight||0):Math.max(document.documentElement.clientWidth,window.innerWidth||0))/100*o;return o}(t,r,e,n)})})).forEach(function(t,e){t.forEach(function(n,i){re(n)&&(r[e]+=n*("-"===t[i-1]?-1:1))})}),r}var ue={placement:"bottom",eventsEnabled:!0,removeOnDestroy:!1,onCreate:function(){},onUpdate:function(){},modifiers:{shift:{order:100,enabled:!0,fn:function(t){var e=t.placement,n=e.split("-")[0],i=e.split("-")[1];if(i){var r=t.offsets,o=r.reference,s=r.popper,a=-1!==["bottom","top"].indexOf(n),l=a?"left":"top",c=a?"width":"height",h={start:Ut({},l,o[l]),end:Ut({},l,o[l]+o[c]-s[c])};t.offsets.popper=Ft({},s,h[i])}return t}},offset:{order:200,enabled:!0,fn:function(t,e){var n=e.offset,i=t.placement,r=t.offsets,o=r.popper,s=r.reference,a=i.split("-")[0],l=void 0;return l=re(+n)?[+n,0]:fe(n,o,s,a),"left"===a?(o.top+=l[0],o.left-=l[1]):"right"===a?(o.top+=l[0],o.left+=l[1]):"top"===a?(o.left+=l[0],o.top-=l[1]):"bottom"===a&&(o.left+=l[0],o.top+=l[1]),t.popper=o,t},offset:0},preventOverflow:{order:300,enabled:!0,fn:function(t,e){var n=e.boundariesElement||Ot(t.instance.popper);t.instance.reference===n&&(n=Ot(n));var i=Qt(t.instance.popper,t.instance.reference,e.padding,n);e.boundaries=i;var r=e.priority,o=t.offsets.popper,s={primary:function(t){var n=o[t];return o[t]i[t]&&!e.escapeWithReference&&(r=Math.min(o[n],i[t]-("right"===t?o.width:o.height))),Ut({},n,r)}};return r.forEach(function(t){var e=-1!==["left","top"].indexOf(t)?"primary":"secondary";o=Ft({},o,s[e](t))}),t.offsets.popper=o,t},priority:["left","right","top","bottom"],padding:5,boundariesElement:"scrollParent"},keepTogether:{order:400,enabled:!0,fn:function(t){var e=t.offsets,n=e.popper,i=e.reference,r=t.placement.split("-")[0],o=Math.floor,s=-1!==["top","bottom"].indexOf(r),a=s?"right":"bottom",l=s?"left":"top",c=s?"width":"height";return n[a]o(i[a])&&(t.offsets.popper[l]=o(i[a])),t}},arrow:{order:500,enabled:!0,fn:function(t,e){var n;if(!se(t.instance.modifiers,"arrow","keepTogether"))return t;var i=e.element;if("string"==typeof i){if(!(i=t.instance.popper.querySelector(i)))return t}else if(!t.instance.popper.contains(i))return console.warn("WARNING: `arrow.element` must be child of its popper element!"),t;var r=t.placement.split("-")[0],o=t.offsets,s=o.popper,a=o.reference,l=-1!==["left","right"].indexOf(r),c=l?"height":"width",h=l?"Top":"Left",f=h.toLowerCase(),u=l?"left":"top",d=l?"bottom":"right",p=qt(i)[c];a[d]-ps[d]&&(t.offsets.popper[f]+=a[f]+p-s[d]),t.offsets.popper=Bt(t.offsets.popper);var g=a[f]+a[c]/2-p/2,m=At(t.instance.popper),_=parseFloat(m["margin"+h],10),v=parseFloat(m["border"+h+"Width"],10),E=g-t.offsets.popper[f]-_-v;return E=Math.max(Math.min(s[c]-p,E),0),t.arrowElement=i,t.offsets.arrow=(Ut(n={},f,Math.round(E)),Ut(n,u,""),n),t},element:"[x-arrow]"},flip:{order:600,enabled:!0,fn:function(t,e){if($t(t.instance.modifiers,"inner"))return t;if(t.flipped&&t.placement===t.originalPlacement)return t;var n=Qt(t.instance.popper,t.instance.reference,e.padding,e.boundariesElement),i=t.placement.split("-")[0],r=zt(i),o=t.placement.split("-")[1]||"",s=[];switch(e.behavior){case he.FLIP:s=[i,r];break;case he.CLOCKWISE:s=ce(i);break;case he.COUNTERCLOCKWISE:s=ce(i,!0);break;default:s=e.behavior}return s.forEach(function(a,l){if(i!==a||s.length===l+1)return t;i=t.placement.split("-")[0],r=zt(i);var c,h=t.offsets.popper,f=t.offsets.reference,u=Math.floor,d="left"===i&&u(h.right)>u(f.left)||"right"===i&&u(h.left)u(f.top)||"bottom"===i&&u(h.top)u(n.right),m=u(h.top)u(n.bottom),v="left"===i&&p||"right"===i&&g||"top"===i&&m||"bottom"===i&&_,E=-1!==["top","bottom"].indexOf(i),y=!!e.flipVariations&&(E&&"start"===o&&p||E&&"end"===o&&g||!E&&"start"===o&&m||!E&&"end"===o&&_);(d||v||y)&&(t.flipped=!0,(d||v)&&(i=s[l+1]),y&&(o="end"===(c=o)?"start":"start"===c?"end":c),t.placement=i+(o?"-"+o:""),t.offsets.popper=Ft({},t.offsets.popper,Xt(t.instance.popper,t.offsets.reference,t.placement)),t=Zt(t.instance.modifiers,t,"flip"))}),t},behavior:"flip",padding:5,boundariesElement:"viewport"},inner:{order:700,enabled:!1,fn:function(t){var e=t.placement,n=e.split("-")[0],i=t.offsets,r=i.popper,o=i.reference,s=-1!==["left","right"].indexOf(n),a=-1===["top","left"].indexOf(n);return r[s?"left":"top"]=o[n]-(a?r[s?"width":"height"]:0),t.placement=zt(e),t.offsets.popper=Bt(r),t}},hide:{order:800,enabled:!0,fn:function(t){if(!se(t.instance.modifiers,"hide","preventOverflow"))return t;var e=t.offsets.reference,n=Jt(t.instance.modifiers,function(t){return"preventOverflow"===t.name}).boundaries;if(e.bottomn.right||e.top>n.bottom||e.right2&&void 0!==arguments[2]?arguments[2]:{};Mt(this,t),this.scheduleUpdate=function(){return requestAnimationFrame(i.update)},this.update=wt(this.update.bind(this)),this.options=Ft({},t.Defaults,r),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=e&&e.jquery?e[0]:e,this.popper=n&&n.jquery?n[0]:n,this.options.modifiers={},Object.keys(Ft({},t.Defaults.modifiers,r.modifiers)).forEach(function(e){i.options.modifiers[e]=Ft({},t.Defaults.modifiers[e]||{},r.modifiers?r.modifiers[e]:{})}),this.modifiers=Object.keys(this.options.modifiers).map(function(t){return Ft({name:t},i.options.modifiers[t])}).sort(function(t,e){return t.order-e.order}),this.modifiers.forEach(function(t){t.enabled&&It(t.onLoad)&&t.onLoad(i.reference,i.popper,i.options,t,i.state)}),this.update();var o=this.options.eventsEnabled;o&&this.enableEventListeners(),this.state.eventsEnabled=o}return Wt(t,[{key:"update",value:function(){return function(){if(!this.state.isDestroyed){var t={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}};t.offsets.reference=Gt(this.state,this.popper,this.reference),t.placement=Yt(this.options.placement,t.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),t.originalPlacement=t.placement,t.offsets.popper=Xt(this.popper,t.offsets.reference,t.placement),t.offsets.popper.position="absolute",t=Zt(this.modifiers,t),this.state.isCreated?this.options.onUpdate(t):(this.state.isCreated=!0,this.options.onCreate(t))}}.call(this)}},{key:"destroy",value:function(){return function(){return this.state.isDestroyed=!0,$t(this.modifiers,"applyStyle")&&(this.popper.removeAttribute("x-placement"),this.popper.style.left="",this.popper.style.position="",this.popper.style.top="",this.popper.style[te("transform")]=""),this.disableEventListeners(),this.options.removeOnDestroy&&this.popper.parentNode.removeChild(this.popper),this}.call(this)}},{key:"enableEventListeners",value:function(){return function(){this.state.eventsEnabled||(this.state=ne(this.reference,this.options,this.state,this.scheduleUpdate))}.call(this)}},{key:"disableEventListeners",value:function(){return ie.call(this)}}]),t}();de.Utils=("undefined"!=typeof window?window:global).PopperUtils,de.placements=ae,de.Defaults=ue;var pe,ge,me,_e,ve,Ee,ye,be,Te,Ce,we,Ie,Ae,De,Se,Oe,Ne,ke,Le,Pe,xe,Re,je,He,Me,We,Ue,Fe,Be,Ke,Ve,Qe,Ye,Ge,qe,ze,Xe,Je,Ze,$e,tn,en,nn,rn,on,sn,an,ln,cn,hn,fn,un,dn,pn,gn,mn,_n,vn,En,yn,bn,Tn,Cn,wn,In,An,Dn,Sn,On,Nn,kn,Ln,Pn,xn,Rn,jn,Hn,Mn,Wn,Un,Fn,Bn,Kn,Vn,Qn,Yn,Gn,qn,zn,Xn,Jn,Zn,$n,ti,ei,ni,ii,ri,oi,si,ai,li,ci,hi,fi,ui,di,pi,gi,mi,_i,vi,Ei,yi=(ge="dropdown",_e="."+(me="bs.dropdown"),ve=".data-api",Ee=(pe=e).fn[ge],ye=new RegExp("38|40|27"),be={HIDE:"hide"+_e,HIDDEN:"hidden"+_e,SHOW:"show"+_e,SHOWN:"shown"+_e,CLICK:"click"+_e,CLICK_DATA_API:"click"+_e+ve,KEYDOWN_DATA_API:"keydown"+_e+ve,KEYUP_DATA_API:"keyup"+_e+ve},Te="disabled",Ce="show",we="dropup",Ie="dropright",Ae="dropleft",De="dropdown-menu-right",Se="position-static",Oe='[data-toggle="dropdown"]',Ne=".dropdown form",ke=".dropdown-menu",Le=".navbar-nav",Pe=".dropdown-menu .dropdown-item:not(.disabled)",xe="top-start",Re="top-end",je="bottom-start",He="bottom-end",Me="right-start",We="left-start",Ue={offset:0,flip:!0,boundary:"scrollParent",reference:"toggle",display:"dynamic"},Fe={offset:"(number|string|function)",flip:"boolean",boundary:"(string|element)",reference:"(string|element)",display:"string"},Be=function(){function t(t,e){this._element=t,this._popper=null,this._config=this._getConfig(e),this._menu=this._getMenuElement(),this._inNavbar=this._detectNavbar(),this._addEventListeners()}var e=t.prototype;return e.toggle=function(){if(!this._element.disabled&&!pe(this._element).hasClass(Te)){var e=t._getParentFromElement(this._element),n=pe(this._menu).hasClass(Ce);if(t._clearMenus(),!n){var i={relatedTarget:this._element},r=pe.Event(be.SHOW,i);if(pe(e).trigger(r),!r.isDefaultPrevented()){if(!this._inNavbar){if("undefined"==typeof de)throw new TypeError("Bootstrap dropdown require Popper.js (https://popper.js.org)");var o=this._element;"parent"===this._config.reference?o=e:gt.isElement(this._config.reference)&&(o=this._config.reference,"undefined"!=typeof this._config.reference.jquery&&(o=this._config.reference[0])),"scrollParent"!==this._config.boundary&&pe(e).addClass(Se),this._popper=new de(o,this._menu,this._getPopperConfig())}"ontouchstart"in document.documentElement&&0===pe(e).closest(Le).length&&pe(document.body).children().on("mouseover",null,pe.noop),this._element.focus(),this._element.setAttribute("aria-expanded",!0),pe(this._menu).toggleClass(Ce),pe(e).toggleClass(Ce).trigger(pe.Event(be.SHOWN,i))}}}},e.dispose=function(){pe.removeData(this._element,me),pe(this._element).off(_e),this._element=null,this._menu=null,null!==this._popper&&(this._popper.destroy(),this._popper=null)},e.update=function(){this._inNavbar=this._detectNavbar(),null!==this._popper&&this._popper.scheduleUpdate()},e._addEventListeners=function(){var t=this;pe(this._element).on(be.CLICK,function(e){e.preventDefault(),e.stopPropagation(),t.toggle()})},e._getConfig=function(t){return t=r({},this.constructor.Default,pe(this._element).data(),t),gt.typeCheckConfig(ge,t,this.constructor.DefaultType),t},e._getMenuElement=function(){if(!this._menu){var e=t._getParentFromElement(this._element);this._menu=pe(e).find(ke)[0]}return this._menu},e._getPlacement=function(){var t=pe(this._element).parent(),e=je;return t.hasClass(we)?(e=xe,pe(this._menu).hasClass(De)&&(e=Re)):t.hasClass(Ie)?e=Me:t.hasClass(Ae)?e=We:pe(this._menu).hasClass(De)&&(e=He),e},e._detectNavbar=function(){return pe(this._element).closest(".navbar").length>0},e._getPopperConfig=function(){var t=this,e={};"function"==typeof this._config.offset?e.fn=function(e){return e.offsets=r({},e.offsets,t._config.offset(e.offsets)||{}),e}:e.offset=this._config.offset;var n={placement:this._getPlacement(),modifiers:{offset:e,flip:{enabled:this._config.flip},preventOverflow:{boundariesElement:this._config.boundary}}};return"static"===this._config.display&&(n.modifiers.applyStyle={enabled:!1}),n},t._jQueryInterface=function(e){return this.each(function(){var n=pe(this).data(me);if(n||(n=new t(this,"object"==typeof e?e:null),pe(this).data(me,n)),"string"==typeof e){if("undefined"==typeof n[e])throw new TypeError('No method named "'+e+'"');n[e]()}})},t._clearMenus=function(e){if(!e||3!==e.which&&("keyup"!==e.type||9===e.which))for(var n=pe.makeArray(pe(Oe)),i=0;i0&&o--,40===e.which&&odocument.documentElement.clientHeight;!this._isBodyOverflowing&&t&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),this._isBodyOverflowing&&!t&&(this._element.style.paddingRight=this._scrollbarWidth+"px")},e._resetAdjustments=function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""},e._checkScrollbar=function(){var t=document.body.getBoundingClientRect();this._isBodyOverflowing=t.left+t.right
',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:0,container:!1,fallbackPlacement:"flip",boundary:"scrollParent"},gn="show",mn="out",_n={HIDE:"hide"+ln,HIDDEN:"hidden"+ln,SHOW:"show"+ln,SHOWN:"shown"+ln,INSERTED:"inserted"+ln,CLICK:"click"+ln,FOCUSIN:"focusin"+ln,FOCUSOUT:"focusout"+ln,MOUSEENTER:"mouseenter"+ln,MOUSELEAVE:"mouseleave"+ln},vn="fade",En="show",yn=".tooltip-inner",bn=".arrow",Tn="hover",Cn="focus",wn="click",In="manual",An=function(){function t(t,e){if("undefined"==typeof de)throw new TypeError("Bootstrap tooltips require Popper.js (https://popper.js.org)");this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this.element=t,this.config=this._getConfig(e),this.tip=null,this._setListeners()}var e=t.prototype;return e.enable=function(){this._isEnabled=!0},e.disable=function(){this._isEnabled=!1},e.toggleEnabled=function(){this._isEnabled=!this._isEnabled},e.toggle=function(t){if(this._isEnabled)if(t){var e=this.constructor.DATA_KEY,n=on(t.currentTarget).data(e);n||(n=new this.constructor(t.currentTarget,this._getDelegateConfig()),on(t.currentTarget).data(e,n)),n._activeTrigger.click=!n._activeTrigger.click,n._isWithActiveTrigger()?n._enter(null,n):n._leave(null,n)}else{if(on(this.getTipElement()).hasClass(En))return void this._leave(null,this);this._enter(null,this)}},e.dispose=function(){clearTimeout(this._timeout),on.removeData(this.element,this.constructor.DATA_KEY),on(this.element).off(this.constructor.EVENT_KEY),on(this.element).closest(".modal").off("hide.bs.modal"),this.tip&&on(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,this._activeTrigger=null,null!==this._popper&&this._popper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null},e.show=function(){var e=this;if("none"===on(this.element).css("display"))throw new Error("Please use show on visible elements");var n=on.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){on(this.element).trigger(n);var i=on.contains(this.element.ownerDocument.documentElement,this.element);if(n.isDefaultPrevented()||!i)return;var r=this.getTipElement(),o=gt.getUID(this.constructor.NAME);r.setAttribute("id",o),this.element.setAttribute("aria-describedby",o),this.setContent(),this.config.animation&&on(r).addClass(vn);var s="function"==typeof this.config.placement?this.config.placement.call(this,r,this.element):this.config.placement,a=this._getAttachment(s);this.addAttachmentClass(a);var l=!1===this.config.container?document.body:on(this.config.container);on(r).data(this.constructor.DATA_KEY,this),on.contains(this.element.ownerDocument.documentElement,this.tip)||on(r).appendTo(l),on(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new de(this.element,r,{placement:a,modifiers:{offset:{offset:this.config.offset},flip:{behavior:this.config.fallbackPlacement},arrow:{element:bn},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function(t){t.originalPlacement!==t.placement&&e._handlePopperPlacementChange(t)},onUpdate:function(t){e._handlePopperPlacementChange(t)}}),on(r).addClass(En),"ontouchstart"in document.documentElement&&on(document.body).children().on("mouseover",null,on.noop);var c=function(){e.config.animation&&e._fixTransition();var t=e._hoverState;e._hoverState=null,on(e.element).trigger(e.constructor.Event.SHOWN),t===mn&&e._leave(null,e)};gt.supportsTransitionEnd()&&on(this.tip).hasClass(vn)?on(this.tip).one(gt.TRANSITION_END,c).emulateTransitionEnd(t._TRANSITION_DURATION):c()}},e.hide=function(t){var e=this,n=this.getTipElement(),i=on.Event(this.constructor.Event.HIDE),r=function(){e._hoverState!==gn&&n.parentNode&&n.parentNode.removeChild(n),e._cleanTipClass(),e.element.removeAttribute("aria-describedby"),on(e.element).trigger(e.constructor.Event.HIDDEN),null!==e._popper&&e._popper.destroy(),t&&t()};on(this.element).trigger(i),i.isDefaultPrevented()||(on(n).removeClass(En),"ontouchstart"in document.documentElement&&on(document.body).children().off("mouseover",null,on.noop),this._activeTrigger[wn]=!1,this._activeTrigger[Cn]=!1,this._activeTrigger[Tn]=!1,gt.supportsTransitionEnd()&&on(this.tip).hasClass(vn)?on(n).one(gt.TRANSITION_END,r).emulateTransitionEnd(150):r(),this._hoverState="")},e.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},e.isWithContent=function(){return Boolean(this.getTitle())},e.addAttachmentClass=function(t){on(this.getTipElement()).addClass(hn+"-"+t)},e.getTipElement=function(){return this.tip=this.tip||on(this.config.template)[0],this.tip},e.setContent=function(){var t=on(this.getTipElement());this.setElementContent(t.find(yn),this.getTitle()),t.removeClass(vn+" "+En)},e.setElementContent=function(t,e){var n=this.config.html;"object"==typeof e&&(e.nodeType||e.jquery)?n?on(e).parent().is(t)||t.empty().append(e):t.text(on(e).text()):t[n?"html":"text"](e)},e.getTitle=function(){var t=this.element.getAttribute("data-original-title");return t||(t="function"==typeof this.config.title?this.config.title.call(this.element):this.config.title),t},e._getAttachment=function(t){return dn[t.toUpperCase()]},e._setListeners=function(){var t=this;this.config.trigger.split(" ").forEach(function(e){if("click"===e)on(t.element).on(t.constructor.Event.CLICK,t.config.selector,function(e){return t.toggle(e)});else if(e!==In){var n=e===Tn?t.constructor.Event.MOUSEENTER:t.constructor.Event.FOCUSIN,i=e===Tn?t.constructor.Event.MOUSELEAVE:t.constructor.Event.FOCUSOUT;on(t.element).on(n,t.config.selector,function(e){return t._enter(e)}).on(i,t.config.selector,function(e){return t._leave(e)})}on(t.element).closest(".modal").on("hide.bs.modal",function(){return t.hide()})}),this.config.selector?this.config=r({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},e._fixTitle=function(){var t=typeof this.element.getAttribute("data-original-title");(this.element.getAttribute("title")||"string"!==t)&&(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))},e._enter=function(t,e){var n=this.constructor.DATA_KEY;(e=e||on(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),on(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusin"===t.type?Cn:Tn]=!0),on(e.getTipElement()).hasClass(En)||e._hoverState===gn?e._hoverState=gn:(clearTimeout(e._timeout),e._hoverState=gn,e.config.delay&&e.config.delay.show?e._timeout=setTimeout(function(){e._hoverState===gn&&e.show()},e.config.delay.show):e.show())},e._leave=function(t,e){var n=this.constructor.DATA_KEY;(e=e||on(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),on(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusout"===t.type?Cn:Tn]=!1),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState=mn,e.config.delay&&e.config.delay.hide?e._timeout=setTimeout(function(){e._hoverState===mn&&e.hide()},e.config.delay.hide):e.hide())},e._isWithActiveTrigger=function(){for(var t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1},e._getConfig=function(t){return"number"==typeof(t=r({},this.constructor.Default,on(this.element).data(),t)).delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),gt.typeCheckConfig(sn,t,this.constructor.DefaultType),t},e._getDelegateConfig=function(){var t={};if(this.config)for(var e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t},e._cleanTipClass=function(){var t=on(this.getTipElement()),e=t.attr("class").match(fn);null!==e&&e.length>0&&t.removeClass(e.join(""))},e._handlePopperPlacementChange=function(t){this._cleanTipClass(),this.addAttachmentClass(this._getAttachment(t.placement))},e._fixTransition=function(){var t=this.getTipElement(),e=this.config.animation;null===t.getAttribute("x-placement")&&(on(t).removeClass(vn),this.config.animation=!1,this.hide(),this.show(),this.config.animation=e)},t._jQueryInterface=function(e){return this.each(function(){var n=on(this).data(an),i="object"==typeof e&&e;if((n||!/dispose|hide/.test(e))&&(n||(n=new t(this,i),on(this).data(an,n)),"string"==typeof e)){if("undefined"==typeof n[e])throw new TypeError('No method named "'+e+'"');n[e]()}})},i(t,null,[{key:"VERSION",get:function(){return"4.0.0"}},{key:"Default",get:function(){return pn}},{key:"NAME",get:function(){return sn}},{key:"DATA_KEY",get:function(){return an}},{key:"Event",get:function(){return _n}},{key:"EVENT_KEY",get:function(){return ln}},{key:"DefaultType",get:function(){return un}}]),t}(),on.fn[sn]=An._jQueryInterface,on.fn[sn].Constructor=An,on.fn[sn].noConflict=function(){return on.fn[sn]=cn,An._jQueryInterface},An),Ci=(Sn="popover",Nn="."+(On="bs.popover"),kn=(Dn=e).fn[Sn],Ln="bs-popover",Pn=new RegExp("(^|\\s)"+Ln+"\\S+","g"),xn=r({},Ti.Default,{placement:"right",trigger:"click",content:"",template:''}),Rn=r({},Ti.DefaultType,{content:"(string|element|function)"}),jn="fade",Hn="show",Mn=".popover-header",Wn=".popover-body",Un={HIDE:"hide"+Nn,HIDDEN:"hidden"+Nn,SHOW:"show"+Nn,SHOWN:"shown"+Nn,INSERTED:"inserted"+Nn,CLICK:"click"+Nn,FOCUSIN:"focusin"+Nn,FOCUSOUT:"focusout"+Nn,MOUSEENTER:"mouseenter"+Nn,MOUSELEAVE:"mouseleave"+Nn},Fn=function(t){var e,n;function r(){return t.apply(this,arguments)||this}n=t,(e=r).prototype=Object.create(n.prototype),e.prototype.constructor=e,e.__proto__=n;var o=r.prototype;return o.isWithContent=function(){return this.getTitle()||this._getContent()},o.addAttachmentClass=function(t){Dn(this.getTipElement()).addClass(Ln+"-"+t)},o.getTipElement=function(){return this.tip=this.tip||Dn(this.config.template)[0],this.tip},o.setContent=function(){var t=Dn(this.getTipElement());this.setElementContent(t.find(Mn),this.getTitle());var e=this._getContent();"function"==typeof e&&(e=e.call(this.element)),this.setElementContent(t.find(Wn),e),t.removeClass(jn+" "+Hn)},o._getContent=function(){return this.element.getAttribute("data-content")||this.config.content},o._cleanTipClass=function(){var t=Dn(this.getTipElement()),e=t.attr("class").match(Pn);null!==e&&e.length>0&&t.removeClass(e.join(""))},r._jQueryInterface=function(t){return this.each(function(){var e=Dn(this).data(On),n="object"==typeof t?t:null;if((e||!/destroy|hide/.test(t))&&(e||(e=new r(this,n),Dn(this).data(On,e)),"string"==typeof t)){if("undefined"==typeof e[t])throw new TypeError('No method named "'+t+'"');e[t]()}})},i(r,null,[{key:"VERSION",get:function(){return"4.0.0"}},{key:"Default",get:function(){return xn}},{key:"NAME",get:function(){return Sn}},{key:"DATA_KEY",get:function(){return On}},{key:"Event",get:function(){return Un}},{key:"EVENT_KEY",get:function(){return Nn}},{key:"DefaultType",get:function(){return Rn}}]),r}(Ti),Dn.fn[Sn]=Fn._jQueryInterface,Dn.fn[Sn].Constructor=Fn,Dn.fn[Sn].noConflict=function(){return Dn.fn[Sn]=kn,Fn._jQueryInterface},Fn),wi=(Kn="scrollspy",Qn="."+(Vn="bs.scrollspy"),Yn=(Bn=e).fn[Kn],Gn={offset:10,method:"auto",target:""},qn={offset:"number",method:"string",target:"(string|element)"},zn={ACTIVATE:"activate"+Qn,SCROLL:"scroll"+Qn,LOAD_DATA_API:"load"+Qn+".data-api"},Xn="dropdown-item",Jn="active",Zn={DATA_SPY:'[data-spy="scroll"]',ACTIVE:".active",NAV_LIST_GROUP:".nav, .list-group",NAV_LINKS:".nav-link",NAV_ITEMS:".nav-item",LIST_ITEMS:".list-group-item",DROPDOWN:".dropdown",DROPDOWN_ITEMS:".dropdown-item",DROPDOWN_TOGGLE:".dropdown-toggle"},$n="offset",ti="position",ei=function(){function t(t,e){var n=this;this._element=t,this._scrollElement="BODY"===t.tagName?window:t,this._config=this._getConfig(e),this._selector=this._config.target+" "+Zn.NAV_LINKS+","+this._config.target+" "+Zn.LIST_ITEMS+","+this._config.target+" "+Zn.DROPDOWN_ITEMS,this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,Bn(this._scrollElement).on(zn.SCROLL,function(t){return n._process(t)}),this.refresh(),this._process()}var e=t.prototype;return e.refresh=function(){var t=this,e=this._scrollElement===this._scrollElement.window?$n:ti,n="auto"===this._config.method?e:this._config.method,i=n===ti?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),Bn.makeArray(Bn(this._selector)).map(function(t){var e,r=gt.getSelectorFromElement(t);if(r&&(e=Bn(r)[0]),e){var o=e.getBoundingClientRect();if(o.width||o.height)return[Bn(e)[n]().top+i,r]}return null}).filter(function(t){return t}).sort(function(t,e){return t[0]-e[0]}).forEach(function(e){t._offsets.push(e[0]),t._targets.push(e[1])})},e.dispose=function(){Bn.removeData(this._element,Vn),Bn(this._scrollElement).off(Qn),this._element=null,this._scrollElement=null,this._config=null,this._selector=null,this._offsets=null,this._targets=null,this._activeTarget=null,this._scrollHeight=null},e._getConfig=function(t){if("string"!=typeof(t=r({},Gn,t)).target){var e=Bn(t.target).attr("id");e||(e=gt.getUID(Kn),Bn(t.target).attr("id",e)),t.target="#"+e}return gt.typeCheckConfig(Kn,t,qn),t},e._getScrollTop=function(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop},e._getScrollHeight=function(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)},e._getOffsetHeight=function(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height},e._process=function(){var t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),n=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),t>=n){var i=this._targets[this._targets.length-1];this._activeTarget!==i&&this._activate(i)}else{if(this._activeTarget&&t0)return this._activeTarget=null,void this._clear();for(var r=this._offsets.length;r--;){this._activeTarget!==this._targets[r]&&t>=this._offsets[r]&&("undefined"==typeof this._offsets[r+1]||t=4)throw new Error("Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0")}(e),t.Util=gt,t.Alert=mt,t.Button=_t,t.Carousel=vt,t.Collapse=Et,t.Dropdown=yi,t.Modal=bi,t.Popover=Ci,t.Scrollspy=wi,t.Tab=Ii,t.Tooltip=Ti,Object.defineProperty(t,"__esModule",{value:!0})}); +//# sourceMappingURL=bootstrap.bundle.min.js.map \ No newline at end of file diff --git a/static/assets/js/vendors/bootstrap.bundle.min.js.map b/static/assets/js/vendors/bootstrap.bundle.min.js.map new file mode 100644 index 00000000..ad12222c --- /dev/null +++ b/static/assets/js/vendors/bootstrap.bundle.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../js/src/util.js","../../js/src/alert.js","../../js/src/button.js","../../js/src/carousel.js","../../js/src/collapse.js","../../node_modules/popper.js/dist/esm/popper.js","../../js/src/dropdown.js","../../js/src/modal.js","../../js/src/tools/sanitizer.js","../../js/src/tooltip.js","../../js/src/popover.js","../../js/src/scrollspy.js","../../js/src/tab.js","../../js/src/toast.js","../../js/src/index.js"],"names":["TRANSITION_END","transitionEndEmulator","duration","_this","this","called","$","one","Util","setTimeout","triggerTransitionEnd","getUID","prefix","Math","random","document","getElementById","getSelectorFromElement","element","selector","getAttribute","hrefAttr","trim","querySelector","err","getTransitionDurationFromElement","transitionDuration","css","transitionDelay","floatTransitionDuration","parseFloat","floatTransitionDelay","split","reflow","offsetHeight","trigger","supportsTransitionEnd","Boolean","isElement","obj","nodeType","typeCheckConfig","componentName","config","configTypes","property","Object","prototype","hasOwnProperty","call","expectedTypes","value","valueType","toString","match","toLowerCase","RegExp","test","Error","toUpperCase","findShadowRoot","documentElement","attachShadow","getRootNode","ShadowRoot","parentNode","root","fn","emulateTransitionEnd","event","special","bindType","delegateType","handle","target","is","handleObj","handler","apply","arguments","NAME","DATA_KEY","EVENT_KEY","JQUERY_NO_CONFLICT","Event","CLOSE","CLOSED","CLICK_DATA_API","ClassName","Alert","_element","close","rootElement","_getRootElement","_triggerCloseEvent","isDefaultPrevented","_removeElement","dispose","removeData","parent","closest","closeEvent","removeClass","hasClass","_destroyElement","detach","remove","_jQueryInterface","each","$element","data","_handleDismiss","alertInstance","preventDefault","on","Constructor","noConflict","DATA_API_KEY","Selector","FOCUS_BLUR_DATA_API","Button","toggle","triggerChangeEvent","addAriaPressed","input","type","checked","classList","contains","activeElement","hasAttribute","focus","setAttribute","toggleClass","button","Default","interval","keyboard","slide","pause","wrap","touch","DefaultType","Direction","SLIDE","SLID","KEYDOWN","MOUSEENTER","MOUSELEAVE","TOUCHSTART","TOUCHMOVE","TOUCHEND","POINTERDOWN","POINTERUP","DRAG_START","LOAD_DATA_API","PointerType","TOUCH","PEN","Carousel","_items","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","touchStartX","touchDeltaX","_config","_getConfig","_indicatorsElement","_touchSupported","navigator","maxTouchPoints","_pointerEvent","window","PointerEvent","MSPointerEvent","_addEventListeners","next","_slide","nextWhenVisible","hidden","prev","cycle","clearInterval","setInterval","visibilityState","bind","to","index","activeIndex","_getItemIndex","length","direction","off","_objectSpread","_handleSwipe","absDeltax","abs","_this2","_keydown","_addTouchEventListeners","_this3","start","originalEvent","pointerType","clientX","touches","end","clearTimeout","querySelectorAll","e","add","tagName","which","slice","indexOf","_getItemByDirection","isNextDirection","isPrevDirection","lastItemIndex","itemIndex","_triggerSlideEvent","relatedTarget","eventDirectionName","targetIndex","fromIndex","slideEvent","from","_setActiveIndicatorElement","indicators","nextIndicator","children","addClass","directionalClassName","orderClassName","_this4","activeElementIndex","nextElement","nextElementIndex","isCycling","slidEvent","nextElementInterval","parseInt","defaultInterval","action","TypeError","ride","_dataApiClickHandler","slideIndex","carousels","i","len","$carousel","SHOW","SHOWN","HIDE","HIDDEN","Dimension","Collapse","_isTransitioning","_triggerArray","id","toggleList","elem","filterElement","filter","foundElem","_selector","push","_parent","_getParent","_addAriaAndCollapsedClass","hide","show","actives","activesData","not","startEvent","dimension","_getDimension","style","attr","setTransitioning","scrollSize","getBoundingClientRect","triggerArrayLength","isTransitioning","jquery","_getTargetFromElement","triggerArray","isOpen","$this","currentTarget","$trigger","selectors","$target","isBrowser","longerTimeoutBrowsers","timeoutDuration","userAgent","debounce","Promise","resolve","then","scheduled","isFunction","functionToCheck","getStyleComputedProperty","ownerDocument","defaultView","getComputedStyle","getParentNode","nodeName","host","getScrollParent","body","_getStyleComputedProp","overflow","overflowX","overflowY","isIE11","MSInputMethodContext","documentMode","isIE10","isIE","version","getOffsetParent","noOffsetParent","offsetParent","nextElementSibling","getRoot","node","findCommonOffsetParent","element1","element2","order","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","range","createRange","setStart","setEnd","commonAncestorContainer","firstElementChild","element1root","getScroll","upperSide","undefined","html","scrollingElement","getBordersSize","styles","axis","sideA","sideB","getSize","computedStyle","max","getWindowSizes","height","width","createClass","defineProperties","props","descriptor","enumerable","configurable","writable","defineProperty","key","protoProps","staticProps","_extends","assign","source","getClientRect","offsets","right","left","bottom","top","rect","scrollTop","scrollLeft","result","sizes","clientWidth","clientHeight","horizScrollbar","offsetWidth","vertScrollbar","getOffsetRectRelativeToArbitraryNode","fixedPosition","isHTML","childrenRect","parentRect","scrollParent","borderTopWidth","borderLeftWidth","marginTop","marginLeft","subtract","modifier","includeScroll","getFixedPositionOffsetParent","parentElement","el","getBoundaries","popper","reference","padding","boundariesElement","boundaries","excludeScroll","relativeOffset","innerWidth","innerHeight","getViewportOffsetRectRelativeToArtbitraryNode","boundariesNode","isFixed","_getWindowSizes","isPaddingNumber","computeAutoPlacement","placement","refRect","rects","sortedAreas","keys","map","area","_ref","sort","a","b","filteredAreas","_ref2","computedPlacement","variation","getReferenceOffsets","state","getOuterSizes","x","marginBottom","y","marginRight","getOppositePlacement","hash","replace","matched","getPopperOffsets","referenceOffsets","popperRect","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","find","arr","check","Array","runModifiers","modifiers","ends","prop","findIndex","cur","forEach","console","warn","enabled","isModifierEnabled","modifierName","some","name","getSupportedPropertyName","prefixes","upperProp","charAt","toCheck","getWindow","setupEventListeners","options","updateBound","addEventListener","passive","scrollElement","attachToScrollParents","callback","scrollParents","isBody","eventsEnabled","disableEventListeners","cancelAnimationFrame","scheduleUpdate","removeEventListener","isNumeric","n","isNaN","isFinite","setStyles","unit","isFirefox","isModifierRequired","requestingName","requestedName","requesting","isRequired","_requesting","requested","placements","validPlacements","clockwise","counter","concat","reverse","BEHAVIORS","parseOffset","offset","basePlacement","useHeight","fragments","frag","divider","search","splitRegex","ops","op","mergeWithPrevious","reduce","str","toValue","index2","Defaults","positionFixed","removeOnDestroy","onCreate","onUpdate","shift","shiftvariation","_data$offsets","isVertical","side","shiftOffsets","preventOverflow","instance","transformProp","popperStyles","transform","priority","primary","escapeWithReference","secondary","min","keepTogether","floor","opSide","arrow","_data$offsets$arrow","arrowElement","sideCapitalized","altSide","arrowElementSize","center","popperMarginSide","popperBorderSide","sideValue","round","flip","flipped","originalPlacement","placementOpposite","flipOrder","behavior","step","refOffsets","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariation","flipVariations","inner","subtractLength","bound","attributes","computeStyle","legacyGpuAccelerationOption","gpuAcceleration","shouldRound","noRound","referenceWidth","popperWidth","isVariation","horizontalToInteger","verticalToInteger","offsetParentRect","position","devicePixelRatio","v","prefixedProperty","willChange","invertTop","invertLeft","x-placement","arrowStyles","applyStyle","removeAttribute","onLoad","modifierOptions","Popper","classCallCheck","requestAnimationFrame","update","isDestroyed","isCreated","enableEventListeners","removeChild","Utils","global","PopperUtils","REGEXP_KEYDOWN","ARROW_UP_KEYCODE","CLICK","KEYDOWN_DATA_API","KEYUP_DATA_API","AttachmentMap","boundary","display","Dropdown","_popper","_menu","_getMenuElement","_inNavbar","_detectNavbar","disabled","_getParentFromElement","isActive","_clearMenus","showEvent","referenceElement","_getPopperConfig","noop","hideEvent","destroy","stopPropagation","constructor","_getPlacement","$parentDropdown","_getOffset","popperConfig","toggles","context","clickEvent","dropdownMenu","_dataApiKeydownHandler","items","backdrop","FOCUSIN","RESIZE","CLICK_DISMISS","KEYDOWN_DISMISS","MOUSEUP_DISMISS","MOUSEDOWN_DISMISS","Modal","_dialog","_backdrop","_isShown","_isBodyOverflowing","_ignoreBackdropClick","_scrollbarWidth","_checkScrollbar","_setScrollbar","_adjustDialog","_setEscapeEvent","_setResizeEvent","_showBackdrop","_showElement","transition","_hideModal","htmlElement","handleUpdate","ELEMENT_NODE","appendChild","_enforceFocus","shownEvent","transitionComplete","has","_this5","_this6","_this7","_resetAdjustments","_resetScrollbar","_removeBackdrop","_this8","animate","createElement","className","appendTo","backdropTransitionDuration","callbackRemove","isModalOverflowing","scrollHeight","paddingLeft","paddingRight","_getScrollbarWidth","_this9","fixedContent","stickyContent","actualPadding","calculatedPadding","actualMargin","calculatedMargin","elements","margin","scrollDiv","scrollbarWidth","_this10","uriAttrs","DefaultWhitelist","*","br","col","code","div","em","hr","h1","h2","h3","h4","h5","h6","img","li","ol","p","pre","s","small","span","sub","sup","strong","u","ul","SAFE_URL_PATTERN","DATA_URL_PATTERN","sanitizeHtml","unsafeHtml","whiteList","sanitizeFn","createdDocument","DOMParser","parseFromString","whitelistKeys","_loop","elName","attributeList","whitelistedAttributes","allowedAttributeList","attrName","nodeValue","regExp","attrRegex","l","allowedAttribute","innerHTML","CLASS_PREFIX","BSCLS_PREFIX_REGEX","DISALLOWED_ATTRIBUTES","animation","template","title","delay","container","fallbackPlacement","sanitize","AUTO","TOP","RIGHT","BOTTOM","LEFT","HoverState","INSERTED","FOCUSOUT","Trigger","Tooltip","_isEnabled","_timeout","_hoverState","_activeTrigger","tip","_setListeners","enable","disable","toggleEnabled","dataKey","_getDelegateConfig","click","_isWithActiveTrigger","_enter","_leave","getTipElement","isWithContent","shadowRoot","isInTheDom","tipId","setContent","attachment","_getAttachment","addAttachmentClass","_getContainer","_handlePopperPlacementChange","complete","_fixTransition","prevHoverState","_cleanTipClass","getTitle","setElementContent","content","text","empty","append","eventIn","eventOut","_fixTitle","titleType","dataAttributes","dataAttr","$tip","tabClass","join","popperData","popperInstance","initConfigAnimation","Popover","_getContent","method","ACTIVATE","SCROLL","OffsetMethod","ScrollSpy","_scrollElement","_offsets","_targets","_activeTarget","_scrollHeight","_process","refresh","autoMethod","offsetMethod","offsetBase","_getScrollTop","_getScrollHeight","targetSelector","targetBCR","item","pageYOffset","_getOffsetHeight","maxScroll","_activate","_clear","queries","$link","parents","scrollSpys","$spy","Tab","previous","listElement","itemSelector","makeArray","hiddenEvent","active","_transitionComplete","dropdownChild","dropdownElement","dropdownToggleList","autohide","Toast","withoutTimeout","_close"],"mappings":"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","sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): util.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\n\n/**\n * ------------------------------------------------------------------------\n * Private TransitionEnd Helpers\n * ------------------------------------------------------------------------\n */\n\nconst TRANSITION_END = 'transitionend'\nconst MAX_UID = 1000000\nconst MILLISECONDS_MULTIPLIER = 1000\n\n// Shoutout AngusCroll (https://goo.gl/pxwQGp)\nfunction toType(obj) {\n return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\nfunction getSpecialTransitionEndEvent() {\n return {\n bindType: TRANSITION_END,\n delegateType: TRANSITION_END,\n handle(event) {\n if ($(event.target).is(this)) {\n return event.handleObj.handler.apply(this, arguments) // eslint-disable-line prefer-rest-params\n }\n return undefined // eslint-disable-line no-undefined\n }\n }\n}\n\nfunction transitionEndEmulator(duration) {\n let called = false\n\n $(this).one(Util.TRANSITION_END, () => {\n called = true\n })\n\n setTimeout(() => {\n if (!called) {\n Util.triggerTransitionEnd(this)\n }\n }, duration)\n\n return this\n}\n\nfunction setTransitionEndSupport() {\n $.fn.emulateTransitionEnd = transitionEndEmulator\n $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent()\n}\n\n/**\n * --------------------------------------------------------------------------\n * Public Util Api\n * --------------------------------------------------------------------------\n */\n\nconst Util = {\n\n TRANSITION_END: 'bsTransitionEnd',\n\n getUID(prefix) {\n do {\n // eslint-disable-next-line no-bitwise\n prefix += ~~(Math.random() * MAX_UID) // \"~~\" acts like a faster Math.floor() here\n } while (document.getElementById(prefix))\n return prefix\n },\n\n getSelectorFromElement(element) {\n let selector = element.getAttribute('data-target')\n\n if (!selector || selector === '#') {\n const hrefAttr = element.getAttribute('href')\n selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : ''\n }\n\n try {\n return document.querySelector(selector) ? selector : null\n } catch (err) {\n return null\n }\n },\n\n getTransitionDurationFromElement(element) {\n if (!element) {\n return 0\n }\n\n // Get transition-duration of the element\n let transitionDuration = $(element).css('transition-duration')\n let transitionDelay = $(element).css('transition-delay')\n\n const floatTransitionDuration = parseFloat(transitionDuration)\n const floatTransitionDelay = parseFloat(transitionDelay)\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0]\n transitionDelay = transitionDelay.split(',')[0]\n\n return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n },\n\n reflow(element) {\n return element.offsetHeight\n },\n\n triggerTransitionEnd(element) {\n $(element).trigger(TRANSITION_END)\n },\n\n // TODO: Remove in v5\n supportsTransitionEnd() {\n return Boolean(TRANSITION_END)\n },\n\n isElement(obj) {\n return (obj[0] || obj).nodeType\n },\n\n typeCheckConfig(componentName, config, configTypes) {\n for (const property in configTypes) {\n if (Object.prototype.hasOwnProperty.call(configTypes, property)) {\n const expectedTypes = configTypes[property]\n const value = config[property]\n const valueType = value && Util.isElement(value)\n ? 'element' : toType(value)\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new Error(\n `${componentName.toUpperCase()}: ` +\n `Option \"${property}\" provided type \"${valueType}\" ` +\n `but expected type \"${expectedTypes}\".`)\n }\n }\n }\n },\n\n findShadowRoot(element) {\n if (!document.documentElement.attachShadow) {\n return null\n }\n\n // Can find the shadow root otherwise it'll return the document\n if (typeof element.getRootNode === 'function') {\n const root = element.getRootNode()\n return root instanceof ShadowRoot ? root : null\n }\n\n if (element instanceof ShadowRoot) {\n return element\n }\n\n // when we don't find a shadow root\n if (!element.parentNode) {\n return null\n }\n\n return Util.findShadowRoot(element.parentNode)\n }\n}\n\nsetTransitionEndSupport()\n\nexport default Util\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'alert'\nconst VERSION = '4.3.1'\nconst DATA_KEY = 'bs.alert'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst Selector = {\n DISMISS : '[data-dismiss=\"alert\"]'\n}\n\nconst Event = {\n CLOSE : `close${EVENT_KEY}`,\n CLOSED : `closed${EVENT_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n}\n\nconst ClassName = {\n ALERT : 'alert',\n FADE : 'fade',\n SHOW : 'show'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Alert {\n constructor(element) {\n this._element = element\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n // Public\n\n close(element) {\n let rootElement = this._element\n if (element) {\n rootElement = this._getRootElement(element)\n }\n\n const customEvent = this._triggerCloseEvent(rootElement)\n\n if (customEvent.isDefaultPrevented()) {\n return\n }\n\n this._removeElement(rootElement)\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n this._element = null\n }\n\n // Private\n\n _getRootElement(element) {\n const selector = Util.getSelectorFromElement(element)\n let parent = false\n\n if (selector) {\n parent = document.querySelector(selector)\n }\n\n if (!parent) {\n parent = $(element).closest(`.${ClassName.ALERT}`)[0]\n }\n\n return parent\n }\n\n _triggerCloseEvent(element) {\n const closeEvent = $.Event(Event.CLOSE)\n\n $(element).trigger(closeEvent)\n return closeEvent\n }\n\n _removeElement(element) {\n $(element).removeClass(ClassName.SHOW)\n\n if (!$(element).hasClass(ClassName.FADE)) {\n this._destroyElement(element)\n return\n }\n\n const transitionDuration = Util.getTransitionDurationFromElement(element)\n\n $(element)\n .one(Util.TRANSITION_END, (event) => this._destroyElement(element, event))\n .emulateTransitionEnd(transitionDuration)\n }\n\n _destroyElement(element) {\n $(element)\n .detach()\n .trigger(Event.CLOSED)\n .remove()\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n const $element = $(this)\n let data = $element.data(DATA_KEY)\n\n if (!data) {\n data = new Alert(this)\n $element.data(DATA_KEY, data)\n }\n\n if (config === 'close') {\n data[config](this)\n }\n })\n }\n\n static _handleDismiss(alertInstance) {\n return function (event) {\n if (event) {\n event.preventDefault()\n }\n\n alertInstance.close(this)\n }\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document).on(\n Event.CLICK_DATA_API,\n Selector.DISMISS,\n Alert._handleDismiss(new Alert())\n)\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Alert._jQueryInterface\n$.fn[NAME].Constructor = Alert\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Alert._jQueryInterface\n}\n\nexport default Alert\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'button'\nconst VERSION = '4.3.1'\nconst DATA_KEY = 'bs.button'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst ClassName = {\n ACTIVE : 'active',\n BUTTON : 'btn',\n FOCUS : 'focus'\n}\n\nconst Selector = {\n DATA_TOGGLE_CARROT : '[data-toggle^=\"button\"]',\n DATA_TOGGLE : '[data-toggle=\"buttons\"]',\n INPUT : 'input:not([type=\"hidden\"])',\n ACTIVE : '.active',\n BUTTON : '.btn'\n}\n\nconst Event = {\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`,\n FOCUS_BLUR_DATA_API : `focus${EVENT_KEY}${DATA_API_KEY} ` +\n `blur${EVENT_KEY}${DATA_API_KEY}`\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Button {\n constructor(element) {\n this._element = element\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n // Public\n\n toggle() {\n let triggerChangeEvent = true\n let addAriaPressed = true\n const rootElement = $(this._element).closest(\n Selector.DATA_TOGGLE\n )[0]\n\n if (rootElement) {\n const input = this._element.querySelector(Selector.INPUT)\n\n if (input) {\n if (input.type === 'radio') {\n if (input.checked &&\n this._element.classList.contains(ClassName.ACTIVE)) {\n triggerChangeEvent = false\n } else {\n const activeElement = rootElement.querySelector(Selector.ACTIVE)\n\n if (activeElement) {\n $(activeElement).removeClass(ClassName.ACTIVE)\n }\n }\n }\n\n if (triggerChangeEvent) {\n if (input.hasAttribute('disabled') ||\n rootElement.hasAttribute('disabled') ||\n input.classList.contains('disabled') ||\n rootElement.classList.contains('disabled')) {\n return\n }\n input.checked = !this._element.classList.contains(ClassName.ACTIVE)\n $(input).trigger('change')\n }\n\n input.focus()\n addAriaPressed = false\n }\n }\n\n if (addAriaPressed) {\n this._element.setAttribute('aria-pressed',\n !this._element.classList.contains(ClassName.ACTIVE))\n }\n\n if (triggerChangeEvent) {\n $(this._element).toggleClass(ClassName.ACTIVE)\n }\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n this._element = null\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n\n if (!data) {\n data = new Button(this)\n $(this).data(DATA_KEY, data)\n }\n\n if (config === 'toggle') {\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document)\n .on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE_CARROT, (event) => {\n event.preventDefault()\n\n let button = event.target\n\n if (!$(button).hasClass(ClassName.BUTTON)) {\n button = $(button).closest(Selector.BUTTON)\n }\n\n Button._jQueryInterface.call($(button), 'toggle')\n })\n .on(Event.FOCUS_BLUR_DATA_API, Selector.DATA_TOGGLE_CARROT, (event) => {\n const button = $(event.target).closest(Selector.BUTTON)[0]\n $(button).toggleClass(ClassName.FOCUS, /^focus(in)?$/.test(event.type))\n })\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Button._jQueryInterface\n$.fn[NAME].Constructor = Button\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Button._jQueryInterface\n}\n\nexport default Button\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'carousel'\nconst VERSION = '4.3.1'\nconst DATA_KEY = 'bs.carousel'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst ARROW_LEFT_KEYCODE = 37 // KeyboardEvent.which value for left arrow key\nconst ARROW_RIGHT_KEYCODE = 39 // KeyboardEvent.which value for right arrow key\nconst TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fire after touch\nconst SWIPE_THRESHOLD = 40\n\nconst Default = {\n interval : 5000,\n keyboard : true,\n slide : false,\n pause : 'hover',\n wrap : true,\n touch : true\n}\n\nconst DefaultType = {\n interval : '(number|boolean)',\n keyboard : 'boolean',\n slide : '(boolean|string)',\n pause : '(string|boolean)',\n wrap : 'boolean',\n touch : 'boolean'\n}\n\nconst Direction = {\n NEXT : 'next',\n PREV : 'prev',\n LEFT : 'left',\n RIGHT : 'right'\n}\n\nconst Event = {\n SLIDE : `slide${EVENT_KEY}`,\n SLID : `slid${EVENT_KEY}`,\n KEYDOWN : `keydown${EVENT_KEY}`,\n MOUSEENTER : `mouseenter${EVENT_KEY}`,\n MOUSELEAVE : `mouseleave${EVENT_KEY}`,\n TOUCHSTART : `touchstart${EVENT_KEY}`,\n TOUCHMOVE : `touchmove${EVENT_KEY}`,\n TOUCHEND : `touchend${EVENT_KEY}`,\n POINTERDOWN : `pointerdown${EVENT_KEY}`,\n POINTERUP : `pointerup${EVENT_KEY}`,\n DRAG_START : `dragstart${EVENT_KEY}`,\n LOAD_DATA_API : `load${EVENT_KEY}${DATA_API_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n}\n\nconst ClassName = {\n CAROUSEL : 'carousel',\n ACTIVE : 'active',\n SLIDE : 'slide',\n RIGHT : 'carousel-item-right',\n LEFT : 'carousel-item-left',\n NEXT : 'carousel-item-next',\n PREV : 'carousel-item-prev',\n ITEM : 'carousel-item',\n POINTER_EVENT : 'pointer-event'\n}\n\nconst Selector = {\n ACTIVE : '.active',\n ACTIVE_ITEM : '.active.carousel-item',\n ITEM : '.carousel-item',\n ITEM_IMG : '.carousel-item img',\n NEXT_PREV : '.carousel-item-next, .carousel-item-prev',\n INDICATORS : '.carousel-indicators',\n DATA_SLIDE : '[data-slide], [data-slide-to]',\n DATA_RIDE : '[data-ride=\"carousel\"]'\n}\n\nconst PointerType = {\n TOUCH : 'touch',\n PEN : 'pen'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\nclass Carousel {\n constructor(element, config) {\n this._items = null\n this._interval = null\n this._activeElement = null\n this._isPaused = false\n this._isSliding = false\n this.touchTimeout = null\n this.touchStartX = 0\n this.touchDeltaX = 0\n\n this._config = this._getConfig(config)\n this._element = element\n this._indicatorsElement = this._element.querySelector(Selector.INDICATORS)\n this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0\n this._pointerEvent = Boolean(window.PointerEvent || window.MSPointerEvent)\n\n this._addEventListeners()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n next() {\n if (!this._isSliding) {\n this._slide(Direction.NEXT)\n }\n }\n\n nextWhenVisible() {\n // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n if (!document.hidden &&\n ($(this._element).is(':visible') && $(this._element).css('visibility') !== 'hidden')) {\n this.next()\n }\n }\n\n prev() {\n if (!this._isSliding) {\n this._slide(Direction.PREV)\n }\n }\n\n pause(event) {\n if (!event) {\n this._isPaused = true\n }\n\n if (this._element.querySelector(Selector.NEXT_PREV)) {\n Util.triggerTransitionEnd(this._element)\n this.cycle(true)\n }\n\n clearInterval(this._interval)\n this._interval = null\n }\n\n cycle(event) {\n if (!event) {\n this._isPaused = false\n }\n\n if (this._interval) {\n clearInterval(this._interval)\n this._interval = null\n }\n\n if (this._config.interval && !this._isPaused) {\n this._interval = setInterval(\n (document.visibilityState ? this.nextWhenVisible : this.next).bind(this),\n this._config.interval\n )\n }\n }\n\n to(index) {\n this._activeElement = this._element.querySelector(Selector.ACTIVE_ITEM)\n\n const activeIndex = this._getItemIndex(this._activeElement)\n\n if (index > this._items.length - 1 || index < 0) {\n return\n }\n\n if (this._isSliding) {\n $(this._element).one(Event.SLID, () => this.to(index))\n return\n }\n\n if (activeIndex === index) {\n this.pause()\n this.cycle()\n return\n }\n\n const direction = index > activeIndex\n ? Direction.NEXT\n : Direction.PREV\n\n this._slide(direction, this._items[index])\n }\n\n dispose() {\n $(this._element).off(EVENT_KEY)\n $.removeData(this._element, DATA_KEY)\n\n this._items = null\n this._config = null\n this._element = null\n this._interval = null\n this._isPaused = null\n this._isSliding = null\n this._activeElement = null\n this._indicatorsElement = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n Util.typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _handleSwipe() {\n const absDeltax = Math.abs(this.touchDeltaX)\n\n if (absDeltax <= SWIPE_THRESHOLD) {\n return\n }\n\n const direction = absDeltax / this.touchDeltaX\n\n // swipe left\n if (direction > 0) {\n this.prev()\n }\n\n // swipe right\n if (direction < 0) {\n this.next()\n }\n }\n\n _addEventListeners() {\n if (this._config.keyboard) {\n $(this._element)\n .on(Event.KEYDOWN, (event) => this._keydown(event))\n }\n\n if (this._config.pause === 'hover') {\n $(this._element)\n .on(Event.MOUSEENTER, (event) => this.pause(event))\n .on(Event.MOUSELEAVE, (event) => this.cycle(event))\n }\n\n if (this._config.touch) {\n this._addTouchEventListeners()\n }\n }\n\n _addTouchEventListeners() {\n if (!this._touchSupported) {\n return\n }\n\n const start = (event) => {\n if (this._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n this.touchStartX = event.originalEvent.clientX\n } else if (!this._pointerEvent) {\n this.touchStartX = event.originalEvent.touches[0].clientX\n }\n }\n\n const move = (event) => {\n // ensure swiping with one touch and not pinching\n if (event.originalEvent.touches && event.originalEvent.touches.length > 1) {\n this.touchDeltaX = 0\n } else {\n this.touchDeltaX = event.originalEvent.touches[0].clientX - this.touchStartX\n }\n }\n\n const end = (event) => {\n if (this._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n this.touchDeltaX = event.originalEvent.clientX - this.touchStartX\n }\n\n this._handleSwipe()\n if (this._config.pause === 'hover') {\n // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n\n this.pause()\n if (this.touchTimeout) {\n clearTimeout(this.touchTimeout)\n }\n this.touchTimeout = setTimeout((event) => this.cycle(event), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n }\n }\n\n $(this._element.querySelectorAll(Selector.ITEM_IMG)).on(Event.DRAG_START, (e) => e.preventDefault())\n if (this._pointerEvent) {\n $(this._element).on(Event.POINTERDOWN, (event) => start(event))\n $(this._element).on(Event.POINTERUP, (event) => end(event))\n\n this._element.classList.add(ClassName.POINTER_EVENT)\n } else {\n $(this._element).on(Event.TOUCHSTART, (event) => start(event))\n $(this._element).on(Event.TOUCHMOVE, (event) => move(event))\n $(this._element).on(Event.TOUCHEND, (event) => end(event))\n }\n }\n\n _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return\n }\n\n switch (event.which) {\n case ARROW_LEFT_KEYCODE:\n event.preventDefault()\n this.prev()\n break\n case ARROW_RIGHT_KEYCODE:\n event.preventDefault()\n this.next()\n break\n default:\n }\n }\n\n _getItemIndex(element) {\n this._items = element && element.parentNode\n ? [].slice.call(element.parentNode.querySelectorAll(Selector.ITEM))\n : []\n return this._items.indexOf(element)\n }\n\n _getItemByDirection(direction, activeElement) {\n const isNextDirection = direction === Direction.NEXT\n const isPrevDirection = direction === Direction.PREV\n const activeIndex = this._getItemIndex(activeElement)\n const lastItemIndex = this._items.length - 1\n const isGoingToWrap = isPrevDirection && activeIndex === 0 ||\n isNextDirection && activeIndex === lastItemIndex\n\n if (isGoingToWrap && !this._config.wrap) {\n return activeElement\n }\n\n const delta = direction === Direction.PREV ? -1 : 1\n const itemIndex = (activeIndex + delta) % this._items.length\n\n return itemIndex === -1\n ? this._items[this._items.length - 1] : this._items[itemIndex]\n }\n\n _triggerSlideEvent(relatedTarget, eventDirectionName) {\n const targetIndex = this._getItemIndex(relatedTarget)\n const fromIndex = this._getItemIndex(this._element.querySelector(Selector.ACTIVE_ITEM))\n const slideEvent = $.Event(Event.SLIDE, {\n relatedTarget,\n direction: eventDirectionName,\n from: fromIndex,\n to: targetIndex\n })\n\n $(this._element).trigger(slideEvent)\n\n return slideEvent\n }\n\n _setActiveIndicatorElement(element) {\n if (this._indicatorsElement) {\n const indicators = [].slice.call(this._indicatorsElement.querySelectorAll(Selector.ACTIVE))\n $(indicators)\n .removeClass(ClassName.ACTIVE)\n\n const nextIndicator = this._indicatorsElement.children[\n this._getItemIndex(element)\n ]\n\n if (nextIndicator) {\n $(nextIndicator).addClass(ClassName.ACTIVE)\n }\n }\n }\n\n _slide(direction, element) {\n const activeElement = this._element.querySelector(Selector.ACTIVE_ITEM)\n const activeElementIndex = this._getItemIndex(activeElement)\n const nextElement = element || activeElement &&\n this._getItemByDirection(direction, activeElement)\n const nextElementIndex = this._getItemIndex(nextElement)\n const isCycling = Boolean(this._interval)\n\n let directionalClassName\n let orderClassName\n let eventDirectionName\n\n if (direction === Direction.NEXT) {\n directionalClassName = ClassName.LEFT\n orderClassName = ClassName.NEXT\n eventDirectionName = Direction.LEFT\n } else {\n directionalClassName = ClassName.RIGHT\n orderClassName = ClassName.PREV\n eventDirectionName = Direction.RIGHT\n }\n\n if (nextElement && $(nextElement).hasClass(ClassName.ACTIVE)) {\n this._isSliding = false\n return\n }\n\n const slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName)\n if (slideEvent.isDefaultPrevented()) {\n return\n }\n\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n return\n }\n\n this._isSliding = true\n\n if (isCycling) {\n this.pause()\n }\n\n this._setActiveIndicatorElement(nextElement)\n\n const slidEvent = $.Event(Event.SLID, {\n relatedTarget: nextElement,\n direction: eventDirectionName,\n from: activeElementIndex,\n to: nextElementIndex\n })\n\n if ($(this._element).hasClass(ClassName.SLIDE)) {\n $(nextElement).addClass(orderClassName)\n\n Util.reflow(nextElement)\n\n $(activeElement).addClass(directionalClassName)\n $(nextElement).addClass(directionalClassName)\n\n const nextElementInterval = parseInt(nextElement.getAttribute('data-interval'), 10)\n if (nextElementInterval) {\n this._config.defaultInterval = this._config.defaultInterval || this._config.interval\n this._config.interval = nextElementInterval\n } else {\n this._config.interval = this._config.defaultInterval || this._config.interval\n }\n\n const transitionDuration = Util.getTransitionDurationFromElement(activeElement)\n\n $(activeElement)\n .one(Util.TRANSITION_END, () => {\n $(nextElement)\n .removeClass(`${directionalClassName} ${orderClassName}`)\n .addClass(ClassName.ACTIVE)\n\n $(activeElement).removeClass(`${ClassName.ACTIVE} ${orderClassName} ${directionalClassName}`)\n\n this._isSliding = false\n\n setTimeout(() => $(this._element).trigger(slidEvent), 0)\n })\n .emulateTransitionEnd(transitionDuration)\n } else {\n $(activeElement).removeClass(ClassName.ACTIVE)\n $(nextElement).addClass(ClassName.ACTIVE)\n\n this._isSliding = false\n $(this._element).trigger(slidEvent)\n }\n\n if (isCycling) {\n this.cycle()\n }\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n let _config = {\n ...Default,\n ...$(this).data()\n }\n\n if (typeof config === 'object') {\n _config = {\n ..._config,\n ...config\n }\n }\n\n const action = typeof config === 'string' ? config : _config.slide\n\n if (!data) {\n data = new Carousel(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'number') {\n data.to(config)\n } else if (typeof action === 'string') {\n if (typeof data[action] === 'undefined') {\n throw new TypeError(`No method named \"${action}\"`)\n }\n data[action]()\n } else if (_config.interval && _config.ride) {\n data.pause()\n data.cycle()\n }\n })\n }\n\n static _dataApiClickHandler(event) {\n const selector = Util.getSelectorFromElement(this)\n\n if (!selector) {\n return\n }\n\n const target = $(selector)[0]\n\n if (!target || !$(target).hasClass(ClassName.CAROUSEL)) {\n return\n }\n\n const config = {\n ...$(target).data(),\n ...$(this).data()\n }\n const slideIndex = this.getAttribute('data-slide-to')\n\n if (slideIndex) {\n config.interval = false\n }\n\n Carousel._jQueryInterface.call($(target), config)\n\n if (slideIndex) {\n $(target).data(DATA_KEY).to(slideIndex)\n }\n\n event.preventDefault()\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document)\n .on(Event.CLICK_DATA_API, Selector.DATA_SLIDE, Carousel._dataApiClickHandler)\n\n$(window).on(Event.LOAD_DATA_API, () => {\n const carousels = [].slice.call(document.querySelectorAll(Selector.DATA_RIDE))\n for (let i = 0, len = carousels.length; i < len; i++) {\n const $carousel = $(carousels[i])\n Carousel._jQueryInterface.call($carousel, $carousel.data())\n }\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Carousel._jQueryInterface\n$.fn[NAME].Constructor = Carousel\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Carousel._jQueryInterface\n}\n\nexport default Carousel\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'collapse'\nconst VERSION = '4.3.1'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst Default = {\n toggle : true,\n parent : ''\n}\n\nconst DefaultType = {\n toggle : 'boolean',\n parent : '(string|element)'\n}\n\nconst Event = {\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n}\n\nconst ClassName = {\n SHOW : 'show',\n COLLAPSE : 'collapse',\n COLLAPSING : 'collapsing',\n COLLAPSED : 'collapsed'\n}\n\nconst Dimension = {\n WIDTH : 'width',\n HEIGHT : 'height'\n}\n\nconst Selector = {\n ACTIVES : '.show, .collapsing',\n DATA_TOGGLE : '[data-toggle=\"collapse\"]'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Collapse {\n constructor(element, config) {\n this._isTransitioning = false\n this._element = element\n this._config = this._getConfig(config)\n this._triggerArray = [].slice.call(document.querySelectorAll(\n `[data-toggle=\"collapse\"][href=\"#${element.id}\"],` +\n `[data-toggle=\"collapse\"][data-target=\"#${element.id}\"]`\n ))\n\n const toggleList = [].slice.call(document.querySelectorAll(Selector.DATA_TOGGLE))\n for (let i = 0, len = toggleList.length; i < len; i++) {\n const elem = toggleList[i]\n const selector = Util.getSelectorFromElement(elem)\n const filterElement = [].slice.call(document.querySelectorAll(selector))\n .filter((foundElem) => foundElem === element)\n\n if (selector !== null && filterElement.length > 0) {\n this._selector = selector\n this._triggerArray.push(elem)\n }\n }\n\n this._parent = this._config.parent ? this._getParent() : null\n\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._element, this._triggerArray)\n }\n\n if (this._config.toggle) {\n this.toggle()\n }\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n toggle() {\n if ($(this._element).hasClass(ClassName.SHOW)) {\n this.hide()\n } else {\n this.show()\n }\n }\n\n show() {\n if (this._isTransitioning ||\n $(this._element).hasClass(ClassName.SHOW)) {\n return\n }\n\n let actives\n let activesData\n\n if (this._parent) {\n actives = [].slice.call(this._parent.querySelectorAll(Selector.ACTIVES))\n .filter((elem) => {\n if (typeof this._config.parent === 'string') {\n return elem.getAttribute('data-parent') === this._config.parent\n }\n\n return elem.classList.contains(ClassName.COLLAPSE)\n })\n\n if (actives.length === 0) {\n actives = null\n }\n }\n\n if (actives) {\n activesData = $(actives).not(this._selector).data(DATA_KEY)\n if (activesData && activesData._isTransitioning) {\n return\n }\n }\n\n const startEvent = $.Event(Event.SHOW)\n $(this._element).trigger(startEvent)\n if (startEvent.isDefaultPrevented()) {\n return\n }\n\n if (actives) {\n Collapse._jQueryInterface.call($(actives).not(this._selector), 'hide')\n if (!activesData) {\n $(actives).data(DATA_KEY, null)\n }\n }\n\n const dimension = this._getDimension()\n\n $(this._element)\n .removeClass(ClassName.COLLAPSE)\n .addClass(ClassName.COLLAPSING)\n\n this._element.style[dimension] = 0\n\n if (this._triggerArray.length) {\n $(this._triggerArray)\n .removeClass(ClassName.COLLAPSED)\n .attr('aria-expanded', true)\n }\n\n this.setTransitioning(true)\n\n const complete = () => {\n $(this._element)\n .removeClass(ClassName.COLLAPSING)\n .addClass(ClassName.COLLAPSE)\n .addClass(ClassName.SHOW)\n\n this._element.style[dimension] = ''\n\n this.setTransitioning(false)\n\n $(this._element).trigger(Event.SHOWN)\n }\n\n const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n const scrollSize = `scroll${capitalizedDimension}`\n const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n $(this._element)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n\n this._element.style[dimension] = `${this._element[scrollSize]}px`\n }\n\n hide() {\n if (this._isTransitioning ||\n !$(this._element).hasClass(ClassName.SHOW)) {\n return\n }\n\n const startEvent = $.Event(Event.HIDE)\n $(this._element).trigger(startEvent)\n if (startEvent.isDefaultPrevented()) {\n return\n }\n\n const dimension = this._getDimension()\n\n this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n Util.reflow(this._element)\n\n $(this._element)\n .addClass(ClassName.COLLAPSING)\n .removeClass(ClassName.COLLAPSE)\n .removeClass(ClassName.SHOW)\n\n const triggerArrayLength = this._triggerArray.length\n if (triggerArrayLength > 0) {\n for (let i = 0; i < triggerArrayLength; i++) {\n const trigger = this._triggerArray[i]\n const selector = Util.getSelectorFromElement(trigger)\n\n if (selector !== null) {\n const $elem = $([].slice.call(document.querySelectorAll(selector)))\n if (!$elem.hasClass(ClassName.SHOW)) {\n $(trigger).addClass(ClassName.COLLAPSED)\n .attr('aria-expanded', false)\n }\n }\n }\n }\n\n this.setTransitioning(true)\n\n const complete = () => {\n this.setTransitioning(false)\n $(this._element)\n .removeClass(ClassName.COLLAPSING)\n .addClass(ClassName.COLLAPSE)\n .trigger(Event.HIDDEN)\n }\n\n this._element.style[dimension] = ''\n const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n $(this._element)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n }\n\n setTransitioning(isTransitioning) {\n this._isTransitioning = isTransitioning\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n\n this._config = null\n this._parent = null\n this._element = null\n this._triggerArray = null\n this._isTransitioning = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n config.toggle = Boolean(config.toggle) // Coerce string values\n Util.typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _getDimension() {\n const hasWidth = $(this._element).hasClass(Dimension.WIDTH)\n return hasWidth ? Dimension.WIDTH : Dimension.HEIGHT\n }\n\n _getParent() {\n let parent\n\n if (Util.isElement(this._config.parent)) {\n parent = this._config.parent\n\n // It's a jQuery object\n if (typeof this._config.parent.jquery !== 'undefined') {\n parent = this._config.parent[0]\n }\n } else {\n parent = document.querySelector(this._config.parent)\n }\n\n const selector =\n `[data-toggle=\"collapse\"][data-parent=\"${this._config.parent}\"]`\n\n const children = [].slice.call(parent.querySelectorAll(selector))\n $(children).each((i, element) => {\n this._addAriaAndCollapsedClass(\n Collapse._getTargetFromElement(element),\n [element]\n )\n })\n\n return parent\n }\n\n _addAriaAndCollapsedClass(element, triggerArray) {\n const isOpen = $(element).hasClass(ClassName.SHOW)\n\n if (triggerArray.length) {\n $(triggerArray)\n .toggleClass(ClassName.COLLAPSED, !isOpen)\n .attr('aria-expanded', isOpen)\n }\n }\n\n // Static\n\n static _getTargetFromElement(element) {\n const selector = Util.getSelectorFromElement(element)\n return selector ? document.querySelector(selector) : null\n }\n\n static _jQueryInterface(config) {\n return this.each(function () {\n const $this = $(this)\n let data = $this.data(DATA_KEY)\n const _config = {\n ...Default,\n ...$this.data(),\n ...typeof config === 'object' && config ? config : {}\n }\n\n if (!data && _config.toggle && /show|hide/.test(config)) {\n _config.toggle = false\n }\n\n if (!data) {\n data = new Collapse(this, _config)\n $this.data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {\n // preventDefault only for elements (which change the URL) not inside the collapsible element\n if (event.currentTarget.tagName === 'A') {\n event.preventDefault()\n }\n\n const $trigger = $(this)\n const selector = Util.getSelectorFromElement(this)\n const selectors = [].slice.call(document.querySelectorAll(selector))\n\n $(selectors).each(function () {\n const $target = $(this)\n const data = $target.data(DATA_KEY)\n const config = data ? 'toggle' : $trigger.data()\n Collapse._jQueryInterface.call($target, config)\n })\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Collapse._jQueryInterface\n$.fn[NAME].Constructor = Collapse\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Collapse._jQueryInterface\n}\n\nexport default Collapse\n","/**!\n * @fileOverview Kickass library to create and place poppers near their reference elements.\n * @version 1.14.7\n * @license\n * Copyright (c) 2016 Federico Zivolo and contributors\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nvar longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\nvar timeoutDuration = 0;\nfor (var i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n timeoutDuration = 1;\n break;\n }\n}\n\nfunction microtaskDebounce(fn) {\n var called = false;\n return function () {\n if (called) {\n return;\n }\n called = true;\n window.Promise.resolve().then(function () {\n called = false;\n fn();\n });\n };\n}\n\nfunction taskDebounce(fn) {\n var scheduled = false;\n return function () {\n if (!scheduled) {\n scheduled = true;\n setTimeout(function () {\n scheduled = false;\n fn();\n }, timeoutDuration);\n }\n };\n}\n\nvar supportsMicroTasks = isBrowser && window.Promise;\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nvar debounce = supportsMicroTasks ? microtaskDebounce : taskDebounce;\n\n/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nfunction isFunction(functionToCheck) {\n var getType = {};\n return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';\n}\n\n/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\nfunction getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n var window = element.ownerDocument.defaultView;\n var css = window.getComputedStyle(element, null);\n return property ? css[property] : css;\n}\n\n/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\nfunction getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n return element.parentNode || element.host;\n}\n\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\nfunction getScrollParent(element) {\n // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n if (!element) {\n return document.body;\n }\n\n switch (element.nodeName) {\n case 'HTML':\n case 'BODY':\n return element.ownerDocument.body;\n case '#document':\n return element.body;\n }\n\n // Firefox want us to check `-x` and `-y` variations as well\n\n var _getStyleComputedProp = getStyleComputedProperty(element),\n overflow = _getStyleComputedProp.overflow,\n overflowX = _getStyleComputedProp.overflowX,\n overflowY = _getStyleComputedProp.overflowY;\n\n if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {\n return element;\n }\n\n return getScrollParent(getParentNode(element));\n}\n\nvar isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);\nvar isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent);\n\n/**\n * Determines if the browser is Internet Explorer\n * @method\n * @memberof Popper.Utils\n * @param {Number} version to check\n * @returns {Boolean} isIE\n */\nfunction isIE(version) {\n if (version === 11) {\n return isIE11;\n }\n if (version === 10) {\n return isIE10;\n }\n return isIE11 || isIE10;\n}\n\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\nfunction getOffsetParent(element) {\n if (!element) {\n return document.documentElement;\n }\n\n var noOffsetParent = isIE(10) ? document.body : null;\n\n // NOTE: 1 DOM access here\n var offsetParent = element.offsetParent || null;\n // Skip hidden elements which don't have an offsetParent\n while (offsetParent === noOffsetParent && element.nextElementSibling) {\n offsetParent = (element = element.nextElementSibling).offsetParent;\n }\n\n var nodeName = offsetParent && offsetParent.nodeName;\n\n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n return element ? element.ownerDocument.documentElement : document.documentElement;\n }\n\n // .offsetParent will return the closest TH, TD or TABLE in case\n // no offsetParent is present, I hate this job...\n if (['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 && getStyleComputedProperty(offsetParent, 'position') === 'static') {\n return getOffsetParent(offsetParent);\n }\n\n return offsetParent;\n}\n\nfunction isOffsetContainer(element) {\n var nodeName = element.nodeName;\n\n if (nodeName === 'BODY') {\n return false;\n }\n return nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element;\n}\n\n/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\nfunction getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\n\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\nfunction findCommonOffsetParent(element1, element2) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n return document.documentElement;\n }\n\n // Here we make sure to give as \"start\" the element that comes first in the DOM\n var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING;\n var start = order ? element1 : element2;\n var end = order ? element2 : element1;\n\n // Get common ancestor container\n var range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n var commonAncestorContainer = range.commonAncestorContainer;\n\n // Both nodes are inside #document\n\n if (element1 !== commonAncestorContainer && element2 !== commonAncestorContainer || start.contains(end)) {\n if (isOffsetContainer(commonAncestorContainer)) {\n return commonAncestorContainer;\n }\n\n return getOffsetParent(commonAncestorContainer);\n }\n\n // one of the nodes is inside shadowDOM, find which one\n var element1root = getRoot(element1);\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n } else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\n}\n\n/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\nfunction getScroll(element) {\n var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top';\n\n var upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n var nodeName = element.nodeName;\n\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n var html = element.ownerDocument.documentElement;\n var scrollingElement = element.ownerDocument.scrollingElement || html;\n return scrollingElement[upperSide];\n }\n\n return element[upperSide];\n}\n\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\nfunction includeScroll(rect, element) {\n var subtract = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n var modifier = subtract ? -1 : 1;\n rect.top += scrollTop * modifier;\n rect.bottom += scrollTop * modifier;\n rect.left += scrollLeft * modifier;\n rect.right += scrollLeft * modifier;\n return rect;\n}\n\n/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\nfunction getBordersSize(styles, axis) {\n var sideA = axis === 'x' ? 'Left' : 'Top';\n var sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n return parseFloat(styles['border' + sideA + 'Width'], 10) + parseFloat(styles['border' + sideB + 'Width'], 10);\n}\n\nfunction getSize(axis, body, html, computedStyle) {\n return Math.max(body['offset' + axis], body['scroll' + axis], html['client' + axis], html['offset' + axis], html['scroll' + axis], isIE(10) ? parseInt(html['offset' + axis]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Top' : 'Left')]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Bottom' : 'Right')]) : 0);\n}\n\nfunction getWindowSizes(document) {\n var body = document.body;\n var html = document.documentElement;\n var computedStyle = isIE(10) && getComputedStyle(html);\n\n return {\n height: getSize('Height', body, html, computedStyle),\n width: getSize('Width', body, html, computedStyle)\n };\n}\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\n\n\n\n\nvar defineProperty = function (obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n};\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\n/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\nfunction getClientRect(offsets) {\n return _extends({}, offsets, {\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height\n });\n}\n\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\nfunction getBoundingClientRect(element) {\n var rect = {};\n\n // IE10 10 FIX: Please, don't ask, the element isn't\n // considered in DOM in some circumstances...\n // This isn't reproducible in IE10 compatibility mode of IE11\n try {\n if (isIE(10)) {\n rect = element.getBoundingClientRect();\n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n rect.top += scrollTop;\n rect.left += scrollLeft;\n rect.bottom += scrollTop;\n rect.right += scrollLeft;\n } else {\n rect = element.getBoundingClientRect();\n }\n } catch (e) {}\n\n var result = {\n left: rect.left,\n top: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top\n };\n\n // subtract scrollbar size from sizes\n var sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {};\n var width = sizes.width || element.clientWidth || result.right - result.left;\n var height = sizes.height || element.clientHeight || result.bottom - result.top;\n\n var horizScrollbar = element.offsetWidth - width;\n var vertScrollbar = element.offsetHeight - height;\n\n // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n // we make this check conditional for performance reasons\n if (horizScrollbar || vertScrollbar) {\n var styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n\n result.width -= horizScrollbar;\n result.height -= vertScrollbar;\n }\n\n return getClientRect(result);\n}\n\nfunction getOffsetRectRelativeToArbitraryNode(children, parent) {\n var fixedPosition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var isIE10 = isIE(10);\n var isHTML = parent.nodeName === 'HTML';\n var childrenRect = getBoundingClientRect(children);\n var parentRect = getBoundingClientRect(parent);\n var scrollParent = getScrollParent(children);\n\n var styles = getStyleComputedProperty(parent);\n var borderTopWidth = parseFloat(styles.borderTopWidth, 10);\n var borderLeftWidth = parseFloat(styles.borderLeftWidth, 10);\n\n // In cases where the parent is fixed, we must ignore negative scroll in offset calc\n if (fixedPosition && isHTML) {\n parentRect.top = Math.max(parentRect.top, 0);\n parentRect.left = Math.max(parentRect.left, 0);\n }\n var offsets = getClientRect({\n top: childrenRect.top - parentRect.top - borderTopWidth,\n left: childrenRect.left - parentRect.left - borderLeftWidth,\n width: childrenRect.width,\n height: childrenRect.height\n });\n offsets.marginTop = 0;\n offsets.marginLeft = 0;\n\n // Subtract margins of documentElement in case it's being used as parent\n // we do this only on HTML because it's the only element that behaves\n // differently when margins are applied to it. The margins are included in\n // the box of the documentElement, in the other cases not.\n if (!isIE10 && isHTML) {\n var marginTop = parseFloat(styles.marginTop, 10);\n var marginLeft = parseFloat(styles.marginLeft, 10);\n\n offsets.top -= borderTopWidth - marginTop;\n offsets.bottom -= borderTopWidth - marginTop;\n offsets.left -= borderLeftWidth - marginLeft;\n offsets.right -= borderLeftWidth - marginLeft;\n\n // Attach marginTop and marginLeft because in some circumstances we may need them\n offsets.marginTop = marginTop;\n offsets.marginLeft = marginLeft;\n }\n\n if (isIE10 && !fixedPosition ? parent.contains(scrollParent) : parent === scrollParent && scrollParent.nodeName !== 'BODY') {\n offsets = includeScroll(offsets, parent);\n }\n\n return offsets;\n}\n\nfunction getViewportOffsetRectRelativeToArtbitraryNode(element) {\n var excludeScroll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var html = element.ownerDocument.documentElement;\n var relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n var width = Math.max(html.clientWidth, window.innerWidth || 0);\n var height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n var scrollTop = !excludeScroll ? getScroll(html) : 0;\n var scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\n\n var offset = {\n top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n width: width,\n height: height\n };\n\n return getClientRect(offset);\n}\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\nfunction isFixed(element) {\n var nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n var parentNode = getParentNode(element);\n if (!parentNode) {\n return false;\n }\n return isFixed(parentNode);\n}\n\n/**\n * Finds the first parent of an element that has a transformed property defined\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} first transformed parent or documentElement\n */\n\nfunction getFixedPositionOffsetParent(element) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element || !element.parentElement || isIE()) {\n return document.documentElement;\n }\n var el = element.parentElement;\n while (el && getStyleComputedProperty(el, 'transform') === 'none') {\n el = el.parentElement;\n }\n return el || document.documentElement;\n}\n\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @param {Boolean} fixedPosition - Is in fixed position mode\n * @returns {Object} Coordinates of the boundaries\n */\nfunction getBoundaries(popper, reference, padding, boundariesElement) {\n var fixedPosition = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n // NOTE: 1 DOM access here\n\n var boundaries = { top: 0, left: 0 };\n var offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, reference);\n\n // Handle viewport case\n if (boundariesElement === 'viewport') {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);\n } else {\n // Handle other cases based on DOM element used as boundaries\n var boundariesNode = void 0;\n if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(reference));\n if (boundariesNode.nodeName === 'BODY') {\n boundariesNode = popper.ownerDocument.documentElement;\n }\n } else if (boundariesElement === 'window') {\n boundariesNode = popper.ownerDocument.documentElement;\n } else {\n boundariesNode = boundariesElement;\n }\n\n var offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent, fixedPosition);\n\n // In case of HTML, we need a different computation\n if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n var _getWindowSizes = getWindowSizes(popper.ownerDocument),\n height = _getWindowSizes.height,\n width = _getWindowSizes.width;\n\n boundaries.top += offsets.top - offsets.marginTop;\n boundaries.bottom = height + offsets.top;\n boundaries.left += offsets.left - offsets.marginLeft;\n boundaries.right = width + offsets.left;\n } else {\n // for all the other DOM elements, this one is good\n boundaries = offsets;\n }\n }\n\n // Add paddings\n padding = padding || 0;\n var isPaddingNumber = typeof padding === 'number';\n boundaries.left += isPaddingNumber ? padding : padding.left || 0;\n boundaries.top += isPaddingNumber ? padding : padding.top || 0;\n boundaries.right -= isPaddingNumber ? padding : padding.right || 0;\n boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0;\n\n return boundaries;\n}\n\nfunction getArea(_ref) {\n var width = _ref.width,\n height = _ref.height;\n\n return width * height;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeAutoPlacement(placement, refRect, popper, reference, boundariesElement) {\n var padding = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;\n\n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n\n var boundaries = getBoundaries(popper, reference, padding, boundariesElement);\n\n var rects = {\n top: {\n width: boundaries.width,\n height: refRect.top - boundaries.top\n },\n right: {\n width: boundaries.right - refRect.right,\n height: boundaries.height\n },\n bottom: {\n width: boundaries.width,\n height: boundaries.bottom - refRect.bottom\n },\n left: {\n width: refRect.left - boundaries.left,\n height: boundaries.height\n }\n };\n\n var sortedAreas = Object.keys(rects).map(function (key) {\n return _extends({\n key: key\n }, rects[key], {\n area: getArea(rects[key])\n });\n }).sort(function (a, b) {\n return b.area - a.area;\n });\n\n var filteredAreas = sortedAreas.filter(function (_ref2) {\n var width = _ref2.width,\n height = _ref2.height;\n return width >= popper.clientWidth && height >= popper.clientHeight;\n });\n\n var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key;\n\n var variation = placement.split('-')[1];\n\n return computedPlacement + (variation ? '-' + variation : '');\n}\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @param {Element} fixedPosition - is in fixed position mode\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nfunction getReferenceOffsets(state, popper, reference) {\n var fixedPosition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n var commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, reference);\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);\n}\n\n/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nfunction getOuterSizes(element) {\n var window = element.ownerDocument.defaultView;\n var styles = window.getComputedStyle(element);\n var x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0);\n var y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0);\n var result = {\n width: element.offsetWidth + y,\n height: element.offsetHeight + x\n };\n return result;\n}\n\n/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nfunction getOppositePlacement(placement) {\n var hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nfunction getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0];\n\n // Get popper node sizes\n var popperRect = getOuterSizes(popper);\n\n // Add position, width and height to our offsets object\n var popperOffsets = {\n width: popperRect.width,\n height: popperRect.height\n };\n\n // depending by the popper placement we have to compute its offsets slightly differently\n var isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n var mainSide = isHoriz ? 'top' : 'left';\n var secondarySide = isHoriz ? 'left' : 'top';\n var measurement = isHoriz ? 'height' : 'width';\n var secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2;\n if (placement === secondarySide) {\n popperOffsets[secondarySide] = referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n } else {\n popperOffsets[secondarySide] = referenceOffsets[getOppositePlacement(secondarySide)];\n }\n\n return popperOffsets;\n}\n\n/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction find(arr, check) {\n // use native find if supported\n if (Array.prototype.find) {\n return arr.find(check);\n }\n\n // use `filter` to obtain the same behavior of `find`\n return arr.filter(check)[0];\n}\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction findIndex(arr, prop, value) {\n // use native findIndex if supported\n if (Array.prototype.findIndex) {\n return arr.findIndex(function (cur) {\n return cur[prop] === value;\n });\n }\n\n // use `find` + `indexOf` if `findIndex` isn't supported\n var match = find(arr, function (obj) {\n return obj[prop] === value;\n });\n return arr.indexOf(match);\n}\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nfunction runModifiers(modifiers, data, ends) {\n var modifiersToRun = ends === undefined ? modifiers : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n modifiersToRun.forEach(function (modifier) {\n if (modifier['function']) {\n // eslint-disable-line dot-notation\n console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n }\n var fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n if (modifier.enabled && isFunction(fn)) {\n // Add properties to offsets to make them a complete clientRect object\n // we do this before each modifier to make sure the previous one doesn't\n // mess with these values\n data.offsets.popper = getClientRect(data.offsets.popper);\n data.offsets.reference = getClientRect(data.offsets.reference);\n\n data = fn(data, modifier);\n }\n });\n\n return data;\n}\n\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.
\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\nfunction update() {\n // if popper is destroyed, don't perform any further update\n if (this.state.isDestroyed) {\n return;\n }\n\n var data = {\n instance: this,\n styles: {},\n arrowStyles: {},\n attributes: {},\n flipped: false,\n offsets: {}\n };\n\n // compute reference element offsets\n data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference, this.options.positionFixed);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding);\n\n // store the computed placement inside `originalPlacement`\n data.originalPlacement = data.placement;\n\n data.positionFixed = this.options.positionFixed;\n\n // compute the popper offsets\n data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement);\n\n data.offsets.popper.position = this.options.positionFixed ? 'fixed' : 'absolute';\n\n // run the modifiers\n data = runModifiers(this.modifiers, data);\n\n // the first `update` will call `onCreate` callback\n // the other ones will call `onUpdate` callback\n if (!this.state.isCreated) {\n this.state.isCreated = true;\n this.options.onCreate(data);\n } else {\n this.options.onUpdate(data);\n }\n}\n\n/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nfunction isModifierEnabled(modifiers, modifierName) {\n return modifiers.some(function (_ref) {\n var name = _ref.name,\n enabled = _ref.enabled;\n return enabled && name === modifierName;\n });\n}\n\n/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nfunction getSupportedPropertyName(property) {\n var prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n var upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n for (var i = 0; i < prefixes.length; i++) {\n var prefix = prefixes[i];\n var toCheck = prefix ? '' + prefix + upperProp : property;\n if (typeof document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n}\n\n/**\n * Destroys the popper.\n * @method\n * @memberof Popper\n */\nfunction destroy() {\n this.state.isDestroyed = true;\n\n // touch DOM only if `applyStyle` modifier is enabled\n if (isModifierEnabled(this.modifiers, 'applyStyle')) {\n this.popper.removeAttribute('x-placement');\n this.popper.style.position = '';\n this.popper.style.top = '';\n this.popper.style.left = '';\n this.popper.style.right = '';\n this.popper.style.bottom = '';\n this.popper.style.willChange = '';\n this.popper.style[getSupportedPropertyName('transform')] = '';\n }\n\n this.disableEventListeners();\n\n // remove the popper if user explicity asked for the deletion on destroy\n // do not use `remove` because IE11 doesn't support it\n if (this.options.removeOnDestroy) {\n this.popper.parentNode.removeChild(this.popper);\n }\n return this;\n}\n\n/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nfunction getWindow(element) {\n var ownerDocument = element.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n}\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n var isBody = scrollParent.nodeName === 'BODY';\n var target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n target.addEventListener(event, callback, { passive: true });\n\n if (!isBody) {\n attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents);\n }\n scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction setupEventListeners(reference, options, state, updateBound) {\n // Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n // Scroll event listener on scroll parents\n var scrollElement = getScrollParent(reference);\n attachToScrollParents(scrollElement, 'scroll', state.updateBound, state.scrollParents);\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n\n return state;\n}\n\n/**\n * It will add resize/scroll events and start recalculating\n * position of the popper element when they are triggered.\n * @method\n * @memberof Popper\n */\nfunction enableEventListeners() {\n if (!this.state.eventsEnabled) {\n this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate);\n }\n}\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction removeEventListeners(reference, state) {\n // Remove resize event listener on window\n getWindow(reference).removeEventListener('resize', state.updateBound);\n\n // Remove scroll event listener on scroll parents\n state.scrollParents.forEach(function (target) {\n target.removeEventListener('scroll', state.updateBound);\n });\n\n // Reset state\n state.updateBound = null;\n state.scrollParents = [];\n state.scrollElement = null;\n state.eventsEnabled = false;\n return state;\n}\n\n/**\n * It will remove resize/scroll events and won't recalculate popper position\n * when they are triggered. It also won't trigger `onUpdate` callback anymore,\n * unless you call `update` method manually.\n * @method\n * @memberof Popper\n */\nfunction disableEventListeners() {\n if (this.state.eventsEnabled) {\n cancelAnimationFrame(this.scheduleUpdate);\n this.state = removeEventListeners(this.reference, this.state);\n }\n}\n\n/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nfunction isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setStyles(element, styles) {\n Object.keys(styles).forEach(function (prop) {\n var unit = '';\n // add unit if the value is numeric and is one of the following\n if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && isNumeric(styles[prop])) {\n unit = 'px';\n }\n element.style[prop] = styles[prop] + unit;\n });\n}\n\n/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function (prop) {\n var value = attributes[prop];\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\n });\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The same data object\n */\nfunction applyStyle(data) {\n // any property present in `data.styles` will be applied to the popper,\n // in this way we can make the 3rd party modifiers add custom styles to it\n // Be aware, modifiers could override the properties defined in the previous\n // lines of this modifier!\n setStyles(data.instance.popper, data.styles);\n\n // any property present in `data.attributes` will be applied to the popper,\n // they will be set as HTML attributes of the element\n setAttributes(data.instance.popper, data.attributes);\n\n // if arrowElement is defined and arrowStyles has some properties\n if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n setStyles(data.arrowElement, data.arrowStyles);\n }\n\n return data;\n}\n\n/**\n * Set the x-placement attribute before everything else because it could be used\n * to add margins to the popper margins needs to be calculated to get the\n * correct popper offsets.\n * @method\n * @memberof Popper.modifiers\n * @param {HTMLElement} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper\n * @param {Object} options - Popper.js options\n */\nfunction applyStyleOnLoad(reference, popper, options, modifierOptions, state) {\n // compute reference element offsets\n var referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding);\n\n popper.setAttribute('x-placement', placement);\n\n // Apply `position` to popper before anything else because\n // without the position applied we can't guarantee correct computations\n setStyles(popper, { position: options.positionFixed ? 'fixed' : 'absolute' });\n\n return options;\n}\n\n/**\n * @function\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Boolean} shouldRound - If the offsets should be rounded at all\n * @returns {Object} The popper's position offsets rounded\n *\n * The tale of pixel-perfect positioning. It's still not 100% perfect, but as\n * good as it can be within reason.\n * Discussion here: https://github.com/FezVrasta/popper.js/pull/715\n *\n * Low DPI screens cause a popper to be blurry if not using full pixels (Safari\n * as well on High DPI screens).\n *\n * Firefox prefers no rounding for positioning and does not have blurriness on\n * high DPI screens.\n *\n * Only horizontal placement and left/right values need to be considered.\n */\nfunction getRoundedOffsets(data, shouldRound) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n var round = Math.round,\n floor = Math.floor;\n\n var noRound = function noRound(v) {\n return v;\n };\n\n var referenceWidth = round(reference.width);\n var popperWidth = round(popper.width);\n\n var isVertical = ['left', 'right'].indexOf(data.placement) !== -1;\n var isVariation = data.placement.indexOf('-') !== -1;\n var sameWidthParity = referenceWidth % 2 === popperWidth % 2;\n var bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1;\n\n var horizontalToInteger = !shouldRound ? noRound : isVertical || isVariation || sameWidthParity ? round : floor;\n var verticalToInteger = !shouldRound ? noRound : round;\n\n return {\n left: horizontalToInteger(bothOddWidth && !isVariation && shouldRound ? popper.left - 1 : popper.left),\n top: verticalToInteger(popper.top),\n bottom: verticalToInteger(popper.bottom),\n right: horizontalToInteger(popper.right)\n };\n}\n\nvar isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent);\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeStyle(data, options) {\n var x = options.x,\n y = options.y;\n var popper = data.offsets.popper;\n\n // Remove this legacy support in Popper.js v2\n\n var legacyGpuAccelerationOption = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'applyStyle';\n }).gpuAcceleration;\n if (legacyGpuAccelerationOption !== undefined) {\n console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!');\n }\n var gpuAcceleration = legacyGpuAccelerationOption !== undefined ? legacyGpuAccelerationOption : options.gpuAcceleration;\n\n var offsetParent = getOffsetParent(data.instance.popper);\n var offsetParentRect = getBoundingClientRect(offsetParent);\n\n // Styles\n var styles = {\n position: popper.position\n };\n\n var offsets = getRoundedOffsets(data, window.devicePixelRatio < 2 || !isFirefox);\n\n var sideA = x === 'bottom' ? 'top' : 'bottom';\n var sideB = y === 'right' ? 'left' : 'right';\n\n // if gpuAcceleration is set to `true` and transform is supported,\n // we use `translate3d` to apply the position to the popper we\n // automatically use the supported prefixed version if needed\n var prefixedProperty = getSupportedPropertyName('transform');\n\n // now, let's make a step back and look at this code closely (wtf?)\n // If the content of the popper grows once it's been positioned, it\n // may happen that the popper gets misplaced because of the new content\n // overflowing its reference element\n // To avoid this problem, we provide two options (x and y), which allow\n // the consumer to define the offset origin.\n // If we position a popper on top of a reference element, we can set\n // `x` to `top` to make the popper grow towards its top instead of\n // its bottom.\n var left = void 0,\n top = void 0;\n if (sideA === 'bottom') {\n // when offsetParent is the positioning is relative to the bottom of the screen (excluding the scrollbar)\n // and not the bottom of the html element\n if (offsetParent.nodeName === 'HTML') {\n top = -offsetParent.clientHeight + offsets.bottom;\n } else {\n top = -offsetParentRect.height + offsets.bottom;\n }\n } else {\n top = offsets.top;\n }\n if (sideB === 'right') {\n if (offsetParent.nodeName === 'HTML') {\n left = -offsetParent.clientWidth + offsets.right;\n } else {\n left = -offsetParentRect.width + offsets.right;\n }\n } else {\n left = offsets.left;\n }\n if (gpuAcceleration && prefixedProperty) {\n styles[prefixedProperty] = 'translate3d(' + left + 'px, ' + top + 'px, 0)';\n styles[sideA] = 0;\n styles[sideB] = 0;\n styles.willChange = 'transform';\n } else {\n // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n var invertTop = sideA === 'bottom' ? -1 : 1;\n var invertLeft = sideB === 'right' ? -1 : 1;\n styles[sideA] = top * invertTop;\n styles[sideB] = left * invertLeft;\n styles.willChange = sideA + ', ' + sideB;\n }\n\n // Attributes\n var attributes = {\n 'x-placement': data.placement\n };\n\n // Update `data` attributes, styles and arrowStyles\n data.attributes = _extends({}, attributes, data.attributes);\n data.styles = _extends({}, styles, data.styles);\n data.arrowStyles = _extends({}, data.offsets.arrow, data.arrowStyles);\n\n return data;\n}\n\n/**\n * Helper used to know if the given modifier depends from another one.
\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nfunction isModifierRequired(modifiers, requestingName, requestedName) {\n var requesting = find(modifiers, function (_ref) {\n var name = _ref.name;\n return name === requestingName;\n });\n\n var isRequired = !!requesting && modifiers.some(function (modifier) {\n return modifier.name === requestedName && modifier.enabled && modifier.order < requesting.order;\n });\n\n if (!isRequired) {\n var _requesting = '`' + requestingName + '`';\n var requested = '`' + requestedName + '`';\n console.warn(requested + ' modifier is required by ' + _requesting + ' modifier in order to work, be sure to include it before ' + _requesting + '!');\n }\n return isRequired;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction arrow(data, options) {\n var _data$offsets$arrow;\n\n // arrow depends on keepTogether in order to work\n if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n return data;\n }\n\n var arrowElement = options.element;\n\n // if arrowElement is a string, suppose it's a CSS selector\n if (typeof arrowElement === 'string') {\n arrowElement = data.instance.popper.querySelector(arrowElement);\n\n // if arrowElement is not found, don't run the modifier\n if (!arrowElement) {\n return data;\n }\n } else {\n // if the arrowElement isn't a query selector we must check that the\n // provided DOM node is child of its popper node\n if (!data.instance.popper.contains(arrowElement)) {\n console.warn('WARNING: `arrow.element` must be child of its popper element!');\n return data;\n }\n }\n\n var placement = data.placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var isVertical = ['left', 'right'].indexOf(placement) !== -1;\n\n var len = isVertical ? 'height' : 'width';\n var sideCapitalized = isVertical ? 'Top' : 'Left';\n var side = sideCapitalized.toLowerCase();\n var altSide = isVertical ? 'left' : 'top';\n var opSide = isVertical ? 'bottom' : 'right';\n var arrowElementSize = getOuterSizes(arrowElement)[len];\n\n //\n // extends keepTogether behavior making sure the popper and its\n // reference have enough pixels in conjunction\n //\n\n // top/left side\n if (reference[opSide] - arrowElementSize < popper[side]) {\n data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize);\n }\n // bottom/right side\n if (reference[side] + arrowElementSize > popper[opSide]) {\n data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide];\n }\n data.offsets.popper = getClientRect(data.offsets.popper);\n\n // compute center of the popper\n var center = reference[side] + reference[len] / 2 - arrowElementSize / 2;\n\n // Compute the sideValue using the updated popper offsets\n // take popper margin in account because we don't have this info available\n var css = getStyleComputedProperty(data.instance.popper);\n var popperMarginSide = parseFloat(css['margin' + sideCapitalized], 10);\n var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width'], 10);\n var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;\n\n // prevent arrowElement from being placed not contiguously to its popper\n sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n\n data.arrowElement = arrowElement;\n data.offsets.arrow = (_data$offsets$arrow = {}, defineProperty(_data$offsets$arrow, side, Math.round(sideValue)), defineProperty(_data$offsets$arrow, altSide, ''), _data$offsets$arrow);\n\n return data;\n}\n\n/**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\nfunction getOppositeVariation(variation) {\n if (variation === 'end') {\n return 'start';\n } else if (variation === 'start') {\n return 'end';\n }\n return variation;\n}\n\n/**\n * List of accepted placements to use as values of the `placement` option.
\n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right.
\n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-end` (on the side with more space available, alignment depends by placement)\n *\n * @static\n * @type {Array}\n * @enum {String}\n * @readonly\n * @method placements\n * @memberof Popper\n */\nvar placements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start'];\n\n// Get rid of `auto` `auto-start` and `auto-end`\nvar validPlacements = placements.slice(3);\n\n/**\n * Given an initial placement, returns all the subsequent placements\n * clockwise (or counter-clockwise).\n *\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement - A valid placement (it accepts variations)\n * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\n * @returns {Array} placements including their variations\n */\nfunction clockwise(placement) {\n var counter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var index = validPlacements.indexOf(placement);\n var arr = validPlacements.slice(index + 1).concat(validPlacements.slice(0, index));\n return counter ? arr.reverse() : arr;\n}\n\nvar BEHAVIORS = {\n FLIP: 'flip',\n CLOCKWISE: 'clockwise',\n COUNTERCLOCKWISE: 'counterclockwise'\n};\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction flip(data, options) {\n // if `inner` modifier is enabled, we can't use the `flip` modifier\n if (isModifierEnabled(data.instance.modifiers, 'inner')) {\n return data;\n }\n\n if (data.flipped && data.placement === data.originalPlacement) {\n // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n return data;\n }\n\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, options.boundariesElement, data.positionFixed);\n\n var placement = data.placement.split('-')[0];\n var placementOpposite = getOppositePlacement(placement);\n var variation = data.placement.split('-')[1] || '';\n\n var flipOrder = [];\n\n switch (options.behavior) {\n case BEHAVIORS.FLIP:\n flipOrder = [placement, placementOpposite];\n break;\n case BEHAVIORS.CLOCKWISE:\n flipOrder = clockwise(placement);\n break;\n case BEHAVIORS.COUNTERCLOCKWISE:\n flipOrder = clockwise(placement, true);\n break;\n default:\n flipOrder = options.behavior;\n }\n\n flipOrder.forEach(function (step, index) {\n if (placement !== step || flipOrder.length === index + 1) {\n return data;\n }\n\n placement = data.placement.split('-')[0];\n placementOpposite = getOppositePlacement(placement);\n\n var popperOffsets = data.offsets.popper;\n var refOffsets = data.offsets.reference;\n\n // using floor because the reference offsets may contain decimals we are not going to consider here\n var floor = Math.floor;\n var overlapsRef = placement === 'left' && floor(popperOffsets.right) > floor(refOffsets.left) || placement === 'right' && floor(popperOffsets.left) < floor(refOffsets.right) || placement === 'top' && floor(popperOffsets.bottom) > floor(refOffsets.top) || placement === 'bottom' && floor(popperOffsets.top) < floor(refOffsets.bottom);\n\n var overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n var overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n var overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n var overflowsBottom = floor(popperOffsets.bottom) > floor(boundaries.bottom);\n\n var overflowsBoundaries = placement === 'left' && overflowsLeft || placement === 'right' && overflowsRight || placement === 'top' && overflowsTop || placement === 'bottom' && overflowsBottom;\n\n // flip the variation if required\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n var flippedVariation = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom);\n\n if (overlapsRef || overflowsBoundaries || flippedVariation) {\n // this boolean to detect any flip loop\n data.flipped = true;\n\n if (overlapsRef || overflowsBoundaries) {\n placement = flipOrder[index + 1];\n }\n\n if (flippedVariation) {\n variation = getOppositeVariation(variation);\n }\n\n data.placement = placement + (variation ? '-' + variation : '');\n\n // this object contains `position`, we want to preserve it along with\n // any additional property we may add in the future\n data.offsets.popper = _extends({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement));\n\n data = runModifiers(data.instance.modifiers, data, 'flip');\n }\n });\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction keepTogether(data) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var placement = data.placement.split('-')[0];\n var floor = Math.floor;\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n var side = isVertical ? 'right' : 'bottom';\n var opSide = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n\n if (popper[side] < floor(reference[opSide])) {\n data.offsets.popper[opSide] = floor(reference[opSide]) - popper[measurement];\n }\n if (popper[opSide] > floor(reference[side])) {\n data.offsets.popper[opSide] = floor(reference[side]);\n }\n\n return data;\n}\n\n/**\n * Converts a string containing value + unit into a px value number\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} str - Value + unit string\n * @argument {String} measurement - `height` or `width`\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @returns {Number|String}\n * Value in pixels, or original string if no values were extracted\n */\nfunction toValue(str, measurement, popperOffsets, referenceOffsets) {\n // separate value from unit\n var split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n var value = +split[1];\n var unit = split[2];\n\n // If it's not a number it's an operator, I guess\n if (!value) {\n return str;\n }\n\n if (unit.indexOf('%') === 0) {\n var element = void 0;\n switch (unit) {\n case '%p':\n element = popperOffsets;\n break;\n case '%':\n case '%r':\n default:\n element = referenceOffsets;\n }\n\n var rect = getClientRect(element);\n return rect[measurement] / 100 * value;\n } else if (unit === 'vh' || unit === 'vw') {\n // if is a vh or vw, we calculate the size based on the viewport\n var size = void 0;\n if (unit === 'vh') {\n size = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n } else {\n size = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n }\n return size / 100 * value;\n } else {\n // if is an explicit pixel unit, we get rid of the unit and keep the value\n // if is an implicit unit, it's px, and we return just the value\n return value;\n }\n}\n\n/**\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} offset\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @argument {String} basePlacement\n * @returns {Array} a two cells array with x and y offsets in numbers\n */\nfunction parseOffset(offset, popperOffsets, referenceOffsets, basePlacement) {\n var offsets = [0, 0];\n\n // Use height if placement is left or right and index is 0 otherwise use width\n // in this way the first offset will use an axis and the second one\n // will use the other one\n var useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;\n\n // Split the offset string to obtain a list of values and operands\n // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n var fragments = offset.split(/(\\+|\\-)/).map(function (frag) {\n return frag.trim();\n });\n\n // Detect if the offset string contains a pair of values or a single one\n // they could be separated by comma or space\n var divider = fragments.indexOf(find(fragments, function (frag) {\n return frag.search(/,|\\s/) !== -1;\n }));\n\n if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.');\n }\n\n // If divider is found, we divide the list of values and operands to divide\n // them by ofset X and Y.\n var splitRegex = /\\s*,\\s*|\\s+/;\n var ops = divider !== -1 ? [fragments.slice(0, divider).concat([fragments[divider].split(splitRegex)[0]]), [fragments[divider].split(splitRegex)[1]].concat(fragments.slice(divider + 1))] : [fragments];\n\n // Convert the values with units to absolute pixels to allow our computations\n ops = ops.map(function (op, index) {\n // Most of the units rely on the orientation of the popper\n var measurement = (index === 1 ? !useHeight : useHeight) ? 'height' : 'width';\n var mergeWithPrevious = false;\n return op\n // This aggregates any `+` or `-` sign that aren't considered operators\n // e.g.: 10 + +5 => [10, +, +5]\n .reduce(function (a, b) {\n if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n a[a.length - 1] = b;\n mergeWithPrevious = true;\n return a;\n } else if (mergeWithPrevious) {\n a[a.length - 1] += b;\n mergeWithPrevious = false;\n return a;\n } else {\n return a.concat(b);\n }\n }, [])\n // Here we convert the string values into number values (in px)\n .map(function (str) {\n return toValue(str, measurement, popperOffsets, referenceOffsets);\n });\n });\n\n // Loop trough the offsets arrays and execute the operations\n ops.forEach(function (op, index) {\n op.forEach(function (frag, index2) {\n if (isNumeric(frag)) {\n offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n }\n });\n });\n return offsets;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @argument {Number|String} options.offset=0\n * The offset value as described in the modifier description\n * @returns {Object} The data object, properly modified\n */\nfunction offset(data, _ref) {\n var offset = _ref.offset;\n var placement = data.placement,\n _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var basePlacement = placement.split('-')[0];\n\n var offsets = void 0;\n if (isNumeric(+offset)) {\n offsets = [+offset, 0];\n } else {\n offsets = parseOffset(offset, popper, reference, basePlacement);\n }\n\n if (basePlacement === 'left') {\n popper.top += offsets[0];\n popper.left -= offsets[1];\n } else if (basePlacement === 'right') {\n popper.top += offsets[0];\n popper.left += offsets[1];\n } else if (basePlacement === 'top') {\n popper.left += offsets[0];\n popper.top -= offsets[1];\n } else if (basePlacement === 'bottom') {\n popper.left += offsets[0];\n popper.top += offsets[1];\n }\n\n data.popper = popper;\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction preventOverflow(data, options) {\n var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper);\n\n // If offsetParent is the reference element, we really want to\n // go one step up and use the next offsetParent as reference to\n // avoid to make this modifier completely useless and look like broken\n if (data.instance.reference === boundariesElement) {\n boundariesElement = getOffsetParent(boundariesElement);\n }\n\n // NOTE: DOM access here\n // resets the popper's position so that the document size can be calculated excluding\n // the size of the popper element itself\n var transformProp = getSupportedPropertyName('transform');\n var popperStyles = data.instance.popper.style; // assignment to help minification\n var top = popperStyles.top,\n left = popperStyles.left,\n transform = popperStyles[transformProp];\n\n popperStyles.top = '';\n popperStyles.left = '';\n popperStyles[transformProp] = '';\n\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement, data.positionFixed);\n\n // NOTE: DOM access here\n // restores the original style properties after the offsets have been computed\n popperStyles.top = top;\n popperStyles.left = left;\n popperStyles[transformProp] = transform;\n\n options.boundaries = boundaries;\n\n var order = options.priority;\n var popper = data.offsets.popper;\n\n var check = {\n primary: function primary(placement) {\n var value = popper[placement];\n if (popper[placement] < boundaries[placement] && !options.escapeWithReference) {\n value = Math.max(popper[placement], boundaries[placement]);\n }\n return defineProperty({}, placement, value);\n },\n secondary: function secondary(placement) {\n var mainSide = placement === 'right' ? 'left' : 'top';\n var value = popper[mainSide];\n if (popper[placement] > boundaries[placement] && !options.escapeWithReference) {\n value = Math.min(popper[mainSide], boundaries[placement] - (placement === 'right' ? popper.width : popper.height));\n }\n return defineProperty({}, mainSide, value);\n }\n };\n\n order.forEach(function (placement) {\n var side = ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';\n popper = _extends({}, popper, check[side](placement));\n });\n\n data.offsets.popper = popper;\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction shift(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var shiftvariation = placement.split('-')[1];\n\n // if shift shiftvariation is specified, run the modifier\n if (shiftvariation) {\n var _data$offsets = data.offsets,\n reference = _data$offsets.reference,\n popper = _data$offsets.popper;\n\n var isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n var side = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n\n var shiftOffsets = {\n start: defineProperty({}, side, reference[side]),\n end: defineProperty({}, side, reference[side] + reference[measurement] - popper[measurement])\n };\n\n data.offsets.popper = _extends({}, popper, shiftOffsets[shiftvariation]);\n }\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction hide(data) {\n if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n return data;\n }\n\n var refRect = data.offsets.reference;\n var bound = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'preventOverflow';\n }).boundaries;\n\n if (refRect.bottom < bound.top || refRect.left > bound.right || refRect.top > bound.bottom || refRect.right < bound.left) {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === true) {\n return data;\n }\n\n data.hide = true;\n data.attributes['x-out-of-boundaries'] = '';\n } else {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === false) {\n return data;\n }\n\n data.hide = false;\n data.attributes['x-out-of-boundaries'] = false;\n }\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction inner(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n\n var subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n\n popper[isHoriz ? 'left' : 'top'] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n\n data.placement = getOppositePlacement(placement);\n data.offsets.popper = getClientRect(popper);\n\n return data;\n}\n\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.
\n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n\n/**\n * Modifiers are plugins used to alter the behavior of your poppers.
\n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\nvar modifiers = {\n /**\n * Modifier used to shift the popper on the start or end of its reference\n * element.
\n * It will read the variation of the `placement` property.
\n * It can be one either `-end` or `-start`.\n * @memberof modifiers\n * @inner\n */\n shift: {\n /** @prop {number} order=100 - Index used to define the order of execution */\n order: 100,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: shift\n },\n\n /**\n * The `offset` modifier can shift your popper on both its axis.\n *\n * It accepts the following units:\n * - `px` or unit-less, interpreted as pixels\n * - `%` or `%r`, percentage relative to the length of the reference element\n * - `%p`, percentage relative to the length of the popper element\n * - `vw`, CSS viewport width unit\n * - `vh`, CSS viewport height unit\n *\n * For length is intended the main axis relative to the placement of the popper.
\n * This means that if the placement is `top` or `bottom`, the length will be the\n * `width`. In case of `left` or `right`, it will be the `height`.\n *\n * You can provide a single value (as `Number` or `String`), or a pair of values\n * as `String` divided by a comma or one (or more) white spaces.
\n * The latter is a deprecated method because it leads to confusion and will be\n * removed in v2.
\n * Additionally, it accepts additions and subtractions between different units.\n * Note that multiplications and divisions aren't supported.\n *\n * Valid examples are:\n * ```\n * 10\n * '10%'\n * '10, 10'\n * '10%, 10'\n * '10 + 10%'\n * '10 - 5vh + 3%'\n * '-10px + 5vh, 5px - 6%'\n * ```\n * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373).\n *\n * @memberof modifiers\n * @inner\n */\n offset: {\n /** @prop {number} order=200 - Index used to define the order of execution */\n order: 200,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: offset,\n /** @prop {Number|String} offset=0\n * The offset value as described in the modifier description\n */\n offset: 0\n },\n\n /**\n * Modifier used to prevent the popper from being positioned outside the boundary.\n *\n * A scenario exists where the reference itself is not within the boundaries.
\n * We can say it has \"escaped the boundaries\" — or just \"escaped\".
\n * In this case we need to decide whether the popper should either:\n *\n * - detach from the reference and remain \"trapped\" in the boundaries, or\n * - if it should ignore the boundary and \"escape with its reference\"\n *\n * When `escapeWithReference` is set to`true` and reference is completely\n * outside its boundaries, the popper will overflow (or completely leave)\n * the boundaries in order to remain attached to the edge of the reference.\n *\n * @memberof modifiers\n * @inner\n */\n preventOverflow: {\n /** @prop {number} order=300 - Index used to define the order of execution */\n order: 300,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: preventOverflow,\n /**\n * @prop {Array} [priority=['left','right','top','bottom']]\n * Popper will try to prevent overflow following these priorities by default,\n * then, it could overflow on the left and on top of the `boundariesElement`\n */\n priority: ['left', 'right', 'top', 'bottom'],\n /**\n * @prop {number} padding=5\n * Amount of pixel used to define a minimum distance between the boundaries\n * and the popper. This makes sure the popper always has a little padding\n * between the edges of its container\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='scrollParent'\n * Boundaries used by the modifier. Can be `scrollParent`, `window`,\n * `viewport` or any DOM element.\n */\n boundariesElement: 'scrollParent'\n },\n\n /**\n * Modifier used to make sure the reference and its popper stay near each other\n * without leaving any gap between the two. Especially useful when the arrow is\n * enabled and you want to ensure that it points to its reference element.\n * It cares only about the first axis. You can still have poppers with margin\n * between the popper and its reference element.\n * @memberof modifiers\n * @inner\n */\n keepTogether: {\n /** @prop {number} order=400 - Index used to define the order of execution */\n order: 400,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: keepTogether\n },\n\n /**\n * This modifier is used to move the `arrowElement` of the popper to make\n * sure it is positioned between the reference element and its popper element.\n * It will read the outer size of the `arrowElement` node to detect how many\n * pixels of conjunction are needed.\n *\n * It has no effect if no `arrowElement` is provided.\n * @memberof modifiers\n * @inner\n */\n arrow: {\n /** @prop {number} order=500 - Index used to define the order of execution */\n order: 500,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: arrow,\n /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n element: '[x-arrow]'\n },\n\n /**\n * Modifier used to flip the popper's placement when it starts to overlap its\n * reference element.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n *\n * **NOTE:** this modifier will interrupt the current update cycle and will\n * restart it if it detects the need to flip the placement.\n * @memberof modifiers\n * @inner\n */\n flip: {\n /** @prop {number} order=600 - Index used to define the order of execution */\n order: 600,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: flip,\n /**\n * @prop {String|Array} behavior='flip'\n * The behavior used to change the popper's placement. It can be one of\n * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n * placements (with optional variations)\n */\n behavior: 'flip',\n /**\n * @prop {number} padding=5\n * The popper will flip if it hits the edges of the `boundariesElement`\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='viewport'\n * The element which will define the boundaries of the popper position.\n * The popper will never be placed outside of the defined boundaries\n * (except if `keepTogether` is enabled)\n */\n boundariesElement: 'viewport'\n },\n\n /**\n * Modifier used to make the popper flow toward the inner of the reference element.\n * By default, when this modifier is disabled, the popper will be placed outside\n * the reference element.\n * @memberof modifiers\n * @inner\n */\n inner: {\n /** @prop {number} order=700 - Index used to define the order of execution */\n order: 700,\n /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n enabled: false,\n /** @prop {ModifierFn} */\n fn: inner\n },\n\n /**\n * Modifier used to hide the popper when its reference element is outside of the\n * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n * be used to hide with a CSS selector the popper when its reference is\n * out of boundaries.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n * @memberof modifiers\n * @inner\n */\n hide: {\n /** @prop {number} order=800 - Index used to define the order of execution */\n order: 800,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: hide\n },\n\n /**\n * Computes the style that will be applied to the popper element to gets\n * properly positioned.\n *\n * Note that this modifier will not touch the DOM, it just prepares the styles\n * so that `applyStyle` modifier can apply it. This separation is useful\n * in case you need to replace `applyStyle` with a custom implementation.\n *\n * This modifier has `850` as `order` value to maintain backward compatibility\n * with previous versions of Popper.js. Expect the modifiers ordering method\n * to change in future major versions of the library.\n *\n * @memberof modifiers\n * @inner\n */\n computeStyle: {\n /** @prop {number} order=850 - Index used to define the order of execution */\n order: 850,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: computeStyle,\n /**\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: true,\n /**\n * @prop {string} [x='bottom']\n * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n * Change this if your popper should grow in a direction different from `bottom`\n */\n x: 'bottom',\n /**\n * @prop {string} [x='left']\n * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n * Change this if your popper should grow in a direction different from `right`\n */\n y: 'right'\n },\n\n /**\n * Applies the computed styles to the popper element.\n *\n * All the DOM manipulations are limited to this modifier. This is useful in case\n * you want to integrate Popper.js inside a framework or view library and you\n * want to delegate all the DOM manipulations to it.\n *\n * Note that if you disable this modifier, you must make sure the popper element\n * has its position set to `absolute` before Popper.js can do its work!\n *\n * Just disable this modifier and define your own to achieve the desired effect.\n *\n * @memberof modifiers\n * @inner\n */\n applyStyle: {\n /** @prop {number} order=900 - Index used to define the order of execution */\n order: 900,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: applyStyle,\n /** @prop {Function} */\n onLoad: applyStyleOnLoad,\n /**\n * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: undefined\n }\n};\n\n/**\n * The `dataObject` is an object containing all the information used by Popper.js.\n * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n */\n\n/**\n * Default options provided to Popper.js constructor.
\n * These can be overridden using the `options` argument of Popper.js.
\n * To override an option, simply pass an object with the same\n * structure of the `options` object, as the 3rd argument. For example:\n * ```\n * new Popper(ref, pop, {\n * modifiers: {\n * preventOverflow: { enabled: false }\n * }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n */\nvar Defaults = {\n /**\n * Popper's placement.\n * @prop {Popper.placements} placement='bottom'\n */\n placement: 'bottom',\n\n /**\n * Set this to true if you want popper to position it self in 'fixed' mode\n * @prop {Boolean} positionFixed=false\n */\n positionFixed: false,\n\n /**\n * Whether events (resize, scroll) are initially enabled.\n * @prop {Boolean} eventsEnabled=true\n */\n eventsEnabled: true,\n\n /**\n * Set to true if you want to automatically remove the popper when\n * you call the `destroy` method.\n * @prop {Boolean} removeOnDestroy=false\n */\n removeOnDestroy: false,\n\n /**\n * Callback called when the popper is created.
\n * By default, it is set to no-op.
\n * Access Popper.js instance with `data.instance`.\n * @prop {onCreate}\n */\n onCreate: function onCreate() {},\n\n /**\n * Callback called when the popper is updated. This callback is not called\n * on the initialization/creation of the popper, but only on subsequent\n * updates.
\n * By default, it is set to no-op.
\n * Access Popper.js instance with `data.instance`.\n * @prop {onUpdate}\n */\n onUpdate: function onUpdate() {},\n\n /**\n * List of modifiers used to modify the offsets before they are applied to the popper.\n * They provide most of the functionalities of Popper.js.\n * @prop {modifiers}\n */\n modifiers: modifiers\n};\n\n/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n\n// Utils\n// Methods\nvar Popper = function () {\n /**\n * Creates a new Popper.js instance.\n * @class Popper\n * @param {HTMLElement|referenceObject} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as the popper\n * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)\n * @return {Object} instance - The generated Popper.js instance\n */\n function Popper(reference, popper) {\n var _this = this;\n\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n classCallCheck(this, Popper);\n\n this.scheduleUpdate = function () {\n return requestAnimationFrame(_this.update);\n };\n\n // make update() debounced, so that it only runs at most once-per-tick\n this.update = debounce(this.update.bind(this));\n\n // with {} we create a new object with the options inside it\n this.options = _extends({}, Popper.Defaults, options);\n\n // init state\n this.state = {\n isDestroyed: false,\n isCreated: false,\n scrollParents: []\n };\n\n // get reference and popper elements (allow jQuery wrappers)\n this.reference = reference && reference.jquery ? reference[0] : reference;\n this.popper = popper && popper.jquery ? popper[0] : popper;\n\n // Deep merge modifiers options\n this.options.modifiers = {};\n Object.keys(_extends({}, Popper.Defaults.modifiers, options.modifiers)).forEach(function (name) {\n _this.options.modifiers[name] = _extends({}, Popper.Defaults.modifiers[name] || {}, options.modifiers ? options.modifiers[name] : {});\n });\n\n // Refactoring modifiers' list (Object => Array)\n this.modifiers = Object.keys(this.options.modifiers).map(function (name) {\n return _extends({\n name: name\n }, _this.options.modifiers[name]);\n })\n // sort the modifiers by order\n .sort(function (a, b) {\n return a.order - b.order;\n });\n\n // modifiers have the ability to execute arbitrary code when Popper.js get inited\n // such code is executed in the same order of its modifier\n // they could add new properties to their options configuration\n // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!\n this.modifiers.forEach(function (modifierOptions) {\n if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\n modifierOptions.onLoad(_this.reference, _this.popper, _this.options, modifierOptions, _this.state);\n }\n });\n\n // fire the first update to position the popper in the right place\n this.update();\n\n var eventsEnabled = this.options.eventsEnabled;\n if (eventsEnabled) {\n // setup event listeners, they will take care of update the position in specific situations\n this.enableEventListeners();\n }\n\n this.state.eventsEnabled = eventsEnabled;\n }\n\n // We can't use class properties because they don't get listed in the\n // class prototype and break stuff like Sinon stubs\n\n\n createClass(Popper, [{\n key: 'update',\n value: function update$$1() {\n return update.call(this);\n }\n }, {\n key: 'destroy',\n value: function destroy$$1() {\n return destroy.call(this);\n }\n }, {\n key: 'enableEventListeners',\n value: function enableEventListeners$$1() {\n return enableEventListeners.call(this);\n }\n }, {\n key: 'disableEventListeners',\n value: function disableEventListeners$$1() {\n return disableEventListeners.call(this);\n }\n\n /**\n * Schedules an update. It will run on the next UI update available.\n * @method scheduleUpdate\n * @memberof Popper\n */\n\n\n /**\n * Collection of utilities useful when writing custom modifiers.\n * Starting from version 1.7, this method is available only if you\n * include `popper-utils.js` before `popper.js`.\n *\n * **DEPRECATION**: This way to access PopperUtils is deprecated\n * and will be removed in v2! Use the PopperUtils module directly instead.\n * Due to the high instability of the methods contained in Utils, we can't\n * guarantee them to follow semver. Use them at your own risk!\n * @static\n * @private\n * @type {Object}\n * @deprecated since version 1.8\n * @member Utils\n * @memberof Popper\n */\n\n }]);\n return Popper;\n}();\n\n/**\n * The `referenceObject` is an object that provides an interface compatible with Popper.js\n * and lets you use it as replacement of a real DOM node.
\n * You can use this method to position a popper relatively to a set of coordinates\n * in case you don't have a DOM node to use as reference.\n *\n * ```\n * new Popper(referenceObject, popperNode);\n * ```\n *\n * NB: This feature isn't supported in Internet Explorer 10.\n * @name referenceObject\n * @property {Function} data.getBoundingClientRect\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n * @property {number} data.clientWidth\n * An ES6 getter that will return the width of the virtual reference element.\n * @property {number} data.clientHeight\n * An ES6 getter that will return the height of the virtual reference element.\n */\n\n\nPopper.Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\nPopper.placements = placements;\nPopper.Defaults = Defaults;\n\nexport default Popper;\n//# sourceMappingURL=popper.js.map\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Popper from 'popper.js'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'dropdown'\nconst VERSION = '4.3.1'\nconst DATA_KEY = 'bs.dropdown'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst ESCAPE_KEYCODE = 27 // KeyboardEvent.which value for Escape (Esc) key\nconst SPACE_KEYCODE = 32 // KeyboardEvent.which value for space key\nconst TAB_KEYCODE = 9 // KeyboardEvent.which value for tab key\nconst ARROW_UP_KEYCODE = 38 // KeyboardEvent.which value for up arrow key\nconst ARROW_DOWN_KEYCODE = 40 // KeyboardEvent.which value for down arrow key\nconst RIGHT_MOUSE_BUTTON_WHICH = 3 // MouseEvent.which value for the right button (assuming a right-handed mouse)\nconst REGEXP_KEYDOWN = new RegExp(`${ARROW_UP_KEYCODE}|${ARROW_DOWN_KEYCODE}|${ESCAPE_KEYCODE}`)\n\nconst Event = {\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n CLICK : `click${EVENT_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`,\n KEYDOWN_DATA_API : `keydown${EVENT_KEY}${DATA_API_KEY}`,\n KEYUP_DATA_API : `keyup${EVENT_KEY}${DATA_API_KEY}`\n}\n\nconst ClassName = {\n DISABLED : 'disabled',\n SHOW : 'show',\n DROPUP : 'dropup',\n DROPRIGHT : 'dropright',\n DROPLEFT : 'dropleft',\n MENURIGHT : 'dropdown-menu-right',\n MENULEFT : 'dropdown-menu-left',\n POSITION_STATIC : 'position-static'\n}\n\nconst Selector = {\n DATA_TOGGLE : '[data-toggle=\"dropdown\"]',\n FORM_CHILD : '.dropdown form',\n MENU : '.dropdown-menu',\n NAVBAR_NAV : '.navbar-nav',\n VISIBLE_ITEMS : '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'\n}\n\nconst AttachmentMap = {\n TOP : 'top-start',\n TOPEND : 'top-end',\n BOTTOM : 'bottom-start',\n BOTTOMEND : 'bottom-end',\n RIGHT : 'right-start',\n RIGHTEND : 'right-end',\n LEFT : 'left-start',\n LEFTEND : 'left-end'\n}\n\nconst Default = {\n offset : 0,\n flip : true,\n boundary : 'scrollParent',\n reference : 'toggle',\n display : 'dynamic'\n}\n\nconst DefaultType = {\n offset : '(number|string|function)',\n flip : 'boolean',\n boundary : '(string|element)',\n reference : '(string|element)',\n display : 'string'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Dropdown {\n constructor(element, config) {\n this._element = element\n this._popper = null\n this._config = this._getConfig(config)\n this._menu = this._getMenuElement()\n this._inNavbar = this._detectNavbar()\n\n this._addEventListeners()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Public\n\n toggle() {\n if (this._element.disabled || $(this._element).hasClass(ClassName.DISABLED)) {\n return\n }\n\n const parent = Dropdown._getParentFromElement(this._element)\n const isActive = $(this._menu).hasClass(ClassName.SHOW)\n\n Dropdown._clearMenus()\n\n if (isActive) {\n return\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n }\n const showEvent = $.Event(Event.SHOW, relatedTarget)\n\n $(parent).trigger(showEvent)\n\n if (showEvent.isDefaultPrevented()) {\n return\n }\n\n // Disable totally Popper.js for Dropdown in Navbar\n if (!this._inNavbar) {\n /**\n * Check for Popper dependency\n * Popper - https://popper.js.org\n */\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s dropdowns require Popper.js (https://popper.js.org/)')\n }\n\n let referenceElement = this._element\n\n if (this._config.reference === 'parent') {\n referenceElement = parent\n } else if (Util.isElement(this._config.reference)) {\n referenceElement = this._config.reference\n\n // Check if it's jQuery element\n if (typeof this._config.reference.jquery !== 'undefined') {\n referenceElement = this._config.reference[0]\n }\n }\n\n // If boundary is not `scrollParent`, then set position to `static`\n // to allow the menu to \"escape\" the scroll parent's boundaries\n // https://github.com/twbs/bootstrap/issues/24251\n if (this._config.boundary !== 'scrollParent') {\n $(parent).addClass(ClassName.POSITION_STATIC)\n }\n this._popper = new Popper(referenceElement, this._menu, this._getPopperConfig())\n }\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement &&\n $(parent).closest(Selector.NAVBAR_NAV).length === 0) {\n $(document.body).children().on('mouseover', null, $.noop)\n }\n\n this._element.focus()\n this._element.setAttribute('aria-expanded', true)\n\n $(this._menu).toggleClass(ClassName.SHOW)\n $(parent)\n .toggleClass(ClassName.SHOW)\n .trigger($.Event(Event.SHOWN, relatedTarget))\n }\n\n show() {\n if (this._element.disabled || $(this._element).hasClass(ClassName.DISABLED) || $(this._menu).hasClass(ClassName.SHOW)) {\n return\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n }\n const showEvent = $.Event(Event.SHOW, relatedTarget)\n const parent = Dropdown._getParentFromElement(this._element)\n\n $(parent).trigger(showEvent)\n\n if (showEvent.isDefaultPrevented()) {\n return\n }\n\n $(this._menu).toggleClass(ClassName.SHOW)\n $(parent)\n .toggleClass(ClassName.SHOW)\n .trigger($.Event(Event.SHOWN, relatedTarget))\n }\n\n hide() {\n if (this._element.disabled || $(this._element).hasClass(ClassName.DISABLED) || !$(this._menu).hasClass(ClassName.SHOW)) {\n return\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n }\n const hideEvent = $.Event(Event.HIDE, relatedTarget)\n const parent = Dropdown._getParentFromElement(this._element)\n\n $(parent).trigger(hideEvent)\n\n if (hideEvent.isDefaultPrevented()) {\n return\n }\n\n $(this._menu).toggleClass(ClassName.SHOW)\n $(parent)\n .toggleClass(ClassName.SHOW)\n .trigger($.Event(Event.HIDDEN, relatedTarget))\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n $(this._element).off(EVENT_KEY)\n this._element = null\n this._menu = null\n if (this._popper !== null) {\n this._popper.destroy()\n this._popper = null\n }\n }\n\n update() {\n this._inNavbar = this._detectNavbar()\n if (this._popper !== null) {\n this._popper.scheduleUpdate()\n }\n }\n\n // Private\n\n _addEventListeners() {\n $(this._element).on(Event.CLICK, (event) => {\n event.preventDefault()\n event.stopPropagation()\n this.toggle()\n })\n }\n\n _getConfig(config) {\n config = {\n ...this.constructor.Default,\n ...$(this._element).data(),\n ...config\n }\n\n Util.typeCheckConfig(\n NAME,\n config,\n this.constructor.DefaultType\n )\n\n return config\n }\n\n _getMenuElement() {\n if (!this._menu) {\n const parent = Dropdown._getParentFromElement(this._element)\n\n if (parent) {\n this._menu = parent.querySelector(Selector.MENU)\n }\n }\n return this._menu\n }\n\n _getPlacement() {\n const $parentDropdown = $(this._element.parentNode)\n let placement = AttachmentMap.BOTTOM\n\n // Handle dropup\n if ($parentDropdown.hasClass(ClassName.DROPUP)) {\n placement = AttachmentMap.TOP\n if ($(this._menu).hasClass(ClassName.MENURIGHT)) {\n placement = AttachmentMap.TOPEND\n }\n } else if ($parentDropdown.hasClass(ClassName.DROPRIGHT)) {\n placement = AttachmentMap.RIGHT\n } else if ($parentDropdown.hasClass(ClassName.DROPLEFT)) {\n placement = AttachmentMap.LEFT\n } else if ($(this._menu).hasClass(ClassName.MENURIGHT)) {\n placement = AttachmentMap.BOTTOMEND\n }\n return placement\n }\n\n _detectNavbar() {\n return $(this._element).closest('.navbar').length > 0\n }\n\n _getOffset() {\n const offset = {}\n\n if (typeof this._config.offset === 'function') {\n offset.fn = (data) => {\n data.offsets = {\n ...data.offsets,\n ...this._config.offset(data.offsets, this._element) || {}\n }\n\n return data\n }\n } else {\n offset.offset = this._config.offset\n }\n\n return offset\n }\n\n _getPopperConfig() {\n const popperConfig = {\n placement: this._getPlacement(),\n modifiers: {\n offset: this._getOffset(),\n flip: {\n enabled: this._config.flip\n },\n preventOverflow: {\n boundariesElement: this._config.boundary\n }\n }\n }\n\n // Disable Popper.js if we have a static display\n if (this._config.display === 'static') {\n popperConfig.modifiers.applyStyle = {\n enabled: false\n }\n }\n\n return popperConfig\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = typeof config === 'object' ? config : null\n\n if (!data) {\n data = new Dropdown(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config]()\n }\n })\n }\n\n static _clearMenus(event) {\n if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH ||\n event.type === 'keyup' && event.which !== TAB_KEYCODE)) {\n return\n }\n\n const toggles = [].slice.call(document.querySelectorAll(Selector.DATA_TOGGLE))\n\n for (let i = 0, len = toggles.length; i < len; i++) {\n const parent = Dropdown._getParentFromElement(toggles[i])\n const context = $(toggles[i]).data(DATA_KEY)\n const relatedTarget = {\n relatedTarget: toggles[i]\n }\n\n if (event && event.type === 'click') {\n relatedTarget.clickEvent = event\n }\n\n if (!context) {\n continue\n }\n\n const dropdownMenu = context._menu\n if (!$(parent).hasClass(ClassName.SHOW)) {\n continue\n }\n\n if (event && (event.type === 'click' &&\n /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) &&\n $.contains(parent, event.target)) {\n continue\n }\n\n const hideEvent = $.Event(Event.HIDE, relatedTarget)\n $(parent).trigger(hideEvent)\n if (hideEvent.isDefaultPrevented()) {\n continue\n }\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n $(document.body).children().off('mouseover', null, $.noop)\n }\n\n toggles[i].setAttribute('aria-expanded', 'false')\n\n $(dropdownMenu).removeClass(ClassName.SHOW)\n $(parent)\n .removeClass(ClassName.SHOW)\n .trigger($.Event(Event.HIDDEN, relatedTarget))\n }\n }\n\n static _getParentFromElement(element) {\n let parent\n const selector = Util.getSelectorFromElement(element)\n\n if (selector) {\n parent = document.querySelector(selector)\n }\n\n return parent || element.parentNode\n }\n\n // eslint-disable-next-line complexity\n static _dataApiKeydownHandler(event) {\n // If not input/textarea:\n // - And not a key in REGEXP_KEYDOWN => not a dropdown command\n // If input/textarea:\n // - If space key => not a dropdown command\n // - If key is other than escape\n // - If key is not up or down => not a dropdown command\n // - If trigger inside the menu => not a dropdown command\n if (/input|textarea/i.test(event.target.tagName)\n ? event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE &&\n (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE ||\n $(event.target).closest(Selector.MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {\n return\n }\n\n event.preventDefault()\n event.stopPropagation()\n\n if (this.disabled || $(this).hasClass(ClassName.DISABLED)) {\n return\n }\n\n const parent = Dropdown._getParentFromElement(this)\n const isActive = $(parent).hasClass(ClassName.SHOW)\n\n if (!isActive || isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) {\n if (event.which === ESCAPE_KEYCODE) {\n const toggle = parent.querySelector(Selector.DATA_TOGGLE)\n $(toggle).trigger('focus')\n }\n\n $(this).trigger('click')\n return\n }\n\n const items = [].slice.call(parent.querySelectorAll(Selector.VISIBLE_ITEMS))\n\n if (items.length === 0) {\n return\n }\n\n let index = items.indexOf(event.target)\n\n if (event.which === ARROW_UP_KEYCODE && index > 0) { // Up\n index--\n }\n\n if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) { // Down\n index++\n }\n\n if (index < 0) {\n index = 0\n }\n\n items[index].focus()\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document)\n .on(Event.KEYDOWN_DATA_API, Selector.DATA_TOGGLE, Dropdown._dataApiKeydownHandler)\n .on(Event.KEYDOWN_DATA_API, Selector.MENU, Dropdown._dataApiKeydownHandler)\n .on(`${Event.CLICK_DATA_API} ${Event.KEYUP_DATA_API}`, Dropdown._clearMenus)\n .on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {\n event.preventDefault()\n event.stopPropagation()\n Dropdown._jQueryInterface.call($(this), 'toggle')\n })\n .on(Event.CLICK_DATA_API, Selector.FORM_CHILD, (e) => {\n e.stopPropagation()\n })\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Dropdown._jQueryInterface\n$.fn[NAME].Constructor = Dropdown\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Dropdown._jQueryInterface\n}\n\n\nexport default Dropdown\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'modal'\nconst VERSION = '4.3.1'\nconst DATA_KEY = 'bs.modal'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst ESCAPE_KEYCODE = 27 // KeyboardEvent.which value for Escape (Esc) key\n\nconst Default = {\n backdrop : true,\n keyboard : true,\n focus : true,\n show : true\n}\n\nconst DefaultType = {\n backdrop : '(boolean|string)',\n keyboard : 'boolean',\n focus : 'boolean',\n show : 'boolean'\n}\n\nconst Event = {\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n FOCUSIN : `focusin${EVENT_KEY}`,\n RESIZE : `resize${EVENT_KEY}`,\n CLICK_DISMISS : `click.dismiss${EVENT_KEY}`,\n KEYDOWN_DISMISS : `keydown.dismiss${EVENT_KEY}`,\n MOUSEUP_DISMISS : `mouseup.dismiss${EVENT_KEY}`,\n MOUSEDOWN_DISMISS : `mousedown.dismiss${EVENT_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n}\n\nconst ClassName = {\n SCROLLABLE : 'modal-dialog-scrollable',\n SCROLLBAR_MEASURER : 'modal-scrollbar-measure',\n BACKDROP : 'modal-backdrop',\n OPEN : 'modal-open',\n FADE : 'fade',\n SHOW : 'show'\n}\n\nconst Selector = {\n DIALOG : '.modal-dialog',\n MODAL_BODY : '.modal-body',\n DATA_TOGGLE : '[data-toggle=\"modal\"]',\n DATA_DISMISS : '[data-dismiss=\"modal\"]',\n FIXED_CONTENT : '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top',\n STICKY_CONTENT : '.sticky-top'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Modal {\n constructor(element, config) {\n this._config = this._getConfig(config)\n this._element = element\n this._dialog = element.querySelector(Selector.DIALOG)\n this._backdrop = null\n this._isShown = false\n this._isBodyOverflowing = false\n this._ignoreBackdropClick = false\n this._isTransitioning = false\n this._scrollbarWidth = 0\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget)\n }\n\n show(relatedTarget) {\n if (this._isShown || this._isTransitioning) {\n return\n }\n\n if ($(this._element).hasClass(ClassName.FADE)) {\n this._isTransitioning = true\n }\n\n const showEvent = $.Event(Event.SHOW, {\n relatedTarget\n })\n\n $(this._element).trigger(showEvent)\n\n if (this._isShown || showEvent.isDefaultPrevented()) {\n return\n }\n\n this._isShown = true\n\n this._checkScrollbar()\n this._setScrollbar()\n\n this._adjustDialog()\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n $(this._element).on(\n Event.CLICK_DISMISS,\n Selector.DATA_DISMISS,\n (event) => this.hide(event)\n )\n\n $(this._dialog).on(Event.MOUSEDOWN_DISMISS, () => {\n $(this._element).one(Event.MOUSEUP_DISMISS, (event) => {\n if ($(event.target).is(this._element)) {\n this._ignoreBackdropClick = true\n }\n })\n })\n\n this._showBackdrop(() => this._showElement(relatedTarget))\n }\n\n hide(event) {\n if (event) {\n event.preventDefault()\n }\n\n if (!this._isShown || this._isTransitioning) {\n return\n }\n\n const hideEvent = $.Event(Event.HIDE)\n\n $(this._element).trigger(hideEvent)\n\n if (!this._isShown || hideEvent.isDefaultPrevented()) {\n return\n }\n\n this._isShown = false\n const transition = $(this._element).hasClass(ClassName.FADE)\n\n if (transition) {\n this._isTransitioning = true\n }\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n $(document).off(Event.FOCUSIN)\n\n $(this._element).removeClass(ClassName.SHOW)\n\n $(this._element).off(Event.CLICK_DISMISS)\n $(this._dialog).off(Event.MOUSEDOWN_DISMISS)\n\n\n if (transition) {\n const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n $(this._element)\n .one(Util.TRANSITION_END, (event) => this._hideModal(event))\n .emulateTransitionEnd(transitionDuration)\n } else {\n this._hideModal()\n }\n }\n\n dispose() {\n [window, this._element, this._dialog]\n .forEach((htmlElement) => $(htmlElement).off(EVENT_KEY))\n\n /**\n * `document` has 2 events `Event.FOCUSIN` and `Event.CLICK_DATA_API`\n * Do not move `document` in `htmlElements` array\n * It will remove `Event.CLICK_DATA_API` event that should remain\n */\n $(document).off(Event.FOCUSIN)\n\n $.removeData(this._element, DATA_KEY)\n\n this._config = null\n this._element = null\n this._dialog = null\n this._backdrop = null\n this._isShown = null\n this._isBodyOverflowing = null\n this._ignoreBackdropClick = null\n this._isTransitioning = null\n this._scrollbarWidth = null\n }\n\n handleUpdate() {\n this._adjustDialog()\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n Util.typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _showElement(relatedTarget) {\n const transition = $(this._element).hasClass(ClassName.FADE)\n\n if (!this._element.parentNode ||\n this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n // Don't move modal's DOM position\n document.body.appendChild(this._element)\n }\n\n this._element.style.display = 'block'\n this._element.removeAttribute('aria-hidden')\n this._element.setAttribute('aria-modal', true)\n\n if ($(this._dialog).hasClass(ClassName.SCROLLABLE)) {\n this._dialog.querySelector(Selector.MODAL_BODY).scrollTop = 0\n } else {\n this._element.scrollTop = 0\n }\n\n if (transition) {\n Util.reflow(this._element)\n }\n\n $(this._element).addClass(ClassName.SHOW)\n\n if (this._config.focus) {\n this._enforceFocus()\n }\n\n const shownEvent = $.Event(Event.SHOWN, {\n relatedTarget\n })\n\n const transitionComplete = () => {\n if (this._config.focus) {\n this._element.focus()\n }\n this._isTransitioning = false\n $(this._element).trigger(shownEvent)\n }\n\n if (transition) {\n const transitionDuration = Util.getTransitionDurationFromElement(this._dialog)\n\n $(this._dialog)\n .one(Util.TRANSITION_END, transitionComplete)\n .emulateTransitionEnd(transitionDuration)\n } else {\n transitionComplete()\n }\n }\n\n _enforceFocus() {\n $(document)\n .off(Event.FOCUSIN) // Guard against infinite focus loop\n .on(Event.FOCUSIN, (event) => {\n if (document !== event.target &&\n this._element !== event.target &&\n $(this._element).has(event.target).length === 0) {\n this._element.focus()\n }\n })\n }\n\n _setEscapeEvent() {\n if (this._isShown && this._config.keyboard) {\n $(this._element).on(Event.KEYDOWN_DISMISS, (event) => {\n if (event.which === ESCAPE_KEYCODE) {\n event.preventDefault()\n this.hide()\n }\n })\n } else if (!this._isShown) {\n $(this._element).off(Event.KEYDOWN_DISMISS)\n }\n }\n\n _setResizeEvent() {\n if (this._isShown) {\n $(window).on(Event.RESIZE, (event) => this.handleUpdate(event))\n } else {\n $(window).off(Event.RESIZE)\n }\n }\n\n _hideModal() {\n this._element.style.display = 'none'\n this._element.setAttribute('aria-hidden', true)\n this._element.removeAttribute('aria-modal')\n this._isTransitioning = false\n this._showBackdrop(() => {\n $(document.body).removeClass(ClassName.OPEN)\n this._resetAdjustments()\n this._resetScrollbar()\n $(this._element).trigger(Event.HIDDEN)\n })\n }\n\n _removeBackdrop() {\n if (this._backdrop) {\n $(this._backdrop).remove()\n this._backdrop = null\n }\n }\n\n _showBackdrop(callback) {\n const animate = $(this._element).hasClass(ClassName.FADE)\n ? ClassName.FADE : ''\n\n if (this._isShown && this._config.backdrop) {\n this._backdrop = document.createElement('div')\n this._backdrop.className = ClassName.BACKDROP\n\n if (animate) {\n this._backdrop.classList.add(animate)\n }\n\n $(this._backdrop).appendTo(document.body)\n\n $(this._element).on(Event.CLICK_DISMISS, (event) => {\n if (this._ignoreBackdropClick) {\n this._ignoreBackdropClick = false\n return\n }\n if (event.target !== event.currentTarget) {\n return\n }\n if (this._config.backdrop === 'static') {\n this._element.focus()\n } else {\n this.hide()\n }\n })\n\n if (animate) {\n Util.reflow(this._backdrop)\n }\n\n $(this._backdrop).addClass(ClassName.SHOW)\n\n if (!callback) {\n return\n }\n\n if (!animate) {\n callback()\n return\n }\n\n const backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop)\n\n $(this._backdrop)\n .one(Util.TRANSITION_END, callback)\n .emulateTransitionEnd(backdropTransitionDuration)\n } else if (!this._isShown && this._backdrop) {\n $(this._backdrop).removeClass(ClassName.SHOW)\n\n const callbackRemove = () => {\n this._removeBackdrop()\n if (callback) {\n callback()\n }\n }\n\n if ($(this._element).hasClass(ClassName.FADE)) {\n const backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop)\n\n $(this._backdrop)\n .one(Util.TRANSITION_END, callbackRemove)\n .emulateTransitionEnd(backdropTransitionDuration)\n } else {\n callbackRemove()\n }\n } else if (callback) {\n callback()\n }\n }\n\n // ----------------------------------------------------------------------\n // the following methods are used to handle overflowing modals\n // todo (fat): these should probably be refactored out of modal.js\n // ----------------------------------------------------------------------\n\n _adjustDialog() {\n const isModalOverflowing =\n this._element.scrollHeight > document.documentElement.clientHeight\n\n if (!this._isBodyOverflowing && isModalOverflowing) {\n this._element.style.paddingLeft = `${this._scrollbarWidth}px`\n }\n\n if (this._isBodyOverflowing && !isModalOverflowing) {\n this._element.style.paddingRight = `${this._scrollbarWidth}px`\n }\n }\n\n _resetAdjustments() {\n this._element.style.paddingLeft = ''\n this._element.style.paddingRight = ''\n }\n\n _checkScrollbar() {\n const rect = document.body.getBoundingClientRect()\n this._isBodyOverflowing = rect.left + rect.right < window.innerWidth\n this._scrollbarWidth = this._getScrollbarWidth()\n }\n\n _setScrollbar() {\n if (this._isBodyOverflowing) {\n // Note: DOMNode.style.paddingRight returns the actual value or '' if not set\n // while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set\n const fixedContent = [].slice.call(document.querySelectorAll(Selector.FIXED_CONTENT))\n const stickyContent = [].slice.call(document.querySelectorAll(Selector.STICKY_CONTENT))\n\n // Adjust fixed content padding\n $(fixedContent).each((index, element) => {\n const actualPadding = element.style.paddingRight\n const calculatedPadding = $(element).css('padding-right')\n $(element)\n .data('padding-right', actualPadding)\n .css('padding-right', `${parseFloat(calculatedPadding) + this._scrollbarWidth}px`)\n })\n\n // Adjust sticky content margin\n $(stickyContent).each((index, element) => {\n const actualMargin = element.style.marginRight\n const calculatedMargin = $(element).css('margin-right')\n $(element)\n .data('margin-right', actualMargin)\n .css('margin-right', `${parseFloat(calculatedMargin) - this._scrollbarWidth}px`)\n })\n\n // Adjust body padding\n const actualPadding = document.body.style.paddingRight\n const calculatedPadding = $(document.body).css('padding-right')\n $(document.body)\n .data('padding-right', actualPadding)\n .css('padding-right', `${parseFloat(calculatedPadding) + this._scrollbarWidth}px`)\n }\n\n $(document.body).addClass(ClassName.OPEN)\n }\n\n _resetScrollbar() {\n // Restore fixed content padding\n const fixedContent = [].slice.call(document.querySelectorAll(Selector.FIXED_CONTENT))\n $(fixedContent).each((index, element) => {\n const padding = $(element).data('padding-right')\n $(element).removeData('padding-right')\n element.style.paddingRight = padding ? padding : ''\n })\n\n // Restore sticky content\n const elements = [].slice.call(document.querySelectorAll(`${Selector.STICKY_CONTENT}`))\n $(elements).each((index, element) => {\n const margin = $(element).data('margin-right')\n if (typeof margin !== 'undefined') {\n $(element).css('margin-right', margin).removeData('margin-right')\n }\n })\n\n // Restore body padding\n const padding = $(document.body).data('padding-right')\n $(document.body).removeData('padding-right')\n document.body.style.paddingRight = padding ? padding : ''\n }\n\n _getScrollbarWidth() { // thx d.walsh\n const scrollDiv = document.createElement('div')\n scrollDiv.className = ClassName.SCROLLBAR_MEASURER\n document.body.appendChild(scrollDiv)\n const scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth\n document.body.removeChild(scrollDiv)\n return scrollbarWidth\n }\n\n // Static\n\n static _jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = {\n ...Default,\n ...$(this).data(),\n ...typeof config === 'object' && config ? config : {}\n }\n\n if (!data) {\n data = new Modal(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config](relatedTarget)\n } else if (_config.show) {\n data.show(relatedTarget)\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {\n let target\n const selector = Util.getSelectorFromElement(this)\n\n if (selector) {\n target = document.querySelector(selector)\n }\n\n const config = $(target).data(DATA_KEY)\n ? 'toggle' : {\n ...$(target).data(),\n ...$(this).data()\n }\n\n if (this.tagName === 'A' || this.tagName === 'AREA') {\n event.preventDefault()\n }\n\n const $target = $(target).one(Event.SHOW, (showEvent) => {\n if (showEvent.isDefaultPrevented()) {\n // Only register focus restorer if modal will actually get shown\n return\n }\n\n $target.one(Event.HIDDEN, () => {\n if ($(this).is(':visible')) {\n this.focus()\n }\n })\n })\n\n Modal._jQueryInterface.call($(target), config, this)\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Modal._jQueryInterface\n$.fn[NAME].Constructor = Modal\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Modal._jQueryInterface\n}\n\nexport default Modal\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): tools/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst uriAttrs = [\n 'background',\n 'cite',\n 'href',\n 'itemtype',\n 'longdesc',\n 'poster',\n 'src',\n 'xlink:href'\n]\n\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\nexport const DefaultWhitelist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n div: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n}\n\n/**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi\n\n/**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i\n\nfunction allowedAttribute(attr, allowedAttributeList) {\n const attrName = attr.nodeName.toLowerCase()\n\n if (allowedAttributeList.indexOf(attrName) !== -1) {\n if (uriAttrs.indexOf(attrName) !== -1) {\n return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN))\n }\n\n return true\n }\n\n const regExp = allowedAttributeList.filter((attrRegex) => attrRegex instanceof RegExp)\n\n // Check if a regular expression validates the attribute.\n for (let i = 0, l = regExp.length; i < l; i++) {\n if (attrName.match(regExp[i])) {\n return true\n }\n }\n\n return false\n}\n\nexport function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {\n if (unsafeHtml.length === 0) {\n return unsafeHtml\n }\n\n if (sanitizeFn && typeof sanitizeFn === 'function') {\n return sanitizeFn(unsafeHtml)\n }\n\n const domParser = new window.DOMParser()\n const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')\n const whitelistKeys = Object.keys(whiteList)\n const elements = [].slice.call(createdDocument.body.querySelectorAll('*'))\n\n for (let i = 0, len = elements.length; i < len; i++) {\n const el = elements[i]\n const elName = el.nodeName.toLowerCase()\n\n if (whitelistKeys.indexOf(el.nodeName.toLowerCase()) === -1) {\n el.parentNode.removeChild(el)\n\n continue\n }\n\n const attributeList = [].slice.call(el.attributes)\n const whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || [])\n\n attributeList.forEach((attr) => {\n if (!allowedAttribute(attr, whitelistedAttributes)) {\n el.removeAttribute(attr.nodeName)\n }\n })\n }\n\n return createdDocument.body.innerHTML\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n DefaultWhitelist,\n sanitizeHtml\n} from './tools/sanitizer'\nimport $ from 'jquery'\nimport Popper from 'popper.js'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'tooltip'\nconst VERSION = '4.3.1'\nconst DATA_KEY = 'bs.tooltip'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst CLASS_PREFIX = 'bs-tooltip'\nconst BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\nconst DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn']\n\nconst DefaultType = {\n animation : 'boolean',\n template : 'string',\n title : '(string|element|function)',\n trigger : 'string',\n delay : '(number|object)',\n html : 'boolean',\n selector : '(string|boolean)',\n placement : '(string|function)',\n offset : '(number|string|function)',\n container : '(string|element|boolean)',\n fallbackPlacement : '(string|array)',\n boundary : '(string|element)',\n sanitize : 'boolean',\n sanitizeFn : '(null|function)',\n whiteList : 'object'\n}\n\nconst AttachmentMap = {\n AUTO : 'auto',\n TOP : 'top',\n RIGHT : 'right',\n BOTTOM : 'bottom',\n LEFT : 'left'\n}\n\nconst Default = {\n animation : true,\n template : '
' +\n '
' +\n '
',\n trigger : 'hover focus',\n title : '',\n delay : 0,\n html : false,\n selector : false,\n placement : 'top',\n offset : 0,\n container : false,\n fallbackPlacement : 'flip',\n boundary : 'scrollParent',\n sanitize : true,\n sanitizeFn : null,\n whiteList : DefaultWhitelist\n}\n\nconst HoverState = {\n SHOW : 'show',\n OUT : 'out'\n}\n\nconst Event = {\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n INSERTED : `inserted${EVENT_KEY}`,\n CLICK : `click${EVENT_KEY}`,\n FOCUSIN : `focusin${EVENT_KEY}`,\n FOCUSOUT : `focusout${EVENT_KEY}`,\n MOUSEENTER : `mouseenter${EVENT_KEY}`,\n MOUSELEAVE : `mouseleave${EVENT_KEY}`\n}\n\nconst ClassName = {\n FADE : 'fade',\n SHOW : 'show'\n}\n\nconst Selector = {\n TOOLTIP : '.tooltip',\n TOOLTIP_INNER : '.tooltip-inner',\n ARROW : '.arrow'\n}\n\nconst Trigger = {\n HOVER : 'hover',\n FOCUS : 'focus',\n CLICK : 'click',\n MANUAL : 'manual'\n}\n\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Tooltip {\n constructor(element, config) {\n /**\n * Check for Popper dependency\n * Popper - https://popper.js.org\n */\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s tooltips require Popper.js (https://popper.js.org/)')\n }\n\n // private\n this._isEnabled = true\n this._timeout = 0\n this._hoverState = ''\n this._activeTrigger = {}\n this._popper = null\n\n // Protected\n this.element = element\n this.config = this._getConfig(config)\n this.tip = null\n\n this._setListeners()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n static get Event() {\n return Event\n }\n\n static get EVENT_KEY() {\n return EVENT_KEY\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Public\n\n enable() {\n this._isEnabled = true\n }\n\n disable() {\n this._isEnabled = false\n }\n\n toggleEnabled() {\n this._isEnabled = !this._isEnabled\n }\n\n toggle(event) {\n if (!this._isEnabled) {\n return\n }\n\n if (event) {\n const dataKey = this.constructor.DATA_KEY\n let context = $(event.currentTarget).data(dataKey)\n\n if (!context) {\n context = new this.constructor(\n event.currentTarget,\n this._getDelegateConfig()\n )\n $(event.currentTarget).data(dataKey, context)\n }\n\n context._activeTrigger.click = !context._activeTrigger.click\n\n if (context._isWithActiveTrigger()) {\n context._enter(null, context)\n } else {\n context._leave(null, context)\n }\n } else {\n if ($(this.getTipElement()).hasClass(ClassName.SHOW)) {\n this._leave(null, this)\n return\n }\n\n this._enter(null, this)\n }\n }\n\n dispose() {\n clearTimeout(this._timeout)\n\n $.removeData(this.element, this.constructor.DATA_KEY)\n\n $(this.element).off(this.constructor.EVENT_KEY)\n $(this.element).closest('.modal').off('hide.bs.modal')\n\n if (this.tip) {\n $(this.tip).remove()\n }\n\n this._isEnabled = null\n this._timeout = null\n this._hoverState = null\n this._activeTrigger = null\n if (this._popper !== null) {\n this._popper.destroy()\n }\n\n this._popper = null\n this.element = null\n this.config = null\n this.tip = null\n }\n\n show() {\n if ($(this.element).css('display') === 'none') {\n throw new Error('Please use show on visible elements')\n }\n\n const showEvent = $.Event(this.constructor.Event.SHOW)\n if (this.isWithContent() && this._isEnabled) {\n $(this.element).trigger(showEvent)\n\n const shadowRoot = Util.findShadowRoot(this.element)\n const isInTheDom = $.contains(\n shadowRoot !== null ? shadowRoot : this.element.ownerDocument.documentElement,\n this.element\n )\n\n if (showEvent.isDefaultPrevented() || !isInTheDom) {\n return\n }\n\n const tip = this.getTipElement()\n const tipId = Util.getUID(this.constructor.NAME)\n\n tip.setAttribute('id', tipId)\n this.element.setAttribute('aria-describedby', tipId)\n\n this.setContent()\n\n if (this.config.animation) {\n $(tip).addClass(ClassName.FADE)\n }\n\n const placement = typeof this.config.placement === 'function'\n ? this.config.placement.call(this, tip, this.element)\n : this.config.placement\n\n const attachment = this._getAttachment(placement)\n this.addAttachmentClass(attachment)\n\n const container = this._getContainer()\n $(tip).data(this.constructor.DATA_KEY, this)\n\n if (!$.contains(this.element.ownerDocument.documentElement, this.tip)) {\n $(tip).appendTo(container)\n }\n\n $(this.element).trigger(this.constructor.Event.INSERTED)\n\n this._popper = new Popper(this.element, tip, {\n placement: attachment,\n modifiers: {\n offset: this._getOffset(),\n flip: {\n behavior: this.config.fallbackPlacement\n },\n arrow: {\n element: Selector.ARROW\n },\n preventOverflow: {\n boundariesElement: this.config.boundary\n }\n },\n onCreate: (data) => {\n if (data.originalPlacement !== data.placement) {\n this._handlePopperPlacementChange(data)\n }\n },\n onUpdate: (data) => this._handlePopperPlacementChange(data)\n })\n\n $(tip).addClass(ClassName.SHOW)\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement) {\n $(document.body).children().on('mouseover', null, $.noop)\n }\n\n const complete = () => {\n if (this.config.animation) {\n this._fixTransition()\n }\n const prevHoverState = this._hoverState\n this._hoverState = null\n\n $(this.element).trigger(this.constructor.Event.SHOWN)\n\n if (prevHoverState === HoverState.OUT) {\n this._leave(null, this)\n }\n }\n\n if ($(this.tip).hasClass(ClassName.FADE)) {\n const transitionDuration = Util.getTransitionDurationFromElement(this.tip)\n\n $(this.tip)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n } else {\n complete()\n }\n }\n }\n\n hide(callback) {\n const tip = this.getTipElement()\n const hideEvent = $.Event(this.constructor.Event.HIDE)\n const complete = () => {\n if (this._hoverState !== HoverState.SHOW && tip.parentNode) {\n tip.parentNode.removeChild(tip)\n }\n\n this._cleanTipClass()\n this.element.removeAttribute('aria-describedby')\n $(this.element).trigger(this.constructor.Event.HIDDEN)\n if (this._popper !== null) {\n this._popper.destroy()\n }\n\n if (callback) {\n callback()\n }\n }\n\n $(this.element).trigger(hideEvent)\n\n if (hideEvent.isDefaultPrevented()) {\n return\n }\n\n $(tip).removeClass(ClassName.SHOW)\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n $(document.body).children().off('mouseover', null, $.noop)\n }\n\n this._activeTrigger[Trigger.CLICK] = false\n this._activeTrigger[Trigger.FOCUS] = false\n this._activeTrigger[Trigger.HOVER] = false\n\n if ($(this.tip).hasClass(ClassName.FADE)) {\n const transitionDuration = Util.getTransitionDurationFromElement(tip)\n\n $(tip)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n } else {\n complete()\n }\n\n this._hoverState = ''\n }\n\n update() {\n if (this._popper !== null) {\n this._popper.scheduleUpdate()\n }\n }\n\n // Protected\n\n isWithContent() {\n return Boolean(this.getTitle())\n }\n\n addAttachmentClass(attachment) {\n $(this.getTipElement()).addClass(`${CLASS_PREFIX}-${attachment}`)\n }\n\n getTipElement() {\n this.tip = this.tip || $(this.config.template)[0]\n return this.tip\n }\n\n setContent() {\n const tip = this.getTipElement()\n this.setElementContent($(tip.querySelectorAll(Selector.TOOLTIP_INNER)), this.getTitle())\n $(tip).removeClass(`${ClassName.FADE} ${ClassName.SHOW}`)\n }\n\n setElementContent($element, content) {\n if (typeof content === 'object' && (content.nodeType || content.jquery)) {\n // Content is a DOM node or a jQuery\n if (this.config.html) {\n if (!$(content).parent().is($element)) {\n $element.empty().append(content)\n }\n } else {\n $element.text($(content).text())\n }\n\n return\n }\n\n if (this.config.html) {\n if (this.config.sanitize) {\n content = sanitizeHtml(content, this.config.whiteList, this.config.sanitizeFn)\n }\n\n $element.html(content)\n } else {\n $element.text(content)\n }\n }\n\n getTitle() {\n let title = this.element.getAttribute('data-original-title')\n\n if (!title) {\n title = typeof this.config.title === 'function'\n ? this.config.title.call(this.element)\n : this.config.title\n }\n\n return title\n }\n\n // Private\n\n _getOffset() {\n const offset = {}\n\n if (typeof this.config.offset === 'function') {\n offset.fn = (data) => {\n data.offsets = {\n ...data.offsets,\n ...this.config.offset(data.offsets, this.element) || {}\n }\n\n return data\n }\n } else {\n offset.offset = this.config.offset\n }\n\n return offset\n }\n\n _getContainer() {\n if (this.config.container === false) {\n return document.body\n }\n\n if (Util.isElement(this.config.container)) {\n return $(this.config.container)\n }\n\n return $(document).find(this.config.container)\n }\n\n _getAttachment(placement) {\n return AttachmentMap[placement.toUpperCase()]\n }\n\n _setListeners() {\n const triggers = this.config.trigger.split(' ')\n\n triggers.forEach((trigger) => {\n if (trigger === 'click') {\n $(this.element).on(\n this.constructor.Event.CLICK,\n this.config.selector,\n (event) => this.toggle(event)\n )\n } else if (trigger !== Trigger.MANUAL) {\n const eventIn = trigger === Trigger.HOVER\n ? this.constructor.Event.MOUSEENTER\n : this.constructor.Event.FOCUSIN\n const eventOut = trigger === Trigger.HOVER\n ? this.constructor.Event.MOUSELEAVE\n : this.constructor.Event.FOCUSOUT\n\n $(this.element)\n .on(\n eventIn,\n this.config.selector,\n (event) => this._enter(event)\n )\n .on(\n eventOut,\n this.config.selector,\n (event) => this._leave(event)\n )\n }\n })\n\n $(this.element).closest('.modal').on(\n 'hide.bs.modal',\n () => {\n if (this.element) {\n this.hide()\n }\n }\n )\n\n if (this.config.selector) {\n this.config = {\n ...this.config,\n trigger: 'manual',\n selector: ''\n }\n } else {\n this._fixTitle()\n }\n }\n\n _fixTitle() {\n const titleType = typeof this.element.getAttribute('data-original-title')\n\n if (this.element.getAttribute('title') || titleType !== 'string') {\n this.element.setAttribute(\n 'data-original-title',\n this.element.getAttribute('title') || ''\n )\n\n this.element.setAttribute('title', '')\n }\n }\n\n _enter(event, context) {\n const dataKey = this.constructor.DATA_KEY\n context = context || $(event.currentTarget).data(dataKey)\n\n if (!context) {\n context = new this.constructor(\n event.currentTarget,\n this._getDelegateConfig()\n )\n $(event.currentTarget).data(dataKey, context)\n }\n\n if (event) {\n context._activeTrigger[\n event.type === 'focusin' ? Trigger.FOCUS : Trigger.HOVER\n ] = true\n }\n\n if ($(context.getTipElement()).hasClass(ClassName.SHOW) || context._hoverState === HoverState.SHOW) {\n context._hoverState = HoverState.SHOW\n return\n }\n\n clearTimeout(context._timeout)\n\n context._hoverState = HoverState.SHOW\n\n if (!context.config.delay || !context.config.delay.show) {\n context.show()\n return\n }\n\n context._timeout = setTimeout(() => {\n if (context._hoverState === HoverState.SHOW) {\n context.show()\n }\n }, context.config.delay.show)\n }\n\n _leave(event, context) {\n const dataKey = this.constructor.DATA_KEY\n context = context || $(event.currentTarget).data(dataKey)\n\n if (!context) {\n context = new this.constructor(\n event.currentTarget,\n this._getDelegateConfig()\n )\n $(event.currentTarget).data(dataKey, context)\n }\n\n if (event) {\n context._activeTrigger[\n event.type === 'focusout' ? Trigger.FOCUS : Trigger.HOVER\n ] = false\n }\n\n if (context._isWithActiveTrigger()) {\n return\n }\n\n clearTimeout(context._timeout)\n\n context._hoverState = HoverState.OUT\n\n if (!context.config.delay || !context.config.delay.hide) {\n context.hide()\n return\n }\n\n context._timeout = setTimeout(() => {\n if (context._hoverState === HoverState.OUT) {\n context.hide()\n }\n }, context.config.delay.hide)\n }\n\n _isWithActiveTrigger() {\n for (const trigger in this._activeTrigger) {\n if (this._activeTrigger[trigger]) {\n return true\n }\n }\n\n return false\n }\n\n _getConfig(config) {\n const dataAttributes = $(this.element).data()\n\n Object.keys(dataAttributes)\n .forEach((dataAttr) => {\n if (DISALLOWED_ATTRIBUTES.indexOf(dataAttr) !== -1) {\n delete dataAttributes[dataAttr]\n }\n })\n\n config = {\n ...this.constructor.Default,\n ...dataAttributes,\n ...typeof config === 'object' && config ? config : {}\n }\n\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay\n }\n }\n\n if (typeof config.title === 'number') {\n config.title = config.title.toString()\n }\n\n if (typeof config.content === 'number') {\n config.content = config.content.toString()\n }\n\n Util.typeCheckConfig(\n NAME,\n config,\n this.constructor.DefaultType\n )\n\n if (config.sanitize) {\n config.template = sanitizeHtml(config.template, config.whiteList, config.sanitizeFn)\n }\n\n return config\n }\n\n _getDelegateConfig() {\n const config = {}\n\n if (this.config) {\n for (const key in this.config) {\n if (this.constructor.Default[key] !== this.config[key]) {\n config[key] = this.config[key]\n }\n }\n }\n\n return config\n }\n\n _cleanTipClass() {\n const $tip = $(this.getTipElement())\n const tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX)\n if (tabClass !== null && tabClass.length) {\n $tip.removeClass(tabClass.join(''))\n }\n }\n\n _handlePopperPlacementChange(popperData) {\n const popperInstance = popperData.instance\n this.tip = popperInstance.popper\n this._cleanTipClass()\n this.addAttachmentClass(this._getAttachment(popperData.placement))\n }\n\n _fixTransition() {\n const tip = this.getTipElement()\n const initConfigAnimation = this.config.animation\n\n if (tip.getAttribute('x-placement') !== null) {\n return\n }\n\n $(tip).removeClass(ClassName.FADE)\n this.config.animation = false\n this.hide()\n this.show()\n this.config.animation = initConfigAnimation\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = typeof config === 'object' && config\n\n if (!data && /dispose|hide/.test(config)) {\n return\n }\n\n if (!data) {\n data = new Tooltip(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Tooltip._jQueryInterface\n$.fn[NAME].Constructor = Tooltip\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Tooltip._jQueryInterface\n}\n\nexport default Tooltip\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Tooltip from './tooltip'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'popover'\nconst VERSION = '4.3.1'\nconst DATA_KEY = 'bs.popover'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst CLASS_PREFIX = 'bs-popover'\nconst BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\n\nconst Default = {\n ...Tooltip.Default,\n placement : 'right',\n trigger : 'click',\n content : '',\n template : '
' +\n '
' +\n '

' +\n '
'\n}\n\nconst DefaultType = {\n ...Tooltip.DefaultType,\n content : '(string|element|function)'\n}\n\nconst ClassName = {\n FADE : 'fade',\n SHOW : 'show'\n}\n\nconst Selector = {\n TITLE : '.popover-header',\n CONTENT : '.popover-body'\n}\n\nconst Event = {\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n INSERTED : `inserted${EVENT_KEY}`,\n CLICK : `click${EVENT_KEY}`,\n FOCUSIN : `focusin${EVENT_KEY}`,\n FOCUSOUT : `focusout${EVENT_KEY}`,\n MOUSEENTER : `mouseenter${EVENT_KEY}`,\n MOUSELEAVE : `mouseleave${EVENT_KEY}`\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Popover extends Tooltip {\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n static get Event() {\n return Event\n }\n\n static get EVENT_KEY() {\n return EVENT_KEY\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Overrides\n\n isWithContent() {\n return this.getTitle() || this._getContent()\n }\n\n addAttachmentClass(attachment) {\n $(this.getTipElement()).addClass(`${CLASS_PREFIX}-${attachment}`)\n }\n\n getTipElement() {\n this.tip = this.tip || $(this.config.template)[0]\n return this.tip\n }\n\n setContent() {\n const $tip = $(this.getTipElement())\n\n // We use append for html objects to maintain js events\n this.setElementContent($tip.find(Selector.TITLE), this.getTitle())\n let content = this._getContent()\n if (typeof content === 'function') {\n content = content.call(this.element)\n }\n this.setElementContent($tip.find(Selector.CONTENT), content)\n\n $tip.removeClass(`${ClassName.FADE} ${ClassName.SHOW}`)\n }\n\n // Private\n\n _getContent() {\n return this.element.getAttribute('data-content') ||\n this.config.content\n }\n\n _cleanTipClass() {\n const $tip = $(this.getTipElement())\n const tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX)\n if (tabClass !== null && tabClass.length > 0) {\n $tip.removeClass(tabClass.join(''))\n }\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = typeof config === 'object' ? config : null\n\n if (!data && /dispose|hide/.test(config)) {\n return\n }\n\n if (!data) {\n data = new Popover(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Popover._jQueryInterface\n$.fn[NAME].Constructor = Popover\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Popover._jQueryInterface\n}\n\nexport default Popover\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'scrollspy'\nconst VERSION = '4.3.1'\nconst DATA_KEY = 'bs.scrollspy'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst Default = {\n offset : 10,\n method : 'auto',\n target : ''\n}\n\nconst DefaultType = {\n offset : 'number',\n method : 'string',\n target : '(string|element)'\n}\n\nconst Event = {\n ACTIVATE : `activate${EVENT_KEY}`,\n SCROLL : `scroll${EVENT_KEY}`,\n LOAD_DATA_API : `load${EVENT_KEY}${DATA_API_KEY}`\n}\n\nconst ClassName = {\n DROPDOWN_ITEM : 'dropdown-item',\n DROPDOWN_MENU : 'dropdown-menu',\n ACTIVE : 'active'\n}\n\nconst Selector = {\n DATA_SPY : '[data-spy=\"scroll\"]',\n ACTIVE : '.active',\n NAV_LIST_GROUP : '.nav, .list-group',\n NAV_LINKS : '.nav-link',\n NAV_ITEMS : '.nav-item',\n LIST_ITEMS : '.list-group-item',\n DROPDOWN : '.dropdown',\n DROPDOWN_ITEMS : '.dropdown-item',\n DROPDOWN_TOGGLE : '.dropdown-toggle'\n}\n\nconst OffsetMethod = {\n OFFSET : 'offset',\n POSITION : 'position'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass ScrollSpy {\n constructor(element, config) {\n this._element = element\n this._scrollElement = element.tagName === 'BODY' ? window : element\n this._config = this._getConfig(config)\n this._selector = `${this._config.target} ${Selector.NAV_LINKS},` +\n `${this._config.target} ${Selector.LIST_ITEMS},` +\n `${this._config.target} ${Selector.DROPDOWN_ITEMS}`\n this._offsets = []\n this._targets = []\n this._activeTarget = null\n this._scrollHeight = 0\n\n $(this._scrollElement).on(Event.SCROLL, (event) => this._process(event))\n\n this.refresh()\n this._process()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n refresh() {\n const autoMethod = this._scrollElement === this._scrollElement.window\n ? OffsetMethod.OFFSET : OffsetMethod.POSITION\n\n const offsetMethod = this._config.method === 'auto'\n ? autoMethod : this._config.method\n\n const offsetBase = offsetMethod === OffsetMethod.POSITION\n ? this._getScrollTop() : 0\n\n this._offsets = []\n this._targets = []\n\n this._scrollHeight = this._getScrollHeight()\n\n const targets = [].slice.call(document.querySelectorAll(this._selector))\n\n targets\n .map((element) => {\n let target\n const targetSelector = Util.getSelectorFromElement(element)\n\n if (targetSelector) {\n target = document.querySelector(targetSelector)\n }\n\n if (target) {\n const targetBCR = target.getBoundingClientRect()\n if (targetBCR.width || targetBCR.height) {\n // TODO (fat): remove sketch reliance on jQuery position/offset\n return [\n $(target)[offsetMethod]().top + offsetBase,\n targetSelector\n ]\n }\n }\n return null\n })\n .filter((item) => item)\n .sort((a, b) => a[0] - b[0])\n .forEach((item) => {\n this._offsets.push(item[0])\n this._targets.push(item[1])\n })\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n $(this._scrollElement).off(EVENT_KEY)\n\n this._element = null\n this._scrollElement = null\n this._config = null\n this._selector = null\n this._offsets = null\n this._targets = null\n this._activeTarget = null\n this._scrollHeight = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...typeof config === 'object' && config ? config : {}\n }\n\n if (typeof config.target !== 'string') {\n let id = $(config.target).attr('id')\n if (!id) {\n id = Util.getUID(NAME)\n $(config.target).attr('id', id)\n }\n config.target = `#${id}`\n }\n\n Util.typeCheckConfig(NAME, config, DefaultType)\n\n return config\n }\n\n _getScrollTop() {\n return this._scrollElement === window\n ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop\n }\n\n _getScrollHeight() {\n return this._scrollElement.scrollHeight || Math.max(\n document.body.scrollHeight,\n document.documentElement.scrollHeight\n )\n }\n\n _getOffsetHeight() {\n return this._scrollElement === window\n ? window.innerHeight : this._scrollElement.getBoundingClientRect().height\n }\n\n _process() {\n const scrollTop = this._getScrollTop() + this._config.offset\n const scrollHeight = this._getScrollHeight()\n const maxScroll = this._config.offset +\n scrollHeight -\n this._getOffsetHeight()\n\n if (this._scrollHeight !== scrollHeight) {\n this.refresh()\n }\n\n if (scrollTop >= maxScroll) {\n const target = this._targets[this._targets.length - 1]\n\n if (this._activeTarget !== target) {\n this._activate(target)\n }\n return\n }\n\n if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n this._activeTarget = null\n this._clear()\n return\n }\n\n const offsetLength = this._offsets.length\n for (let i = offsetLength; i--;) {\n const isActiveTarget = this._activeTarget !== this._targets[i] &&\n scrollTop >= this._offsets[i] &&\n (typeof this._offsets[i + 1] === 'undefined' ||\n scrollTop < this._offsets[i + 1])\n\n if (isActiveTarget) {\n this._activate(this._targets[i])\n }\n }\n }\n\n _activate(target) {\n this._activeTarget = target\n\n this._clear()\n\n const queries = this._selector\n .split(',')\n .map((selector) => `${selector}[data-target=\"${target}\"],${selector}[href=\"${target}\"]`)\n\n const $link = $([].slice.call(document.querySelectorAll(queries.join(','))))\n\n if ($link.hasClass(ClassName.DROPDOWN_ITEM)) {\n $link.closest(Selector.DROPDOWN).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE)\n $link.addClass(ClassName.ACTIVE)\n } else {\n // Set triggered link as active\n $link.addClass(ClassName.ACTIVE)\n // Set triggered links parents as active\n // With both
    and
"),e.join("")},legend:{labels:{generateLabels:function(t){var e=t.data;return e.labels.length&&e.datasets.length?e.labels.map(function(n,i){var a=t.getDatasetMeta(0),o=e.datasets[0],s=a.data[i],l=s&&s.custom||{},u=r.valueAtIndexOrDefault,d=t.options.elements.arc;return{text:n,fillStyle:l.backgroundColor?l.backgroundColor:u(o.backgroundColor,i,d.backgroundColor),strokeStyle:l.borderColor?l.borderColor:u(o.borderColor,i,d.borderColor),lineWidth:l.borderWidth?l.borderWidth:u(o.borderWidth,i,d.borderWidth),hidden:isNaN(o.data[i])||a.data[i].hidden,index:i}}):[]}},onClick:function(t,e){var n,i,a,r=e.index,o=this.chart;for(n=0,i=(o.data.datasets||[]).length;n=Math.PI?-1:g<-Math.PI?1:0))+f,p={x:Math.cos(g),y:Math.sin(g)},v={x:Math.cos(m),y:Math.sin(m)},y=g<=0&&m>=0||g<=2*Math.PI&&2*Math.PI<=m,b=g<=.5*Math.PI&&.5*Math.PI<=m||g<=2.5*Math.PI&&2.5*Math.PI<=m,x=g<=-Math.PI&&-Math.PI<=m||g<=Math.PI&&Math.PI<=m,_=g<=.5*-Math.PI&&.5*-Math.PI<=m||g<=1.5*Math.PI&&1.5*Math.PI<=m,k=h/100,w={x:x?-1:Math.min(p.x*(p.x<0?1:k),v.x*(v.x<0?1:k)),y:_?-1:Math.min(p.y*(p.y<0?1:k),v.y*(v.y<0?1:k))},M={x:y?1:Math.max(p.x*(p.x>0?1:k),v.x*(v.x>0?1:k)),y:b?1:Math.max(p.y*(p.y>0?1:k),v.y*(v.y>0?1:k))},S={width:.5*(M.x-w.x),height:.5*(M.y-w.y)};u=Math.min(s/S.width,l/S.height),d={x:-.5*(M.x+w.x),y:-.5*(M.y+w.y)}}n.borderWidth=e.getMaxBorderWidth(c.data),n.outerRadius=Math.max((u-n.borderWidth)/2,0),n.innerRadius=Math.max(h?n.outerRadius/100*h:0,0),n.radiusLength=(n.outerRadius-n.innerRadius)/n.getVisibleDatasetCount(),n.offsetX=d.x*n.outerRadius,n.offsetY=d.y*n.outerRadius,c.total=e.calculateTotal(),e.outerRadius=n.outerRadius-n.radiusLength*e.getRingIndex(e.index),e.innerRadius=Math.max(e.outerRadius-n.radiusLength,0),r.each(c.data,function(n,i){e.updateElement(n,i,t)})},updateElement:function(t,e,n){var i=this,a=i.chart,o=a.chartArea,s=a.options,l=s.animation,u=(o.left+o.right)/2,d=(o.top+o.bottom)/2,c=s.rotation,h=s.rotation,f=i.getDataset(),g=n&&l.animateRotate?0:t.hidden?0:i.calculateCircumference(f.data[e])*(s.circumference/(2*Math.PI)),m=n&&l.animateScale?0:i.innerRadius,p=n&&l.animateScale?0:i.outerRadius,v=r.valueAtIndexOrDefault;r.extend(t,{_datasetIndex:i.index,_index:e,_model:{x:u+a.offsetX,y:d+a.offsetY,startAngle:c,endAngle:h,circumference:g,outerRadius:p,innerRadius:m,label:v(f.label,e,a.data.labels[e])}});var y=t._model;this.removeHoverStyle(t),n&&l.animateRotate||(y.startAngle=0===e?s.rotation:i.getMeta().data[e-1]._model.endAngle,y.endAngle=y.startAngle+y.circumference),t.pivot()},removeHoverStyle:function(e){t.DatasetController.prototype.removeHoverStyle.call(this,e,this.chart.options.elements.arc)},calculateTotal:function(){var t,e=this.getDataset(),n=this.getMeta(),i=0;return r.each(n.data,function(n,a){t=e.data[a],isNaN(t)||n.hidden||(i+=Math.abs(t))}),i},calculateCircumference:function(t){var e=this.getMeta().total;return e>0&&!isNaN(t)?2*Math.PI*(t/e):0},getMaxBorderWidth:function(t){for(var e,n,i=0,a=this.index,r=t.length,o=0;o(i=e>i?e:i)?n:i;return i}})}},{25:25,40:40,45:45}],18:[function(t,e,n){"use strict";var i=t(25),a=t(40),r=t(45);i._set("line",{showLines:!0,spanGaps:!1,hover:{mode:"label"},scales:{xAxes:[{type:"category",id:"x-axis-0"}],yAxes:[{type:"linear",id:"y-axis-0"}]}}),e.exports=function(t){function e(t,e){return r.valueOrDefault(t.showLine,e.showLines)}t.controllers.line=t.DatasetController.extend({datasetElementType:a.Line,dataElementType:a.Point,update:function(t){var n,i,a,o=this,s=o.getMeta(),l=s.dataset,u=s.data||[],d=o.chart.options,c=d.elements.line,h=o.getScaleForId(s.yAxisID),f=o.getDataset(),g=e(f,d);for(g&&(a=l.custom||{},void 0!==f.tension&&void 0===f.lineTension&&(f.lineTension=f.tension),l._scale=h,l._datasetIndex=o.index,l._children=u,l._model={spanGaps:f.spanGaps?f.spanGaps:d.spanGaps,tension:a.tension?a.tension:r.valueOrDefault(f.lineTension,c.tension),backgroundColor:a.backgroundColor?a.backgroundColor:f.backgroundColor||c.backgroundColor,borderWidth:a.borderWidth?a.borderWidth:f.borderWidth||c.borderWidth,borderColor:a.borderColor?a.borderColor:f.borderColor||c.borderColor,borderCapStyle:a.borderCapStyle?a.borderCapStyle:f.borderCapStyle||c.borderCapStyle,borderDash:a.borderDash?a.borderDash:f.borderDash||c.borderDash,borderDashOffset:a.borderDashOffset?a.borderDashOffset:f.borderDashOffset||c.borderDashOffset,borderJoinStyle:a.borderJoinStyle?a.borderJoinStyle:f.borderJoinStyle||c.borderJoinStyle,fill:a.fill?a.fill:void 0!==f.fill?f.fill:c.fill,steppedLine:a.steppedLine?a.steppedLine:r.valueOrDefault(f.steppedLine,c.stepped),cubicInterpolationMode:a.cubicInterpolationMode?a.cubicInterpolationMode:r.valueOrDefault(f.cubicInterpolationMode,c.cubicInterpolationMode)},l.pivot()),n=0,i=u.length;n');var n=t.data,i=n.datasets,a=n.labels;if(i.length)for(var r=0;r'),a[r]&&e.push(a[r]),e.push("");return e.push(""),e.join("")},legend:{labels:{generateLabels:function(t){var e=t.data;return e.labels.length&&e.datasets.length?e.labels.map(function(n,i){var a=t.getDatasetMeta(0),o=e.datasets[0],s=a.data[i].custom||{},l=r.valueAtIndexOrDefault,u=t.options.elements.arc;return{text:n,fillStyle:s.backgroundColor?s.backgroundColor:l(o.backgroundColor,i,u.backgroundColor),strokeStyle:s.borderColor?s.borderColor:l(o.borderColor,i,u.borderColor),lineWidth:s.borderWidth?s.borderWidth:l(o.borderWidth,i,u.borderWidth),hidden:isNaN(o.data[i])||a.data[i].hidden,index:i}}):[]}},onClick:function(t,e){var n,i,a,r=e.index,o=this.chart;for(n=0,i=(o.data.datasets||[]).length;n0&&!isNaN(t)?2*Math.PI/e:0}})}},{25:25,40:40,45:45}],20:[function(t,e,n){"use strict";var i=t(25),a=t(40),r=t(45);i._set("radar",{scale:{type:"radialLinear"},elements:{line:{tension:0}}}),e.exports=function(t){t.controllers.radar=t.DatasetController.extend({datasetElementType:a.Line,dataElementType:a.Point,linkScales:r.noop,update:function(t){var e=this,n=e.getMeta(),i=n.dataset,a=n.data,o=i.custom||{},s=e.getDataset(),l=e.chart.options.elements.line,u=e.chart.scale;void 0!==s.tension&&void 0===s.lineTension&&(s.lineTension=s.tension),r.extend(n.dataset,{_datasetIndex:e.index,_scale:u,_children:a,_loop:!0,_model:{tension:o.tension?o.tension:r.valueOrDefault(s.lineTension,l.tension),backgroundColor:o.backgroundColor?o.backgroundColor:s.backgroundColor||l.backgroundColor,borderWidth:o.borderWidth?o.borderWidth:s.borderWidth||l.borderWidth,borderColor:o.borderColor?o.borderColor:s.borderColor||l.borderColor,fill:o.fill?o.fill:void 0!==s.fill?s.fill:l.fill,borderCapStyle:o.borderCapStyle?o.borderCapStyle:s.borderCapStyle||l.borderCapStyle,borderDash:o.borderDash?o.borderDash:s.borderDash||l.borderDash,borderDashOffset:o.borderDashOffset?o.borderDashOffset:s.borderDashOffset||l.borderDashOffset,borderJoinStyle:o.borderJoinStyle?o.borderJoinStyle:s.borderJoinStyle||l.borderJoinStyle}}),n.dataset.pivot(),r.each(a,function(n,i){e.updateElement(n,i,t)},e),e.updateBezierControlPoints()},updateElement:function(t,e,n){var i=this,a=t.custom||{},o=i.getDataset(),s=i.chart.scale,l=i.chart.options.elements.point,u=s.getPointPositionForValue(e,o.data[e]);void 0!==o.radius&&void 0===o.pointRadius&&(o.pointRadius=o.radius),void 0!==o.hitRadius&&void 0===o.pointHitRadius&&(o.pointHitRadius=o.hitRadius),r.extend(t,{_datasetIndex:i.index,_index:e,_scale:s,_model:{x:n?s.xCenter:u.x,y:n?s.yCenter:u.y,tension:a.tension?a.tension:r.valueOrDefault(o.lineTension,i.chart.options.elements.line.tension),radius:a.radius?a.radius:r.valueAtIndexOrDefault(o.pointRadius,e,l.radius),backgroundColor:a.backgroundColor?a.backgroundColor:r.valueAtIndexOrDefault(o.pointBackgroundColor,e,l.backgroundColor),borderColor:a.borderColor?a.borderColor:r.valueAtIndexOrDefault(o.pointBorderColor,e,l.borderColor),borderWidth:a.borderWidth?a.borderWidth:r.valueAtIndexOrDefault(o.pointBorderWidth,e,l.borderWidth),pointStyle:a.pointStyle?a.pointStyle:r.valueAtIndexOrDefault(o.pointStyle,e,l.pointStyle),hitRadius:a.hitRadius?a.hitRadius:r.valueAtIndexOrDefault(o.pointHitRadius,e,l.hitRadius)}}),t._model.skip=a.skip?a.skip:isNaN(t._model.x)||isNaN(t._model.y)},updateBezierControlPoints:function(){var t=this.chart.chartArea,e=this.getMeta();r.each(e.data,function(n,i){var a=n._model,o=r.splineCurve(r.previousItem(e.data,i,!0)._model,a,r.nextItem(e.data,i,!0)._model,a.tension);a.controlPointPreviousX=Math.max(Math.min(o.previous.x,t.right),t.left),a.controlPointPreviousY=Math.max(Math.min(o.previous.y,t.bottom),t.top),a.controlPointNextX=Math.max(Math.min(o.next.x,t.right),t.left),a.controlPointNextY=Math.max(Math.min(o.next.y,t.bottom),t.top),n.pivot()})},setHoverStyle:function(t){var e=this.chart.data.datasets[t._datasetIndex],n=t.custom||{},i=t._index,a=t._model;a.radius=n.hoverRadius?n.hoverRadius:r.valueAtIndexOrDefault(e.pointHoverRadius,i,this.chart.options.elements.point.hoverRadius),a.backgroundColor=n.hoverBackgroundColor?n.hoverBackgroundColor:r.valueAtIndexOrDefault(e.pointHoverBackgroundColor,i,r.getHoverColor(a.backgroundColor)),a.borderColor=n.hoverBorderColor?n.hoverBorderColor:r.valueAtIndexOrDefault(e.pointHoverBorderColor,i,r.getHoverColor(a.borderColor)),a.borderWidth=n.hoverBorderWidth?n.hoverBorderWidth:r.valueAtIndexOrDefault(e.pointHoverBorderWidth,i,a.borderWidth)},removeHoverStyle:function(t){var e=this.chart.data.datasets[t._datasetIndex],n=t.custom||{},i=t._index,a=t._model,o=this.chart.options.elements.point;a.radius=n.radius?n.radius:r.valueAtIndexOrDefault(e.pointRadius,i,o.radius),a.backgroundColor=n.backgroundColor?n.backgroundColor:r.valueAtIndexOrDefault(e.pointBackgroundColor,i,o.backgroundColor),a.borderColor=n.borderColor?n.borderColor:r.valueAtIndexOrDefault(e.pointBorderColor,i,o.borderColor),a.borderWidth=n.borderWidth?n.borderWidth:r.valueAtIndexOrDefault(e.pointBorderWidth,i,o.borderWidth)}})}},{25:25,40:40,45:45}],21:[function(t,e,n){"use strict";t(25)._set("scatter",{hover:{mode:"single"},scales:{xAxes:[{id:"x-axis-1",type:"linear",position:"bottom"}],yAxes:[{id:"y-axis-1",type:"linear",position:"left"}]},showLines:!1,tooltips:{callbacks:{title:function(){return""},label:function(t){return"("+t.xLabel+", "+t.yLabel+")"}}}}),e.exports=function(t){t.controllers.scatter=t.controllers.line}},{25:25}],22:[function(t,e,n){"use strict";var i=t(25),a=t(26),r=t(45);i._set("global",{animation:{duration:1e3,easing:"easeOutQuart",onProgress:r.noop,onComplete:r.noop}}),e.exports=function(t){t.Animation=a.extend({chart:null,currentStep:0,numSteps:60,easing:"",render:null,onAnimationProgress:null,onAnimationComplete:null}),t.animationService={frameDuration:17,animations:[],dropFrames:0,request:null,addAnimation:function(t,e,n,i){var a,r,o=this.animations;for(e.chart=t,i||(t.animating=!0),a=0,r=o.length;a1&&(n=Math.floor(t.dropFrames),t.dropFrames=t.dropFrames%1),t.advance(1+n);var i=Date.now();t.dropFrames+=(i-e)/t.frameDuration,t.animations.length>0&&t.requestAnimationFrame()},advance:function(t){for(var e,n,i=this.animations,a=0;a=e.numSteps?(r.callback(e.onAnimationComplete,[e],n),n.animating=!1,i.splice(a,1)):++a}},Object.defineProperty(t.Animation.prototype,"animationObject",{get:function(){return this}}),Object.defineProperty(t.Animation.prototype,"chartInstance",{get:function(){return this.chart},set:function(t){this.chart=t}})}},{25:25,26:26,45:45}],23:[function(t,e,n){"use strict";var i=t(25),a=t(45),r=t(28),o=t(48);e.exports=function(t){function e(t){var e=(t=t||{}).data=t.data||{};return e.datasets=e.datasets||[],e.labels=e.labels||[],t.options=a.configMerge(i.global,i[t.type],t.options||{}),t}function n(t){var e=t.options;e.scale?t.scale.options=e.scale:e.scales&&e.scales.xAxes.concat(e.scales.yAxes).forEach(function(e){t.scales[e.id].options=e}),t.tooltip._options=e.tooltips}function s(t){return"top"===t||"bottom"===t}var l=t.plugins;t.types={},t.instances={},t.controllers={},a.extend(t.prototype,{construct:function(n,i){var r=this;i=e(i);var s=o.acquireContext(n,i),l=s&&s.canvas,u=l&&l.height,d=l&&l.width;r.id=a.uid(),r.ctx=s,r.canvas=l,r.config=i,r.width=d,r.height=u,r.aspectRatio=u?d/u:null,r.options=i.options,r._bufferedRender=!1,r.chart=r,r.controller=r,t.instances[r.id]=r,Object.defineProperty(r,"data",{get:function(){return r.config.data},set:function(t){r.config.data=t}}),s&&l?(r.initialize(),r.update()):console.error("Failed to create chart: can't acquire context from the given item")},initialize:function(){var t=this;return l.notify(t,"beforeInit"),a.retinaScale(t,t.options.devicePixelRatio),t.bindEvents(),t.options.responsive&&t.resize(!0),t.ensureScalesHaveIDs(),t.buildScales(),t.initToolTip(),l.notify(t,"afterInit"),t},clear:function(){return a.canvas.clear(this),this},stop:function(){return t.animationService.cancelAnimation(this),this},resize:function(t){var e=this,n=e.options,i=e.canvas,r=n.maintainAspectRatio&&e.aspectRatio||null,o=Math.max(0,Math.floor(a.getMaximumWidth(i))),s=Math.max(0,Math.floor(r?o/r:a.getMaximumHeight(i)));if((e.width!==o||e.height!==s)&&(i.width=e.width=o,i.height=e.height=s,i.style.width=o+"px",i.style.height=s+"px",a.retinaScale(e,n.devicePixelRatio),!t)){var u={width:o,height:s};l.notify(e,"resize",[u]),e.options.onResize&&e.options.onResize(e,u),e.stop(),e.update(e.options.responsiveAnimationDuration)}},ensureScalesHaveIDs:function(){var t=this.options,e=t.scales||{},n=t.scale;a.each(e.xAxes,function(t,e){t.id=t.id||"x-axis-"+e}),a.each(e.yAxes,function(t,e){t.id=t.id||"y-axis-"+e}),n&&(n.id=n.id||"scale")},buildScales:function(){var e=this,n=e.options,i=e.scales={},r=[];n.scales&&(r=r.concat((n.scales.xAxes||[]).map(function(t){return{options:t,dtype:"category",dposition:"bottom"}}),(n.scales.yAxes||[]).map(function(t){return{options:t,dtype:"linear",dposition:"left"}}))),n.scale&&r.push({options:n.scale,dtype:"radialLinear",isDefault:!0,dposition:"chartArea"}),a.each(r,function(n){var r=n.options,o=a.valueOrDefault(r.type,n.dtype),l=t.scaleService.getScaleConstructor(o);if(l){s(r.position)!==s(n.dposition)&&(r.position=n.dposition);var u=new l({id:r.id,options:r,ctx:e.ctx,chart:e});i[u.id]=u,u.mergeTicksOptions(),n.isDefault&&(e.scale=u)}}),t.scaleService.addScalesToLayout(this)},buildOrUpdateControllers:function(){var e=this,n=[],i=[];return a.each(e.data.datasets,function(a,r){var o=e.getDatasetMeta(r),s=a.type||e.config.type;if(o.type&&o.type!==s&&(e.destroyDatasetMeta(r),o=e.getDatasetMeta(r)),o.type=s,n.push(o.type),o.controller)o.controller.updateIndex(r);else{var l=t.controllers[o.type];if(void 0===l)throw new Error('"'+o.type+'" is not a chart type.');o.controller=new l(e,r),i.push(o.controller)}},e),i},resetElements:function(){var t=this;a.each(t.data.datasets,function(e,n){t.getDatasetMeta(n).controller.reset()},t)},reset:function(){this.resetElements(),this.tooltip.initialize()},update:function(t){var e=this;if(t&&"object"==typeof t||(t={duration:t,lazy:arguments[1]}),n(e),!1!==l.notify(e,"beforeUpdate")){e.tooltip._data=e.data;var i=e.buildOrUpdateControllers();a.each(e.data.datasets,function(t,n){e.getDatasetMeta(n).controller.buildOrUpdateElements()},e),e.updateLayout(),a.each(i,function(t){t.reset()}),e.updateDatasets(),l.notify(e,"afterUpdate"),e._bufferedRender?e._bufferedRequest={duration:t.duration,easing:t.easing,lazy:t.lazy}:e.render(t)}},updateLayout:function(){var e=this;!1!==l.notify(e,"beforeLayout")&&(t.layoutService.update(this,this.width,this.height),l.notify(e,"afterScaleUpdate"),l.notify(e,"afterLayout"))},updateDatasets:function(){var t=this;if(!1!==l.notify(t,"beforeDatasetsUpdate")){for(var e=0,n=t.data.datasets.length;e=0;--n)e.isDatasetVisible(n)&&e.drawDataset(n,t);l.notify(e,"afterDatasetsDraw",[t])}},drawDataset:function(t,e){var n=this,i=n.getDatasetMeta(t),a={meta:i,index:t,easingValue:e};!1!==l.notify(n,"beforeDatasetDraw",[a])&&(i.controller.draw(e),l.notify(n,"afterDatasetDraw",[a]))},getElementAtEvent:function(t){return r.modes.single(this,t)},getElementsAtEvent:function(t){return r.modes.label(this,t,{intersect:!0})},getElementsAtXAxis:function(t){return r.modes["x-axis"](this,t,{intersect:!0})},getElementsAtEventForMode:function(t,e,n){var i=r.modes[e];return"function"==typeof i?i(this,t,n):[]},getDatasetAtEvent:function(t){return r.modes.dataset(this,t,{intersect:!0})},getDatasetMeta:function(t){var e=this,n=e.data.datasets[t];n._meta||(n._meta={});var i=n._meta[e.id];return i||(i=n._meta[e.id]={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null}),i},getVisibleDatasetCount:function(){for(var t=0,e=0,n=this.data.datasets.length;e0||(a.forEach(function(e){delete t[e]}),delete t._chartjs)}}var a=["push","pop","shift","splice","unshift"];t.DatasetController=function(t,e){this.initialize(t,e)},i.extend(t.DatasetController.prototype,{datasetElementType:null,dataElementType:null,initialize:function(t,e){var n=this;n.chart=t,n.index=e,n.linkScales(),n.addElements()},updateIndex:function(t){this.index=t},linkScales:function(){var t=this,e=t.getMeta(),n=t.getDataset();null===e.xAxisID&&(e.xAxisID=n.xAxisID||t.chart.options.scales.xAxes[0].id),null===e.yAxisID&&(e.yAxisID=n.yAxisID||t.chart.options.scales.yAxes[0].id)},getDataset:function(){return this.chart.data.datasets[this.index]},getMeta:function(){return this.chart.getDatasetMeta(this.index)},getScaleForId:function(t){return this.chart.scales[t]},reset:function(){this.update(!0)},destroy:function(){this._data&&n(this._data,this)},createMetaDataset:function(){var t=this,e=t.datasetElementType;return e&&new e({_chart:t.chart,_datasetIndex:t.index})},createMetaData:function(t){var e=this,n=e.dataElementType;return n&&new n({_chart:e.chart,_datasetIndex:e.index,_index:t})},addElements:function(){var t,e,n=this,i=n.getMeta(),a=n.getDataset().data||[],r=i.data;for(t=0,e=a.length;ti&&t.insertElements(i,a-i)},insertElements:function(t,e){for(var n=0;n=n[e].length&&n[e].push({}),!n[e][o].type||l.type&&l.type!==n[e][o].type?r.merge(n[e][o],[t.scaleService.getScaleDefaults(s),l]):r.merge(n[e][o],l)}else r._merger(e,n,i,a)}})},r.where=function(t,e){if(r.isArray(t)&&Array.prototype.filter)return t.filter(e);var n=[];return r.each(t,function(t){e(t)&&n.push(t)}),n},r.findIndex=Array.prototype.findIndex?function(t,e,n){return t.findIndex(e,n)}:function(t,e,n){n=void 0===n?t:n;for(var i=0,a=t.length;i=0;i--){var a=t[i];if(e(a))return a}},r.inherits=function(t){var e=this,n=t&&t.hasOwnProperty("constructor")?t.constructor:function(){return e.apply(this,arguments)},i=function(){this.constructor=n};return i.prototype=e.prototype,n.prototype=new i,n.extend=r.inherits,t&&r.extend(n.prototype,t),n.__super__=e.prototype,n},r.isNumber=function(t){return!isNaN(parseFloat(t))&&isFinite(t)},r.almostEquals=function(t,e,n){return Math.abs(t-e)t},r.max=function(t){return t.reduce(function(t,e){return isNaN(e)?t:Math.max(t,e)},Number.NEGATIVE_INFINITY)},r.min=function(t){return t.reduce(function(t,e){return isNaN(e)?t:Math.min(t,e)},Number.POSITIVE_INFINITY)},r.sign=Math.sign?function(t){return Math.sign(t)}:function(t){return 0==(t=+t)||isNaN(t)?t:t>0?1:-1},r.log10=Math.log10?function(t){return Math.log10(t)}:function(t){return Math.log(t)/Math.LN10},r.toRadians=function(t){return t*(Math.PI/180)},r.toDegrees=function(t){return t*(180/Math.PI)},r.getAngleFromPoint=function(t,e){var n=e.x-t.x,i=e.y-t.y,a=Math.sqrt(n*n+i*i),r=Math.atan2(i,n);return r<-.5*Math.PI&&(r+=2*Math.PI),{angle:r,distance:a}},r.distanceBetweenPoints=function(t,e){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))},r.aliasPixel=function(t){return t%2==0?0:.5},r.splineCurve=function(t,e,n,i){var a=t.skip?e:t,r=e,o=n.skip?e:n,s=Math.sqrt(Math.pow(r.x-a.x,2)+Math.pow(r.y-a.y,2)),l=Math.sqrt(Math.pow(o.x-r.x,2)+Math.pow(o.y-r.y,2)),u=s/(s+l),d=l/(s+l),c=i*(u=isNaN(u)?0:u),h=i*(d=isNaN(d)?0:d);return{previous:{x:r.x-c*(o.x-a.x),y:r.y-c*(o.y-a.y)},next:{x:r.x+h*(o.x-a.x),y:r.y+h*(o.y-a.y)}}},r.EPSILON=Number.EPSILON||1e-14,r.splineCurveMonotone=function(t){var e,n,i,a,o=(t||[]).map(function(t){return{model:t._model,deltaK:0,mK:0}}),s=o.length;for(e=0;e0?o[e-1]:null,(a=e0?o[e-1]:null,a=e=t.length-1?t[0]:t[e+1]:e>=t.length-1?t[t.length-1]:t[e+1]},r.previousItem=function(t,e,n){return n?e<=0?t[t.length-1]:t[e-1]:e<=0?t[0]:t[e-1]},r.niceNum=function(t,e){var n=Math.floor(r.log10(t)),i=t/Math.pow(10,n);return(e?i<1.5?1:i<3?2:i<7?5:10:i<=1?1:i<=2?2:i<=5?5:10)*Math.pow(10,n)},r.requestAnimFrame="undefined"==typeof window?function(t){t()}:window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){return window.setTimeout(t,1e3/60)},r.getRelativePosition=function(t,e){var n,i,a=t.originalEvent||t,o=t.currentTarget||t.srcElement,s=o.getBoundingClientRect(),l=a.touches;l&&l.length>0?(n=l[0].clientX,i=l[0].clientY):(n=a.clientX,i=a.clientY);var u=parseFloat(r.getStyle(o,"padding-left")),d=parseFloat(r.getStyle(o,"padding-top")),c=parseFloat(r.getStyle(o,"padding-right")),h=parseFloat(r.getStyle(o,"padding-bottom")),f=s.right-s.left-u-c,g=s.bottom-s.top-d-h;return n=Math.round((n-s.left-u)/f*o.width/e.currentDevicePixelRatio),i=Math.round((i-s.top-d)/g*o.height/e.currentDevicePixelRatio),{x:n,y:i}},r.getConstraintWidth=function(t){return o(t,"max-width","clientWidth")},r.getConstraintHeight=function(t){return o(t,"max-height","clientHeight")},r.getMaximumWidth=function(t){var e=t.parentNode;if(!e)return t.clientWidth;var n=parseInt(r.getStyle(e,"padding-left"),10),i=parseInt(r.getStyle(e,"padding-right"),10),a=e.clientWidth-n-i,o=r.getConstraintWidth(t);return isNaN(o)?a:Math.min(a,o)},r.getMaximumHeight=function(t){var e=t.parentNode;if(!e)return t.clientHeight;var n=parseInt(r.getStyle(e,"padding-top"),10),i=parseInt(r.getStyle(e,"padding-bottom"),10),a=e.clientHeight-n-i,o=r.getConstraintHeight(t);return isNaN(o)?a:Math.min(a,o)},r.getStyle=function(t,e){return t.currentStyle?t.currentStyle[e]:document.defaultView.getComputedStyle(t,null).getPropertyValue(e)},r.retinaScale=function(t,e){var n=t.currentDevicePixelRatio=e||window.devicePixelRatio||1;if(1!==n){var i=t.canvas,a=t.height,r=t.width;i.height=a*n,i.width=r*n,t.ctx.scale(n,n),i.style.height=a+"px",i.style.width=r+"px"}},r.fontString=function(t,e,n){return e+" "+t+"px "+n},r.longestText=function(t,e,n,i){var a=(i=i||{}).data=i.data||{},o=i.garbageCollect=i.garbageCollect||[];i.font!==e&&(a=i.data={},o=i.garbageCollect=[],i.font=e),t.font=e;var s=0;r.each(n,function(e){void 0!==e&&null!==e&&!0!==r.isArray(e)?s=r.measureText(t,a,o,s,e):r.isArray(e)&&r.each(e,function(e){void 0===e||null===e||r.isArray(e)||(s=r.measureText(t,a,o,s,e))})});var l=o.length/2;if(l>n.length){for(var u=0;ui&&(i=r),i},r.numberOfLabelLines=function(t){var e=1;return r.each(t,function(t){r.isArray(t)&&t.length>e&&(e=t.length)}),e},r.color=i?function(t){return t instanceof CanvasGradient&&(t=a.global.defaultColor),i(t)}:function(t){return console.error("Color.js not found!"),t},r.getHoverColor=function(t){return t instanceof CanvasPattern?t:r.color(t).saturate(.5).darken(.1).rgbString()}}},{2:2,25:25,45:45}],28:[function(t,e,n){"use strict";function i(t,e){return t.native?{x:t.x,y:t.y}:u.getRelativePosition(t,e)}function a(t,e){var n,i,a,r,o;for(i=0,r=t.data.datasets.length;i0&&(u=t.getDatasetMeta(u[0]._datasetIndex).data),u},"x-axis":function(t,e){return l(t,e,{intersect:!0})},point:function(t,e){return r(t,i(e,t))},nearest:function(t,e,n){var a=i(e,t);n.axis=n.axis||"xy";var r=s(n.axis),l=o(t,a,n.intersect,r);return l.length>1&&l.sort(function(t,e){var n=t.getArea()-e.getArea();return 0===n&&(n=t._datasetIndex-e._datasetIndex),n}),l.slice(0,1)},x:function(t,e,n){var r=i(e,t),o=[],s=!1;return a(t,function(t){t.inXRange(r.x)&&o.push(t),t.inRange(r.x,r.y)&&(s=!0)}),n.intersect&&!s&&(o=[]),o},y:function(t,e,n){var r=i(e,t),o=[],s=!1;return a(t,function(t){t.inYRange(r.y)&&o.push(t),t.inRange(r.x,r.y)&&(s=!0)}),n.intersect&&!s&&(o=[]),o}}}},{45:45}],29:[function(t,e,n){"use strict";t(25)._set("global",{responsive:!0,responsiveAnimationDuration:0,maintainAspectRatio:!0,events:["mousemove","mouseout","click","touchstart","touchmove"],hover:{onHover:null,mode:"nearest",intersect:!0,animationDuration:400},onClick:null,defaultColor:"rgba(0,0,0,0.1)",defaultFontColor:"#666",defaultFontFamily:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",defaultFontSize:12,defaultFontStyle:"normal",showLines:!0,elements:{},layout:{padding:{top:0,right:0,bottom:0,left:0}}}),e.exports=function(){var t=function(t,e){return this.construct(t,e),this};return t.Chart=t,t}},{25:25}],30:[function(t,e,n){"use strict";var i=t(45);e.exports=function(t){function e(t,e){return i.where(t,function(t){return t.position===e})}function n(t,e){t.forEach(function(t,e){return t._tmpIndex_=e,t}),t.sort(function(t,n){var i=e?n:t,a=e?t:n;return i.weight===a.weight?i._tmpIndex_-a._tmpIndex_:i.weight-a.weight}),t.forEach(function(t){delete t._tmpIndex_})}t.layoutService={defaults:{},addBox:function(t,e){t.boxes||(t.boxes=[]),e.fullWidth=e.fullWidth||!1,e.position=e.position||"top",e.weight=e.weight||0,t.boxes.push(e)},removeBox:function(t,e){var n=t.boxes?t.boxes.indexOf(e):-1;-1!==n&&t.boxes.splice(n,1)},configure:function(t,e,n){for(var i,a=["fullWidth","position","weight"],r=a.length,o=0;oh&&lt.maxHeight){l--;break}l++,c=u*d}t.labelRotation=l},afterCalculateTickRotation:function(){s.callback(this.options.afterCalculateTickRotation,[this])},beforeFit:function(){s.callback(this.options.beforeFit,[this])},fit:function(){var t=this,a=t.minSize={width:0,height:0},r=i(t._ticks),o=t.options,u=o.ticks,d=o.scaleLabel,c=o.gridLines,h=o.display,f=t.isHorizontal(),g=n(u),m=o.gridLines.tickMarkLength;if(a.width=f?t.isFullWidth()?t.maxWidth-t.margins.left-t.margins.right:t.maxWidth:h&&c.drawTicks?m:0,a.height=f?h&&c.drawTicks?m:0:t.maxHeight,d.display&&h){var p=l(d)+s.options.toPadding(d.padding).height;f?a.height+=p:a.width+=p}if(u.display&&h){var v=s.longestText(t.ctx,g.font,r,t.longestTextCache),y=s.numberOfLabelLines(r),b=.5*g.size,x=t.options.ticks.padding;if(f){t.longestLabelWidth=v;var _=s.toRadians(t.labelRotation),k=Math.cos(_),w=Math.sin(_)*v+g.size*y+b*(y-1)+b;a.height=Math.min(t.maxHeight,a.height+w+x),t.ctx.font=g.font;var M=e(t.ctx,r[0],g.font),S=e(t.ctx,r[r.length-1],g.font);0!==t.labelRotation?(t.paddingLeft="bottom"===o.position?k*M+3:k*b+3,t.paddingRight="bottom"===o.position?k*b+3:k*S+3):(t.paddingLeft=M/2+3,t.paddingRight=S/2+3)}else u.mirror?v=0:v+=x+b,a.width=Math.min(t.maxWidth,a.width+v),t.paddingTop=g.size/2,t.paddingBottom=g.size/2}t.handleMargins(),t.width=a.width,t.height=a.height},handleMargins:function(){var t=this;t.margins&&(t.paddingLeft=Math.max(t.paddingLeft-t.margins.left,0),t.paddingTop=Math.max(t.paddingTop-t.margins.top,0),t.paddingRight=Math.max(t.paddingRight-t.margins.right,0),t.paddingBottom=Math.max(t.paddingBottom-t.margins.bottom,0))},afterFit:function(){s.callback(this.options.afterFit,[this])},isHorizontal:function(){return"top"===this.options.position||"bottom"===this.options.position},isFullWidth:function(){return this.options.fullWidth},getRightValue:function(t){if(s.isNullOrUndef(t))return NaN;if("number"==typeof t&&!isFinite(t))return NaN;if(t)if(this.isHorizontal()){if(void 0!==t.x)return this.getRightValue(t.x)}else if(void 0!==t.y)return this.getRightValue(t.y);return t},getLabelForIndex:s.noop,getPixelForValue:s.noop,getValueForPixel:s.noop,getPixelForTick:function(t){var e=this,n=e.options.offset;if(e.isHorizontal()){var i=(e.width-(e.paddingLeft+e.paddingRight))/Math.max(e._ticks.length-(n?0:1),1),a=i*t+e.paddingLeft;n&&(a+=i/2);var r=e.left+Math.round(a);return r+=e.isFullWidth()?e.margins.left:0}var o=e.height-(e.paddingTop+e.paddingBottom);return e.top+t*(o/(e._ticks.length-1))},getPixelForDecimal:function(t){var e=this;if(e.isHorizontal()){var n=(e.width-(e.paddingLeft+e.paddingRight))*t+e.paddingLeft,i=e.left+Math.round(n);return i+=e.isFullWidth()?e.margins.left:0}return e.top+t*e.height},getBasePixel:function(){return this.getPixelForValue(this.getBaseValue())},getBaseValue:function(){var t=this,e=t.min,n=t.max;return t.beginAtZero?0:e<0&&n<0?n:e>0&&n>0?e:0},_autoSkip:function(t){var e,n,i,a,r=this,o=r.isHorizontal(),l=r.options.ticks.minor,u=t.length,d=s.toRadians(r.labelRotation),c=Math.cos(d),h=r.longestLabelWidth*c,f=[];for(l.maxTicksLimit&&(a=l.maxTicksLimit),o&&(e=!1,(h+l.autoSkipPadding)*u>r.width-(r.paddingLeft+r.paddingRight)&&(e=1+Math.floor((h+l.autoSkipPadding)*u/(r.width-(r.paddingLeft+r.paddingRight)))),a&&u>a&&(e=Math.max(e,Math.floor(u/a)))),n=0;n1&&n%e>0||n%e==0&&n+e>=u)&&n!==u-1||s.isNullOrUndef(i.label))&&delete i.label,f.push(i);return f},draw:function(t){var e=this,i=e.options;if(i.display){var o=e.ctx,u=r.global,d=i.ticks.minor,c=i.ticks.major||d,h=i.gridLines,f=i.scaleLabel,g=0!==e.labelRotation,m=e.isHorizontal(),p=d.autoSkip?e._autoSkip(e.getTicks()):e.getTicks(),v=s.valueOrDefault(d.fontColor,u.defaultFontColor),y=n(d),b=s.valueOrDefault(c.fontColor,u.defaultFontColor),x=n(c),_=h.drawTicks?h.tickMarkLength:0,k=s.valueOrDefault(f.fontColor,u.defaultFontColor),w=n(f),M=s.options.toPadding(f.padding),S=s.toRadians(e.labelRotation),D=[],C="right"===i.position?e.left:e.right-_,P="right"===i.position?e.left+_:e.right,T="bottom"===i.position?e.top:e.bottom-_,I="bottom"===i.position?e.top+_:e.bottom;if(s.each(p,function(n,r){if(void 0!==n.label){var o,l,c,f,v=n.label;r===e.zeroLineIndex&&i.offset===h.offsetGridLines?(o=h.zeroLineWidth,l=h.zeroLineColor,c=h.zeroLineBorderDash,f=h.zeroLineBorderDashOffset):(o=s.valueAtIndexOrDefault(h.lineWidth,r),l=s.valueAtIndexOrDefault(h.color,r),c=s.valueOrDefault(h.borderDash,u.borderDash),f=s.valueOrDefault(h.borderDashOffset,u.borderDashOffset));var y,b,x,k,w,M,A,O,F,R,L="middle",W="middle",Y=d.padding;if(m){var N=_+Y;"bottom"===i.position?(W=g?"middle":"top",L=g?"right":"center",R=e.top+N):(W=g?"middle":"bottom",L=g?"left":"center",R=e.bottom-N);var z=a(e,r,h.offsetGridLines&&p.length>1);z1);H0)n=t.stepSize;else{var r=i.niceNum(e.max-e.min,!1);n=i.niceNum(r/(t.maxTicks-1),!0)}var o=Math.floor(e.min/n)*n,s=Math.ceil(e.max/n)*n;t.min&&t.max&&t.stepSize&&i.almostWhole((t.max-t.min)/t.stepSize,n/1e3)&&(o=t.min,s=t.max);var l=(s-o)/n;l=i.almostEquals(l,Math.round(l),n/1e3)?Math.round(l):Math.ceil(l),a.push(void 0!==t.min?t.min:o);for(var u=1;u3?n[2]-n[1]:n[1]-n[0];Math.abs(a)>1&&t!==Math.floor(t)&&(a=t-Math.floor(t));var r=i.log10(Math.abs(a)),o="";if(0!==t){var s=-1*Math.floor(r);s=Math.max(Math.min(s,20),0),o=t.toFixed(s)}else o="0";return o},logarithmic:function(t,e,n){var a=t/Math.pow(10,Math.floor(i.log10(t)));return 0===t?"0":1===a||2===a||5===a||0===e||e===n.length-1?t.toExponential():""}}}},{45:45}],35:[function(t,e,n){"use strict";var i=t(25),a=t(26),r=t(45);i._set("global",{tooltips:{enabled:!0,custom:null,mode:"nearest",position:"average",intersect:!0,backgroundColor:"rgba(0,0,0,0.8)",titleFontStyle:"bold",titleSpacing:2,titleMarginBottom:6,titleFontColor:"#fff",titleAlign:"left",bodySpacing:2,bodyFontColor:"#fff",bodyAlign:"left",footerFontStyle:"bold",footerSpacing:2,footerMarginTop:6,footerFontColor:"#fff",footerAlign:"left",yPadding:6,xPadding:6,caretPadding:2,caretSize:5,cornerRadius:6,multiKeyBackground:"#fff",displayColors:!0,borderColor:"rgba(0,0,0,0)",borderWidth:0,callbacks:{beforeTitle:r.noop,title:function(t,e){var n="",i=e.labels,a=i?i.length:0;if(t.length>0){var r=t[0];r.xLabel?n=r.xLabel:a>0&&r.indexi.height-e.height&&(o="bottom");var s,l,u,d,c,h=(a.left+a.right)/2,f=(a.top+a.bottom)/2;"center"===o?(s=function(t){return t<=h},l=function(t){return t>h}):(s=function(t){return t<=e.width/2},l=function(t){return t>=i.width-e.width/2}),u=function(t){return t+e.width>i.width},d=function(t){return t-e.width<0},c=function(t){return t<=f?"top":"bottom"},s(n.x)?(r="left",u(n.x)&&(r="center",o=c(n.y))):l(n.x)&&(r="right",d(n.x)&&(r="center",o=c(n.y)));var g=t._options;return{xAlign:g.xAlign?g.xAlign:r,yAlign:g.yAlign?g.yAlign:o}}function d(t,e,n){var i=t.x,a=t.y,r=t.caretSize,o=t.caretPadding,s=t.cornerRadius,l=n.xAlign,u=n.yAlign,d=r+o,c=s+o;return"right"===l?i-=e.width:"center"===l&&(i-=e.width/2),"top"===u?a+=d:a-="bottom"===u?e.height+d:e.height/2,"center"===u?"left"===l?i+=d:"right"===l&&(i-=d):"left"===l?i-=c:"right"===l&&(i+=c),{x:i,y:a}}t.Tooltip=a.extend({initialize:function(){this._model=s(this._options)},getTitle:function(){var t=this,e=t._options.callbacks,i=e.beforeTitle.apply(t,arguments),a=e.title.apply(t,arguments),r=e.afterTitle.apply(t,arguments),o=[];return o=n(o,i),o=n(o,a),o=n(o,r)},getBeforeBody:function(){var t=this._options.callbacks.beforeBody.apply(this,arguments);return r.isArray(t)?t:void 0!==t?[t]:[]},getBody:function(t,e){var i=this,a=i._options.callbacks,o=[];return r.each(t,function(t){var r={before:[],lines:[],after:[]};n(r.before,a.beforeLabel.call(i,t,e)),n(r.lines,a.label.call(i,t,e)),n(r.after,a.afterLabel.call(i,t,e)),o.push(r)}),o},getAfterBody:function(){var t=this._options.callbacks.afterBody.apply(this,arguments);return r.isArray(t)?t:void 0!==t?[t]:[]},getFooter:function(){var t=this,e=t._options.callbacks,i=e.beforeFooter.apply(t,arguments),a=e.footer.apply(t,arguments),r=e.afterFooter.apply(t,arguments),o=[];return o=n(o,i),o=n(o,a),o=n(o,r)},update:function(e){var n,i,a=this,c=a._options,h=a._model,f=a._model=s(c),g=a._active,m=a._data,p={xAlign:h.xAlign,yAlign:h.yAlign},v={x:h.x,y:h.y},y={width:h.width,height:h.height},b={x:h.caretX,y:h.caretY};if(g.length){f.opacity=1;var x=[],_=[];b=t.Tooltip.positioners[c.position](g,a._eventPosition);var k=[];for(n=0,i=g.length;n0&&i.stroke()},draw:function(){var t=this._chart.ctx,e=this._view;if(0!==e.opacity){var n={width:e.width,height:e.height},i={x:e.x,y:e.y},a=Math.abs(e.opacity<.001)?0:e.opacity,r=e.title.length||e.beforeBody.length||e.body.length||e.afterBody.length||e.footer.length;this._options.enabled&&r&&(this.drawBackground(i,e,t,n,a),i.x+=e.xPadding,i.y+=e.yPadding,this.drawTitle(i,e,t,a),this.drawBody(i,e,t,a),this.drawFooter(i,e,t,a))}},handleEvent:function(t){var e=this,n=e._options,i=!1;if(e._lastActive=e._lastActive||[],"mouseout"===t.type?e._active=[]:e._active=e._chart.getElementsAtEventForMode(t,n.mode,n),!(i=!r.arrayEquals(e._active,e._lastActive)))return!1;if(e._lastActive=e._active,n.enabled||n.custom){e._eventPosition={x:t.x,y:t.y};var a=e._model;e.update(!0),e.pivot(),i|=a.x!==e._model.x||a.y!==e._model.y}return i}}),t.Tooltip.positioners={average:function(t){if(!t.length)return!1;var e,n,i=0,a=0,r=0;for(e=0,n=t.length;el;)a-=2*Math.PI;for(;a=s&&a<=l,d=o>=n.innerRadius&&o<=n.outerRadius;return u&&d}return!1},getCenterPoint:function(){var t=this._view,e=(t.startAngle+t.endAngle)/2,n=(t.innerRadius+t.outerRadius)/2;return{x:t.x+Math.cos(e)*n,y:t.y+Math.sin(e)*n}},getArea:function(){var t=this._view;return Math.PI*((t.endAngle-t.startAngle)/(2*Math.PI))*(Math.pow(t.outerRadius,2)-Math.pow(t.innerRadius,2))},tooltipPosition:function(){var t=this._view,e=t.startAngle+(t.endAngle-t.startAngle)/2,n=(t.outerRadius-t.innerRadius)/2+t.innerRadius;return{x:t.x+Math.cos(e)*n,y:t.y+Math.sin(e)*n}},draw:function(){var t=this._chart.ctx,e=this._view,n=e.startAngle,i=e.endAngle;t.beginPath(),t.arc(e.x,e.y,e.outerRadius,n,i),t.arc(e.x,e.y,e.innerRadius,i,n,!0),t.closePath(),t.strokeStyle=e.borderColor,t.lineWidth=e.borderWidth,t.fillStyle=e.backgroundColor,t.fill(),t.lineJoin="bevel",e.borderWidth&&t.stroke()}})},{25:25,26:26,45:45}],37:[function(t,e,n){"use strict";var i=t(25),a=t(26),r=t(45),o=i.global;i._set("global",{elements:{line:{tension:.4,backgroundColor:o.defaultColor,borderWidth:3,borderColor:o.defaultColor,borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",capBezierPoints:!0,fill:!0}}}),e.exports=a.extend({draw:function(){var t,e,n,i,a=this,s=a._view,l=a._chart.ctx,u=s.spanGaps,d=a._children.slice(),c=o.elements.line,h=-1;for(a._loop&&d.length&&d.push(d[0]),l.save(),l.lineCap=s.borderCapStyle||c.borderCapStyle,l.setLineDash&&l.setLineDash(s.borderDash||c.borderDash),l.lineDashOffset=s.borderDashOffset||c.borderDashOffset,l.lineJoin=s.borderJoinStyle||c.borderJoinStyle,l.lineWidth=s.borderWidth||c.borderWidth,l.strokeStyle=s.borderColor||o.defaultColor,l.beginPath(),h=-1,t=0;te?1:-1,o=1,s=u.borderSkipped||"left"):(e=u.x-u.width/2,n=u.x+u.width/2,i=u.y,r=1,o=(a=u.base)>i?1:-1,s=u.borderSkipped||"bottom"),d){var c=Math.min(Math.abs(e-n),Math.abs(i-a)),h=(d=d>c?c:d)/2,f=e+("left"!==s?h*r:0),g=n+("right"!==s?-h*r:0),m=i+("top"!==s?h*o:0),p=a+("bottom"!==s?-h*o:0);f!==g&&(i=m,a=p),m!==p&&(e=f,n=g)}l.beginPath(),l.fillStyle=u.backgroundColor,l.strokeStyle=u.borderColor,l.lineWidth=d;var v=[[e,a],[e,i],[n,i],[n,a]],y=["bottom","left","top","right"].indexOf(s,0);-1===y&&(y=0);var b=t(0);l.moveTo(b[0],b[1]);for(var x=1;x<4;x++)b=t(x),l.lineTo(b[0],b[1]);l.fill(),d&&l.stroke()},height:function(){var t=this._view;return t.base-t.y},inRange:function(t,e){var n=!1;if(this._view){var i=a(this);n=t>=i.left&&t<=i.right&&e>=i.top&&e<=i.bottom}return n},inLabelRange:function(t,e){var n=this;if(!n._view)return!1;var r=a(n);return i(n)?t>=r.left&&t<=r.right:e>=r.top&&e<=r.bottom},inXRange:function(t){var e=a(this);return t>=e.left&&t<=e.right},inYRange:function(t){var e=a(this);return t>=e.top&&t<=e.bottom},getCenterPoint:function(){var t,e,n=this._view;return i(this)?(t=n.x,e=(n.y+n.base)/2):(t=(n.x+n.base)/2,e=n.y),{x:t,y:e}},getArea:function(){var t=this._view;return t.width*Math.abs(t.y-t.base)},tooltipPosition:function(){var t=this._view;return{x:t.x,y:t.y}}})},{25:25,26:26}],40:[function(t,e,n){"use strict";e.exports={},e.exports.Arc=t(36),e.exports.Line=t(37),e.exports.Point=t(38),e.exports.Rectangle=t(39)},{36:36,37:37,38:38,39:39}],41:[function(t,e,n){"use strict";var i=t(42),n=e.exports={clear:function(t){t.ctx.clearRect(0,0,t.width,t.height)},roundedRect:function(t,e,n,i,a,r){if(r){var o=Math.min(r,i/2),s=Math.min(r,a/2);t.moveTo(e+o,n),t.lineTo(e+i-o,n),t.quadraticCurveTo(e+i,n,e+i,n+s),t.lineTo(e+i,n+a-s),t.quadraticCurveTo(e+i,n+a,e+i-o,n+a),t.lineTo(e+o,n+a),t.quadraticCurveTo(e,n+a,e,n+a-s),t.lineTo(e,n+s),t.quadraticCurveTo(e,n,e+o,n)}else t.rect(e,n,i,a)},drawPoint:function(t,e,n,i,a){var r,o,s,l,u,d;if("object"!=typeof e||"[object HTMLImageElement]"!==(r=e.toString())&&"[object HTMLCanvasElement]"!==r){if(!(isNaN(n)||n<=0)){switch(e){default:t.beginPath(),t.arc(i,a,n,0,2*Math.PI),t.closePath(),t.fill();break;case"triangle":t.beginPath(),u=(o=3*n/Math.sqrt(3))*Math.sqrt(3)/2,t.moveTo(i-o/2,a+u/3),t.lineTo(i+o/2,a+u/3),t.lineTo(i,a-2*u/3),t.closePath(),t.fill();break;case"rect":d=1/Math.SQRT2*n,t.beginPath(),t.fillRect(i-d,a-d,2*d,2*d),t.strokeRect(i-d,a-d,2*d,2*d);break;case"rectRounded":var c=n/Math.SQRT2,h=i-c,f=a-c,g=Math.SQRT2*n;t.beginPath(),this.roundedRect(t,h,f,g,g,n/2),t.closePath(),t.fill();break;case"rectRot":d=1/Math.SQRT2*n,t.beginPath(),t.moveTo(i-d,a),t.lineTo(i,a+d),t.lineTo(i+d,a),t.lineTo(i,a-d),t.closePath(),t.fill();break;case"cross":t.beginPath(),t.moveTo(i,a+n),t.lineTo(i,a-n),t.moveTo(i-n,a),t.lineTo(i+n,a),t.closePath();break;case"crossRot":t.beginPath(),s=Math.cos(Math.PI/4)*n,l=Math.sin(Math.PI/4)*n,t.moveTo(i-s,a-l),t.lineTo(i+s,a+l),t.moveTo(i-s,a+l),t.lineTo(i+s,a-l),t.closePath();break;case"star":t.beginPath(),t.moveTo(i,a+n),t.lineTo(i,a-n),t.moveTo(i-n,a),t.lineTo(i+n,a),s=Math.cos(Math.PI/4)*n,l=Math.sin(Math.PI/4)*n,t.moveTo(i-s,a-l),t.lineTo(i+s,a+l),t.moveTo(i-s,a+l),t.lineTo(i+s,a-l),t.closePath();break;case"line":t.beginPath(),t.moveTo(i-n,a),t.lineTo(i+n,a),t.closePath();break;case"dash":t.beginPath(),t.moveTo(i,a),t.lineTo(i+n,a),t.closePath()}t.stroke()}}else t.drawImage(e,i-e.width/2,a-e.height/2,e.width,e.height)},clipArea:function(t,e){t.save(),t.beginPath(),t.rect(e.left,e.top,e.right-e.left,e.bottom-e.top),t.clip()},unclipArea:function(t){t.restore()},lineTo:function(t,e,n,i){if(n.steppedLine)return"after"===n.steppedLine&&!i||"after"!==n.steppedLine&&i?t.lineTo(e.x,n.y):t.lineTo(n.x,e.y),void t.lineTo(n.x,n.y);n.tension?t.bezierCurveTo(i?e.controlPointPreviousX:e.controlPointNextX,i?e.controlPointPreviousY:e.controlPointNextY,i?n.controlPointNextX:n.controlPointPreviousX,i?n.controlPointNextY:n.controlPointPreviousY,n.x,n.y):t.lineTo(n.x,n.y)}};i.clear=n.clear,i.drawRoundedRectangle=function(t){t.beginPath(),n.roundedRect.apply(n,arguments),t.closePath()}},{42:42}],42:[function(t,e,n){"use strict";var i={noop:function(){},uid:function(){var t=0;return function(){return t++}}(),isNullOrUndef:function(t){return null===t||void 0===t},isArray:Array.isArray?Array.isArray:function(t){return"[object Array]"===Object.prototype.toString.call(t)},isObject:function(t){return null!==t&&"[object Object]"===Object.prototype.toString.call(t)},valueOrDefault:function(t,e){return void 0===t?e:t},valueAtIndexOrDefault:function(t,e,n){return i.valueOrDefault(i.isArray(t)?t[e]:t,n)},callback:function(t,e,n){if(t&&"function"==typeof t.call)return t.apply(n,e)},each:function(t,e,n,a){var r,o,s;if(i.isArray(t))if(o=t.length,a)for(r=o-1;r>=0;r--)e.call(n,t[r],r);else for(r=0;r=1?t:-(Math.sqrt(1-t*t)-1)},easeOutCirc:function(t){return Math.sqrt(1-(t-=1)*t)},easeInOutCirc:function(t){return(t/=.5)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)},easeInElastic:function(t){var e=1.70158,n=0,i=1;return 0===t?0:1===t?1:(n||(n=.3),i<1?(i=1,e=n/4):e=n/(2*Math.PI)*Math.asin(1/i),-i*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/n))},easeOutElastic:function(t){var e=1.70158,n=0,i=1;return 0===t?0:1===t?1:(n||(n=.3),i<1?(i=1,e=n/4):e=n/(2*Math.PI)*Math.asin(1/i),i*Math.pow(2,-10*t)*Math.sin((t-e)*(2*Math.PI)/n)+1)},easeInOutElastic:function(t){var e=1.70158,n=0,i=1;return 0===t?0:2==(t/=.5)?1:(n||(n=.45),i<1?(i=1,e=n/4):e=n/(2*Math.PI)*Math.asin(1/i),t<1?i*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/n)*-.5:i*Math.pow(2,-10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/n)*.5+1)},easeInBack:function(t){var e=1.70158;return t*t*((e+1)*t-e)},easeOutBack:function(t){var e=1.70158;return(t-=1)*t*((e+1)*t+e)+1},easeInOutBack:function(t){var e=1.70158;return(t/=.5)<1?t*t*((1+(e*=1.525))*t-e)*.5:.5*((t-=2)*t*((1+(e*=1.525))*t+e)+2)},easeInBounce:function(t){return 1-a.easeOutBounce(1-t)},easeOutBounce:function(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375},easeInOutBounce:function(t){return t<.5?.5*a.easeInBounce(2*t):.5*a.easeOutBounce(2*t-1)+.5}};e.exports={effects:a},i.easingEffects=a},{42:42}],44:[function(t,e,n){"use strict";var i=t(42);e.exports={toLineHeight:function(t,e){var n=(""+t).match(/^(normal|(\d+(?:\.\d+)?)(px|em|%)?)$/);if(!n||"normal"===n[1])return 1.2*e;switch(t=+n[2],n[3]){case"px":return t;case"%":t/=100}return e*t},toPadding:function(t){var e,n,a,r;return i.isObject(t)?(e=+t.top||0,n=+t.right||0,a=+t.bottom||0,r=+t.left||0):e=n=a=r=+t||0,{top:e,right:n,bottom:a,left:r,height:e+a,width:r+n}},resolve:function(t,e,n){var a,r,o;for(a=0,r=t.length;a
';var a=e.childNodes[0],o=e.childNodes[1];e._reset=function(){a.scrollLeft=1e6,a.scrollTop=1e6,o.scrollLeft=1e6,o.scrollTop=1e6};var s=function(){e._reset(),t()};return r(a,"scroll",s.bind(a,"expand")),r(o,"scroll",s.bind(o,"shrink")),e}function c(t,e){var n=(t[v]||(t[v]={})).renderProxy=function(t){t.animationName===x&&e()};p.each(_,function(e){r(t,e,n)}),t.classList.add(b)}function h(t){var e=t[v]||{},n=e.renderProxy;n&&(p.each(_,function(e){o(t,e,n)}),delete e.renderProxy),t.classList.remove(b)}function f(t,e,n){var i=t[v]||(t[v]={}),a=i.resizer=d(u(function(){if(i.resizer)return e(s("resize",n))}));c(t,function(){if(i.resizer){var e=t.parentNode;e&&e!==a.parentNode&&e.insertBefore(a,e.firstChild),a._reset()}})}function g(t){var e=t[v]||{},n=e.resizer;delete e.resizer,h(t),n&&n.parentNode&&n.parentNode.removeChild(n)}function m(t,e){var n=t._style||document.createElement("style");t._style||(t._style=n,e="/* Chart.js */\n"+e,n.setAttribute("type","text/css"),document.getElementsByTagName("head")[0].appendChild(n)),n.appendChild(document.createTextNode(e))}var p=t(45),v="$chartjs",y="chartjs-",b=y+"render-monitor",x=y+"render-animation",_=["animationstart","webkitAnimationStart"],k={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"},w=!!function(){var t=!1;try{var e=Object.defineProperty({},"passive",{get:function(){t=!0}});window.addEventListener("e",null,e)}catch(t){}return t}()&&{passive:!0};e.exports={_enabled:"undefined"!=typeof window&&"undefined"!=typeof document,initialize:function(){var t="from{opacity:0.99}to{opacity:1}";m(this,"@-webkit-keyframes "+x+"{"+t+"}@keyframes "+x+"{"+t+"}."+b+"{-webkit-animation:"+x+" 0.001s;animation:"+x+" 0.001s;}")},acquireContext:function(t,e){"string"==typeof t?t=document.getElementById(t):t.length&&(t=t[0]),t&&t.canvas&&(t=t.canvas);var n=t&&t.getContext&&t.getContext("2d");return n&&n.canvas===t?(a(t,e),n):null},releaseContext:function(t){var e=t.canvas;if(e[v]){var n=e[v].initial;["height","width"].forEach(function(t){var i=n[t];p.isNullOrUndef(i)?e.removeAttribute(t):e.setAttribute(t,i)}),p.each(n.style||{},function(t,n){e.style[n]=t}),e.width=e.width,delete e[v]}},addEventListener:function(t,e,n){var i=t.canvas;if("resize"!==e){var a=n[v]||(n[v]={});r(i,e,(a.proxies||(a.proxies={}))[t.id+"_"+e]=function(e){n(l(e,t))})}else f(i,n,t)},removeEventListener:function(t,e,n){var i=t.canvas;if("resize"!==e){var a=((n[v]||{}).proxies||{})[t.id+"_"+e];a&&o(i,e,a)}else g(i)}},p.addEvent=r,p.removeEvent=o},{45:45}],48:[function(t,e,n){"use strict";var i=t(45),a=t(46),r=t(47),o=r._enabled?r:a;e.exports=i.extend({initialize:function(){},acquireContext:function(){},releaseContext:function(){},addEventListener:function(){},removeEventListener:function(){}},o)},{45:45,46:46,47:47}],49:[function(t,e,n){"use strict";var i=t(25),a=t(40),r=t(45);i._set("global",{plugins:{filler:{propagate:!0}}}),e.exports=function(){function t(t,e,n){var i,a=t._model||{},r=a.fill;if(void 0===r&&(r=!!a.backgroundColor),!1===r||null===r)return!1;if(!0===r)return"origin";if(i=parseFloat(r,10),isFinite(i)&&Math.floor(i)===i)return"-"!==r[0]&&"+"!==r[0]||(i=e+i),!(i===e||i<0||i>=n)&&i;switch(r){case"bottom":return"start";case"top":return"end";case"zero":return"origin";case"origin":case"start":case"end":return r;default:return!1}}function e(t){var e,n=t.el._model||{},i=t.el._scale||{},a=t.fill,r=null;if(isFinite(a))return null;if("start"===a?r=void 0===n.scaleBottom?i.bottom:n.scaleBottom:"end"===a?r=void 0===n.scaleTop?i.top:n.scaleTop:void 0!==n.scaleZero?r=n.scaleZero:i.getBasePosition?r=i.getBasePosition():i.getBasePixel&&(r=i.getBasePixel()),void 0!==r&&null!==r){if(void 0!==r.x&&void 0!==r.y)return r;if("number"==typeof r&&isFinite(r))return e=i.isHorizontal(),{x:e?r:null,y:e?null:r}}return null}function n(t,e,n){var i,a=t[e].fill,r=[e];if(!n)return a;for(;!1!==a&&-1===r.indexOf(a);){if(!isFinite(a))return a;if(!(i=t[a]))return!1;if(i.visible)return a;r.push(a),a=i.fill}return!1}function o(t){var e=t.fill,n="dataset";return!1===e?null:(isFinite(e)||(n="boundary"),d[n](t))}function s(t){return t&&!t.skip}function l(t,e,n,i,a){var o;if(i&&a){for(t.moveTo(e[0].x,e[0].y),o=1;o0;--o)r.canvas.lineTo(t,n[o],n[o-1],!0)}}function u(t,e,n,i,a,r){var o,u,d,c,h,f,g,m=e.length,p=i.spanGaps,v=[],y=[],b=0,x=0;for(t.beginPath(),o=0,u=m+!!r;o');for(var n=0;n'),t.data.datasets[n].label&&e.push(t.data.datasets[n].label),e.push("");return e.push(""),e.join("")}}),e.exports=function(t){function e(t,e){return t.usePointStyle?e*Math.SQRT2:t.boxWidth}function n(e,n){var i=new t.Legend({ctx:e.ctx,options:n,chart:e});o.configure(e,i,n),o.addBox(e,i),e.legend=i}var o=t.layoutService,s=r.noop;return t.Legend=a.extend({initialize:function(t){r.extend(this,t),this.legendHitBoxes=[],this.doughnutMode=!1},beforeUpdate:s,update:function(t,e,n){var i=this;return i.beforeUpdate(),i.maxWidth=t,i.maxHeight=e,i.margins=n,i.beforeSetDimensions(),i.setDimensions(),i.afterSetDimensions(),i.beforeBuildLabels(),i.buildLabels(),i.afterBuildLabels(),i.beforeFit(),i.fit(),i.afterFit(),i.afterUpdate(),i.minSize},afterUpdate:s,beforeSetDimensions:s,setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0,t.minSize={width:0,height:0}},afterSetDimensions:s,beforeBuildLabels:s,buildLabels:function(){var t=this,e=t.options.labels||{},n=r.callback(e.generateLabels,[t.chart],t)||[];e.filter&&(n=n.filter(function(n){return e.filter(n,t.chart.data)})),t.options.reverse&&n.reverse(),t.legendItems=n},afterBuildLabels:s,beforeFit:s,fit:function(){var t=this,n=t.options,a=n.labels,o=n.display,s=t.ctx,l=i.global,u=r.valueOrDefault,d=u(a.fontSize,l.defaultFontSize),c=u(a.fontStyle,l.defaultFontStyle),h=u(a.fontFamily,l.defaultFontFamily),f=r.fontString(d,c,h),g=t.legendHitBoxes=[],m=t.minSize,p=t.isHorizontal();if(p?(m.width=t.maxWidth,m.height=o?10:0):(m.width=o?10:0,m.height=t.maxHeight),o)if(s.font=f,p){var v=t.lineWidths=[0],y=t.legendItems.length?d+a.padding:0;s.textAlign="left",s.textBaseline="top",r.each(t.legendItems,function(n,i){var r=e(a,d)+d/2+s.measureText(n.text).width;v[v.length-1]+r+a.padding>=t.width&&(y+=d+a.padding,v[v.length]=t.left),g[i]={left:0,top:0,width:r,height:d},v[v.length-1]+=r+a.padding}),m.height+=y}else{var b=a.padding,x=t.columnWidths=[],_=a.padding,k=0,w=0,M=d+b;r.each(t.legendItems,function(t,n){var i=e(a,d)+d/2+s.measureText(t.text).width;w+M>m.height&&(_+=k+a.padding,x.push(k),k=0,w=0),k=Math.max(k,i),w+=M,g[n]={left:0,top:0,width:i,height:d}}),_+=k,x.push(k),m.width+=_}t.width=m.width,t.height=m.height},afterFit:s,isHorizontal:function(){return"top"===this.options.position||"bottom"===this.options.position},draw:function(){var t=this,n=t.options,a=n.labels,o=i.global,s=o.elements.line,l=t.width,u=t.lineWidths;if(n.display){var d,c=t.ctx,h=r.valueOrDefault,f=h(a.fontColor,o.defaultFontColor),g=h(a.fontSize,o.defaultFontSize),m=h(a.fontStyle,o.defaultFontStyle),p=h(a.fontFamily,o.defaultFontFamily),v=r.fontString(g,m,p);c.textAlign="left",c.textBaseline="middle",c.lineWidth=.5,c.strokeStyle=f,c.fillStyle=f,c.font=v;var y=e(a,g),b=t.legendHitBoxes,x=function(t,e,i){if(!(isNaN(y)||y<=0)){c.save(),c.fillStyle=h(i.fillStyle,o.defaultColor),c.lineCap=h(i.lineCap,s.borderCapStyle),c.lineDashOffset=h(i.lineDashOffset,s.borderDashOffset),c.lineJoin=h(i.lineJoin,s.borderJoinStyle),c.lineWidth=h(i.lineWidth,s.borderWidth),c.strokeStyle=h(i.strokeStyle,o.defaultColor);var a=0===h(i.lineWidth,s.borderWidth);if(c.setLineDash&&c.setLineDash(h(i.lineDash,s.borderDash)),n.labels&&n.labels.usePointStyle){var l=g*Math.SQRT2/2,u=l/Math.SQRT2,d=t+u,f=e+u;r.canvas.drawPoint(c,i.pointStyle,l,d,f)}else a||c.strokeRect(t,e,y,g),c.fillRect(t,e,y,g);c.restore()}},_=function(t,e,n,i){var a=g/2,r=y+a+t,o=e+a;c.fillText(n.text,r,o),n.hidden&&(c.beginPath(),c.lineWidth=2,c.moveTo(r,o),c.lineTo(r+i,o),c.stroke())},k=t.isHorizontal();d=k?{x:t.left+(l-u[0])/2,y:t.top+a.padding,line:0}:{x:t.left+a.padding,y:t.top+a.padding,line:0};var w=g+a.padding;r.each(t.legendItems,function(e,n){var i=c.measureText(e.text).width,r=y+g/2+i,o=d.x,s=d.y;k?o+r>=l&&(s=d.y+=w,d.line++,o=d.x=t.left+(l-u[d.line])/2):s+w>t.bottom&&(o=d.x=o+t.columnWidths[d.line]+a.padding,s=d.y=t.top+a.padding,d.line++),x(o,s,e),b[n].left=o,b[n].top=s,_(o,s,e,i),k?d.x+=r+a.padding:d.y+=w})}},handleEvent:function(t){var e=this,n=e.options,i="mouseup"===t.type?"click":t.type,a=!1;if("mousemove"===i){if(!n.onHover)return}else{if("click"!==i)return;if(!n.onClick)return}var r=t.x,o=t.y;if(r>=e.left&&r<=e.right&&o>=e.top&&o<=e.bottom)for(var s=e.legendHitBoxes,l=0;l=u.left&&r<=u.left+u.width&&o>=u.top&&o<=u.top+u.height){if("click"===i){n.onClick.call(e,t.native,e.legendItems[l]),a=!0;break}if("mousemove"===i){n.onHover.call(e,t.native,e.legendItems[l]),a=!0;break}}}return a}}),{id:"legend",beforeInit:function(t){var e=t.options.legend;e&&n(t,e)},beforeUpdate:function(t){var e=t.options.legend,a=t.legend;e?(r.mergeIf(e,i.global.legend),a?(o.configure(t,a,e),a.options=e):n(t,e)):a&&(o.removeBox(t,a),delete t.legend)},afterEvent:function(t,e){var n=t.legend;n&&n.handleEvent(e)}}}},{25:25,26:26,45:45}],51:[function(t,e,n){"use strict";var i=t(25),a=t(26),r=t(45);i._set("global",{title:{display:!1,fontStyle:"bold",fullWidth:!0,lineHeight:1.2,padding:10,position:"top",text:"",weight:2e3}}),e.exports=function(t){function e(e,i){var a=new t.Title({ctx:e.ctx,options:i,chart:e});n.configure(e,a,i),n.addBox(e,a),e.titleBlock=a}var n=t.layoutService,o=r.noop;return t.Title=a.extend({initialize:function(t){var e=this;r.extend(e,t),e.legendHitBoxes=[]},beforeUpdate:o,update:function(t,e,n){var i=this;return i.beforeUpdate(),i.maxWidth=t,i.maxHeight=e,i.margins=n,i.beforeSetDimensions(),i.setDimensions(),i.afterSetDimensions(),i.beforeBuildLabels(),i.buildLabels(),i.afterBuildLabels(),i.beforeFit(),i.fit(),i.afterFit(),i.afterUpdate(),i.minSize},afterUpdate:o,beforeSetDimensions:o,setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0,t.minSize={width:0,height:0}},afterSetDimensions:o,beforeBuildLabels:o,buildLabels:o,afterBuildLabels:o,beforeFit:o,fit:function(){var t=this,e=r.valueOrDefault,n=t.options,a=n.display,o=e(n.fontSize,i.global.defaultFontSize),s=t.minSize,l=r.isArray(n.text)?n.text.length:1,u=r.options.toLineHeight(n.lineHeight,o),d=a?l*u+2*n.padding:0;t.isHorizontal()?(s.width=t.maxWidth,s.height=d):(s.width=d,s.height=t.maxHeight),t.width=s.width,t.height=s.height},afterFit:o,isHorizontal:function(){var t=this.options.position;return"top"===t||"bottom"===t},draw:function(){var t=this,e=t.ctx,n=r.valueOrDefault,a=t.options,o=i.global;if(a.display){var s,l,u,d=n(a.fontSize,o.defaultFontSize),c=n(a.fontStyle,o.defaultFontStyle),h=n(a.fontFamily,o.defaultFontFamily),f=r.fontString(d,c,h),g=r.options.toLineHeight(a.lineHeight,d),m=g/2+a.padding,p=0,v=t.top,y=t.left,b=t.bottom,x=t.right;e.fillStyle=n(a.fontColor,o.defaultFontColor),e.font=f,t.isHorizontal()?(l=y+(x-y)/2,u=v+m,s=x-y):(l="left"===a.position?y+m:x-m,u=v+(b-v)/2,s=b-v,p=Math.PI*("left"===a.position?-.5:.5)),e.save(),e.translate(l,u),e.rotate(p),e.textAlign="center",e.textBaseline="middle";var _=a.text;if(r.isArray(_))for(var k=0,w=0;w<_.length;++w)e.fillText(_[w],0,k,s),k+=g;else e.fillText(_,0,0,s);e.restore()}}}),{id:"title",beforeInit:function(t){var n=t.options.title;n&&e(t,n)},beforeUpdate:function(a){var o=a.options.title,s=a.titleBlock;o?(r.mergeIf(o,i.global.title),s?(n.configure(a,s,o),s.options=o):e(a,o)):s&&(t.layoutService.removeBox(a,s),delete a.titleBlock)}}}},{25:25,26:26,45:45}],52:[function(t,e,n){"use strict";e.exports=function(t){var e={position:"bottom"},n=t.Scale.extend({getLabels:function(){var t=this.chart.data;return this.options.labels||(this.isHorizontal()?t.xLabels:t.yLabels)||t.labels},determineDataLimits:function(){var t=this,e=t.getLabels();t.minIndex=0,t.maxIndex=e.length-1;var n;void 0!==t.options.ticks.min&&(n=e.indexOf(t.options.ticks.min),t.minIndex=-1!==n?n:t.minIndex),void 0!==t.options.ticks.max&&(n=e.indexOf(t.options.ticks.max),t.maxIndex=-1!==n?n:t.maxIndex),t.min=e[t.minIndex],t.max=e[t.maxIndex]},buildTicks:function(){var t=this,e=t.getLabels();t.ticks=0===t.minIndex&&t.maxIndex===e.length-1?e:e.slice(t.minIndex,t.maxIndex+1)},getLabelForIndex:function(t,e){var n=this,i=n.chart.data,a=n.isHorizontal();return i.yLabels&&!a?n.getRightValue(i.datasets[e].data[t]):n.ticks[t-n.minIndex]},getPixelForValue:function(t,e){var n,i=this,a=i.options.offset,r=Math.max(i.maxIndex+1-i.minIndex-(a?0:1),1);if(void 0!==t&&null!==t&&(n=i.isHorizontal()?t.x:t.y),void 0!==n||void 0!==t&&isNaN(e)){var o=i.getLabels();t=n||t;var s=o.indexOf(t);e=-1!==s?s:e}if(i.isHorizontal()){var l=i.width/r,u=l*(e-i.minIndex);return a&&(u+=l/2),i.left+Math.round(u)}var d=i.height/r,c=d*(e-i.minIndex);return a&&(c+=d/2),i.top+Math.round(c)},getPixelForTick:function(t){return this.getPixelForValue(this.ticks[t],t+this.minIndex,null)},getValueForPixel:function(t){var e=this,n=e.options.offset,i=Math.max(e._ticks.length-(n?0:1),1),a=e.isHorizontal(),r=(a?e.width:e.height)/i;return t-=a?e.left:e.top,n&&(t-=r/2),(t<=0?0:Math.round(t/r))+e.minIndex},getBasePixel:function(){return this.bottom}});t.scaleService.registerScaleType("category",n,e)}},{}],53:[function(t,e,n){"use strict";var i=t(25),a=t(45),r=t(34);e.exports=function(t){var e={position:"left",ticks:{callback:r.formatters.linear}},n=t.LinearScaleBase.extend({determineDataLimits:function(){function t(t){return o?t.xAxisID===e.id:t.yAxisID===e.id}var e=this,n=e.options,i=e.chart,r=i.data.datasets,o=e.isHorizontal();e.min=null,e.max=null;var s=n.stacked;if(void 0===s&&a.each(r,function(e,n){if(!s){var a=i.getDatasetMeta(n);i.isDatasetVisible(n)&&t(a)&&void 0!==a.stack&&(s=!0)}}),n.stacked||s){var l={};a.each(r,function(r,o){var s=i.getDatasetMeta(o),u=[s.type,void 0===n.stacked&&void 0===s.stack?o:"",s.stack].join(".");void 0===l[u]&&(l[u]={positiveValues:[],negativeValues:[]});var d=l[u].positiveValues,c=l[u].negativeValues;i.isDatasetVisible(o)&&t(s)&&a.each(r.data,function(t,i){var a=+e.getRightValue(t);isNaN(a)||s.data[i].hidden||(d[i]=d[i]||0,c[i]=c[i]||0,n.relativePoints?d[i]=100:a<0?c[i]+=a:d[i]+=a)})}),a.each(l,function(t){var n=t.positiveValues.concat(t.negativeValues),i=a.min(n),r=a.max(n);e.min=null===e.min?i:Math.min(e.min,i),e.max=null===e.max?r:Math.max(e.max,r)})}else a.each(r,function(n,r){var o=i.getDatasetMeta(r);i.isDatasetVisible(r)&&t(o)&&a.each(n.data,function(t,n){var i=+e.getRightValue(t);isNaN(i)||o.data[n].hidden||(null===e.min?e.min=i:ie.max&&(e.max=i))})});e.min=isFinite(e.min)&&!isNaN(e.min)?e.min:0,e.max=isFinite(e.max)&&!isNaN(e.max)?e.max:1,this.handleTickRangeOptions()},getTickLimit:function(){var t,e=this,n=e.options.ticks;if(e.isHorizontal())t=Math.min(n.maxTicksLimit?n.maxTicksLimit:11,Math.ceil(e.width/50));else{var r=a.valueOrDefault(n.fontSize,i.global.defaultFontSize);t=Math.min(n.maxTicksLimit?n.maxTicksLimit:11,Math.ceil(e.height/(2*r)))}return t},handleDirectionalChanges:function(){this.isHorizontal()||this.ticks.reverse()},getLabelForIndex:function(t,e){return+this.getRightValue(this.chart.data.datasets[e].data[t])},getPixelForValue:function(t){var e,n=this,i=n.start,a=+n.getRightValue(t),r=n.end-i;return n.isHorizontal()?(e=n.left+n.width/r*(a-i),Math.round(e)):(e=n.bottom-n.height/r*(a-i),Math.round(e))},getValueForPixel:function(t){var e=this,n=e.isHorizontal(),i=n?e.width:e.height,a=(n?t-e.left:e.bottom-t)/i;return e.start+(e.end-e.start)*a},getPixelForTick:function(t){return this.getPixelForValue(this.ticksAsNumbers[t])}});t.scaleService.registerScaleType("linear",n,e)}},{25:25,34:34,45:45}],54:[function(t,e,n){"use strict";var i=t(45),a=t(34);e.exports=function(t){var e=i.noop;t.LinearScaleBase=t.Scale.extend({getRightValue:function(e){return"string"==typeof e?+e:t.Scale.prototype.getRightValue.call(this,e)},handleTickRangeOptions:function(){var t=this,e=t.options.ticks;if(e.beginAtZero){var n=i.sign(t.min),a=i.sign(t.max);n<0&&a<0?t.max=0:n>0&&a>0&&(t.min=0)}var r=void 0!==e.min||void 0!==e.suggestedMin,o=void 0!==e.max||void 0!==e.suggestedMax;void 0!==e.min?t.min=e.min:void 0!==e.suggestedMin&&(null===t.min?t.min=e.suggestedMin:t.min=Math.min(t.min,e.suggestedMin)),void 0!==e.max?t.max=e.max:void 0!==e.suggestedMax&&(null===t.max?t.max=e.suggestedMax:t.max=Math.max(t.max,e.suggestedMax)),r!==o&&t.min>=t.max&&(r?t.max=t.min+1:t.min=t.max-1),t.min===t.max&&(t.max++,e.beginAtZero||t.min--)},getTickLimit:e,handleDirectionalChanges:e,buildTicks:function(){var t=this,e=t.options.ticks,n=t.getTickLimit(),r={maxTicks:n=Math.max(2,n),min:e.min,max:e.max,stepSize:i.valueOrDefault(e.fixedStepSize,e.stepSize)},o=t.ticks=a.generators.linear(r,t);t.handleDirectionalChanges(),t.max=i.max(o),t.min=i.min(o),e.reverse?(o.reverse(),t.start=t.max,t.end=t.min):(t.start=t.min,t.end=t.max)},convertTicksToLabels:function(){var e=this;e.ticksAsNumbers=e.ticks.slice(),e.zeroLineIndex=e.ticks.indexOf(0),t.Scale.prototype.convertTicksToLabels.call(e)}})}},{34:34,45:45}],55:[function(t,e,n){"use strict";var i=t(45),a=t(34);e.exports=function(t){var e={position:"left",ticks:{callback:a.formatters.logarithmic}},n=t.Scale.extend({determineDataLimits:function(){function t(t){return l?t.xAxisID===e.id:t.yAxisID===e.id}var e=this,n=e.options,a=n.ticks,r=e.chart,o=r.data.datasets,s=i.valueOrDefault,l=e.isHorizontal();e.min=null,e.max=null,e.minNotZero=null;var u=n.stacked;if(void 0===u&&i.each(o,function(e,n){if(!u){var i=r.getDatasetMeta(n);r.isDatasetVisible(n)&&t(i)&&void 0!==i.stack&&(u=!0)}}),n.stacked||u){var d={};i.each(o,function(a,o){var s=r.getDatasetMeta(o),l=[s.type,void 0===n.stacked&&void 0===s.stack?o:"",s.stack].join(".");r.isDatasetVisible(o)&&t(s)&&(void 0===d[l]&&(d[l]=[]),i.each(a.data,function(t,i){var a=d[l],r=+e.getRightValue(t);isNaN(r)||s.data[i].hidden||(a[i]=a[i]||0,n.relativePoints?a[i]=100:a[i]+=r)}))}),i.each(d,function(t){var n=i.min(t),a=i.max(t);e.min=null===e.min?n:Math.min(e.min,n),e.max=null===e.max?a:Math.max(e.max,a)})}else i.each(o,function(n,a){var o=r.getDatasetMeta(a);r.isDatasetVisible(a)&&t(o)&&i.each(n.data,function(t,n){var i=+e.getRightValue(t);isNaN(i)||o.data[n].hidden||(null===e.min?e.min=i:ie.max&&(e.max=i),0!==i&&(null===e.minNotZero||ia?{start:e-n-5,end:e}:{start:e,end:e+n+5}}function l(t){var i,r,l,u=n(t),d=Math.min(t.height/2,t.width/2),c={r:t.width,l:0,t:t.height,b:0},h={};t.ctx.font=u.font,t._pointLabelSizes=[];var f=e(t);for(i=0;ic.r&&(c.r=p.end,h.r=g),v.startc.b&&(c.b=v.end,h.b=g)}t.setReductions(d,c,h)}function u(t){var e=Math.min(t.height/2,t.width/2);t.drawingArea=Math.round(e),t.setCenterPoint(0,0,0,0)}function d(t){return 0===t||180===t?"center":t<180?"left":"right"}function c(t,e,n,i){if(a.isArray(e))for(var r=n.y,o=1.5*i,s=0;s270||t<90)&&(n.y-=e.h)}function f(t){var i=t.ctx,r=a.valueOrDefault,o=t.options,s=o.angleLines,l=o.pointLabels;i.lineWidth=s.lineWidth,i.strokeStyle=s.color;var u=t.getDistanceFromCenterForValue(o.ticks.reverse?t.min:t.max),f=n(t);i.textBaseline="top";for(var g=e(t)-1;g>=0;g--){if(s.display){var m=t.getPointPosition(g,u);i.beginPath(),i.moveTo(t.xCenter,t.yCenter),i.lineTo(m.x,m.y),i.stroke(),i.closePath()}if(l.display){var v=t.getPointPosition(g,u+5),y=r(l.fontColor,p.defaultFontColor);i.font=f.font,i.fillStyle=y;var b=t.getIndexAngle(g),x=a.toDegrees(b);i.textAlign=d(x),h(x,t._pointLabelSizes[g],v),c(i,t.pointLabels[g]||"",v,f.size)}}}function g(t,n,i,r){var o=t.ctx;if(o.strokeStyle=a.valueAtIndexOrDefault(n.color,r-1),o.lineWidth=a.valueAtIndexOrDefault(n.lineWidth,r-1),t.options.gridLines.circular)o.beginPath(),o.arc(t.xCenter,t.yCenter,i,0,2*Math.PI),o.closePath(),o.stroke();else{var s=e(t);if(0===s)return;o.beginPath();var l=t.getPointPosition(0,i);o.moveTo(l.x,l.y);for(var u=1;u0&&n>0?e:0)},draw:function(){var t=this,e=t.options,n=e.gridLines,i=e.ticks,r=a.valueOrDefault;if(e.display){var o=t.ctx,s=this.getIndexAngle(0),l=r(i.fontSize,p.defaultFontSize),u=r(i.fontStyle,p.defaultFontStyle),d=r(i.fontFamily,p.defaultFontFamily),c=a.fontString(l,u,d);a.each(t.ticks,function(e,a){if(a>0||i.reverse){var u=t.getDistanceFromCenterForValue(t.ticksAsNumbers[a]);if(n.display&&0!==a&&g(t,n,u,a),i.display){var d=r(i.fontColor,p.defaultFontColor);if(o.font=c,o.save(),o.translate(t.xCenter,t.yCenter),o.rotate(s),i.showLabelBackdrop){var h=o.measureText(e).width;o.fillStyle=i.backdropColor,o.fillRect(-h/2-i.backdropPaddingX,-u-l/2-i.backdropPaddingY,h+2*i.backdropPaddingX,l+2*i.backdropPaddingY)}o.textAlign="center",o.textBaseline="middle",o.fillStyle=d,o.fillText(e,0,-u),o.restore()}}}),(e.angleLines.display||e.pointLabels.display)&&f(t)}}});t.scaleService.registerScaleType("radialLinear",y,v)}},{25:25,34:34,45:45}],57:[function(t,e,n){"use strict";function i(t,e){return t-e}function a(t){var e,n,i,a={},r=[];for(e=0,n=t.length;ee&&s=0&&o<=s;){if(i=o+s>>1,a=t[i-1]||null,r=t[i],!a)return{lo:null,hi:r};if(r[e]n))return{lo:a,hi:r};s=i-1}}return{lo:r,hi:null}}function s(t,e,n,i){var a=o(t,e,n),r=a.lo?a.hi?a.lo:t[t.length-2]:t[0],s=a.lo?a.hi?a.hi:t[t.length-1]:t[1],l=s[e]-r[e],u=l?(n-r[e])/l:0,d=(s[i]-r[i])*u;return r[i]+d}function l(t,e){var n=e.parser,i=e.parser||e.format;return"function"==typeof n?n(t):"string"==typeof t&&"string"==typeof i?p(t,i):(t instanceof p||(t=p(t)),t.isValid()?t:"function"==typeof i?i(t):t)}function u(t,e){if(y.isNullOrUndef(t))return null;var n=e.options.time,i=l(e.getRightValue(t),n);return i.isValid()?(n.round&&i.startOf(n.round),i.valueOf()):null}function d(t,e,n,i){var a,r,o,s=e-t,l=_[n],u=l.size,d=l.steps;if(!d)return Math.ceil(s/((i||1)*u));for(a=0,r=d.length;a1?e[1]:i,o=e[0],l=(s(t,"time",r,"pos")-s(t,"time",o,"pos"))/2),a.time.max||(r=e[e.length-1],o=e.length>1?e[e.length-2]:n,u=(s(t,"time",r,"pos")-s(t,"time",o,"pos"))/2)),{left:l,right:u}}function m(t,e){var n,i,a,r,o=[];for(n=0,i=t.length;n=a&&n<=o&&x.push(n);return i.min=a,i.max=o,i._unit=v,i._majorUnit=y,i._minorFormat=d[v],i._majorFormat=d[y],i._table=r(i._timestamps.data,a,o,s.distribution),i._offsets=g(i._table,x,a,o,s),m(x,y)},getLabelForIndex:function(t,e){var n=this,i=n.chart.data,a=n.options.time,r=i.labels&&t=0&&t + * @version 1.2.2 + * @licence MIT + * @preserve + */ +!function(i){if("function"==typeof define&&define.amd)define(["jquery"],i);else if("object"==typeof module&&module.exports){var t=require("jquery");i(t),module.exports=t}else i(jQuery)}(function(i){function t(i){this.init(i)}t.prototype={value:0,size:100,startAngle:-Math.PI,thickness:"auto",fill:{gradient:["#3aeabb","#fdd250"]},emptyFill:"rgba(0, 0, 0, .1)",animation:{duration:1200,easing:"circleProgressEasing"},animationStartValue:0,reverse:!1,lineCap:"butt",insertMode:"prepend",constructor:t,el:null,canvas:null,ctx:null,radius:0,arcFill:null,lastFrameValue:0,init:function(t){i.extend(this,t),this.radius=this.size/2,this.initWidget(),this.initFill(),this.draw(),this.el.trigger("circle-inited")},initWidget:function(){this.canvas||(this.canvas=i("")["prepend"==this.insertMode?"prependTo":"appendTo"](this.el)[0]);var t=this.canvas;if(t.width=this.size,t.height=this.size,this.ctx=t.getContext("2d"),window.devicePixelRatio>1){var e=window.devicePixelRatio;t.style.width=t.style.height=this.size+"px",t.width=t.height=this.size*e,this.ctx.scale(e,e)}},initFill:function(){function t(){var t=i("")[0];t.width=e.size,t.height=e.size,t.getContext("2d").drawImage(g,0,0,r,r),e.arcFill=e.ctx.createPattern(t,"no-repeat"),e.drawFrame(e.lastFrameValue)}var e=this,a=this.fill,n=this.ctx,r=this.size;if(!a)throw Error("The fill is not specified!");if("string"==typeof a&&(a={color:a}),a.color&&(this.arcFill=a.color),a.gradient){var s=a.gradient;if(1==s.length)this.arcFill=s[0];else if(s.length>1){for(var l=a.gradientAngle||0,o=a.gradientDirection||[r/2*(1-Math.cos(l)),r/2*(1+Math.sin(l)),r/2*(1+Math.cos(l)),r/2*(1-Math.sin(l))],h=n.createLinearGradient.apply(n,o),c=0;c=0&&c0&&b-1 in a)}var x=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=function(a,b){for(var c=0,d=a.length;c+~]|"+K+")"+K+"*"),S=new RegExp("="+K+"*([^\\]'\"]*?)"+K+"*\\]","g"),T=new RegExp(N),U=new RegExp("^"+L+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L+"|[*])"),ATTR:new RegExp("^"+M),PSEUDO:new RegExp("^"+N),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+K+"*(even|odd|(([+-]|)(\\d*)n|)"+K+"*(?:([+-]|)"+K+"*(\\d+)|))"+K+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+K+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+K+"*((?:-\\d)?\\d*)"+K+"*\\)|)(?=[^-]|$)","i")},W=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,$=/[+~]/,_=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),aa=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:d<0?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ba=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ca=function(a,b){return b?"\0"===a?"\ufffd":a.slice(0,-1)+"\\"+a.charCodeAt(a.length-1).toString(16)+" ":"\\"+a},da=function(){m()},ea=ta(function(a){return a.disabled===!0&&("form"in a||"label"in a)},{dir:"parentNode",next:"legend"});try{G.apply(D=H.call(v.childNodes),v.childNodes),D[v.childNodes.length].nodeType}catch(fa){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s=b&&b.ownerDocument,w=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==w&&9!==w&&11!==w)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==w&&(l=Z.exec(a)))if(f=l[1]){if(9===w){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(s&&(j=s.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(l[2])return G.apply(d,b.getElementsByTagName(a)),d;if((f=l[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==w)s=b,r=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(ba,ca):b.setAttribute("id",k=u),o=g(a),h=o.length;while(h--)o[h]="#"+k+" "+sa(o[h]);r=o.join(","),s=$.test(a)&&qa(b.parentNode)||b}if(r)try{return G.apply(d,s.querySelectorAll(r)),d}catch(x){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(P,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("fieldset");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&a.sourceIndex-b.sourceIndex;if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return function(b){return"form"in b?b.parentNode&&b.disabled===!1?"label"in b?"label"in b.parentNode?b.parentNode.disabled===a:b.disabled===a:b.isDisabled===a||b.isDisabled!==!a&&ea(b)===a:b.disabled===a:"label"in b&&b.disabled===a}}function pa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function qa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return!!b&&"HTML"!==b.nodeName},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),v!==n&&(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(n.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){return a.getAttribute("id")===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}}):(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c,d,e,f=b.getElementById(a);if(f){if(c=f.getAttributeNode("id"),c&&c.value===a)return[f];e=b.getElementsByName(a),d=0;while(f=e[d++])if(c=f.getAttributeNode("id"),c&&c.value===a)return[f]}return[]}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){if("undefined"!=typeof b.getElementsByClassName&&p)return b.getElementsByClassName(a)},r=[],q=[],(c.qsa=Y.test(n.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="
",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){a.innerHTML="";var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+K+"*[*^$|!~]?="),2!==a.querySelectorAll(":enabled").length&&q.push(":enabled",":disabled"),o.appendChild(a).disabled=!0,2!==a.querySelectorAll(":disabled").length&&q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Y.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"*"),s.call(a,"[s!='']:x"),r.push("!=",N)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Y.test(o.compareDocumentPosition),t=b||Y.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?I(k,a)-I(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?I(k,a)-I(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?la(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(S,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.escape=function(a){return(a+"").replace(ba,ca)},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(_,aa),a[3]=(a[3]||a[4]||a[5]||"").replace(_,aa),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return V.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&T.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(_,aa).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+K+")"+a+"("+K+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:!b||(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(O," ")+" ").indexOf(c)>-1:"|="===b&&(e===c||e.slice(0,c.length+1)===c+"-"))}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(P,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(_,aa),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return U.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(_,aa).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:oa(!1),disabled:oa(!0),checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return X.test(a.nodeName)},input:function(a){return W.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:pa(function(){return[0]}),last:pa(function(a,b){return[b-1]}),eq:pa(function(a,b,c){return[c<0?c+b:c]}),even:pa(function(a,b){for(var c=0;c=0;)a.push(d);return a}),gt:pa(function(a,b,c){for(var d=c<0?c+b:c;++d1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function va(a,b,c){for(var d=0,e=b.length;d-1&&(f[j]=!(g[j]=l))}}else r=wa(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ya(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ta(function(a){return a===b},h,!0),l=ta(function(a){return I(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];i1&&ua(m),i>1&&sa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(P,"$1"),c,i0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=E.call(i));u=wa(u)}G.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&ga.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=ya(b[c]),f[u]?d.push(f):e.push(f);f=A(a,za(e,d)),f.selector=a}return f},i=ga.select=function(a,b,c,e){var f,i,j,k,l,m="function"==typeof a&&a,n=!e&&g(a=m.selector||a);if(c=c||[],1===n.length){if(i=n[0]=n[0].slice(0),i.length>2&&"ID"===(j=i[0]).type&&9===b.nodeType&&p&&d.relative[i[1].type]){if(b=(d.find.ID(j.matches[0].replace(_,aa),b)||[])[0],!b)return c;m&&(b=b.parentNode),a=a.slice(i.shift().value.length)}f=V.needsContext.test(a)?0:i.length;while(f--){if(j=i[f],d.relative[k=j.type])break;if((l=d.find[k])&&(e=l(j.matches[0].replace(_,aa),$.test(i[0].type)&&qa(b.parentNode)||b))){if(i.splice(f,1),a=e.length&&sa(i),!a)return G.apply(c,e),c;break}}}return(m||h(a,n))(e,b,!p,c,!b||$.test(a)&&qa(b.parentNode)||b),c},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("fieldset"))}),ja(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){if(!c)return a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){if(!c&&"input"===a.nodeName.toLowerCase())return a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(J,function(a,b,c){var d;if(!c)return a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);r.find=x,r.expr=x.selectors,r.expr[":"]=r.expr.pseudos,r.uniqueSort=r.unique=x.uniqueSort,r.text=x.getText,r.isXMLDoc=x.isXML,r.contains=x.contains,r.escapeSelector=x.escape;var y=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&r(a).is(c))break;d.push(a)}return d},z=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},A=r.expr.match.needsContext;function B(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()}var C=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i,D=/^.[^:#\[\.,]*$/;function E(a,b,c){return r.isFunction(b)?r.grep(a,function(a,d){return!!b.call(a,d,a)!==c}):b.nodeType?r.grep(a,function(a){return a===b!==c}):"string"!=typeof b?r.grep(a,function(a){return i.call(b,a)>-1!==c}):D.test(b)?r.filter(b,a,c):(b=r.filter(b,a),r.grep(a,function(a){return i.call(b,a)>-1!==c&&1===a.nodeType}))}r.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?r.find.matchesSelector(d,a)?[d]:[]:r.find.matches(a,r.grep(b,function(a){return 1===a.nodeType}))},r.fn.extend({find:function(a){var b,c,d=this.length,e=this;if("string"!=typeof a)return this.pushStack(r(a).filter(function(){for(b=0;b1?r.uniqueSort(c):c},filter:function(a){return this.pushStack(E(this,a||[],!1))},not:function(a){return this.pushStack(E(this,a||[],!0))},is:function(a){return!!E(this,"string"==typeof a&&A.test(a)?r(a):a||[],!1).length}});var F,G=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,H=r.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||F,"string"==typeof a){if(e="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:G.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof r?b[0]:b,r.merge(this,r.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),C.test(e[1])&&r.isPlainObject(b))for(e in b)r.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}return f=d.getElementById(e[2]),f&&(this[0]=f,this.length=1),this}return a.nodeType?(this[0]=a,this.length=1,this):r.isFunction(a)?void 0!==c.ready?c.ready(a):a(r):r.makeArray(a,this)};H.prototype=r.fn,F=r(d);var I=/^(?:parents|prev(?:Until|All))/,J={children:!0,contents:!0,next:!0,prev:!0};r.fn.extend({has:function(a){var b=r(a,this),c=b.length;return this.filter(function(){for(var a=0;a-1:1===c.nodeType&&r.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?r.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?i.call(r(a),this[0]):i.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(r.uniqueSort(r.merge(this.get(),r(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function K(a,b){while((a=a[b])&&1!==a.nodeType);return a}r.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return y(a,"parentNode")},parentsUntil:function(a,b,c){return y(a,"parentNode",c)},next:function(a){return K(a,"nextSibling")},prev:function(a){return K(a,"previousSibling")},nextAll:function(a){return y(a,"nextSibling")},prevAll:function(a){return y(a,"previousSibling")},nextUntil:function(a,b,c){return y(a,"nextSibling",c)},prevUntil:function(a,b,c){return y(a,"previousSibling",c)},siblings:function(a){return z((a.parentNode||{}).firstChild,a)},children:function(a){return z(a.firstChild)},contents:function(a){return B(a,"iframe")?a.contentDocument:(B(a,"template")&&(a=a.content||a),r.merge([],a.childNodes))}},function(a,b){r.fn[a]=function(c,d){var e=r.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=r.filter(d,e)),this.length>1&&(J[a]||r.uniqueSort(e),I.test(a)&&e.reverse()),this.pushStack(e)}});var L=/[^\x20\t\r\n\f]+/g;function M(a){var b={};return r.each(a.match(L)||[],function(a,c){b[c]=!0}),b}r.Callbacks=function(a){a="string"==typeof a?M(a):r.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=e||a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h-1)f.splice(c,1),c<=h&&h--}),this},has:function(a){return a?r.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=g=[],c||b||(f=c=""),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j};function N(a){return a}function O(a){throw a}function P(a,b,c,d){var e;try{a&&r.isFunction(e=a.promise)?e.call(a).done(b).fail(c):a&&r.isFunction(e=a.then)?e.call(a,b,c):b.apply(void 0,[a].slice(d))}catch(a){c.apply(void 0,[a])}}r.extend({Deferred:function(b){var c=[["notify","progress",r.Callbacks("memory"),r.Callbacks("memory"),2],["resolve","done",r.Callbacks("once memory"),r.Callbacks("once memory"),0,"resolved"],["reject","fail",r.Callbacks("once memory"),r.Callbacks("once memory"),1,"rejected"]],d="pending",e={state:function(){return d},always:function(){return f.done(arguments).fail(arguments),this},"catch":function(a){return e.then(null,a)},pipe:function(){var a=arguments;return r.Deferred(function(b){r.each(c,function(c,d){var e=r.isFunction(a[d[4]])&&a[d[4]];f[d[1]](function(){var a=e&&e.apply(this,arguments);a&&r.isFunction(a.promise)?a.promise().progress(b.notify).done(b.resolve).fail(b.reject):b[d[0]+"With"](this,e?[a]:arguments)})}),a=null}).promise()},then:function(b,d,e){var f=0;function g(b,c,d,e){return function(){var h=this,i=arguments,j=function(){var a,j;if(!(b=f&&(d!==O&&(h=void 0,i=[a]),c.rejectWith(h,i))}};b?k():(r.Deferred.getStackHook&&(k.stackTrace=r.Deferred.getStackHook()),a.setTimeout(k))}}return r.Deferred(function(a){c[0][3].add(g(0,a,r.isFunction(e)?e:N,a.notifyWith)),c[1][3].add(g(0,a,r.isFunction(b)?b:N)),c[2][3].add(g(0,a,r.isFunction(d)?d:O))}).promise()},promise:function(a){return null!=a?r.extend(a,e):e}},f={};return r.each(c,function(a,b){var g=b[2],h=b[5];e[b[1]]=g.add,h&&g.add(function(){d=h},c[3-a][2].disable,c[0][2].lock),g.add(b[3].fire),f[b[0]]=function(){return f[b[0]+"With"](this===f?void 0:this,arguments),this},f[b[0]+"With"]=g.fireWith}),e.promise(f),b&&b.call(f,f),f},when:function(a){var b=arguments.length,c=b,d=Array(c),e=f.call(arguments),g=r.Deferred(),h=function(a){return function(c){d[a]=this,e[a]=arguments.length>1?f.call(arguments):c,--b||g.resolveWith(d,e)}};if(b<=1&&(P(a,g.done(h(c)).resolve,g.reject,!b),"pending"===g.state()||r.isFunction(e[c]&&e[c].then)))return g.then();while(c--)P(e[c],h(c),g.reject);return g.promise()}});var Q=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;r.Deferred.exceptionHook=function(b,c){a.console&&a.console.warn&&b&&Q.test(b.name)&&a.console.warn("jQuery.Deferred exception: "+b.message,b.stack,c)},r.readyException=function(b){a.setTimeout(function(){throw b})};var R=r.Deferred();r.fn.ready=function(a){return R.then(a)["catch"](function(a){r.readyException(a)}),this},r.extend({isReady:!1,readyWait:1,ready:function(a){(a===!0?--r.readyWait:r.isReady)||(r.isReady=!0,a!==!0&&--r.readyWait>0||R.resolveWith(d,[r]))}}),r.ready.then=R.then;function S(){d.removeEventListener("DOMContentLoaded",S), +a.removeEventListener("load",S),r.ready()}"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll?a.setTimeout(r.ready):(d.addEventListener("DOMContentLoaded",S),a.addEventListener("load",S));var T=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===r.type(c)){e=!0;for(h in c)T(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,r.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(r(a),c)})),b))for(;h1,null,!0)},removeData:function(a){return this.each(function(){X.remove(this,a)})}}),r.extend({queue:function(a,b,c){var d;if(a)return b=(b||"fx")+"queue",d=W.get(a,b),c&&(!d||Array.isArray(c)?d=W.access(a,b,r.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||"fx";var c=r.queue(a,b),d=c.length,e=c.shift(),f=r._queueHooks(a,b),g=function(){r.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return W.get(a,c)||W.access(a,c,{empty:r.Callbacks("once memory").add(function(){W.remove(a,[b+"queue",c])})})}}),r.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length\x20\t\r\n\f]+)/i,la=/^$|\/(?:java|ecma)script/i,ma={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};ma.optgroup=ma.option,ma.tbody=ma.tfoot=ma.colgroup=ma.caption=ma.thead,ma.th=ma.td;function na(a,b){var c;return c="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):[],void 0===b||b&&B(a,b)?r.merge([a],c):c}function oa(a,b){for(var c=0,d=a.length;c-1)e&&e.push(f);else if(j=r.contains(f.ownerDocument,f),g=na(l.appendChild(f),"script"),j&&oa(g),c){k=0;while(f=g[k++])la.test(f.type||"")&&c.push(f)}return l}!function(){var a=d.createDocumentFragment(),b=a.appendChild(d.createElement("div")),c=d.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),o.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="",o.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var ra=d.documentElement,sa=/^key/,ta=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,ua=/^([^.]*)(?:\.(.+)|)/;function va(){return!0}function wa(){return!1}function xa(){try{return d.activeElement}catch(a){}}function ya(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)ya(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=wa;else if(!e)return a;return 1===f&&(g=e,e=function(a){return r().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=r.guid++)),a.each(function(){r.event.add(this,b,e,d,c)})}r.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=W.get(a);if(q){c.handler&&(f=c,c=f.handler,e=f.selector),e&&r.find.matchesSelector(ra,e),c.guid||(c.guid=r.guid++),(i=q.events)||(i=q.events={}),(g=q.handle)||(g=q.handle=function(b){return"undefined"!=typeof r&&r.event.triggered!==b.type?r.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(L)||[""],j=b.length;while(j--)h=ua.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n&&(l=r.event.special[n]||{},n=(e?l.delegateType:l.bindType)||n,l=r.event.special[n]||{},k=r.extend({type:n,origType:p,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&r.expr.match.needsContext.test(e),namespace:o.join(".")},f),(m=i[n])||(m=i[n]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,o,g)!==!1||a.addEventListener&&a.addEventListener(n,g)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),r.event.global[n]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=W.hasData(a)&&W.get(a);if(q&&(i=q.events)){b=(b||"").match(L)||[""],j=b.length;while(j--)if(h=ua.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n){l=r.event.special[n]||{},n=(d?l.delegateType:l.bindType)||n,m=i[n]||[],h=h[2]&&new RegExp("(^|\\.)"+o.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&p!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,o,q.handle)!==!1||r.removeEvent(a,n,q.handle),delete i[n])}else for(n in i)r.event.remove(a,n+b[j],c,d,!0);r.isEmptyObject(i)&&W.remove(a,"handle events")}},dispatch:function(a){var b=r.event.fix(a),c,d,e,f,g,h,i=new Array(arguments.length),j=(W.get(this,"events")||{})[b.type]||[],k=r.event.special[b.type]||{};for(i[0]=b,c=1;c=1))for(;j!==this;j=j.parentNode||this)if(1===j.nodeType&&("click"!==a.type||j.disabled!==!0)){for(f=[],g={},c=0;c-1:r.find(e,this,null,[j]).length),g[e]&&f.push(d);f.length&&h.push({elem:j,handlers:f})}return j=this,i\x20\t\r\n\f]*)[^>]*)\/>/gi,Aa=/\s*$/g;function Ea(a,b){return B(a,"table")&&B(11!==b.nodeType?b:b.firstChild,"tr")?r(">tbody",a)[0]||a:a}function Fa(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function Ga(a){var b=Ca.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Ha(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(W.hasData(a)&&(f=W.access(a),g=W.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;c1&&"string"==typeof q&&!o.checkClone&&Ba.test(q))return a.each(function(e){var f=a.eq(e);s&&(b[0]=q.call(this,e,f.html())),Ja(f,b,c,d)});if(m&&(e=qa(b,a[0].ownerDocument,!1,a,d),f=e.firstChild,1===e.childNodes.length&&(e=f),f||d)){for(h=r.map(na(e,"script"),Fa),i=h.length;l")},clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=r.contains(a.ownerDocument,a);if(!(o.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||r.isXMLDoc(a)))for(g=na(h),f=na(a),d=0,e=f.length;d0&&oa(g,!i&&na(a,"script")),h},cleanData:function(a){for(var b,c,d,e=r.event.special,f=0;void 0!==(c=a[f]);f++)if(U(c)){if(b=c[W.expando]){if(b.events)for(d in b.events)e[d]?r.event.remove(c,d):r.removeEvent(c,d,b.handle);c[W.expando]=void 0}c[X.expando]&&(c[X.expando]=void 0)}}}),r.fn.extend({detach:function(a){return Ka(this,a,!0)},remove:function(a){return Ka(this,a)},text:function(a){return T(this,function(a){return void 0===a?r.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=a)})},null,a,arguments.length)},append:function(){return Ja(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ea(this,a);b.appendChild(a)}})},prepend:function(){return Ja(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ea(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return Ja(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return Ja(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(r.cleanData(na(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null!=a&&a,b=null==b?a:b,this.map(function(){return r.clone(this,a,b)})},html:function(a){return T(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!Aa.test(a)&&!ma[(ka.exec(a)||["",""])[1].toLowerCase()]){a=r.htmlPrefilter(a);try{for(;c1)}});function _a(a,b,c,d,e){return new _a.prototype.init(a,b,c,d,e)}r.Tween=_a,_a.prototype={constructor:_a,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||r.easing._default,this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(r.cssNumber[c]?"":"px")},cur:function(){var a=_a.propHooks[this.prop];return a&&a.get?a.get(this):_a.propHooks._default.get(this)},run:function(a){var b,c=_a.propHooks[this.prop];return this.options.duration?this.pos=b=r.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):_a.propHooks._default.set(this),this}},_a.prototype.init.prototype=_a.prototype,_a.propHooks={_default:{get:function(a){var b;return 1!==a.elem.nodeType||null!=a.elem[a.prop]&&null==a.elem.style[a.prop]?a.elem[a.prop]:(b=r.css(a.elem,a.prop,""),b&&"auto"!==b?b:0)},set:function(a){r.fx.step[a.prop]?r.fx.step[a.prop](a):1!==a.elem.nodeType||null==a.elem.style[r.cssProps[a.prop]]&&!r.cssHooks[a.prop]?a.elem[a.prop]=a.now:r.style(a.elem,a.prop,a.now+a.unit)}}},_a.propHooks.scrollTop=_a.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},r.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2},_default:"swing"},r.fx=_a.prototype.init,r.fx.step={};var ab,bb,cb=/^(?:toggle|show|hide)$/,db=/queueHooks$/;function eb(){bb&&(d.hidden===!1&&a.requestAnimationFrame?a.requestAnimationFrame(eb):a.setTimeout(eb,r.fx.interval),r.fx.tick())}function fb(){return a.setTimeout(function(){ab=void 0}),ab=r.now()}function gb(a,b){var c,d=0,e={height:a};for(b=b?1:0;d<4;d+=2-b)c=ca[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function hb(a,b,c){for(var d,e=(kb.tweeners[b]||[]).concat(kb.tweeners["*"]),f=0,g=e.length;f1)},removeAttr:function(a){return this.each(function(){r.removeAttr(this,a)})}}),r.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return"undefined"==typeof a.getAttribute?r.prop(a,b,c):(1===f&&r.isXMLDoc(a)||(e=r.attrHooks[b.toLowerCase()]||(r.expr.match.bool.test(b)?lb:void 0)),void 0!==c?null===c?void r.removeAttr(a,b):e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:(a.setAttribute(b,c+""),c):e&&"get"in e&&null!==(d=e.get(a,b))?d:(d=r.find.attr(a,b), +null==d?void 0:d))},attrHooks:{type:{set:function(a,b){if(!o.radioValue&&"radio"===b&&B(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}},removeAttr:function(a,b){var c,d=0,e=b&&b.match(L);if(e&&1===a.nodeType)while(c=e[d++])a.removeAttribute(c)}}),lb={set:function(a,b,c){return b===!1?r.removeAttr(a,c):a.setAttribute(c,c),c}},r.each(r.expr.match.bool.source.match(/\w+/g),function(a,b){var c=mb[b]||r.find.attr;mb[b]=function(a,b,d){var e,f,g=b.toLowerCase();return d||(f=mb[g],mb[g]=e,e=null!=c(a,b,d)?g:null,mb[g]=f),e}});var nb=/^(?:input|select|textarea|button)$/i,ob=/^(?:a|area)$/i;r.fn.extend({prop:function(a,b){return T(this,r.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[r.propFix[a]||a]})}}),r.extend({prop:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return 1===f&&r.isXMLDoc(a)||(b=r.propFix[b]||b,e=r.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=r.find.attr(a,"tabindex");return b?parseInt(b,10):nb.test(a.nodeName)||ob.test(a.nodeName)&&a.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),o.optSelected||(r.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null},set:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}}),r.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){r.propFix[this.toLowerCase()]=this});function pb(a){var b=a.match(L)||[];return b.join(" ")}function qb(a){return a.getAttribute&&a.getAttribute("class")||""}r.fn.extend({addClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).addClass(a.call(this,b,qb(this)))});if("string"==typeof a&&a){b=a.match(L)||[];while(c=this[i++])if(e=qb(c),d=1===c.nodeType&&" "+pb(e)+" "){g=0;while(f=b[g++])d.indexOf(" "+f+" ")<0&&(d+=f+" ");h=pb(d),e!==h&&c.setAttribute("class",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).removeClass(a.call(this,b,qb(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof a&&a){b=a.match(L)||[];while(c=this[i++])if(e=qb(c),d=1===c.nodeType&&" "+pb(e)+" "){g=0;while(f=b[g++])while(d.indexOf(" "+f+" ")>-1)d=d.replace(" "+f+" "," ");h=pb(d),e!==h&&c.setAttribute("class",h)}}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):r.isFunction(a)?this.each(function(c){r(this).toggleClass(a.call(this,c,qb(this),b),b)}):this.each(function(){var b,d,e,f;if("string"===c){d=0,e=r(this),f=a.match(L)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else void 0!==a&&"boolean"!==c||(b=qb(this),b&&W.set(this,"__className__",b),this.setAttribute&&this.setAttribute("class",b||a===!1?"":W.get(this,"__className__")||""))})},hasClass:function(a){var b,c,d=0;b=" "+a+" ";while(c=this[d++])if(1===c.nodeType&&(" "+pb(qb(c))+" ").indexOf(b)>-1)return!0;return!1}});var rb=/\r/g;r.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=r.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,r(this).val()):a,null==e?e="":"number"==typeof e?e+="":Array.isArray(e)&&(e=r.map(e,function(a){return null==a?"":a+""})),b=r.valHooks[this.type]||r.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=r.valHooks[e.type]||r.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(rb,""):null==c?"":c)}}}),r.extend({valHooks:{option:{get:function(a){var b=r.find.attr(a,"value");return null!=b?b:pb(r.text(a))}},select:{get:function(a){var b,c,d,e=a.options,f=a.selectedIndex,g="select-one"===a.type,h=g?null:[],i=g?f+1:e.length;for(d=f<0?i:g?f:0;d-1)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),r.each(["radio","checkbox"],function(){r.valHooks[this]={set:function(a,b){if(Array.isArray(b))return a.checked=r.inArray(r(a).val(),b)>-1}},o.checkOn||(r.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var sb=/^(?:focusinfocus|focusoutblur)$/;r.extend(r.event,{trigger:function(b,c,e,f){var g,h,i,j,k,m,n,o=[e||d],p=l.call(b,"type")?b.type:b,q=l.call(b,"namespace")?b.namespace.split("."):[];if(h=i=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!sb.test(p+r.event.triggered)&&(p.indexOf(".")>-1&&(q=p.split("."),p=q.shift(),q.sort()),k=p.indexOf(":")<0&&"on"+p,b=b[r.expando]?b:new r.Event(p,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=q.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:r.makeArray(c,[b]),n=r.event.special[p]||{},f||!n.trigger||n.trigger.apply(e,c)!==!1)){if(!f&&!n.noBubble&&!r.isWindow(e)){for(j=n.delegateType||p,sb.test(j+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),i=h;i===(e.ownerDocument||d)&&o.push(i.defaultView||i.parentWindow||a)}g=0;while((h=o[g++])&&!b.isPropagationStopped())b.type=g>1?j:n.bindType||p,m=(W.get(h,"events")||{})[b.type]&&W.get(h,"handle"),m&&m.apply(h,c),m=k&&h[k],m&&m.apply&&U(h)&&(b.result=m.apply(h,c),b.result===!1&&b.preventDefault());return b.type=p,f||b.isDefaultPrevented()||n._default&&n._default.apply(o.pop(),c)!==!1||!U(e)||k&&r.isFunction(e[p])&&!r.isWindow(e)&&(i=e[k],i&&(e[k]=null),r.event.triggered=p,e[p](),r.event.triggered=void 0,i&&(e[k]=i)),b.result}},simulate:function(a,b,c){var d=r.extend(new r.Event,c,{type:a,isSimulated:!0});r.event.trigger(d,null,b)}}),r.fn.extend({trigger:function(a,b){return this.each(function(){r.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];if(c)return r.event.trigger(a,b,c,!0)}}),r.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(a,b){r.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),r.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),o.focusin="onfocusin"in a,o.focusin||r.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){r.event.simulate(b,a.target,r.event.fix(a))};r.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=W.access(d,b);e||d.addEventListener(a,c,!0),W.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=W.access(d,b)-1;e?W.access(d,b,e):(d.removeEventListener(a,c,!0),W.remove(d,b))}}});var tb=a.location,ub=r.now(),vb=/\?/;r.parseXML=function(b){var c;if(!b||"string"!=typeof b)return null;try{c=(new a.DOMParser).parseFromString(b,"text/xml")}catch(d){c=void 0}return c&&!c.getElementsByTagName("parsererror").length||r.error("Invalid XML: "+b),c};var wb=/\[\]$/,xb=/\r?\n/g,yb=/^(?:submit|button|image|reset|file)$/i,zb=/^(?:input|select|textarea|keygen)/i;function Ab(a,b,c,d){var e;if(Array.isArray(b))r.each(b,function(b,e){c||wb.test(a)?d(a,e):Ab(a+"["+("object"==typeof e&&null!=e?b:"")+"]",e,c,d)});else if(c||"object"!==r.type(b))d(a,b);else for(e in b)Ab(a+"["+e+"]",b[e],c,d)}r.param=function(a,b){var c,d=[],e=function(a,b){var c=r.isFunction(b)?b():b;d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(null==c?"":c)};if(Array.isArray(a)||a.jquery&&!r.isPlainObject(a))r.each(a,function(){e(this.name,this.value)});else for(c in a)Ab(c,a[c],b,e);return d.join("&")},r.fn.extend({serialize:function(){return r.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=r.prop(this,"elements");return a?r.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!r(this).is(":disabled")&&zb.test(this.nodeName)&&!yb.test(a)&&(this.checked||!ja.test(a))}).map(function(a,b){var c=r(this).val();return null==c?null:Array.isArray(c)?r.map(c,function(a){return{name:b.name,value:a.replace(xb,"\r\n")}}):{name:b.name,value:c.replace(xb,"\r\n")}}).get()}});var Bb=/%20/g,Cb=/#.*$/,Db=/([?&])_=[^&]*/,Eb=/^(.*?):[ \t]*([^\r\n]*)$/gm,Fb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Gb=/^(?:GET|HEAD)$/,Hb=/^\/\//,Ib={},Jb={},Kb="*/".concat("*"),Lb=d.createElement("a");Lb.href=tb.href;function Mb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(L)||[];if(r.isFunction(c))while(d=f[e++])"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Nb(a,b,c,d){var e={},f=a===Jb;function g(h){var i;return e[h]=!0,r.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Ob(a,b){var c,d,e=r.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&r.extend(!0,a,d),a}function Pb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}if(f)return f!==i[0]&&i.unshift(f),c[f]}function Qb(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}r.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:tb.href,type:"GET",isLocal:Fb.test(tb.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Kb,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":r.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Ob(Ob(a,r.ajaxSettings),b):Ob(r.ajaxSettings,a)},ajaxPrefilter:Mb(Ib),ajaxTransport:Mb(Jb),ajax:function(b,c){"object"==typeof b&&(c=b,b=void 0),c=c||{};var e,f,g,h,i,j,k,l,m,n,o=r.ajaxSetup({},c),p=o.context||o,q=o.context&&(p.nodeType||p.jquery)?r(p):r.event,s=r.Deferred(),t=r.Callbacks("once memory"),u=o.statusCode||{},v={},w={},x="canceled",y={readyState:0,getResponseHeader:function(a){var b;if(k){if(!h){h={};while(b=Eb.exec(g))h[b[1].toLowerCase()]=b[2]}b=h[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return k?g:null},setRequestHeader:function(a,b){return null==k&&(a=w[a.toLowerCase()]=w[a.toLowerCase()]||a,v[a]=b),this},overrideMimeType:function(a){return null==k&&(o.mimeType=a),this},statusCode:function(a){var b;if(a)if(k)y.always(a[y.status]);else for(b in a)u[b]=[u[b],a[b]];return this},abort:function(a){var b=a||x;return e&&e.abort(b),A(0,b),this}};if(s.promise(y),o.url=((b||o.url||tb.href)+"").replace(Hb,tb.protocol+"//"),o.type=c.method||c.type||o.method||o.type,o.dataTypes=(o.dataType||"*").toLowerCase().match(L)||[""],null==o.crossDomain){j=d.createElement("a");try{j.href=o.url,j.href=j.href,o.crossDomain=Lb.protocol+"//"+Lb.host!=j.protocol+"//"+j.host}catch(z){o.crossDomain=!0}}if(o.data&&o.processData&&"string"!=typeof o.data&&(o.data=r.param(o.data,o.traditional)),Nb(Ib,o,c,y),k)return y;l=r.event&&o.global,l&&0===r.active++&&r.event.trigger("ajaxStart"),o.type=o.type.toUpperCase(),o.hasContent=!Gb.test(o.type),f=o.url.replace(Cb,""),o.hasContent?o.data&&o.processData&&0===(o.contentType||"").indexOf("application/x-www-form-urlencoded")&&(o.data=o.data.replace(Bb,"+")):(n=o.url.slice(f.length),o.data&&(f+=(vb.test(f)?"&":"?")+o.data,delete o.data),o.cache===!1&&(f=f.replace(Db,"$1"),n=(vb.test(f)?"&":"?")+"_="+ub++ +n),o.url=f+n),o.ifModified&&(r.lastModified[f]&&y.setRequestHeader("If-Modified-Since",r.lastModified[f]),r.etag[f]&&y.setRequestHeader("If-None-Match",r.etag[f])),(o.data&&o.hasContent&&o.contentType!==!1||c.contentType)&&y.setRequestHeader("Content-Type",o.contentType),y.setRequestHeader("Accept",o.dataTypes[0]&&o.accepts[o.dataTypes[0]]?o.accepts[o.dataTypes[0]]+("*"!==o.dataTypes[0]?", "+Kb+"; q=0.01":""):o.accepts["*"]);for(m in o.headers)y.setRequestHeader(m,o.headers[m]);if(o.beforeSend&&(o.beforeSend.call(p,y,o)===!1||k))return y.abort();if(x="abort",t.add(o.complete),y.done(o.success),y.fail(o.error),e=Nb(Jb,o,c,y)){if(y.readyState=1,l&&q.trigger("ajaxSend",[y,o]),k)return y;o.async&&o.timeout>0&&(i=a.setTimeout(function(){y.abort("timeout")},o.timeout));try{k=!1,e.send(v,A)}catch(z){if(k)throw z;A(-1,z)}}else A(-1,"No Transport");function A(b,c,d,h){var j,m,n,v,w,x=c;k||(k=!0,i&&a.clearTimeout(i),e=void 0,g=h||"",y.readyState=b>0?4:0,j=b>=200&&b<300||304===b,d&&(v=Pb(o,y,d)),v=Qb(o,v,y,j),j?(o.ifModified&&(w=y.getResponseHeader("Last-Modified"),w&&(r.lastModified[f]=w),w=y.getResponseHeader("etag"),w&&(r.etag[f]=w)),204===b||"HEAD"===o.type?x="nocontent":304===b?x="notmodified":(x=v.state,m=v.data,n=v.error,j=!n)):(n=x,!b&&x||(x="error",b<0&&(b=0))),y.status=b,y.statusText=(c||x)+"",j?s.resolveWith(p,[m,x,y]):s.rejectWith(p,[y,x,n]),y.statusCode(u),u=void 0,l&&q.trigger(j?"ajaxSuccess":"ajaxError",[y,o,j?m:n]),t.fireWith(p,[y,x]),l&&(q.trigger("ajaxComplete",[y,o]),--r.active||r.event.trigger("ajaxStop")))}return y},getJSON:function(a,b,c){return r.get(a,b,c,"json")},getScript:function(a,b){return r.get(a,void 0,b,"script")}}),r.each(["get","post"],function(a,b){r[b]=function(a,c,d,e){return r.isFunction(c)&&(e=e||d,d=c,c=void 0),r.ajax(r.extend({url:a,type:b,dataType:e,data:c,success:d},r.isPlainObject(a)&&a))}}),r._evalUrl=function(a){return r.ajax({url:a,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},r.fn.extend({wrapAll:function(a){var b;return this[0]&&(r.isFunction(a)&&(a=a.call(this[0])),b=r(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this},wrapInner:function(a){return r.isFunction(a)?this.each(function(b){r(this).wrapInner(a.call(this,b))}):this.each(function(){var b=r(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=r.isFunction(a);return this.each(function(c){r(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(a){return this.parent(a).not("body").each(function(){r(this).replaceWith(this.childNodes)}),this}}),r.expr.pseudos.hidden=function(a){return!r.expr.pseudos.visible(a)},r.expr.pseudos.visible=function(a){return!!(a.offsetWidth||a.offsetHeight||a.getClientRects().length)},r.ajaxSettings.xhr=function(){try{return new a.XMLHttpRequest}catch(b){}};var Rb={0:200,1223:204},Sb=r.ajaxSettings.xhr();o.cors=!!Sb&&"withCredentials"in Sb,o.ajax=Sb=!!Sb,r.ajaxTransport(function(b){var c,d;if(o.cors||Sb&&!b.crossDomain)return{send:function(e,f){var g,h=b.xhr();if(h.open(b.type,b.url,b.async,b.username,b.password),b.xhrFields)for(g in b.xhrFields)h[g]=b.xhrFields[g];b.mimeType&&h.overrideMimeType&&h.overrideMimeType(b.mimeType),b.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest");for(g in e)h.setRequestHeader(g,e[g]);c=function(a){return function(){c&&(c=d=h.onload=h.onerror=h.onabort=h.onreadystatechange=null,"abort"===a?h.abort():"error"===a?"number"!=typeof h.status?f(0,"error"):f(h.status,h.statusText):f(Rb[h.status]||h.status,h.statusText,"text"!==(h.responseType||"text")||"string"!=typeof h.responseText?{binary:h.response}:{text:h.responseText},h.getAllResponseHeaders()))}},h.onload=c(),d=h.onerror=c("error"),void 0!==h.onabort?h.onabort=d:h.onreadystatechange=function(){4===h.readyState&&a.setTimeout(function(){c&&d()})},c=c("abort");try{h.send(b.hasContent&&b.data||null)}catch(i){if(c)throw i}},abort:function(){c&&c()}}}),r.ajaxPrefilter(function(a){a.crossDomain&&(a.contents.script=!1)}),r.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(a){return r.globalEval(a),a}}}),r.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),r.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(e,f){b=r(" + - - - + + + - + + + - {% block head %} - {% endblock %} + + + + + + + + + + + + + + + + + + + {% if LYRA_ANALYTICS_ID %} + + + {% endif %} + + + {% block head %} + {% endblock %} - - -{% block nav %} -{% endblock %} - -
+ +
+
+ {% with messages = get_flashed_messages(with_categories=true) %} - - {% if messages %} - {% for category, message in messages %} - - {% endfor %} - {% endif %} + + {% if messages %} + {% for category, message in messages %} + + {% endfor %} + {% endif %} {% endwith %} +
- - {% block content %}{% endblock %} + {% block content %} + {% endblock %}
+ - - - - + {% block script %} {% endblock %} - \ No newline at end of file diff --git a/templates/base_app.html b/templates/base_app.html deleted file mode 100644 index 8b0b7092..00000000 --- a/templates/base_app.html +++ /dev/null @@ -1,30 +0,0 @@ -{# Base for all pages after user logs in #} -{% extends 'base.html' %} - -{% block nav %} - {% set navigation_bar = [ - (url_for("dashboard.index"), 'dashboard', 'Dashboard'), -]-%} - - - {% set active_page = active_page|default('index') -%} - - -{% endblock %} \ No newline at end of file diff --git a/templates/dashboard/index.html b/templates/dashboard/index.html deleted file mode 100644 index 915990be..00000000 --- a/templates/dashboard/index.html +++ /dev/null @@ -1,13 +0,0 @@ -{% from "_formhelpers.html" import render_field %} - -{% extends 'base_app.html' %} - -{% set active_page = "dashboard" %} - -{% block title %} - Dashboard -{% endblock %} - -{% block content %} - Dashboard -{% endblock %} \ No newline at end of file diff --git a/templates/default.html b/templates/default.html new file mode 100644 index 00000000..30e98d3c --- /dev/null +++ b/templates/default.html @@ -0,0 +1,18 @@ +{% extends "base.html" %} + +{% block content %} +
+ {% include "header.html" %} + +
+
+ {% block default_content %} + {% endblock %} +
+ +
+
+ + {% include "footer.html" %} + +{% endblock %} \ No newline at end of file diff --git a/templates/error.html b/templates/error.html new file mode 100644 index 00000000..eef6e63e --- /dev/null +++ b/templates/error.html @@ -0,0 +1,26 @@ +{% extends "base.html" %} + +{% block content %} +
+
+
+ + {% block error_name %} + {% endblock %} +
+ +

+ {% block error_description %} + {% endblock %} +

+ + {% block suggestion %} + + Home Page + + {% endblock %} + + +
+
+{% endblock %} \ No newline at end of file diff --git a/templates/error/400.html b/templates/error/400.html new file mode 100644 index 00000000..2eedd8df --- /dev/null +++ b/templates/error/400.html @@ -0,0 +1,15 @@ +{% extends "error.html" %} + +{% block error_name %} + 400 +{% endblock %} + +{% block error_description %} + We are sorry but your request contains bad syntax and cannot be fulfilled +{% endblock %} + +{% block suggestion %} + + Home Page + +{% endblock %} \ No newline at end of file diff --git a/templates/error/401.html b/templates/error/401.html new file mode 100644 index 00000000..312f9277 --- /dev/null +++ b/templates/error/401.html @@ -0,0 +1,15 @@ +{% extends "error.html" %} + +{% block error_name %} + You need to login to see this page. +{% endblock %} + +{% block error_description %} + We are sorry but you are not authorized to access this page. +{% endblock %} + +{% block suggestion %} + + Login + +{% endblock %} \ No newline at end of file diff --git a/templates/error/403.html b/templates/error/403.html new file mode 100644 index 00000000..31770629 --- /dev/null +++ b/templates/error/403.html @@ -0,0 +1,15 @@ +{% extends "error.html" %} + +{% block error_name %} + 403 +{% endblock %} + +{% block error_description %} + We are sorry but you do not have permission to access this page +{% endblock %} + +{% block suggestion %} + + Home Page + +{% endblock %} \ No newline at end of file diff --git a/templates/error/404.html b/templates/error/404.html new file mode 100644 index 00000000..addb70a6 --- /dev/null +++ b/templates/error/404.html @@ -0,0 +1,15 @@ +{% extends "error.html" %} + +{% block error_name %} + 404 +{% endblock %} + +{% block error_description %} + This page does not exist. +{% endblock %} + +{% block suggestion %} + + Go Back + +{% endblock %} \ No newline at end of file diff --git a/templates/error/500.html b/templates/error/500.html new file mode 100644 index 00000000..a08b3c11 --- /dev/null +++ b/templates/error/500.html @@ -0,0 +1,16 @@ +{% extends "error.html" %} + +{% block error_name %} + Server error +{% endblock %} + +{% block error_description %} + Looks like we are having some server issues...

+ We are notified and will look at this issue asap! +{% endblock %} + +{% block suggestion %} + + Go Back + +{% endblock %} \ No newline at end of file diff --git a/templates/footer.html b/templates/footer.html new file mode 100644 index 00000000..0c7182c3 --- /dev/null +++ b/templates/footer.html @@ -0,0 +1,23 @@ + \ No newline at end of file diff --git a/templates/header.html b/templates/header.html new file mode 100644 index 00000000..3f0acb11 --- /dev/null +++ b/templates/header.html @@ -0,0 +1,76 @@ +
+
+
+ + logo + + +
+ {% if current_user.should_upgrade() %} + + {% endif %} + + +
+ + + + +
+
+
+ +
+
+
+
+ {% include "menu.html" %} +
+
+
+
+ + diff --git a/templates/menu.html b/templates/menu.html new file mode 100644 index 00000000..253aa383 --- /dev/null +++ b/templates/menu.html @@ -0,0 +1,29 @@ + \ No newline at end of file diff --git a/templates/single.html b/templates/single.html new file mode 100644 index 00000000..01e95a66 --- /dev/null +++ b/templates/single.html @@ -0,0 +1,20 @@ +{% extends "base.html" %} + +{% block content %} +
+
+
+ +
+
+
+{% endblock %} \ No newline at end of file diff --git a/tests/__init__.py b/tests/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/tests/conftest.py b/tests/conftest.py new file mode 100644 index 00000000..080c560e --- /dev/null +++ b/tests/conftest.py @@ -0,0 +1,37 @@ +import os + +# use in-memory database +# need to set before importing any other module as DB_URI is init at import time +os.environ["DB_URI"] = "sqlite://" + +import pytest + +from app.extensions import db +from server import create_app + + +@pytest.fixture +def flask_app(): + app = create_app() + + app.config["TESTING"] = True + + with app.app_context(): + db.create_all() + + yield app + + +@pytest.fixture +def flask_client(): + app = create_app() + + # use in-memory database + app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite://" + app.config["TESTING"] = True + + client = app.test_client() + + with app.app_context(): + db.create_all() + yield client diff --git a/tests/oauth/__init__.py b/tests/oauth/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/tests/oauth/test_authorize.py b/tests/oauth/test_authorize.py new file mode 100644 index 00000000..6d0cae5d --- /dev/null +++ b/tests/oauth/test_authorize.py @@ -0,0 +1,26 @@ +from app.oauth.views.authorize import ( + get_host_name_and_scheme, + generate_access_token, + construct_url, +) + + +def test_get_host_name_and_scheme(): + assert get_host_name_and_scheme("http://localhost:8000?a=b") == ( + "localhost", + "http", + ) + + assert get_host_name_and_scheme( + "https://www.bubblecode.net/en/2016/01/22/understanding-oauth2/#Implicit_Grant" + ) == ("www.bubblecode.net", "https") + + +def test_generate_access_token(flask_client): + access_token = generate_access_token() + assert len(access_token) == 40 + + +def test_construct_url(): + url = construct_url("http://ab.cd", {"x": "1 2"}) + assert url == "http://ab.cd?x=1%202" diff --git a/tests/test_jose_utils.py b/tests/test_jose_utils.py new file mode 100644 index 00000000..6907b8dd --- /dev/null +++ b/tests/test_jose_utils.py @@ -0,0 +1,21 @@ +from app.extensions import db +from app.jose_utils import make_id_token, verify_id_token +from app.models import ClientUser +from server import fake_data + + +def test_encode_decode(flask_app): + with flask_app.app_context(): + fake_data() + ClientUser.create(client_id=1, user_id=1) + db.session.commit() + jwt_token = make_id_token(ClientUser.get(1)) + + assert type(jwt_token) is str + assert verify_id_token(jwt_token) + + +def test_db_tear_down(flask_app): + """make sure the db is reset after each test""" + with flask_app.app_context(): + assert len(ClientUser.filter_by().all()) == 0 diff --git a/tests/test_models.py b/tests/test_models.py new file mode 100644 index 00000000..16c4a226 --- /dev/null +++ b/tests/test_models.py @@ -0,0 +1,7 @@ +from app.config import EMAIL_DOMAIN +from app.models import generate_email + + +def test_generate_email(flask_client): + email = generate_email() + assert email.endswith("@" + EMAIL_DOMAIN) diff --git a/tests/test_oauth_models.py b/tests/test_oauth_models.py new file mode 100644 index 00000000..f3eade81 --- /dev/null +++ b/tests/test_oauth_models.py @@ -0,0 +1,54 @@ +import flask +import pytest + +from app.oauth_models import get_scopes, ScopeE, get_response_types, ResponseType + + +def test_get_scopes(flask_app): + with flask_app.test_request_context("/"): + scopes = get_scopes(flask.request) + assert scopes == set() + + with flask_app.test_request_context("/?scope=email&scope=name"): + scopes = get_scopes(flask.request) + assert scopes == {ScopeE.NAME, ScopeE.EMAIL} + + # a space between email and name + with flask_app.test_request_context("/?scope=email%20name"): + scopes = get_scopes(flask.request) + assert scopes == {ScopeE.NAME, ScopeE.EMAIL} + + # a comma between email and name + with flask_app.test_request_context("/?scope=email,name"): + scopes = get_scopes(flask.request) + assert scopes == {ScopeE.NAME, ScopeE.EMAIL} + + # non-existent scope: raise ValueError + with flask_app.test_request_context("/?scope=abcd"): + with pytest.raises(ValueError): + get_scopes(flask.request) + + +def test_get_response_types(flask_app): + with flask_app.test_request_context("/"): + response_types = get_response_types(flask.request) + assert response_types == set() + + with flask_app.test_request_context("/?response_type=token&response_type=id_token"): + response_types = get_response_types(flask.request) + assert response_types == {ResponseType.TOKEN, ResponseType.ID_TOKEN} + + # a space as separator + with flask_app.test_request_context("/?response_type=token%20id_token"): + response_types = get_response_types(flask.request) + assert response_types == {ResponseType.TOKEN, ResponseType.ID_TOKEN} + + # a comma as separator + with flask_app.test_request_context("/?response_type=id_token,token"): + response_types = get_response_types(flask.request) + assert response_types == {ResponseType.TOKEN, ResponseType.ID_TOKEN} + + # non-existent response_type: raise ValueError + with flask_app.test_request_context("/?response_type=abcd"): + with pytest.raises(ValueError): + get_response_types(flask.request) diff --git a/tests/test_server.py b/tests/test_server.py new file mode 100644 index 00000000..e7a66d2f --- /dev/null +++ b/tests/test_server.py @@ -0,0 +1,6 @@ +def test_redirect_login_page(flask_client): + """Start with a blank database.""" + + rv = flask_client.get("/") + assert rv.status_code == 302 + assert rv.location == "http://localhost/auth/login" diff --git a/wsgi.py b/wsgi.py new file mode 100644 index 00000000..37809a9a --- /dev/null +++ b/wsgi.py @@ -0,0 +1,3 @@ +from server import create_app + +app = create_app()