diff --git a/.build.yml b/.build.yml
index 0061d73..f5f406d 100644
--- a/.build.yml
+++ b/.build.yml
@@ -13,5 +13,4 @@ steps:
- apk add --no-cache gcc musl-dev python3-dev
- pip install --upgrade pip && pip install -r requirements.txt
- python3 configure.py
- - coverage run manage.py test
- - coverage report
+ - coverage run --parallel-mode --concurrency=multiprocessing manage.py test --parallel=$(nproc) && coverage report
diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 0000000..c34cc6f
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,3 @@
+[submodule "frontend/extras"]
+ path = frontend/extras
+ url = https://git.neulandlabor.de/j3d1/vue-extras.git
diff --git a/deploy/dev/instance_a/testdata.py b/deploy/dev/instance_a/testdata.py
new file mode 100644
index 0000000..4a5cfbd
--- /dev/null
+++ b/deploy/dev/instance_a/testdata.py
@@ -0,0 +1,108 @@
+import base64
+
+
+def create_test_data():
+ print('Creating test data for instance A')
+
+ from authentication.models import ToolshedUser
+ admin = None
+ try:
+ if ToolshedUser.objects.filter(username='admin').exists():
+ admin = ToolshedUser.objects.get(username='admin')
+ else:
+ admin = ToolshedUser.objects.create_superuser('admin', 'admin@localhost', '')
+ admin.set_password('j7Th5TfCGUZmQ7U')
+ admin.save()
+ print('Created {}@{} with private key {} and public key {}'.format(admin.username, admin.domain,
+ admin.private_key,
+ admin.public_identity.public_key))
+ except Exception as e:
+ print('Admin user already exists, skipping')
+
+ from hostadmin.models import Domain
+ try:
+ domain1 = Domain.objects.create(name='localhost', owner=admin, open_registration=False)
+ domain1.save()
+ print('Created domain {} with closed registration'.format(domain1.name))
+ except Exception as e:
+ print('Domain localhost already exists, skipping')
+
+ domain2 = None
+ try:
+ if Domain.objects.filter(name='a.localhost').exists():
+ domain2 = Domain.objects.get(name='a.localhost')
+ domain2 = Domain.objects.create(name='a.localhost', owner=admin, open_registration=True)
+ domain2.save()
+ print('Created domain {} with open registration'.format(domain2.name))
+ except Exception as e:
+ print('Domain b.localhost already exists, skipping')
+
+ user = None
+ try:
+ if ToolshedUser.objects.filter(username='test_a').exists():
+ user = ToolshedUser.objects.get(username='test_a')
+ user = ToolshedUser.objects.create_user('test_a', 'testa@example.com', '', domain=domain2.name,
+ private_key='4ab79601edc400fd0263c7d5fd045ea7f5de28f1dd8905e2479f96893f3257d8')
+ user.set_password('test_a')
+ user.save()
+ print('Created user {}@{} with private key {} and public key {}'.format(user.username, user.domain,
+ user.private_key,
+ user.public_identity.public_key))
+ except Exception as e:
+ print('User foobar already exists, skipping')
+
+ from authentication.models import KnownIdentity
+ identity = None
+ try:
+ if KnownIdentity.objects.filter(username='test_b').exists():
+ identity = KnownIdentity.objects.get(username='test_b')
+ identity = KnownIdentity.objects.create(username='test_b', domain='b.localhost',
+ public_key='4b0dffe21764c591762615ef84cfea7fd4055fab3e9f58ae077fd8c79c34af91')
+ # pk '2ec1e7d5f5b8d5f87233944970d57f942095fe9e6c4fc49edde61fcd3fb1bf40'
+ identity.save()
+ print('Created identity {}@{} with public key {}'.format(identity.username, identity.domain,
+ identity.public_key))
+ except Exception as e:
+ print('Identity already exists, skipping')
+
+ from toolshed.models import Category
+ category1 = None
+ try:
+ if Category.objects.filter(name='Test Category').exists():
+ category1 = Category.objects.get(name='Test Category')
+ category1 = Category.objects.get_or_create(name='Test Category', origin='test')[0]
+ except Exception as e:
+ print('Category already exists, skipping')
+
+ from toolshed.models import InventoryItem
+ item1 = None
+ try:
+ if InventoryItem.objects.filter(name='Test Item').exists():
+ item1 = InventoryItem.objects.get(name='Test Item')
+ item1 = InventoryItem.objects.create(name='Test Item', description='This is a test item', category=category1,
+ availability_policy='rent', owned_quantity=1, owner=user)
+ item1.save()
+ except Exception as e:
+ print('Item already exists, skipping')
+
+ try:
+ item2 = InventoryItem.objects.create(name='Test Item 2', description='This is a test item', category=category1,
+ availability_policy='share', owned_quantity=1, owner=user)
+ item2.save()
+ print('Created test items with IDs "{}" and "{}"'.format(item1.id, item2.id))
+ except Exception as e:
+ print('Item already exists, skipping')
+
+ try:
+ user.friends.add(identity)
+ print('Added identity {} to friends list of user {}'.format(identity.username, user.username))
+ except Exception as e:
+ print('Identity already in friends list, skipping')
+
+ from files.models import File
+ try:
+ file1 = File.objects.create(mime_type='text/plain', data=base64.b64encode(b'testcontent1').decode('utf-8'))
+ file1.save()
+ print(f'Created file at /{file1.hash[:2]}/{file1.hash[2:4]}/{file1.hash[4:6]}/{file1.hash[6:]}')
+ except Exception as e:
+ print('File already exists, skipping')
diff --git a/deploy/dev/instance_b/testdata.py b/deploy/dev/instance_b/testdata.py
new file mode 100644
index 0000000..2a30680
--- /dev/null
+++ b/deploy/dev/instance_b/testdata.py
@@ -0,0 +1,108 @@
+import base64
+
+
+def create_test_data():
+ print('Creating test data for instance B')
+
+ from authentication.models import ToolshedUser
+ admin = None
+ try:
+ if ToolshedUser.objects.filter(username='admin').exists():
+ admin = ToolshedUser.objects.get(username='admin')
+ else:
+ admin = ToolshedUser.objects.create_superuser('admin', 'admin@localhost', '')
+ admin.set_password('j7Th5TfCGUZmQ7U')
+ admin.save()
+ print('Created {}@{} with private key {} and public key {}'.format(admin.username, admin.domain,
+ admin.private_key,
+ admin.public_identity.public_key))
+ except Exception as e:
+ print('Admin user already exists, skipping')
+
+ from hostadmin.models import Domain
+ try:
+ domain1 = Domain.objects.create(name='localhost', owner=admin, open_registration=False)
+ domain1.save()
+ print('Created domain {} with closed registration'.format(domain1.name))
+ except Exception as e:
+ print('Domain localhost already exists, skipping')
+
+ domain2 = None
+ try:
+ if Domain.objects.filter(name='b.localhost').exists():
+ domain2 = Domain.objects.get(name='b.localhost')
+ domain2 = Domain.objects.create(name='b.localhost', owner=admin, open_registration=True)
+ domain2.save()
+ print('Created domain {} with open registration'.format(domain2.name))
+ except Exception as e:
+ print('Domain b.localhost already exists, skipping')
+
+ user = None
+ try:
+ if ToolshedUser.objects.filter(username='test_b').exists():
+ user = ToolshedUser.objects.get(username='test_b')
+ user = ToolshedUser.objects.create_user('test_b', 'testb@example.com', '', domain=domain2.name,
+ private_key='2ec1e7d5f5b8d5f87233944970d57f942095fe9e6c4fc49edde61fcd3fb1bf40')
+ user.set_password('test_b')
+ user.save()
+ print('Created user {}@{} with private key {} and public key {}'.format(user.username, user.domain,
+ user.private_key,
+ user.public_identity.public_key))
+ except Exception as e:
+ print('User foobar already exists, skipping')
+
+ from authentication.models import KnownIdentity
+ identity = None
+ try:
+ if KnownIdentity.objects.filter(username='test_a').exists():
+ identity = KnownIdentity.objects.get(username='test_a')
+ identity = KnownIdentity.objects.create(username='test_a', domain='a.localhost',
+ public_key='cdcf6f1897b0ab3a123047d9b707d4123f01daf41921dbe787d1d0697f0ee42b')
+ # pk '4ab79601edc400fd0263c7d5fd045ea7f5de28f1dd8905e2479f96893f3257d8'
+ identity.save()
+ print('Created identity {}@{} with public key {}'.format(identity.username, identity.domain,
+ identity.public_key))
+ except Exception as e:
+ print('Identity already exists, skipping')
+
+ from toolshed.models import Category
+ category1 = None
+ try:
+ if Category.objects.filter(name='Test Category').exists():
+ category1 = Category.objects.get(name='Test Category')
+ category1 = Category.objects.get_or_create(name='Test Category', origin='test')[0]
+ except Exception as e:
+ print('Category already exists, skipping')
+
+ from toolshed.models import InventoryItem
+ item1 = None
+ try:
+ if InventoryItem.objects.filter(name='Test Item 3').exists():
+ item1 = InventoryItem.objects.get(name='Test Item 3')
+ item1 = InventoryItem.objects.create(name='Test Item 3', description='This is a test item', category=category1,
+ availability_policy='sell', owned_quantity=1, owner=user)
+ item1.save()
+ except Exception as e:
+ print('Item already exists, skipping')
+
+ try:
+ item2 = InventoryItem.objects.create(name='Test Item 4', description='This is a test item', category=category1,
+ availability_policy='lend', owned_quantity=1, owner=user)
+ item2.save()
+ print('Created test items with IDs "{}" and "{}"'.format(item1.id, item2.id))
+ except Exception as e:
+ print('Item already exists, skipping')
+
+ try:
+ user.friends.add(identity)
+ print('Added identity {} to friends list of user {}'.format(identity.username, user.username))
+ except Exception as e:
+ print('Identity already in friends list, skipping')
+
+ from files.models import File
+ try:
+ file1 = File.objects.create(mime_type='text/plain', data=base64.b64encode(b'testcontent1').decode('utf-8'))
+ file1.save()
+ print(f'Created file at /{file1.hash[:2]}/{file1.hash[2:4]}/{file1.hash[4:6]}/{file1.hash[6:]}')
+ except Exception as e:
+ print('File already exists, skipping')
diff --git a/deploy/docker-compose.override.yml b/deploy/docker-compose.override.yml
index 30b4de9..6ed6978 100644
--- a/deploy/docker-compose.override.yml
+++ b/deploy/docker-compose.override.yml
@@ -8,6 +8,7 @@ services:
volumes:
- ../backend:/code
- ../deploy/dev/instance_a/a.env:/code/.env
+ - ../deploy/dev/instance_a/testdata.py:/code/testdata.py
- ../deploy/dev/instance_a/a.sqlite3:/code/db.sqlite3
expose:
- 8000
@@ -20,6 +21,7 @@ services:
volumes:
- ../backend:/code
- ../deploy/dev/instance_b/b.env:/code/.env
+ - ../deploy/dev/instance_b/testdata.py:/code/testdata.py
- ../deploy/dev/instance_b/b.sqlite3:/code/db.sqlite3
expose:
- 8000
@@ -30,11 +32,11 @@ services:
context: ../frontend/
dockerfile: ../deploy/dev/Dockerfile.frontend
volumes:
- - ../frontend:/app:ro
+ - ../frontend:/app
- /app/node_modules
expose:
- 5173
- command: npm run dev -- --host
+ command: bash -c "npm install && npm run dev -- --host"
wiki:
build:
diff --git a/docker-compose.yml b/docker-compose.yml
new file mode 100644
index 0000000..12187f1
--- /dev/null
+++ b/docker-compose.yml
@@ -0,0 +1,43 @@
+version: '3.3'
+
+services:
+ # db:
+ # image: postgres
+ # container_name: docker-django-vue-db
+ # environment:
+ # POSTGRES_USER: user
+ # POSTGRES_PASSWORD: pass
+ # POSTGRES_DB: db
+ # restart: unless-stopped
+ # ports:
+ # - "5432:5432"
+ django:
+ build:
+ context: ./backend
+ dockerfile: ./Dockerfile
+ command: python backend/manage.py runserver 0.0.0.0:8000
+ volumes:
+ - .:/app
+ ports:
+ - "8002:8000"
+ networks:
+ - internal
+ # depends_on:
+ # - db
+ vue:
+ build:
+ context: ./frontend
+ dockerfile: ./Dockerfile
+ command: nginx -g 'daemon off;'
+ volumes:
+ - .:/app
+ ports:
+ - "8001:80"
+ networks:
+ - internal
+ - external
+ depends_on:
+ - django
+networks:
+ external:
+ internal:
\ No newline at end of file
diff --git a/frontend/.local/RootCA.crt b/frontend/.local/RootCA.crt
new file mode 100644
index 0000000..7e49ada
--- /dev/null
+++ b/frontend/.local/RootCA.crt
@@ -0,0 +1,20 @@
+-----BEGIN CERTIFICATE-----
+MIIDLzCCAhegAwIBAgIUJmAh7fVmxDGKqLmRepxu/JqgEcgwDQYJKoZIhvcNAQEL
+BQAwJzELMAkGA1UEBhMCVVMxGDAWBgNVBAMMD0V4YW1wbGUtUm9vdC1DQTAeFw0y
+MzExMDMwMDI4NDNaFw0yNjA4MjMwMDI4NDNaMCcxCzAJBgNVBAYTAlVTMRgwFgYD
+VQQDDA9FeGFtcGxlLVJvb3QtQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
+AoIBAQDE/lXJfHolXhbd7gevY0+AurY4iMAUx+FDbdpRaKc4z+hHANKWR5OZBwIj
+mI6RNpe/yq+ZE7fDnQ5mq9BuD37i9ZR3TiFQQ0K6yVHJs1xn64Ce4dhz0LxIU+mR
+rWYTMDkfjOnKi6ueycgKSzk6GnCgSix0ho4yRj8CPO9HzKf7bgHJZzh//xFk3Cbo
+EgHGXxnm5yCfBthaU5Toey8AYlHlH/OVYTSxu2yRu/HdWbVglqdSu2us7U9SG88V
+EeJf5fSwmyYS4ab9JZUhM7HgMVQZIx/Gq+VoYZCs6s8/Bm3hnFQDVHDQ9mAL9cZB
+EvOgQGcEFXHS6SXkWwWpYietmNdPAgMBAAGjUzBRMB0GA1UdDgQWBBTCPiGSDMoi
+nNiPFsW4fYZW3XDPKjAfBgNVHSMEGDAWgBTCPiGSDMoinNiPFsW4fYZW3XDPKjAP
+BgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQAQw65jeCi5mNPmw4Uw
+BYEmGfzv7bYMrDu8w1A2U2yFa+6BN17mAMLJQxzcrvP4/DK1MaP1ehGfWRH2jzSb
+m5CgbZYDVBib2jD1HlMFEBvEF2wduQL9mIipeYXFIS9ttuW7QVqso62Na/3tcp9J
+dCfHsbnAvWSt63/7d9wHX3zlBN7v9GeJbXo14p8aA8IEjQFQWnkjhvRVzU/fltKm
+dvG/xkXA59dqXMEYxHyGK2tE4WiaLwsQW44LQcuEjy4NSj5t0F4NWYVLUgIgnqk8
+RkGEXAxcRfFXSF6VEBTxoAAhTh5zSge4PSwHT+29dzkJqzpFb6cCke4Skk16KiW8
+0dg1
+-----END CERTIFICATE-----
diff --git a/frontend/.local/RootCA.key b/frontend/.local/RootCA.key
new file mode 100644
index 0000000..d47a3d1
--- /dev/null
+++ b/frontend/.local/RootCA.key
@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDE/lXJfHolXhbd
+7gevY0+AurY4iMAUx+FDbdpRaKc4z+hHANKWR5OZBwIjmI6RNpe/yq+ZE7fDnQ5m
+q9BuD37i9ZR3TiFQQ0K6yVHJs1xn64Ce4dhz0LxIU+mRrWYTMDkfjOnKi6ueycgK
+Szk6GnCgSix0ho4yRj8CPO9HzKf7bgHJZzh//xFk3CboEgHGXxnm5yCfBthaU5To
+ey8AYlHlH/OVYTSxu2yRu/HdWbVglqdSu2us7U9SG88VEeJf5fSwmyYS4ab9JZUh
+M7HgMVQZIx/Gq+VoYZCs6s8/Bm3hnFQDVHDQ9mAL9cZBEvOgQGcEFXHS6SXkWwWp
+YietmNdPAgMBAAECggEADKTgf77AHk7kO9lv39eJflM9p/JLFepgcJIH/cqwVQqv
+N4N7gM7WT++tuPgtSm/NHK/XRoWH+YPGrVtg1Pekps+peGDo7Xxrt459c+tRxo/M
+oSYQ3RosQ54zMzkEgL3LJNXIGcqOOPJtpw99/Fc/HGK2aMJMNTjiCXQ8zYh6zb38
+himWC1Vysb6tO4bQ/zJeMuh+ny6oAu0x8CAKJfFHwm/enA2ab2VGT9L/S/Mv7bqh
+WmRsOrY7nnSSHhYFBr3VcvC4yzsQ+UI9LKllK1M2Lb7JVrGkgYwJFqiwomV5bRDn
+QP4gFgDvgghsQgm9Fx7ZTC6vIXpgEZQAiSPkIVB7LQKBgQDiO9Db4Jp1h46Bu+je
+JW3MUw8QNHRnlTmJr0bIu1IDq+3LBLJUo7wR2+/JxNx/v4R+qSRv65HEFF5QwuID
+o+F2vZ08xHKY1uKuXV26VpRohuQVPz+PhUExYE29RhAUbGq/14wbH8vIpUNk5VKW
+9yxAFZjqKyqhsSdL6C23i2AT6wKBgQDe6aDwRP0WXDsdgdiXiEXXZ47RyE6h9/8+
+ehx++rMHME2C6fL562MHBiwfZWoy3X/hlCahvOMGSPT93sqgKATYdYWzwQnOIyUG
+LIH2ZfUStKnnK+yNMh4sUZZERDy+JSzvIULtxNJ/m4ai0FNTobAqw4WMXKUTKKOL
+rSgRPkVFLQKBgQDVlQMpknJAYyn28SB4GX3/WKrv8ZWz9P3NLtz0xWQ4cyiccmKp
+5aq4cZuAMYq6UGUV7zmnMA79vv0L4fDe3ukM4RaBODW4daasVxkVwod551+Nb5ji
+NjvGEdVSy8KChZiCZUywjuQlGWD28El4nQH5vmoPKZGl9UnUL+55Sev64QKBgAOv
+AqzVxwTmk0eCjMy8QMM1f+OxlrMQgRRMOkpS5EB7KNy/9vbwT9ue233NVDrw9BsL
+MrQ7hdjlvb6wPtL0tlfJYWM+DmZsqED43VDwEGO1vpUGYctXh64dzwjjw8k0nhB5
+kTySoxPewxPPs4DPTDT4tC1Enqm5YzJ8swvN5qElAoGABPP5g+EekI2eo6xPIsVf
+FPhto+WKn7Hxx+sQZBg7EuX8QLxrGBy9yeU0BMcyuvQYPHbGtfqlItVchBk7Nxug
+s82jJgWYymbroKvCYShAnQujZuyjI62qJq1gfvfcLT4g+k3nZ+KZwCc4iusOELlH
+0rnQsA6KSyCpKB51T1iUkZQ=
+-----END PRIVATE KEY-----
diff --git a/frontend/.local/RootCA.pem b/frontend/.local/RootCA.pem
new file mode 100644
index 0000000..7e49ada
--- /dev/null
+++ b/frontend/.local/RootCA.pem
@@ -0,0 +1,20 @@
+-----BEGIN CERTIFICATE-----
+MIIDLzCCAhegAwIBAgIUJmAh7fVmxDGKqLmRepxu/JqgEcgwDQYJKoZIhvcNAQEL
+BQAwJzELMAkGA1UEBhMCVVMxGDAWBgNVBAMMD0V4YW1wbGUtUm9vdC1DQTAeFw0y
+MzExMDMwMDI4NDNaFw0yNjA4MjMwMDI4NDNaMCcxCzAJBgNVBAYTAlVTMRgwFgYD
+VQQDDA9FeGFtcGxlLVJvb3QtQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
+AoIBAQDE/lXJfHolXhbd7gevY0+AurY4iMAUx+FDbdpRaKc4z+hHANKWR5OZBwIj
+mI6RNpe/yq+ZE7fDnQ5mq9BuD37i9ZR3TiFQQ0K6yVHJs1xn64Ce4dhz0LxIU+mR
+rWYTMDkfjOnKi6ueycgKSzk6GnCgSix0ho4yRj8CPO9HzKf7bgHJZzh//xFk3Cbo
+EgHGXxnm5yCfBthaU5Toey8AYlHlH/OVYTSxu2yRu/HdWbVglqdSu2us7U9SG88V
+EeJf5fSwmyYS4ab9JZUhM7HgMVQZIx/Gq+VoYZCs6s8/Bm3hnFQDVHDQ9mAL9cZB
+EvOgQGcEFXHS6SXkWwWpYietmNdPAgMBAAGjUzBRMB0GA1UdDgQWBBTCPiGSDMoi
+nNiPFsW4fYZW3XDPKjAfBgNVHSMEGDAWgBTCPiGSDMoinNiPFsW4fYZW3XDPKjAP
+BgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQAQw65jeCi5mNPmw4Uw
+BYEmGfzv7bYMrDu8w1A2U2yFa+6BN17mAMLJQxzcrvP4/DK1MaP1ehGfWRH2jzSb
+m5CgbZYDVBib2jD1HlMFEBvEF2wduQL9mIipeYXFIS9ttuW7QVqso62Na/3tcp9J
+dCfHsbnAvWSt63/7d9wHX3zlBN7v9GeJbXo14p8aA8IEjQFQWnkjhvRVzU/fltKm
+dvG/xkXA59dqXMEYxHyGK2tE4WiaLwsQW44LQcuEjy4NSj5t0F4NWYVLUgIgnqk8
+RkGEXAxcRfFXSF6VEBTxoAAhTh5zSge4PSwHT+29dzkJqzpFb6cCke4Skk16KiW8
+0dg1
+-----END CERTIFICATE-----
diff --git a/frontend/.local/RootCA.srl b/frontend/.local/RootCA.srl
new file mode 100644
index 0000000..ea468e6
--- /dev/null
+++ b/frontend/.local/RootCA.srl
@@ -0,0 +1 @@
+0C2D2D6E0BCB8B8AFD205E5E4A616C11D96DD566
diff --git a/frontend/.local/domains.ext b/frontend/.local/domains.ext
new file mode 100644
index 0000000..d2d1d41
--- /dev/null
+++ b/frontend/.local/domains.ext
@@ -0,0 +1,8 @@
+authorityKeyIdentifier=keyid,issuer
+basicConstraints=CA:FALSE
+keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
+subjectAltName = @alt_names
+[alt_names]
+DNS.1 = localhost
+#DNS.2 = fake1.local
+#DNS.3 = fake2.local
diff --git a/frontend/.local/fullchain.pem b/frontend/.local/fullchain.pem
new file mode 100644
index 0000000..8df1930
--- /dev/null
+++ b/frontend/.local/fullchain.pem
@@ -0,0 +1,42 @@
+-----BEGIN CERTIFICATE-----
+MIIDkjCCAnqgAwIBAgIUDC0tbgvLi4r9IF5eSmFsEdlt1WYwDQYJKoZIhvcNAQEL
+BQAwJzELMAkGA1UEBhMCVVMxGDAWBgNVBAMMD0V4YW1wbGUtUm9vdC1DQTAeFw0y
+MzExMDMwMDMxMDFaFw0yNjA4MjMwMDMxMDFaMG0xCzAJBgNVBAYTAlVTMRIwEAYD
+VQQIDAlZb3VyU3RhdGUxETAPBgNVBAcMCFlvdXJDaXR5MR0wGwYDVQQKDBRFeGFt
+cGxlLUNlcnRpZmljYXRlczEYMBYGA1UEAwwPbG9jYWxob3N0LmxvY2FsMIIBIjAN
+BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwUYH95U11TYvYn9or/cP/oPtiJJm
+l1aH5J2AOfno/QW5FjDKeGUYeXrGTOLeDRiHIAHVtg00nfTtm56du5+I972VbEW6
+ngrQAGyk/GSvOGK1iG4M4eHpCkZHrdkubOWsO5vDj2juTwjE1fyncLmIbyZN5NKJ
+6JID8c/ItFXQzXDLaFAQH3+uFFX9iTeT2cGyFEidooKo4oKj3imQRM6YKl4ygEMc
+BTN0p7AqtjKSfva5WsMSXdESLsNdStgs5OgfJUE8x4jhcrVrZ2Mnw8Zmfb2pIoNe
+6HphVtU96EMDqZmRJ4c9REqS6qZmHKsAPet/jyNNZjUJIptJE6Cl0IihhwIDAQAB
+o3AwbjAfBgNVHSMEGDAWgBTCPiGSDMoinNiPFsW4fYZW3XDPKjAJBgNVHRMEAjAA
+MAsGA1UdDwQEAwIE8DAUBgNVHREEDTALgglsb2NhbGhvc3QwHQYDVR0OBBYEFIni
+f5YpRjm9GEjktq2gr/34isB1MA0GCSqGSIb3DQEBCwUAA4IBAQCAv0FdWz+Ktq6+
+I7wOUWx3LHFQSov71ca9HGbD9SMOBbd26MJXnxxjOU62W+Q/Bkx4C3ezzSuLMhZq
+Vl3jV2wDkWWCFvR1a2cwmr05B2xs/lqX+eNwrNZNfGxMV4I4dn+bkGe2czRcZaur
+et0SylTQvWwrCgewRirS44LcN9EEutu0WzxlUpdty71zlVKdpyE6MrZ10ADcin5B
+P/10++aBuQXF1EDFGZ6snexGuSsshAP2tBLww+Z8xPyN3SRMj/Y0z7Rgm4nhEfNP
+M1BcUiaT7e8evsWVAyoDI6N1Z4M0p4SXLLeHdhKelbvNdeVZxwDkl8jR+Q5hwt7K
+ZurEL1FZ
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIDLzCCAhegAwIBAgIUJmAh7fVmxDGKqLmRepxu/JqgEcgwDQYJKoZIhvcNAQEL
+BQAwJzELMAkGA1UEBhMCVVMxGDAWBgNVBAMMD0V4YW1wbGUtUm9vdC1DQTAeFw0y
+MzExMDMwMDI4NDNaFw0yNjA4MjMwMDI4NDNaMCcxCzAJBgNVBAYTAlVTMRgwFgYD
+VQQDDA9FeGFtcGxlLVJvb3QtQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
+AoIBAQDE/lXJfHolXhbd7gevY0+AurY4iMAUx+FDbdpRaKc4z+hHANKWR5OZBwIj
+mI6RNpe/yq+ZE7fDnQ5mq9BuD37i9ZR3TiFQQ0K6yVHJs1xn64Ce4dhz0LxIU+mR
+rWYTMDkfjOnKi6ueycgKSzk6GnCgSix0ho4yRj8CPO9HzKf7bgHJZzh//xFk3Cbo
+EgHGXxnm5yCfBthaU5Toey8AYlHlH/OVYTSxu2yRu/HdWbVglqdSu2us7U9SG88V
+EeJf5fSwmyYS4ab9JZUhM7HgMVQZIx/Gq+VoYZCs6s8/Bm3hnFQDVHDQ9mAL9cZB
+EvOgQGcEFXHS6SXkWwWpYietmNdPAgMBAAGjUzBRMB0GA1UdDgQWBBTCPiGSDMoi
+nNiPFsW4fYZW3XDPKjAfBgNVHSMEGDAWgBTCPiGSDMoinNiPFsW4fYZW3XDPKjAP
+BgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQAQw65jeCi5mNPmw4Uw
+BYEmGfzv7bYMrDu8w1A2U2yFa+6BN17mAMLJQxzcrvP4/DK1MaP1ehGfWRH2jzSb
+m5CgbZYDVBib2jD1HlMFEBvEF2wduQL9mIipeYXFIS9ttuW7QVqso62Na/3tcp9J
+dCfHsbnAvWSt63/7d9wHX3zlBN7v9GeJbXo14p8aA8IEjQFQWnkjhvRVzU/fltKm
+dvG/xkXA59dqXMEYxHyGK2tE4WiaLwsQW44LQcuEjy4NSj5t0F4NWYVLUgIgnqk8
+RkGEXAxcRfFXSF6VEBTxoAAhTh5zSge4PSwHT+29dzkJqzpFb6cCke4Skk16KiW8
+0dg1
+-----END CERTIFICATE-----
diff --git a/frontend/.local/localhost.crt b/frontend/.local/localhost.crt
new file mode 100644
index 0000000..ada652b
--- /dev/null
+++ b/frontend/.local/localhost.crt
@@ -0,0 +1,22 @@
+-----BEGIN CERTIFICATE-----
+MIIDkjCCAnqgAwIBAgIUDC0tbgvLi4r9IF5eSmFsEdlt1WYwDQYJKoZIhvcNAQEL
+BQAwJzELMAkGA1UEBhMCVVMxGDAWBgNVBAMMD0V4YW1wbGUtUm9vdC1DQTAeFw0y
+MzExMDMwMDMxMDFaFw0yNjA4MjMwMDMxMDFaMG0xCzAJBgNVBAYTAlVTMRIwEAYD
+VQQIDAlZb3VyU3RhdGUxETAPBgNVBAcMCFlvdXJDaXR5MR0wGwYDVQQKDBRFeGFt
+cGxlLUNlcnRpZmljYXRlczEYMBYGA1UEAwwPbG9jYWxob3N0LmxvY2FsMIIBIjAN
+BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwUYH95U11TYvYn9or/cP/oPtiJJm
+l1aH5J2AOfno/QW5FjDKeGUYeXrGTOLeDRiHIAHVtg00nfTtm56du5+I972VbEW6
+ngrQAGyk/GSvOGK1iG4M4eHpCkZHrdkubOWsO5vDj2juTwjE1fyncLmIbyZN5NKJ
+6JID8c/ItFXQzXDLaFAQH3+uFFX9iTeT2cGyFEidooKo4oKj3imQRM6YKl4ygEMc
+BTN0p7AqtjKSfva5WsMSXdESLsNdStgs5OgfJUE8x4jhcrVrZ2Mnw8Zmfb2pIoNe
+6HphVtU96EMDqZmRJ4c9REqS6qZmHKsAPet/jyNNZjUJIptJE6Cl0IihhwIDAQAB
+o3AwbjAfBgNVHSMEGDAWgBTCPiGSDMoinNiPFsW4fYZW3XDPKjAJBgNVHRMEAjAA
+MAsGA1UdDwQEAwIE8DAUBgNVHREEDTALgglsb2NhbGhvc3QwHQYDVR0OBBYEFIni
+f5YpRjm9GEjktq2gr/34isB1MA0GCSqGSIb3DQEBCwUAA4IBAQCAv0FdWz+Ktq6+
+I7wOUWx3LHFQSov71ca9HGbD9SMOBbd26MJXnxxjOU62W+Q/Bkx4C3ezzSuLMhZq
+Vl3jV2wDkWWCFvR1a2cwmr05B2xs/lqX+eNwrNZNfGxMV4I4dn+bkGe2czRcZaur
+et0SylTQvWwrCgewRirS44LcN9EEutu0WzxlUpdty71zlVKdpyE6MrZ10ADcin5B
+P/10++aBuQXF1EDFGZ6snexGuSsshAP2tBLww+Z8xPyN3SRMj/Y0z7Rgm4nhEfNP
+M1BcUiaT7e8evsWVAyoDI6N1Z4M0p4SXLLeHdhKelbvNdeVZxwDkl8jR+Q5hwt7K
+ZurEL1FZ
+-----END CERTIFICATE-----
diff --git a/frontend/.local/localhost.csr b/frontend/.local/localhost.csr
new file mode 100644
index 0000000..87b5f46
--- /dev/null
+++ b/frontend/.local/localhost.csr
@@ -0,0 +1,17 @@
+-----BEGIN CERTIFICATE REQUEST-----
+MIICsjCCAZoCAQAwbTELMAkGA1UEBhMCVVMxEjAQBgNVBAgMCVlvdXJTdGF0ZTER
+MA8GA1UEBwwIWW91ckNpdHkxHTAbBgNVBAoMFEV4YW1wbGUtQ2VydGlmaWNhdGVz
+MRgwFgYDVQQDDA9sb2NhbGhvc3QubG9jYWwwggEiMA0GCSqGSIb3DQEBAQUAA4IB
+DwAwggEKAoIBAQDBRgf3lTXVNi9if2iv9w/+g+2IkmaXVofknYA5+ej9BbkWMMp4
+ZRh5esZM4t4NGIcgAdW2DTSd9O2bnp27n4j3vZVsRbqeCtAAbKT8ZK84YrWIbgzh
+4ekKRket2S5s5aw7m8OPaO5PCMTV/KdwuYhvJk3k0onokgPxz8i0VdDNcMtoUBAf
+f64UVf2JN5PZwbIUSJ2igqjigqPeKZBEzpgqXjKAQxwFM3SnsCq2MpJ+9rlawxJd
+0RIuw11K2Czk6B8lQTzHiOFytWtnYyfDxmZ9vakig17oemFW1T3oQwOpmZEnhz1E
+SpLqpmYcqwA963+PI01mNQkim0kToKXQiKGHAgMBAAGgADANBgkqhkiG9w0BAQsF
+AAOCAQEAZUPJaPBXjSsbDoWEREiOrbai0sVRa3Qr/IIz3Z/+Nw9m2E+j9O11Vi8G
+G3eqkixw/m4StbKZyMg+PAQlLC5NUmgMC5w9lfODq/CSRY8UVUi/EiIAMI4Rh/Dk
+rGVsYArCcsmbWUzB5oUw4oUtgv0fWsuM0Thc7GORvtQvq4xzPcpWa1L88kRA08Mv
+P8Yyk3txYQlkk3Bd40UL8TN6XiQC2IF1b/kXizqr2HL+1BiqCDUWtdDZmVZTvUXH
+chUn1tCEm0iJSJZsJLVa5CDWkZHat2A3+8SaxYRL6QlWbiISOhs7KL6fPeTxc/S8
+OKHnA3FRDzQTp+lpjSJWJEqt5W3i+Q==
+-----END CERTIFICATE REQUEST-----
diff --git a/frontend/.local/localhost.key b/frontend/.local/localhost.key
new file mode 100644
index 0000000..a34ad91
--- /dev/null
+++ b/frontend/.local/localhost.key
@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEuwIBADANBgkqhkiG9w0BAQEFAASCBKUwggShAgEAAoIBAQDBRgf3lTXVNi9i
+f2iv9w/+g+2IkmaXVofknYA5+ej9BbkWMMp4ZRh5esZM4t4NGIcgAdW2DTSd9O2b
+np27n4j3vZVsRbqeCtAAbKT8ZK84YrWIbgzh4ekKRket2S5s5aw7m8OPaO5PCMTV
+/KdwuYhvJk3k0onokgPxz8i0VdDNcMtoUBAff64UVf2JN5PZwbIUSJ2igqjigqPe
+KZBEzpgqXjKAQxwFM3SnsCq2MpJ+9rlawxJd0RIuw11K2Czk6B8lQTzHiOFytWtn
+YyfDxmZ9vakig17oemFW1T3oQwOpmZEnhz1ESpLqpmYcqwA963+PI01mNQkim0kT
+oKXQiKGHAgMBAAECgf9k4w6I+HUuySeHJ+06PhtsELUINvfCPaxhFaAc2TwWNgGC
+XfWjTrZ323ZJaMTsEReFWkdqLDciqKoA8AEVQCQxmY7fVA1mwt/QtzZ1lrq3zx+w
+Ci3yrZvCBJzES0kmgXmpo+i0eh8T3waqkcwz1XzON3PP8J1qoOiWoe1Yawd4oMIq
+QN0/DE1Zdz23QtWo0OLZw0/tLpB3cTK2XpzpBLh+OLImLmA3mqhbsJKzoVD79MTF
+emgjFumsZqf0+jUU6tn2+XP83dxeL4yRQGfI19Qg0g+AF4Ue39/7Zife127h7x8o
+iknk0m1WSyXjNNxFk1hceHz0CE1qWh/OxuWK+lkCgYEA9uxcmcSYvqMBQKd/q33r
+v9wB5jHOPNGXapawKDTCW6B77bvKiYwP0wGNcIV0gDqFdt1RnS4OC3ERoiuhgZum
+C7m2r/WOF+ktpkdMaiOLnrtPcAeZKItALAzTqAsbEDHupuqMvQ9Rlk33K/p+SsMt
+YXEU0lbe7nsTVHUwZIEnymMCgYEAyGDOTUTJjWIL6x2n7kIWo+kxvCtL7rSmS6LY
+XgyE7YTAbptEPtSG4iZTwp2mV6teeakIJ8he6Qw+DlMI+25tDjODMiX2CTbDUPD7
+Koz/7rvX1KvqLGDocik3dzNEgimHamn9edR4he+yOuVNQTeQKyT2kiTS13PDUSyx
+c511A40CgYALcE+p3+2jhzGbqSbE7wRo0uxTmaMQNjVpfqmScz89t2WGUdjEHnTt
+NXkz6TrIZe2g4AfT3DpSVV6XwKWut2Mtz+CiriFzAh5XQZ5MnHDvXYYEjpWNx0Wl
+xMJZWopaabXAjcUPTRJegCYfJ2+KTxhfFzn7tIKHUbRHiVZAkasiOQKBgQC0yGJY
+5E7T+Dm4jrEMDSRQDfyJQKbpXqMKaom7kJ/9i1/yarNP3H81Wk8HryR8xGgga5io
+C+dVa24xjkj0T9Skk2UywX0RIw9k34Y8BaqCwYcgoVpNX8FX/kfEi8SrirxaDfZb
+DI8QiAnNiUQCKxcvVdIAWKjBKfh2LFSNcuo3oQKBgDuFJRHTBOkSTFIImVoxAV8i
+duZrLuhgrzyLAuH5kMNGW8hm3dHYRMFm86nrWyMQgY52dar0TNzbPRvy2qU/2L8g
+LxFrVO3pw5uZbYrcuhWAqLJCkJTDqawHvLGy5L5YJHewxBUszNHJIaluh0MvlJev
+c+jFMCSN9BLo6Fy50vM8
+-----END PRIVATE KEY-----
diff --git a/frontend/.local/make_ca.sh b/frontend/.local/make_ca.sh
new file mode 100755
index 0000000..f161de1
--- /dev/null
+++ b/frontend/.local/make_ca.sh
@@ -0,0 +1,8 @@
+#!/bin/bash
+
+cd $(dirname $0)
+
+rf -rf RootCA.*
+
+openssl req -x509 -nodes -new -sha256 -days 1024 -newkey rsa:2048 -keyout RootCA.key -out RootCA.pem -subj "/C=US/CN=Example-Root-CA"
+openssl x509 -outform pem -in RootCA.pem -out RootCA.crt
\ No newline at end of file
diff --git a/frontend/.local/make_localhost.sh b/frontend/.local/make_localhost.sh
new file mode 100755
index 0000000..1accc99
--- /dev/null
+++ b/frontend/.local/make_localhost.sh
@@ -0,0 +1,11 @@
+#!/bin/bash
+
+cd $(dirname $0)
+
+rf -rf localhost.*
+
+openssl req -new -nodes -newkey rsa:2048 -keyout localhost.key -out localhost.csr -subj "/C=US/ST=YourState/L=YourCity/O=Example-Certificates/CN=localhost.local"
+openssl x509 -req -sha256 -days 1024 -in localhost.csr -CA RootCA.pem -CAkey RootCA.key -CAcreateserial -extfile domains.ext -out localhost.crt
+
+cat localhost.crt RootCA.crt > fullchain.pem
+cat localhost.key > privkey.pem
\ No newline at end of file
diff --git a/frontend/.local/privkey.pem b/frontend/.local/privkey.pem
new file mode 100644
index 0000000..a34ad91
--- /dev/null
+++ b/frontend/.local/privkey.pem
@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEuwIBADANBgkqhkiG9w0BAQEFAASCBKUwggShAgEAAoIBAQDBRgf3lTXVNi9i
+f2iv9w/+g+2IkmaXVofknYA5+ej9BbkWMMp4ZRh5esZM4t4NGIcgAdW2DTSd9O2b
+np27n4j3vZVsRbqeCtAAbKT8ZK84YrWIbgzh4ekKRket2S5s5aw7m8OPaO5PCMTV
+/KdwuYhvJk3k0onokgPxz8i0VdDNcMtoUBAff64UVf2JN5PZwbIUSJ2igqjigqPe
+KZBEzpgqXjKAQxwFM3SnsCq2MpJ+9rlawxJd0RIuw11K2Czk6B8lQTzHiOFytWtn
+YyfDxmZ9vakig17oemFW1T3oQwOpmZEnhz1ESpLqpmYcqwA963+PI01mNQkim0kT
+oKXQiKGHAgMBAAECgf9k4w6I+HUuySeHJ+06PhtsELUINvfCPaxhFaAc2TwWNgGC
+XfWjTrZ323ZJaMTsEReFWkdqLDciqKoA8AEVQCQxmY7fVA1mwt/QtzZ1lrq3zx+w
+Ci3yrZvCBJzES0kmgXmpo+i0eh8T3waqkcwz1XzON3PP8J1qoOiWoe1Yawd4oMIq
+QN0/DE1Zdz23QtWo0OLZw0/tLpB3cTK2XpzpBLh+OLImLmA3mqhbsJKzoVD79MTF
+emgjFumsZqf0+jUU6tn2+XP83dxeL4yRQGfI19Qg0g+AF4Ue39/7Zife127h7x8o
+iknk0m1WSyXjNNxFk1hceHz0CE1qWh/OxuWK+lkCgYEA9uxcmcSYvqMBQKd/q33r
+v9wB5jHOPNGXapawKDTCW6B77bvKiYwP0wGNcIV0gDqFdt1RnS4OC3ERoiuhgZum
+C7m2r/WOF+ktpkdMaiOLnrtPcAeZKItALAzTqAsbEDHupuqMvQ9Rlk33K/p+SsMt
+YXEU0lbe7nsTVHUwZIEnymMCgYEAyGDOTUTJjWIL6x2n7kIWo+kxvCtL7rSmS6LY
+XgyE7YTAbptEPtSG4iZTwp2mV6teeakIJ8he6Qw+DlMI+25tDjODMiX2CTbDUPD7
+Koz/7rvX1KvqLGDocik3dzNEgimHamn9edR4he+yOuVNQTeQKyT2kiTS13PDUSyx
+c511A40CgYALcE+p3+2jhzGbqSbE7wRo0uxTmaMQNjVpfqmScz89t2WGUdjEHnTt
+NXkz6TrIZe2g4AfT3DpSVV6XwKWut2Mtz+CiriFzAh5XQZ5MnHDvXYYEjpWNx0Wl
+xMJZWopaabXAjcUPTRJegCYfJ2+KTxhfFzn7tIKHUbRHiVZAkasiOQKBgQC0yGJY
+5E7T+Dm4jrEMDSRQDfyJQKbpXqMKaom7kJ/9i1/yarNP3H81Wk8HryR8xGgga5io
+C+dVa24xjkj0T9Skk2UywX0RIw9k34Y8BaqCwYcgoVpNX8FX/kfEi8SrirxaDfZb
+DI8QiAnNiUQCKxcvVdIAWKjBKfh2LFSNcuo3oQKBgDuFJRHTBOkSTFIImVoxAV8i
+duZrLuhgrzyLAuH5kMNGW8hm3dHYRMFm86nrWyMQgY52dar0TNzbPRvy2qU/2L8g
+LxFrVO3pw5uZbYrcuhWAqLJCkJTDqawHvLGy5L5YJHewxBUszNHJIaluh0MvlJev
+c+jFMCSN9BLo6Fy50vM8
+-----END PRIVATE KEY-----
diff --git a/frontend/Dockerfile b/frontend/Dockerfile
new file mode 100644
index 0000000..cbff043
--- /dev/null
+++ b/frontend/Dockerfile
@@ -0,0 +1,14 @@
+FROM node:alpine as builder
+WORKDIR /app
+COPY ./package.json /app/package.json
+COPY . /app
+RUN npm install
+RUN npm run build
+
+
+FROM nginx:alpine as runner
+RUN apk add --update npm
+WORKDIR /app
+COPY --from=builder /app/dist /usr/share/nginx/html
+COPY ./nginx.conf /etc/nginx/nginx.conf
+EXPOSE 80
diff --git a/frontend/extras b/frontend/extras
new file mode 160000
index 0000000..98d7936
--- /dev/null
+++ b/frontend/extras
@@ -0,0 +1 @@
+Subproject commit 98d7936a50a148e0c2c718b3d7b8662ffcb3fde8
diff --git a/frontend/fullchain.pem b/frontend/fullchain.pem
new file mode 100644
index 0000000..f733cbd
--- /dev/null
+++ b/frontend/fullchain.pem
@@ -0,0 +1,87 @@
+-----BEGIN CERTIFICATE-----
+MIIEXTCCA0WgAwIBAgISBEHk0Sh8UrMfT+VPkRhr83mfMA0GCSqGSIb3DQEBCwUA
+MDIxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQD
+EwJSMzAeFw0yMzA2MDIxNzI1MDVaFw0yMzA4MzExNzI1MDRaMBsxGTAXBgNVBAMT
+EHRvb2xzaGVkLmozZDEuZGUwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAARYeMpT
+k1DaC8cigL3DivanGrLQahYBEDm5B26VaS3gUmq9T0RNkEUxJIPnZBwdF8p7xAEB
+hlTXwgy3eBLAp8lAo4ICTTCCAkkwDgYDVR0PAQH/BAQDAgeAMB0GA1UdJQQWMBQG
+CCsGAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBTRtqOn
+Qht7rD+2IEGzuYt8frTgVjAfBgNVHSMEGDAWgBQULrMXt1hWy65QCUDmH6+dixTC
+xjBVBggrBgEFBQcBAQRJMEcwIQYIKwYBBQUHMAGGFWh0dHA6Ly9yMy5vLmxlbmNy
+Lm9yZzAiBggrBgEFBQcwAoYWaHR0cDovL3IzLmkubGVuY3Iub3JnLzAbBgNVHREE
+FDASghB0b29sc2hlZC5qM2QxLmRlMEwGA1UdIARFMEMwCAYGZ4EMAQIBMDcGCysG
+AQQBgt8TAQEBMCgwJgYIKwYBBQUHAgEWGmh0dHA6Ly9jcHMubGV0c2VuY3J5cHQu
+b3JnMIIBBgYKKwYBBAHWeQIEAgSB9wSB9ADyAHcAtz77JN+cTbp18jnFulj0bF38
+Qs96nzXEnh0JgSXttJkAAAGIfVskxgAABAMASDBGAiEA+D8rCaCpttJm7w0M4N5N
+3cmJSfPNmh/t2ojaDB0iSe0CIQCS2XkwJzUrDZ35fIJ9evwJduk/K2I/tmWs4Uk5
+vnPSNQB3AK33vvp8/xDIi509nB4+GGq0Zyldz7EMJMqFhjTr3IKKAAABiH1bJOoA
+AAQDAEgwRgIhAPHQQwLf5xSi1VH6BeOpiUKyTMawd36FFU8eCIdB43q6AiEA0KDD
+yRssPcmGnyWDGq9Of3mpKjCChFrnxzpeDXCTlsswDQYJKoZIhvcNAQELBQADggEB
+AKo8APReSKNTydks9yqASKhUjuLfXS+mpFQSl2tbU8ER6eIiYHx8o+n2QCdT7h91
+ZLkGx8ZAmWBvVwXC3QPH5W08ilogi4EU/+HGffkditG5K6/Qn2bzjqnmFIyYqgdT
+RVaRcxqS9byAGEw3oU5FSCIOuFSBeOHeTwaj+lSVMZTv6LmoovOpCo8sA5xZ6K6H
+XVwNXIwunssaR4MrnWupB/5N+T7zkhanky4GgiLRuTm+mDbK+OIDx47Hv9jTe+tm
+s4aixD0eWhzAaiA7HuHJI3Xi64YjK7eNlrwE0ZKdgy8KveDwUBiVcVtz7LR+0v1l
+P27Z/OkZlA+42LvIJdISMl4=
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIFFjCCAv6gAwIBAgIRAJErCErPDBinU/bWLiWnX1owDQYJKoZIhvcNAQELBQAw
+TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh
+cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMjAwOTA0MDAwMDAw
+WhcNMjUwOTE1MTYwMDAwWjAyMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNTGV0J3Mg
+RW5jcnlwdDELMAkGA1UEAxMCUjMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
+AoIBAQC7AhUozPaglNMPEuyNVZLD+ILxmaZ6QoinXSaqtSu5xUyxr45r+XXIo9cP
+R5QUVTVXjJ6oojkZ9YI8QqlObvU7wy7bjcCwXPNZOOftz2nwWgsbvsCUJCWH+jdx
+sxPnHKzhm+/b5DtFUkWWqcFTzjTIUu61ru2P3mBw4qVUq7ZtDpelQDRrK9O8Zutm
+NHz6a4uPVymZ+DAXXbpyb/uBxa3Shlg9F8fnCbvxK/eG3MHacV3URuPMrSXBiLxg
+Z3Vms/EY96Jc5lP/Ooi2R6X/ExjqmAl3P51T+c8B5fWmcBcUr2Ok/5mzk53cU6cG
+/kiFHaFpriV1uxPMUgP17VGhi9sVAgMBAAGjggEIMIIBBDAOBgNVHQ8BAf8EBAMC
+AYYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMBMBIGA1UdEwEB/wQIMAYB
+Af8CAQAwHQYDVR0OBBYEFBQusxe3WFbLrlAJQOYfr52LFMLGMB8GA1UdIwQYMBaA
+FHm0WeZ7tuXkAXOACIjIGlj26ZtuMDIGCCsGAQUFBwEBBCYwJDAiBggrBgEFBQcw
+AoYWaHR0cDovL3gxLmkubGVuY3Iub3JnLzAnBgNVHR8EIDAeMBygGqAYhhZodHRw
+Oi8veDEuYy5sZW5jci5vcmcvMCIGA1UdIAQbMBkwCAYGZ4EMAQIBMA0GCysGAQQB
+gt8TAQEBMA0GCSqGSIb3DQEBCwUAA4ICAQCFyk5HPqP3hUSFvNVneLKYY611TR6W
+PTNlclQtgaDqw+34IL9fzLdwALduO/ZelN7kIJ+m74uyA+eitRY8kc607TkC53wl
+ikfmZW4/RvTZ8M6UK+5UzhK8jCdLuMGYL6KvzXGRSgi3yLgjewQtCPkIVz6D2QQz
+CkcheAmCJ8MqyJu5zlzyZMjAvnnAT45tRAxekrsu94sQ4egdRCnbWSDtY7kh+BIm
+lJNXoB1lBMEKIq4QDUOXoRgffuDghje1WrG9ML+Hbisq/yFOGwXD9RiX8F6sw6W4
+avAuvDszue5L3sz85K+EC4Y/wFVDNvZo4TYXao6Z0f+lQKc0t8DQYzk1OXVu8rp2
+yJMC6alLbBfODALZvYH7n7do1AZls4I9d1P4jnkDrQoxB3UqQ9hVl3LEKQ73xF1O
+yK5GhDDX8oVfGKF5u+decIsH4YaTw7mP3GFxJSqv3+0lUFJoi5Lc5da149p90Ids
+hCExroL1+7mryIkXPeFM5TgO9r0rvZaBFOvV2z0gp35Z0+L4WPlbuEjN/lxPFin+
+HlUjr8gRsI3qfJOQFy/9rKIJR0Y/8Omwt/8oTWgy1mdeHmmjk7j1nYsvC9JSQ6Zv
+MldlTTKB3zhThV1+XWYp6rjd5JW1zbVWEkLNxE7GJThEUG3szgBVGP7pSWTUTsqX
+nLRbwHOoq7hHwg==
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIFYDCCBEigAwIBAgIQQAF3ITfU6UK47naqPGQKtzANBgkqhkiG9w0BAQsFADA/
+MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT
+DkRTVCBSb290IENBIFgzMB4XDTIxMDEyMDE5MTQwM1oXDTI0MDkzMDE4MTQwM1ow
+TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh
+cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwggIiMA0GCSqGSIb3DQEB
+AQUAA4ICDwAwggIKAoICAQCt6CRz9BQ385ueK1coHIe+3LffOJCMbjzmV6B493XC
+ov71am72AE8o295ohmxEk7axY/0UEmu/H9LqMZshftEzPLpI9d1537O4/xLxIZpL
+wYqGcWlKZmZsj348cL+tKSIG8+TA5oCu4kuPt5l+lAOf00eXfJlII1PoOK5PCm+D
+LtFJV4yAdLbaL9A4jXsDcCEbdfIwPPqPrt3aY6vrFk/CjhFLfs8L6P+1dy70sntK
+4EwSJQxwjQMpoOFTJOwT2e4ZvxCzSow/iaNhUd6shweU9GNx7C7ib1uYgeGJXDR5
+bHbvO5BieebbpJovJsXQEOEO3tkQjhb7t/eo98flAgeYjzYIlefiN5YNNnWe+w5y
+sR2bvAP5SQXYgd0FtCrWQemsAXaVCg/Y39W9Eh81LygXbNKYwagJZHduRze6zqxZ
+Xmidf3LWicUGQSk+WT7dJvUkyRGnWqNMQB9GoZm1pzpRboY7nn1ypxIFeFntPlF4
+FQsDj43QLwWyPntKHEtzBRL8xurgUBN8Q5N0s8p0544fAQjQMNRbcTa0B7rBMDBc
+SLeCO5imfWCKoqMpgsy6vYMEG6KDA0Gh1gXxG8K28Kh8hjtGqEgqiNx2mna/H2ql
+PRmP6zjzZN7IKw0KKP/32+IVQtQi0Cdd4Xn+GOdwiK1O5tmLOsbdJ1Fu/7xk9TND
+TwIDAQABo4IBRjCCAUIwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYw
+SwYIKwYBBQUHAQEEPzA9MDsGCCsGAQUFBzAChi9odHRwOi8vYXBwcy5pZGVudHJ1
+c3QuY29tL3Jvb3RzL2RzdHJvb3RjYXgzLnA3YzAfBgNVHSMEGDAWgBTEp7Gkeyxx
++tvhS5B1/8QVYIWJEDBUBgNVHSAETTBLMAgGBmeBDAECATA/BgsrBgEEAYLfEwEB
+ATAwMC4GCCsGAQUFBwIBFiJodHRwOi8vY3BzLnJvb3QteDEubGV0c2VuY3J5cHQu
+b3JnMDwGA1UdHwQ1MDMwMaAvoC2GK2h0dHA6Ly9jcmwuaWRlbnRydXN0LmNvbS9E
+U1RST09UQ0FYM0NSTC5jcmwwHQYDVR0OBBYEFHm0WeZ7tuXkAXOACIjIGlj26Ztu
+MA0GCSqGSIb3DQEBCwUAA4IBAQAKcwBslm7/DlLQrt2M51oGrS+o44+/yQoDFVDC
+5WxCu2+b9LRPwkSICHXM6webFGJueN7sJ7o5XPWioW5WlHAQU7G75K/QosMrAdSW
+9MUgNTP52GE24HGNtLi1qoJFlcDyqSMo59ahy2cI2qBDLKobkx/J3vWraV0T9VuG
+WCLKTVXkcGdtwlfFRjlBz4pYg1htmf5X6DYO8A4jqv2Il9DjXA6USbW1FzXSLr9O
+he8Y4IWS6wY7bCkjCWDcRQJMEhg76fsO3txE+FiYruq9RUWhiF1myv4Q6W+CyBFC
+Dfvp7OOGAN6dEOM4+qR9sdjoSYKEBpsr6GtPAQw4dy753ec5
+-----END CERTIFICATE-----
diff --git a/frontend/nginx.conf b/frontend/nginx.conf
new file mode 100644
index 0000000..d6ee127
--- /dev/null
+++ b/frontend/nginx.conf
@@ -0,0 +1,14 @@
+server {
+ listen 80;
+ server_name localhost;
+
+ location / {
+ root /usr/share/nginx/html;
+ index index.html index.htm;
+ }
+
+ location /api {
+ proxy_pass http://django:8000;
+ }
+
+}
\ No newline at end of file
diff --git a/frontend/privkey.pem b/frontend/privkey.pem
new file mode 100644
index 0000000..96b7dda
--- /dev/null
+++ b/frontend/privkey.pem
@@ -0,0 +1,5 @@
+-----BEGIN PRIVATE KEY-----
+MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgD6EmCAUWob1zUw4Q
+F+Pf9cSOmSCTODe6u+Gst177IoihRANCAARYeMpTk1DaC8cigL3DivanGrLQahYB
+EDm5B26VaS3gUmq9T0RNkEUxJIPnZBwdF8p7xAEBhlTXwgy3eBLAp8lA
+-----END PRIVATE KEY-----
diff --git a/frontend/public/assets/img/avatars/avatar-2.png b/frontend/public/assets/img/avatars/avatar-2.png
new file mode 100644
index 0000000..9eb3ec9
Binary files /dev/null and b/frontend/public/assets/img/avatars/avatar-2.png differ
diff --git a/frontend/public/assets/img/avatars/avatar-3.png b/frontend/public/assets/img/avatars/avatar-3.png
new file mode 100644
index 0000000..a0dbc96
Binary files /dev/null and b/frontend/public/assets/img/avatars/avatar-3.png differ
diff --git a/frontend/public/assets/img/avatars/avatar-4.png b/frontend/public/assets/img/avatars/avatar-4.png
new file mode 100644
index 0000000..de75ef6
Binary files /dev/null and b/frontend/public/assets/img/avatars/avatar-4.png differ
diff --git a/frontend/public/assets/img/avatars/avatar-5.png b/frontend/public/assets/img/avatars/avatar-5.png
new file mode 100644
index 0000000..40d595e
Binary files /dev/null and b/frontend/public/assets/img/avatars/avatar-5.png differ
diff --git a/frontend/public/assets/img/avatars/avatar-6.png b/frontend/public/assets/img/avatars/avatar-6.png
new file mode 100644
index 0000000..bc8577c
Binary files /dev/null and b/frontend/public/assets/img/avatars/avatar-6.png differ
diff --git a/frontend/public/assets/img/avatars/avatar.png b/frontend/public/assets/img/avatars/avatar.png
new file mode 100644
index 0000000..894246c
Binary files /dev/null and b/frontend/public/assets/img/avatars/avatar.png differ
diff --git a/frontend/public/assets/img/photos/unsplash-1.jpg b/frontend/public/assets/img/photos/unsplash-1.jpg
new file mode 100644
index 0000000..ccc3963
Binary files /dev/null and b/frontend/public/assets/img/photos/unsplash-1.jpg differ
diff --git a/frontend/public/assets/img/photos/unsplash-2.jpg b/frontend/public/assets/img/photos/unsplash-2.jpg
new file mode 100644
index 0000000..3a33349
Binary files /dev/null and b/frontend/public/assets/img/photos/unsplash-2.jpg differ
diff --git a/frontend/public/assets/img/photos/unsplash-3.jpg b/frontend/public/assets/img/photos/unsplash-3.jpg
new file mode 100644
index 0000000..bc287e5
Binary files /dev/null and b/frontend/public/assets/img/photos/unsplash-3.jpg differ
diff --git a/frontend/src/App.vue b/frontend/src/App.vue
index a7280b7..d96b367 100644
--- a/frontend/src/App.vue
+++ b/frontend/src/App.vue
@@ -3,13 +3,23 @@
+
diff --git a/frontend/src/assets/css/toolshed.css b/frontend/src/assets/css/toolshed.css
new file mode 100644
index 0000000..daced67
--- /dev/null
+++ b/frontend/src/assets/css/toolshed.css
@@ -0,0 +1,20696 @@
+
+/*!
+ * Bootstrap v5.0.0-alpha2 (https://getbootstrap.com/)
+ * Copyright 2011-2020 The Bootstrap Authors
+ * Copyright 2011-2020 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ */
+:root {
+ --bs-blue: #3b7ddd;
+ --bs-indigo: #6610f2;
+ --bs-purple: #6f42c1;
+ --bs-pink: #e83e8c;
+ --bs-red: #dc3545;
+ --bs-orange: #fd7e14;
+ --bs-yellow: #ffc107;
+ --bs-green: #28a745;
+ --bs-teal: #20c997;
+ --bs-cyan: #17a2b8;
+ --bs-white: #fff;
+ --bs-gray: #6c757d;
+ --bs-gray-dark: #343a40;
+ --bs-primary: #3b7ddd;
+ --bs-secondary: #6c757d;
+ --bs-success: #28a745;
+ --bs-info: #17a2b8;
+ --bs-warning: #ffc107;
+ --bs-danger: #dc3545;
+ --bs-light: #f8f9fa;
+ --bs-dark: #212529;
+ --bs-font-sans-serif: "Inter", "Helvetica Neue", Arial, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
+ --bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
+ --bs-gradient: linear-gradient(180deg, hsla(0, 0%, 100%, 0.15), hsla(0, 0%, 100%, 0))
+}
+
+*, :after, :before {
+ box-sizing: border-box
+}
+
+body {
+ margin: 0;
+ font-family: var(--bs-font-sans-serif);
+ font-size: .875rem;
+ font-weight: 400;
+ line-height: 1.5;
+ color: #495057;
+ background-color: #f7f7fc;
+ -webkit-text-size-adjust: 100%;
+ -webkit-tap-highlight-color: rgba(0, 0, 0, 0)
+}
+
+[tabindex="-1"]:focus:not(:focus-visible) {
+ outline: 0 !important
+}
+
+hr {
+ margin: 1rem 0;
+ color: inherit;
+ background-color: currentColor;
+ border: 0;
+ opacity: .25
+}
+
+hr:not([size]) {
+ height: 1px
+}
+
+.h1, .h2, .h3, .h4, .h5, .h6, h1, h2, h3, h4, h5, h6 {
+ margin-top: 0;
+ margin-bottom: .5rem;
+ font-weight: 400;
+ line-height: 1.2;
+ color: #000
+}
+
+.h1, h1 {
+ font-size: 1.75rem
+}
+
+.h2, h2 {
+ font-size: 1.53125rem
+}
+
+.h3, h3 {
+ font-size: 1.3125rem
+}
+
+.h4, h4 {
+ font-size: 1.09375rem
+}
+
+.h5, .h6, h5, h6 {
+ font-size: .875rem
+}
+
+p {
+ margin-top: 0;
+ margin-bottom: 1rem
+}
+
+abbr[data-original-title], abbr[title] {
+ text-decoration: underline;
+ -webkit-text-decoration: underline dotted;
+ text-decoration: underline dotted;
+ cursor: help;
+ -webkit-text-decoration-skip-ink: none;
+ text-decoration-skip-ink: none
+}
+
+address {
+ margin-bottom: 1rem;
+ font-style: normal;
+ line-height: inherit
+}
+
+ol, ul {
+ padding-left: 2rem
+}
+
+dl, ol, ul {
+ margin-top: 0;
+ margin-bottom: 1rem
+}
+
+ol ol, ol ul, ul ol, ul ul {
+ margin-bottom: 0
+}
+
+dt {
+ font-weight: 600
+}
+
+dd {
+ margin-bottom: .5rem;
+ margin-left: 0
+}
+
+blockquote {
+ margin: 0 0 1rem
+}
+
+b, strong {
+ font-weight: bolder
+}
+
+.small, small {
+ font-size: 80%
+}
+
+.mark, mark {
+ padding: .2em;
+ background-color: #fcf8e3
+}
+
+sub, sup {
+ position: relative;
+ font-size: .75em;
+ line-height: 0;
+ vertical-align: initial
+}
+
+sub {
+ bottom: -.25em
+}
+
+sup {
+ top: -.5em
+}
+
+a {
+ color: #3b7ddd;
+ text-decoration: none
+}
+
+a:hover {
+ color: #1e58ad;
+ text-decoration: underline
+}
+
+a:not([href]):not([class]), a:not([href]):not([class]):hover {
+ color: inherit;
+ text-decoration: none
+}
+
+code, kbd, pre, samp {
+ font-family: var(--bs-font-monospace);
+ font-size: 1em
+}
+
+pre {
+ display: block;
+ margin-top: 0;
+ margin-bottom: 1rem;
+ overflow: auto;
+ font-size: 80%;
+ -ms-overflow-style: scrollbar
+}
+
+pre code {
+ font-size: inherit;
+ color: inherit;
+ word-break: normal
+}
+
+code {
+ font-size: 80%;
+ color: #e83e8c;
+ word-wrap: break-word
+}
+
+a > code {
+ color: inherit
+}
+
+kbd {
+ padding: .2rem .4rem;
+ font-size: 80%;
+ color: #fff;
+ background-color: #212529;
+ border-radius: .1rem
+}
+
+kbd kbd {
+ padding: 0;
+ font-size: 1em;
+ font-weight: 600
+}
+
+figure {
+ margin: 0 0 1rem
+}
+
+img, svg {
+ vertical-align: middle
+}
+
+table {
+ caption-side: bottom;
+ border-collapse: collapse
+}
+
+caption {
+ padding-top: .75rem;
+ padding-bottom: .75rem;
+ color: #6c757d;
+ text-align: left
+}
+
+th {
+ text-align: inherit;
+ text-align: -webkit-match-parent
+}
+
+tbody, td, tfoot, th, thead, tr {
+ border: 0 solid;
+ border-color: inherit
+}
+
+label {
+ display: inline-block
+}
+
+button {
+ border-radius: 0
+}
+
+button:focus {
+ outline: 1px dotted;
+ outline: 5px auto -webkit-focus-ring-color
+}
+
+button, input, optgroup, select, textarea {
+ margin: 0;
+ font-family: inherit;
+ font-size: inherit;
+ line-height: inherit
+}
+
+button, input {
+ overflow: visible
+}
+
+button, select {
+ text-transform: none
+}
+
+[role=button] {
+ cursor: pointer
+}
+
+select {
+ word-wrap: normal
+}
+
+[list]::-webkit-calendar-picker-indicator {
+ display: none
+}
+
+[type=button], [type=reset], [type=submit], button {
+ -webkit-appearance: button
+}
+
+[type=button]:not(:disabled), [type=reset]:not(:disabled), [type=submit]:not(:disabled), button:not(:disabled) {
+ cursor: pointer
+}
+
+::-moz-focus-inner {
+ padding: 0;
+ border-style: none
+}
+
+textarea {
+ resize: vertical
+}
+
+fieldset {
+ min-width: 0;
+ padding: 0;
+ margin: 0;
+ border: 0
+}
+
+legend {
+ float: left;
+ width: 100%;
+ padding: 0;
+ margin-bottom: .5rem;
+ font-size: 1.5rem;
+ line-height: inherit;
+ white-space: normal
+}
+
+legend + * {
+ clear: left
+}
+
+::-webkit-datetime-edit-day-field, ::-webkit-datetime-edit-fields-wrapper, ::-webkit-datetime-edit-hour-field, ::-webkit-datetime-edit-minute, ::-webkit-datetime-edit-month-field, ::-webkit-datetime-edit-text, ::-webkit-datetime-edit-year-field {
+ padding: 0
+}
+
+::-webkit-inner-spin-button {
+ height: auto
+}
+
+[type=search] {
+ outline-offset: -2px;
+ -webkit-appearance: textfield
+}
+
+::-webkit-search-decoration {
+ -webkit-appearance: none
+}
+
+::-webkit-color-swatch-wrapper {
+ padding: 0
+}
+
+::-webkit-file-upload-button {
+ font: inherit;
+ -webkit-appearance: button
+}
+
+output {
+ display: inline-block
+}
+
+iframe {
+ border: 0
+}
+
+summary {
+ display: list-item;
+ cursor: pointer
+}
+
+progress {
+ vertical-align: initial
+}
+
+[hidden] {
+ display: none !important
+}
+
+.lead {
+ font-size: 1.09375rem;
+ font-weight: 300
+}
+
+.display-1 {
+ font-size: 6rem
+}
+
+.display-1, .display-2 {
+ font-weight: 300;
+ line-height: 1.2
+}
+
+.display-2 {
+ font-size: 5.5rem
+}
+
+.display-3 {
+ font-size: 4.5rem
+}
+
+.display-3, .display-4 {
+ font-weight: 300;
+ line-height: 1.2
+}
+
+.display-4 {
+ font-size: 3.5rem
+}
+
+.display-5 {
+ font-size: 3rem
+}
+
+.display-5, .display-6 {
+ font-weight: 300;
+ line-height: 1.2
+}
+
+.display-6 {
+ font-size: 2.5rem
+}
+
+.list-inline, .list-unstyled {
+ padding-left: 0;
+ list-style: none
+}
+
+.list-inline-item {
+ display: inline-block
+}
+
+.list-inline-item:not(:last-child) {
+ margin-right: .5rem
+}
+
+.initialism {
+ font-size: 80%;
+ text-transform: uppercase
+}
+
+.blockquote {
+ margin-bottom: 1rem;
+ font-size: 1.09375rem
+}
+
+.blockquote > :last-child {
+ margin-bottom: 0
+}
+
+.blockquote-footer {
+ margin-top: -1rem;
+ margin-bottom: 1rem;
+ font-size: 80%;
+ color: #6c757d
+}
+
+.blockquote-footer:before {
+ content: "\2014\00A0"
+}
+
+.img-fluid, .img-thumbnail {
+ max-width: 100%;
+ height: auto
+}
+
+.img-thumbnail {
+ padding: .25rem;
+ background-color: #f7f7fc;
+ border: 1px solid #dee2e6;
+ border-radius: .2rem
+}
+
+.figure {
+ display: inline-block
+}
+
+.figure-img {
+ margin-bottom: .5rem;
+ line-height: 1
+}
+
+.figure-caption {
+ font-size: 80%;
+ color: #6c757d
+}
+
+.container, .container-fluid, .container-lg, .container-md, .container-sm, .container-xl {
+ --bs-gutter-x: .75rem;
+ width: 100%;
+ padding-right: calc(var(--bs-gutter-x) / 2);
+ padding-left: calc(var(--bs-gutter-x) / 2);
+ margin-right: auto;
+ margin-left: auto
+}
+
+@media (min-width: 576px) {
+ .container, .container-sm {
+ max-width: 540px
+ }
+}
+
+@media (min-width: 768px) {
+ .container, .container-md, .container-sm {
+ max-width: 720px
+ }
+}
+
+@media (min-width: 992px) {
+ .container, .container-lg, .container-md, .container-sm {
+ max-width: 960px
+ }
+}
+
+@media (min-width: 1200px) {
+ .container, .container-lg, .container-md, .container-sm, .container-xl {
+ max-width: 1200px
+ }
+}
+
+.row {
+ --bs-gutter-x: 24px;
+ --bs-gutter-y: 0;
+ display: flex;
+ flex-wrap: wrap;
+ margin-top: calc(var(--bs-gutter-y) * -1);
+ margin-right: calc(var(--bs-gutter-x) / -2);
+ margin-left: calc(var(--bs-gutter-x) / -2)
+}
+
+.row > * {
+ flex-shrink: 0;
+ width: 100%;
+ max-width: 100%;
+ padding-right: calc(var(--bs-gutter-x) / 2);
+ padding-left: calc(var(--bs-gutter-x) / 2);
+ margin-top: var(--bs-gutter-y)
+}
+
+.col {
+ flex: 1 0 0%
+}
+
+.row-cols-auto > * {
+ flex: 0 0 auto;
+ width: auto
+}
+
+.row-cols-1 > * {
+ flex: 0 0 auto;
+ width: 100%
+}
+
+.row-cols-2 > * {
+ flex: 0 0 auto;
+ width: 50%
+}
+
+.row-cols-3 > * {
+ flex: 0 0 auto;
+ width: 33.33333%
+}
+
+.row-cols-4 > * {
+ flex: 0 0 auto;
+ width: 25%
+}
+
+.row-cols-5 > * {
+ flex: 0 0 auto;
+ width: 20%
+}
+
+.row-cols-6 > * {
+ flex: 0 0 auto;
+ width: 16.66667%
+}
+
+.col-auto {
+ flex: 0 0 auto;
+ width: auto
+}
+
+.col-1 {
+ flex: 0 0 auto;
+ width: 8.33333%
+}
+
+.col-2 {
+ flex: 0 0 auto;
+ width: 16.66667%
+}
+
+.col-3 {
+ flex: 0 0 auto;
+ width: 25%
+}
+
+.col-4 {
+ flex: 0 0 auto;
+ width: 33.33333%
+}
+
+.col-5 {
+ flex: 0 0 auto;
+ width: 41.66667%
+}
+
+.col-6 {
+ flex: 0 0 auto;
+ width: 50%
+}
+
+.col-7 {
+ flex: 0 0 auto;
+ width: 58.33333%
+}
+
+.col-8 {
+ flex: 0 0 auto;
+ width: 66.66667%
+}
+
+.col-9 {
+ flex: 0 0 auto;
+ width: 75%
+}
+
+.col-10 {
+ flex: 0 0 auto;
+ width: 83.33333%
+}
+
+.col-11 {
+ flex: 0 0 auto;
+ width: 91.66667%
+}
+
+.col-12 {
+ flex: 0 0 auto;
+ width: 100%
+}
+
+.offset-1 {
+ margin-left: 8.33333%
+}
+
+.offset-2 {
+ margin-left: 16.66667%
+}
+
+.offset-3 {
+ margin-left: 25%
+}
+
+.offset-4 {
+ margin-left: 33.33333%
+}
+
+.offset-5 {
+ margin-left: 41.66667%
+}
+
+.offset-6 {
+ margin-left: 50%
+}
+
+.offset-7 {
+ margin-left: 58.33333%
+}
+
+.offset-8 {
+ margin-left: 66.66667%
+}
+
+.offset-9 {
+ margin-left: 75%
+}
+
+.offset-10 {
+ margin-left: 83.33333%
+}
+
+.offset-11 {
+ margin-left: 91.66667%
+}
+
+.g-0, .gx-0 {
+ --bs-gutter-x: 0
+}
+
+.g-0, .gy-0 {
+ --bs-gutter-y: 0
+}
+
+.g-1, .gx-1 {
+ --bs-gutter-x: .25rem
+}
+
+.g-1, .gy-1 {
+ --bs-gutter-y: .25rem
+}
+
+.g-2, .gx-2 {
+ --bs-gutter-x: .5rem
+}
+
+.g-2, .gy-2 {
+ --bs-gutter-y: .5rem
+}
+
+.g-3, .gx-3 {
+ --bs-gutter-x: 1rem
+}
+
+.g-3, .gy-3 {
+ --bs-gutter-y: 1rem
+}
+
+.g-4, .gx-4 {
+ --bs-gutter-x: 1.5rem
+}
+
+.g-4, .gy-4 {
+ --bs-gutter-y: 1.5rem
+}
+
+.g-5, .gx-5 {
+ --bs-gutter-x: 3rem
+}
+
+.g-5, .gy-5 {
+ --bs-gutter-y: 3rem
+}
+
+.g-6, .gx-6 {
+ --bs-gutter-x: 4.5rem
+}
+
+.g-6, .gy-6 {
+ --bs-gutter-y: 4.5rem
+}
+
+.g-7, .gx-7 {
+ --bs-gutter-x: 6rem
+}
+
+.g-7, .gy-7 {
+ --bs-gutter-y: 6rem
+}
+
+@media (min-width: 576px) {
+ .col-sm {
+ flex: 1 0 0%
+ }
+
+ .row-cols-sm-auto > * {
+ flex: 0 0 auto;
+ width: auto
+ }
+
+ .row-cols-sm-1 > * {
+ flex: 0 0 auto;
+ width: 100%
+ }
+
+ .row-cols-sm-2 > * {
+ flex: 0 0 auto;
+ width: 50%
+ }
+
+ .row-cols-sm-3 > * {
+ flex: 0 0 auto;
+ width: 33.33333%
+ }
+
+ .row-cols-sm-4 > * {
+ flex: 0 0 auto;
+ width: 25%
+ }
+
+ .row-cols-sm-5 > * {
+ flex: 0 0 auto;
+ width: 20%
+ }
+
+ .row-cols-sm-6 > * {
+ flex: 0 0 auto;
+ width: 16.66667%
+ }
+
+ .col-sm-auto {
+ flex: 0 0 auto;
+ width: auto
+ }
+
+ .col-sm-1 {
+ flex: 0 0 auto;
+ width: 8.33333%
+ }
+
+ .col-sm-2 {
+ flex: 0 0 auto;
+ width: 16.66667%
+ }
+
+ .col-sm-3 {
+ flex: 0 0 auto;
+ width: 25%
+ }
+
+ .col-sm-4 {
+ flex: 0 0 auto;
+ width: 33.33333%
+ }
+
+ .col-sm-5 {
+ flex: 0 0 auto;
+ width: 41.66667%
+ }
+
+ .col-sm-6 {
+ flex: 0 0 auto;
+ width: 50%
+ }
+
+ .col-sm-7 {
+ flex: 0 0 auto;
+ width: 58.33333%
+ }
+
+ .col-sm-8 {
+ flex: 0 0 auto;
+ width: 66.66667%
+ }
+
+ .col-sm-9 {
+ flex: 0 0 auto;
+ width: 75%
+ }
+
+ .col-sm-10 {
+ flex: 0 0 auto;
+ width: 83.33333%
+ }
+
+ .col-sm-11 {
+ flex: 0 0 auto;
+ width: 91.66667%
+ }
+
+ .col-sm-12 {
+ flex: 0 0 auto;
+ width: 100%
+ }
+
+ .offset-sm-0 {
+ margin-left: 0
+ }
+
+ .offset-sm-1 {
+ margin-left: 8.33333%
+ }
+
+ .offset-sm-2 {
+ margin-left: 16.66667%
+ }
+
+ .offset-sm-3 {
+ margin-left: 25%
+ }
+
+ .offset-sm-4 {
+ margin-left: 33.33333%
+ }
+
+ .offset-sm-5 {
+ margin-left: 41.66667%
+ }
+
+ .offset-sm-6 {
+ margin-left: 50%
+ }
+
+ .offset-sm-7 {
+ margin-left: 58.33333%
+ }
+
+ .offset-sm-8 {
+ margin-left: 66.66667%
+ }
+
+ .offset-sm-9 {
+ margin-left: 75%
+ }
+
+ .offset-sm-10 {
+ margin-left: 83.33333%
+ }
+
+ .offset-sm-11 {
+ margin-left: 91.66667%
+ }
+
+ .g-sm-0, .gx-sm-0 {
+ --bs-gutter-x: 0
+ }
+
+ .g-sm-0, .gy-sm-0 {
+ --bs-gutter-y: 0
+ }
+
+ .g-sm-1, .gx-sm-1 {
+ --bs-gutter-x: .25rem
+ }
+
+ .g-sm-1, .gy-sm-1 {
+ --bs-gutter-y: .25rem
+ }
+
+ .g-sm-2, .gx-sm-2 {
+ --bs-gutter-x: .5rem
+ }
+
+ .g-sm-2, .gy-sm-2 {
+ --bs-gutter-y: .5rem
+ }
+
+ .g-sm-3, .gx-sm-3 {
+ --bs-gutter-x: 1rem
+ }
+
+ .g-sm-3, .gy-sm-3 {
+ --bs-gutter-y: 1rem
+ }
+
+ .g-sm-4, .gx-sm-4 {
+ --bs-gutter-x: 1.5rem
+ }
+
+ .g-sm-4, .gy-sm-4 {
+ --bs-gutter-y: 1.5rem
+ }
+
+ .g-sm-5, .gx-sm-5 {
+ --bs-gutter-x: 3rem
+ }
+
+ .g-sm-5, .gy-sm-5 {
+ --bs-gutter-y: 3rem
+ }
+
+ .g-sm-6, .gx-sm-6 {
+ --bs-gutter-x: 4.5rem
+ }
+
+ .g-sm-6, .gy-sm-6 {
+ --bs-gutter-y: 4.5rem
+ }
+
+ .g-sm-7, .gx-sm-7 {
+ --bs-gutter-x: 6rem
+ }
+
+ .g-sm-7, .gy-sm-7 {
+ --bs-gutter-y: 6rem
+ }
+}
+
+@media (min-width: 768px) {
+ .col-md {
+ flex: 1 0 0%
+ }
+
+ .row-cols-md-auto > * {
+ flex: 0 0 auto;
+ width: auto
+ }
+
+ .row-cols-md-1 > * {
+ flex: 0 0 auto;
+ width: 100%
+ }
+
+ .row-cols-md-2 > * {
+ flex: 0 0 auto;
+ width: 50%
+ }
+
+ .row-cols-md-3 > * {
+ flex: 0 0 auto;
+ width: 33.33333%
+ }
+
+ .row-cols-md-4 > * {
+ flex: 0 0 auto;
+ width: 25%
+ }
+
+ .row-cols-md-5 > * {
+ flex: 0 0 auto;
+ width: 20%
+ }
+
+ .row-cols-md-6 > * {
+ flex: 0 0 auto;
+ width: 16.66667%
+ }
+
+ .col-md-auto {
+ flex: 0 0 auto;
+ width: auto
+ }
+
+ .col-md-1 {
+ flex: 0 0 auto;
+ width: 8.33333%
+ }
+
+ .col-md-2 {
+ flex: 0 0 auto;
+ width: 16.66667%
+ }
+
+ .col-md-3 {
+ flex: 0 0 auto;
+ width: 25%
+ }
+
+ .col-md-4 {
+ flex: 0 0 auto;
+ width: 33.33333%
+ }
+
+ .col-md-5 {
+ flex: 0 0 auto;
+ width: 41.66667%
+ }
+
+ .col-md-6 {
+ flex: 0 0 auto;
+ width: 50%
+ }
+
+ .col-md-7 {
+ flex: 0 0 auto;
+ width: 58.33333%
+ }
+
+ .col-md-8 {
+ flex: 0 0 auto;
+ width: 66.66667%
+ }
+
+ .col-md-9 {
+ flex: 0 0 auto;
+ width: 75%
+ }
+
+ .col-md-10 {
+ flex: 0 0 auto;
+ width: 83.33333%
+ }
+
+ .col-md-11 {
+ flex: 0 0 auto;
+ width: 91.66667%
+ }
+
+ .col-md-12 {
+ flex: 0 0 auto;
+ width: 100%
+ }
+
+ .offset-md-0 {
+ margin-left: 0
+ }
+
+ .offset-md-1 {
+ margin-left: 8.33333%
+ }
+
+ .offset-md-2 {
+ margin-left: 16.66667%
+ }
+
+ .offset-md-3 {
+ margin-left: 25%
+ }
+
+ .offset-md-4 {
+ margin-left: 33.33333%
+ }
+
+ .offset-md-5 {
+ margin-left: 41.66667%
+ }
+
+ .offset-md-6 {
+ margin-left: 50%
+ }
+
+ .offset-md-7 {
+ margin-left: 58.33333%
+ }
+
+ .offset-md-8 {
+ margin-left: 66.66667%
+ }
+
+ .offset-md-9 {
+ margin-left: 75%
+ }
+
+ .offset-md-10 {
+ margin-left: 83.33333%
+ }
+
+ .offset-md-11 {
+ margin-left: 91.66667%
+ }
+
+ .g-md-0, .gx-md-0 {
+ --bs-gutter-x: 0
+ }
+
+ .g-md-0, .gy-md-0 {
+ --bs-gutter-y: 0
+ }
+
+ .g-md-1, .gx-md-1 {
+ --bs-gutter-x: .25rem
+ }
+
+ .g-md-1, .gy-md-1 {
+ --bs-gutter-y: .25rem
+ }
+
+ .g-md-2, .gx-md-2 {
+ --bs-gutter-x: .5rem
+ }
+
+ .g-md-2, .gy-md-2 {
+ --bs-gutter-y: .5rem
+ }
+
+ .g-md-3, .gx-md-3 {
+ --bs-gutter-x: 1rem
+ }
+
+ .g-md-3, .gy-md-3 {
+ --bs-gutter-y: 1rem
+ }
+
+ .g-md-4, .gx-md-4 {
+ --bs-gutter-x: 1.5rem
+ }
+
+ .g-md-4, .gy-md-4 {
+ --bs-gutter-y: 1.5rem
+ }
+
+ .g-md-5, .gx-md-5 {
+ --bs-gutter-x: 3rem
+ }
+
+ .g-md-5, .gy-md-5 {
+ --bs-gutter-y: 3rem
+ }
+
+ .g-md-6, .gx-md-6 {
+ --bs-gutter-x: 4.5rem
+ }
+
+ .g-md-6, .gy-md-6 {
+ --bs-gutter-y: 4.5rem
+ }
+
+ .g-md-7, .gx-md-7 {
+ --bs-gutter-x: 6rem
+ }
+
+ .g-md-7, .gy-md-7 {
+ --bs-gutter-y: 6rem
+ }
+}
+
+@media (min-width: 992px) {
+ .col-lg {
+ flex: 1 0 0%
+ }
+
+ .row-cols-lg-auto > * {
+ flex: 0 0 auto;
+ width: auto
+ }
+
+ .row-cols-lg-1 > * {
+ flex: 0 0 auto;
+ width: 100%
+ }
+
+ .row-cols-lg-2 > * {
+ flex: 0 0 auto;
+ width: 50%
+ }
+
+ .row-cols-lg-3 > * {
+ flex: 0 0 auto;
+ width: 33.33333%
+ }
+
+ .row-cols-lg-4 > * {
+ flex: 0 0 auto;
+ width: 25%
+ }
+
+ .row-cols-lg-5 > * {
+ flex: 0 0 auto;
+ width: 20%
+ }
+
+ .row-cols-lg-6 > * {
+ flex: 0 0 auto;
+ width: 16.66667%
+ }
+
+ .col-lg-auto {
+ flex: 0 0 auto;
+ width: auto
+ }
+
+ .col-lg-1 {
+ flex: 0 0 auto;
+ width: 8.33333%
+ }
+
+ .col-lg-2 {
+ flex: 0 0 auto;
+ width: 16.66667%
+ }
+
+ .col-lg-3 {
+ flex: 0 0 auto;
+ width: 25%
+ }
+
+ .col-lg-4 {
+ flex: 0 0 auto;
+ width: 33.33333%
+ }
+
+ .col-lg-5 {
+ flex: 0 0 auto;
+ width: 41.66667%
+ }
+
+ .col-lg-6 {
+ flex: 0 0 auto;
+ width: 50%
+ }
+
+ .col-lg-7 {
+ flex: 0 0 auto;
+ width: 58.33333%
+ }
+
+ .col-lg-8 {
+ flex: 0 0 auto;
+ width: 66.66667%
+ }
+
+ .col-lg-9 {
+ flex: 0 0 auto;
+ width: 75%
+ }
+
+ .col-lg-10 {
+ flex: 0 0 auto;
+ width: 83.33333%
+ }
+
+ .col-lg-11 {
+ flex: 0 0 auto;
+ width: 91.66667%
+ }
+
+ .col-lg-12 {
+ flex: 0 0 auto;
+ width: 100%
+ }
+
+ .offset-lg-0 {
+ margin-left: 0
+ }
+
+ .offset-lg-1 {
+ margin-left: 8.33333%
+ }
+
+ .offset-lg-2 {
+ margin-left: 16.66667%
+ }
+
+ .offset-lg-3 {
+ margin-left: 25%
+ }
+
+ .offset-lg-4 {
+ margin-left: 33.33333%
+ }
+
+ .offset-lg-5 {
+ margin-left: 41.66667%
+ }
+
+ .offset-lg-6 {
+ margin-left: 50%
+ }
+
+ .offset-lg-7 {
+ margin-left: 58.33333%
+ }
+
+ .offset-lg-8 {
+ margin-left: 66.66667%
+ }
+
+ .offset-lg-9 {
+ margin-left: 75%
+ }
+
+ .offset-lg-10 {
+ margin-left: 83.33333%
+ }
+
+ .offset-lg-11 {
+ margin-left: 91.66667%
+ }
+
+ .g-lg-0, .gx-lg-0 {
+ --bs-gutter-x: 0
+ }
+
+ .g-lg-0, .gy-lg-0 {
+ --bs-gutter-y: 0
+ }
+
+ .g-lg-1, .gx-lg-1 {
+ --bs-gutter-x: .25rem
+ }
+
+ .g-lg-1, .gy-lg-1 {
+ --bs-gutter-y: .25rem
+ }
+
+ .g-lg-2, .gx-lg-2 {
+ --bs-gutter-x: .5rem
+ }
+
+ .g-lg-2, .gy-lg-2 {
+ --bs-gutter-y: .5rem
+ }
+
+ .g-lg-3, .gx-lg-3 {
+ --bs-gutter-x: 1rem
+ }
+
+ .g-lg-3, .gy-lg-3 {
+ --bs-gutter-y: 1rem
+ }
+
+ .g-lg-4, .gx-lg-4 {
+ --bs-gutter-x: 1.5rem
+ }
+
+ .g-lg-4, .gy-lg-4 {
+ --bs-gutter-y: 1.5rem
+ }
+
+ .g-lg-5, .gx-lg-5 {
+ --bs-gutter-x: 3rem
+ }
+
+ .g-lg-5, .gy-lg-5 {
+ --bs-gutter-y: 3rem
+ }
+
+ .g-lg-6, .gx-lg-6 {
+ --bs-gutter-x: 4.5rem
+ }
+
+ .g-lg-6, .gy-lg-6 {
+ --bs-gutter-y: 4.5rem
+ }
+
+ .g-lg-7, .gx-lg-7 {
+ --bs-gutter-x: 6rem
+ }
+
+ .g-lg-7, .gy-lg-7 {
+ --bs-gutter-y: 6rem
+ }
+}
+
+@media (min-width: 1200px) {
+ .col-xl {
+ flex: 1 0 0%
+ }
+
+ .row-cols-xl-auto > * {
+ flex: 0 0 auto;
+ width: auto
+ }
+
+ .row-cols-xl-1 > * {
+ flex: 0 0 auto;
+ width: 100%
+ }
+
+ .row-cols-xl-2 > * {
+ flex: 0 0 auto;
+ width: 50%
+ }
+
+ .row-cols-xl-3 > * {
+ flex: 0 0 auto;
+ width: 33.33333%
+ }
+
+ .row-cols-xl-4 > * {
+ flex: 0 0 auto;
+ width: 25%
+ }
+
+ .row-cols-xl-5 > * {
+ flex: 0 0 auto;
+ width: 20%
+ }
+
+ .row-cols-xl-6 > * {
+ flex: 0 0 auto;
+ width: 16.66667%
+ }
+
+ .col-xl-auto {
+ flex: 0 0 auto;
+ width: auto
+ }
+
+ .col-xl-1 {
+ flex: 0 0 auto;
+ width: 8.33333%
+ }
+
+ .col-xl-2 {
+ flex: 0 0 auto;
+ width: 16.66667%
+ }
+
+ .col-xl-3 {
+ flex: 0 0 auto;
+ width: 25%
+ }
+
+ .col-xl-4 {
+ flex: 0 0 auto;
+ width: 33.33333%
+ }
+
+ .col-xl-5 {
+ flex: 0 0 auto;
+ width: 41.66667%
+ }
+
+ .col-xl-6 {
+ flex: 0 0 auto;
+ width: 50%
+ }
+
+ .col-xl-7 {
+ flex: 0 0 auto;
+ width: 58.33333%
+ }
+
+ .col-xl-8 {
+ flex: 0 0 auto;
+ width: 66.66667%
+ }
+
+ .col-xl-9 {
+ flex: 0 0 auto;
+ width: 75%
+ }
+
+ .col-xl-10 {
+ flex: 0 0 auto;
+ width: 83.33333%
+ }
+
+ .col-xl-11 {
+ flex: 0 0 auto;
+ width: 91.66667%
+ }
+
+ .col-xl-12 {
+ flex: 0 0 auto;
+ width: 100%
+ }
+
+ .offset-xl-0 {
+ margin-left: 0
+ }
+
+ .offset-xl-1 {
+ margin-left: 8.33333%
+ }
+
+ .offset-xl-2 {
+ margin-left: 16.66667%
+ }
+
+ .offset-xl-3 {
+ margin-left: 25%
+ }
+
+ .offset-xl-4 {
+ margin-left: 33.33333%
+ }
+
+ .offset-xl-5 {
+ margin-left: 41.66667%
+ }
+
+ .offset-xl-6 {
+ margin-left: 50%
+ }
+
+ .offset-xl-7 {
+ margin-left: 58.33333%
+ }
+
+ .offset-xl-8 {
+ margin-left: 66.66667%
+ }
+
+ .offset-xl-9 {
+ margin-left: 75%
+ }
+
+ .offset-xl-10 {
+ margin-left: 83.33333%
+ }
+
+ .offset-xl-11 {
+ margin-left: 91.66667%
+ }
+
+ .g-xl-0, .gx-xl-0 {
+ --bs-gutter-x: 0
+ }
+
+ .g-xl-0, .gy-xl-0 {
+ --bs-gutter-y: 0
+ }
+
+ .g-xl-1, .gx-xl-1 {
+ --bs-gutter-x: .25rem
+ }
+
+ .g-xl-1, .gy-xl-1 {
+ --bs-gutter-y: .25rem
+ }
+
+ .g-xl-2, .gx-xl-2 {
+ --bs-gutter-x: .5rem
+ }
+
+ .g-xl-2, .gy-xl-2 {
+ --bs-gutter-y: .5rem
+ }
+
+ .g-xl-3, .gx-xl-3 {
+ --bs-gutter-x: 1rem
+ }
+
+ .g-xl-3, .gy-xl-3 {
+ --bs-gutter-y: 1rem
+ }
+
+ .g-xl-4, .gx-xl-4 {
+ --bs-gutter-x: 1.5rem
+ }
+
+ .g-xl-4, .gy-xl-4 {
+ --bs-gutter-y: 1.5rem
+ }
+
+ .g-xl-5, .gx-xl-5 {
+ --bs-gutter-x: 3rem
+ }
+
+ .g-xl-5, .gy-xl-5 {
+ --bs-gutter-y: 3rem
+ }
+
+ .g-xl-6, .gx-xl-6 {
+ --bs-gutter-x: 4.5rem
+ }
+
+ .g-xl-6, .gy-xl-6 {
+ --bs-gutter-y: 4.5rem
+ }
+
+ .g-xl-7, .gx-xl-7 {
+ --bs-gutter-x: 6rem
+ }
+
+ .g-xl-7, .gy-xl-7 {
+ --bs-gutter-y: 6rem
+ }
+}
+
+@media (min-width: 1440px) {
+ .col-xxl {
+ flex: 1 0 0%
+ }
+
+ .row-cols-xxl-auto > * {
+ flex: 0 0 auto;
+ width: auto
+ }
+
+ .row-cols-xxl-1 > * {
+ flex: 0 0 auto;
+ width: 100%
+ }
+
+ .row-cols-xxl-2 > * {
+ flex: 0 0 auto;
+ width: 50%
+ }
+
+ .row-cols-xxl-3 > * {
+ flex: 0 0 auto;
+ width: 33.33333%
+ }
+
+ .row-cols-xxl-4 > * {
+ flex: 0 0 auto;
+ width: 25%
+ }
+
+ .row-cols-xxl-5 > * {
+ flex: 0 0 auto;
+ width: 20%
+ }
+
+ .row-cols-xxl-6 > * {
+ flex: 0 0 auto;
+ width: 16.66667%
+ }
+
+ .col-xxl-auto {
+ flex: 0 0 auto;
+ width: auto
+ }
+
+ .col-xxl-1 {
+ flex: 0 0 auto;
+ width: 8.33333%
+ }
+
+ .col-xxl-2 {
+ flex: 0 0 auto;
+ width: 16.66667%
+ }
+
+ .col-xxl-3 {
+ flex: 0 0 auto;
+ width: 25%
+ }
+
+ .col-xxl-4 {
+ flex: 0 0 auto;
+ width: 33.33333%
+ }
+
+ .col-xxl-5 {
+ flex: 0 0 auto;
+ width: 41.66667%
+ }
+
+ .col-xxl-6 {
+ flex: 0 0 auto;
+ width: 50%
+ }
+
+ .col-xxl-7 {
+ flex: 0 0 auto;
+ width: 58.33333%
+ }
+
+ .col-xxl-8 {
+ flex: 0 0 auto;
+ width: 66.66667%
+ }
+
+ .col-xxl-9 {
+ flex: 0 0 auto;
+ width: 75%
+ }
+
+ .col-xxl-10 {
+ flex: 0 0 auto;
+ width: 83.33333%
+ }
+
+ .col-xxl-11 {
+ flex: 0 0 auto;
+ width: 91.66667%
+ }
+
+ .col-xxl-12 {
+ flex: 0 0 auto;
+ width: 100%
+ }
+
+ .offset-xxl-0 {
+ margin-left: 0
+ }
+
+ .offset-xxl-1 {
+ margin-left: 8.33333%
+ }
+
+ .offset-xxl-2 {
+ margin-left: 16.66667%
+ }
+
+ .offset-xxl-3 {
+ margin-left: 25%
+ }
+
+ .offset-xxl-4 {
+ margin-left: 33.33333%
+ }
+
+ .offset-xxl-5 {
+ margin-left: 41.66667%
+ }
+
+ .offset-xxl-6 {
+ margin-left: 50%
+ }
+
+ .offset-xxl-7 {
+ margin-left: 58.33333%
+ }
+
+ .offset-xxl-8 {
+ margin-left: 66.66667%
+ }
+
+ .offset-xxl-9 {
+ margin-left: 75%
+ }
+
+ .offset-xxl-10 {
+ margin-left: 83.33333%
+ }
+
+ .offset-xxl-11 {
+ margin-left: 91.66667%
+ }
+
+ .g-xxl-0, .gx-xxl-0 {
+ --bs-gutter-x: 0
+ }
+
+ .g-xxl-0, .gy-xxl-0 {
+ --bs-gutter-y: 0
+ }
+
+ .g-xxl-1, .gx-xxl-1 {
+ --bs-gutter-x: .25rem
+ }
+
+ .g-xxl-1, .gy-xxl-1 {
+ --bs-gutter-y: .25rem
+ }
+
+ .g-xxl-2, .gx-xxl-2 {
+ --bs-gutter-x: .5rem
+ }
+
+ .g-xxl-2, .gy-xxl-2 {
+ --bs-gutter-y: .5rem
+ }
+
+ .g-xxl-3, .gx-xxl-3 {
+ --bs-gutter-x: 1rem
+ }
+
+ .g-xxl-3, .gy-xxl-3 {
+ --bs-gutter-y: 1rem
+ }
+
+ .g-xxl-4, .gx-xxl-4 {
+ --bs-gutter-x: 1.5rem
+ }
+
+ .g-xxl-4, .gy-xxl-4 {
+ --bs-gutter-y: 1.5rem
+ }
+
+ .g-xxl-5, .gx-xxl-5 {
+ --bs-gutter-x: 3rem
+ }
+
+ .g-xxl-5, .gy-xxl-5 {
+ --bs-gutter-y: 3rem
+ }
+
+ .g-xxl-6, .gx-xxl-6 {
+ --bs-gutter-x: 4.5rem
+ }
+
+ .g-xxl-6, .gy-xxl-6 {
+ --bs-gutter-y: 4.5rem
+ }
+
+ .g-xxl-7, .gx-xxl-7 {
+ --bs-gutter-x: 6rem
+ }
+
+ .g-xxl-7, .gy-xxl-7 {
+ --bs-gutter-y: 6rem
+ }
+}
+
+.table {
+ --bs-table-bg: transparent;
+ --bs-table-accent-bg: transparent;
+ --bs-table-striped-color: #495057;
+ --bs-table-striped-bg: #f8f9fa;
+ --bs-table-active-color: #495057;
+ --bs-table-active-bg: rgba(0, 0, 0, 0.1);
+ --bs-table-hover-color: #495057;
+ --bs-table-hover-bg: rgba(0, 0, 0, 0.0375);
+ width: 100%;
+ margin-bottom: 1rem;
+ color: #495057;
+ vertical-align: top;
+ border-color: #dee2e6
+}
+
+.table > :not(caption) > * > * {
+ padding: .75rem;
+ background-color: var(--bs-table-bg);
+ background-image: linear-gradient(var(--bs-table-accent-bg), var(--bs-table-accent-bg));
+ border-bottom-width: 1px
+}
+
+.table > tbody {
+ vertical-align: inherit
+}
+
+.table > thead {
+ vertical-align: bottom
+}
+
+.table > :not(:last-child) > :last-child > * {
+ border-bottom-color: initial
+}
+
+.caption-top {
+ caption-side: top
+}
+
+.table-sm > :not(caption) > * > * {
+ padding: .3rem
+}
+
+.table-bordered > :not(caption) > * {
+ border-width: 1px 0
+}
+
+.table-bordered > :not(caption) > * > * {
+ border-width: 0 1px
+}
+
+.table-borderless > :not(caption) > * > * {
+ border-bottom-width: 0
+}
+
+.table-striped > tbody > tr:nth-of-type(odd) {
+ --bs-table-accent-bg: var(--bs-table-striped-bg);
+ color: var(--bs-table-striped-color)
+}
+
+.table-active {
+ --bs-table-accent-bg: var(--bs-table-active-bg);
+ color: var(--bs-table-active-color)
+}
+
+.table-hover > tbody > tr:hover {
+ --bs-table-accent-bg: var(--bs-table-hover-bg);
+ color: var(--bs-table-hover-color)
+}
+
+.table-primary {
+ --bs-table-bg: #c8dbf5;
+ --bs-table-striped-bg: #bed0e9;
+ --bs-table-striped-color: #000;
+ --bs-table-active-bg: #b4c5dd;
+ --bs-table-active-color: #000;
+ --bs-table-hover-bg: #b9cbe3;
+ --bs-table-hover-color: #000;
+ color: #000;
+ border-color: #b4c5dd
+}
+
+.table-secondary {
+ --bs-table-bg: #d6d8db;
+ --bs-table-striped-bg: #cbcdd0;
+ --bs-table-striped-color: #000;
+ --bs-table-active-bg: #c1c2c5;
+ --bs-table-active-color: #000;
+ --bs-table-hover-bg: #c6c8cb;
+ --bs-table-hover-color: #000;
+ color: #000;
+ border-color: #c1c2c5
+}
+
+.table-success {
+ --bs-table-bg: #c3e6cb;
+ --bs-table-striped-bg: #b9dbc1;
+ --bs-table-striped-color: #000;
+ --bs-table-active-bg: #b0cfb7;
+ --bs-table-active-color: #000;
+ --bs-table-hover-bg: #b4d5bc;
+ --bs-table-hover-color: #000;
+ color: #000;
+ border-color: #b0cfb7
+}
+
+.table-info {
+ --bs-table-bg: #bee5eb;
+ --bs-table-striped-bg: #b5dadf;
+ --bs-table-striped-color: #000;
+ --bs-table-active-bg: #abced4;
+ --bs-table-active-color: #000;
+ --bs-table-hover-bg: #b0d4d9;
+ --bs-table-hover-color: #000;
+ color: #000;
+ border-color: #abced4
+}
+
+.table-warning {
+ --bs-table-bg: #ffeeba;
+ --bs-table-striped-bg: #f2e2b1;
+ --bs-table-striped-color: #000;
+ --bs-table-active-bg: #e6d6a7;
+ --bs-table-active-color: #000;
+ --bs-table-hover-bg: #ecdcac;
+ --bs-table-hover-color: #000;
+ color: #000;
+ border-color: #e6d6a7
+}
+
+.table-danger {
+ --bs-table-bg: #f5c6cb;
+ --bs-table-striped-bg: #e9bcc1;
+ --bs-table-striped-color: #000;
+ --bs-table-active-bg: #ddb2b7;
+ --bs-table-active-color: #000;
+ --bs-table-hover-bg: #e3b7bc;
+ --bs-table-hover-color: #000;
+ color: #000;
+ border-color: #ddb2b7
+}
+
+.table-light {
+ --bs-table-bg: #f8f9fa;
+ --bs-table-striped-bg: #ecedee;
+ --bs-table-striped-color: #000;
+ --bs-table-active-bg: #dfe0e1;
+ --bs-table-active-color: #000;
+ --bs-table-hover-bg: #e5e6e7;
+ --bs-table-hover-color: #000;
+ color: #000;
+ border-color: #dfe0e1
+}
+
+.table-dark {
+ --bs-table-bg: #212529;
+ --bs-table-striped-bg: #2c3034;
+ --bs-table-striped-color: #fff;
+ --bs-table-active-bg: #373b3e;
+ --bs-table-active-color: #fff;
+ --bs-table-hover-bg: #323539;
+ --bs-table-hover-color: #fff;
+ color: #fff;
+ border-color: #373b3e
+}
+
+.table-responsive {
+ overflow-x: auto;
+ -webkit-overflow-scrolling: touch
+}
+
+@media (max-width: 575.98px) {
+ .table-responsive-sm {
+ overflow-x: auto;
+ -webkit-overflow-scrolling: touch
+ }
+}
+
+@media (max-width: 767.98px) {
+ .table-responsive-md {
+ overflow-x: auto;
+ -webkit-overflow-scrolling: touch
+ }
+}
+
+@media (max-width: 991.98px) {
+ .table-responsive-lg {
+ overflow-x: auto;
+ -webkit-overflow-scrolling: touch
+ }
+}
+
+@media (max-width: 1199.98px) {
+ .table-responsive-xl {
+ overflow-x: auto;
+ -webkit-overflow-scrolling: touch
+ }
+}
+
+@media (max-width: 1439.98px) {
+ .table-responsive-xxl {
+ overflow-x: auto;
+ -webkit-overflow-scrolling: touch
+ }
+}
+
+.form-label {
+ margin-bottom: .5rem
+}
+
+.col-form-label {
+ padding-top: calc(.25rem + 1px);
+ padding-bottom: calc(.25rem + 1px);
+ margin-bottom: 0;
+ font-size: inherit;
+ line-height: 1.5
+}
+
+.col-form-label-lg {
+ padding-top: calc(.35rem + 1px);
+ padding-bottom: calc(.35rem + 1px);
+ font-size: .925rem
+}
+
+.col-form-label-sm {
+ padding-top: calc(.15rem + 1px);
+ padding-bottom: calc(.15rem + 1px);
+ font-size: .75rem
+}
+
+.form-text {
+ margin-top: .25rem;
+ font-size: 80%;
+ color: #6c757d
+}
+
+.form-control {
+ display: block;
+ width: 100%;
+ min-height: calc(1.8125rem + 2px);
+ padding: .25rem .7rem;
+ font-size: .875rem;
+ font-weight: 400;
+ line-height: 1.5;
+ color: #495057;
+ background-color: #fff;
+ background-clip: padding-box;
+ border: 1px solid #ced4da;
+ -webkit-appearance: none;
+ appearance: none;
+ border-radius: .2rem;
+ transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out
+}
+
+@media (prefers-reduced-motion: reduce) {
+ .form-control {
+ transition: none
+ }
+}
+
+.form-control:focus {
+ color: #495057;
+ background-color: #fff;
+ border-color: #a8c5f0;
+ outline: 0;
+ box-shadow: 0 0 0 .2rem rgba(59, 125, 221, .25)
+}
+
+.form-control::-webkit-input-placeholder {
+ color: #6c757d;
+ opacity: 1
+}
+
+.form-control::-ms-input-placeholder {
+ color: #6c757d;
+ opacity: 1
+}
+
+.form-control::placeholder {
+ color: #6c757d;
+ opacity: 1
+}
+
+.form-control:disabled, .form-control[readonly] {
+ background-color: #e9ecef;
+ opacity: 1
+}
+
+.form-control-plaintext {
+ display: block;
+ width: 100%;
+ padding: .25rem 0;
+ margin-bottom: 0;
+ line-height: 1.5;
+ color: #495057;
+ background-color: initial;
+ border: solid transparent;
+ border-width: 1px 0
+}
+
+.form-control-plaintext.form-control-lg, .form-control-plaintext.form-control-sm {
+ padding-right: 0;
+ padding-left: 0
+}
+
+.form-control-sm {
+ min-height: calc(1.425rem + 2px);
+ padding: .15rem .5rem;
+ font-size: .75rem;
+ border-radius: .1rem
+}
+
+.form-control-lg {
+ min-height: calc(2.0875rem + 2px);
+ padding: .35rem 1rem;
+ font-size: .925rem;
+ border-radius: .3rem
+}
+
+.form-control-color {
+ max-width: 3rem;
+ padding: .25rem
+}
+
+.form-control-color::-moz-color-swatch {
+ border-radius: .2rem
+}
+
+.form-control-color::-webkit-color-swatch {
+ border-radius: .2rem
+}
+
+.form-select {
+ display: block;
+ width: 100%;
+ height: calc(1.8125rem + 2px);
+ padding: .25rem 1.7rem .25rem .7rem;
+ font-size: .875rem;
+ font-weight: 400;
+ line-height: 1.5;
+ color: #495057;
+ vertical-align: middle;
+ background-color: #fff;
+ background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3E%3C/svg%3E");
+ background-repeat: no-repeat;
+ background-position: right .7rem center;
+ background-size: 16px 12px;
+ border: 1px solid #ced4da;
+ border-radius: .2rem;
+ -webkit-appearance: none;
+ appearance: none
+}
+
+.form-select:focus {
+ border-color: #a8c5f0;
+ outline: 0;
+ box-shadow: 0 0 0 .2rem rgba(59, 125, 221, .25)
+}
+
+.form-select:focus::-ms-value {
+ color: #495057;
+ background-color: #fff
+}
+
+.form-select[multiple], .form-select[size]:not([size="1"]) {
+ height: auto;
+ padding-right: .7rem;
+ background-image: none
+}
+
+.form-select:disabled {
+ color: #6c757d;
+ background-color: #e9ecef
+}
+
+.form-select:-moz-focusring {
+ color: transparent;
+ text-shadow: 0 0 0 #495057
+}
+
+.form-select-sm {
+ height: calc(1.425rem + 2px);
+ padding-top: .15rem;
+ padding-bottom: .15rem;
+ padding-left: .5rem;
+ font-size: .75rem
+}
+
+.form-select-lg {
+ height: calc(2.0875rem + 2px);
+ padding-top: .35rem;
+ padding-bottom: .35rem;
+ padding-left: 1rem;
+ font-size: .925rem
+}
+
+.form-check {
+ display: block;
+ min-height: 1.3125rem;
+ padding-left: 1.5em;
+ margin-bottom: .125rem
+}
+
+.form-check .form-check-input {
+ float: left;
+ margin-left: -1.5em
+}
+
+.form-check-input {
+ width: 1em;
+ height: 1em;
+ margin-top: .25em;
+ vertical-align: top;
+ background-color: #f7f7fc;
+ background-repeat: no-repeat;
+ background-position: 50%;
+ background-size: contain;
+ border: 1px solid rgba(0, 0, 0, .25);
+ -webkit-appearance: none;
+ appearance: none;
+ -webkit-print-color-adjust: exact;
+ color-adjust: exact;
+ transition: background-color .15s ease-in-out, background-position .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out
+}
+
+@media (prefers-reduced-motion: reduce) {
+ .form-check-input {
+ transition: none
+ }
+}
+
+.form-check-input[type=checkbox] {
+ border-radius: .25em
+}
+
+.form-check-input[type=radio] {
+ border-radius: 50%
+}
+
+.form-check-input:active {
+ filter: brightness(90%)
+}
+
+.form-check-input:focus {
+ border-color: #a8c5f0;
+ outline: 0;
+ box-shadow: 0 0 0 .2rem rgba(59, 125, 221, .25)
+}
+
+.form-check-input:checked {
+ background-color: #3b7ddd;
+ border-color: #3b7ddd
+}
+
+.form-check-input:checked[type=checkbox] {
+ background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10l3 3 6-6'/%3E%3C/svg%3E")
+}
+
+.form-check-input:checked[type=radio] {
+ background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='2' fill='%23fff'/%3E%3C/svg%3E")
+}
+
+.form-check-input[type=checkbox]:indeterminate {
+ background-color: #3b7ddd;
+ border-color: #3b7ddd;
+ background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3E%3C/svg%3E")
+}
+
+.form-check-input:disabled {
+ pointer-events: none;
+ filter: none;
+ opacity: .5
+}
+
+.form-check-input:disabled ~ .form-check-label, .form-check-input[disabled] ~ .form-check-label {
+ opacity: .5
+}
+
+.form-switch {
+ padding-left: 2.5em
+}
+
+.form-switch .form-check-input {
+ width: 2em;
+ margin-left: -2.5em;
+ background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='rgba(0,0,0,0.25)'/%3E%3C/svg%3E");
+ background-position: 0;
+ border-radius: 2em
+}
+
+.form-switch .form-check-input:focus {
+ background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23a8c5f0'/%3E%3C/svg%3E")
+}
+
+.form-switch .form-check-input:checked {
+ background-position: 100%;
+ background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E")
+}
+
+.form-check-inline {
+ display: inline-block;
+ margin-right: 1rem
+}
+
+.btn-check {
+ position: absolute;
+ clip: rect(0, 0, 0, 0);
+ pointer-events: none
+}
+
+.form-file {
+ --bs-form-file-height: calc(1.8125rem + 2px);
+ position: relative
+}
+
+.form-file-input {
+ position: relative;
+ z-index: 2;
+ width: 100%;
+ height: var(--bs-form-file-height);
+ margin: 0;
+ opacity: 0
+}
+
+.form-file-input:focus-within ~ .form-file-label {
+ border-color: #a8c5f0;
+ box-shadow: 0 0 0 .2rem rgba(59, 125, 221, .25)
+}
+
+.form-file-input:disabled ~ .form-file-label .form-file-text, .form-file-input[disabled] ~ .form-file-label .form-file-text {
+ background-color: #e9ecef
+}
+
+.form-file-label {
+ position: absolute;
+ top: 0;
+ right: 0;
+ left: 0;
+ z-index: 1;
+ display: flex;
+ height: var(--bs-form-file-height);
+ border-color: #ced4da;
+ border-radius: .2rem
+}
+
+.form-file-text {
+ flex-grow: 1;
+ overflow: hidden;
+ font-weight: 400;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ background-color: #fff;
+ border: 1px solid;
+ border-color: inherit;
+ border-top-left-radius: inherit;
+ border-bottom-left-radius: inherit
+}
+
+.form-file-button, .form-file-text {
+ display: block;
+ padding: .25rem .7rem;
+ line-height: 1.5;
+ color: #495057
+}
+
+.form-file-button {
+ flex-shrink: 0;
+ margin-left: -1px;
+ background-color: #e9ecef;
+ border: 1px solid;
+ border-color: inherit;
+ border-top-right-radius: inherit;
+ border-bottom-right-radius: inherit
+}
+
+.form-file-sm {
+ --bs-form-file-height: calc(1.425rem + 2px);
+ font-size: .75rem
+}
+
+.form-file-sm .form-file-button, .form-file-sm .form-file-text {
+ padding: .15rem .5rem
+}
+
+.form-file-lg {
+ --bs-form-file-height: calc(2.0875rem + 2px);
+ font-size: .925rem
+}
+
+.form-file-lg .form-file-button, .form-file-lg .form-file-text {
+ padding: .35rem 1rem
+}
+
+.form-range {
+ width: 100%;
+ height: 1.4rem;
+ padding: 0;
+ background-color: initial;
+ -webkit-appearance: none;
+ appearance: none
+}
+
+.form-range:focus {
+ outline: none
+}
+
+.form-range:focus::-webkit-slider-thumb {
+ box-shadow: 0 0 0 1px #f7f7fc, 0 0 0 .2rem rgba(59, 125, 221, .25)
+}
+
+.form-range:focus::-moz-range-thumb {
+ box-shadow: 0 0 0 1px #f7f7fc, 0 0 0 .2rem rgba(59, 125, 221, .25)
+}
+
+.form-range:focus::-ms-thumb {
+ box-shadow: 0 0 0 1px #f7f7fc, 0 0 0 .2rem rgba(59, 125, 221, .25)
+}
+
+.form-range::-moz-focus-outer {
+ border: 0
+}
+
+.form-range::-webkit-slider-thumb {
+ width: 1rem;
+ height: 1rem;
+ margin-top: -.25rem;
+ background-color: #3b7ddd;
+ border: 0;
+ border-radius: 1rem;
+ -webkit-transition: background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out;
+ transition: background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out;
+ -webkit-appearance: none;
+ appearance: none
+}
+
+@media (prefers-reduced-motion: reduce) {
+ .form-range::-webkit-slider-thumb {
+ -webkit-transition: none;
+ transition: none
+ }
+}
+
+.form-range::-webkit-slider-thumb:active {
+ background-color: #d3e2f7
+}
+
+.form-range::-webkit-slider-runnable-track {
+ width: 100%;
+ height: .5rem;
+ color: transparent;
+ cursor: pointer;
+ background-color: #dee2e6;
+ border-color: transparent;
+ border-radius: 1rem
+}
+
+.form-range::-moz-range-thumb {
+ width: 1rem;
+ height: 1rem;
+ background-color: #3b7ddd;
+ border: 0;
+ border-radius: 1rem;
+ -moz-transition: background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out;
+ transition: background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out;
+ appearance: none
+}
+
+@media (prefers-reduced-motion: reduce) {
+ .form-range::-moz-range-thumb {
+ -moz-transition: none;
+ transition: none
+ }
+}
+
+.form-range::-moz-range-thumb:active {
+ background-color: #d3e2f7
+}
+
+.form-range::-moz-range-track {
+ width: 100%;
+ height: .5rem;
+ color: transparent;
+ cursor: pointer;
+ background-color: #dee2e6;
+ border-color: transparent;
+ border-radius: 1rem
+}
+
+.form-range::-ms-thumb {
+ width: 1rem;
+ height: 1rem;
+ margin-top: 0;
+ margin-right: .2rem;
+ margin-left: .2rem;
+ background-color: #3b7ddd;
+ border: 0;
+ border-radius: 1rem;
+ -ms-transition: background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out;
+ transition: background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out;
+ appearance: none
+}
+
+@media (prefers-reduced-motion: reduce) {
+ .form-range::-ms-thumb {
+ -ms-transition: none;
+ transition: none
+ }
+}
+
+.form-range::-ms-thumb:active {
+ background-color: #d3e2f7
+}
+
+.form-range::-ms-track {
+ width: 100%;
+ height: .5rem;
+ color: transparent;
+ cursor: pointer;
+ background-color: initial;
+ border-color: transparent;
+ border-width: .5rem
+}
+
+.form-range::-ms-fill-lower, .form-range::-ms-fill-upper {
+ background-color: #dee2e6;
+ border-radius: 1rem
+}
+
+.form-range::-ms-fill-upper {
+ margin-right: 15px
+}
+
+.form-range:disabled {
+ pointer-events: none
+}
+
+.form-range:disabled::-webkit-slider-thumb {
+ background-color: #adb5bd
+}
+
+.form-range:disabled::-moz-range-thumb {
+ background-color: #adb5bd
+}
+
+.form-range:disabled::-ms-thumb {
+ background-color: #adb5bd
+}
+
+.input-group {
+ position: relative;
+ display: flex;
+ flex-wrap: wrap;
+ align-items: stretch;
+ width: 100%
+}
+
+.input-group > .form-control, .input-group > .form-file, .input-group > .form-select {
+ position: relative;
+ flex: 1 1 auto;
+ width: 1%;
+ min-width: 0
+}
+
+.input-group > .form-control:focus, .input-group > .form-file .form-file-input:focus ~ .form-file-label, .input-group > .form-select:focus {
+ z-index: 3
+}
+
+.input-group > .form-file > .form-file-input:focus {
+ z-index: 4
+}
+
+.input-group > .form-file:not(:last-child) > .form-file-label {
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0
+}
+
+.input-group > .form-file:not(:first-child) > .form-file-label {
+ border-top-left-radius: 0;
+ border-bottom-left-radius: 0
+}
+
+.input-group .btn {
+ position: relative;
+ z-index: 2
+}
+
+.input-group .btn:focus {
+ z-index: 3
+}
+
+.input-group-text {
+ display: flex;
+ align-items: center;
+ padding: .25rem .7rem;
+ font-size: .875rem;
+ font-weight: 400;
+ line-height: 1.5;
+ color: #495057;
+ text-align: center;
+ white-space: nowrap;
+ background-color: #e9ecef;
+ border: 1px solid #ced4da;
+ border-radius: .2rem
+}
+
+.input-group-lg > .form-control {
+ min-height: calc(2.0875rem + 2px)
+}
+
+.input-group-lg > .form-select {
+ height: calc(2.0875rem + 2px)
+}
+
+.input-group-lg > .btn, .input-group-lg > .form-control, .input-group-lg > .form-select, .input-group-lg > .input-group-text {
+ padding: .35rem 1rem;
+ font-size: .925rem;
+ border-radius: .3rem
+}
+
+.input-group-sm > .form-control {
+ min-height: calc(1.425rem + 2px)
+}
+
+.input-group-sm > .form-select {
+ height: calc(1.425rem + 2px)
+}
+
+.input-group-sm > .btn, .input-group-sm > .form-control, .input-group-sm > .form-select, .input-group-sm > .input-group-text {
+ padding: .15rem .5rem;
+ font-size: .75rem;
+ border-radius: .1rem
+}
+
+.input-group-lg > .form-select, .input-group-sm > .form-select {
+ padding-right: 1.7rem
+}
+
+.input-group > .dropdown-toggle:nth-last-child(n+3), .input-group > :not(:last-child):not(.dropdown-toggle):not(.dropdown-menu) {
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0
+}
+
+.input-group > :not(:first-child):not(.dropdown-menu) {
+ margin-left: -1px;
+ border-top-left-radius: 0;
+ border-bottom-left-radius: 0
+}
+
+.valid-feedback {
+ display: none;
+ width: 100%;
+ margin-top: .25rem;
+ font-size: 80%;
+ color: #28a745
+}
+
+.valid-tooltip {
+ position: absolute;
+ top: 100%;
+ z-index: 5;
+ display: none;
+ max-width: 100%;
+ padding: .25rem .5rem;
+ margin-top: .1rem;
+ font-size: .75rem;
+ color: #000;
+ background-color: rgba(40, 167, 69, .9);
+ border-radius: .2rem
+}
+
+.is-valid ~ .valid-feedback, .is-valid ~ .valid-tooltip, .was-validated :valid ~ .valid-feedback, .was-validated :valid ~ .valid-tooltip {
+ display: block
+}
+
+.form-control.is-valid, .was-validated .form-control:valid {
+ border-color: #28a745
+}
+
+.form-control.is-valid:focus, .was-validated .form-control:valid:focus {
+ border-color: #28a745;
+ box-shadow: 0 0 0 .2rem rgba(40, 167, 69, .25)
+}
+
+.form-select.is-valid, .was-validated .form-select:valid {
+ border-color: #28a745
+}
+
+.form-select.is-valid:focus, .was-validated .form-select:valid:focus {
+ border-color: #28a745;
+ box-shadow: 0 0 0 .2rem rgba(40, 167, 69, .25)
+}
+
+.form-check-input.is-valid, .was-validated .form-check-input:valid {
+ border-color: #28a745
+}
+
+.form-check-input.is-valid:checked, .was-validated .form-check-input:valid:checked {
+ background-color: #28a745
+}
+
+.form-check-input.is-valid:focus, .was-validated .form-check-input:valid:focus {
+ box-shadow: 0 0 0 .2rem rgba(40, 167, 69, .25)
+}
+
+.form-check-input.is-valid ~ .form-check-label, .was-validated .form-check-input:valid ~ .form-check-label {
+ color: #28a745
+}
+
+.form-check-inline .form-check-input ~ .valid-feedback {
+ margin-left: .5em
+}
+
+.form-file-input.is-valid ~ .form-file-label, .was-validated .form-file-input:valid ~ .form-file-label {
+ border-color: #28a745
+}
+
+.form-file-input.is-valid:focus ~ .form-file-label, .was-validated .form-file-input:valid:focus ~ .form-file-label {
+ border-color: #28a745;
+ box-shadow: 0 0 0 .2rem rgba(40, 167, 69, .25)
+}
+
+.invalid-feedback {
+ display: none;
+ width: 100%;
+ margin-top: .25rem;
+ font-size: 80%;
+ color: #dc3545
+}
+
+.invalid-tooltip {
+ position: absolute;
+ top: 100%;
+ z-index: 5;
+ display: none;
+ max-width: 100%;
+ padding: .25rem .5rem;
+ margin-top: .1rem;
+ font-size: .75rem;
+ color: #fff;
+ background-color: rgba(220, 53, 69, .9);
+ border-radius: .2rem
+}
+
+.is-invalid ~ .invalid-feedback, .is-invalid ~ .invalid-tooltip, .was-validated :invalid ~ .invalid-feedback, .was-validated :invalid ~ .invalid-tooltip {
+ display: block
+}
+
+.form-control.is-invalid, .was-validated .form-control:invalid {
+ border-color: #dc3545
+}
+
+.form-control.is-invalid:focus, .was-validated .form-control:invalid:focus {
+ border-color: #dc3545;
+ box-shadow: 0 0 0 .2rem rgba(220, 53, 69, .25)
+}
+
+.form-select.is-invalid, .was-validated .form-select:invalid {
+ border-color: #dc3545
+}
+
+.form-select.is-invalid:focus, .was-validated .form-select:invalid:focus {
+ border-color: #dc3545;
+ box-shadow: 0 0 0 .2rem rgba(220, 53, 69, .25)
+}
+
+.form-check-input.is-invalid, .was-validated .form-check-input:invalid {
+ border-color: #dc3545
+}
+
+.form-check-input.is-invalid:checked, .was-validated .form-check-input:invalid:checked {
+ background-color: #dc3545
+}
+
+.form-check-input.is-invalid:focus, .was-validated .form-check-input:invalid:focus {
+ box-shadow: 0 0 0 .2rem rgba(220, 53, 69, .25)
+}
+
+.form-check-input.is-invalid ~ .form-check-label, .was-validated .form-check-input:invalid ~ .form-check-label {
+ color: #dc3545
+}
+
+.form-check-inline .form-check-input ~ .invalid-feedback {
+ margin-left: .5em
+}
+
+.form-file-input.is-invalid ~ .form-file-label, .was-validated .form-file-input:invalid ~ .form-file-label {
+ border-color: #dc3545
+}
+
+.form-file-input.is-invalid:focus ~ .form-file-label, .was-validated .form-file-input:invalid:focus ~ .form-file-label {
+ border-color: #dc3545;
+ box-shadow: 0 0 0 .2rem rgba(220, 53, 69, .25)
+}
+
+.btn {
+ display: inline-block;
+ font-weight: 400;
+ line-height: 1.5;
+ color: #495057;
+ text-align: center;
+ vertical-align: middle;
+ cursor: pointer;
+ -webkit-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ background-color: initial;
+ border: 1px solid transparent;
+ padding: .25rem .7rem;
+ font-size: .875rem;
+ border-radius: .2rem;
+ transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out
+}
+
+@media (prefers-reduced-motion: reduce) {
+ .btn {
+ transition: none
+ }
+}
+
+.btn:hover {
+ color: #495057;
+ text-decoration: none
+}
+
+.btn-check:focus + .btn, .btn:focus {
+ outline: 0;
+ box-shadow: 0 0 0 .2rem rgba(59, 125, 221, .25)
+}
+
+.btn.disabled, .btn:disabled, fieldset:disabled .btn {
+ pointer-events: none;
+ opacity: .65
+}
+
+.btn-primary {
+ color: #000;
+ background-color: #3b7ddd;
+ border-color: #3b7ddd
+}
+
+.btn-check:focus + .btn-primary, .btn-primary:focus, .btn-primary:hover {
+ color: #000;
+ background-color: #5c93e3;
+ border-color: #518be1
+}
+
+.btn-check:focus + .btn-primary, .btn-primary:focus {
+ box-shadow: 0 0 0 .2rem rgba(50, 106, 188, .5)
+}
+
+.btn-check:active + .btn-primary, .btn-check:checked + .btn-primary, .btn-primary.active, .btn-primary:active, .show > .btn-primary.dropdown-toggle {
+ color: #000;
+ background-color: #669ae5;
+ border-color: #518be1
+}
+
+.btn-check:active + .btn-primary:focus, .btn-check:checked + .btn-primary:focus, .btn-primary.active:focus, .btn-primary:active:focus, .show > .btn-primary.dropdown-toggle:focus {
+ box-shadow: 0 0 0 .2rem rgba(50, 106, 188, .5)
+}
+
+.btn-primary.disabled, .btn-primary:disabled {
+ color: #000;
+ background-color: #3b7ddd;
+ border-color: #3b7ddd
+}
+
+.btn-secondary {
+ color: #fff;
+ background-color: #6c757d;
+ border-color: #6c757d
+}
+
+.btn-check:focus + .btn-secondary, .btn-secondary:focus, .btn-secondary:hover {
+ color: #fff;
+ background-color: #5a6268;
+ border-color: #545b62
+}
+
+.btn-check:focus + .btn-secondary, .btn-secondary:focus {
+ box-shadow: 0 0 0 .2rem rgba(130, 138, 145, .5)
+}
+
+.btn-check:active + .btn-secondary, .btn-check:checked + .btn-secondary, .btn-secondary.active, .btn-secondary:active, .show > .btn-secondary.dropdown-toggle {
+ color: #fff;
+ background-color: #545b62;
+ border-color: #4e555b
+}
+
+.btn-check:active + .btn-secondary:focus, .btn-check:checked + .btn-secondary:focus, .btn-secondary.active:focus, .btn-secondary:active:focus, .show > .btn-secondary.dropdown-toggle:focus {
+ box-shadow: 0 0 0 .2rem rgba(130, 138, 145, .5)
+}
+
+.btn-secondary.disabled, .btn-secondary:disabled {
+ color: #fff;
+ background-color: #6c757d;
+ border-color: #6c757d
+}
+
+.btn-success {
+ color: #000;
+ background-color: #28a745;
+ border-color: #28a745
+}
+
+.btn-check:focus + .btn-success, .btn-success:focus, .btn-success:hover {
+ color: #000;
+ background-color: #2fc652;
+ border-color: #2dbc4e
+}
+
+.btn-check:focus + .btn-success, .btn-success:focus {
+ box-shadow: 0 0 0 .2rem rgba(34, 142, 59, .5)
+}
+
+.btn-check:active + .btn-success, .btn-check:checked + .btn-success, .btn-success.active, .btn-success:active, .show > .btn-success.dropdown-toggle {
+ color: #000;
+ background-color: #34ce57;
+ border-color: #2dbc4e
+}
+
+.btn-check:active + .btn-success:focus, .btn-check:checked + .btn-success:focus, .btn-success.active:focus, .btn-success:active:focus, .show > .btn-success.dropdown-toggle:focus {
+ box-shadow: 0 0 0 .2rem rgba(34, 142, 59, .5)
+}
+
+.btn-success.disabled, .btn-success:disabled {
+ color: #000;
+ background-color: #28a745;
+ border-color: #28a745
+}
+
+.btn-info {
+ color: #000;
+ background-color: #17a2b8;
+ border-color: #17a2b8
+}
+
+.btn-check:focus + .btn-info, .btn-info:focus, .btn-info:hover {
+ color: #000;
+ background-color: #1bc0da;
+ border-color: #1ab6cf
+}
+
+.btn-check:focus + .btn-info, .btn-info:focus {
+ box-shadow: 0 0 0 .2rem rgba(20, 138, 156, .5)
+}
+
+.btn-check:active + .btn-info, .btn-check:checked + .btn-info, .btn-info.active, .btn-info:active, .show > .btn-info.dropdown-toggle {
+ color: #000;
+ background-color: #1fc8e3;
+ border-color: #1ab6cf
+}
+
+.btn-check:active + .btn-info:focus, .btn-check:checked + .btn-info:focus, .btn-info.active:focus, .btn-info:active:focus, .show > .btn-info.dropdown-toggle:focus {
+ box-shadow: 0 0 0 .2rem rgba(20, 138, 156, .5)
+}
+
+.btn-info.disabled, .btn-info:disabled {
+ color: #000;
+ background-color: #17a2b8;
+ border-color: #17a2b8
+}
+
+.btn-warning {
+ color: #000;
+ background-color: #ffc107;
+ border-color: #ffc107
+}
+
+.btn-check:focus + .btn-warning, .btn-warning:focus, .btn-warning:hover {
+ color: #000;
+ background-color: #ffcb2d;
+ border-color: #ffc721
+}
+
+.btn-check:focus + .btn-warning, .btn-warning:focus {
+ box-shadow: 0 0 0 .2rem rgba(217, 164, 6, .5)
+}
+
+.btn-check:active + .btn-warning, .btn-check:checked + .btn-warning, .btn-warning.active, .btn-warning:active, .show > .btn-warning.dropdown-toggle {
+ color: #000;
+ background-color: #ffce3a;
+ border-color: #ffc721
+}
+
+.btn-check:active + .btn-warning:focus, .btn-check:checked + .btn-warning:focus, .btn-warning.active:focus, .btn-warning:active:focus, .show > .btn-warning.dropdown-toggle:focus {
+ box-shadow: 0 0 0 .2rem rgba(217, 164, 6, .5)
+}
+
+.btn-warning.disabled, .btn-warning:disabled {
+ color: #000;
+ background-color: #ffc107;
+ border-color: #ffc107
+}
+
+.btn-danger {
+ color: #fff;
+ background-color: #dc3545;
+ border-color: #dc3545
+}
+
+.btn-check:focus + .btn-danger, .btn-danger:focus, .btn-danger:hover {
+ color: #fff;
+ background-color: #c82333;
+ border-color: #bd2130
+}
+
+.btn-check:focus + .btn-danger, .btn-danger:focus {
+ box-shadow: 0 0 0 .2rem rgba(225, 83, 97, .5)
+}
+
+.btn-check:active + .btn-danger, .btn-check:checked + .btn-danger, .btn-danger.active, .btn-danger:active, .show > .btn-danger.dropdown-toggle {
+ color: #fff;
+ background-color: #bd2130;
+ border-color: #b21f2d
+}
+
+.btn-check:active + .btn-danger:focus, .btn-check:checked + .btn-danger:focus, .btn-danger.active:focus, .btn-danger:active:focus, .show > .btn-danger.dropdown-toggle:focus {
+ box-shadow: 0 0 0 .2rem rgba(225, 83, 97, .5)
+}
+
+.btn-danger.disabled, .btn-danger:disabled {
+ color: #fff;
+ background-color: #dc3545;
+ border-color: #dc3545
+}
+
+.btn-light {
+ color: #000;
+ background-color: #f8f9fa;
+ border-color: #f8f9fa
+}
+
+.btn-check:focus + .btn-light, .btn-light:focus, .btn-light:hover {
+ color: #000;
+ background-color: #fff;
+ border-color: #fff
+}
+
+.btn-check:focus + .btn-light, .btn-light:focus {
+ box-shadow: 0 0 0 .2rem rgba(211, 212, 213, .5)
+}
+
+.btn-check:active + .btn-light, .btn-check:checked + .btn-light, .btn-light.active, .btn-light:active, .show > .btn-light.dropdown-toggle {
+ color: #000;
+ background-color: #fff;
+ border-color: #fff
+}
+
+.btn-check:active + .btn-light:focus, .btn-check:checked + .btn-light:focus, .btn-light.active:focus, .btn-light:active:focus, .show > .btn-light.dropdown-toggle:focus {
+ box-shadow: 0 0 0 .2rem rgba(211, 212, 213, .5)
+}
+
+.btn-light.disabled, .btn-light:disabled {
+ color: #000;
+ background-color: #f8f9fa;
+ border-color: #f8f9fa
+}
+
+.btn-dark {
+ color: #fff;
+ background-color: #212529;
+ border-color: #212529
+}
+
+.btn-check:focus + .btn-dark, .btn-dark:focus, .btn-dark:hover {
+ color: #fff;
+ background-color: #101214;
+ border-color: #0a0c0d
+}
+
+.btn-check:focus + .btn-dark, .btn-dark:focus {
+ box-shadow: 0 0 0 .2rem rgba(66, 70, 73, .5)
+}
+
+.btn-check:active + .btn-dark, .btn-check:checked + .btn-dark, .btn-dark.active, .btn-dark:active, .show > .btn-dark.dropdown-toggle {
+ color: #fff;
+ background-color: #0a0c0d;
+ border-color: #050506
+}
+
+.btn-check:active + .btn-dark:focus, .btn-check:checked + .btn-dark:focus, .btn-dark.active:focus, .btn-dark:active:focus, .show > .btn-dark.dropdown-toggle:focus {
+ box-shadow: 0 0 0 .2rem rgba(66, 70, 73, .5)
+}
+
+.btn-dark.disabled, .btn-dark:disabled {
+ color: #fff;
+ background-color: #212529;
+ border-color: #212529
+}
+
+.btn-outline-primary {
+ color: #3b7ddd;
+ border-color: #3b7ddd
+}
+
+.btn-outline-primary:hover {
+ color: #000;
+ background-color: #3b7ddd;
+ border-color: #3b7ddd
+}
+
+.btn-check:focus + .btn-outline-primary, .btn-outline-primary:focus {
+ box-shadow: 0 0 0 .2rem rgba(59, 125, 221, .5)
+}
+
+.btn-check:active + .btn-outline-primary, .btn-check:checked + .btn-outline-primary, .btn-outline-primary.active, .btn-outline-primary.dropdown-toggle.show, .btn-outline-primary:active {
+ color: #000;
+ background-color: #3b7ddd;
+ border-color: #3b7ddd
+}
+
+.btn-check:active + .btn-outline-primary:focus, .btn-check:checked + .btn-outline-primary:focus, .btn-outline-primary.active:focus, .btn-outline-primary.dropdown-toggle.show:focus, .btn-outline-primary:active:focus {
+ box-shadow: 0 0 0 .2rem rgba(59, 125, 221, .5)
+}
+
+.btn-outline-primary.disabled, .btn-outline-primary:disabled {
+ color: #3b7ddd;
+ background-color: initial
+}
+
+.btn-outline-secondary {
+ color: #6c757d;
+ border-color: #6c757d
+}
+
+.btn-outline-secondary:hover {
+ color: #fff;
+ background-color: #6c757d;
+ border-color: #6c757d
+}
+
+.btn-check:focus + .btn-outline-secondary, .btn-outline-secondary:focus {
+ box-shadow: 0 0 0 .2rem rgba(108, 117, 125, .5)
+}
+
+.btn-check:active + .btn-outline-secondary, .btn-check:checked + .btn-outline-secondary, .btn-outline-secondary.active, .btn-outline-secondary.dropdown-toggle.show, .btn-outline-secondary:active {
+ color: #fff;
+ background-color: #6c757d;
+ border-color: #6c757d
+}
+
+.btn-check:active + .btn-outline-secondary:focus, .btn-check:checked + .btn-outline-secondary:focus, .btn-outline-secondary.active:focus, .btn-outline-secondary.dropdown-toggle.show:focus, .btn-outline-secondary:active:focus {
+ box-shadow: 0 0 0 .2rem rgba(108, 117, 125, .5)
+}
+
+.btn-outline-secondary.disabled, .btn-outline-secondary:disabled {
+ color: #6c757d;
+ background-color: initial
+}
+
+.btn-outline-success {
+ color: #28a745;
+ border-color: #28a745
+}
+
+.btn-outline-success:hover {
+ color: #000;
+ background-color: #28a745;
+ border-color: #28a745
+}
+
+.btn-check:focus + .btn-outline-success, .btn-outline-success:focus {
+ box-shadow: 0 0 0 .2rem rgba(40, 167, 69, .5)
+}
+
+.btn-check:active + .btn-outline-success, .btn-check:checked + .btn-outline-success, .btn-outline-success.active, .btn-outline-success.dropdown-toggle.show, .btn-outline-success:active {
+ color: #000;
+ background-color: #28a745;
+ border-color: #28a745
+}
+
+.btn-check:active + .btn-outline-success:focus, .btn-check:checked + .btn-outline-success:focus, .btn-outline-success.active:focus, .btn-outline-success.dropdown-toggle.show:focus, .btn-outline-success:active:focus {
+ box-shadow: 0 0 0 .2rem rgba(40, 167, 69, .5)
+}
+
+.btn-outline-success.disabled, .btn-outline-success:disabled {
+ color: #28a745;
+ background-color: initial
+}
+
+.btn-outline-info {
+ color: #17a2b8;
+ border-color: #17a2b8
+}
+
+.btn-outline-info:hover {
+ color: #000;
+ background-color: #17a2b8;
+ border-color: #17a2b8
+}
+
+.btn-check:focus + .btn-outline-info, .btn-outline-info:focus {
+ box-shadow: 0 0 0 .2rem rgba(23, 162, 184, .5)
+}
+
+.btn-check:active + .btn-outline-info, .btn-check:checked + .btn-outline-info, .btn-outline-info.active, .btn-outline-info.dropdown-toggle.show, .btn-outline-info:active {
+ color: #000;
+ background-color: #17a2b8;
+ border-color: #17a2b8
+}
+
+.btn-check:active + .btn-outline-info:focus, .btn-check:checked + .btn-outline-info:focus, .btn-outline-info.active:focus, .btn-outline-info.dropdown-toggle.show:focus, .btn-outline-info:active:focus {
+ box-shadow: 0 0 0 .2rem rgba(23, 162, 184, .5)
+}
+
+.btn-outline-info.disabled, .btn-outline-info:disabled {
+ color: #17a2b8;
+ background-color: initial
+}
+
+.btn-outline-warning {
+ color: #ffc107;
+ border-color: #ffc107
+}
+
+.btn-outline-warning:hover {
+ color: #000;
+ background-color: #ffc107;
+ border-color: #ffc107
+}
+
+.btn-check:focus + .btn-outline-warning, .btn-outline-warning:focus {
+ box-shadow: 0 0 0 .2rem rgba(255, 193, 7, .5)
+}
+
+.btn-check:active + .btn-outline-warning, .btn-check:checked + .btn-outline-warning, .btn-outline-warning.active, .btn-outline-warning.dropdown-toggle.show, .btn-outline-warning:active {
+ color: #000;
+ background-color: #ffc107;
+ border-color: #ffc107
+}
+
+.btn-check:active + .btn-outline-warning:focus, .btn-check:checked + .btn-outline-warning:focus, .btn-outline-warning.active:focus, .btn-outline-warning.dropdown-toggle.show:focus, .btn-outline-warning:active:focus {
+ box-shadow: 0 0 0 .2rem rgba(255, 193, 7, .5)
+}
+
+.btn-outline-warning.disabled, .btn-outline-warning:disabled {
+ color: #ffc107;
+ background-color: initial
+}
+
+.btn-outline-danger {
+ color: #dc3545;
+ border-color: #dc3545
+}
+
+.btn-outline-danger:hover {
+ color: #fff;
+ background-color: #dc3545;
+ border-color: #dc3545
+}
+
+.btn-check:focus + .btn-outline-danger, .btn-outline-danger:focus {
+ box-shadow: 0 0 0 .2rem rgba(220, 53, 69, .5)
+}
+
+.btn-check:active + .btn-outline-danger, .btn-check:checked + .btn-outline-danger, .btn-outline-danger.active, .btn-outline-danger.dropdown-toggle.show, .btn-outline-danger:active {
+ color: #fff;
+ background-color: #dc3545;
+ border-color: #dc3545
+}
+
+.btn-check:active + .btn-outline-danger:focus, .btn-check:checked + .btn-outline-danger:focus, .btn-outline-danger.active:focus, .btn-outline-danger.dropdown-toggle.show:focus, .btn-outline-danger:active:focus {
+ box-shadow: 0 0 0 .2rem rgba(220, 53, 69, .5)
+}
+
+.btn-outline-danger.disabled, .btn-outline-danger:disabled {
+ color: #dc3545;
+ background-color: initial
+}
+
+.btn-outline-light {
+ color: #f8f9fa;
+ border-color: #f8f9fa
+}
+
+.btn-outline-light:hover {
+ color: #000;
+ background-color: #f8f9fa;
+ border-color: #f8f9fa
+}
+
+.btn-check:focus + .btn-outline-light, .btn-outline-light:focus {
+ box-shadow: 0 0 0 .2rem rgba(248, 249, 250, .5)
+}
+
+.btn-check:active + .btn-outline-light, .btn-check:checked + .btn-outline-light, .btn-outline-light.active, .btn-outline-light.dropdown-toggle.show, .btn-outline-light:active {
+ color: #000;
+ background-color: #f8f9fa;
+ border-color: #f8f9fa
+}
+
+.btn-check:active + .btn-outline-light:focus, .btn-check:checked + .btn-outline-light:focus, .btn-outline-light.active:focus, .btn-outline-light.dropdown-toggle.show:focus, .btn-outline-light:active:focus {
+ box-shadow: 0 0 0 .2rem rgba(248, 249, 250, .5)
+}
+
+.btn-outline-light.disabled, .btn-outline-light:disabled {
+ color: #f8f9fa;
+ background-color: initial
+}
+
+.btn-outline-dark {
+ color: #212529;
+ border-color: #212529
+}
+
+.btn-outline-dark:hover {
+ color: #fff;
+ background-color: #212529;
+ border-color: #212529
+}
+
+.btn-check:focus + .btn-outline-dark, .btn-outline-dark:focus {
+ box-shadow: 0 0 0 .2rem rgba(33, 37, 41, .5)
+}
+
+.btn-check:active + .btn-outline-dark, .btn-check:checked + .btn-outline-dark, .btn-outline-dark.active, .btn-outline-dark.dropdown-toggle.show, .btn-outline-dark:active {
+ color: #fff;
+ background-color: #212529;
+ border-color: #212529
+}
+
+.btn-check:active + .btn-outline-dark:focus, .btn-check:checked + .btn-outline-dark:focus, .btn-outline-dark.active:focus, .btn-outline-dark.dropdown-toggle.show:focus, .btn-outline-dark:active:focus {
+ box-shadow: 0 0 0 .2rem rgba(33, 37, 41, .5)
+}
+
+.btn-outline-dark.disabled, .btn-outline-dark:disabled {
+ color: #212529;
+ background-color: initial
+}
+
+.btn-link {
+ font-weight: 400;
+ color: #3b7ddd;
+ text-decoration: none
+}
+
+.btn-link:hover {
+ color: #1e58ad
+}
+
+.btn-link:focus, .btn-link:hover {
+ text-decoration: underline
+}
+
+.btn-link.disabled, .btn-link:disabled {
+ color: #6c757d
+}
+
+.btn-group-lg > .btn, .btn-lg {
+ padding: .35rem 1rem;
+ font-size: .925rem;
+ border-radius: .3rem
+}
+
+.btn-group-sm > .btn, .btn-sm {
+ padding: .15rem .5rem;
+ font-size: .75rem;
+ border-radius: .1rem
+}
+
+.btn-block {
+ display: block;
+ width: 100%
+}
+
+.btn-block + .btn-block {
+ margin-top: .5rem
+}
+
+.fade {
+ transition: opacity .15s linear
+}
+
+@media (prefers-reduced-motion: reduce) {
+ .fade {
+ transition: none
+ }
+}
+
+.fade:not(.show) {
+ opacity: 0
+}
+
+.collapse:not(.show) {
+ display: none
+}
+
+.collapsing {
+ height: 0;
+ overflow: hidden;
+ transition: height .35s ease
+}
+
+@media (prefers-reduced-motion: reduce) {
+ .collapsing {
+ transition: none
+ }
+}
+
+.dropdown, .dropleft, .dropright, .dropup {
+ position: relative
+}
+
+.dropdown-toggle {
+ white-space: nowrap
+}
+
+.dropdown-toggle:after {
+ margin-left: .255em;
+ vertical-align: .255em;
+ content: "";
+ border-top: .3em solid;
+ border-right: .3em solid transparent;
+ border-bottom: 0;
+ border-left: .3em solid transparent
+}
+
+.dropdown-toggle:empty:after {
+ margin-left: 0
+}
+
+.dropdown-menu {
+ position: absolute;
+ top: 100%;
+ left: 0;
+ z-index: 1000;
+ display: none;
+ min-width: 10rem;
+ padding: .5rem 0;
+ margin: .125rem 0 0;
+ font-size: .875rem;
+ color: #495057;
+ text-align: left;
+ list-style: none;
+ background-color: #fff;
+ background-clip: padding-box;
+ border: 1px solid rgba(0, 0, 0, .15);
+ border-radius: .2rem
+}
+
+.dropdown-menu-left {
+ right: auto;
+ left: 0
+}
+
+.dropdown-menu-right {
+ right: 0;
+ left: auto
+}
+
+@media (min-width: 576px) {
+ .dropdown-menu-sm-left {
+ right: auto;
+ left: 0
+ }
+
+ .dropdown-menu-sm-right {
+ right: 0;
+ left: auto
+ }
+}
+
+@media (min-width: 768px) {
+ .dropdown-menu-md-left {
+ right: auto;
+ left: 0
+ }
+
+ .dropdown-menu-md-right {
+ right: 0;
+ left: auto
+ }
+}
+
+@media (min-width: 992px) {
+ .dropdown-menu-lg-left {
+ right: auto;
+ left: 0
+ }
+
+ .dropdown-menu-lg-right {
+ right: 0;
+ left: auto
+ }
+}
+
+@media (min-width: 1200px) {
+ .dropdown-menu-xl-left {
+ right: auto;
+ left: 0
+ }
+
+ .dropdown-menu-xl-right {
+ right: 0;
+ left: auto
+ }
+}
+
+@media (min-width: 1440px) {
+ .dropdown-menu-xxl-left {
+ right: auto;
+ left: 0
+ }
+
+ .dropdown-menu-xxl-right {
+ right: 0;
+ left: auto
+ }
+}
+
+.dropup .dropdown-menu {
+ top: auto;
+ bottom: 100%;
+ margin-top: 0;
+ margin-bottom: .125rem
+}
+
+.dropup .dropdown-toggle:after {
+ display: inline-block;
+ margin-left: .255em;
+ vertical-align: .255em;
+ content: "";
+ border-top: 0;
+ border-right: .3em solid transparent;
+ border-bottom: .3em solid;
+ border-left: .3em solid transparent
+}
+
+.dropup .dropdown-toggle:empty:after {
+ margin-left: 0
+}
+
+.dropright .dropdown-menu {
+ top: 0;
+ right: auto;
+ left: 100%;
+ margin-top: 0;
+ margin-left: .125rem
+}
+
+.dropright .dropdown-toggle:after {
+ display: inline-block;
+ margin-left: .255em;
+ vertical-align: .255em;
+ content: "";
+ border-top: .3em solid transparent;
+ border-right: 0;
+ border-bottom: .3em solid transparent;
+ border-left: .3em solid
+}
+
+.dropright .dropdown-toggle:empty:after {
+ margin-left: 0
+}
+
+.dropright .dropdown-toggle:after {
+ vertical-align: 0
+}
+
+.dropleft .dropdown-menu {
+ top: 0;
+ right: 100%;
+ left: auto;
+ margin-top: 0;
+ margin-right: .125rem
+}
+
+.dropleft .dropdown-toggle:after {
+ display: inline-block;
+ margin-left: .255em;
+ vertical-align: .255em;
+ content: "";
+ display: none
+}
+
+.dropleft .dropdown-toggle:before {
+ display: inline-block;
+ margin-right: .255em;
+ vertical-align: .255em;
+ content: "";
+ border-top: .3em solid transparent;
+ border-right: .3em solid;
+ border-bottom: .3em solid transparent
+}
+
+.dropleft .dropdown-toggle:empty:after {
+ margin-left: 0
+}
+
+.dropleft .dropdown-toggle:before {
+ vertical-align: 0
+}
+
+.dropdown-menu[x-placement^=bottom], .dropdown-menu[x-placement^=left], .dropdown-menu[x-placement^=right], .dropdown-menu[x-placement^=top] {
+ right: auto;
+ bottom: auto
+}
+
+.dropdown-divider {
+ height: 0;
+ margin: .5rem 0;
+ overflow: hidden;
+ border-top: 1px solid rgba(0, 0, 0, .15)
+}
+
+.dropdown-item {
+ display: block;
+ width: 100%;
+ padding: .35rem 1.5rem;
+ clear: both;
+ font-weight: 400;
+ color: #495057;
+ text-align: inherit;
+ white-space: nowrap;
+ background-color: initial;
+ border: 0
+}
+
+.dropdown-item:focus, .dropdown-item:hover {
+ color: #16181b;
+ text-decoration: none;
+ background-color: #f8f9fa
+}
+
+.dropdown-item.active, .dropdown-item:active {
+ color: #fff;
+ text-decoration: none;
+ background-color: #3b7ddd
+}
+
+.dropdown-item.disabled, .dropdown-item:disabled {
+ color: #6c757d;
+ pointer-events: none;
+ background-color: initial
+}
+
+.dropdown-menu.show {
+ display: block
+}
+
+.dropdown-header {
+ display: block;
+ padding: .5rem 1.5rem;
+ margin-bottom: 0;
+ font-size: .75rem;
+ color: #6c757d;
+ white-space: nowrap
+}
+
+.dropdown-item-text {
+ display: block;
+ padding: .35rem 1.5rem;
+ color: #495057
+}
+
+.dropdown-menu-dark {
+ color: #dee2e6;
+ background-color: #343a40;
+ border-color: rgba(0, 0, 0, .15)
+}
+
+.dropdown-menu-dark .dropdown-item {
+ color: #dee2e6
+}
+
+.dropdown-menu-dark .dropdown-item:focus, .dropdown-menu-dark .dropdown-item:hover {
+ color: #fff;
+ background-color: hsla(0, 0%, 100%, .15)
+}
+
+.dropdown-menu-dark .dropdown-item.active, .dropdown-menu-dark .dropdown-item:active {
+ color: #fff;
+ background-color: #3b7ddd
+}
+
+.dropdown-menu-dark .dropdown-item.disabled, .dropdown-menu-dark .dropdown-item:disabled {
+ color: #adb5bd
+}
+
+.dropdown-menu-dark .dropdown-divider {
+ border-color: rgba(0, 0, 0, .15)
+}
+
+.dropdown-menu-dark .dropdown-item-text {
+ color: #dee2e6
+}
+
+.dropdown-menu-dark .dropdown-header {
+ color: #adb5bd
+}
+
+.btn-group, .btn-group-vertical {
+ position: relative;
+ display: inline-flex;
+ vertical-align: middle
+}
+
+.btn-group-vertical > .btn, .btn-group > .btn {
+ position: relative;
+ flex: 1 1 auto
+}
+
+.btn-group-vertical > .btn-check:checked + .btn, .btn-group-vertical > .btn-check:focus + .btn, .btn-group-vertical > .btn.active, .btn-group-vertical > .btn:active, .btn-group-vertical > .btn:focus, .btn-group-vertical > .btn:hover, .btn-group > .btn-check:checked + .btn, .btn-group > .btn-check:focus + .btn, .btn-group > .btn.active, .btn-group > .btn:active, .btn-group > .btn:focus, .btn-group > .btn:hover {
+ z-index: 1
+}
+
+.btn-toolbar {
+ display: flex;
+ flex-wrap: wrap;
+ justify-content: flex-start
+}
+
+.btn-toolbar .input-group {
+ width: auto
+}
+
+.btn-group > .btn-group:not(:first-child), .btn-group > .btn:not(:first-child) {
+ margin-left: -1px
+}
+
+.btn-group > .btn-group:not(:last-child) > .btn, .btn-group > .btn:not(:last-child):not(.dropdown-toggle) {
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0
+}
+
+.btn-group > .btn-group:not(:first-child) > .btn, .btn-group > .btn:nth-child(n+3), .btn-group > :not(.btn-check) + .btn {
+ border-top-left-radius: 0;
+ border-bottom-left-radius: 0
+}
+
+.dropdown-toggle-split {
+ padding-right: .525rem;
+ padding-left: .525rem
+}
+
+.dropdown-toggle-split:after, .dropright .dropdown-toggle-split:after, .dropup .dropdown-toggle-split:after {
+ margin-left: 0
+}
+
+.dropleft .dropdown-toggle-split:before {
+ margin-right: 0
+}
+
+.btn-group-sm > .btn + .dropdown-toggle-split, .btn-sm + .dropdown-toggle-split {
+ padding-right: .375rem;
+ padding-left: .375rem
+}
+
+.btn-group-lg > .btn + .dropdown-toggle-split, .btn-lg + .dropdown-toggle-split {
+ padding-right: .75rem;
+ padding-left: .75rem
+}
+
+.btn-group-vertical {
+ flex-direction: column;
+ align-items: flex-start;
+ justify-content: center
+}
+
+.btn-group-vertical > .btn, .btn-group-vertical > .btn-group {
+ width: 100%
+}
+
+.btn-group-vertical > .btn-group:not(:first-child), .btn-group-vertical > .btn:not(:first-child) {
+ margin-top: -1px
+}
+
+.btn-group-vertical > .btn-group:not(:last-child) > .btn, .btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle) {
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 0
+}
+
+.btn-group-vertical > .btn-group:not(:first-child) > .btn, .btn-group-vertical > .btn:not(:first-child) {
+ border-top-left-radius: 0;
+ border-top-right-radius: 0
+}
+
+.nav {
+ display: flex;
+ flex-wrap: wrap;
+ padding-left: 0;
+ margin-bottom: 0;
+ list-style: none
+}
+
+.nav-link {
+ display: block;
+ padding: .5rem 1rem;
+ transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out
+}
+
+@media (prefers-reduced-motion: reduce) {
+ .nav-link {
+ transition: none
+ }
+}
+
+.nav-link:focus, .nav-link:hover {
+ text-decoration: none
+}
+
+.nav-link.disabled {
+ color: #6c757d;
+ pointer-events: none;
+ cursor: default
+}
+
+.nav-tabs {
+ border-bottom: 1px solid #dee2e6
+}
+
+.nav-tabs .nav-link {
+ margin-bottom: -1px;
+ border: 1px solid transparent;
+ border-top-left-radius: .2rem;
+ border-top-right-radius: .2rem
+}
+
+.nav-tabs .nav-link:focus, .nav-tabs .nav-link:hover {
+ border-color: #e9ecef #e9ecef #dee2e6
+}
+
+.nav-tabs .nav-link.disabled {
+ color: #6c757d;
+ background-color: initial;
+ border-color: transparent
+}
+
+.nav-tabs .nav-item.show .nav-link, .nav-tabs .nav-link.active {
+ color: #495057;
+ background-color: #f7f7fc;
+ border-color: #dee2e6 #dee2e6 #f7f7fc
+}
+
+.nav-tabs .dropdown-menu {
+ margin-top: -1px;
+ border-top-left-radius: 0;
+ border-top-right-radius: 0
+}
+
+.nav-pills .nav-link {
+ border-radius: .2rem
+}
+
+.nav-pills .nav-link.active, .nav-pills .show > .nav-link {
+ color: #fff;
+ background-color: #3b7ddd
+}
+
+.nav-fill .nav-item, .nav-fill > .nav-link {
+ flex: 1 1 auto;
+ text-align: center
+}
+
+.nav-justified .nav-item, .nav-justified > .nav-link {
+ flex-basis: 0;
+ flex-grow: 1;
+ text-align: center
+}
+
+.tab-content > .tab-pane {
+ display: none
+}
+
+.tab-content > .active {
+ display: block
+}
+
+.navbar {
+ position: relative;
+ display: flex;
+ flex-wrap: wrap;
+ align-items: center;
+ justify-content: space-between;
+ padding: .875rem 1.375rem
+}
+
+.navbar > .container, .navbar > .container-fluid, .navbar > .container-lg, .navbar > .container-md, .navbar > .container-sm, .navbar > .container-xl {
+ display: flex;
+ flex-wrap: inherit;
+ align-items: center;
+ justify-content: space-between
+}
+
+.navbar-brand {
+ padding-top: .875rem;
+ padding-bottom: .875rem;
+ margin-right: 1rem;
+ white-space: nowrap
+}
+
+.navbar-brand:focus, .navbar-brand:hover {
+ text-decoration: none
+}
+
+.navbar-nav {
+ display: flex;
+ 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
+}
+
+.navbar-text {
+ padding-top: .5rem;
+ padding-bottom: .5rem
+}
+
+.navbar-collapse {
+ align-items: center;
+ width: 100%
+}
+
+.navbar-toggler {
+ padding: .25rem .75rem;
+ font-size: .925rem;
+ line-height: 1;
+ background-color: initial;
+ border: 1px solid transparent;
+ border-radius: .2rem;
+ transition: box-shadow .15s ease-in-out
+}
+
+@media (prefers-reduced-motion: reduce) {
+ .navbar-toggler {
+ transition: none
+ }
+}
+
+.navbar-toggler:hover {
+ text-decoration: none
+}
+
+.navbar-toggler:focus {
+ text-decoration: none;
+ outline: 0;
+ box-shadow: 0 0 0 .2rem
+}
+
+.navbar-toggler-icon {
+ display: inline-block;
+ width: 1.5em;
+ height: 1.5em;
+ vertical-align: middle;
+ background-repeat: no-repeat;
+ background-position: 50%;
+ background-size: 100%
+}
+
+@media (min-width: 576px) {
+ .navbar-expand-sm {
+ flex-wrap: nowrap;
+ justify-content: flex-start
+ }
+
+ .navbar-expand-sm .navbar-nav {
+ flex-direction: row
+ }
+
+ .navbar-expand-sm .navbar-nav .dropdown-menu {
+ position: absolute
+ }
+
+ .navbar-expand-sm .navbar-nav .nav-link {
+ padding-right: .5rem;
+ padding-left: .5rem
+ }
+
+ .navbar-expand-sm .navbar-collapse {
+ display: flex !important
+ }
+
+ .navbar-expand-sm .navbar-toggler {
+ display: none
+ }
+}
+
+@media (min-width: 768px) {
+ .navbar-expand-md {
+ flex-wrap: nowrap;
+ justify-content: flex-start
+ }
+
+ .navbar-expand-md .navbar-nav {
+ flex-direction: row
+ }
+
+ .navbar-expand-md .navbar-nav .dropdown-menu {
+ position: absolute
+ }
+
+ .navbar-expand-md .navbar-nav .nav-link {
+ padding-right: .5rem;
+ padding-left: .5rem
+ }
+
+ .navbar-expand-md .navbar-collapse {
+ display: flex !important
+ }
+
+ .navbar-expand-md .navbar-toggler {
+ display: none
+ }
+}
+
+@media (min-width: 992px) {
+ .navbar-expand-lg {
+ flex-wrap: nowrap;
+ justify-content: flex-start
+ }
+
+ .navbar-expand-lg .navbar-nav {
+ flex-direction: row
+ }
+
+ .navbar-expand-lg .navbar-nav .dropdown-menu {
+ position: absolute
+ }
+
+ .navbar-expand-lg .navbar-nav .nav-link {
+ padding-right: .5rem;
+ padding-left: .5rem
+ }
+
+ .navbar-expand-lg .navbar-collapse {
+ display: flex !important
+ }
+
+ .navbar-expand-lg .navbar-toggler {
+ display: none
+ }
+}
+
+@media (min-width: 1200px) {
+ .navbar-expand-xl {
+ flex-wrap: nowrap;
+ justify-content: flex-start
+ }
+
+ .navbar-expand-xl .navbar-nav {
+ flex-direction: row
+ }
+
+ .navbar-expand-xl .navbar-nav .dropdown-menu {
+ position: absolute
+ }
+
+ .navbar-expand-xl .navbar-nav .nav-link {
+ padding-right: .5rem;
+ padding-left: .5rem
+ }
+
+ .navbar-expand-xl .navbar-collapse {
+ display: flex !important
+ }
+
+ .navbar-expand-xl .navbar-toggler {
+ display: none
+ }
+}
+
+@media (min-width: 1440px) {
+ .navbar-expand-xxl {
+ flex-wrap: nowrap;
+ justify-content: flex-start
+ }
+
+ .navbar-expand-xxl .navbar-nav {
+ flex-direction: row
+ }
+
+ .navbar-expand-xxl .navbar-nav .dropdown-menu {
+ position: absolute
+ }
+
+ .navbar-expand-xxl .navbar-nav .nav-link {
+ padding-right: .5rem;
+ padding-left: .5rem
+ }
+
+ .navbar-expand-xxl .navbar-collapse {
+ display: flex !important
+ }
+
+ .navbar-expand-xxl .navbar-toggler {
+ display: none
+ }
+}
+
+.navbar-expand {
+ flex-wrap: nowrap;
+ justify-content: flex-start
+}
+
+.navbar-expand .navbar-nav {
+ flex-direction: row
+}
+
+.navbar-expand .navbar-nav .dropdown-menu {
+ position: absolute
+}
+
+.navbar-expand .navbar-nav .nav-link {
+ padding-right: .5rem;
+ padding-left: .5rem
+}
+
+.navbar-expand .navbar-collapse {
+ display: flex !important
+}
+
+.navbar-expand .navbar-toggler {
+ display: none
+}
+
+.navbar-light .navbar-brand, .navbar-light .navbar-brand:focus, .navbar-light .navbar-brand:hover {
+ color: rgba(0, 0, 0, .9)
+}
+
+.navbar-light .navbar-nav .nav-link {
+ color: rgba(0, 0, 0, .55)
+}
+
+.navbar-light .navbar-nav .nav-link:focus, .navbar-light .navbar-nav .nav-link:hover {
+ color: rgba(0, 0, 0, .7)
+}
+
+.navbar-light .navbar-nav .nav-link.disabled {
+ color: rgba(0, 0, 0, .3)
+}
+
+.navbar-light .navbar-nav .nav-link.active, .navbar-light .navbar-nav .show > .nav-link {
+ color: rgba(0, 0, 0, .9)
+}
+
+.navbar-light .navbar-toggler {
+ color: rgba(0, 0, 0, .55);
+ border-color: rgba(0, 0, 0, .1)
+}
+
+.navbar-light .navbar-toggler-icon {
+ background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3E%3Cpath stroke='rgba(0,0,0,0.55)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")
+}
+
+.navbar-light .navbar-text {
+ color: rgba(0, 0, 0, .55)
+}
+
+.navbar-light .navbar-text a, .navbar-light .navbar-text a:focus, .navbar-light .navbar-text a:hover {
+ color: rgba(0, 0, 0, .9)
+}
+
+.navbar-dark .navbar-brand, .navbar-dark .navbar-brand:focus, .navbar-dark .navbar-brand:hover {
+ color: #fff
+}
+
+.navbar-dark .navbar-nav .nav-link {
+ color: hsla(0, 0%, 100%, .55)
+}
+
+.navbar-dark .navbar-nav .nav-link:focus, .navbar-dark .navbar-nav .nav-link:hover {
+ color: hsla(0, 0%, 100%, .75)
+}
+
+.navbar-dark .navbar-nav .nav-link.disabled {
+ color: hsla(0, 0%, 100%, .25)
+}
+
+.navbar-dark .navbar-nav .nav-link.active, .navbar-dark .navbar-nav .show > .nav-link {
+ color: #fff
+}
+
+.navbar-dark .navbar-toggler {
+ color: hsla(0, 0%, 100%, .55);
+ border-color: hsla(0, 0%, 100%, .1)
+}
+
+.navbar-dark .navbar-toggler-icon {
+ background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3E%3Cpath stroke='rgba(255,255,255,0.55)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")
+}
+
+.navbar-dark .navbar-text {
+ color: hsla(0, 0%, 100%, .55)
+}
+
+.navbar-dark .navbar-text a, .navbar-dark .navbar-text a:focus, .navbar-dark .navbar-text a:hover {
+ color: #fff
+}
+
+.card {
+ position: relative;
+ display: flex;
+ flex-direction: column;
+ min-width: 0;
+ word-wrap: break-word;
+ background-color: #fff;
+ background-clip: initial;
+ border: 0 solid transparent;
+ border-radius: .25rem
+}
+
+.card > hr {
+ margin-right: 0;
+ margin-left: 0
+}
+
+.card > .list-group {
+ border-top: inherit;
+ border-bottom: inherit
+}
+
+.card > .list-group:first-child {
+ border-top-width: 0;
+ border-top-left-radius: .25rem;
+ border-top-right-radius: .25rem
+}
+
+.card > .list-group:last-child {
+ border-bottom-width: 0;
+ border-bottom-right-radius: .25rem;
+ border-bottom-left-radius: .25rem
+}
+
+.card > .card-header + .list-group, .card > .list-group + .card-footer {
+ border-top: 0
+}
+
+.card-body {
+ flex: 1 1 auto;
+ padding: 1.25rem
+}
+
+.card-title {
+ margin-bottom: .5rem
+}
+
+.card-subtitle {
+ margin-top: -.25rem
+}
+
+.card-subtitle, .card-text:last-child {
+ margin-bottom: 0
+}
+
+.card-link:hover {
+ text-decoration: none
+}
+
+.card-link + .card-link {
+ margin-left: 1.25rem
+}
+
+.card-header {
+ padding: 1rem 1.25rem;
+ margin-bottom: 0;
+ background-color: #fff;
+ border-bottom: 0 solid transparent
+}
+
+.card-header:first-child {
+ border-radius: .25rem .25rem 0 0
+}
+
+.card-footer {
+ padding: 1rem 1.25rem;
+ background-color: #fff;
+ border-top: 0 solid transparent
+}
+
+.card-footer:last-child {
+ border-radius: 0 0 .25rem .25rem
+}
+
+.card-header-tabs {
+ margin-right: -.625rem;
+ margin-bottom: -1rem;
+ margin-left: -.625rem;
+ border-bottom: 0
+}
+
+.card-header-tabs .nav-link.active {
+ background-color: #fff;
+ border-bottom-color: #fff
+}
+
+.card-header-pills {
+ margin-right: -.625rem;
+ margin-left: -.625rem
+}
+
+.card-img-overlay {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ padding: 1rem;
+ border-radius: .25rem
+}
+
+.card-img, .card-img-bottom, .card-img-top {
+ width: 100%
+}
+
+.card-img, .card-img-top {
+ border-top-left-radius: .25rem;
+ border-top-right-radius: .25rem
+}
+
+.card-img, .card-img-bottom {
+ border-bottom-right-radius: .25rem;
+ border-bottom-left-radius: .25rem
+}
+
+.card-group > .card {
+ margin-bottom: 12px
+}
+
+@media (min-width: 576px) {
+ .card-group {
+ display: flex;
+ flex-flow: row wrap
+ }
+
+ .card-group > .card {
+ flex: 1 0 0%;
+ margin-bottom: 0
+ }
+
+ .card-group > .card + .card {
+ margin-left: 0;
+ border-left: 0
+ }
+
+ .card-group > .card:not(:last-child) {
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0
+ }
+
+ .card-group > .card:not(:last-child) .card-header, .card-group > .card:not(:last-child) .card-img-top {
+ border-top-right-radius: 0
+ }
+
+ .card-group > .card:not(:last-child) .card-footer, .card-group > .card:not(:last-child) .card-img-bottom {
+ border-bottom-right-radius: 0
+ }
+
+ .card-group > .card:not(:first-child) {
+ border-top-left-radius: 0;
+ border-bottom-left-radius: 0
+ }
+
+ .card-group > .card:not(:first-child) .card-header, .card-group > .card:not(:first-child) .card-img-top {
+ border-top-left-radius: 0
+ }
+
+ .card-group > .card:not(:first-child) .card-footer, .card-group > .card:not(:first-child) .card-img-bottom {
+ border-bottom-left-radius: 0
+ }
+}
+
+.accordion {
+ overflow-anchor: none
+}
+
+.accordion > .card {
+ overflow: hidden
+}
+
+.accordion > .card:not(:last-of-type) {
+ border-bottom: 0;
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 0
+}
+
+.accordion > .card:not(:first-of-type) {
+ border-top-left-radius: 0;
+ border-top-right-radius: 0
+}
+
+.accordion > .card > .card-header {
+ border-radius: 0;
+ margin-bottom: 0
+}
+
+.breadcrumb {
+ flex-wrap: wrap;
+ padding: .5rem 1rem;
+ margin-bottom: 1rem;
+ list-style: none;
+ background-color: #e9ecef;
+ border-radius: .2rem
+}
+
+.breadcrumb, .breadcrumb-item {
+ display: flex
+}
+
+.breadcrumb-item + .breadcrumb-item {
+ padding-left: .5rem
+}
+
+.breadcrumb-item + .breadcrumb-item:before {
+ display: inline-block;
+ padding-right: .5rem;
+ color: #6c757d;
+ content: "/"
+}
+
+.breadcrumb-item.active {
+ color: #6c757d
+}
+
+.pagination {
+ display: flex;
+ padding-left: 0;
+ list-style: none
+}
+
+.page-link {
+ position: relative;
+ display: block;
+ color: #6c757d;
+ background-color: #fff;
+ border: 1px solid #dee2e6;
+ transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out
+}
+
+@media (prefers-reduced-motion: reduce) {
+ .page-link {
+ transition: none
+ }
+}
+
+.page-link:hover {
+ z-index: 2;
+ color: #343a40;
+ text-decoration: none;
+ background-color: #e9ecef;
+ border-color: #dee2e6
+}
+
+.page-link:focus {
+ z-index: 3;
+ color: #1e58ad;
+ background-color: #e9ecef;
+ outline: 0;
+ box-shadow: 0 0 0 .2rem rgba(59, 125, 221, .25)
+}
+
+.page-item:not(:first-child) .page-link {
+ margin-left: -1px
+}
+
+.page-item.active .page-link {
+ z-index: 3;
+ color: #fff;
+ background-color: #3b7ddd;
+ border-color: #3b7ddd
+}
+
+.page-item.disabled .page-link {
+ color: #6c757d;
+ pointer-events: none;
+ background-color: #fff;
+ border-color: #dee2e6
+}
+
+.page-link {
+ padding: .3rem .75rem
+}
+
+.page-item:first-child .page-link {
+ border-top-left-radius: .2rem;
+ border-bottom-left-radius: .2rem
+}
+
+.page-item:last-child .page-link {
+ border-top-right-radius: .2rem;
+ border-bottom-right-radius: .2rem
+}
+
+.pagination-lg .page-link {
+ padding: .35rem 1rem;
+ font-size: .925rem
+}
+
+.pagination-lg .page-item:first-child .page-link {
+ border-top-left-radius: .3rem;
+ border-bottom-left-radius: .3rem
+}
+
+.pagination-lg .page-item:last-child .page-link {
+ border-top-right-radius: .3rem;
+ border-bottom-right-radius: .3rem
+}
+
+.pagination-sm .page-link {
+ padding: .15rem .5rem;
+ font-size: .75rem
+}
+
+.pagination-sm .page-item:first-child .page-link {
+ border-top-left-radius: .1rem;
+ border-bottom-left-radius: .1rem
+}
+
+.pagination-sm .page-item:last-child .page-link {
+ border-top-right-radius: .1rem;
+ border-bottom-right-radius: .1rem
+}
+
+.badge {
+ display: inline-block;
+ padding: .3em .45em;
+ font-size: 80%;
+ font-weight: 600;
+ line-height: 1;
+ color: #fff;
+ text-align: center;
+ white-space: nowrap;
+ vertical-align: initial;
+ border-radius: .2rem
+}
+
+.badge:empty {
+ display: none
+}
+
+.btn .badge {
+ position: relative;
+ top: -1px
+}
+
+.alert {
+ position: relative;
+ padding: .95rem;
+ margin-bottom: 1rem;
+ border: 0 solid transparent;
+ border-radius: .2rem
+}
+
+.alert-heading {
+ color: inherit
+}
+
+.alert-link {
+ font-weight: 600
+}
+
+.alert-dismissible {
+ padding-right: 2.85rem
+}
+
+.alert-dismissible .btn-close {
+ position: absolute;
+ top: 0;
+ right: 0;
+ padding: 1.1875rem .95rem
+}
+
+.alert-primary {
+ color: #1f4173;
+ background-color: #d8e5f8;
+ border-color: #c8dbf5
+}
+
+.alert-primary .alert-link {
+ color: #142a4b
+}
+
+.alert-secondary {
+ color: #383d41;
+ background-color: #e2e3e5;
+ border-color: #d6d8db
+}
+
+.alert-secondary .alert-link {
+ color: #202326
+}
+
+.alert-success {
+ color: #155724;
+ background-color: #d4edda;
+ border-color: #c3e6cb
+}
+
+.alert-success .alert-link {
+ color: #0b2e13
+}
+
+.alert-info {
+ color: #0c5460;
+ background-color: #d1ecf1;
+ border-color: #bee5eb
+}
+
+.alert-info .alert-link {
+ color: #062c33
+}
+
+.alert-warning {
+ color: #856404;
+ background-color: #fff3cd;
+ border-color: #ffeeba
+}
+
+.alert-warning .alert-link {
+ color: #533f03
+}
+
+.alert-danger {
+ color: #721c24;
+ background-color: #f8d7da;
+ border-color: #f5c6cb
+}
+
+.alert-danger .alert-link {
+ color: #491217
+}
+
+.alert-light {
+ color: #818182;
+ background-color: #fefefe;
+ border-color: #fdfdfe
+}
+
+.alert-light .alert-link {
+ color: #686868
+}
+
+.alert-dark {
+ color: #111315;
+ background-color: #d3d3d4;
+ border-color: #c1c2c3
+}
+
+.alert-dark .alert-link {
+ color: #000
+}
+
+@keyframes progress-bar-stripes {
+ 0% {
+ background-position-x: 1rem
+ }
+}
+
+.progress {
+ height: 1rem;
+ font-size: .65625rem;
+ background-color: #e9ecef;
+ border-radius: .2rem
+}
+
+.progress, .progress-bar {
+ display: flex;
+ overflow: hidden
+}
+
+.progress-bar {
+ flex-direction: column;
+ justify-content: center;
+ color: #fff;
+ text-align: center;
+ white-space: nowrap;
+ background-color: #3b7ddd;
+ transition: width .6s ease
+}
+
+@media (prefers-reduced-motion: reduce) {
+ .progress-bar {
+ transition: none
+ }
+}
+
+.progress-bar-striped {
+ background-image: linear-gradient(45deg, hsla(0, 0%, 100%, .15) 25%, transparent 0, transparent 50%, hsla(0, 0%, 100%, .15) 0, hsla(0, 0%, 100%, .15) 75%, transparent 0, transparent);
+ background-size: 1rem 1rem
+}
+
+.progress-bar-animated {
+ animation: progress-bar-stripes 1s linear infinite
+}
+
+@media (prefers-reduced-motion: reduce) {
+ .progress-bar-animated {
+ animation: none
+ }
+}
+
+.list-group {
+ display: flex;
+ flex-direction: column;
+ padding-left: 0;
+ margin-bottom: 0;
+ border-radius: .2rem
+}
+
+.list-group-item-action {
+ width: 100%;
+ color: #495057;
+ text-align: inherit
+}
+
+.list-group-item-action:focus, .list-group-item-action:hover {
+ z-index: 1;
+ color: #495057;
+ text-decoration: none;
+ background-color: #f8f9fa
+}
+
+.list-group-item-action:active {
+ color: #495057;
+ background-color: #e9ecef
+}
+
+.list-group-item {
+ position: relative;
+ display: block;
+ padding: .75rem 1.25rem;
+ background-color: #fff;
+ border: 1px solid rgba(0, 0, 0, .125)
+}
+
+.list-group-item:first-child {
+ border-top-left-radius: inherit;
+ border-top-right-radius: inherit
+}
+
+.list-group-item:last-child {
+ border-bottom-right-radius: inherit;
+ border-bottom-left-radius: inherit
+}
+
+.list-group-item.disabled, .list-group-item:disabled {
+ color: #6c757d;
+ pointer-events: none;
+ background-color: #fff
+}
+
+.list-group-item.active {
+ z-index: 2;
+ color: #fff;
+ background-color: #3b7ddd;
+ border-color: #3b7ddd
+}
+
+.list-group-item + .list-group-item {
+ border-top-width: 0
+}
+
+.list-group-item + .list-group-item.active {
+ margin-top: -1px;
+ border-top-width: 1px
+}
+
+.list-group-horizontal {
+ flex-direction: row
+}
+
+.list-group-horizontal > .list-group-item:first-child {
+ border-bottom-left-radius: .2rem;
+ border-top-right-radius: 0
+}
+
+.list-group-horizontal > .list-group-item:last-child {
+ border-top-right-radius: .2rem;
+ border-bottom-left-radius: 0
+}
+
+.list-group-horizontal > .list-group-item.active {
+ margin-top: 0
+}
+
+.list-group-horizontal > .list-group-item + .list-group-item {
+ border-top-width: 1px;
+ border-left-width: 0
+}
+
+.list-group-horizontal > .list-group-item + .list-group-item.active {
+ margin-left: -1px;
+ border-left-width: 1px
+}
+
+@media (min-width: 576px) {
+ .list-group-horizontal-sm {
+ flex-direction: row
+ }
+
+ .list-group-horizontal-sm > .list-group-item:first-child {
+ border-bottom-left-radius: .2rem;
+ border-top-right-radius: 0
+ }
+
+ .list-group-horizontal-sm > .list-group-item:last-child {
+ border-top-right-radius: .2rem;
+ border-bottom-left-radius: 0
+ }
+
+ .list-group-horizontal-sm > .list-group-item.active {
+ margin-top: 0
+ }
+
+ .list-group-horizontal-sm > .list-group-item + .list-group-item {
+ border-top-width: 1px;
+ border-left-width: 0
+ }
+
+ .list-group-horizontal-sm > .list-group-item + .list-group-item.active {
+ margin-left: -1px;
+ border-left-width: 1px
+ }
+}
+
+@media (min-width: 768px) {
+ .list-group-horizontal-md {
+ flex-direction: row
+ }
+
+ .list-group-horizontal-md > .list-group-item:first-child {
+ border-bottom-left-radius: .2rem;
+ border-top-right-radius: 0
+ }
+
+ .list-group-horizontal-md > .list-group-item:last-child {
+ border-top-right-radius: .2rem;
+ border-bottom-left-radius: 0
+ }
+
+ .list-group-horizontal-md > .list-group-item.active {
+ margin-top: 0
+ }
+
+ .list-group-horizontal-md > .list-group-item + .list-group-item {
+ border-top-width: 1px;
+ border-left-width: 0
+ }
+
+ .list-group-horizontal-md > .list-group-item + .list-group-item.active {
+ margin-left: -1px;
+ border-left-width: 1px
+ }
+}
+
+@media (min-width: 992px) {
+ .list-group-horizontal-lg {
+ flex-direction: row
+ }
+
+ .list-group-horizontal-lg > .list-group-item:first-child {
+ border-bottom-left-radius: .2rem;
+ border-top-right-radius: 0
+ }
+
+ .list-group-horizontal-lg > .list-group-item:last-child {
+ border-top-right-radius: .2rem;
+ border-bottom-left-radius: 0
+ }
+
+ .list-group-horizontal-lg > .list-group-item.active {
+ margin-top: 0
+ }
+
+ .list-group-horizontal-lg > .list-group-item + .list-group-item {
+ border-top-width: 1px;
+ border-left-width: 0
+ }
+
+ .list-group-horizontal-lg > .list-group-item + .list-group-item.active {
+ margin-left: -1px;
+ border-left-width: 1px
+ }
+}
+
+@media (min-width: 1200px) {
+ .list-group-horizontal-xl {
+ flex-direction: row
+ }
+
+ .list-group-horizontal-xl > .list-group-item:first-child {
+ border-bottom-left-radius: .2rem;
+ border-top-right-radius: 0
+ }
+
+ .list-group-horizontal-xl > .list-group-item:last-child {
+ border-top-right-radius: .2rem;
+ border-bottom-left-radius: 0
+ }
+
+ .list-group-horizontal-xl > .list-group-item.active {
+ margin-top: 0
+ }
+
+ .list-group-horizontal-xl > .list-group-item + .list-group-item {
+ border-top-width: 1px;
+ border-left-width: 0
+ }
+
+ .list-group-horizontal-xl > .list-group-item + .list-group-item.active {
+ margin-left: -1px;
+ border-left-width: 1px
+ }
+}
+
+@media (min-width: 1440px) {
+ .list-group-horizontal-xxl {
+ flex-direction: row
+ }
+
+ .list-group-horizontal-xxl > .list-group-item:first-child {
+ border-bottom-left-radius: .2rem;
+ border-top-right-radius: 0
+ }
+
+ .list-group-horizontal-xxl > .list-group-item:last-child {
+ border-top-right-radius: .2rem;
+ border-bottom-left-radius: 0
+ }
+
+ .list-group-horizontal-xxl > .list-group-item.active {
+ margin-top: 0
+ }
+
+ .list-group-horizontal-xxl > .list-group-item + .list-group-item {
+ border-top-width: 1px;
+ border-left-width: 0
+ }
+
+ .list-group-horizontal-xxl > .list-group-item + .list-group-item.active {
+ margin-left: -1px;
+ border-left-width: 1px
+ }
+}
+
+.list-group-flush {
+ border-radius: 0
+}
+
+.list-group-flush > .list-group-item {
+ border-width: 0 0 1px
+}
+
+.list-group-flush > .list-group-item:last-child {
+ border-bottom-width: 0
+}
+
+.list-group-item-primary {
+ color: #1f4173;
+ background-color: #c8dbf5
+}
+
+.list-group-item-primary.list-group-item-action:focus, .list-group-item-primary.list-group-item-action:hover {
+ color: #1f4173;
+ background-color: #b2cdf1
+}
+
+.list-group-item-primary.list-group-item-action.active {
+ color: #fff;
+ background-color: #1f4173;
+ border-color: #1f4173
+}
+
+.list-group-item-secondary {
+ color: #383d41;
+ background-color: #d6d8db
+}
+
+.list-group-item-secondary.list-group-item-action:focus, .list-group-item-secondary.list-group-item-action:hover {
+ color: #383d41;
+ background-color: #c8cbcf
+}
+
+.list-group-item-secondary.list-group-item-action.active {
+ color: #fff;
+ background-color: #383d41;
+ border-color: #383d41
+}
+
+.list-group-item-success {
+ color: #155724;
+ background-color: #c3e6cb
+}
+
+.list-group-item-success.list-group-item-action:focus, .list-group-item-success.list-group-item-action:hover {
+ color: #155724;
+ background-color: #b1dfbb
+}
+
+.list-group-item-success.list-group-item-action.active {
+ color: #fff;
+ background-color: #155724;
+ border-color: #155724
+}
+
+.list-group-item-info {
+ color: #0c5460;
+ background-color: #bee5eb
+}
+
+.list-group-item-info.list-group-item-action:focus, .list-group-item-info.list-group-item-action:hover {
+ color: #0c5460;
+ background-color: #abdde5
+}
+
+.list-group-item-info.list-group-item-action.active {
+ color: #fff;
+ background-color: #0c5460;
+ border-color: #0c5460
+}
+
+.list-group-item-warning {
+ color: #856404;
+ background-color: #ffeeba
+}
+
+.list-group-item-warning.list-group-item-action:focus, .list-group-item-warning.list-group-item-action:hover {
+ color: #856404;
+ background-color: #ffe8a1
+}
+
+.list-group-item-warning.list-group-item-action.active {
+ color: #fff;
+ background-color: #856404;
+ border-color: #856404
+}
+
+.list-group-item-danger {
+ color: #721c24;
+ background-color: #f5c6cb
+}
+
+.list-group-item-danger.list-group-item-action:focus, .list-group-item-danger.list-group-item-action:hover {
+ color: #721c24;
+ background-color: #f1b0b7
+}
+
+.list-group-item-danger.list-group-item-action.active {
+ color: #fff;
+ background-color: #721c24;
+ border-color: #721c24
+}
+
+.list-group-item-light {
+ color: #818182;
+ background-color: #fdfdfe
+}
+
+.list-group-item-light.list-group-item-action:focus, .list-group-item-light.list-group-item-action:hover {
+ 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: #111315;
+ background-color: #c1c2c3
+}
+
+.list-group-item-dark.list-group-item-action:focus, .list-group-item-dark.list-group-item-action:hover {
+ color: #111315;
+ background-color: #b4b5b6
+}
+
+.list-group-item-dark.list-group-item-action.active {
+ color: #fff;
+ background-color: #111315;
+ border-color: #111315
+}
+
+.btn-close {
+ box-sizing: initial;
+ width: 1em;
+ height: 1em;
+ padding: .25em;
+ color: #000;
+ background: transparent url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3E%3C/svg%3E") no-repeat 50%/1em auto;
+ background-clip: content-box;
+ border: 0;
+ border-radius: .2rem;
+ opacity: .5
+}
+
+.btn-close:hover {
+ color: #000;
+ text-decoration: none;
+ opacity: .75
+}
+
+.btn-close:focus {
+ outline: none;
+ box-shadow: 0 0 0 .2rem rgba(59, 125, 221, .25);
+ opacity: 1
+}
+
+.btn-close.disabled, .btn-close:disabled {
+ pointer-events: none;
+ -webkit-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ opacity: .25
+}
+
+.btn-close-white {
+ filter: invert(1) grayscale(100%) brightness(200%)
+}
+
+.toast {
+ max-width: 350px;
+ font-size: .875rem;
+ background-color: hsla(0, 0%, 100%, .85);
+ background-clip: padding-box;
+ border: 1px solid rgba(0, 0, 0, .1);
+ box-shadow: 0 .1rem .2rem rgba(0, 0, 0, .05);
+ opacity: 0;
+ border-radius: .2rem
+}
+
+.toast:not(:last-child) {
+ margin-bottom: .75rem
+}
+
+.toast.showing {
+ opacity: 1
+}
+
+.toast.show {
+ display: block;
+ opacity: 1
+}
+
+.toast.hide {
+ display: none
+}
+
+.toast-header {
+ display: flex;
+ align-items: center;
+ padding: .5rem .75rem;
+ color: #6c757d;
+ background-color: hsla(0, 0%, 100%, .85);
+ background-clip: padding-box;
+ border-bottom: 1px solid rgba(0, 0, 0, .05);
+ border-top-left-radius: calc(.2rem - 1px);
+ border-top-right-radius: calc(.2rem - 1px)
+}
+
+.toast-header .btn-close {
+ margin-right: -.375rem;
+ margin-left: .75rem
+}
+
+.toast-body {
+ padding: .75rem
+}
+
+.modal-open {
+ overflow: hidden
+}
+
+.modal-open .modal {
+ overflow-x: hidden;
+ overflow-y: auto
+}
+
+.modal {
+ position: fixed;
+ top: 0;
+ left: 0;
+ z-index: 1050;
+ display: none;
+ width: 100%;
+ height: 100%;
+ overflow: hidden;
+ outline: 0
+}
+
+.modal-dialog {
+ position: relative;
+ width: auto;
+ margin: .5rem;
+ pointer-events: none
+}
+
+.modal.fade .modal-dialog {
+ transition: transform .25s ease-out;
+ transform: translateY(-50px)
+}
+
+@media (prefers-reduced-motion: reduce) {
+ .modal.fade .modal-dialog {
+ transition: none
+ }
+}
+
+.modal.show .modal-dialog {
+ transform: none
+}
+
+.modal.modal-static .modal-dialog {
+ transform: scale(1.02)
+}
+
+.modal-dialog-scrollable {
+ height: calc(100% - 1rem)
+}
+
+.modal-dialog-scrollable .modal-content {
+ max-height: 100%;
+ overflow: hidden
+}
+
+.modal-dialog-scrollable .modal-body {
+ overflow-y: auto
+}
+
+.modal-dialog-centered {
+ display: flex;
+ align-items: center;
+ min-height: calc(100% - 1rem)
+}
+
+.modal-content {
+ position: relative;
+ display: flex;
+ flex-direction: column;
+ width: 100%;
+ pointer-events: auto;
+ background-color: #fff;
+ background-clip: padding-box;
+ border: 0 solid rgba(0, 0, 0, .2);
+ border-radius: .3rem;
+ outline: 0
+}
+
+.modal-backdrop {
+ position: fixed;
+ top: 0;
+ left: 0;
+ z-index: 1040;
+ width: 100vw;
+ height: 100vh;
+ background-color: #000
+}
+
+.modal-backdrop.fade {
+ opacity: 0
+}
+
+.modal-backdrop.show {
+ opacity: .5
+}
+
+.modal-header {
+ display: flex;
+ flex-shrink: 0;
+ align-items: center;
+ justify-content: space-between;
+ padding: 1rem;
+ border-bottom: 1px solid #dee2e6;
+ border-top-left-radius: .3rem;
+ border-top-right-radius: .3rem
+}
+
+.modal-header .btn-close {
+ padding: .5rem;
+ margin: -.5rem -.5rem -.5rem auto
+}
+
+.modal-title {
+ margin-bottom: 0;
+ line-height: 1.5
+}
+
+.modal-body {
+ position: relative;
+ flex: 1 1 auto;
+ padding: 1rem
+}
+
+.modal-footer {
+ display: flex;
+ flex-wrap: wrap;
+ flex-shrink: 0;
+ align-items: center;
+ justify-content: flex-end;
+ padding: .75rem;
+ border-top: 1px solid #dee2e6;
+ border-bottom-right-radius: .3rem;
+ border-bottom-left-radius: .3rem
+}
+
+.modal-footer > * {
+ margin: .25rem
+}
+
+.modal-scrollbar-measure {
+ position: absolute;
+ top: -9999px;
+ width: 50px;
+ height: 50px;
+ overflow: scroll
+}
+
+@media (min-width: 576px) {
+ .modal-dialog {
+ max-width: 600px;
+ margin: 1.75rem auto
+ }
+
+ .modal-dialog-scrollable {
+ height: calc(100% - 3.5rem)
+ }
+
+ .modal-dialog-centered {
+ min-height: calc(100% - 3.5rem)
+ }
+
+ .modal-sm {
+ max-width: 400px
+ }
+}
+
+@media (min-width: 992px) {
+ .modal-lg, .modal-xl {
+ max-width: 900px
+ }
+}
+
+@media (min-width: 1200px) {
+ .modal-xl {
+ max-width: 1140px
+ }
+}
+
+.modal-fullscreen {
+ width: 100vw;
+ max-width: none;
+ height: 100%;
+ margin: 0
+}
+
+.modal-fullscreen .modal-content {
+ height: 100%;
+ border: 0;
+ border-radius: 0
+}
+
+.modal-fullscreen .modal-header {
+ border-radius: 0
+}
+
+.modal-fullscreen .modal-body {
+ overflow-y: auto
+}
+
+.modal-fullscreen .modal-footer {
+ border-radius: 0
+}
+
+@media (max-width: 575.98px) {
+ .modal-fullscreen-sm-down {
+ width: 100vw;
+ max-width: none;
+ height: 100%;
+ margin: 0
+ }
+
+ .modal-fullscreen-sm-down .modal-content {
+ height: 100%;
+ border: 0;
+ border-radius: 0
+ }
+
+ .modal-fullscreen-sm-down .modal-header {
+ border-radius: 0
+ }
+
+ .modal-fullscreen-sm-down .modal-body {
+ overflow-y: auto
+ }
+
+ .modal-fullscreen-sm-down .modal-footer {
+ border-radius: 0
+ }
+}
+
+@media (max-width: 767.98px) {
+ .modal-fullscreen-md-down {
+ width: 100vw;
+ max-width: none;
+ height: 100%;
+ margin: 0
+ }
+
+ .modal-fullscreen-md-down .modal-content {
+ height: 100%;
+ border: 0;
+ border-radius: 0
+ }
+
+ .modal-fullscreen-md-down .modal-header {
+ border-radius: 0
+ }
+
+ .modal-fullscreen-md-down .modal-body {
+ overflow-y: auto
+ }
+
+ .modal-fullscreen-md-down .modal-footer {
+ border-radius: 0
+ }
+}
+
+@media (max-width: 991.98px) {
+ .modal-fullscreen-lg-down {
+ width: 100vw;
+ max-width: none;
+ height: 100%;
+ margin: 0
+ }
+
+ .modal-fullscreen-lg-down .modal-content {
+ height: 100%;
+ border: 0;
+ border-radius: 0
+ }
+
+ .modal-fullscreen-lg-down .modal-header {
+ border-radius: 0
+ }
+
+ .modal-fullscreen-lg-down .modal-body {
+ overflow-y: auto
+ }
+
+ .modal-fullscreen-lg-down .modal-footer {
+ border-radius: 0
+ }
+}
+
+@media (max-width: 1199.98px) {
+ .modal-fullscreen-xl-down {
+ width: 100vw;
+ max-width: none;
+ height: 100%;
+ margin: 0
+ }
+
+ .modal-fullscreen-xl-down .modal-content {
+ height: 100%;
+ border: 0;
+ border-radius: 0
+ }
+
+ .modal-fullscreen-xl-down .modal-header {
+ border-radius: 0
+ }
+
+ .modal-fullscreen-xl-down .modal-body {
+ overflow-y: auto
+ }
+
+ .modal-fullscreen-xl-down .modal-footer {
+ border-radius: 0
+ }
+}
+
+@media (max-width: 1439.98px) {
+ .modal-fullscreen-xxl-down {
+ width: 100vw;
+ max-width: none;
+ height: 100%;
+ margin: 0
+ }
+
+ .modal-fullscreen-xxl-down .modal-content {
+ height: 100%;
+ border: 0;
+ border-radius: 0
+ }
+
+ .modal-fullscreen-xxl-down .modal-header {
+ border-radius: 0
+ }
+
+ .modal-fullscreen-xxl-down .modal-body {
+ overflow-y: auto
+ }
+
+ .modal-fullscreen-xxl-down .modal-footer {
+ border-radius: 0
+ }
+}
+
+.tooltip {
+ position: absolute;
+ z-index: 1070;
+ display: block;
+ margin: 0;
+ font-family: var(--bs-font-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: .75rem;
+ word-wrap: break-word;
+ opacity: 0
+}
+
+.tooltip.show {
+ opacity: .9
+}
+
+.tooltip .tooltip-arrow {
+ position: absolute;
+ display: block;
+ width: .8rem;
+ height: .4rem
+}
+
+.tooltip .tooltip-arrow:before {
+ position: absolute;
+ content: "";
+ border-color: transparent;
+ border-style: solid
+}
+
+.bs-tooltip-auto[x-placement^=top], .bs-tooltip-top {
+ padding: .4rem 0
+}
+
+.bs-tooltip-auto[x-placement^=top] .tooltip-arrow, .bs-tooltip-top .tooltip-arrow {
+ bottom: 0
+}
+
+.bs-tooltip-auto[x-placement^=top] .tooltip-arrow:before, .bs-tooltip-top .tooltip-arrow:before {
+ top: 0;
+ border-width: .4rem .4rem 0;
+ border-top-color: #000
+}
+
+.bs-tooltip-auto[x-placement^=right], .bs-tooltip-right {
+ padding: 0 .4rem
+}
+
+.bs-tooltip-auto[x-placement^=right] .tooltip-arrow, .bs-tooltip-right .tooltip-arrow {
+ left: 0;
+ width: .4rem;
+ height: .8rem
+}
+
+.bs-tooltip-auto[x-placement^=right] .tooltip-arrow:before, .bs-tooltip-right .tooltip-arrow:before {
+ right: 0;
+ border-width: .4rem .4rem .4rem 0;
+ border-right-color: #000
+}
+
+.bs-tooltip-auto[x-placement^=bottom], .bs-tooltip-bottom {
+ padding: .4rem 0
+}
+
+.bs-tooltip-auto[x-placement^=bottom] .tooltip-arrow, .bs-tooltip-bottom .tooltip-arrow {
+ top: 0
+}
+
+.bs-tooltip-auto[x-placement^=bottom] .tooltip-arrow:before, .bs-tooltip-bottom .tooltip-arrow:before {
+ bottom: 0;
+ border-width: 0 .4rem .4rem;
+ border-bottom-color: #000
+}
+
+.bs-tooltip-auto[x-placement^=left], .bs-tooltip-left {
+ padding: 0 .4rem
+}
+
+.bs-tooltip-auto[x-placement^=left] .tooltip-arrow, .bs-tooltip-left .tooltip-arrow {
+ right: 0;
+ width: .4rem;
+ height: .8rem
+}
+
+.bs-tooltip-auto[x-placement^=left] .tooltip-arrow:before, .bs-tooltip-left .tooltip-arrow:before {
+ left: 0;
+ border-width: .4rem 0 .4rem .4rem;
+ border-left-color: #000
+}
+
+.tooltip-inner {
+ max-width: 200px;
+ padding: .25rem .5rem;
+ color: #fff;
+ text-align: center;
+ background-color: #000;
+ border-radius: .2rem
+}
+
+.popover {
+ position: absolute;
+ top: 0;
+ left: 0;
+ z-index: 1060;
+ display: block;
+ max-width: 276px;
+ font-family: var(--bs-font-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: .75rem;
+ word-wrap: break-word;
+ background-color: #fff;
+ background-clip: padding-box;
+ border: 1px solid rgba(0, 0, 0, .2);
+ border-radius: .3rem
+}
+
+.popover .popover-arrow {
+ position: absolute;
+ display: block;
+ width: 1rem;
+ height: .5rem;
+ margin: 0 .3rem
+}
+
+.popover .popover-arrow:after, .popover .popover-arrow:before {
+ position: absolute;
+ display: block;
+ content: "";
+ border-color: transparent;
+ border-style: solid
+}
+
+.bs-popover-auto[x-placement^=top], .bs-popover-top {
+ margin-bottom: .5rem
+}
+
+.bs-popover-auto[x-placement^=top] > .popover-arrow, .bs-popover-top > .popover-arrow {
+ bottom: calc(-.5rem - 1px)
+}
+
+.bs-popover-auto[x-placement^=top] > .popover-arrow:before, .bs-popover-top > .popover-arrow:before {
+ bottom: 0;
+ border-width: .5rem .5rem 0;
+ border-top-color: rgba(0, 0, 0, .25)
+}
+
+.bs-popover-auto[x-placement^=top] > .popover-arrow:after, .bs-popover-top > .popover-arrow:after {
+ bottom: 1px;
+ border-width: .5rem .5rem 0;
+ border-top-color: #fff
+}
+
+.bs-popover-auto[x-placement^=right], .bs-popover-right {
+ margin-left: .5rem
+}
+
+.bs-popover-auto[x-placement^=right] > .popover-arrow, .bs-popover-right > .popover-arrow {
+ left: calc(-.5rem - 1px);
+ width: .5rem;
+ height: 1rem;
+ margin: .3rem 0
+}
+
+.bs-popover-auto[x-placement^=right] > .popover-arrow:before, .bs-popover-right > .popover-arrow:before {
+ left: 0;
+ border-width: .5rem .5rem .5rem 0;
+ border-right-color: rgba(0, 0, 0, .25)
+}
+
+.bs-popover-auto[x-placement^=right] > .popover-arrow:after, .bs-popover-right > .popover-arrow:after {
+ left: 1px;
+ border-width: .5rem .5rem .5rem 0;
+ border-right-color: #fff
+}
+
+.bs-popover-auto[x-placement^=bottom], .bs-popover-bottom {
+ margin-top: .5rem
+}
+
+.bs-popover-auto[x-placement^=bottom] > .popover-arrow, .bs-popover-bottom > .popover-arrow {
+ top: calc(-.5rem - 1px)
+}
+
+.bs-popover-auto[x-placement^=bottom] > .popover-arrow:before, .bs-popover-bottom > .popover-arrow:before {
+ top: 0;
+ border-width: 0 .5rem .5rem;
+ border-bottom-color: rgba(0, 0, 0, .25)
+}
+
+.bs-popover-auto[x-placement^=bottom] > .popover-arrow:after, .bs-popover-bottom > .popover-arrow:after {
+ top: 1px;
+ border-width: 0 .5rem .5rem;
+ border-bottom-color: #fff
+}
+
+.bs-popover-auto[x-placement^=bottom] .popover-header:before, .bs-popover-bottom .popover-header:before {
+ position: absolute;
+ top: 0;
+ left: 50%;
+ display: block;
+ width: 1rem;
+ margin-left: -.5rem;
+ content: "";
+ border-bottom: 1px solid #f7f7f7
+}
+
+.bs-popover-auto[x-placement^=left], .bs-popover-left {
+ margin-right: .5rem
+}
+
+.bs-popover-auto[x-placement^=left] > .popover-arrow, .bs-popover-left > .popover-arrow {
+ right: calc(-.5rem - 1px);
+ width: .5rem;
+ height: 1rem;
+ margin: .3rem 0
+}
+
+.bs-popover-auto[x-placement^=left] > .popover-arrow:before, .bs-popover-left > .popover-arrow:before {
+ right: 0;
+ border-width: .5rem 0 .5rem .5rem;
+ border-left-color: rgba(0, 0, 0, .25)
+}
+
+.bs-popover-auto[x-placement^=left] > .popover-arrow:after, .bs-popover-left > .popover-arrow:after {
+ right: 1px;
+ border-width: .5rem 0 .5rem .5rem;
+ border-left-color: #fff
+}
+
+.popover-header {
+ padding: .5rem 1rem;
+ margin-bottom: 0;
+ font-size: .875rem;
+ color: #000;
+ background-color: #f7f7f7;
+ border-bottom: 1px solid #ebebeb;
+ border-top-left-radius: calc(.3rem - 1px);
+ border-top-right-radius: calc(.3rem - 1px)
+}
+
+.popover-header:empty {
+ display: none
+}
+
+.popover-body {
+ padding: 1rem;
+ color: #495057
+}
+
+.carousel {
+ position: relative
+}
+
+.carousel.pointer-event {
+ 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: transform .6s ease-in-out
+}
+
+@media (prefers-reduced-motion: reduce) {
+ .carousel-item {
+ transition: none
+ }
+}
+
+.carousel-item-next, .carousel-item-prev, .carousel-item.active {
+ display: block
+}
+
+.active.carousel-item-right, .carousel-item-next:not(.carousel-item-left) {
+ transform: translateX(100%)
+}
+
+.active.carousel-item-left, .carousel-item-prev:not(.carousel-item-right) {
+ transform: translateX(-100%)
+}
+
+.carousel-fade .carousel-item {
+ opacity: 0;
+ transition-property: opacity;
+ transform: none
+}
+
+.carousel-fade .carousel-item-next.carousel-item-left, .carousel-fade .carousel-item-prev.carousel-item-right, .carousel-fade .carousel-item.active {
+ z-index: 1;
+ opacity: 1
+}
+
+.carousel-fade .active.carousel-item-left, .carousel-fade .active.carousel-item-right {
+ z-index: 0;
+ opacity: 0;
+ transition: opacity 0s .6s
+}
+
+@media (prefers-reduced-motion: reduce) {
+ .carousel-fade .active.carousel-item-left, .carousel-fade .active.carousel-item-right {
+ transition: none
+ }
+}
+
+.carousel-control-next, .carousel-control-prev {
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ z-index: 1;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ width: 15%;
+ color: #fff;
+ text-align: center;
+ opacity: .5;
+ transition: opacity .15s ease
+}
+
+@media (prefers-reduced-motion: reduce) {
+ .carousel-control-next, .carousel-control-prev {
+ transition: none
+ }
+}
+
+.carousel-control-next:focus, .carousel-control-next:hover, .carousel-control-prev:focus, .carousel-control-prev:hover {
+ color: #fff;
+ text-decoration: none;
+ outline: 0;
+ opacity: .9
+}
+
+.carousel-control-prev {
+ left: 0
+}
+
+.carousel-control-next {
+ right: 0
+}
+
+.carousel-control-next-icon, .carousel-control-prev-icon {
+ display: inline-block;
+ width: 2rem;
+ height: 2rem;
+ background-repeat: no-repeat;
+ background-position: 50%;
+ background-size: 100% 100%
+}
+
+.carousel-control-prev-icon {
+ background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 16 16'%3E%3Cpath d='M11.354 1.646a.5.5 0 010 .708L5.707 8l5.647 5.646a.5.5 0 01-.708.708l-6-6a.5.5 0 010-.708l6-6a.5.5 0 01.708 0z'/%3E%3C/svg%3E")
+}
+
+.carousel-control-next-icon {
+ background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 16 16'%3E%3Cpath d='M4.646 1.646a.5.5 0 01.708 0l6 6a.5.5 0 010 .708l-6 6a.5.5 0 01-.708-.708L10.293 8 4.646 2.354a.5.5 0 010-.708z'/%3E%3C/svg%3E")
+}
+
+.carousel-indicators {
+ position: absolute;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 2;
+ display: flex;
+ justify-content: center;
+ padding-left: 0;
+ margin-right: 15%;
+ margin-left: 15%;
+ list-style: none
+}
+
+.carousel-indicators li {
+ box-sizing: initial;
+ 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 .6s ease
+}
+
+@media (prefers-reduced-motion: reduce) {
+ .carousel-indicators li {
+ transition: none
+ }
+}
+
+.carousel-indicators .active {
+ opacity: 1
+}
+
+.carousel-caption {
+ position: absolute;
+ right: 15%;
+ bottom: 1.25rem;
+ left: 15%;
+ padding-top: 1.25rem;
+ padding-bottom: 1.25rem;
+ color: #fff;
+ text-align: center
+}
+
+.carousel-dark .carousel-control-next-icon, .carousel-dark .carousel-control-prev-icon {
+ filter: invert(1) grayscale(100)
+}
+
+.carousel-dark .carousel-indicators li {
+ background-color: #000
+}
+
+.carousel-dark .carousel-caption {
+ color: #000
+}
+
+@keyframes spinner-border {
+ to {
+ transform: rotate(1turn)
+ }
+}
+
+.spinner-border {
+ display: inline-block;
+ width: 2rem;
+ height: 2rem;
+ vertical-align: text-bottom;
+ border: .25em solid;
+ border-right: .25em solid transparent;
+ border-radius: 50%;
+ animation: spinner-border .75s linear infinite
+}
+
+.spinner-border-sm {
+ width: 1rem;
+ height: 1rem;
+ border-width: .2em
+}
+
+@keyframes spinner-grow {
+ 0% {
+ transform: scale(0)
+ }
+ 50% {
+ opacity: 1;
+ transform: none
+ }
+}
+
+.spinner-grow {
+ display: inline-block;
+ width: 2rem;
+ height: 2rem;
+ vertical-align: text-bottom;
+ background-color: currentColor;
+ border-radius: 50%;
+ opacity: 0;
+ animation: spinner-grow .75s linear infinite
+}
+
+.spinner-grow-sm {
+ width: 1rem;
+ height: 1rem
+}
+
+.clearfix:after {
+ display: block;
+ clear: both;
+ content: ""
+}
+
+.link-primary {
+ color: #3b7ddd
+}
+
+.link-primary:focus, .link-primary:hover {
+ color: #7ca8e8
+}
+
+.link-secondary {
+ color: #6c757d
+}
+
+.link-secondary:focus, .link-secondary:hover {
+ color: #494f54
+}
+
+.link-success {
+ color: #28a745
+}
+
+.link-success:focus, .link-success:hover {
+ color: #48d368
+}
+
+.link-info {
+ color: #17a2b8
+}
+
+.link-info:focus, .link-info:hover {
+ color: #36cee6
+}
+
+.link-warning {
+ color: #ffc107
+}
+
+.link-warning:focus, .link-warning:hover {
+ color: #ffd454
+}
+
+.link-danger {
+ color: #dc3545
+}
+
+.link-danger:focus, .link-danger:hover {
+ color: #a71d2a
+}
+
+.link-light {
+ color: #f8f9fa
+}
+
+.link-light:focus, .link-light:hover {
+ color: #fff
+}
+
+.link-dark {
+ color: #212529
+}
+
+.link-dark:focus, .link-dark:hover {
+ color: #000
+}
+
+.ratio {
+ position: relative;
+ width: 100%
+}
+
+.ratio:before {
+ display: block;
+ padding-top: var(--aspect-ratio);
+ content: ""
+}
+
+.ratio > * {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%
+}
+
+.ratio-1x1 {
+ --aspect-ratio: 100%
+}
+
+.ratio-4x3 {
+ --aspect-ratio: 75%
+}
+
+.ratio-16x9 {
+ --aspect-ratio: 56.25%
+}
+
+.ratio-21x9 {
+ --aspect-ratio: 42.85714%
+}
+
+.fixed-top {
+ top: 0
+}
+
+.fixed-bottom, .fixed-top {
+ position: fixed;
+ right: 0;
+ left: 0;
+ z-index: 1030
+}
+
+.fixed-bottom {
+ bottom: 0
+}
+
+.sticky-top {
+ position: -webkit-sticky;
+ position: sticky;
+ top: 0;
+ z-index: 1020
+}
+
+@media (min-width: 576px) {
+ .sticky-sm-top {
+ position: -webkit-sticky;
+ position: sticky;
+ top: 0;
+ z-index: 1020
+ }
+}
+
+@media (min-width: 768px) {
+ .sticky-md-top {
+ position: -webkit-sticky;
+ position: sticky;
+ top: 0;
+ z-index: 1020
+ }
+}
+
+@media (min-width: 992px) {
+ .sticky-lg-top {
+ position: -webkit-sticky;
+ position: sticky;
+ top: 0;
+ z-index: 1020
+ }
+}
+
+@media (min-width: 1200px) {
+ .sticky-xl-top {
+ position: -webkit-sticky;
+ position: sticky;
+ top: 0;
+ z-index: 1020
+ }
+}
+
+@media (min-width: 1440px) {
+ .sticky-xxl-top {
+ position: -webkit-sticky;
+ position: sticky;
+ top: 0;
+ z-index: 1020
+ }
+}
+
+.visually-hidden, .visually-hidden-focusable:not(:focus) {
+ position: absolute !important;
+ width: 1px !important;
+ height: 1px !important;
+ padding: 0 !important;
+ margin: -1px !important;
+ overflow: hidden !important;
+ clip: rect(0, 0, 0, 0) !important;
+ white-space: nowrap !important;
+ border: 0 !important
+}
+
+.stretched-link:after {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 1;
+ content: ""
+}
+
+.text-truncate {
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap
+}
+
+.align-baseline {
+ vertical-align: initial !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
+}
+
+.float-left {
+ float: left !important
+}
+
+.float-right {
+ float: right !important
+}
+
+.float-none {
+ float: none !important
+}
+
+.overflow-auto {
+ overflow: auto !important
+}
+
+.overflow-hidden {
+ overflow: hidden !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: flex !important
+}
+
+.d-inline-flex {
+ display: inline-flex !important
+}
+
+.d-none {
+ display: none !important
+}
+
+.shadow {
+ box-shadow: 0 .1rem .2rem rgba(0, 0, 0, .05) !important
+}
+
+.shadow-sm {
+ box-shadow: 0 .05rem .2rem rgba(0, 0, 0, .05) !important
+}
+
+.shadow-lg {
+ box-shadow: 0 .2rem .2rem rgba(0, 0, 0, .05) !important
+}
+
+.shadow-none {
+ box-shadow: none !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
+}
+
+.top-0 {
+ top: 0 !important
+}
+
+.top-50 {
+ top: 50% !important
+}
+
+.top-100 {
+ top: 100% !important
+}
+
+.bottom-0 {
+ bottom: 0 !important
+}
+
+.bottom-50 {
+ bottom: 50% !important
+}
+
+.bottom-100 {
+ bottom: 100% !important
+}
+
+.left-0 {
+ left: 0 !important
+}
+
+.left-50 {
+ left: 50% !important
+}
+
+.left-100 {
+ left: 100% !important
+}
+
+.right-0 {
+ right: 0 !important
+}
+
+.right-50 {
+ right: 50% !important
+}
+
+.right-100 {
+ right: 100% !important
+}
+
+.translate-middle {
+ transform: translateX(-50%) translateY(-50%) !important
+}
+
+.border {
+ border: 1px solid #dee2e6 !important
+}
+
+.border-0 {
+ border: 0 !important
+}
+
+.border-top {
+ border-top: 1px solid #dee2e6 !important
+}
+
+.border-top-0 {
+ border-top: 0 !important
+}
+
+.border-right {
+ border-right: 1px solid #dee2e6 !important
+}
+
+.border-right-0 {
+ border-right: 0 !important
+}
+
+.border-bottom {
+ border-bottom: 1px solid #dee2e6 !important
+}
+
+.border-bottom-0 {
+ border-bottom: 0 !important
+}
+
+.border-left {
+ border-left: 1px solid #dee2e6 !important
+}
+
+.border-left-0 {
+ border-left: 0 !important
+}
+
+.border-primary {
+ border-color: #3b7ddd !important
+}
+
+.border-secondary {
+ border-color: #6c757d !important
+}
+
+.border-success {
+ border-color: #28a745 !important
+}
+
+.border-info {
+ border-color: #17a2b8 !important
+}
+
+.border-warning {
+ border-color: #ffc107 !important
+}
+
+.border-danger {
+ border-color: #dc3545 !important
+}
+
+.border-light {
+ border-color: #f8f9fa !important
+}
+
+.border-dark {
+ border-color: #212529 !important
+}
+
+.border-white {
+ border-color: #fff !important
+}
+
+.border-0 {
+ border-width: 0 !important
+}
+
+.border-1 {
+ border-width: 1px !important
+}
+
+.border-2 {
+ border-width: 2px !important
+}
+
+.border-3 {
+ border-width: 3px !important
+}
+
+.border-4 {
+ border-width: 4px !important
+}
+
+.border-5 {
+ border-width: 5px !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
+}
+
+.mw-100 {
+ max-width: 100% !important
+}
+
+.vw-100 {
+ width: 100vw !important
+}
+
+.min-vw-100 {
+ min-width: 100vw !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
+}
+
+.mh-100 {
+ max-height: 100% !important
+}
+
+.vh-100 {
+ height: 100vh !important
+}
+
+.min-vh-100 {
+ min-height: 100vh !important
+}
+
+.flex-fill {
+ flex: 1 1 auto !important
+}
+
+.flex-row {
+ flex-direction: row !important
+}
+
+.flex-column {
+ flex-direction: column !important
+}
+
+.flex-row-reverse {
+ flex-direction: row-reverse !important
+}
+
+.flex-column-reverse {
+ flex-direction: column-reverse !important
+}
+
+.flex-grow-0 {
+ flex-grow: 0 !important
+}
+
+.flex-grow-1 {
+ flex-grow: 1 !important
+}
+
+.flex-shrink-0 {
+ flex-shrink: 0 !important
+}
+
+.flex-shrink-1 {
+ flex-shrink: 1 !important
+}
+
+.flex-wrap {
+ flex-wrap: wrap !important
+}
+
+.flex-nowrap {
+ flex-wrap: nowrap !important
+}
+
+.flex-wrap-reverse {
+ flex-wrap: wrap-reverse !important
+}
+
+.justify-content-start {
+ justify-content: flex-start !important
+}
+
+.justify-content-end {
+ justify-content: flex-end !important
+}
+
+.justify-content-center {
+ justify-content: center !important
+}
+
+.justify-content-between {
+ justify-content: space-between !important
+}
+
+.justify-content-around {
+ justify-content: space-around !important
+}
+
+.justify-content-evenly {
+ justify-content: space-evenly !important
+}
+
+.align-items-start {
+ align-items: flex-start !important
+}
+
+.align-items-end {
+ align-items: flex-end !important
+}
+
+.align-items-center {
+ align-items: center !important
+}
+
+.align-items-baseline {
+ align-items: baseline !important
+}
+
+.align-items-stretch {
+ align-items: stretch !important
+}
+
+.align-content-start {
+ align-content: flex-start !important
+}
+
+.align-content-end {
+ align-content: flex-end !important
+}
+
+.align-content-center {
+ align-content: center !important
+}
+
+.align-content-between {
+ align-content: space-between !important
+}
+
+.align-content-around {
+ align-content: space-around !important
+}
+
+.align-content-stretch {
+ align-content: stretch !important
+}
+
+.align-self-auto {
+ align-self: auto !important
+}
+
+.align-self-start {
+ align-self: flex-start !important
+}
+
+.align-self-end {
+ align-self: flex-end !important
+}
+
+.align-self-center {
+ align-self: center !important
+}
+
+.align-self-baseline {
+ align-self: baseline !important
+}
+
+.align-self-stretch {
+ align-self: stretch !important
+}
+
+.order-first {
+ order: -1 !important
+}
+
+.order-0 {
+ order: 0 !important
+}
+
+.order-1 {
+ order: 1 !important
+}
+
+.order-2 {
+ order: 2 !important
+}
+
+.order-3 {
+ order: 3 !important
+}
+
+.order-4 {
+ order: 4 !important
+}
+
+.order-5 {
+ order: 5 !important
+}
+
+.order-last {
+ order: 6 !important
+}
+
+.m-0 {
+ margin: 0 !important
+}
+
+.m-1 {
+ margin: .25rem !important
+}
+
+.m-2 {
+ margin: .5rem !important
+}
+
+.m-3 {
+ margin: 1rem !important
+}
+
+.m-4 {
+ margin: 1.5rem !important
+}
+
+.m-5 {
+ margin: 3rem !important
+}
+
+.m-6 {
+ margin: 4.5rem !important
+}
+
+.m-7 {
+ margin: 6rem !important
+}
+
+.m-auto {
+ margin: auto !important
+}
+
+.mx-0 {
+ margin-right: 0 !important;
+ margin-left: 0 !important
+}
+
+.mx-1 {
+ margin-right: .25rem !important;
+ margin-left: .25rem !important
+}
+
+.mx-2 {
+ margin-right: .5rem !important;
+ margin-left: .5rem !important
+}
+
+.mx-3 {
+ margin-right: 1rem !important;
+ margin-left: 1rem !important
+}
+
+.mx-4 {
+ margin-right: 1.5rem !important;
+ margin-left: 1.5rem !important
+}
+
+.mx-5 {
+ margin-right: 3rem !important;
+ margin-left: 3rem !important
+}
+
+.mx-6 {
+ margin-right: 4.5rem !important;
+ margin-left: 4.5rem !important
+}
+
+.mx-7 {
+ margin-right: 6rem !important;
+ margin-left: 6rem !important
+}
+
+.mx-auto {
+ margin-right: auto !important;
+ margin-left: auto !important
+}
+
+.my-0 {
+ margin-top: 0 !important;
+ margin-bottom: 0 !important
+}
+
+.my-1 {
+ margin-top: .25rem !important;
+ margin-bottom: .25rem !important
+}
+
+.my-2 {
+ margin-top: .5rem !important;
+ margin-bottom: .5rem !important
+}
+
+.my-3 {
+ margin-top: 1rem !important;
+ margin-bottom: 1rem !important
+}
+
+.my-4 {
+ margin-top: 1.5rem !important;
+ margin-bottom: 1.5rem !important
+}
+
+.my-5 {
+ margin-top: 3rem !important;
+ margin-bottom: 3rem !important
+}
+
+.my-6 {
+ margin-top: 4.5rem !important;
+ margin-bottom: 4.5rem !important
+}
+
+.my-7 {
+ margin-top: 6rem !important;
+ margin-bottom: 6rem !important
+}
+
+.my-auto {
+ margin-top: auto !important;
+ margin-bottom: auto !important
+}
+
+.mt-0 {
+ margin-top: 0 !important
+}
+
+.mt-1 {
+ margin-top: .25rem !important
+}
+
+.mt-2 {
+ margin-top: .5rem !important
+}
+
+.mt-3 {
+ margin-top: 1rem !important
+}
+
+.mt-4 {
+ margin-top: 1.5rem !important
+}
+
+.mt-5 {
+ margin-top: 3rem !important
+}
+
+.mt-6 {
+ margin-top: 4.5rem !important
+}
+
+.mt-7 {
+ margin-top: 6rem !important
+}
+
+.mt-auto {
+ margin-top: auto !important
+}
+
+.mr-0 {
+ margin-right: 0 !important
+}
+
+.mr-1 {
+ margin-right: .25rem !important
+}
+
+.mr-2 {
+ margin-right: .5rem !important
+}
+
+.mr-3 {
+ margin-right: 1rem !important
+}
+
+.mr-4 {
+ margin-right: 1.5rem !important
+}
+
+.mr-5 {
+ margin-right: 3rem !important
+}
+
+.mr-6 {
+ margin-right: 4.5rem !important
+}
+
+.mr-7 {
+ margin-right: 6rem !important
+}
+
+.mr-auto {
+ margin-right: auto !important
+}
+
+.mb-0 {
+ margin-bottom: 0 !important
+}
+
+.mb-1 {
+ margin-bottom: .25rem !important
+}
+
+.mb-2 {
+ margin-bottom: .5rem !important
+}
+
+.mb-3 {
+ margin-bottom: 1rem !important
+}
+
+.mb-4 {
+ margin-bottom: 1.5rem !important
+}
+
+.mb-5 {
+ margin-bottom: 3rem !important
+}
+
+.mb-6 {
+ margin-bottom: 4.5rem !important
+}
+
+.mb-7 {
+ margin-bottom: 6rem !important
+}
+
+.mb-auto {
+ margin-bottom: auto !important
+}
+
+.ml-0 {
+ margin-left: 0 !important
+}
+
+.ml-1 {
+ margin-left: .25rem !important
+}
+
+.ml-2 {
+ margin-left: .5rem !important
+}
+
+.ml-3 {
+ margin-left: 1rem !important
+}
+
+.ml-4 {
+ margin-left: 1.5rem !important
+}
+
+.ml-5 {
+ margin-left: 3rem !important
+}
+
+.ml-6 {
+ margin-left: 4.5rem !important
+}
+
+.ml-7 {
+ margin-left: 6rem !important
+}
+
+.ml-auto {
+ margin-left: auto !important
+}
+
+.m-n1 {
+ margin: -.25rem !important
+}
+
+.m-n2 {
+ margin: -.5rem !important
+}
+
+.m-n3 {
+ margin: -1rem !important
+}
+
+.m-n4 {
+ margin: -1.5rem !important
+}
+
+.m-n5 {
+ margin: -3rem !important
+}
+
+.m-n6 {
+ margin: -4.5rem !important
+}
+
+.m-n7 {
+ margin: -6rem !important
+}
+
+.mx-n1 {
+ margin-right: -.25rem !important;
+ margin-left: -.25rem !important
+}
+
+.mx-n2 {
+ margin-right: -.5rem !important;
+ margin-left: -.5rem !important
+}
+
+.mx-n3 {
+ margin-right: -1rem !important;
+ margin-left: -1rem !important
+}
+
+.mx-n4 {
+ margin-right: -1.5rem !important;
+ margin-left: -1.5rem !important
+}
+
+.mx-n5 {
+ margin-right: -3rem !important;
+ margin-left: -3rem !important
+}
+
+.mx-n6 {
+ margin-right: -4.5rem !important;
+ margin-left: -4.5rem !important
+}
+
+.mx-n7 {
+ margin-right: -6rem !important;
+ margin-left: -6rem !important
+}
+
+.my-n1 {
+ margin-top: -.25rem !important;
+ margin-bottom: -.25rem !important
+}
+
+.my-n2 {
+ margin-top: -.5rem !important;
+ margin-bottom: -.5rem !important
+}
+
+.my-n3 {
+ margin-top: -1rem !important;
+ margin-bottom: -1rem !important
+}
+
+.my-n4 {
+ margin-top: -1.5rem !important;
+ margin-bottom: -1.5rem !important
+}
+
+.my-n5 {
+ margin-top: -3rem !important;
+ margin-bottom: -3rem !important
+}
+
+.my-n6 {
+ margin-top: -4.5rem !important;
+ margin-bottom: -4.5rem !important
+}
+
+.my-n7 {
+ margin-top: -6rem !important;
+ margin-bottom: -6rem !important
+}
+
+.mt-n1 {
+ margin-top: -.25rem !important
+}
+
+.mt-n2 {
+ margin-top: -.5rem !important
+}
+
+.mt-n3 {
+ margin-top: -1rem !important
+}
+
+.mt-n4 {
+ margin-top: -1.5rem !important
+}
+
+.mt-n5 {
+ margin-top: -3rem !important
+}
+
+.mt-n6 {
+ margin-top: -4.5rem !important
+}
+
+.mt-n7 {
+ margin-top: -6rem !important
+}
+
+.mr-n1 {
+ margin-right: -.25rem !important
+}
+
+.mr-n2 {
+ margin-right: -.5rem !important
+}
+
+.mr-n3 {
+ margin-right: -1rem !important
+}
+
+.mr-n4 {
+ margin-right: -1.5rem !important
+}
+
+.mr-n5 {
+ margin-right: -3rem !important
+}
+
+.mr-n6 {
+ margin-right: -4.5rem !important
+}
+
+.mr-n7 {
+ margin-right: -6rem !important
+}
+
+.mb-n1 {
+ margin-bottom: -.25rem !important
+}
+
+.mb-n2 {
+ margin-bottom: -.5rem !important
+}
+
+.mb-n3 {
+ margin-bottom: -1rem !important
+}
+
+.mb-n4 {
+ margin-bottom: -1.5rem !important
+}
+
+.mb-n5 {
+ margin-bottom: -3rem !important
+}
+
+.mb-n6 {
+ margin-bottom: -4.5rem !important
+}
+
+.mb-n7 {
+ margin-bottom: -6rem !important
+}
+
+.ml-n1 {
+ margin-left: -.25rem !important
+}
+
+.ml-n2 {
+ margin-left: -.5rem !important
+}
+
+.ml-n3 {
+ margin-left: -1rem !important
+}
+
+.ml-n4 {
+ margin-left: -1.5rem !important
+}
+
+.ml-n5 {
+ margin-left: -3rem !important
+}
+
+.ml-n6 {
+ margin-left: -4.5rem !important
+}
+
+.ml-n7 {
+ margin-left: -6rem !important
+}
+
+.p-0 {
+ padding: 0 !important
+}
+
+.p-1 {
+ padding: .25rem !important
+}
+
+.p-2 {
+ padding: .5rem !important
+}
+
+.p-3 {
+ padding: 1rem !important
+}
+
+.p-4 {
+ padding: 1.5rem !important
+}
+
+.p-5 {
+ padding: 3rem !important
+}
+
+.p-6 {
+ padding: 4.5rem !important
+}
+
+.p-7 {
+ padding: 6rem !important
+}
+
+.px-0 {
+ padding-right: 0 !important;
+ padding-left: 0 !important
+}
+
+.px-1 {
+ padding-right: .25rem !important;
+ padding-left: .25rem !important
+}
+
+.px-2 {
+ padding-right: .5rem !important;
+ padding-left: .5rem !important
+}
+
+.px-3 {
+ padding-right: 1rem !important;
+ padding-left: 1rem !important
+}
+
+.px-4 {
+ padding-right: 1.5rem !important;
+ padding-left: 1.5rem !important
+}
+
+.px-5 {
+ padding-right: 3rem !important;
+ padding-left: 3rem !important
+}
+
+.px-6 {
+ padding-right: 4.5rem !important;
+ padding-left: 4.5rem !important
+}
+
+.px-7 {
+ padding-right: 6rem !important;
+ padding-left: 6rem !important
+}
+
+.py-0 {
+ padding-top: 0 !important;
+ padding-bottom: 0 !important
+}
+
+.py-1 {
+ padding-top: .25rem !important;
+ padding-bottom: .25rem !important
+}
+
+.py-2 {
+ padding-top: .5rem !important;
+ padding-bottom: .5rem !important
+}
+
+.py-3 {
+ padding-top: 1rem !important;
+ padding-bottom: 1rem !important
+}
+
+.py-4 {
+ padding-top: 1.5rem !important;
+ padding-bottom: 1.5rem !important
+}
+
+.py-5 {
+ padding-top: 3rem !important;
+ padding-bottom: 3rem !important
+}
+
+.py-6 {
+ padding-top: 4.5rem !important;
+ padding-bottom: 4.5rem !important
+}
+
+.py-7 {
+ padding-top: 6rem !important;
+ padding-bottom: 6rem !important
+}
+
+.pt-0 {
+ padding-top: 0 !important
+}
+
+.pt-1 {
+ padding-top: .25rem !important
+}
+
+.pt-2 {
+ padding-top: .5rem !important
+}
+
+.pt-3 {
+ padding-top: 1rem !important
+}
+
+.pt-4 {
+ padding-top: 1.5rem !important
+}
+
+.pt-5 {
+ padding-top: 3rem !important
+}
+
+.pt-6 {
+ padding-top: 4.5rem !important
+}
+
+.pt-7 {
+ padding-top: 6rem !important
+}
+
+.pr-0 {
+ padding-right: 0 !important
+}
+
+.pr-1 {
+ padding-right: .25rem !important
+}
+
+.pr-2 {
+ padding-right: .5rem !important
+}
+
+.pr-3 {
+ padding-right: 1rem !important
+}
+
+.pr-4 {
+ padding-right: 1.5rem !important
+}
+
+.pr-5 {
+ padding-right: 3rem !important
+}
+
+.pr-6 {
+ padding-right: 4.5rem !important
+}
+
+.pr-7 {
+ padding-right: 6rem !important
+}
+
+.pb-0 {
+ padding-bottom: 0 !important
+}
+
+.pb-1 {
+ padding-bottom: .25rem !important
+}
+
+.pb-2 {
+ padding-bottom: .5rem !important
+}
+
+.pb-3 {
+ padding-bottom: 1rem !important
+}
+
+.pb-4 {
+ padding-bottom: 1.5rem !important
+}
+
+.pb-5 {
+ padding-bottom: 3rem !important
+}
+
+.pb-6 {
+ padding-bottom: 4.5rem !important
+}
+
+.pb-7 {
+ padding-bottom: 6rem !important
+}
+
+.pl-0 {
+ padding-left: 0 !important
+}
+
+.pl-1 {
+ padding-left: .25rem !important
+}
+
+.pl-2 {
+ padding-left: .5rem !important
+}
+
+.pl-3 {
+ padding-left: 1rem !important
+}
+
+.pl-4 {
+ padding-left: 1.5rem !important
+}
+
+.pl-5 {
+ padding-left: 3rem !important
+}
+
+.pl-6 {
+ padding-left: 4.5rem !important
+}
+
+.pl-7 {
+ padding-left: 6rem !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: 600 !important
+}
+
+.font-weight-bolder {
+ font-weight: bolder !important
+}
+
+.text-lowercase {
+ text-transform: lowercase !important
+}
+
+.text-uppercase {
+ text-transform: uppercase !important
+}
+
+.text-capitalize {
+ text-transform: capitalize !important
+}
+
+.text-left {
+ text-align: left !important
+}
+
+.text-right {
+ text-align: right !important
+}
+
+.text-center {
+ text-align: center !important
+}
+
+.text-primary {
+ color: #3b7ddd !important
+}
+
+.text-secondary {
+ color: #6c757d !important
+}
+
+.text-success {
+ color: #28a745 !important
+}
+
+.text-info {
+ color: #17a2b8 !important
+}
+
+.text-warning {
+ color: #ffc107 !important
+}
+
+.text-danger {
+ color: #dc3545 !important
+}
+
+.text-light {
+ color: #f8f9fa !important
+}
+
+.text-dark {
+ color: #212529 !important
+}
+
+.text-white {
+ color: #fff !important
+}
+
+.text-body {
+ color: #495057 !important
+}
+
+.text-muted {
+ color: #6c757d !important
+}
+
+.text-black-50 {
+ color: rgba(0, 0, 0, .5) !important
+}
+
+.text-white-50 {
+ color: hsla(0, 0%, 100%, .5) !important
+}
+
+.text-reset {
+ color: inherit !important
+}
+
+.lh-1 {
+ line-height: 1 !important
+}
+
+.lh-base, .lh-lg, .lh-sm {
+ line-height: 1.5 !important
+}
+
+.bg-primary {
+ background-color: #3b7ddd !important
+}
+
+.bg-secondary {
+ background-color: #6c757d !important
+}
+
+.bg-success {
+ background-color: #28a745 !important
+}
+
+.bg-info {
+ background-color: #17a2b8 !important
+}
+
+.bg-warning {
+ background-color: #ffc107 !important
+}
+
+.bg-danger {
+ background-color: #dc3545 !important
+}
+
+.bg-light {
+ background-color: #f8f9fa !important
+}
+
+.bg-dark {
+ background-color: #212529 !important
+}
+
+.bg-body {
+ background-color: #f7f7fc !important
+}
+
+.bg-white {
+ background-color: #fff !important
+}
+
+.bg-transparent {
+ background-color: transparent !important
+}
+
+.bg-gradient {
+ background-image: var(--bs-gradient) !important
+}
+
+.text-wrap {
+ white-space: normal !important
+}
+
+.text-nowrap {
+ white-space: nowrap !important
+}
+
+.text-decoration-none {
+ text-decoration: none !important
+}
+
+.text-decoration-underline {
+ text-decoration: underline !important
+}
+
+.text-decoration-line-through {
+ text-decoration: line-through !important
+}
+
+.font-italic {
+ font-style: italic !important
+}
+
+.font-normal {
+ font-style: normal !important
+}
+
+.text-break {
+ word-wrap: break-word !important;
+ word-break: break-word !important
+}
+
+.font-monospace {
+ font-family: var(--bs-font-monospace) !important
+}
+
+.user-select-all {
+ -webkit-user-select: all !important;
+ -ms-user-select: all !important;
+ user-select: all !important
+}
+
+.user-select-auto {
+ -webkit-user-select: auto !important;
+ -ms-user-select: auto !important;
+ user-select: auto !important
+}
+
+.user-select-none {
+ -webkit-user-select: none !important;
+ -ms-user-select: none !important;
+ user-select: none !important
+}
+
+.pe-none {
+ pointer-events: none !important
+}
+
+.pe-auto {
+ pointer-events: auto !important
+}
+
+.rounded {
+ border-radius: .2rem !important
+}
+
+.rounded-circle {
+ border-radius: 50% !important
+}
+
+.rounded-pill {
+ border-radius: 50rem !important
+}
+
+.rounded-0 {
+ border-radius: 0 !important
+}
+
+.rounded-top {
+ border-top-left-radius: .2rem !important
+}
+
+.rounded-right, .rounded-top {
+ border-top-right-radius: .2rem !important
+}
+
+.rounded-bottom, .rounded-right {
+ border-bottom-right-radius: .2rem !important
+}
+
+.rounded-bottom, .rounded-left {
+ border-bottom-left-radius: .2rem !important
+}
+
+.rounded-left {
+ border-top-left-radius: .2rem !important
+}
+
+.visible {
+ visibility: visible !important
+}
+
+.invisible {
+ visibility: hidden !important
+}
+
+@media (min-width: 576px) {
+ .float-sm-left {
+ float: left !important
+ }
+
+ .float-sm-right {
+ float: right !important
+ }
+
+ .float-sm-none {
+ float: 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: flex !important
+ }
+
+ .d-sm-inline-flex {
+ display: inline-flex !important
+ }
+
+ .d-sm-none {
+ display: none !important
+ }
+
+ .flex-sm-fill {
+ flex: 1 1 auto !important
+ }
+
+ .flex-sm-row {
+ flex-direction: row !important
+ }
+
+ .flex-sm-column {
+ flex-direction: column !important
+ }
+
+ .flex-sm-row-reverse {
+ flex-direction: row-reverse !important
+ }
+
+ .flex-sm-column-reverse {
+ flex-direction: column-reverse !important
+ }
+
+ .flex-sm-grow-0 {
+ flex-grow: 0 !important
+ }
+
+ .flex-sm-grow-1 {
+ flex-grow: 1 !important
+ }
+
+ .flex-sm-shrink-0 {
+ flex-shrink: 0 !important
+ }
+
+ .flex-sm-shrink-1 {
+ flex-shrink: 1 !important
+ }
+
+ .flex-sm-wrap {
+ flex-wrap: wrap !important
+ }
+
+ .flex-sm-nowrap {
+ flex-wrap: nowrap !important
+ }
+
+ .flex-sm-wrap-reverse {
+ flex-wrap: wrap-reverse !important
+ }
+
+ .justify-content-sm-start {
+ justify-content: flex-start !important
+ }
+
+ .justify-content-sm-end {
+ justify-content: flex-end !important
+ }
+
+ .justify-content-sm-center {
+ justify-content: center !important
+ }
+
+ .justify-content-sm-between {
+ justify-content: space-between !important
+ }
+
+ .justify-content-sm-around {
+ justify-content: space-around !important
+ }
+
+ .justify-content-sm-evenly {
+ justify-content: space-evenly !important
+ }
+
+ .align-items-sm-start {
+ align-items: flex-start !important
+ }
+
+ .align-items-sm-end {
+ align-items: flex-end !important
+ }
+
+ .align-items-sm-center {
+ align-items: center !important
+ }
+
+ .align-items-sm-baseline {
+ align-items: baseline !important
+ }
+
+ .align-items-sm-stretch {
+ align-items: stretch !important
+ }
+
+ .align-content-sm-start {
+ align-content: flex-start !important
+ }
+
+ .align-content-sm-end {
+ align-content: flex-end !important
+ }
+
+ .align-content-sm-center {
+ align-content: center !important
+ }
+
+ .align-content-sm-between {
+ align-content: space-between !important
+ }
+
+ .align-content-sm-around {
+ align-content: space-around !important
+ }
+
+ .align-content-sm-stretch {
+ align-content: stretch !important
+ }
+
+ .align-self-sm-auto {
+ align-self: auto !important
+ }
+
+ .align-self-sm-start {
+ align-self: flex-start !important
+ }
+
+ .align-self-sm-end {
+ align-self: flex-end !important
+ }
+
+ .align-self-sm-center {
+ align-self: center !important
+ }
+
+ .align-self-sm-baseline {
+ align-self: baseline !important
+ }
+
+ .align-self-sm-stretch {
+ align-self: stretch !important
+ }
+
+ .order-sm-first {
+ order: -1 !important
+ }
+
+ .order-sm-0 {
+ order: 0 !important
+ }
+
+ .order-sm-1 {
+ order: 1 !important
+ }
+
+ .order-sm-2 {
+ order: 2 !important
+ }
+
+ .order-sm-3 {
+ order: 3 !important
+ }
+
+ .order-sm-4 {
+ order: 4 !important
+ }
+
+ .order-sm-5 {
+ order: 5 !important
+ }
+
+ .order-sm-last {
+ order: 6 !important
+ }
+
+ .m-sm-0 {
+ margin: 0 !important
+ }
+
+ .m-sm-1 {
+ margin: .25rem !important
+ }
+
+ .m-sm-2 {
+ margin: .5rem !important
+ }
+
+ .m-sm-3 {
+ margin: 1rem !important
+ }
+
+ .m-sm-4 {
+ margin: 1.5rem !important
+ }
+
+ .m-sm-5 {
+ margin: 3rem !important
+ }
+
+ .m-sm-6 {
+ margin: 4.5rem !important
+ }
+
+ .m-sm-7 {
+ margin: 6rem !important
+ }
+
+ .m-sm-auto {
+ margin: auto !important
+ }
+
+ .mx-sm-0 {
+ margin-right: 0 !important;
+ margin-left: 0 !important
+ }
+
+ .mx-sm-1 {
+ margin-right: .25rem !important;
+ margin-left: .25rem !important
+ }
+
+ .mx-sm-2 {
+ margin-right: .5rem !important;
+ margin-left: .5rem !important
+ }
+
+ .mx-sm-3 {
+ margin-right: 1rem !important;
+ margin-left: 1rem !important
+ }
+
+ .mx-sm-4 {
+ margin-right: 1.5rem !important;
+ margin-left: 1.5rem !important
+ }
+
+ .mx-sm-5 {
+ margin-right: 3rem !important;
+ margin-left: 3rem !important
+ }
+
+ .mx-sm-6 {
+ margin-right: 4.5rem !important;
+ margin-left: 4.5rem !important
+ }
+
+ .mx-sm-7 {
+ margin-right: 6rem !important;
+ margin-left: 6rem !important
+ }
+
+ .mx-sm-auto {
+ margin-right: auto !important;
+ margin-left: auto !important
+ }
+
+ .my-sm-0 {
+ margin-top: 0 !important;
+ margin-bottom: 0 !important
+ }
+
+ .my-sm-1 {
+ margin-top: .25rem !important;
+ margin-bottom: .25rem !important
+ }
+
+ .my-sm-2 {
+ margin-top: .5rem !important;
+ margin-bottom: .5rem !important
+ }
+
+ .my-sm-3 {
+ margin-top: 1rem !important;
+ margin-bottom: 1rem !important
+ }
+
+ .my-sm-4 {
+ margin-top: 1.5rem !important;
+ margin-bottom: 1.5rem !important
+ }
+
+ .my-sm-5 {
+ margin-top: 3rem !important;
+ margin-bottom: 3rem !important
+ }
+
+ .my-sm-6 {
+ margin-top: 4.5rem !important;
+ margin-bottom: 4.5rem !important
+ }
+
+ .my-sm-7 {
+ margin-top: 6rem !important;
+ margin-bottom: 6rem !important
+ }
+
+ .my-sm-auto {
+ margin-top: auto !important;
+ margin-bottom: auto !important
+ }
+
+ .mt-sm-0 {
+ margin-top: 0 !important
+ }
+
+ .mt-sm-1 {
+ margin-top: .25rem !important
+ }
+
+ .mt-sm-2 {
+ margin-top: .5rem !important
+ }
+
+ .mt-sm-3 {
+ margin-top: 1rem !important
+ }
+
+ .mt-sm-4 {
+ margin-top: 1.5rem !important
+ }
+
+ .mt-sm-5 {
+ margin-top: 3rem !important
+ }
+
+ .mt-sm-6 {
+ margin-top: 4.5rem !important
+ }
+
+ .mt-sm-7 {
+ margin-top: 6rem !important
+ }
+
+ .mt-sm-auto {
+ margin-top: auto !important
+ }
+
+ .mr-sm-0 {
+ margin-right: 0 !important
+ }
+
+ .mr-sm-1 {
+ margin-right: .25rem !important
+ }
+
+ .mr-sm-2 {
+ margin-right: .5rem !important
+ }
+
+ .mr-sm-3 {
+ margin-right: 1rem !important
+ }
+
+ .mr-sm-4 {
+ margin-right: 1.5rem !important
+ }
+
+ .mr-sm-5 {
+ margin-right: 3rem !important
+ }
+
+ .mr-sm-6 {
+ margin-right: 4.5rem !important
+ }
+
+ .mr-sm-7 {
+ margin-right: 6rem !important
+ }
+
+ .mr-sm-auto {
+ margin-right: auto !important
+ }
+
+ .mb-sm-0 {
+ margin-bottom: 0 !important
+ }
+
+ .mb-sm-1 {
+ margin-bottom: .25rem !important
+ }
+
+ .mb-sm-2 {
+ margin-bottom: .5rem !important
+ }
+
+ .mb-sm-3 {
+ margin-bottom: 1rem !important
+ }
+
+ .mb-sm-4 {
+ margin-bottom: 1.5rem !important
+ }
+
+ .mb-sm-5 {
+ margin-bottom: 3rem !important
+ }
+
+ .mb-sm-6 {
+ margin-bottom: 4.5rem !important
+ }
+
+ .mb-sm-7 {
+ margin-bottom: 6rem !important
+ }
+
+ .mb-sm-auto {
+ margin-bottom: auto !important
+ }
+
+ .ml-sm-0 {
+ margin-left: 0 !important
+ }
+
+ .ml-sm-1 {
+ margin-left: .25rem !important
+ }
+
+ .ml-sm-2 {
+ margin-left: .5rem !important
+ }
+
+ .ml-sm-3 {
+ margin-left: 1rem !important
+ }
+
+ .ml-sm-4 {
+ margin-left: 1.5rem !important
+ }
+
+ .ml-sm-5 {
+ margin-left: 3rem !important
+ }
+
+ .ml-sm-6 {
+ margin-left: 4.5rem !important
+ }
+
+ .ml-sm-7 {
+ margin-left: 6rem !important
+ }
+
+ .ml-sm-auto {
+ margin-left: auto !important
+ }
+
+ .m-sm-n1 {
+ margin: -.25rem !important
+ }
+
+ .m-sm-n2 {
+ margin: -.5rem !important
+ }
+
+ .m-sm-n3 {
+ margin: -1rem !important
+ }
+
+ .m-sm-n4 {
+ margin: -1.5rem !important
+ }
+
+ .m-sm-n5 {
+ margin: -3rem !important
+ }
+
+ .m-sm-n6 {
+ margin: -4.5rem !important
+ }
+
+ .m-sm-n7 {
+ margin: -6rem !important
+ }
+
+ .mx-sm-n1 {
+ margin-right: -.25rem !important;
+ margin-left: -.25rem !important
+ }
+
+ .mx-sm-n2 {
+ margin-right: -.5rem !important;
+ margin-left: -.5rem !important
+ }
+
+ .mx-sm-n3 {
+ margin-right: -1rem !important;
+ margin-left: -1rem !important
+ }
+
+ .mx-sm-n4 {
+ margin-right: -1.5rem !important;
+ margin-left: -1.5rem !important
+ }
+
+ .mx-sm-n5 {
+ margin-right: -3rem !important;
+ margin-left: -3rem !important
+ }
+
+ .mx-sm-n6 {
+ margin-right: -4.5rem !important;
+ margin-left: -4.5rem !important
+ }
+
+ .mx-sm-n7 {
+ margin-right: -6rem !important;
+ margin-left: -6rem !important
+ }
+
+ .my-sm-n1 {
+ margin-top: -.25rem !important;
+ margin-bottom: -.25rem !important
+ }
+
+ .my-sm-n2 {
+ margin-top: -.5rem !important;
+ margin-bottom: -.5rem !important
+ }
+
+ .my-sm-n3 {
+ margin-top: -1rem !important;
+ margin-bottom: -1rem !important
+ }
+
+ .my-sm-n4 {
+ margin-top: -1.5rem !important;
+ margin-bottom: -1.5rem !important
+ }
+
+ .my-sm-n5 {
+ margin-top: -3rem !important;
+ margin-bottom: -3rem !important
+ }
+
+ .my-sm-n6 {
+ margin-top: -4.5rem !important;
+ margin-bottom: -4.5rem !important
+ }
+
+ .my-sm-n7 {
+ margin-top: -6rem !important;
+ margin-bottom: -6rem !important
+ }
+
+ .mt-sm-n1 {
+ margin-top: -.25rem !important
+ }
+
+ .mt-sm-n2 {
+ margin-top: -.5rem !important
+ }
+
+ .mt-sm-n3 {
+ margin-top: -1rem !important
+ }
+
+ .mt-sm-n4 {
+ margin-top: -1.5rem !important
+ }
+
+ .mt-sm-n5 {
+ margin-top: -3rem !important
+ }
+
+ .mt-sm-n6 {
+ margin-top: -4.5rem !important
+ }
+
+ .mt-sm-n7 {
+ margin-top: -6rem !important
+ }
+
+ .mr-sm-n1 {
+ margin-right: -.25rem !important
+ }
+
+ .mr-sm-n2 {
+ margin-right: -.5rem !important
+ }
+
+ .mr-sm-n3 {
+ margin-right: -1rem !important
+ }
+
+ .mr-sm-n4 {
+ margin-right: -1.5rem !important
+ }
+
+ .mr-sm-n5 {
+ margin-right: -3rem !important
+ }
+
+ .mr-sm-n6 {
+ margin-right: -4.5rem !important
+ }
+
+ .mr-sm-n7 {
+ margin-right: -6rem !important
+ }
+
+ .mb-sm-n1 {
+ margin-bottom: -.25rem !important
+ }
+
+ .mb-sm-n2 {
+ margin-bottom: -.5rem !important
+ }
+
+ .mb-sm-n3 {
+ margin-bottom: -1rem !important
+ }
+
+ .mb-sm-n4 {
+ margin-bottom: -1.5rem !important
+ }
+
+ .mb-sm-n5 {
+ margin-bottom: -3rem !important
+ }
+
+ .mb-sm-n6 {
+ margin-bottom: -4.5rem !important
+ }
+
+ .mb-sm-n7 {
+ margin-bottom: -6rem !important
+ }
+
+ .ml-sm-n1 {
+ margin-left: -.25rem !important
+ }
+
+ .ml-sm-n2 {
+ margin-left: -.5rem !important
+ }
+
+ .ml-sm-n3 {
+ margin-left: -1rem !important
+ }
+
+ .ml-sm-n4 {
+ margin-left: -1.5rem !important
+ }
+
+ .ml-sm-n5 {
+ margin-left: -3rem !important
+ }
+
+ .ml-sm-n6 {
+ margin-left: -4.5rem !important
+ }
+
+ .ml-sm-n7 {
+ margin-left: -6rem !important
+ }
+
+ .p-sm-0 {
+ padding: 0 !important
+ }
+
+ .p-sm-1 {
+ padding: .25rem !important
+ }
+
+ .p-sm-2 {
+ padding: .5rem !important
+ }
+
+ .p-sm-3 {
+ padding: 1rem !important
+ }
+
+ .p-sm-4 {
+ padding: 1.5rem !important
+ }
+
+ .p-sm-5 {
+ padding: 3rem !important
+ }
+
+ .p-sm-6 {
+ padding: 4.5rem !important
+ }
+
+ .p-sm-7 {
+ padding: 6rem !important
+ }
+
+ .px-sm-0 {
+ padding-right: 0 !important;
+ padding-left: 0 !important
+ }
+
+ .px-sm-1 {
+ padding-right: .25rem !important;
+ padding-left: .25rem !important
+ }
+
+ .px-sm-2 {
+ padding-right: .5rem !important;
+ padding-left: .5rem !important
+ }
+
+ .px-sm-3 {
+ padding-right: 1rem !important;
+ padding-left: 1rem !important
+ }
+
+ .px-sm-4 {
+ padding-right: 1.5rem !important;
+ padding-left: 1.5rem !important
+ }
+
+ .px-sm-5 {
+ padding-right: 3rem !important;
+ padding-left: 3rem !important
+ }
+
+ .px-sm-6 {
+ padding-right: 4.5rem !important;
+ padding-left: 4.5rem !important
+ }
+
+ .px-sm-7 {
+ padding-right: 6rem !important;
+ padding-left: 6rem !important
+ }
+
+ .py-sm-0 {
+ padding-top: 0 !important;
+ padding-bottom: 0 !important
+ }
+
+ .py-sm-1 {
+ padding-top: .25rem !important;
+ padding-bottom: .25rem !important
+ }
+
+ .py-sm-2 {
+ padding-top: .5rem !important;
+ padding-bottom: .5rem !important
+ }
+
+ .py-sm-3 {
+ padding-top: 1rem !important;
+ padding-bottom: 1rem !important
+ }
+
+ .py-sm-4 {
+ padding-top: 1.5rem !important;
+ padding-bottom: 1.5rem !important
+ }
+
+ .py-sm-5 {
+ padding-top: 3rem !important;
+ padding-bottom: 3rem !important
+ }
+
+ .py-sm-6 {
+ padding-top: 4.5rem !important;
+ padding-bottom: 4.5rem !important
+ }
+
+ .py-sm-7 {
+ padding-top: 6rem !important;
+ padding-bottom: 6rem !important
+ }
+
+ .pt-sm-0 {
+ padding-top: 0 !important
+ }
+
+ .pt-sm-1 {
+ padding-top: .25rem !important
+ }
+
+ .pt-sm-2 {
+ padding-top: .5rem !important
+ }
+
+ .pt-sm-3 {
+ padding-top: 1rem !important
+ }
+
+ .pt-sm-4 {
+ padding-top: 1.5rem !important
+ }
+
+ .pt-sm-5 {
+ padding-top: 3rem !important
+ }
+
+ .pt-sm-6 {
+ padding-top: 4.5rem !important
+ }
+
+ .pt-sm-7 {
+ padding-top: 6rem !important
+ }
+
+ .pr-sm-0 {
+ padding-right: 0 !important
+ }
+
+ .pr-sm-1 {
+ padding-right: .25rem !important
+ }
+
+ .pr-sm-2 {
+ padding-right: .5rem !important
+ }
+
+ .pr-sm-3 {
+ padding-right: 1rem !important
+ }
+
+ .pr-sm-4 {
+ padding-right: 1.5rem !important
+ }
+
+ .pr-sm-5 {
+ padding-right: 3rem !important
+ }
+
+ .pr-sm-6 {
+ padding-right: 4.5rem !important
+ }
+
+ .pr-sm-7 {
+ padding-right: 6rem !important
+ }
+
+ .pb-sm-0 {
+ padding-bottom: 0 !important
+ }
+
+ .pb-sm-1 {
+ padding-bottom: .25rem !important
+ }
+
+ .pb-sm-2 {
+ padding-bottom: .5rem !important
+ }
+
+ .pb-sm-3 {
+ padding-bottom: 1rem !important
+ }
+
+ .pb-sm-4 {
+ padding-bottom: 1.5rem !important
+ }
+
+ .pb-sm-5 {
+ padding-bottom: 3rem !important
+ }
+
+ .pb-sm-6 {
+ padding-bottom: 4.5rem !important
+ }
+
+ .pb-sm-7 {
+ padding-bottom: 6rem !important
+ }
+
+ .pl-sm-0 {
+ padding-left: 0 !important
+ }
+
+ .pl-sm-1 {
+ padding-left: .25rem !important
+ }
+
+ .pl-sm-2 {
+ padding-left: .5rem !important
+ }
+
+ .pl-sm-3 {
+ padding-left: 1rem !important
+ }
+
+ .pl-sm-4 {
+ padding-left: 1.5rem !important
+ }
+
+ .pl-sm-5 {
+ padding-left: 3rem !important
+ }
+
+ .pl-sm-6 {
+ padding-left: 4.5rem !important
+ }
+
+ .pl-sm-7 {
+ padding-left: 6rem !important
+ }
+
+ .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) {
+ .float-md-left {
+ float: left !important
+ }
+
+ .float-md-right {
+ float: right !important
+ }
+
+ .float-md-none {
+ float: 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: flex !important
+ }
+
+ .d-md-inline-flex {
+ display: inline-flex !important
+ }
+
+ .d-md-none {
+ display: none !important
+ }
+
+ .flex-md-fill {
+ flex: 1 1 auto !important
+ }
+
+ .flex-md-row {
+ flex-direction: row !important
+ }
+
+ .flex-md-column {
+ flex-direction: column !important
+ }
+
+ .flex-md-row-reverse {
+ flex-direction: row-reverse !important
+ }
+
+ .flex-md-column-reverse {
+ flex-direction: column-reverse !important
+ }
+
+ .flex-md-grow-0 {
+ flex-grow: 0 !important
+ }
+
+ .flex-md-grow-1 {
+ flex-grow: 1 !important
+ }
+
+ .flex-md-shrink-0 {
+ flex-shrink: 0 !important
+ }
+
+ .flex-md-shrink-1 {
+ flex-shrink: 1 !important
+ }
+
+ .flex-md-wrap {
+ flex-wrap: wrap !important
+ }
+
+ .flex-md-nowrap {
+ flex-wrap: nowrap !important
+ }
+
+ .flex-md-wrap-reverse {
+ flex-wrap: wrap-reverse !important
+ }
+
+ .justify-content-md-start {
+ justify-content: flex-start !important
+ }
+
+ .justify-content-md-end {
+ justify-content: flex-end !important
+ }
+
+ .justify-content-md-center {
+ justify-content: center !important
+ }
+
+ .justify-content-md-between {
+ justify-content: space-between !important
+ }
+
+ .justify-content-md-around {
+ justify-content: space-around !important
+ }
+
+ .justify-content-md-evenly {
+ justify-content: space-evenly !important
+ }
+
+ .align-items-md-start {
+ align-items: flex-start !important
+ }
+
+ .align-items-md-end {
+ align-items: flex-end !important
+ }
+
+ .align-items-md-center {
+ align-items: center !important
+ }
+
+ .align-items-md-baseline {
+ align-items: baseline !important
+ }
+
+ .align-items-md-stretch {
+ align-items: stretch !important
+ }
+
+ .align-content-md-start {
+ align-content: flex-start !important
+ }
+
+ .align-content-md-end {
+ align-content: flex-end !important
+ }
+
+ .align-content-md-center {
+ align-content: center !important
+ }
+
+ .align-content-md-between {
+ align-content: space-between !important
+ }
+
+ .align-content-md-around {
+ align-content: space-around !important
+ }
+
+ .align-content-md-stretch {
+ align-content: stretch !important
+ }
+
+ .align-self-md-auto {
+ align-self: auto !important
+ }
+
+ .align-self-md-start {
+ align-self: flex-start !important
+ }
+
+ .align-self-md-end {
+ align-self: flex-end !important
+ }
+
+ .align-self-md-center {
+ align-self: center !important
+ }
+
+ .align-self-md-baseline {
+ align-self: baseline !important
+ }
+
+ .align-self-md-stretch {
+ align-self: stretch !important
+ }
+
+ .order-md-first {
+ order: -1 !important
+ }
+
+ .order-md-0 {
+ order: 0 !important
+ }
+
+ .order-md-1 {
+ order: 1 !important
+ }
+
+ .order-md-2 {
+ order: 2 !important
+ }
+
+ .order-md-3 {
+ order: 3 !important
+ }
+
+ .order-md-4 {
+ order: 4 !important
+ }
+
+ .order-md-5 {
+ order: 5 !important
+ }
+
+ .order-md-last {
+ order: 6 !important
+ }
+
+ .m-md-0 {
+ margin: 0 !important
+ }
+
+ .m-md-1 {
+ margin: .25rem !important
+ }
+
+ .m-md-2 {
+ margin: .5rem !important
+ }
+
+ .m-md-3 {
+ margin: 1rem !important
+ }
+
+ .m-md-4 {
+ margin: 1.5rem !important
+ }
+
+ .m-md-5 {
+ margin: 3rem !important
+ }
+
+ .m-md-6 {
+ margin: 4.5rem !important
+ }
+
+ .m-md-7 {
+ margin: 6rem !important
+ }
+
+ .m-md-auto {
+ margin: auto !important
+ }
+
+ .mx-md-0 {
+ margin-right: 0 !important;
+ margin-left: 0 !important
+ }
+
+ .mx-md-1 {
+ margin-right: .25rem !important;
+ margin-left: .25rem !important
+ }
+
+ .mx-md-2 {
+ margin-right: .5rem !important;
+ margin-left: .5rem !important
+ }
+
+ .mx-md-3 {
+ margin-right: 1rem !important;
+ margin-left: 1rem !important
+ }
+
+ .mx-md-4 {
+ margin-right: 1.5rem !important;
+ margin-left: 1.5rem !important
+ }
+
+ .mx-md-5 {
+ margin-right: 3rem !important;
+ margin-left: 3rem !important
+ }
+
+ .mx-md-6 {
+ margin-right: 4.5rem !important;
+ margin-left: 4.5rem !important
+ }
+
+ .mx-md-7 {
+ margin-right: 6rem !important;
+ margin-left: 6rem !important
+ }
+
+ .mx-md-auto {
+ margin-right: auto !important;
+ margin-left: auto !important
+ }
+
+ .my-md-0 {
+ margin-top: 0 !important;
+ margin-bottom: 0 !important
+ }
+
+ .my-md-1 {
+ margin-top: .25rem !important;
+ margin-bottom: .25rem !important
+ }
+
+ .my-md-2 {
+ margin-top: .5rem !important;
+ margin-bottom: .5rem !important
+ }
+
+ .my-md-3 {
+ margin-top: 1rem !important;
+ margin-bottom: 1rem !important
+ }
+
+ .my-md-4 {
+ margin-top: 1.5rem !important;
+ margin-bottom: 1.5rem !important
+ }
+
+ .my-md-5 {
+ margin-top: 3rem !important;
+ margin-bottom: 3rem !important
+ }
+
+ .my-md-6 {
+ margin-top: 4.5rem !important;
+ margin-bottom: 4.5rem !important
+ }
+
+ .my-md-7 {
+ margin-top: 6rem !important;
+ margin-bottom: 6rem !important
+ }
+
+ .my-md-auto {
+ margin-top: auto !important;
+ margin-bottom: auto !important
+ }
+
+ .mt-md-0 {
+ margin-top: 0 !important
+ }
+
+ .mt-md-1 {
+ margin-top: .25rem !important
+ }
+
+ .mt-md-2 {
+ margin-top: .5rem !important
+ }
+
+ .mt-md-3 {
+ margin-top: 1rem !important
+ }
+
+ .mt-md-4 {
+ margin-top: 1.5rem !important
+ }
+
+ .mt-md-5 {
+ margin-top: 3rem !important
+ }
+
+ .mt-md-6 {
+ margin-top: 4.5rem !important
+ }
+
+ .mt-md-7 {
+ margin-top: 6rem !important
+ }
+
+ .mt-md-auto {
+ margin-top: auto !important
+ }
+
+ .mr-md-0 {
+ margin-right: 0 !important
+ }
+
+ .mr-md-1 {
+ margin-right: .25rem !important
+ }
+
+ .mr-md-2 {
+ margin-right: .5rem !important
+ }
+
+ .mr-md-3 {
+ margin-right: 1rem !important
+ }
+
+ .mr-md-4 {
+ margin-right: 1.5rem !important
+ }
+
+ .mr-md-5 {
+ margin-right: 3rem !important
+ }
+
+ .mr-md-6 {
+ margin-right: 4.5rem !important
+ }
+
+ .mr-md-7 {
+ margin-right: 6rem !important
+ }
+
+ .mr-md-auto {
+ margin-right: auto !important
+ }
+
+ .mb-md-0 {
+ margin-bottom: 0 !important
+ }
+
+ .mb-md-1 {
+ margin-bottom: .25rem !important
+ }
+
+ .mb-md-2 {
+ margin-bottom: .5rem !important
+ }
+
+ .mb-md-3 {
+ margin-bottom: 1rem !important
+ }
+
+ .mb-md-4 {
+ margin-bottom: 1.5rem !important
+ }
+
+ .mb-md-5 {
+ margin-bottom: 3rem !important
+ }
+
+ .mb-md-6 {
+ margin-bottom: 4.5rem !important
+ }
+
+ .mb-md-7 {
+ margin-bottom: 6rem !important
+ }
+
+ .mb-md-auto {
+ margin-bottom: auto !important
+ }
+
+ .ml-md-0 {
+ margin-left: 0 !important
+ }
+
+ .ml-md-1 {
+ margin-left: .25rem !important
+ }
+
+ .ml-md-2 {
+ margin-left: .5rem !important
+ }
+
+ .ml-md-3 {
+ margin-left: 1rem !important
+ }
+
+ .ml-md-4 {
+ margin-left: 1.5rem !important
+ }
+
+ .ml-md-5 {
+ margin-left: 3rem !important
+ }
+
+ .ml-md-6 {
+ margin-left: 4.5rem !important
+ }
+
+ .ml-md-7 {
+ margin-left: 6rem !important
+ }
+
+ .ml-md-auto {
+ margin-left: auto !important
+ }
+
+ .m-md-n1 {
+ margin: -.25rem !important
+ }
+
+ .m-md-n2 {
+ margin: -.5rem !important
+ }
+
+ .m-md-n3 {
+ margin: -1rem !important
+ }
+
+ .m-md-n4 {
+ margin: -1.5rem !important
+ }
+
+ .m-md-n5 {
+ margin: -3rem !important
+ }
+
+ .m-md-n6 {
+ margin: -4.5rem !important
+ }
+
+ .m-md-n7 {
+ margin: -6rem !important
+ }
+
+ .mx-md-n1 {
+ margin-right: -.25rem !important;
+ margin-left: -.25rem !important
+ }
+
+ .mx-md-n2 {
+ margin-right: -.5rem !important;
+ margin-left: -.5rem !important
+ }
+
+ .mx-md-n3 {
+ margin-right: -1rem !important;
+ margin-left: -1rem !important
+ }
+
+ .mx-md-n4 {
+ margin-right: -1.5rem !important;
+ margin-left: -1.5rem !important
+ }
+
+ .mx-md-n5 {
+ margin-right: -3rem !important;
+ margin-left: -3rem !important
+ }
+
+ .mx-md-n6 {
+ margin-right: -4.5rem !important;
+ margin-left: -4.5rem !important
+ }
+
+ .mx-md-n7 {
+ margin-right: -6rem !important;
+ margin-left: -6rem !important
+ }
+
+ .my-md-n1 {
+ margin-top: -.25rem !important;
+ margin-bottom: -.25rem !important
+ }
+
+ .my-md-n2 {
+ margin-top: -.5rem !important;
+ margin-bottom: -.5rem !important
+ }
+
+ .my-md-n3 {
+ margin-top: -1rem !important;
+ margin-bottom: -1rem !important
+ }
+
+ .my-md-n4 {
+ margin-top: -1.5rem !important;
+ margin-bottom: -1.5rem !important
+ }
+
+ .my-md-n5 {
+ margin-top: -3rem !important;
+ margin-bottom: -3rem !important
+ }
+
+ .my-md-n6 {
+ margin-top: -4.5rem !important;
+ margin-bottom: -4.5rem !important
+ }
+
+ .my-md-n7 {
+ margin-top: -6rem !important;
+ margin-bottom: -6rem !important
+ }
+
+ .mt-md-n1 {
+ margin-top: -.25rem !important
+ }
+
+ .mt-md-n2 {
+ margin-top: -.5rem !important
+ }
+
+ .mt-md-n3 {
+ margin-top: -1rem !important
+ }
+
+ .mt-md-n4 {
+ margin-top: -1.5rem !important
+ }
+
+ .mt-md-n5 {
+ margin-top: -3rem !important
+ }
+
+ .mt-md-n6 {
+ margin-top: -4.5rem !important
+ }
+
+ .mt-md-n7 {
+ margin-top: -6rem !important
+ }
+
+ .mr-md-n1 {
+ margin-right: -.25rem !important
+ }
+
+ .mr-md-n2 {
+ margin-right: -.5rem !important
+ }
+
+ .mr-md-n3 {
+ margin-right: -1rem !important
+ }
+
+ .mr-md-n4 {
+ margin-right: -1.5rem !important
+ }
+
+ .mr-md-n5 {
+ margin-right: -3rem !important
+ }
+
+ .mr-md-n6 {
+ margin-right: -4.5rem !important
+ }
+
+ .mr-md-n7 {
+ margin-right: -6rem !important
+ }
+
+ .mb-md-n1 {
+ margin-bottom: -.25rem !important
+ }
+
+ .mb-md-n2 {
+ margin-bottom: -.5rem !important
+ }
+
+ .mb-md-n3 {
+ margin-bottom: -1rem !important
+ }
+
+ .mb-md-n4 {
+ margin-bottom: -1.5rem !important
+ }
+
+ .mb-md-n5 {
+ margin-bottom: -3rem !important
+ }
+
+ .mb-md-n6 {
+ margin-bottom: -4.5rem !important
+ }
+
+ .mb-md-n7 {
+ margin-bottom: -6rem !important
+ }
+
+ .ml-md-n1 {
+ margin-left: -.25rem !important
+ }
+
+ .ml-md-n2 {
+ margin-left: -.5rem !important
+ }
+
+ .ml-md-n3 {
+ margin-left: -1rem !important
+ }
+
+ .ml-md-n4 {
+ margin-left: -1.5rem !important
+ }
+
+ .ml-md-n5 {
+ margin-left: -3rem !important
+ }
+
+ .ml-md-n6 {
+ margin-left: -4.5rem !important
+ }
+
+ .ml-md-n7 {
+ margin-left: -6rem !important
+ }
+
+ .p-md-0 {
+ padding: 0 !important
+ }
+
+ .p-md-1 {
+ padding: .25rem !important
+ }
+
+ .p-md-2 {
+ padding: .5rem !important
+ }
+
+ .p-md-3 {
+ padding: 1rem !important
+ }
+
+ .p-md-4 {
+ padding: 1.5rem !important
+ }
+
+ .p-md-5 {
+ padding: 3rem !important
+ }
+
+ .p-md-6 {
+ padding: 4.5rem !important
+ }
+
+ .p-md-7 {
+ padding: 6rem !important
+ }
+
+ .px-md-0 {
+ padding-right: 0 !important;
+ padding-left: 0 !important
+ }
+
+ .px-md-1 {
+ padding-right: .25rem !important;
+ padding-left: .25rem !important
+ }
+
+ .px-md-2 {
+ padding-right: .5rem !important;
+ padding-left: .5rem !important
+ }
+
+ .px-md-3 {
+ padding-right: 1rem !important;
+ padding-left: 1rem !important
+ }
+
+ .px-md-4 {
+ padding-right: 1.5rem !important;
+ padding-left: 1.5rem !important
+ }
+
+ .px-md-5 {
+ padding-right: 3rem !important;
+ padding-left: 3rem !important
+ }
+
+ .px-md-6 {
+ padding-right: 4.5rem !important;
+ padding-left: 4.5rem !important
+ }
+
+ .px-md-7 {
+ padding-right: 6rem !important;
+ padding-left: 6rem !important
+ }
+
+ .py-md-0 {
+ padding-top: 0 !important;
+ padding-bottom: 0 !important
+ }
+
+ .py-md-1 {
+ padding-top: .25rem !important;
+ padding-bottom: .25rem !important
+ }
+
+ .py-md-2 {
+ padding-top: .5rem !important;
+ padding-bottom: .5rem !important
+ }
+
+ .py-md-3 {
+ padding-top: 1rem !important;
+ padding-bottom: 1rem !important
+ }
+
+ .py-md-4 {
+ padding-top: 1.5rem !important;
+ padding-bottom: 1.5rem !important
+ }
+
+ .py-md-5 {
+ padding-top: 3rem !important;
+ padding-bottom: 3rem !important
+ }
+
+ .py-md-6 {
+ padding-top: 4.5rem !important;
+ padding-bottom: 4.5rem !important
+ }
+
+ .py-md-7 {
+ padding-top: 6rem !important;
+ padding-bottom: 6rem !important
+ }
+
+ .pt-md-0 {
+ padding-top: 0 !important
+ }
+
+ .pt-md-1 {
+ padding-top: .25rem !important
+ }
+
+ .pt-md-2 {
+ padding-top: .5rem !important
+ }
+
+ .pt-md-3 {
+ padding-top: 1rem !important
+ }
+
+ .pt-md-4 {
+ padding-top: 1.5rem !important
+ }
+
+ .pt-md-5 {
+ padding-top: 3rem !important
+ }
+
+ .pt-md-6 {
+ padding-top: 4.5rem !important
+ }
+
+ .pt-md-7 {
+ padding-top: 6rem !important
+ }
+
+ .pr-md-0 {
+ padding-right: 0 !important
+ }
+
+ .pr-md-1 {
+ padding-right: .25rem !important
+ }
+
+ .pr-md-2 {
+ padding-right: .5rem !important
+ }
+
+ .pr-md-3 {
+ padding-right: 1rem !important
+ }
+
+ .pr-md-4 {
+ padding-right: 1.5rem !important
+ }
+
+ .pr-md-5 {
+ padding-right: 3rem !important
+ }
+
+ .pr-md-6 {
+ padding-right: 4.5rem !important
+ }
+
+ .pr-md-7 {
+ padding-right: 6rem !important
+ }
+
+ .pb-md-0 {
+ padding-bottom: 0 !important
+ }
+
+ .pb-md-1 {
+ padding-bottom: .25rem !important
+ }
+
+ .pb-md-2 {
+ padding-bottom: .5rem !important
+ }
+
+ .pb-md-3 {
+ padding-bottom: 1rem !important
+ }
+
+ .pb-md-4 {
+ padding-bottom: 1.5rem !important
+ }
+
+ .pb-md-5 {
+ padding-bottom: 3rem !important
+ }
+
+ .pb-md-6 {
+ padding-bottom: 4.5rem !important
+ }
+
+ .pb-md-7 {
+ padding-bottom: 6rem !important
+ }
+
+ .pl-md-0 {
+ padding-left: 0 !important
+ }
+
+ .pl-md-1 {
+ padding-left: .25rem !important
+ }
+
+ .pl-md-2 {
+ padding-left: .5rem !important
+ }
+
+ .pl-md-3 {
+ padding-left: 1rem !important
+ }
+
+ .pl-md-4 {
+ padding-left: 1.5rem !important
+ }
+
+ .pl-md-5 {
+ padding-left: 3rem !important
+ }
+
+ .pl-md-6 {
+ padding-left: 4.5rem !important
+ }
+
+ .pl-md-7 {
+ padding-left: 6rem !important
+ }
+
+ .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) {
+ .float-lg-left {
+ float: left !important
+ }
+
+ .float-lg-right {
+ float: right !important
+ }
+
+ .float-lg-none {
+ float: 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: flex !important
+ }
+
+ .d-lg-inline-flex {
+ display: inline-flex !important
+ }
+
+ .d-lg-none {
+ display: none !important
+ }
+
+ .flex-lg-fill {
+ flex: 1 1 auto !important
+ }
+
+ .flex-lg-row {
+ flex-direction: row !important
+ }
+
+ .flex-lg-column {
+ flex-direction: column !important
+ }
+
+ .flex-lg-row-reverse {
+ flex-direction: row-reverse !important
+ }
+
+ .flex-lg-column-reverse {
+ flex-direction: column-reverse !important
+ }
+
+ .flex-lg-grow-0 {
+ flex-grow: 0 !important
+ }
+
+ .flex-lg-grow-1 {
+ flex-grow: 1 !important
+ }
+
+ .flex-lg-shrink-0 {
+ flex-shrink: 0 !important
+ }
+
+ .flex-lg-shrink-1 {
+ flex-shrink: 1 !important
+ }
+
+ .flex-lg-wrap {
+ flex-wrap: wrap !important
+ }
+
+ .flex-lg-nowrap {
+ flex-wrap: nowrap !important
+ }
+
+ .flex-lg-wrap-reverse {
+ flex-wrap: wrap-reverse !important
+ }
+
+ .justify-content-lg-start {
+ justify-content: flex-start !important
+ }
+
+ .justify-content-lg-end {
+ justify-content: flex-end !important
+ }
+
+ .justify-content-lg-center {
+ justify-content: center !important
+ }
+
+ .justify-content-lg-between {
+ justify-content: space-between !important
+ }
+
+ .justify-content-lg-around {
+ justify-content: space-around !important
+ }
+
+ .justify-content-lg-evenly {
+ justify-content: space-evenly !important
+ }
+
+ .align-items-lg-start {
+ align-items: flex-start !important
+ }
+
+ .align-items-lg-end {
+ align-items: flex-end !important
+ }
+
+ .align-items-lg-center {
+ align-items: center !important
+ }
+
+ .align-items-lg-baseline {
+ align-items: baseline !important
+ }
+
+ .align-items-lg-stretch {
+ align-items: stretch !important
+ }
+
+ .align-content-lg-start {
+ align-content: flex-start !important
+ }
+
+ .align-content-lg-end {
+ align-content: flex-end !important
+ }
+
+ .align-content-lg-center {
+ align-content: center !important
+ }
+
+ .align-content-lg-between {
+ align-content: space-between !important
+ }
+
+ .align-content-lg-around {
+ align-content: space-around !important
+ }
+
+ .align-content-lg-stretch {
+ align-content: stretch !important
+ }
+
+ .align-self-lg-auto {
+ align-self: auto !important
+ }
+
+ .align-self-lg-start {
+ align-self: flex-start !important
+ }
+
+ .align-self-lg-end {
+ align-self: flex-end !important
+ }
+
+ .align-self-lg-center {
+ align-self: center !important
+ }
+
+ .align-self-lg-baseline {
+ align-self: baseline !important
+ }
+
+ .align-self-lg-stretch {
+ align-self: stretch !important
+ }
+
+ .order-lg-first {
+ order: -1 !important
+ }
+
+ .order-lg-0 {
+ order: 0 !important
+ }
+
+ .order-lg-1 {
+ order: 1 !important
+ }
+
+ .order-lg-2 {
+ order: 2 !important
+ }
+
+ .order-lg-3 {
+ order: 3 !important
+ }
+
+ .order-lg-4 {
+ order: 4 !important
+ }
+
+ .order-lg-5 {
+ order: 5 !important
+ }
+
+ .order-lg-last {
+ order: 6 !important
+ }
+
+ .m-lg-0 {
+ margin: 0 !important
+ }
+
+ .m-lg-1 {
+ margin: .25rem !important
+ }
+
+ .m-lg-2 {
+ margin: .5rem !important
+ }
+
+ .m-lg-3 {
+ margin: 1rem !important
+ }
+
+ .m-lg-4 {
+ margin: 1.5rem !important
+ }
+
+ .m-lg-5 {
+ margin: 3rem !important
+ }
+
+ .m-lg-6 {
+ margin: 4.5rem !important
+ }
+
+ .m-lg-7 {
+ margin: 6rem !important
+ }
+
+ .m-lg-auto {
+ margin: auto !important
+ }
+
+ .mx-lg-0 {
+ margin-right: 0 !important;
+ margin-left: 0 !important
+ }
+
+ .mx-lg-1 {
+ margin-right: .25rem !important;
+ margin-left: .25rem !important
+ }
+
+ .mx-lg-2 {
+ margin-right: .5rem !important;
+ margin-left: .5rem !important
+ }
+
+ .mx-lg-3 {
+ margin-right: 1rem !important;
+ margin-left: 1rem !important
+ }
+
+ .mx-lg-4 {
+ margin-right: 1.5rem !important;
+ margin-left: 1.5rem !important
+ }
+
+ .mx-lg-5 {
+ margin-right: 3rem !important;
+ margin-left: 3rem !important
+ }
+
+ .mx-lg-6 {
+ margin-right: 4.5rem !important;
+ margin-left: 4.5rem !important
+ }
+
+ .mx-lg-7 {
+ margin-right: 6rem !important;
+ margin-left: 6rem !important
+ }
+
+ .mx-lg-auto {
+ margin-right: auto !important;
+ margin-left: auto !important
+ }
+
+ .my-lg-0 {
+ margin-top: 0 !important;
+ margin-bottom: 0 !important
+ }
+
+ .my-lg-1 {
+ margin-top: .25rem !important;
+ margin-bottom: .25rem !important
+ }
+
+ .my-lg-2 {
+ margin-top: .5rem !important;
+ margin-bottom: .5rem !important
+ }
+
+ .my-lg-3 {
+ margin-top: 1rem !important;
+ margin-bottom: 1rem !important
+ }
+
+ .my-lg-4 {
+ margin-top: 1.5rem !important;
+ margin-bottom: 1.5rem !important
+ }
+
+ .my-lg-5 {
+ margin-top: 3rem !important;
+ margin-bottom: 3rem !important
+ }
+
+ .my-lg-6 {
+ margin-top: 4.5rem !important;
+ margin-bottom: 4.5rem !important
+ }
+
+ .my-lg-7 {
+ margin-top: 6rem !important;
+ margin-bottom: 6rem !important
+ }
+
+ .my-lg-auto {
+ margin-top: auto !important;
+ margin-bottom: auto !important
+ }
+
+ .mt-lg-0 {
+ margin-top: 0 !important
+ }
+
+ .mt-lg-1 {
+ margin-top: .25rem !important
+ }
+
+ .mt-lg-2 {
+ margin-top: .5rem !important
+ }
+
+ .mt-lg-3 {
+ margin-top: 1rem !important
+ }
+
+ .mt-lg-4 {
+ margin-top: 1.5rem !important
+ }
+
+ .mt-lg-5 {
+ margin-top: 3rem !important
+ }
+
+ .mt-lg-6 {
+ margin-top: 4.5rem !important
+ }
+
+ .mt-lg-7 {
+ margin-top: 6rem !important
+ }
+
+ .mt-lg-auto {
+ margin-top: auto !important
+ }
+
+ .mr-lg-0 {
+ margin-right: 0 !important
+ }
+
+ .mr-lg-1 {
+ margin-right: .25rem !important
+ }
+
+ .mr-lg-2 {
+ margin-right: .5rem !important
+ }
+
+ .mr-lg-3 {
+ margin-right: 1rem !important
+ }
+
+ .mr-lg-4 {
+ margin-right: 1.5rem !important
+ }
+
+ .mr-lg-5 {
+ margin-right: 3rem !important
+ }
+
+ .mr-lg-6 {
+ margin-right: 4.5rem !important
+ }
+
+ .mr-lg-7 {
+ margin-right: 6rem !important
+ }
+
+ .mr-lg-auto {
+ margin-right: auto !important
+ }
+
+ .mb-lg-0 {
+ margin-bottom: 0 !important
+ }
+
+ .mb-lg-1 {
+ margin-bottom: .25rem !important
+ }
+
+ .mb-lg-2 {
+ margin-bottom: .5rem !important
+ }
+
+ .mb-lg-3 {
+ margin-bottom: 1rem !important
+ }
+
+ .mb-lg-4 {
+ margin-bottom: 1.5rem !important
+ }
+
+ .mb-lg-5 {
+ margin-bottom: 3rem !important
+ }
+
+ .mb-lg-6 {
+ margin-bottom: 4.5rem !important
+ }
+
+ .mb-lg-7 {
+ margin-bottom: 6rem !important
+ }
+
+ .mb-lg-auto {
+ margin-bottom: auto !important
+ }
+
+ .ml-lg-0 {
+ margin-left: 0 !important
+ }
+
+ .ml-lg-1 {
+ margin-left: .25rem !important
+ }
+
+ .ml-lg-2 {
+ margin-left: .5rem !important
+ }
+
+ .ml-lg-3 {
+ margin-left: 1rem !important
+ }
+
+ .ml-lg-4 {
+ margin-left: 1.5rem !important
+ }
+
+ .ml-lg-5 {
+ margin-left: 3rem !important
+ }
+
+ .ml-lg-6 {
+ margin-left: 4.5rem !important
+ }
+
+ .ml-lg-7 {
+ margin-left: 6rem !important
+ }
+
+ .ml-lg-auto {
+ margin-left: auto !important
+ }
+
+ .m-lg-n1 {
+ margin: -.25rem !important
+ }
+
+ .m-lg-n2 {
+ margin: -.5rem !important
+ }
+
+ .m-lg-n3 {
+ margin: -1rem !important
+ }
+
+ .m-lg-n4 {
+ margin: -1.5rem !important
+ }
+
+ .m-lg-n5 {
+ margin: -3rem !important
+ }
+
+ .m-lg-n6 {
+ margin: -4.5rem !important
+ }
+
+ .m-lg-n7 {
+ margin: -6rem !important
+ }
+
+ .mx-lg-n1 {
+ margin-right: -.25rem !important;
+ margin-left: -.25rem !important
+ }
+
+ .mx-lg-n2 {
+ margin-right: -.5rem !important;
+ margin-left: -.5rem !important
+ }
+
+ .mx-lg-n3 {
+ margin-right: -1rem !important;
+ margin-left: -1rem !important
+ }
+
+ .mx-lg-n4 {
+ margin-right: -1.5rem !important;
+ margin-left: -1.5rem !important
+ }
+
+ .mx-lg-n5 {
+ margin-right: -3rem !important;
+ margin-left: -3rem !important
+ }
+
+ .mx-lg-n6 {
+ margin-right: -4.5rem !important;
+ margin-left: -4.5rem !important
+ }
+
+ .mx-lg-n7 {
+ margin-right: -6rem !important;
+ margin-left: -6rem !important
+ }
+
+ .my-lg-n1 {
+ margin-top: -.25rem !important;
+ margin-bottom: -.25rem !important
+ }
+
+ .my-lg-n2 {
+ margin-top: -.5rem !important;
+ margin-bottom: -.5rem !important
+ }
+
+ .my-lg-n3 {
+ margin-top: -1rem !important;
+ margin-bottom: -1rem !important
+ }
+
+ .my-lg-n4 {
+ margin-top: -1.5rem !important;
+ margin-bottom: -1.5rem !important
+ }
+
+ .my-lg-n5 {
+ margin-top: -3rem !important;
+ margin-bottom: -3rem !important
+ }
+
+ .my-lg-n6 {
+ margin-top: -4.5rem !important;
+ margin-bottom: -4.5rem !important
+ }
+
+ .my-lg-n7 {
+ margin-top: -6rem !important;
+ margin-bottom: -6rem !important
+ }
+
+ .mt-lg-n1 {
+ margin-top: -.25rem !important
+ }
+
+ .mt-lg-n2 {
+ margin-top: -.5rem !important
+ }
+
+ .mt-lg-n3 {
+ margin-top: -1rem !important
+ }
+
+ .mt-lg-n4 {
+ margin-top: -1.5rem !important
+ }
+
+ .mt-lg-n5 {
+ margin-top: -3rem !important
+ }
+
+ .mt-lg-n6 {
+ margin-top: -4.5rem !important
+ }
+
+ .mt-lg-n7 {
+ margin-top: -6rem !important
+ }
+
+ .mr-lg-n1 {
+ margin-right: -.25rem !important
+ }
+
+ .mr-lg-n2 {
+ margin-right: -.5rem !important
+ }
+
+ .mr-lg-n3 {
+ margin-right: -1rem !important
+ }
+
+ .mr-lg-n4 {
+ margin-right: -1.5rem !important
+ }
+
+ .mr-lg-n5 {
+ margin-right: -3rem !important
+ }
+
+ .mr-lg-n6 {
+ margin-right: -4.5rem !important
+ }
+
+ .mr-lg-n7 {
+ margin-right: -6rem !important
+ }
+
+ .mb-lg-n1 {
+ margin-bottom: -.25rem !important
+ }
+
+ .mb-lg-n2 {
+ margin-bottom: -.5rem !important
+ }
+
+ .mb-lg-n3 {
+ margin-bottom: -1rem !important
+ }
+
+ .mb-lg-n4 {
+ margin-bottom: -1.5rem !important
+ }
+
+ .mb-lg-n5 {
+ margin-bottom: -3rem !important
+ }
+
+ .mb-lg-n6 {
+ margin-bottom: -4.5rem !important
+ }
+
+ .mb-lg-n7 {
+ margin-bottom: -6rem !important
+ }
+
+ .ml-lg-n1 {
+ margin-left: -.25rem !important
+ }
+
+ .ml-lg-n2 {
+ margin-left: -.5rem !important
+ }
+
+ .ml-lg-n3 {
+ margin-left: -1rem !important
+ }
+
+ .ml-lg-n4 {
+ margin-left: -1.5rem !important
+ }
+
+ .ml-lg-n5 {
+ margin-left: -3rem !important
+ }
+
+ .ml-lg-n6 {
+ margin-left: -4.5rem !important
+ }
+
+ .ml-lg-n7 {
+ margin-left: -6rem !important
+ }
+
+ .p-lg-0 {
+ padding: 0 !important
+ }
+
+ .p-lg-1 {
+ padding: .25rem !important
+ }
+
+ .p-lg-2 {
+ padding: .5rem !important
+ }
+
+ .p-lg-3 {
+ padding: 1rem !important
+ }
+
+ .p-lg-4 {
+ padding: 1.5rem !important
+ }
+
+ .p-lg-5 {
+ padding: 3rem !important
+ }
+
+ .p-lg-6 {
+ padding: 4.5rem !important
+ }
+
+ .p-lg-7 {
+ padding: 6rem !important
+ }
+
+ .px-lg-0 {
+ padding-right: 0 !important;
+ padding-left: 0 !important
+ }
+
+ .px-lg-1 {
+ padding-right: .25rem !important;
+ padding-left: .25rem !important
+ }
+
+ .px-lg-2 {
+ padding-right: .5rem !important;
+ padding-left: .5rem !important
+ }
+
+ .px-lg-3 {
+ padding-right: 1rem !important;
+ padding-left: 1rem !important
+ }
+
+ .px-lg-4 {
+ padding-right: 1.5rem !important;
+ padding-left: 1.5rem !important
+ }
+
+ .px-lg-5 {
+ padding-right: 3rem !important;
+ padding-left: 3rem !important
+ }
+
+ .px-lg-6 {
+ padding-right: 4.5rem !important;
+ padding-left: 4.5rem !important
+ }
+
+ .px-lg-7 {
+ padding-right: 6rem !important;
+ padding-left: 6rem !important
+ }
+
+ .py-lg-0 {
+ padding-top: 0 !important;
+ padding-bottom: 0 !important
+ }
+
+ .py-lg-1 {
+ padding-top: .25rem !important;
+ padding-bottom: .25rem !important
+ }
+
+ .py-lg-2 {
+ padding-top: .5rem !important;
+ padding-bottom: .5rem !important
+ }
+
+ .py-lg-3 {
+ padding-top: 1rem !important;
+ padding-bottom: 1rem !important
+ }
+
+ .py-lg-4 {
+ padding-top: 1.5rem !important;
+ padding-bottom: 1.5rem !important
+ }
+
+ .py-lg-5 {
+ padding-top: 3rem !important;
+ padding-bottom: 3rem !important
+ }
+
+ .py-lg-6 {
+ padding-top: 4.5rem !important;
+ padding-bottom: 4.5rem !important
+ }
+
+ .py-lg-7 {
+ padding-top: 6rem !important;
+ padding-bottom: 6rem !important
+ }
+
+ .pt-lg-0 {
+ padding-top: 0 !important
+ }
+
+ .pt-lg-1 {
+ padding-top: .25rem !important
+ }
+
+ .pt-lg-2 {
+ padding-top: .5rem !important
+ }
+
+ .pt-lg-3 {
+ padding-top: 1rem !important
+ }
+
+ .pt-lg-4 {
+ padding-top: 1.5rem !important
+ }
+
+ .pt-lg-5 {
+ padding-top: 3rem !important
+ }
+
+ .pt-lg-6 {
+ padding-top: 4.5rem !important
+ }
+
+ .pt-lg-7 {
+ padding-top: 6rem !important
+ }
+
+ .pr-lg-0 {
+ padding-right: 0 !important
+ }
+
+ .pr-lg-1 {
+ padding-right: .25rem !important
+ }
+
+ .pr-lg-2 {
+ padding-right: .5rem !important
+ }
+
+ .pr-lg-3 {
+ padding-right: 1rem !important
+ }
+
+ .pr-lg-4 {
+ padding-right: 1.5rem !important
+ }
+
+ .pr-lg-5 {
+ padding-right: 3rem !important
+ }
+
+ .pr-lg-6 {
+ padding-right: 4.5rem !important
+ }
+
+ .pr-lg-7 {
+ padding-right: 6rem !important
+ }
+
+ .pb-lg-0 {
+ padding-bottom: 0 !important
+ }
+
+ .pb-lg-1 {
+ padding-bottom: .25rem !important
+ }
+
+ .pb-lg-2 {
+ padding-bottom: .5rem !important
+ }
+
+ .pb-lg-3 {
+ padding-bottom: 1rem !important
+ }
+
+ .pb-lg-4 {
+ padding-bottom: 1.5rem !important
+ }
+
+ .pb-lg-5 {
+ padding-bottom: 3rem !important
+ }
+
+ .pb-lg-6 {
+ padding-bottom: 4.5rem !important
+ }
+
+ .pb-lg-7 {
+ padding-bottom: 6rem !important
+ }
+
+ .pl-lg-0 {
+ padding-left: 0 !important
+ }
+
+ .pl-lg-1 {
+ padding-left: .25rem !important
+ }
+
+ .pl-lg-2 {
+ padding-left: .5rem !important
+ }
+
+ .pl-lg-3 {
+ padding-left: 1rem !important
+ }
+
+ .pl-lg-4 {
+ padding-left: 1.5rem !important
+ }
+
+ .pl-lg-5 {
+ padding-left: 3rem !important
+ }
+
+ .pl-lg-6 {
+ padding-left: 4.5rem !important
+ }
+
+ .pl-lg-7 {
+ padding-left: 6rem !important
+ }
+
+ .text-lg-left {
+ text-align: left !important
+ }
+
+ .text-lg-right {
+ text-align: right !important
+ }
+
+ .text-lg-center {
+ text-align: center !important
+ }
+}
+
+@media (min-width: 1200px) {
+ .float-xl-left {
+ float: left !important
+ }
+
+ .float-xl-right {
+ float: right !important
+ }
+
+ .float-xl-none {
+ float: 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: flex !important
+ }
+
+ .d-xl-inline-flex {
+ display: inline-flex !important
+ }
+
+ .d-xl-none {
+ display: none !important
+ }
+
+ .flex-xl-fill {
+ flex: 1 1 auto !important
+ }
+
+ .flex-xl-row {
+ flex-direction: row !important
+ }
+
+ .flex-xl-column {
+ flex-direction: column !important
+ }
+
+ .flex-xl-row-reverse {
+ flex-direction: row-reverse !important
+ }
+
+ .flex-xl-column-reverse {
+ flex-direction: column-reverse !important
+ }
+
+ .flex-xl-grow-0 {
+ flex-grow: 0 !important
+ }
+
+ .flex-xl-grow-1 {
+ flex-grow: 1 !important
+ }
+
+ .flex-xl-shrink-0 {
+ flex-shrink: 0 !important
+ }
+
+ .flex-xl-shrink-1 {
+ flex-shrink: 1 !important
+ }
+
+ .flex-xl-wrap {
+ flex-wrap: wrap !important
+ }
+
+ .flex-xl-nowrap {
+ flex-wrap: nowrap !important
+ }
+
+ .flex-xl-wrap-reverse {
+ flex-wrap: wrap-reverse !important
+ }
+
+ .justify-content-xl-start {
+ justify-content: flex-start !important
+ }
+
+ .justify-content-xl-end {
+ justify-content: flex-end !important
+ }
+
+ .justify-content-xl-center {
+ justify-content: center !important
+ }
+
+ .justify-content-xl-between {
+ justify-content: space-between !important
+ }
+
+ .justify-content-xl-around {
+ justify-content: space-around !important
+ }
+
+ .justify-content-xl-evenly {
+ justify-content: space-evenly !important
+ }
+
+ .align-items-xl-start {
+ align-items: flex-start !important
+ }
+
+ .align-items-xl-end {
+ align-items: flex-end !important
+ }
+
+ .align-items-xl-center {
+ align-items: center !important
+ }
+
+ .align-items-xl-baseline {
+ align-items: baseline !important
+ }
+
+ .align-items-xl-stretch {
+ align-items: stretch !important
+ }
+
+ .align-content-xl-start {
+ align-content: flex-start !important
+ }
+
+ .align-content-xl-end {
+ align-content: flex-end !important
+ }
+
+ .align-content-xl-center {
+ align-content: center !important
+ }
+
+ .align-content-xl-between {
+ align-content: space-between !important
+ }
+
+ .align-content-xl-around {
+ align-content: space-around !important
+ }
+
+ .align-content-xl-stretch {
+ align-content: stretch !important
+ }
+
+ .align-self-xl-auto {
+ align-self: auto !important
+ }
+
+ .align-self-xl-start {
+ align-self: flex-start !important
+ }
+
+ .align-self-xl-end {
+ align-self: flex-end !important
+ }
+
+ .align-self-xl-center {
+ align-self: center !important
+ }
+
+ .align-self-xl-baseline {
+ align-self: baseline !important
+ }
+
+ .align-self-xl-stretch {
+ align-self: stretch !important
+ }
+
+ .order-xl-first {
+ order: -1 !important
+ }
+
+ .order-xl-0 {
+ order: 0 !important
+ }
+
+ .order-xl-1 {
+ order: 1 !important
+ }
+
+ .order-xl-2 {
+ order: 2 !important
+ }
+
+ .order-xl-3 {
+ order: 3 !important
+ }
+
+ .order-xl-4 {
+ order: 4 !important
+ }
+
+ .order-xl-5 {
+ order: 5 !important
+ }
+
+ .order-xl-last {
+ order: 6 !important
+ }
+
+ .m-xl-0 {
+ margin: 0 !important
+ }
+
+ .m-xl-1 {
+ margin: .25rem !important
+ }
+
+ .m-xl-2 {
+ margin: .5rem !important
+ }
+
+ .m-xl-3 {
+ margin: 1rem !important
+ }
+
+ .m-xl-4 {
+ margin: 1.5rem !important
+ }
+
+ .m-xl-5 {
+ margin: 3rem !important
+ }
+
+ .m-xl-6 {
+ margin: 4.5rem !important
+ }
+
+ .m-xl-7 {
+ margin: 6rem !important
+ }
+
+ .m-xl-auto {
+ margin: auto !important
+ }
+
+ .mx-xl-0 {
+ margin-right: 0 !important;
+ margin-left: 0 !important
+ }
+
+ .mx-xl-1 {
+ margin-right: .25rem !important;
+ margin-left: .25rem !important
+ }
+
+ .mx-xl-2 {
+ margin-right: .5rem !important;
+ margin-left: .5rem !important
+ }
+
+ .mx-xl-3 {
+ margin-right: 1rem !important;
+ margin-left: 1rem !important
+ }
+
+ .mx-xl-4 {
+ margin-right: 1.5rem !important;
+ margin-left: 1.5rem !important
+ }
+
+ .mx-xl-5 {
+ margin-right: 3rem !important;
+ margin-left: 3rem !important
+ }
+
+ .mx-xl-6 {
+ margin-right: 4.5rem !important;
+ margin-left: 4.5rem !important
+ }
+
+ .mx-xl-7 {
+ margin-right: 6rem !important;
+ margin-left: 6rem !important
+ }
+
+ .mx-xl-auto {
+ margin-right: auto !important;
+ margin-left: auto !important
+ }
+
+ .my-xl-0 {
+ margin-top: 0 !important;
+ margin-bottom: 0 !important
+ }
+
+ .my-xl-1 {
+ margin-top: .25rem !important;
+ margin-bottom: .25rem !important
+ }
+
+ .my-xl-2 {
+ margin-top: .5rem !important;
+ margin-bottom: .5rem !important
+ }
+
+ .my-xl-3 {
+ margin-top: 1rem !important;
+ margin-bottom: 1rem !important
+ }
+
+ .my-xl-4 {
+ margin-top: 1.5rem !important;
+ margin-bottom: 1.5rem !important
+ }
+
+ .my-xl-5 {
+ margin-top: 3rem !important;
+ margin-bottom: 3rem !important
+ }
+
+ .my-xl-6 {
+ margin-top: 4.5rem !important;
+ margin-bottom: 4.5rem !important
+ }
+
+ .my-xl-7 {
+ margin-top: 6rem !important;
+ margin-bottom: 6rem !important
+ }
+
+ .my-xl-auto {
+ margin-top: auto !important;
+ margin-bottom: auto !important
+ }
+
+ .mt-xl-0 {
+ margin-top: 0 !important
+ }
+
+ .mt-xl-1 {
+ margin-top: .25rem !important
+ }
+
+ .mt-xl-2 {
+ margin-top: .5rem !important
+ }
+
+ .mt-xl-3 {
+ margin-top: 1rem !important
+ }
+
+ .mt-xl-4 {
+ margin-top: 1.5rem !important
+ }
+
+ .mt-xl-5 {
+ margin-top: 3rem !important
+ }
+
+ .mt-xl-6 {
+ margin-top: 4.5rem !important
+ }
+
+ .mt-xl-7 {
+ margin-top: 6rem !important
+ }
+
+ .mt-xl-auto {
+ margin-top: auto !important
+ }
+
+ .mr-xl-0 {
+ margin-right: 0 !important
+ }
+
+ .mr-xl-1 {
+ margin-right: .25rem !important
+ }
+
+ .mr-xl-2 {
+ margin-right: .5rem !important
+ }
+
+ .mr-xl-3 {
+ margin-right: 1rem !important
+ }
+
+ .mr-xl-4 {
+ margin-right: 1.5rem !important
+ }
+
+ .mr-xl-5 {
+ margin-right: 3rem !important
+ }
+
+ .mr-xl-6 {
+ margin-right: 4.5rem !important
+ }
+
+ .mr-xl-7 {
+ margin-right: 6rem !important
+ }
+
+ .mr-xl-auto {
+ margin-right: auto !important
+ }
+
+ .mb-xl-0 {
+ margin-bottom: 0 !important
+ }
+
+ .mb-xl-1 {
+ margin-bottom: .25rem !important
+ }
+
+ .mb-xl-2 {
+ margin-bottom: .5rem !important
+ }
+
+ .mb-xl-3 {
+ margin-bottom: 1rem !important
+ }
+
+ .mb-xl-4 {
+ margin-bottom: 1.5rem !important
+ }
+
+ .mb-xl-5 {
+ margin-bottom: 3rem !important
+ }
+
+ .mb-xl-6 {
+ margin-bottom: 4.5rem !important
+ }
+
+ .mb-xl-7 {
+ margin-bottom: 6rem !important
+ }
+
+ .mb-xl-auto {
+ margin-bottom: auto !important
+ }
+
+ .ml-xl-0 {
+ margin-left: 0 !important
+ }
+
+ .ml-xl-1 {
+ margin-left: .25rem !important
+ }
+
+ .ml-xl-2 {
+ margin-left: .5rem !important
+ }
+
+ .ml-xl-3 {
+ margin-left: 1rem !important
+ }
+
+ .ml-xl-4 {
+ margin-left: 1.5rem !important
+ }
+
+ .ml-xl-5 {
+ margin-left: 3rem !important
+ }
+
+ .ml-xl-6 {
+ margin-left: 4.5rem !important
+ }
+
+ .ml-xl-7 {
+ margin-left: 6rem !important
+ }
+
+ .ml-xl-auto {
+ margin-left: auto !important
+ }
+
+ .m-xl-n1 {
+ margin: -.25rem !important
+ }
+
+ .m-xl-n2 {
+ margin: -.5rem !important
+ }
+
+ .m-xl-n3 {
+ margin: -1rem !important
+ }
+
+ .m-xl-n4 {
+ margin: -1.5rem !important
+ }
+
+ .m-xl-n5 {
+ margin: -3rem !important
+ }
+
+ .m-xl-n6 {
+ margin: -4.5rem !important
+ }
+
+ .m-xl-n7 {
+ margin: -6rem !important
+ }
+
+ .mx-xl-n1 {
+ margin-right: -.25rem !important;
+ margin-left: -.25rem !important
+ }
+
+ .mx-xl-n2 {
+ margin-right: -.5rem !important;
+ margin-left: -.5rem !important
+ }
+
+ .mx-xl-n3 {
+ margin-right: -1rem !important;
+ margin-left: -1rem !important
+ }
+
+ .mx-xl-n4 {
+ margin-right: -1.5rem !important;
+ margin-left: -1.5rem !important
+ }
+
+ .mx-xl-n5 {
+ margin-right: -3rem !important;
+ margin-left: -3rem !important
+ }
+
+ .mx-xl-n6 {
+ margin-right: -4.5rem !important;
+ margin-left: -4.5rem !important
+ }
+
+ .mx-xl-n7 {
+ margin-right: -6rem !important;
+ margin-left: -6rem !important
+ }
+
+ .my-xl-n1 {
+ margin-top: -.25rem !important;
+ margin-bottom: -.25rem !important
+ }
+
+ .my-xl-n2 {
+ margin-top: -.5rem !important;
+ margin-bottom: -.5rem !important
+ }
+
+ .my-xl-n3 {
+ margin-top: -1rem !important;
+ margin-bottom: -1rem !important
+ }
+
+ .my-xl-n4 {
+ margin-top: -1.5rem !important;
+ margin-bottom: -1.5rem !important
+ }
+
+ .my-xl-n5 {
+ margin-top: -3rem !important;
+ margin-bottom: -3rem !important
+ }
+
+ .my-xl-n6 {
+ margin-top: -4.5rem !important;
+ margin-bottom: -4.5rem !important
+ }
+
+ .my-xl-n7 {
+ margin-top: -6rem !important;
+ margin-bottom: -6rem !important
+ }
+
+ .mt-xl-n1 {
+ margin-top: -.25rem !important
+ }
+
+ .mt-xl-n2 {
+ margin-top: -.5rem !important
+ }
+
+ .mt-xl-n3 {
+ margin-top: -1rem !important
+ }
+
+ .mt-xl-n4 {
+ margin-top: -1.5rem !important
+ }
+
+ .mt-xl-n5 {
+ margin-top: -3rem !important
+ }
+
+ .mt-xl-n6 {
+ margin-top: -4.5rem !important
+ }
+
+ .mt-xl-n7 {
+ margin-top: -6rem !important
+ }
+
+ .mr-xl-n1 {
+ margin-right: -.25rem !important
+ }
+
+ .mr-xl-n2 {
+ margin-right: -.5rem !important
+ }
+
+ .mr-xl-n3 {
+ margin-right: -1rem !important
+ }
+
+ .mr-xl-n4 {
+ margin-right: -1.5rem !important
+ }
+
+ .mr-xl-n5 {
+ margin-right: -3rem !important
+ }
+
+ .mr-xl-n6 {
+ margin-right: -4.5rem !important
+ }
+
+ .mr-xl-n7 {
+ margin-right: -6rem !important
+ }
+
+ .mb-xl-n1 {
+ margin-bottom: -.25rem !important
+ }
+
+ .mb-xl-n2 {
+ margin-bottom: -.5rem !important
+ }
+
+ .mb-xl-n3 {
+ margin-bottom: -1rem !important
+ }
+
+ .mb-xl-n4 {
+ margin-bottom: -1.5rem !important
+ }
+
+ .mb-xl-n5 {
+ margin-bottom: -3rem !important
+ }
+
+ .mb-xl-n6 {
+ margin-bottom: -4.5rem !important
+ }
+
+ .mb-xl-n7 {
+ margin-bottom: -6rem !important
+ }
+
+ .ml-xl-n1 {
+ margin-left: -.25rem !important
+ }
+
+ .ml-xl-n2 {
+ margin-left: -.5rem !important
+ }
+
+ .ml-xl-n3 {
+ margin-left: -1rem !important
+ }
+
+ .ml-xl-n4 {
+ margin-left: -1.5rem !important
+ }
+
+ .ml-xl-n5 {
+ margin-left: -3rem !important
+ }
+
+ .ml-xl-n6 {
+ margin-left: -4.5rem !important
+ }
+
+ .ml-xl-n7 {
+ margin-left: -6rem !important
+ }
+
+ .p-xl-0 {
+ padding: 0 !important
+ }
+
+ .p-xl-1 {
+ padding: .25rem !important
+ }
+
+ .p-xl-2 {
+ padding: .5rem !important
+ }
+
+ .p-xl-3 {
+ padding: 1rem !important
+ }
+
+ .p-xl-4 {
+ padding: 1.5rem !important
+ }
+
+ .p-xl-5 {
+ padding: 3rem !important
+ }
+
+ .p-xl-6 {
+ padding: 4.5rem !important
+ }
+
+ .p-xl-7 {
+ padding: 6rem !important
+ }
+
+ .px-xl-0 {
+ padding-right: 0 !important;
+ padding-left: 0 !important
+ }
+
+ .px-xl-1 {
+ padding-right: .25rem !important;
+ padding-left: .25rem !important
+ }
+
+ .px-xl-2 {
+ padding-right: .5rem !important;
+ padding-left: .5rem !important
+ }
+
+ .px-xl-3 {
+ padding-right: 1rem !important;
+ padding-left: 1rem !important
+ }
+
+ .px-xl-4 {
+ padding-right: 1.5rem !important;
+ padding-left: 1.5rem !important
+ }
+
+ .px-xl-5 {
+ padding-right: 3rem !important;
+ padding-left: 3rem !important
+ }
+
+ .px-xl-6 {
+ padding-right: 4.5rem !important;
+ padding-left: 4.5rem !important
+ }
+
+ .px-xl-7 {
+ padding-right: 6rem !important;
+ padding-left: 6rem !important
+ }
+
+ .py-xl-0 {
+ padding-top: 0 !important;
+ padding-bottom: 0 !important
+ }
+
+ .py-xl-1 {
+ padding-top: .25rem !important;
+ padding-bottom: .25rem !important
+ }
+
+ .py-xl-2 {
+ padding-top: .5rem !important;
+ padding-bottom: .5rem !important
+ }
+
+ .py-xl-3 {
+ padding-top: 1rem !important;
+ padding-bottom: 1rem !important
+ }
+
+ .py-xl-4 {
+ padding-top: 1.5rem !important;
+ padding-bottom: 1.5rem !important
+ }
+
+ .py-xl-5 {
+ padding-top: 3rem !important;
+ padding-bottom: 3rem !important
+ }
+
+ .py-xl-6 {
+ padding-top: 4.5rem !important;
+ padding-bottom: 4.5rem !important
+ }
+
+ .py-xl-7 {
+ padding-top: 6rem !important;
+ padding-bottom: 6rem !important
+ }
+
+ .pt-xl-0 {
+ padding-top: 0 !important
+ }
+
+ .pt-xl-1 {
+ padding-top: .25rem !important
+ }
+
+ .pt-xl-2 {
+ padding-top: .5rem !important
+ }
+
+ .pt-xl-3 {
+ padding-top: 1rem !important
+ }
+
+ .pt-xl-4 {
+ padding-top: 1.5rem !important
+ }
+
+ .pt-xl-5 {
+ padding-top: 3rem !important
+ }
+
+ .pt-xl-6 {
+ padding-top: 4.5rem !important
+ }
+
+ .pt-xl-7 {
+ padding-top: 6rem !important
+ }
+
+ .pr-xl-0 {
+ padding-right: 0 !important
+ }
+
+ .pr-xl-1 {
+ padding-right: .25rem !important
+ }
+
+ .pr-xl-2 {
+ padding-right: .5rem !important
+ }
+
+ .pr-xl-3 {
+ padding-right: 1rem !important
+ }
+
+ .pr-xl-4 {
+ padding-right: 1.5rem !important
+ }
+
+ .pr-xl-5 {
+ padding-right: 3rem !important
+ }
+
+ .pr-xl-6 {
+ padding-right: 4.5rem !important
+ }
+
+ .pr-xl-7 {
+ padding-right: 6rem !important
+ }
+
+ .pb-xl-0 {
+ padding-bottom: 0 !important
+ }
+
+ .pb-xl-1 {
+ padding-bottom: .25rem !important
+ }
+
+ .pb-xl-2 {
+ padding-bottom: .5rem !important
+ }
+
+ .pb-xl-3 {
+ padding-bottom: 1rem !important
+ }
+
+ .pb-xl-4 {
+ padding-bottom: 1.5rem !important
+ }
+
+ .pb-xl-5 {
+ padding-bottom: 3rem !important
+ }
+
+ .pb-xl-6 {
+ padding-bottom: 4.5rem !important
+ }
+
+ .pb-xl-7 {
+ padding-bottom: 6rem !important
+ }
+
+ .pl-xl-0 {
+ padding-left: 0 !important
+ }
+
+ .pl-xl-1 {
+ padding-left: .25rem !important
+ }
+
+ .pl-xl-2 {
+ padding-left: .5rem !important
+ }
+
+ .pl-xl-3 {
+ padding-left: 1rem !important
+ }
+
+ .pl-xl-4 {
+ padding-left: 1.5rem !important
+ }
+
+ .pl-xl-5 {
+ padding-left: 3rem !important
+ }
+
+ .pl-xl-6 {
+ padding-left: 4.5rem !important
+ }
+
+ .pl-xl-7 {
+ padding-left: 6rem !important
+ }
+
+ .text-xl-left {
+ text-align: left !important
+ }
+
+ .text-xl-right {
+ text-align: right !important
+ }
+
+ .text-xl-center {
+ text-align: center !important
+ }
+}
+
+@media (min-width: 1440px) {
+ .float-xxl-left {
+ float: left !important
+ }
+
+ .float-xxl-right {
+ float: right !important
+ }
+
+ .float-xxl-none {
+ float: none !important
+ }
+
+ .d-xxl-inline {
+ display: inline !important
+ }
+
+ .d-xxl-inline-block {
+ display: inline-block !important
+ }
+
+ .d-xxl-block {
+ display: block !important
+ }
+
+ .d-xxl-table {
+ display: table !important
+ }
+
+ .d-xxl-table-row {
+ display: table-row !important
+ }
+
+ .d-xxl-table-cell {
+ display: table-cell !important
+ }
+
+ .d-xxl-flex {
+ display: flex !important
+ }
+
+ .d-xxl-inline-flex {
+ display: inline-flex !important
+ }
+
+ .d-xxl-none {
+ display: none !important
+ }
+
+ .flex-xxl-fill {
+ flex: 1 1 auto !important
+ }
+
+ .flex-xxl-row {
+ flex-direction: row !important
+ }
+
+ .flex-xxl-column {
+ flex-direction: column !important
+ }
+
+ .flex-xxl-row-reverse {
+ flex-direction: row-reverse !important
+ }
+
+ .flex-xxl-column-reverse {
+ flex-direction: column-reverse !important
+ }
+
+ .flex-xxl-grow-0 {
+ flex-grow: 0 !important
+ }
+
+ .flex-xxl-grow-1 {
+ flex-grow: 1 !important
+ }
+
+ .flex-xxl-shrink-0 {
+ flex-shrink: 0 !important
+ }
+
+ .flex-xxl-shrink-1 {
+ flex-shrink: 1 !important
+ }
+
+ .flex-xxl-wrap {
+ flex-wrap: wrap !important
+ }
+
+ .flex-xxl-nowrap {
+ flex-wrap: nowrap !important
+ }
+
+ .flex-xxl-wrap-reverse {
+ flex-wrap: wrap-reverse !important
+ }
+
+ .justify-content-xxl-start {
+ justify-content: flex-start !important
+ }
+
+ .justify-content-xxl-end {
+ justify-content: flex-end !important
+ }
+
+ .justify-content-xxl-center {
+ justify-content: center !important
+ }
+
+ .justify-content-xxl-between {
+ justify-content: space-between !important
+ }
+
+ .justify-content-xxl-around {
+ justify-content: space-around !important
+ }
+
+ .justify-content-xxl-evenly {
+ justify-content: space-evenly !important
+ }
+
+ .align-items-xxl-start {
+ align-items: flex-start !important
+ }
+
+ .align-items-xxl-end {
+ align-items: flex-end !important
+ }
+
+ .align-items-xxl-center {
+ align-items: center !important
+ }
+
+ .align-items-xxl-baseline {
+ align-items: baseline !important
+ }
+
+ .align-items-xxl-stretch {
+ align-items: stretch !important
+ }
+
+ .align-content-xxl-start {
+ align-content: flex-start !important
+ }
+
+ .align-content-xxl-end {
+ align-content: flex-end !important
+ }
+
+ .align-content-xxl-center {
+ align-content: center !important
+ }
+
+ .align-content-xxl-between {
+ align-content: space-between !important
+ }
+
+ .align-content-xxl-around {
+ align-content: space-around !important
+ }
+
+ .align-content-xxl-stretch {
+ align-content: stretch !important
+ }
+
+ .align-self-xxl-auto {
+ align-self: auto !important
+ }
+
+ .align-self-xxl-start {
+ align-self: flex-start !important
+ }
+
+ .align-self-xxl-end {
+ align-self: flex-end !important
+ }
+
+ .align-self-xxl-center {
+ align-self: center !important
+ }
+
+ .align-self-xxl-baseline {
+ align-self: baseline !important
+ }
+
+ .align-self-xxl-stretch {
+ align-self: stretch !important
+ }
+
+ .order-xxl-first {
+ order: -1 !important
+ }
+
+ .order-xxl-0 {
+ order: 0 !important
+ }
+
+ .order-xxl-1 {
+ order: 1 !important
+ }
+
+ .order-xxl-2 {
+ order: 2 !important
+ }
+
+ .order-xxl-3 {
+ order: 3 !important
+ }
+
+ .order-xxl-4 {
+ order: 4 !important
+ }
+
+ .order-xxl-5 {
+ order: 5 !important
+ }
+
+ .order-xxl-last {
+ order: 6 !important
+ }
+
+ .m-xxl-0 {
+ margin: 0 !important
+ }
+
+ .m-xxl-1 {
+ margin: .25rem !important
+ }
+
+ .m-xxl-2 {
+ margin: .5rem !important
+ }
+
+ .m-xxl-3 {
+ margin: 1rem !important
+ }
+
+ .m-xxl-4 {
+ margin: 1.5rem !important
+ }
+
+ .m-xxl-5 {
+ margin: 3rem !important
+ }
+
+ .m-xxl-6 {
+ margin: 4.5rem !important
+ }
+
+ .m-xxl-7 {
+ margin: 6rem !important
+ }
+
+ .m-xxl-auto {
+ margin: auto !important
+ }
+
+ .mx-xxl-0 {
+ margin-right: 0 !important;
+ margin-left: 0 !important
+ }
+
+ .mx-xxl-1 {
+ margin-right: .25rem !important;
+ margin-left: .25rem !important
+ }
+
+ .mx-xxl-2 {
+ margin-right: .5rem !important;
+ margin-left: .5rem !important
+ }
+
+ .mx-xxl-3 {
+ margin-right: 1rem !important;
+ margin-left: 1rem !important
+ }
+
+ .mx-xxl-4 {
+ margin-right: 1.5rem !important;
+ margin-left: 1.5rem !important
+ }
+
+ .mx-xxl-5 {
+ margin-right: 3rem !important;
+ margin-left: 3rem !important
+ }
+
+ .mx-xxl-6 {
+ margin-right: 4.5rem !important;
+ margin-left: 4.5rem !important
+ }
+
+ .mx-xxl-7 {
+ margin-right: 6rem !important;
+ margin-left: 6rem !important
+ }
+
+ .mx-xxl-auto {
+ margin-right: auto !important;
+ margin-left: auto !important
+ }
+
+ .my-xxl-0 {
+ margin-top: 0 !important;
+ margin-bottom: 0 !important
+ }
+
+ .my-xxl-1 {
+ margin-top: .25rem !important;
+ margin-bottom: .25rem !important
+ }
+
+ .my-xxl-2 {
+ margin-top: .5rem !important;
+ margin-bottom: .5rem !important
+ }
+
+ .my-xxl-3 {
+ margin-top: 1rem !important;
+ margin-bottom: 1rem !important
+ }
+
+ .my-xxl-4 {
+ margin-top: 1.5rem !important;
+ margin-bottom: 1.5rem !important
+ }
+
+ .my-xxl-5 {
+ margin-top: 3rem !important;
+ margin-bottom: 3rem !important
+ }
+
+ .my-xxl-6 {
+ margin-top: 4.5rem !important;
+ margin-bottom: 4.5rem !important
+ }
+
+ .my-xxl-7 {
+ margin-top: 6rem !important;
+ margin-bottom: 6rem !important
+ }
+
+ .my-xxl-auto {
+ margin-top: auto !important;
+ margin-bottom: auto !important
+ }
+
+ .mt-xxl-0 {
+ margin-top: 0 !important
+ }
+
+ .mt-xxl-1 {
+ margin-top: .25rem !important
+ }
+
+ .mt-xxl-2 {
+ margin-top: .5rem !important
+ }
+
+ .mt-xxl-3 {
+ margin-top: 1rem !important
+ }
+
+ .mt-xxl-4 {
+ margin-top: 1.5rem !important
+ }
+
+ .mt-xxl-5 {
+ margin-top: 3rem !important
+ }
+
+ .mt-xxl-6 {
+ margin-top: 4.5rem !important
+ }
+
+ .mt-xxl-7 {
+ margin-top: 6rem !important
+ }
+
+ .mt-xxl-auto {
+ margin-top: auto !important
+ }
+
+ .mr-xxl-0 {
+ margin-right: 0 !important
+ }
+
+ .mr-xxl-1 {
+ margin-right: .25rem !important
+ }
+
+ .mr-xxl-2 {
+ margin-right: .5rem !important
+ }
+
+ .mr-xxl-3 {
+ margin-right: 1rem !important
+ }
+
+ .mr-xxl-4 {
+ margin-right: 1.5rem !important
+ }
+
+ .mr-xxl-5 {
+ margin-right: 3rem !important
+ }
+
+ .mr-xxl-6 {
+ margin-right: 4.5rem !important
+ }
+
+ .mr-xxl-7 {
+ margin-right: 6rem !important
+ }
+
+ .mr-xxl-auto {
+ margin-right: auto !important
+ }
+
+ .mb-xxl-0 {
+ margin-bottom: 0 !important
+ }
+
+ .mb-xxl-1 {
+ margin-bottom: .25rem !important
+ }
+
+ .mb-xxl-2 {
+ margin-bottom: .5rem !important
+ }
+
+ .mb-xxl-3 {
+ margin-bottom: 1rem !important
+ }
+
+ .mb-xxl-4 {
+ margin-bottom: 1.5rem !important
+ }
+
+ .mb-xxl-5 {
+ margin-bottom: 3rem !important
+ }
+
+ .mb-xxl-6 {
+ margin-bottom: 4.5rem !important
+ }
+
+ .mb-xxl-7 {
+ margin-bottom: 6rem !important
+ }
+
+ .mb-xxl-auto {
+ margin-bottom: auto !important
+ }
+
+ .ml-xxl-0 {
+ margin-left: 0 !important
+ }
+
+ .ml-xxl-1 {
+ margin-left: .25rem !important
+ }
+
+ .ml-xxl-2 {
+ margin-left: .5rem !important
+ }
+
+ .ml-xxl-3 {
+ margin-left: 1rem !important
+ }
+
+ .ml-xxl-4 {
+ margin-left: 1.5rem !important
+ }
+
+ .ml-xxl-5 {
+ margin-left: 3rem !important
+ }
+
+ .ml-xxl-6 {
+ margin-left: 4.5rem !important
+ }
+
+ .ml-xxl-7 {
+ margin-left: 6rem !important
+ }
+
+ .ml-xxl-auto {
+ margin-left: auto !important
+ }
+
+ .m-xxl-n1 {
+ margin: -.25rem !important
+ }
+
+ .m-xxl-n2 {
+ margin: -.5rem !important
+ }
+
+ .m-xxl-n3 {
+ margin: -1rem !important
+ }
+
+ .m-xxl-n4 {
+ margin: -1.5rem !important
+ }
+
+ .m-xxl-n5 {
+ margin: -3rem !important
+ }
+
+ .m-xxl-n6 {
+ margin: -4.5rem !important
+ }
+
+ .m-xxl-n7 {
+ margin: -6rem !important
+ }
+
+ .mx-xxl-n1 {
+ margin-right: -.25rem !important;
+ margin-left: -.25rem !important
+ }
+
+ .mx-xxl-n2 {
+ margin-right: -.5rem !important;
+ margin-left: -.5rem !important
+ }
+
+ .mx-xxl-n3 {
+ margin-right: -1rem !important;
+ margin-left: -1rem !important
+ }
+
+ .mx-xxl-n4 {
+ margin-right: -1.5rem !important;
+ margin-left: -1.5rem !important
+ }
+
+ .mx-xxl-n5 {
+ margin-right: -3rem !important;
+ margin-left: -3rem !important
+ }
+
+ .mx-xxl-n6 {
+ margin-right: -4.5rem !important;
+ margin-left: -4.5rem !important
+ }
+
+ .mx-xxl-n7 {
+ margin-right: -6rem !important;
+ margin-left: -6rem !important
+ }
+
+ .my-xxl-n1 {
+ margin-top: -.25rem !important;
+ margin-bottom: -.25rem !important
+ }
+
+ .my-xxl-n2 {
+ margin-top: -.5rem !important;
+ margin-bottom: -.5rem !important
+ }
+
+ .my-xxl-n3 {
+ margin-top: -1rem !important;
+ margin-bottom: -1rem !important
+ }
+
+ .my-xxl-n4 {
+ margin-top: -1.5rem !important;
+ margin-bottom: -1.5rem !important
+ }
+
+ .my-xxl-n5 {
+ margin-top: -3rem !important;
+ margin-bottom: -3rem !important
+ }
+
+ .my-xxl-n6 {
+ margin-top: -4.5rem !important;
+ margin-bottom: -4.5rem !important
+ }
+
+ .my-xxl-n7 {
+ margin-top: -6rem !important;
+ margin-bottom: -6rem !important
+ }
+
+ .mt-xxl-n1 {
+ margin-top: -.25rem !important
+ }
+
+ .mt-xxl-n2 {
+ margin-top: -.5rem !important
+ }
+
+ .mt-xxl-n3 {
+ margin-top: -1rem !important
+ }
+
+ .mt-xxl-n4 {
+ margin-top: -1.5rem !important
+ }
+
+ .mt-xxl-n5 {
+ margin-top: -3rem !important
+ }
+
+ .mt-xxl-n6 {
+ margin-top: -4.5rem !important
+ }
+
+ .mt-xxl-n7 {
+ margin-top: -6rem !important
+ }
+
+ .mr-xxl-n1 {
+ margin-right: -.25rem !important
+ }
+
+ .mr-xxl-n2 {
+ margin-right: -.5rem !important
+ }
+
+ .mr-xxl-n3 {
+ margin-right: -1rem !important
+ }
+
+ .mr-xxl-n4 {
+ margin-right: -1.5rem !important
+ }
+
+ .mr-xxl-n5 {
+ margin-right: -3rem !important
+ }
+
+ .mr-xxl-n6 {
+ margin-right: -4.5rem !important
+ }
+
+ .mr-xxl-n7 {
+ margin-right: -6rem !important
+ }
+
+ .mb-xxl-n1 {
+ margin-bottom: -.25rem !important
+ }
+
+ .mb-xxl-n2 {
+ margin-bottom: -.5rem !important
+ }
+
+ .mb-xxl-n3 {
+ margin-bottom: -1rem !important
+ }
+
+ .mb-xxl-n4 {
+ margin-bottom: -1.5rem !important
+ }
+
+ .mb-xxl-n5 {
+ margin-bottom: -3rem !important
+ }
+
+ .mb-xxl-n6 {
+ margin-bottom: -4.5rem !important
+ }
+
+ .mb-xxl-n7 {
+ margin-bottom: -6rem !important
+ }
+
+ .ml-xxl-n1 {
+ margin-left: -.25rem !important
+ }
+
+ .ml-xxl-n2 {
+ margin-left: -.5rem !important
+ }
+
+ .ml-xxl-n3 {
+ margin-left: -1rem !important
+ }
+
+ .ml-xxl-n4 {
+ margin-left: -1.5rem !important
+ }
+
+ .ml-xxl-n5 {
+ margin-left: -3rem !important
+ }
+
+ .ml-xxl-n6 {
+ margin-left: -4.5rem !important
+ }
+
+ .ml-xxl-n7 {
+ margin-left: -6rem !important
+ }
+
+ .p-xxl-0 {
+ padding: 0 !important
+ }
+
+ .p-xxl-1 {
+ padding: .25rem !important
+ }
+
+ .p-xxl-2 {
+ padding: .5rem !important
+ }
+
+ .p-xxl-3 {
+ padding: 1rem !important
+ }
+
+ .p-xxl-4 {
+ padding: 1.5rem !important
+ }
+
+ .p-xxl-5 {
+ padding: 3rem !important
+ }
+
+ .p-xxl-6 {
+ padding: 4.5rem !important
+ }
+
+ .p-xxl-7 {
+ padding: 6rem !important
+ }
+
+ .px-xxl-0 {
+ padding-right: 0 !important;
+ padding-left: 0 !important
+ }
+
+ .px-xxl-1 {
+ padding-right: .25rem !important;
+ padding-left: .25rem !important
+ }
+
+ .px-xxl-2 {
+ padding-right: .5rem !important;
+ padding-left: .5rem !important
+ }
+
+ .px-xxl-3 {
+ padding-right: 1rem !important;
+ padding-left: 1rem !important
+ }
+
+ .px-xxl-4 {
+ padding-right: 1.5rem !important;
+ padding-left: 1.5rem !important
+ }
+
+ .px-xxl-5 {
+ padding-right: 3rem !important;
+ padding-left: 3rem !important
+ }
+
+ .px-xxl-6 {
+ padding-right: 4.5rem !important;
+ padding-left: 4.5rem !important
+ }
+
+ .px-xxl-7 {
+ padding-right: 6rem !important;
+ padding-left: 6rem !important
+ }
+
+ .py-xxl-0 {
+ padding-top: 0 !important;
+ padding-bottom: 0 !important
+ }
+
+ .py-xxl-1 {
+ padding-top: .25rem !important;
+ padding-bottom: .25rem !important
+ }
+
+ .py-xxl-2 {
+ padding-top: .5rem !important;
+ padding-bottom: .5rem !important
+ }
+
+ .py-xxl-3 {
+ padding-top: 1rem !important;
+ padding-bottom: 1rem !important
+ }
+
+ .py-xxl-4 {
+ padding-top: 1.5rem !important;
+ padding-bottom: 1.5rem !important
+ }
+
+ .py-xxl-5 {
+ padding-top: 3rem !important;
+ padding-bottom: 3rem !important
+ }
+
+ .py-xxl-6 {
+ padding-top: 4.5rem !important;
+ padding-bottom: 4.5rem !important
+ }
+
+ .py-xxl-7 {
+ padding-top: 6rem !important;
+ padding-bottom: 6rem !important
+ }
+
+ .pt-xxl-0 {
+ padding-top: 0 !important
+ }
+
+ .pt-xxl-1 {
+ padding-top: .25rem !important
+ }
+
+ .pt-xxl-2 {
+ padding-top: .5rem !important
+ }
+
+ .pt-xxl-3 {
+ padding-top: 1rem !important
+ }
+
+ .pt-xxl-4 {
+ padding-top: 1.5rem !important
+ }
+
+ .pt-xxl-5 {
+ padding-top: 3rem !important
+ }
+
+ .pt-xxl-6 {
+ padding-top: 4.5rem !important
+ }
+
+ .pt-xxl-7 {
+ padding-top: 6rem !important
+ }
+
+ .pr-xxl-0 {
+ padding-right: 0 !important
+ }
+
+ .pr-xxl-1 {
+ padding-right: .25rem !important
+ }
+
+ .pr-xxl-2 {
+ padding-right: .5rem !important
+ }
+
+ .pr-xxl-3 {
+ padding-right: 1rem !important
+ }
+
+ .pr-xxl-4 {
+ padding-right: 1.5rem !important
+ }
+
+ .pr-xxl-5 {
+ padding-right: 3rem !important
+ }
+
+ .pr-xxl-6 {
+ padding-right: 4.5rem !important
+ }
+
+ .pr-xxl-7 {
+ padding-right: 6rem !important
+ }
+
+ .pb-xxl-0 {
+ padding-bottom: 0 !important
+ }
+
+ .pb-xxl-1 {
+ padding-bottom: .25rem !important
+ }
+
+ .pb-xxl-2 {
+ padding-bottom: .5rem !important
+ }
+
+ .pb-xxl-3 {
+ padding-bottom: 1rem !important
+ }
+
+ .pb-xxl-4 {
+ padding-bottom: 1.5rem !important
+ }
+
+ .pb-xxl-5 {
+ padding-bottom: 3rem !important
+ }
+
+ .pb-xxl-6 {
+ padding-bottom: 4.5rem !important
+ }
+
+ .pb-xxl-7 {
+ padding-bottom: 6rem !important
+ }
+
+ .pl-xxl-0 {
+ padding-left: 0 !important
+ }
+
+ .pl-xxl-1 {
+ padding-left: .25rem !important
+ }
+
+ .pl-xxl-2 {
+ padding-left: .5rem !important
+ }
+
+ .pl-xxl-3 {
+ padding-left: 1rem !important
+ }
+
+ .pl-xxl-4 {
+ padding-left: 1.5rem !important
+ }
+
+ .pl-xxl-5 {
+ padding-left: 3rem !important
+ }
+
+ .pl-xxl-6 {
+ padding-left: 4.5rem !important
+ }
+
+ .pl-xxl-7 {
+ padding-left: 6rem !important
+ }
+
+ .text-xxl-left {
+ text-align: left !important
+ }
+
+ .text-xxl-right {
+ text-align: right !important
+ }
+
+ .text-xxl-center {
+ text-align: center !important
+ }
+}
+
+@media print {
+ .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: flex !important
+ }
+
+ .d-print-inline-flex {
+ display: inline-flex !important
+ }
+
+ .d-print-none {
+ display: none !important
+ }
+}
+
+.accordion .card:not(:last-child) {
+ margin-bottom: 0
+}
+
+.accordion .card-header {
+ border-bottom: 0
+}
+
+.accordion .card-body {
+ border-top: 1px solid transparent
+}
+
+.accordion .card-title a {
+ color: #495057
+}
+
+.alert {
+ padding: 0;
+ display: flex
+}
+
+.alert .close:focus, .alert .close:hover {
+ opacity: 1
+}
+
+.alert-outline, .alert-outline-coloured {
+ color: #495057;
+ background: #fff
+}
+
+.alert-outline-coloured hr, .alert-outline hr {
+ border-top-color: #ced4da
+}
+
+.alert-outline-coloured .close:focus, .alert-outline-coloured .close:hover, .alert-outline .close:focus, .alert-outline .close:hover {
+ color: #343a40
+}
+
+.alert-outline-coloured .alert-message, .alert-outline .alert-message {
+ border-top-right-radius: .2rem;
+ border-bottom-right-radius: .2rem;
+ border-top-left-radius: .2rem;
+ border-bottom-left-radius: .2rem;
+ border: 1px solid #ced4da
+}
+
+.alert-outline-coloured .alert-message:not(:nth-child(2)), .alert-outline .alert-message:not(:nth-child(2)) {
+ border-top-left-radius: 0;
+ border-bottom-left-radius: 0;
+ border-left: 0
+}
+
+.alert-outline-coloured .alert-icon, .alert-outline .alert-icon {
+ border-top-left-radius: .2rem;
+ border-bottom-left-radius: .2rem;
+ color: #fff
+}
+
+.alert-outline-coloured.alert-primary .alert-icon, .alert-outline.alert-primary .alert-icon {
+ background-color: #3b7ddd
+}
+
+.alert-outline-coloured.alert-secondary .alert-icon, .alert-outline.alert-secondary .alert-icon {
+ background-color: #6c757d
+}
+
+.alert-outline-coloured.alert-success .alert-icon, .alert-outline.alert-success .alert-icon {
+ background-color: #28a745
+}
+
+.alert-outline-coloured.alert-info .alert-icon, .alert-outline.alert-info .alert-icon {
+ background-color: #17a2b8
+}
+
+.alert-outline-coloured.alert-warning .alert-icon, .alert-outline.alert-warning .alert-icon {
+ background-color: #ffc107
+}
+
+.alert-outline-coloured.alert-danger .alert-icon, .alert-outline.alert-danger .alert-icon {
+ background-color: #dc3545
+}
+
+.alert-outline-coloured.alert-light .alert-icon, .alert-outline.alert-light .alert-icon {
+ background-color: #f8f9fa
+}
+
+.alert-outline-coloured.alert-dark .alert-icon, .alert-outline.alert-dark .alert-icon {
+ background-color: #212529
+}
+
+.alert-outline-coloured.alert-primary .alert-message {
+ border-color: #3b7ddd
+}
+
+.alert-outline-coloured.alert-secondary .alert-message {
+ border-color: #6c757d
+}
+
+.alert-outline-coloured.alert-success .alert-message {
+ border-color: #28a745
+}
+
+.alert-outline-coloured.alert-info .alert-message {
+ border-color: #17a2b8
+}
+
+.alert-outline-coloured.alert-warning .alert-message {
+ border-color: #ffc107
+}
+
+.alert-outline-coloured.alert-danger .alert-message {
+ border-color: #dc3545
+}
+
+.alert-outline-coloured.alert-light .alert-message {
+ border-color: #f8f9fa
+}
+
+.alert-outline-coloured.alert-dark .alert-message {
+ border-color: #212529
+}
+
+.alert-icon {
+ padding: .95rem;
+ background: rgba(0, 0, 0, .05)
+}
+
+.alert-message {
+ padding: .95rem;
+ width: 100%;
+ box-sizing: border-box
+}
+
+.avatar {
+ width: 40px;
+ height: 40px
+}
+
+.avatar-title {
+ display: flex;
+ width: 100%;
+ height: 100%;
+ align-items: center;
+ justify-content: center;
+ color: #3b7ddd
+}
+
+.btn-pill {
+ border-radius: 10rem
+}
+
+.btn-square {
+ border-radius: 0
+}
+
+.btn .feather {
+ width: 14px;
+ height: 14px
+}
+
+.btn-danger, .btn-danger.disabled, .btn-danger.focus, .btn-danger.hover:not(:disabled):not(.disabled), .btn-danger:disabled, .btn-danger:focus, .btn-danger:hover:not(:disabled):not(.disabled), .btn-dark, .btn-dark.disabled, .btn-dark.focus, .btn-dark.hover:not(:disabled):not(.disabled), .btn-dark:disabled, .btn-dark:focus, .btn-dark:hover:not(:disabled):not(.disabled), .btn-info, .btn-info.disabled, .btn-info.focus, .btn-info.hover:not(:disabled):not(.disabled), .btn-info:disabled, .btn-info:focus, .btn-info:hover:not(:disabled):not(.disabled), .btn-light, .btn-light.disabled, .btn-light.focus, .btn-light.hover:not(:disabled):not(.disabled), .btn-light:disabled, .btn-light:focus, .btn-light:hover:not(:disabled):not(.disabled), .btn-outline-danger.hover:not(:disabled):not(.disabled), .btn-outline-danger:hover:not(:disabled):not(.disabled), .btn-outline-danger:not(:disabled):not(.disabled).active, .btn-outline-danger:not(:disabled):not(.disabled):active, .btn-outline-dark.hover:not(:disabled):not(.disabled), .btn-outline-dark:hover:not(:disabled):not(.disabled), .btn-outline-dark:not(:disabled):not(.disabled).active, .btn-outline-dark:not(:disabled):not(.disabled):active, .btn-outline-info.hover:not(:disabled):not(.disabled), .btn-outline-info:hover:not(:disabled):not(.disabled), .btn-outline-info:not(:disabled):not(.disabled).active, .btn-outline-info:not(:disabled):not(.disabled):active, .btn-outline-light.hover:not(:disabled):not(.disabled), .btn-outline-light:hover:not(:disabled):not(.disabled), .btn-outline-light:not(:disabled):not(.disabled).active, .btn-outline-light:not(:disabled):not(.disabled):active, .btn-outline-primary.hover:not(:disabled):not(.disabled), .btn-outline-primary:hover:not(:disabled):not(.disabled), .btn-outline-primary:not(:disabled):not(.disabled).active, .btn-outline-primary:not(:disabled):not(.disabled):active, .btn-outline-secondary.hover:not(:disabled):not(.disabled), .btn-outline-secondary:hover:not(:disabled):not(.disabled), .btn-outline-secondary:not(:disabled):not(.disabled).active, .btn-outline-secondary:not(:disabled):not(.disabled):active, .btn-outline-success.hover:not(:disabled):not(.disabled), .btn-outline-success:hover:not(:disabled):not(.disabled), .btn-outline-success:not(:disabled):not(.disabled).active, .btn-outline-success:not(:disabled):not(.disabled):active, .btn-outline-warning.hover:not(:disabled):not(.disabled), .btn-outline-warning:hover:not(:disabled):not(.disabled), .btn-outline-warning:not(:disabled):not(.disabled).active, .btn-outline-warning:not(:disabled):not(.disabled):active, .btn-primary, .btn-primary.disabled, .btn-primary.focus, .btn-primary.hover:not(:disabled):not(.disabled), .btn-primary:disabled, .btn-primary:focus, .btn-primary:hover:not(:disabled):not(.disabled), .btn-secondary, .btn-secondary.disabled, .btn-secondary.focus, .btn-secondary.hover:not(:disabled):not(.disabled), .btn-secondary:disabled, .btn-secondary:focus, .btn-secondary:hover:not(:disabled):not(.disabled), .btn-success, .btn-success.disabled, .btn-success.focus, .btn-success.hover:not(:disabled):not(.disabled), .btn-success:disabled, .btn-success:focus, .btn-success:hover:not(:disabled):not(.disabled), .btn-warning, .btn-warning.disabled, .btn-warning.focus, .btn-warning.hover:not(:disabled):not(.disabled), .btn-warning:disabled, .btn-warning:focus, .btn-warning:hover:not(:disabled):not(.disabled), .show > .btn-danger.dropdown-toggle, .show > .btn-dark.dropdown-toggle, .show > .btn-info.dropdown-toggle, .show > .btn-light.dropdown-toggle, .show > .btn-primary.dropdown-toggle, .show > .btn-secondary.dropdown-toggle, .show > .btn-success.dropdown-toggle, .show > .btn-warning.dropdown-toggle {
+ color: #fff
+}
+
+.btn-facebook {
+ color: #fff;
+ background-color: #3b5998;
+ border-color: #3b5998
+}
+
+.btn-check:focus + .btn-facebook, .btn-facebook:focus, .btn-facebook:hover {
+ color: #fff;
+ background-color: #30497c;
+ border-color: #2d4373
+}
+
+.btn-check:focus + .btn-facebook, .btn-facebook:focus {
+ box-shadow: 0 0 0 .2rem rgba(88, 114, 167, .5)
+}
+
+.btn-check:active + .btn-facebook, .btn-check:checked + .btn-facebook, .btn-facebook.active, .btn-facebook:active, .show > .btn-facebook.dropdown-toggle {
+ color: #fff;
+ background-color: #2d4373;
+ border-color: #293e6a
+}
+
+.btn-check:active + .btn-facebook:focus, .btn-check:checked + .btn-facebook:focus, .btn-facebook.active:focus, .btn-facebook:active:focus, .show > .btn-facebook.dropdown-toggle:focus {
+ box-shadow: 0 0 0 .2rem rgba(88, 114, 167, .5)
+}
+
+.btn-facebook.disabled, .btn-facebook:disabled {
+ color: #fff;
+ background-color: #3b5998;
+ border-color: #3b5998
+}
+
+.btn-facebook, .btn-facebook.disabled, .btn-facebook.focus, .btn-facebook.hover:not(:disabled):not(.disabled), .btn-facebook:disabled, .btn-facebook:focus, .btn-facebook:hover:not(:disabled):not(.disabled), .show > .btn-facebook.dropdown-toggle {
+ color: #fff
+}
+
+.btn-twitter {
+ color: #000;
+ background-color: #1da1f2;
+ border-color: #1da1f2
+}
+
+.btn-check:focus + .btn-twitter, .btn-twitter:focus, .btn-twitter:hover {
+ color: #000;
+ background-color: #41b0f4;
+ border-color: #35abf3
+}
+
+.btn-check:focus + .btn-twitter, .btn-twitter:focus {
+ box-shadow: 0 0 0 .2rem rgba(25, 137, 206, .5)
+}
+
+.btn-check:active + .btn-twitter, .btn-check:checked + .btn-twitter, .btn-twitter.active, .btn-twitter:active, .show > .btn-twitter.dropdown-toggle {
+ color: #000;
+ background-color: #4db5f5;
+ border-color: #35abf3
+}
+
+.btn-check:active + .btn-twitter:focus, .btn-check:checked + .btn-twitter:focus, .btn-twitter.active:focus, .btn-twitter:active:focus, .show > .btn-twitter.dropdown-toggle:focus {
+ box-shadow: 0 0 0 .2rem rgba(25, 137, 206, .5)
+}
+
+.btn-twitter.disabled, .btn-twitter:disabled {
+ color: #000;
+ background-color: #1da1f2;
+ border-color: #1da1f2
+}
+
+.btn-twitter, .btn-twitter.disabled, .btn-twitter.focus, .btn-twitter.hover:not(:disabled):not(.disabled), .btn-twitter:disabled, .btn-twitter:focus, .btn-twitter:hover:not(:disabled):not(.disabled), .show > .btn-twitter.dropdown-toggle {
+ color: #fff
+}
+
+.btn-google {
+ color: #000;
+ background-color: #dc4e41;
+ border-color: #dc4e41
+}
+
+.btn-check:focus + .btn-google, .btn-google:focus, .btn-google:hover {
+ color: #000;
+ background-color: #e26c61;
+ border-color: #e06257
+}
+
+.btn-check:focus + .btn-google, .btn-google:focus {
+ box-shadow: 0 0 0 .2rem rgba(187, 66, 55, .5)
+}
+
+.btn-check:active + .btn-google, .btn-check:checked + .btn-google, .btn-google.active, .btn-google:active, .show > .btn-google.dropdown-toggle {
+ color: #000;
+ background-color: #e4766c;
+ border-color: #e06257
+}
+
+.btn-check:active + .btn-google:focus, .btn-check:checked + .btn-google:focus, .btn-google.active:focus, .btn-google:active:focus, .show > .btn-google.dropdown-toggle:focus {
+ box-shadow: 0 0 0 .2rem rgba(187, 66, 55, .5)
+}
+
+.btn-google.disabled, .btn-google:disabled {
+ color: #000;
+ background-color: #dc4e41;
+ border-color: #dc4e41
+}
+
+.btn-google, .btn-google.disabled, .btn-google.focus, .btn-google.hover:not(:disabled):not(.disabled), .btn-google:disabled, .btn-google:focus, .btn-google:hover:not(:disabled):not(.disabled), .show > .btn-google.dropdown-toggle {
+ color: #fff
+}
+
+.btn-youtube {
+ color: #000;
+ background-color: red;
+ border-color: red
+}
+
+.btn-check:focus + .btn-youtube, .btn-youtube:focus, .btn-youtube:hover {
+ color: #000;
+ background-color: #ff2626;
+ border-color: #ff1a1a
+}
+
+.btn-check:focus + .btn-youtube, .btn-youtube:focus {
+ box-shadow: 0 0 0 .2rem rgba(217, 0, 0, .5)
+}
+
+.btn-check:active + .btn-youtube, .btn-check:checked + .btn-youtube, .btn-youtube.active, .btn-youtube:active, .show > .btn-youtube.dropdown-toggle {
+ color: #000;
+ background-color: #f33;
+ border-color: #ff1a1a
+}
+
+.btn-check:active + .btn-youtube:focus, .btn-check:checked + .btn-youtube:focus, .btn-youtube.active:focus, .btn-youtube:active:focus, .show > .btn-youtube.dropdown-toggle:focus {
+ box-shadow: 0 0 0 .2rem rgba(217, 0, 0, .5)
+}
+
+.btn-youtube.disabled, .btn-youtube:disabled {
+ color: #000;
+ background-color: red;
+ border-color: red
+}
+
+.btn-youtube, .btn-youtube.disabled, .btn-youtube.focus, .btn-youtube.hover:not(:disabled):not(.disabled), .btn-youtube:disabled, .btn-youtube:focus, .btn-youtube:hover:not(:disabled):not(.disabled), .show > .btn-youtube.dropdown-toggle {
+ color: #fff
+}
+
+.btn-vimeo {
+ color: #000;
+ background-color: #1ab7ea;
+ border-color: #1ab7ea
+}
+
+.btn-check:focus + .btn-vimeo, .btn-vimeo:focus, .btn-vimeo:hover {
+ color: #000;
+ background-color: #3dc2ed;
+ border-color: #31beec
+}
+
+.btn-check:focus + .btn-vimeo, .btn-vimeo:focus {
+ box-shadow: 0 0 0 .2rem rgba(22, 156, 199, .5)
+}
+
+.btn-check:active + .btn-vimeo, .btn-check:checked + .btn-vimeo, .btn-vimeo.active, .btn-vimeo:active, .show > .btn-vimeo.dropdown-toggle {
+ color: #000;
+ background-color: #49c6ee;
+ border-color: #31beec
+}
+
+.btn-check:active + .btn-vimeo:focus, .btn-check:checked + .btn-vimeo:focus, .btn-vimeo.active:focus, .btn-vimeo:active:focus, .show > .btn-vimeo.dropdown-toggle:focus {
+ box-shadow: 0 0 0 .2rem rgba(22, 156, 199, .5)
+}
+
+.btn-vimeo.disabled, .btn-vimeo:disabled {
+ color: #000;
+ background-color: #1ab7ea;
+ border-color: #1ab7ea
+}
+
+.btn-vimeo, .btn-vimeo.disabled, .btn-vimeo.focus, .btn-vimeo.hover:not(:disabled):not(.disabled), .btn-vimeo:disabled, .btn-vimeo:focus, .btn-vimeo:hover:not(:disabled):not(.disabled), .show > .btn-vimeo.dropdown-toggle {
+ color: #fff
+}
+
+.btn-dribbble {
+ color: #000;
+ background-color: #ea4c89;
+ border-color: #ea4c89
+}
+
+.btn-check:focus + .btn-dribbble, .btn-dribbble:focus, .btn-dribbble:hover {
+ color: #000;
+ background-color: #ee6ea0;
+ border-color: #ed6398
+}
+
+.btn-check:focus + .btn-dribbble, .btn-dribbble:focus {
+ box-shadow: 0 0 0 .2rem rgba(199, 65, 116, .5)
+}
+
+.btn-check:active + .btn-dribbble, .btn-check:checked + .btn-dribbble, .btn-dribbble.active, .btn-dribbble:active, .show > .btn-dribbble.dropdown-toggle {
+ color: #000;
+ background-color: #ef7aa7;
+ border-color: #ed6398
+}
+
+.btn-check:active + .btn-dribbble:focus, .btn-check:checked + .btn-dribbble:focus, .btn-dribbble.active:focus, .btn-dribbble:active:focus, .show > .btn-dribbble.dropdown-toggle:focus {
+ box-shadow: 0 0 0 .2rem rgba(199, 65, 116, .5)
+}
+
+.btn-dribbble.disabled, .btn-dribbble:disabled {
+ color: #000;
+ background-color: #ea4c89;
+ border-color: #ea4c89
+}
+
+.btn-dribbble, .btn-dribbble.disabled, .btn-dribbble.focus, .btn-dribbble.hover:not(:disabled):not(.disabled), .btn-dribbble:disabled, .btn-dribbble:focus, .btn-dribbble:hover:not(:disabled):not(.disabled), .show > .btn-dribbble.dropdown-toggle {
+ color: #fff
+}
+
+.btn-github {
+ color: #fff;
+ background-color: #181717;
+ border-color: #181717
+}
+
+.btn-check:focus + .btn-github, .btn-github:focus, .btn-github:hover {
+ color: #fff;
+ background-color: #040404;
+ border-color: #000
+}
+
+.btn-check:focus + .btn-github, .btn-github:focus {
+ box-shadow: 0 0 0 .2rem rgba(59, 58, 58, .5)
+}
+
+.btn-check:active + .btn-github, .btn-check:checked + .btn-github, .btn-github.active, .btn-github:active, .show > .btn-github.dropdown-toggle {
+ color: #fff;
+ background-color: #000;
+ border-color: #000
+}
+
+.btn-check:active + .btn-github:focus, .btn-check:checked + .btn-github:focus, .btn-github.active:focus, .btn-github:active:focus, .show > .btn-github.dropdown-toggle:focus {
+ box-shadow: 0 0 0 .2rem rgba(59, 58, 58, .5)
+}
+
+.btn-github.disabled, .btn-github:disabled {
+ color: #fff;
+ background-color: #181717;
+ border-color: #181717
+}
+
+.btn-github, .btn-github.disabled, .btn-github.focus, .btn-github.hover:not(:disabled):not(.disabled), .btn-github:disabled, .btn-github:focus, .btn-github:hover:not(:disabled):not(.disabled), .show > .btn-github.dropdown-toggle {
+ color: #fff
+}
+
+.btn-instagram {
+ color: #000;
+ background-color: #e4405f;
+ border-color: #e4405f
+}
+
+.btn-check:focus + .btn-instagram, .btn-instagram:focus, .btn-instagram:hover {
+ color: #000;
+ background-color: #e9627b;
+ border-color: #e75672
+}
+
+.btn-check:focus + .btn-instagram, .btn-instagram:focus {
+ box-shadow: 0 0 0 .2rem rgba(194, 54, 81, .5)
+}
+
+.btn-check:active + .btn-instagram, .btn-check:checked + .btn-instagram, .btn-instagram.active, .btn-instagram:active, .show > .btn-instagram.dropdown-toggle {
+ color: #000;
+ background-color: #ea6d84;
+ border-color: #e75672
+}
+
+.btn-check:active + .btn-instagram:focus, .btn-check:checked + .btn-instagram:focus, .btn-instagram.active:focus, .btn-instagram:active:focus, .show > .btn-instagram.dropdown-toggle:focus {
+ box-shadow: 0 0 0 .2rem rgba(194, 54, 81, .5)
+}
+
+.btn-instagram.disabled, .btn-instagram:disabled {
+ color: #000;
+ background-color: #e4405f;
+ border-color: #e4405f
+}
+
+.btn-instagram, .btn-instagram.disabled, .btn-instagram.focus, .btn-instagram.hover:not(:disabled):not(.disabled), .btn-instagram:disabled, .btn-instagram:focus, .btn-instagram:hover:not(:disabled):not(.disabled), .show > .btn-instagram.dropdown-toggle {
+ color: #fff
+}
+
+.btn-pinterest {
+ color: #fff;
+ background-color: #bd081c;
+ border-color: #bd081c
+}
+
+.btn-check:focus + .btn-pinterest, .btn-pinterest:focus, .btn-pinterest:hover {
+ color: #fff;
+ background-color: #980617;
+ border-color: #8c0615
+}
+
+.btn-check:focus + .btn-pinterest, .btn-pinterest:focus {
+ box-shadow: 0 0 0 .2rem rgba(199, 45, 62, .5)
+}
+
+.btn-check:active + .btn-pinterest, .btn-check:checked + .btn-pinterest, .btn-pinterest.active, .btn-pinterest:active, .show > .btn-pinterest.dropdown-toggle {
+ color: #fff;
+ background-color: #8c0615;
+ border-color: #800513
+}
+
+.btn-check:active + .btn-pinterest:focus, .btn-check:checked + .btn-pinterest:focus, .btn-pinterest.active:focus, .btn-pinterest:active:focus, .show > .btn-pinterest.dropdown-toggle:focus {
+ box-shadow: 0 0 0 .2rem rgba(199, 45, 62, .5)
+}
+
+.btn-pinterest.disabled, .btn-pinterest:disabled {
+ color: #fff;
+ background-color: #bd081c;
+ border-color: #bd081c
+}
+
+.btn-pinterest, .btn-pinterest.disabled, .btn-pinterest.focus, .btn-pinterest.hover:not(:disabled):not(.disabled), .btn-pinterest:disabled, .btn-pinterest:focus, .btn-pinterest:hover:not(:disabled):not(.disabled), .show > .btn-pinterest.dropdown-toggle {
+ color: #fff
+}
+
+.btn-flickr {
+ color: #fff;
+ background-color: #0063dc;
+ border-color: #0063dc
+}
+
+.btn-check:focus + .btn-flickr, .btn-flickr:focus, .btn-flickr:hover {
+ color: #fff;
+ background-color: #0052b6;
+ border-color: #004ca9
+}
+
+.btn-check:focus + .btn-flickr, .btn-flickr:focus {
+ box-shadow: 0 0 0 .2rem rgba(38, 122, 225, .5)
+}
+
+.btn-check:active + .btn-flickr, .btn-check:checked + .btn-flickr, .btn-flickr.active, .btn-flickr:active, .show > .btn-flickr.dropdown-toggle {
+ color: #fff;
+ background-color: #004ca9;
+ border-color: #00469c
+}
+
+.btn-check:active + .btn-flickr:focus, .btn-check:checked + .btn-flickr:focus, .btn-flickr.active:focus, .btn-flickr:active:focus, .show > .btn-flickr.dropdown-toggle:focus {
+ box-shadow: 0 0 0 .2rem rgba(38, 122, 225, .5)
+}
+
+.btn-flickr.disabled, .btn-flickr:disabled {
+ color: #fff;
+ background-color: #0063dc;
+ border-color: #0063dc
+}
+
+.btn-flickr, .btn-flickr.disabled, .btn-flickr.focus, .btn-flickr.hover:not(:disabled):not(.disabled), .btn-flickr:disabled, .btn-flickr:focus, .btn-flickr:hover:not(:disabled):not(.disabled), .show > .btn-flickr.dropdown-toggle {
+ color: #fff
+}
+
+.btn-bitbucket {
+ color: #fff;
+ background-color: #0052cc;
+ border-color: #0052cc
+}
+
+.btn-bitbucket:focus, .btn-bitbucket:hover, .btn-check:focus + .btn-bitbucket {
+ color: #fff;
+ background-color: #0043a6;
+ border-color: #003e99
+}
+
+.btn-bitbucket:focus, .btn-check:focus + .btn-bitbucket {
+ box-shadow: 0 0 0 .2rem rgba(38, 108, 212, .5)
+}
+
+.btn-bitbucket.active, .btn-bitbucket:active, .btn-check:active + .btn-bitbucket, .btn-check:checked + .btn-bitbucket, .show > .btn-bitbucket.dropdown-toggle {
+ color: #fff;
+ background-color: #003e99;
+ border-color: #00388c
+}
+
+.btn-bitbucket.active:focus, .btn-bitbucket:active:focus, .btn-check:active + .btn-bitbucket:focus, .btn-check:checked + .btn-bitbucket:focus, .show > .btn-bitbucket.dropdown-toggle:focus {
+ box-shadow: 0 0 0 .2rem rgba(38, 108, 212, .5)
+}
+
+.btn-bitbucket.disabled, .btn-bitbucket:disabled {
+ color: #fff;
+ background-color: #0052cc;
+ border-color: #0052cc
+}
+
+.btn-bitbucket, .btn-bitbucket.disabled, .btn-bitbucket.focus, .btn-bitbucket.hover:not(:disabled):not(.disabled), .btn-bitbucket:disabled, .btn-bitbucket:focus, .btn-bitbucket:hover:not(:disabled):not(.disabled), .show > .btn-bitbucket.dropdown-toggle {
+ color: #fff
+}
+
+.btn-light, .btn-light.disabled, .btn-light.focus, .btn-light.hover:not(:disabled):not(.disabled), .btn-light:disabled, .btn-light:focus, .btn-light:hover:not(:disabled):not(.disabled), .btn-outline-light.hover:not(:disabled):not(.disabled), .btn-outline-light:hover:not(:disabled):not(.disabled), .btn-outline-light:not(:disabled):not(.disabled).active, .btn-outline-light:not(:disabled):not(.disabled):active, .btn-outline-white.hover:not(:disabled):not(.disabled), .btn-outline-white:hover:not(:disabled):not(.disabled), .btn-outline-white:not(:disabled):not(.disabled).active, .btn-outline-white:not(:disabled):not(.disabled):active, .btn-white, .btn-white.disabled, .btn-white.focus, .btn-white.hover:not(:disabled):not(.disabled), .btn-white:disabled, .btn-white:focus, .btn-white:hover:not(:disabled):not(.disabled), .show > .btn-light.dropdown-toggle, .show > .btn-white.dropdown-toggle {
+ color: #343a40
+}
+
+.card {
+ margin-bottom: 24px;
+ box-shadow: 0 0 .875rem 0 rgba(33, 37, 41, .05)
+}
+
+.card-header {
+ border-bottom-width: 1px
+}
+
+.card-actions a {
+ color: #495057;
+ text-decoration: none
+}
+
+.card-actions svg {
+ width: 16px;
+ height: 16px
+}
+
+.card-actions .dropdown {
+ line-height: 1.4
+}
+
+.card-title {
+ font-size: .875rem;
+ color: #495057
+}
+
+.card-subtitle, .card-title {
+ font-weight: 400
+}
+
+.card-table {
+ margin-bottom: 0
+}
+
+.card-table tr td:first-child, .card-table tr th:first-child {
+ padding-left: 1.25rem
+}
+
+.card-table tr td:last-child, .card-table tr th:last-child {
+ padding-right: 1.25rem
+}
+
+.card-img, .card-img-bottom, .card-img-top {
+ max-width: 100%;
+ height: auto
+}
+
+@media (-ms-high-contrast: none) {
+ .card-img, .card-img-bottom, .card-img-top {
+ height: 100%
+ }
+}
+
+.chart {
+ margin: auto;
+ position: relative;
+ width: 100%;
+ min-height: 300px
+}
+
+.chart-xs {
+ min-height: 200px
+}
+
+.chart-sm {
+ min-height: 252px
+}
+
+.chart-lg {
+ min-height: 350px
+}
+
+.chart-xl {
+ min-height: 500px
+}
+
+.chart canvas {
+ max-width: 100%
+}
+
+.content {
+ padding: 1.5rem 1.5rem .75rem;
+ flex: 1;
+ width: 100vw;
+ max-width: 100vw;
+ direction: ltr
+}
+
+@media (min-width: 768px) {
+ .content {
+ width: auto;
+ max-width: auto
+ }
+}
+
+@media (min-width: 992px) {
+ .content {
+ padding: 2.5rem 2.5rem 1rem
+ }
+}
+
+.navbar-nav .dropdown-menu {
+ box-shadow: 0 .1rem .2rem rgba(0, 0, 0, .05)
+}
+
+.dropdown .dropdown-menu.show {
+ animation-name: dropdownAnimation;
+ animation-duration: .25s;
+ animation-iteration-count: 1;
+ animation-timing-function: ease;
+ animation-fill-mode: forwards
+}
+
+@keyframes dropdownAnimation {
+ 0% {
+ opacity: 0;
+ transform: translateY(-8px)
+ }
+ to {
+ opacity: 1;
+ transform: translate(0)
+ }
+}
+
+.dropdown-toggle:after {
+ border: solid;
+ border-width: 0 2px 2px 0;
+ display: inline-block;
+ padding: 2px;
+ transform: rotate(45deg)
+}
+
+.dropdown-item {
+ transition: background .1s ease-in-out, color .1s ease-in-out
+}
+
+.dropdown-menu {
+ top: auto
+}
+
+.dropdown-menu-lg {
+ min-width: 20rem
+}
+
+.dropdown .list-group .list-group-item {
+ border-width: 0 0 1px;
+ margin-bottom: 0
+}
+
+.dropdown .list-group .list-group-item:first-child, .dropdown .list-group .list-group-item:last-child {
+ border-radius: 0
+}
+
+.dropdown .list-group .list-group-item:hover {
+ background: #f8f9fa
+}
+
+.dropdown-menu-header {
+ padding: .75rem;
+ text-align: center;
+ font-weight: 600;
+ border-bottom: 1px solid #dee2e6
+}
+
+.dropdown-menu-footer {
+ padding: .5rem;
+ text-align: center;
+ display: block;
+ font-size: .75rem
+}
+
+.feather {
+ width: 18px;
+ height: 18px;
+ stroke-width: 1.5
+}
+
+.feather-sm {
+ width: 14px;
+ height: 14px
+}
+
+.feather-lg {
+ width: 36px;
+ height: 36px
+}
+
+footer.footer {
+ padding: 1rem .875rem;
+ direction: ltr;
+ background: #fff
+}
+
+footer.footer ul {
+ margin-bottom: 0
+}
+
+@media (max-width: 767.98px) {
+ footer.footer {
+ width: 100vw
+ }
+}
+
+.input-group-navbar .btn, .input-group-navbar .form-control {
+ height: calc(2.0875rem + 2px);
+ background: #f7f7fc;
+ box-shadow: none;
+ border: 0;
+ padding: .35rem .75rem
+}
+
+.input-group-navbar .btn:focus, .input-group-navbar .form-control:focus {
+ background: #f7f7fc;
+ box-shadow: none;
+ outline: 0
+}
+
+.input-group-navbar .btn {
+ color: #6c757d
+}
+
+.input-group-navbar .btn .feather {
+ width: 20px;
+ height: 20px
+}
+
+.hamburger, .hamburger:after, .hamburger:before {
+ cursor: pointer;
+ border-radius: 1px;
+ height: 3px;
+ width: 24px;
+ background: #495057;
+ display: block;
+ content: "";
+ transition: background .1s ease-in-out, color .1s ease-in-out
+}
+
+.hamburger {
+ position: relative
+}
+
+.hamburger:before {
+ top: -7.5px;
+ width: 24px;
+ position: absolute
+}
+
+.hamburger:after {
+ bottom: -7.5px;
+ width: 16px;
+ position: absolute
+}
+
+.sidebar-toggle:hover .hamburger, .sidebar-toggle:hover .hamburger:after, .sidebar-toggle:hover .hamburger:before {
+ background: #3b7ddd
+}
+
+.hamburger-right, .hamburger-right:after, .hamburger-right:before {
+ right: 0
+}
+
+a.list-group-item {
+ text-decoration: none
+}
+
+.main {
+ display: flex;
+ width: 100%;
+ min-width: 0;
+ min-height: 100vh;
+ transition: margin-left .35s ease-in-out, left .35s ease-in-out, margin-right .35s ease-in-out, right .35s ease-in-out;
+ /*background: #f7f7fc;*/
+ background-color: #ddd;
+ flex-direction: column;
+ overflow: hidden;
+ border-top-left-radius: 0;
+ border-bottom-left-radius: 0
+}
+
+@media (min-width: 992px) {
+ .main {
+ box-shadow: inset .75rem 0 1.5rem 0 rgba(0, 0, 0, .075)
+ }
+}
+
+.modal-colored .modal-footer, .modal-colored .modal-header {
+ border-color: hsla(0, 0%, 100%, .33)
+}
+
+.navbar {
+ border-bottom: 0;
+ box-shadow: 0 0 2rem 0 rgba(33, 37, 41, .1)
+}
+
+@media (max-width: 767.98px) {
+ .navbar {
+ width: 100vw
+ }
+}
+
+.navbar .avatar {
+ margin-top: -15px;
+ margin-bottom: -15px
+}
+
+.navbar-nav {
+ direction: ltr
+}
+
+.navbar-align {
+ margin-left: auto
+}
+
+.navbar-bg {
+ background: #fff
+}
+
+.navbar-brand {
+ font-weight: 400;
+ font-size: 1.15rem;
+ padding: .875rem 0;
+ color: #f8f9fa;
+ display: block
+}
+
+.navbar-brand .feather, .navbar-brand svg {
+ color: #3b7ddd;
+ height: 24px;
+ width: 24px;
+ margin-left: -.15rem;
+ margin-right: .375rem;
+ margin-top: -.375rem
+}
+
+.nav-flag, .nav-icon {
+ padding: .1rem .8rem;
+ display: block;
+ font-size: 1.5rem;
+ color: #6c757d;
+ transition: background .1s ease-in-out, color .1s ease-in-out;
+ line-height: 1.4
+}
+
+.nav-flag:after, .nav-icon:after {
+ display: none !important
+}
+
+.nav-flag.active, .nav-flag:hover, .nav-icon.active, .nav-icon:hover {
+ color: #3b7ddd
+}
+
+.nav-flag .feather, .nav-flag svg, .nav-icon .feather, .nav-icon svg {
+ width: 20px;
+ height: 20px
+}
+
+.nav-item .indicator {
+ background: #3b7ddd;
+ box-shadow: 0 .1rem .2rem rgba(0, 0, 0, .05);
+ border-radius: 50%;
+ display: block;
+ height: 18px;
+ width: 18px;
+ padding: 1px;
+ position: absolute;
+ top: 0;
+ right: -8px;
+ text-align: center;
+ transition: top .1s ease-out;
+ font-size: .675rem;
+ color: #fff
+}
+
+.nav-item:hover .indicator {
+ top: -4px
+}
+
+.nav-item a:focus {
+ outline: 0
+}
+
+@media (-ms-high-contrast: none), screen and (-ms-high-contrast: active) {
+ .navbar .avatar {
+ max-height: 47px
+ }
+}
+
+@media (max-width: 575.98px) {
+ .navbar {
+ padding: .75rem
+ }
+
+ .nav-icon {
+ padding: .1rem .75rem
+ }
+
+ .dropdown, .dropleft, .dropright, .dropup {
+ position: inherit
+ }
+
+ .navbar-expand .navbar-nav .dropdown-menu-lg {
+ min-width: 100%
+ }
+
+ .nav-item .nav-link:after {
+ display: none
+ }
+}
+
+.nav-flag img {
+ border-radius: 50%;
+ width: 20px;
+ height: 20px;
+ object-fit: cover
+}
+
+.navbar input {
+ direction: ltr
+}
+
+.progress-sm {
+ height: .5rem
+}
+
+.progress-lg {
+ height: 1.5rem
+}
+
+#root, body, html {
+ height: 100%
+}
+
+body {
+ overflow-y: scroll;
+ opacity: 1 !important
+}
+
+@media (-ms-high-contrast: none), screen and (-ms-high-contrast: active) {
+ html {
+ overflow-x: hidden
+ }
+}
+
+.sidebar {
+ min-width: 260px;
+ max-width: 260px;
+ direction: ltr
+}
+
+.sidebar, .sidebar-content {
+ transition: margin-left .35s ease-in-out, left .35s ease-in-out, margin-right .35s ease-in-out, right .35s ease-in-out;
+ background: #222e3c
+}
+
+.sidebar-content {
+ display: flex;
+ height: 100vh;
+ flex-direction: column
+}
+
+.sidebar-nav {
+ padding-left: 0;
+ margin-bottom: 0;
+ list-style: none;
+ flex-grow: 1
+}
+
+.sidebar-link, a.sidebar-link {
+ display: block;
+ padding: .625rem 1.625rem;
+ font-weight: 400;
+ transition: background .1s ease-in-out;
+ position: relative;
+ text-decoration: none;
+ cursor: pointer;
+ color: rgba(233, 236, 239, .5);
+ background: #222e3c;
+ border-left: 3px solid transparent
+}
+
+.sidebar-link i, .sidebar-link svg, a.sidebar-link i, a.sidebar-link svg {
+ margin-right: .75rem;
+ color: rgba(233, 236, 239, .5)
+}
+
+.sidebar-link:focus {
+ outline: 0
+}
+
+.sidebar-link:hover {
+ background: #222e3c;
+ border-left-color: transparent
+}
+
+.sidebar-link:hover, .sidebar-link:hover i, .sidebar-link:hover svg {
+ color: rgba(233, 236, 239, .75)
+}
+
+.sidebar-item.active .sidebar-link:hover, .sidebar-item.active > .sidebar-link {
+ color: #e9ecef;
+ background: linear-gradient(90deg, rgba(59, 125, 221, .1), rgba(59, 125, 221, .0875) 50%, transparent);
+ border-left-color: #3b7ddd
+}
+
+.sidebar-item.active .sidebar-link:hover i, .sidebar-item.active .sidebar-link:hover svg, .sidebar-item.active > .sidebar-link i, .sidebar-item.active > .sidebar-link svg {
+ color: #e9ecef
+}
+
+.sidebar-dropdown .sidebar-link {
+ padding: .625rem 1.5rem .625rem 3.25rem;
+ font-weight: 400;
+ font-size: 90%;
+ border-left: 0;
+ color: #adb5bd;
+ background: transparent
+}
+
+.sidebar-dropdown .sidebar-link:before {
+ content: "→";
+ display: inline-block;
+ position: relative;
+ left: -14px;
+ transition: all .1s ease;
+ transform: translateX(0)
+}
+
+.sidebar-dropdown .sidebar-item .sidebar-link:hover {
+ font-weight: 400;
+ border-left: 0;
+ color: #e9ecef;
+ background: transparent
+}
+
+.sidebar-dropdown .sidebar-item .sidebar-link:hover:hover:before {
+ transform: translateX(4px)
+}
+
+.sidebar-dropdown .sidebar-item.active .sidebar-link {
+ font-weight: 400;
+ border-left: 0;
+ color: #518be1;
+ background: transparent
+}
+
+.sidebar [data-toggle=collapse] {
+ position: relative
+}
+
+.sidebar [data-toggle=collapse]:after {
+ content: " ";
+ border: solid;
+ border-width: 0 .075rem .075rem 0;
+ display: inline-block;
+ padding: 2px;
+ transform: rotate(45deg);
+ position: absolute;
+ top: 1.2rem;
+ right: 1.5rem;
+ transition: all .2s ease-out
+}
+
+.sidebar [aria-expanded=true]:after, .sidebar [data-toggle=collapse]:not(.collapsed):after {
+ transform: rotate(-135deg);
+ top: 1.4rem
+}
+
+.sidebar-brand {
+ font-weight: 600;
+ font-size: 1.15rem;
+ padding: 1.15rem 1.5rem;
+ display: block;
+ color: #f8f9fa
+}
+
+.sidebar-brand:hover {
+ text-decoration: none;
+ color: #f8f9fa
+}
+
+.sidebar-brand:focus {
+ outline: 0
+}
+
+.sidebar-toggle {
+ cursor: pointer;
+ width: 26px;
+ height: 26px
+}
+
+.sidebar.collapsed {
+ margin-left: -260px
+}
+
+@media (min-width: 1px) and (max-width: 991.98px) {
+ .sidebar {
+ margin-left: -260px
+ }
+
+ .sidebar.collapsed {
+ margin-left: 0
+ }
+}
+
+.sidebar-toggle {
+ margin-right: 1rem
+}
+
+.sidebar-header {
+ background: transparent;
+ padding: 1.5rem 1.5rem .375rem;
+ font-size: .75rem;
+ color: #ced4da
+}
+
+.sidebar-badge {
+ position: absolute;
+ right: 15px;
+ top: 14px;
+ z-index: 1
+}
+
+.sidebar-cta-content {
+ padding: 1.5rem;
+ margin: 1.75rem;
+ border-radius: .3rem;
+ background: #2b3947;
+ color: #e9ecef
+}
+
+.min-vw-50 {
+ min-width: 50vw !important
+}
+
+.min-vh-50 {
+ min-height: 50vh !important
+}
+
+.vw-50 {
+ width: 50vw !important
+}
+
+.vh-50 {
+ height: 50vh !important
+}
+
+.table > :not(:last-child) > :last-child > *, .table tbody, .table td, .table tfoot, .table th, .table thead, .table tr {
+ border-color: #dee2e6
+}
+
+.card > .dataTables_wrapper .table.dataTable, .card > .table, .card > .table-responsive-lg .table, .card > .table-responsive-md .table, .card > .table-responsive-sm .table, .card > .table-responsive-xl .table, .card > .table-responsive .table {
+ border-right: 0;
+ border-bottom: 0;
+ border-left: 0;
+ margin-bottom: 0
+}
+
+.card > .dataTables_wrapper .table.dataTable td:first-child, .card > .dataTables_wrapper .table.dataTable th:first-child, .card > .table-responsive-lg .table td:first-child, .card > .table-responsive-lg .table th:first-child, .card > .table-responsive-md .table td:first-child, .card > .table-responsive-md .table th:first-child, .card > .table-responsive-sm .table td:first-child, .card > .table-responsive-sm .table th:first-child, .card > .table-responsive-xl .table td:first-child, .card > .table-responsive-xl .table th:first-child, .card > .table-responsive .table td:first-child, .card > .table-responsive .table th:first-child, .card > .table td:first-child, .card > .table th:first-child {
+ border-left: 0;
+ padding-left: 1.25rem
+}
+
+.card > .dataTables_wrapper .table.dataTable td:last-child, .card > .dataTables_wrapper .table.dataTable th:last-child, .card > .table-responsive-lg .table td:last-child, .card > .table-responsive-lg .table th:last-child, .card > .table-responsive-md .table td:last-child, .card > .table-responsive-md .table th:last-child, .card > .table-responsive-sm .table td:last-child, .card > .table-responsive-sm .table th:last-child, .card > .table-responsive-xl .table td:last-child, .card > .table-responsive-xl .table th:last-child, .card > .table-responsive .table td:last-child, .card > .table-responsive .table th:last-child, .card > .table td:last-child, .card > .table th:last-child {
+ border-right: 0;
+ padding-right: 1.25rem
+}
+
+.card > .dataTables_wrapper .table.dataTable tr:first-child td, .card > .dataTables_wrapper .table.dataTable tr:first-child th, .card > .table-responsive-lg .table tr:first-child td, .card > .table-responsive-lg .table tr:first-child th, .card > .table-responsive-md .table tr:first-child td, .card > .table-responsive-md .table tr:first-child th, .card > .table-responsive-sm .table tr:first-child td, .card > .table-responsive-sm .table tr:first-child th, .card > .table-responsive-xl .table tr:first-child td, .card > .table-responsive-xl .table tr:first-child th, .card > .table-responsive .table tr:first-child td, .card > .table-responsive .table tr:first-child th, .card > .table tr:first-child td, .card > .table tr:first-child th {
+ border-top: 0
+}
+
+.card > .dataTables_wrapper .table.dataTable tr:last-child td, .card > .table-responsive-lg .table tr:last-child td, .card > .table-responsive-md .table tr:last-child td, .card > .table-responsive-sm .table tr:last-child td, .card > .table-responsive-xl .table tr:last-child td, .card > .table-responsive .table tr:last-child td, .card > .table tr:last-child td {
+ border-bottom: 0
+}
+
+.card .card-header + .table {
+ border-top: 0
+}
+
+.table-action a {
+ color: #6c757d
+}
+
+.table-action a:hover {
+ color: #212529
+}
+
+.table-action .feather {
+ width: 18px;
+ height: 18px
+}
+
+.table > tbody > tr > td {
+ vertical-align: middle
+}
+
+.card > .dataTables_wrapper .table.dataTable {
+ margin-top: 0 !important;
+ margin-bottom: 0 !important
+}
+
+.card > .dataTables_wrapper .dataTables_info {
+ padding: 1rem 1.25rem
+}
+
+.card > .dataTables_wrapper .dataTables_paginate {
+ padding: .6rem 1.25rem
+}
+
+.dt-bootstrap4 {
+ width: calc(100% - 2px)
+}
+
+.text-sm {
+ font-size: .75rem
+}
+
+.text-lg {
+ font-size: .925rem
+}
+
+b, strong {
+ font-weight: 600
+}
+
+pre.snippet {
+ white-space: pre-wrap;
+ word-wrap: break-word;
+ text-align: justify
+}
+
+a {
+ cursor: pointer
+}
+
+.wrapper {
+ align-items: stretch;
+ display: flex;
+ width: 100%;
+ background: #222e3c
+}
+
+.bg-primary-light {
+ background: #d3e2f7
+}
+
+.bg-secondary-light {
+ background: #caced1
+}
+
+.bg-success-light {
+ background: #9be7ac
+}
+
+.bg-info-light {
+ background: #90e4f1
+}
+
+.bg-warning-light {
+ background: #ffeeba
+}
+
+.bg-danger-light {
+ background: #f6cdd1
+}
+
+.bg-light-light {
+ background: #fff
+}
+
+.bg-dark-light {
+ background: #717e8c
+}
+
+.bg-primary-dark {
+ background: #0f2c56
+}
+
+.bg-secondary-dark {
+ background: #191b1d
+}
+
+.bg-success-dark {
+ background: #06170a
+}
+
+.bg-info-dark {
+ background: #031619
+}
+
+.bg-warning-dark {
+ background: #543f00
+}
+
+.bg-danger-dark {
+ background: #510e14
+}
+
+.bg-light-dark {
+ background: #90a0b0
+}
+
+.bg-dark-dark {
+ background: #000
+}
+
+.rounded-lg {
+ border-radius: .3rem !important
+}
+
+.rounded-top-lg {
+ border-top-left-radius: .3rem !important
+}
+
+.rounded-right-lg, .rounded-top-lg {
+ border-top-right-radius: .3rem !important
+}
+
+.rounded-bottom-lg, .rounded-right-lg {
+ border-bottom-right-radius: .3rem !important
+}
+
+.rounded-bottom-lg, .rounded-left-lg {
+ border-bottom-left-radius: .3rem !important
+}
+
+.rounded-left-lg {
+ border-top-left-radius: .3rem !important
+}
+
+.rounded-sm {
+ border-radius: .1rem !important
+}
+
+.rounded-top-sm {
+ border-top-left-radius: .1rem !important
+}
+
+.rounded-right-sm, .rounded-top-sm {
+ border-top-right-radius: .1rem !important
+}
+
+.rounded-bottom-sm, .rounded-right-sm {
+ border-bottom-right-radius: .1rem !important
+}
+
+.rounded-bottom-sm, .rounded-left-sm {
+ border-bottom-left-radius: .1rem !important
+}
+
+.rounded-left-sm {
+ border-top-left-radius: .1rem !important
+}
+
+.cursor-grab {
+ cursor: move;
+ cursor: grab;
+ cursor: -webkit-grab
+}
+
+.cursor-pointer {
+ cursor: pointer
+}
+
+.overflow-scroll {
+ overflow: scroll
+}
+
+.overflow-hidden {
+ overflow: hidden
+}
+
+.overflow-auto {
+ overflow: auto
+}
+
+.overflow-visible {
+ overflow: visible
+}
+
+/*!
+ * Font Awesome Free 5.15.1 by @fontawesome - https://fontawesome.com
+ * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
+ */
+.fa, .fab, .fad, .fal, .far, .fas {
+ -moz-osx-font-smoothing: grayscale;
+ -webkit-font-smoothing: antialiased;
+ display: inline-block;
+ font-style: normal;
+ font-variant: normal;
+ text-rendering: auto;
+ line-height: 1
+}
+
+.fa-lg {
+ font-size: 1.33333em;
+ line-height: .75em;
+ vertical-align: -.0667em
+}
+
+.fa-xs {
+ font-size: .75em
+}
+
+.fa-sm {
+ font-size: .875em
+}
+
+.fa-1x {
+ font-size: 1em
+}
+
+.fa-2x {
+ font-size: 2em
+}
+
+.fa-3x {
+ font-size: 3em
+}
+
+.fa-4x {
+ font-size: 4em
+}
+
+.fa-5x {
+ font-size: 5em
+}
+
+.fa-6x {
+ font-size: 6em
+}
+
+.fa-7x {
+ font-size: 7em
+}
+
+.fa-8x {
+ font-size: 8em
+}
+
+.fa-9x {
+ font-size: 9em
+}
+
+.fa-10x {
+ font-size: 10em
+}
+
+.fa-fw {
+ text-align: center;
+ width: 1.25em
+}
+
+.fa-ul {
+ list-style-type: none;
+ margin-left: 2.5em;
+ padding-left: 0
+}
+
+.fa-ul > li {
+ position: relative
+}
+
+.fa-li {
+ left: -2em;
+ position: absolute;
+ text-align: center;
+ width: 2em;
+ line-height: inherit
+}
+
+.fa-border {
+ border: .08em solid #eee;
+ border-radius: .1em;
+ padding: .2em .25em .15em
+}
+
+.fa-pull-left {
+ float: left
+}
+
+.fa-pull-right {
+ float: right
+}
+
+.fa.fa-pull-left, .fab.fa-pull-left, .fal.fa-pull-left, .far.fa-pull-left, .fas.fa-pull-left {
+ margin-right: .3em
+}
+
+.fa.fa-pull-right, .fab.fa-pull-right, .fal.fa-pull-right, .far.fa-pull-right, .fas.fa-pull-right {
+ margin-left: .3em
+}
+
+.fa-spin {
+ animation: fa-spin 2s linear infinite
+}
+
+.fa-pulse {
+ animation: fa-spin 1s steps(8) infinite
+}
+
+@keyframes fa-spin {
+ 0% {
+ transform: rotate(0deg)
+ }
+ to {
+ transform: rotate(1turn)
+ }
+}
+
+.fa-rotate-90 {
+ -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";
+ transform: rotate(90deg)
+}
+
+.fa-rotate-180 {
+ -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";
+ transform: rotate(180deg)
+}
+
+.fa-rotate-270 {
+ -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";
+ transform: rotate(270deg)
+}
+
+.fa-flip-horizontal {
+ -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";
+ transform: scaleX(-1)
+}
+
+.fa-flip-vertical {
+ transform: scaleY(-1)
+}
+
+.fa-flip-both, .fa-flip-horizontal.fa-flip-vertical, .fa-flip-vertical {
+ -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"
+}
+
+.fa-flip-both, .fa-flip-horizontal.fa-flip-vertical {
+ transform: scale(-1)
+}
+
+:root .fa-flip-both, :root .fa-flip-horizontal, :root .fa-flip-vertical, :root .fa-rotate-90, :root .fa-rotate-180, :root .fa-rotate-270 {
+ filter: none
+}
+
+.fa-stack {
+ display: inline-block;
+ height: 2em;
+ line-height: 2em;
+ position: relative;
+ vertical-align: middle;
+ width: 2.5em
+}
+
+.fa-stack-1x, .fa-stack-2x {
+ left: 0;
+ position: absolute;
+ text-align: center;
+ width: 100%
+}
+
+.fa-stack-1x {
+ line-height: inherit
+}
+
+.fa-stack-2x {
+ font-size: 2em
+}
+
+.fa-inverse {
+ color: #fff
+}
+
+.fa-500px:before {
+ content: "\f26e"
+}
+
+.fa-accessible-icon:before {
+ content: "\f368"
+}
+
+.fa-accusoft:before {
+ content: "\f369"
+}
+
+.fa-acquisitions-incorporated:before {
+ content: "\f6af"
+}
+
+.fa-ad:before {
+ content: "\f641"
+}
+
+.fa-address-book:before {
+ content: "\f2b9"
+}
+
+.fa-address-card:before {
+ content: "\f2bb"
+}
+
+.fa-adjust:before {
+ content: "\f042"
+}
+
+.fa-adn:before {
+ content: "\f170"
+}
+
+.fa-adversal:before {
+ content: "\f36a"
+}
+
+.fa-affiliatetheme:before {
+ content: "\f36b"
+}
+
+.fa-air-freshener:before {
+ content: "\f5d0"
+}
+
+.fa-airbnb:before {
+ content: "\f834"
+}
+
+.fa-algolia:before {
+ content: "\f36c"
+}
+
+.fa-align-center:before {
+ content: "\f037"
+}
+
+.fa-align-justify:before {
+ content: "\f039"
+}
+
+.fa-align-left:before {
+ content: "\f036"
+}
+
+.fa-align-right:before {
+ content: "\f038"
+}
+
+.fa-alipay:before {
+ content: "\f642"
+}
+
+.fa-allergies:before {
+ content: "\f461"
+}
+
+.fa-amazon:before {
+ content: "\f270"
+}
+
+.fa-amazon-pay:before {
+ content: "\f42c"
+}
+
+.fa-ambulance:before {
+ content: "\f0f9"
+}
+
+.fa-american-sign-language-interpreting:before {
+ content: "\f2a3"
+}
+
+.fa-amilia:before {
+ content: "\f36d"
+}
+
+.fa-anchor:before {
+ content: "\f13d"
+}
+
+.fa-android:before {
+ content: "\f17b"
+}
+
+.fa-angellist:before {
+ content: "\f209"
+}
+
+.fa-angle-double-down:before {
+ content: "\f103"
+}
+
+.fa-angle-double-left:before {
+ content: "\f100"
+}
+
+.fa-angle-double-right:before {
+ content: "\f101"
+}
+
+.fa-angle-double-up:before {
+ content: "\f102"
+}
+
+.fa-angle-down:before {
+ content: "\f107"
+}
+
+.fa-angle-left:before {
+ content: "\f104"
+}
+
+.fa-angle-right:before {
+ content: "\f105"
+}
+
+.fa-angle-up:before {
+ content: "\f106"
+}
+
+.fa-angry:before {
+ content: "\f556"
+}
+
+.fa-angrycreative:before {
+ content: "\f36e"
+}
+
+.fa-angular:before {
+ content: "\f420"
+}
+
+.fa-ankh:before {
+ content: "\f644"
+}
+
+.fa-app-store:before {
+ content: "\f36f"
+}
+
+.fa-app-store-ios:before {
+ content: "\f370"
+}
+
+.fa-apper:before {
+ content: "\f371"
+}
+
+.fa-apple:before {
+ content: "\f179"
+}
+
+.fa-apple-alt:before {
+ content: "\f5d1"
+}
+
+.fa-apple-pay:before {
+ content: "\f415"
+}
+
+.fa-archive:before {
+ content: "\f187"
+}
+
+.fa-archway:before {
+ content: "\f557"
+}
+
+.fa-arrow-alt-circle-down:before {
+ content: "\f358"
+}
+
+.fa-arrow-alt-circle-left:before {
+ content: "\f359"
+}
+
+.fa-arrow-alt-circle-right:before {
+ content: "\f35a"
+}
+
+.fa-arrow-alt-circle-up:before {
+ content: "\f35b"
+}
+
+.fa-arrow-circle-down:before {
+ content: "\f0ab"
+}
+
+.fa-arrow-circle-left:before {
+ content: "\f0a8"
+}
+
+.fa-arrow-circle-right:before {
+ content: "\f0a9"
+}
+
+.fa-arrow-circle-up:before {
+ content: "\f0aa"
+}
+
+.fa-arrow-down:before {
+ content: "\f063"
+}
+
+.fa-arrow-left:before {
+ content: "\f060"
+}
+
+.fa-arrow-right:before {
+ content: "\f061"
+}
+
+.fa-arrow-up:before {
+ content: "\f062"
+}
+
+.fa-arrows-alt:before {
+ content: "\f0b2"
+}
+
+.fa-arrows-alt-h:before {
+ content: "\f337"
+}
+
+.fa-arrows-alt-v:before {
+ content: "\f338"
+}
+
+.fa-artstation:before {
+ content: "\f77a"
+}
+
+.fa-assistive-listening-systems:before {
+ content: "\f2a2"
+}
+
+.fa-asterisk:before {
+ content: "\f069"
+}
+
+.fa-asymmetrik:before {
+ content: "\f372"
+}
+
+.fa-at:before {
+ content: "\f1fa"
+}
+
+.fa-atlas:before {
+ content: "\f558"
+}
+
+.fa-atlassian:before {
+ content: "\f77b"
+}
+
+.fa-atom:before {
+ content: "\f5d2"
+}
+
+.fa-audible:before {
+ content: "\f373"
+}
+
+.fa-audio-description:before {
+ content: "\f29e"
+}
+
+.fa-autoprefixer:before {
+ content: "\f41c"
+}
+
+.fa-avianex:before {
+ content: "\f374"
+}
+
+.fa-aviato:before {
+ content: "\f421"
+}
+
+.fa-award:before {
+ content: "\f559"
+}
+
+.fa-aws:before {
+ content: "\f375"
+}
+
+.fa-baby:before {
+ content: "\f77c"
+}
+
+.fa-baby-carriage:before {
+ content: "\f77d"
+}
+
+.fa-backspace:before {
+ content: "\f55a"
+}
+
+.fa-backward:before {
+ content: "\f04a"
+}
+
+.fa-bacon:before {
+ content: "\f7e5"
+}
+
+.fa-bacteria:before {
+ content: "\e059"
+}
+
+.fa-bacterium:before {
+ content: "\e05a"
+}
+
+.fa-bahai:before {
+ content: "\f666"
+}
+
+.fa-balance-scale:before {
+ content: "\f24e"
+}
+
+.fa-balance-scale-left:before {
+ content: "\f515"
+}
+
+.fa-balance-scale-right:before {
+ content: "\f516"
+}
+
+.fa-ban:before {
+ content: "\f05e"
+}
+
+.fa-band-aid:before {
+ content: "\f462"
+}
+
+.fa-bandcamp:before {
+ content: "\f2d5"
+}
+
+.fa-barcode:before {
+ content: "\f02a"
+}
+
+.fa-bars:before {
+ content: "\f0c9"
+}
+
+.fa-baseball-ball:before {
+ content: "\f433"
+}
+
+.fa-basketball-ball:before {
+ content: "\f434"
+}
+
+.fa-bath:before {
+ content: "\f2cd"
+}
+
+.fa-battery-empty:before {
+ content: "\f244"
+}
+
+.fa-battery-full:before {
+ content: "\f240"
+}
+
+.fa-battery-half:before {
+ content: "\f242"
+}
+
+.fa-battery-quarter:before {
+ content: "\f243"
+}
+
+.fa-battery-three-quarters:before {
+ content: "\f241"
+}
+
+.fa-battle-net:before {
+ content: "\f835"
+}
+
+.fa-bed:before {
+ content: "\f236"
+}
+
+.fa-beer:before {
+ content: "\f0fc"
+}
+
+.fa-behance:before {
+ content: "\f1b4"
+}
+
+.fa-behance-square:before {
+ content: "\f1b5"
+}
+
+.fa-bell:before {
+ content: "\f0f3"
+}
+
+.fa-bell-slash:before {
+ content: "\f1f6"
+}
+
+.fa-bezier-curve:before {
+ content: "\f55b"
+}
+
+.fa-bible:before {
+ content: "\f647"
+}
+
+.fa-bicycle:before {
+ content: "\f206"
+}
+
+.fa-biking:before {
+ content: "\f84a"
+}
+
+.fa-bimobject:before {
+ content: "\f378"
+}
+
+.fa-binoculars:before {
+ content: "\f1e5"
+}
+
+.fa-biohazard:before {
+ content: "\f780"
+}
+
+.fa-birthday-cake:before {
+ content: "\f1fd"
+}
+
+.fa-bitbucket:before {
+ content: "\f171"
+}
+
+.fa-bitcoin:before {
+ content: "\f379"
+}
+
+.fa-bity:before {
+ content: "\f37a"
+}
+
+.fa-black-tie:before {
+ content: "\f27e"
+}
+
+.fa-blackberry:before {
+ content: "\f37b"
+}
+
+.fa-blender:before {
+ content: "\f517"
+}
+
+.fa-blender-phone:before {
+ content: "\f6b6"
+}
+
+.fa-blind:before {
+ content: "\f29d"
+}
+
+.fa-blog:before {
+ content: "\f781"
+}
+
+.fa-blogger:before {
+ content: "\f37c"
+}
+
+.fa-blogger-b:before {
+ content: "\f37d"
+}
+
+.fa-bluetooth:before {
+ content: "\f293"
+}
+
+.fa-bluetooth-b:before {
+ content: "\f294"
+}
+
+.fa-bold:before {
+ content: "\f032"
+}
+
+.fa-bolt:before {
+ content: "\f0e7"
+}
+
+.fa-bomb:before {
+ content: "\f1e2"
+}
+
+.fa-bone:before {
+ content: "\f5d7"
+}
+
+.fa-bong:before {
+ content: "\f55c"
+}
+
+.fa-book:before {
+ content: "\f02d"
+}
+
+.fa-book-dead:before {
+ content: "\f6b7"
+}
+
+.fa-book-medical:before {
+ content: "\f7e6"
+}
+
+.fa-book-open:before {
+ content: "\f518"
+}
+
+.fa-book-reader:before {
+ content: "\f5da"
+}
+
+.fa-bookmark:before {
+ content: "\f02e"
+}
+
+.fa-bootstrap:before {
+ content: "\f836"
+}
+
+.fa-border-all:before {
+ content: "\f84c"
+}
+
+.fa-border-none:before {
+ content: "\f850"
+}
+
+.fa-border-style:before {
+ content: "\f853"
+}
+
+.fa-bowling-ball:before {
+ content: "\f436"
+}
+
+.fa-box:before {
+ content: "\f466"
+}
+
+.fa-box-open:before {
+ content: "\f49e"
+}
+
+.fa-box-tissue:before {
+ content: "\e05b"
+}
+
+.fa-boxes:before {
+ content: "\f468"
+}
+
+.fa-braille:before {
+ content: "\f2a1"
+}
+
+.fa-brain:before {
+ content: "\f5dc"
+}
+
+.fa-bread-slice:before {
+ content: "\f7ec"
+}
+
+.fa-briefcase:before {
+ content: "\f0b1"
+}
+
+.fa-briefcase-medical:before {
+ content: "\f469"
+}
+
+.fa-broadcast-tower:before {
+ content: "\f519"
+}
+
+.fa-broom:before {
+ content: "\f51a"
+}
+
+.fa-brush:before {
+ content: "\f55d"
+}
+
+.fa-btc:before {
+ content: "\f15a"
+}
+
+.fa-buffer:before {
+ content: "\f837"
+}
+
+.fa-bug:before {
+ content: "\f188"
+}
+
+.fa-building:before {
+ content: "\f1ad"
+}
+
+.fa-bullhorn:before {
+ content: "\f0a1"
+}
+
+.fa-bullseye:before {
+ content: "\f140"
+}
+
+.fa-burn:before {
+ content: "\f46a"
+}
+
+.fa-buromobelexperte:before {
+ content: "\f37f"
+}
+
+.fa-bus:before {
+ content: "\f207"
+}
+
+.fa-bus-alt:before {
+ content: "\f55e"
+}
+
+.fa-business-time:before {
+ content: "\f64a"
+}
+
+.fa-buy-n-large:before {
+ content: "\f8a6"
+}
+
+.fa-buysellads:before {
+ content: "\f20d"
+}
+
+.fa-calculator:before {
+ content: "\f1ec"
+}
+
+.fa-calendar:before {
+ content: "\f133"
+}
+
+.fa-calendar-alt:before {
+ content: "\f073"
+}
+
+.fa-calendar-check:before {
+ content: "\f274"
+}
+
+.fa-calendar-day:before {
+ content: "\f783"
+}
+
+.fa-calendar-minus:before {
+ content: "\f272"
+}
+
+.fa-calendar-plus:before {
+ content: "\f271"
+}
+
+.fa-calendar-times:before {
+ content: "\f273"
+}
+
+.fa-calendar-week:before {
+ content: "\f784"
+}
+
+.fa-camera:before {
+ content: "\f030"
+}
+
+.fa-camera-retro:before {
+ content: "\f083"
+}
+
+.fa-campground:before {
+ content: "\f6bb"
+}
+
+.fa-canadian-maple-leaf:before {
+ content: "\f785"
+}
+
+.fa-candy-cane:before {
+ content: "\f786"
+}
+
+.fa-cannabis:before {
+ content: "\f55f"
+}
+
+.fa-capsules:before {
+ content: "\f46b"
+}
+
+.fa-car:before {
+ content: "\f1b9"
+}
+
+.fa-car-alt:before {
+ content: "\f5de"
+}
+
+.fa-car-battery:before {
+ content: "\f5df"
+}
+
+.fa-car-crash:before {
+ content: "\f5e1"
+}
+
+.fa-car-side:before {
+ content: "\f5e4"
+}
+
+.fa-caravan:before {
+ content: "\f8ff"
+}
+
+.fa-caret-down:before {
+ content: "\f0d7"
+}
+
+.fa-caret-left:before {
+ content: "\f0d9"
+}
+
+.fa-caret-right:before {
+ content: "\f0da"
+}
+
+.fa-caret-square-down:before {
+ content: "\f150"
+}
+
+.fa-caret-square-left:before {
+ content: "\f191"
+}
+
+.fa-caret-square-right:before {
+ content: "\f152"
+}
+
+.fa-caret-square-up:before {
+ content: "\f151"
+}
+
+.fa-caret-up:before {
+ content: "\f0d8"
+}
+
+.fa-carrot:before {
+ content: "\f787"
+}
+
+.fa-cart-arrow-down:before {
+ content: "\f218"
+}
+
+.fa-cart-plus:before {
+ content: "\f217"
+}
+
+.fa-cash-register:before {
+ content: "\f788"
+}
+
+.fa-cat:before {
+ content: "\f6be"
+}
+
+.fa-cc-amazon-pay:before {
+ content: "\f42d"
+}
+
+.fa-cc-amex:before {
+ content: "\f1f3"
+}
+
+.fa-cc-apple-pay:before {
+ content: "\f416"
+}
+
+.fa-cc-diners-club:before {
+ content: "\f24c"
+}
+
+.fa-cc-discover:before {
+ content: "\f1f2"
+}
+
+.fa-cc-jcb:before {
+ content: "\f24b"
+}
+
+.fa-cc-mastercard:before {
+ content: "\f1f1"
+}
+
+.fa-cc-paypal:before {
+ content: "\f1f4"
+}
+
+.fa-cc-stripe:before {
+ content: "\f1f5"
+}
+
+.fa-cc-visa:before {
+ content: "\f1f0"
+}
+
+.fa-centercode:before {
+ content: "\f380"
+}
+
+.fa-centos:before {
+ content: "\f789"
+}
+
+.fa-certificate:before {
+ content: "\f0a3"
+}
+
+.fa-chair:before {
+ content: "\f6c0"
+}
+
+.fa-chalkboard:before {
+ content: "\f51b"
+}
+
+.fa-chalkboard-teacher:before {
+ content: "\f51c"
+}
+
+.fa-charging-station:before {
+ content: "\f5e7"
+}
+
+.fa-chart-area:before {
+ content: "\f1fe"
+}
+
+.fa-chart-bar:before {
+ content: "\f080"
+}
+
+.fa-chart-line:before {
+ content: "\f201"
+}
+
+.fa-chart-pie:before {
+ content: "\f200"
+}
+
+.fa-check:before {
+ content: "\f00c"
+}
+
+.fa-check-circle:before {
+ content: "\f058"
+}
+
+.fa-check-double:before {
+ content: "\f560"
+}
+
+.fa-check-square:before {
+ content: "\f14a"
+}
+
+.fa-cheese:before {
+ content: "\f7ef"
+}
+
+.fa-chess:before {
+ content: "\f439"
+}
+
+.fa-chess-bishop:before {
+ content: "\f43a"
+}
+
+.fa-chess-board:before {
+ content: "\f43c"
+}
+
+.fa-chess-king:before {
+ content: "\f43f"
+}
+
+.fa-chess-knight:before {
+ content: "\f441"
+}
+
+.fa-chess-pawn:before {
+ content: "\f443"
+}
+
+.fa-chess-queen:before {
+ content: "\f445"
+}
+
+.fa-chess-rook:before {
+ content: "\f447"
+}
+
+.fa-chevron-circle-down:before {
+ content: "\f13a"
+}
+
+.fa-chevron-circle-left:before {
+ content: "\f137"
+}
+
+.fa-chevron-circle-right:before {
+ content: "\f138"
+}
+
+.fa-chevron-circle-up:before {
+ content: "\f139"
+}
+
+.fa-chevron-down:before {
+ content: "\f078"
+}
+
+.fa-chevron-left:before {
+ content: "\f053"
+}
+
+.fa-chevron-right:before {
+ content: "\f054"
+}
+
+.fa-chevron-up:before {
+ content: "\f077"
+}
+
+.fa-child:before {
+ content: "\f1ae"
+}
+
+.fa-chrome:before {
+ content: "\f268"
+}
+
+.fa-chromecast:before {
+ content: "\f838"
+}
+
+.fa-church:before {
+ content: "\f51d"
+}
+
+.fa-circle:before {
+ content: "\f111"
+}
+
+.fa-circle-notch:before {
+ content: "\f1ce"
+}
+
+.fa-city:before {
+ content: "\f64f"
+}
+
+.fa-clinic-medical:before {
+ content: "\f7f2"
+}
+
+.fa-clipboard:before {
+ content: "\f328"
+}
+
+.fa-clipboard-check:before {
+ content: "\f46c"
+}
+
+.fa-clipboard-list:before {
+ content: "\f46d"
+}
+
+.fa-clock:before {
+ content: "\f017"
+}
+
+.fa-clone:before {
+ content: "\f24d"
+}
+
+.fa-closed-captioning:before {
+ content: "\f20a"
+}
+
+.fa-cloud:before {
+ content: "\f0c2"
+}
+
+.fa-cloud-download-alt:before {
+ content: "\f381"
+}
+
+.fa-cloud-meatball:before {
+ content: "\f73b"
+}
+
+.fa-cloud-moon:before {
+ content: "\f6c3"
+}
+
+.fa-cloud-moon-rain:before {
+ content: "\f73c"
+}
+
+.fa-cloud-rain:before {
+ content: "\f73d"
+}
+
+.fa-cloud-showers-heavy:before {
+ content: "\f740"
+}
+
+.fa-cloud-sun:before {
+ content: "\f6c4"
+}
+
+.fa-cloud-sun-rain:before {
+ content: "\f743"
+}
+
+.fa-cloud-upload-alt:before {
+ content: "\f382"
+}
+
+.fa-cloudflare:before {
+ content: "\e07d"
+}
+
+.fa-cloudscale:before {
+ content: "\f383"
+}
+
+.fa-cloudsmith:before {
+ content: "\f384"
+}
+
+.fa-cloudversify:before {
+ content: "\f385"
+}
+
+.fa-cocktail:before {
+ content: "\f561"
+}
+
+.fa-code:before {
+ content: "\f121"
+}
+
+.fa-code-branch:before {
+ content: "\f126"
+}
+
+.fa-codepen:before {
+ content: "\f1cb"
+}
+
+.fa-codiepie:before {
+ content: "\f284"
+}
+
+.fa-coffee:before {
+ content: "\f0f4"
+}
+
+.fa-cog:before {
+ content: "\f013"
+}
+
+.fa-cogs:before {
+ content: "\f085"
+}
+
+.fa-coins:before {
+ content: "\f51e"
+}
+
+.fa-columns:before {
+ content: "\f0db"
+}
+
+.fa-comment:before {
+ content: "\f075"
+}
+
+.fa-comment-alt:before {
+ content: "\f27a"
+}
+
+.fa-comment-dollar:before {
+ content: "\f651"
+}
+
+.fa-comment-dots:before {
+ content: "\f4ad"
+}
+
+.fa-comment-medical:before {
+ content: "\f7f5"
+}
+
+.fa-comment-slash:before {
+ content: "\f4b3"
+}
+
+.fa-comments:before {
+ content: "\f086"
+}
+
+.fa-comments-dollar:before {
+ content: "\f653"
+}
+
+.fa-compact-disc:before {
+ content: "\f51f"
+}
+
+.fa-compass:before {
+ content: "\f14e"
+}
+
+.fa-compress:before {
+ content: "\f066"
+}
+
+.fa-compress-alt:before {
+ content: "\f422"
+}
+
+.fa-compress-arrows-alt:before {
+ content: "\f78c"
+}
+
+.fa-concierge-bell:before {
+ content: "\f562"
+}
+
+.fa-confluence:before {
+ content: "\f78d"
+}
+
+.fa-connectdevelop:before {
+ content: "\f20e"
+}
+
+.fa-contao:before {
+ content: "\f26d"
+}
+
+.fa-cookie:before {
+ content: "\f563"
+}
+
+.fa-cookie-bite:before {
+ content: "\f564"
+}
+
+.fa-copy:before {
+ content: "\f0c5"
+}
+
+.fa-copyright:before {
+ content: "\f1f9"
+}
+
+.fa-cotton-bureau:before {
+ content: "\f89e"
+}
+
+.fa-couch:before {
+ content: "\f4b8"
+}
+
+.fa-cpanel:before {
+ content: "\f388"
+}
+
+.fa-creative-commons:before {
+ content: "\f25e"
+}
+
+.fa-creative-commons-by:before {
+ content: "\f4e7"
+}
+
+.fa-creative-commons-nc:before {
+ content: "\f4e8"
+}
+
+.fa-creative-commons-nc-eu:before {
+ content: "\f4e9"
+}
+
+.fa-creative-commons-nc-jp:before {
+ content: "\f4ea"
+}
+
+.fa-creative-commons-nd:before {
+ content: "\f4eb"
+}
+
+.fa-creative-commons-pd:before {
+ content: "\f4ec"
+}
+
+.fa-creative-commons-pd-alt:before {
+ content: "\f4ed"
+}
+
+.fa-creative-commons-remix:before {
+ content: "\f4ee"
+}
+
+.fa-creative-commons-sa:before {
+ content: "\f4ef"
+}
+
+.fa-creative-commons-sampling:before {
+ content: "\f4f0"
+}
+
+.fa-creative-commons-sampling-plus:before {
+ content: "\f4f1"
+}
+
+.fa-creative-commons-share:before {
+ content: "\f4f2"
+}
+
+.fa-creative-commons-zero:before {
+ content: "\f4f3"
+}
+
+.fa-credit-card:before {
+ content: "\f09d"
+}
+
+.fa-critical-role:before {
+ content: "\f6c9"
+}
+
+.fa-crop:before {
+ content: "\f125"
+}
+
+.fa-crop-alt:before {
+ content: "\f565"
+}
+
+.fa-cross:before {
+ content: "\f654"
+}
+
+.fa-crosshairs:before {
+ content: "\f05b"
+}
+
+.fa-crow:before {
+ content: "\f520"
+}
+
+.fa-crown:before {
+ content: "\f521"
+}
+
+.fa-crutch:before {
+ content: "\f7f7"
+}
+
+.fa-css3:before {
+ content: "\f13c"
+}
+
+.fa-css3-alt:before {
+ content: "\f38b"
+}
+
+.fa-cube:before {
+ content: "\f1b2"
+}
+
+.fa-cubes:before {
+ content: "\f1b3"
+}
+
+.fa-cut:before {
+ content: "\f0c4"
+}
+
+.fa-cuttlefish:before {
+ content: "\f38c"
+}
+
+.fa-d-and-d:before {
+ content: "\f38d"
+}
+
+.fa-d-and-d-beyond:before {
+ content: "\f6ca"
+}
+
+.fa-dailymotion:before {
+ content: "\e052"
+}
+
+.fa-dashcube:before {
+ content: "\f210"
+}
+
+.fa-database:before {
+ content: "\f1c0"
+}
+
+.fa-deaf:before {
+ content: "\f2a4"
+}
+
+.fa-deezer:before {
+ content: "\e077"
+}
+
+.fa-delicious:before {
+ content: "\f1a5"
+}
+
+.fa-democrat:before {
+ content: "\f747"
+}
+
+.fa-deploydog:before {
+ content: "\f38e"
+}
+
+.fa-deskpro:before {
+ content: "\f38f"
+}
+
+.fa-desktop:before {
+ content: "\f108"
+}
+
+.fa-dev:before {
+ content: "\f6cc"
+}
+
+.fa-deviantart:before {
+ content: "\f1bd"
+}
+
+.fa-dharmachakra:before {
+ content: "\f655"
+}
+
+.fa-dhl:before {
+ content: "\f790"
+}
+
+.fa-diagnoses:before {
+ content: "\f470"
+}
+
+.fa-diaspora:before {
+ content: "\f791"
+}
+
+.fa-dice:before {
+ content: "\f522"
+}
+
+.fa-dice-d20:before {
+ content: "\f6cf"
+}
+
+.fa-dice-d6:before {
+ content: "\f6d1"
+}
+
+.fa-dice-five:before {
+ content: "\f523"
+}
+
+.fa-dice-four:before {
+ content: "\f524"
+}
+
+.fa-dice-one:before {
+ content: "\f525"
+}
+
+.fa-dice-six:before {
+ content: "\f526"
+}
+
+.fa-dice-three:before {
+ content: "\f527"
+}
+
+.fa-dice-two:before {
+ content: "\f528"
+}
+
+.fa-digg:before {
+ content: "\f1a6"
+}
+
+.fa-digital-ocean:before {
+ content: "\f391"
+}
+
+.fa-digital-tachograph:before {
+ content: "\f566"
+}
+
+.fa-directions:before {
+ content: "\f5eb"
+}
+
+.fa-discord:before {
+ content: "\f392"
+}
+
+.fa-discourse:before {
+ content: "\f393"
+}
+
+.fa-disease:before {
+ content: "\f7fa"
+}
+
+.fa-divide:before {
+ content: "\f529"
+}
+
+.fa-dizzy:before {
+ content: "\f567"
+}
+
+.fa-dna:before {
+ content: "\f471"
+}
+
+.fa-dochub:before {
+ content: "\f394"
+}
+
+.fa-docker:before {
+ content: "\f395"
+}
+
+.fa-dog:before {
+ content: "\f6d3"
+}
+
+.fa-dollar-sign:before {
+ content: "\f155"
+}
+
+.fa-dolly:before {
+ content: "\f472"
+}
+
+.fa-dolly-flatbed:before {
+ content: "\f474"
+}
+
+.fa-donate:before {
+ content: "\f4b9"
+}
+
+.fa-door-closed:before {
+ content: "\f52a"
+}
+
+.fa-door-open:before {
+ content: "\f52b"
+}
+
+.fa-dot-circle:before {
+ content: "\f192"
+}
+
+.fa-dove:before {
+ content: "\f4ba"
+}
+
+.fa-download:before {
+ content: "\f019"
+}
+
+.fa-draft2digital:before {
+ content: "\f396"
+}
+
+.fa-drafting-compass:before {
+ content: "\f568"
+}
+
+.fa-dragon:before {
+ content: "\f6d5"
+}
+
+.fa-draw-polygon:before {
+ content: "\f5ee"
+}
+
+.fa-dribbble:before {
+ content: "\f17d"
+}
+
+.fa-dribbble-square:before {
+ content: "\f397"
+}
+
+.fa-dropbox:before {
+ content: "\f16b"
+}
+
+.fa-drum:before {
+ content: "\f569"
+}
+
+.fa-drum-steelpan:before {
+ content: "\f56a"
+}
+
+.fa-drumstick-bite:before {
+ content: "\f6d7"
+}
+
+.fa-drupal:before {
+ content: "\f1a9"
+}
+
+.fa-dumbbell:before {
+ content: "\f44b"
+}
+
+.fa-dumpster:before {
+ content: "\f793"
+}
+
+.fa-dumpster-fire:before {
+ content: "\f794"
+}
+
+.fa-dungeon:before {
+ content: "\f6d9"
+}
+
+.fa-dyalog:before {
+ content: "\f399"
+}
+
+.fa-earlybirds:before {
+ content: "\f39a"
+}
+
+.fa-ebay:before {
+ content: "\f4f4"
+}
+
+.fa-edge:before {
+ content: "\f282"
+}
+
+.fa-edge-legacy:before {
+ content: "\e078"
+}
+
+.fa-edit:before {
+ content: "\f044"
+}
+
+.fa-egg:before {
+ content: "\f7fb"
+}
+
+.fa-eject:before {
+ content: "\f052"
+}
+
+.fa-elementor:before {
+ content: "\f430"
+}
+
+.fa-ellipsis-h:before {
+ content: "\f141"
+}
+
+.fa-ellipsis-v:before {
+ content: "\f142"
+}
+
+.fa-ello:before {
+ content: "\f5f1"
+}
+
+.fa-ember:before {
+ content: "\f423"
+}
+
+.fa-empire:before {
+ content: "\f1d1"
+}
+
+.fa-envelope:before {
+ content: "\f0e0"
+}
+
+.fa-envelope-open:before {
+ content: "\f2b6"
+}
+
+.fa-envelope-open-text:before {
+ content: "\f658"
+}
+
+.fa-envelope-square:before {
+ content: "\f199"
+}
+
+.fa-envira:before {
+ content: "\f299"
+}
+
+.fa-equals:before {
+ content: "\f52c"
+}
+
+.fa-eraser:before {
+ content: "\f12d"
+}
+
+.fa-erlang:before {
+ content: "\f39d"
+}
+
+.fa-ethereum:before {
+ content: "\f42e"
+}
+
+.fa-ethernet:before {
+ content: "\f796"
+}
+
+.fa-etsy:before {
+ content: "\f2d7"
+}
+
+.fa-euro-sign:before {
+ content: "\f153"
+}
+
+.fa-evernote:before {
+ content: "\f839"
+}
+
+.fa-exchange-alt:before {
+ content: "\f362"
+}
+
+.fa-exclamation:before {
+ content: "\f12a"
+}
+
+.fa-exclamation-circle:before {
+ content: "\f06a"
+}
+
+.fa-exclamation-triangle:before {
+ content: "\f071"
+}
+
+.fa-expand:before {
+ content: "\f065"
+}
+
+.fa-expand-alt:before {
+ content: "\f424"
+}
+
+.fa-expand-arrows-alt:before {
+ content: "\f31e"
+}
+
+.fa-expeditedssl:before {
+ content: "\f23e"
+}
+
+.fa-external-link-alt:before {
+ content: "\f35d"
+}
+
+.fa-external-link-square-alt:before {
+ content: "\f360"
+}
+
+.fa-eye:before {
+ content: "\f06e"
+}
+
+.fa-eye-dropper:before {
+ content: "\f1fb"
+}
+
+.fa-eye-slash:before {
+ content: "\f070"
+}
+
+.fa-facebook:before {
+ content: "\f09a"
+}
+
+.fa-facebook-f:before {
+ content: "\f39e"
+}
+
+.fa-facebook-messenger:before {
+ content: "\f39f"
+}
+
+.fa-facebook-square:before {
+ content: "\f082"
+}
+
+.fa-fan:before {
+ content: "\f863"
+}
+
+.fa-fantasy-flight-games:before {
+ content: "\f6dc"
+}
+
+.fa-fast-backward:before {
+ content: "\f049"
+}
+
+.fa-fast-forward:before {
+ content: "\f050"
+}
+
+.fa-faucet:before {
+ content: "\e005"
+}
+
+.fa-fax:before {
+ content: "\f1ac"
+}
+
+.fa-feather:before {
+ content: "\f52d"
+}
+
+.fa-feather-alt:before {
+ content: "\f56b"
+}
+
+.fa-fedex:before {
+ content: "\f797"
+}
+
+.fa-fedora:before {
+ content: "\f798"
+}
+
+.fa-female:before {
+ content: "\f182"
+}
+
+.fa-fighter-jet:before {
+ content: "\f0fb"
+}
+
+.fa-figma:before {
+ content: "\f799"
+}
+
+.fa-file:before {
+ content: "\f15b"
+}
+
+.fa-file-alt:before {
+ content: "\f15c"
+}
+
+.fa-file-archive:before {
+ content: "\f1c6"
+}
+
+.fa-file-audio:before {
+ content: "\f1c7"
+}
+
+.fa-file-code:before {
+ content: "\f1c9"
+}
+
+.fa-file-contract:before {
+ content: "\f56c"
+}
+
+.fa-file-csv:before {
+ content: "\f6dd"
+}
+
+.fa-file-download:before {
+ content: "\f56d"
+}
+
+.fa-file-excel:before {
+ content: "\f1c3"
+}
+
+.fa-file-export:before {
+ content: "\f56e"
+}
+
+.fa-file-image:before {
+ content: "\f1c5"
+}
+
+.fa-file-import:before {
+ content: "\f56f"
+}
+
+.fa-file-invoice:before {
+ content: "\f570"
+}
+
+.fa-file-invoice-dollar:before {
+ content: "\f571"
+}
+
+.fa-file-medical:before {
+ content: "\f477"
+}
+
+.fa-file-medical-alt:before {
+ content: "\f478"
+}
+
+.fa-file-pdf:before {
+ content: "\f1c1"
+}
+
+.fa-file-powerpoint:before {
+ content: "\f1c4"
+}
+
+.fa-file-prescription:before {
+ content: "\f572"
+}
+
+.fa-file-signature:before {
+ content: "\f573"
+}
+
+.fa-file-upload:before {
+ content: "\f574"
+}
+
+.fa-file-video:before {
+ content: "\f1c8"
+}
+
+.fa-file-word:before {
+ content: "\f1c2"
+}
+
+.fa-fill:before {
+ content: "\f575"
+}
+
+.fa-fill-drip:before {
+ content: "\f576"
+}
+
+.fa-film:before {
+ content: "\f008"
+}
+
+.fa-filter:before {
+ content: "\f0b0"
+}
+
+.fa-fingerprint:before {
+ content: "\f577"
+}
+
+.fa-fire:before {
+ content: "\f06d"
+}
+
+.fa-fire-alt:before {
+ content: "\f7e4"
+}
+
+.fa-fire-extinguisher:before {
+ content: "\f134"
+}
+
+.fa-firefox:before {
+ content: "\f269"
+}
+
+.fa-firefox-browser:before {
+ content: "\e007"
+}
+
+.fa-first-aid:before {
+ content: "\f479"
+}
+
+.fa-first-order:before {
+ content: "\f2b0"
+}
+
+.fa-first-order-alt:before {
+ content: "\f50a"
+}
+
+.fa-firstdraft:before {
+ content: "\f3a1"
+}
+
+.fa-fish:before {
+ content: "\f578"
+}
+
+.fa-fist-raised:before {
+ content: "\f6de"
+}
+
+.fa-flag:before {
+ content: "\f024"
+}
+
+.fa-flag-checkered:before {
+ content: "\f11e"
+}
+
+.fa-flag-usa:before {
+ content: "\f74d"
+}
+
+.fa-flask:before {
+ content: "\f0c3"
+}
+
+.fa-flickr:before {
+ content: "\f16e"
+}
+
+.fa-flipboard:before {
+ content: "\f44d"
+}
+
+.fa-flushed:before {
+ content: "\f579"
+}
+
+.fa-fly:before {
+ content: "\f417"
+}
+
+.fa-folder:before {
+ content: "\f07b"
+}
+
+.fa-folder-minus:before {
+ content: "\f65d"
+}
+
+.fa-folder-open:before {
+ content: "\f07c"
+}
+
+.fa-folder-plus:before {
+ content: "\f65e"
+}
+
+.fa-font:before {
+ content: "\f031"
+}
+
+.fa-font-awesome:before {
+ content: "\f2b4"
+}
+
+.fa-font-awesome-alt:before {
+ content: "\f35c"
+}
+
+.fa-font-awesome-flag:before {
+ content: "\f425"
+}
+
+.fa-font-awesome-logo-full:before {
+ content: "\f4e6"
+}
+
+.fa-fonticons:before {
+ content: "\f280"
+}
+
+.fa-fonticons-fi:before {
+ content: "\f3a2"
+}
+
+.fa-football-ball:before {
+ content: "\f44e"
+}
+
+.fa-fort-awesome:before {
+ content: "\f286"
+}
+
+.fa-fort-awesome-alt:before {
+ content: "\f3a3"
+}
+
+.fa-forumbee:before {
+ content: "\f211"
+}
+
+.fa-forward:before {
+ content: "\f04e"
+}
+
+.fa-foursquare:before {
+ content: "\f180"
+}
+
+.fa-free-code-camp:before {
+ content: "\f2c5"
+}
+
+.fa-freebsd:before {
+ content: "\f3a4"
+}
+
+.fa-frog:before {
+ content: "\f52e"
+}
+
+.fa-frown:before {
+ content: "\f119"
+}
+
+.fa-frown-open:before {
+ content: "\f57a"
+}
+
+.fa-fulcrum:before {
+ content: "\f50b"
+}
+
+.fa-funnel-dollar:before {
+ content: "\f662"
+}
+
+.fa-futbol:before {
+ content: "\f1e3"
+}
+
+.fa-galactic-republic:before {
+ content: "\f50c"
+}
+
+.fa-galactic-senate:before {
+ content: "\f50d"
+}
+
+.fa-gamepad:before {
+ content: "\f11b"
+}
+
+.fa-gas-pump:before {
+ content: "\f52f"
+}
+
+.fa-gavel:before {
+ content: "\f0e3"
+}
+
+.fa-gem:before {
+ content: "\f3a5"
+}
+
+.fa-genderless:before {
+ content: "\f22d"
+}
+
+.fa-get-pocket:before {
+ content: "\f265"
+}
+
+.fa-gg:before {
+ content: "\f260"
+}
+
+.fa-gg-circle:before {
+ content: "\f261"
+}
+
+.fa-ghost:before {
+ content: "\f6e2"
+}
+
+.fa-gift:before {
+ content: "\f06b"
+}
+
+.fa-gifts:before {
+ content: "\f79c"
+}
+
+.fa-git:before {
+ content: "\f1d3"
+}
+
+.fa-git-alt:before {
+ content: "\f841"
+}
+
+.fa-git-square:before {
+ content: "\f1d2"
+}
+
+.fa-github:before {
+ content: "\f09b"
+}
+
+.fa-github-alt:before {
+ content: "\f113"
+}
+
+.fa-github-square:before {
+ content: "\f092"
+}
+
+.fa-gitkraken:before {
+ content: "\f3a6"
+}
+
+.fa-gitlab:before {
+ content: "\f296"
+}
+
+.fa-gitter:before {
+ content: "\f426"
+}
+
+.fa-glass-cheers:before {
+ content: "\f79f"
+}
+
+.fa-glass-martini:before {
+ content: "\f000"
+}
+
+.fa-glass-martini-alt:before {
+ content: "\f57b"
+}
+
+.fa-glass-whiskey:before {
+ content: "\f7a0"
+}
+
+.fa-glasses:before {
+ content: "\f530"
+}
+
+.fa-glide:before {
+ content: "\f2a5"
+}
+
+.fa-glide-g:before {
+ content: "\f2a6"
+}
+
+.fa-globe:before {
+ content: "\f0ac"
+}
+
+.fa-globe-africa:before {
+ content: "\f57c"
+}
+
+.fa-globe-americas:before {
+ content: "\f57d"
+}
+
+.fa-globe-asia:before {
+ content: "\f57e"
+}
+
+.fa-globe-europe:before {
+ content: "\f7a2"
+}
+
+.fa-gofore:before {
+ content: "\f3a7"
+}
+
+.fa-golf-ball:before {
+ content: "\f450"
+}
+
+.fa-goodreads:before {
+ content: "\f3a8"
+}
+
+.fa-goodreads-g:before {
+ content: "\f3a9"
+}
+
+.fa-google:before {
+ content: "\f1a0"
+}
+
+.fa-google-drive:before {
+ content: "\f3aa"
+}
+
+.fa-google-pay:before {
+ content: "\e079"
+}
+
+.fa-google-play:before {
+ content: "\f3ab"
+}
+
+.fa-google-plus:before {
+ content: "\f2b3"
+}
+
+.fa-google-plus-g:before {
+ content: "\f0d5"
+}
+
+.fa-google-plus-square:before {
+ content: "\f0d4"
+}
+
+.fa-google-wallet:before {
+ content: "\f1ee"
+}
+
+.fa-gopuram:before {
+ content: "\f664"
+}
+
+.fa-graduation-cap:before {
+ content: "\f19d"
+}
+
+.fa-gratipay:before {
+ content: "\f184"
+}
+
+.fa-grav:before {
+ content: "\f2d6"
+}
+
+.fa-greater-than:before {
+ content: "\f531"
+}
+
+.fa-greater-than-equal:before {
+ content: "\f532"
+}
+
+.fa-grimace:before {
+ content: "\f57f"
+}
+
+.fa-grin:before {
+ content: "\f580"
+}
+
+.fa-grin-alt:before {
+ content: "\f581"
+}
+
+.fa-grin-beam:before {
+ content: "\f582"
+}
+
+.fa-grin-beam-sweat:before {
+ content: "\f583"
+}
+
+.fa-grin-hearts:before {
+ content: "\f584"
+}
+
+.fa-grin-squint:before {
+ content: "\f585"
+}
+
+.fa-grin-squint-tears:before {
+ content: "\f586"
+}
+
+.fa-grin-stars:before {
+ content: "\f587"
+}
+
+.fa-grin-tears:before {
+ content: "\f588"
+}
+
+.fa-grin-tongue:before {
+ content: "\f589"
+}
+
+.fa-grin-tongue-squint:before {
+ content: "\f58a"
+}
+
+.fa-grin-tongue-wink:before {
+ content: "\f58b"
+}
+
+.fa-grin-wink:before {
+ content: "\f58c"
+}
+
+.fa-grip-horizontal:before {
+ content: "\f58d"
+}
+
+.fa-grip-lines:before {
+ content: "\f7a4"
+}
+
+.fa-grip-lines-vertical:before {
+ content: "\f7a5"
+}
+
+.fa-grip-vertical:before {
+ content: "\f58e"
+}
+
+.fa-gripfire:before {
+ content: "\f3ac"
+}
+
+.fa-grunt:before {
+ content: "\f3ad"
+}
+
+.fa-guilded:before {
+ content: "\e07e"
+}
+
+.fa-guitar:before {
+ content: "\f7a6"
+}
+
+.fa-gulp:before {
+ content: "\f3ae"
+}
+
+.fa-h-square:before {
+ content: "\f0fd"
+}
+
+.fa-hacker-news:before {
+ content: "\f1d4"
+}
+
+.fa-hacker-news-square:before {
+ content: "\f3af"
+}
+
+.fa-hackerrank:before {
+ content: "\f5f7"
+}
+
+.fa-hamburger:before {
+ content: "\f805"
+}
+
+.fa-hammer:before {
+ content: "\f6e3"
+}
+
+.fa-hamsa:before {
+ content: "\f665"
+}
+
+.fa-hand-holding:before {
+ content: "\f4bd"
+}
+
+.fa-hand-holding-heart:before {
+ content: "\f4be"
+}
+
+.fa-hand-holding-medical:before {
+ content: "\e05c"
+}
+
+.fa-hand-holding-usd:before {
+ content: "\f4c0"
+}
+
+.fa-hand-holding-water:before {
+ content: "\f4c1"
+}
+
+.fa-hand-lizard:before {
+ content: "\f258"
+}
+
+.fa-hand-middle-finger:before {
+ content: "\f806"
+}
+
+.fa-hand-paper:before {
+ content: "\f256"
+}
+
+.fa-hand-peace:before {
+ content: "\f25b"
+}
+
+.fa-hand-point-down:before {
+ content: "\f0a7"
+}
+
+.fa-hand-point-left:before {
+ content: "\f0a5"
+}
+
+.fa-hand-point-right:before {
+ content: "\f0a4"
+}
+
+.fa-hand-point-up:before {
+ content: "\f0a6"
+}
+
+.fa-hand-pointer:before {
+ content: "\f25a"
+}
+
+.fa-hand-rock:before {
+ content: "\f255"
+}
+
+.fa-hand-scissors:before {
+ content: "\f257"
+}
+
+.fa-hand-sparkles:before {
+ content: "\e05d"
+}
+
+.fa-hand-spock:before {
+ content: "\f259"
+}
+
+.fa-hands:before {
+ content: "\f4c2"
+}
+
+.fa-hands-helping:before {
+ content: "\f4c4"
+}
+
+.fa-hands-wash:before {
+ content: "\e05e"
+}
+
+.fa-handshake:before {
+ content: "\f2b5"
+}
+
+.fa-handshake-alt-slash:before {
+ content: "\e05f"
+}
+
+.fa-handshake-slash:before {
+ content: "\e060"
+}
+
+.fa-hanukiah:before {
+ content: "\f6e6"
+}
+
+.fa-hard-hat:before {
+ content: "\f807"
+}
+
+.fa-hashtag:before {
+ content: "\f292"
+}
+
+.fa-hat-cowboy:before {
+ content: "\f8c0"
+}
+
+.fa-hat-cowboy-side:before {
+ content: "\f8c1"
+}
+
+.fa-hat-wizard:before {
+ content: "\f6e8"
+}
+
+.fa-hdd:before {
+ content: "\f0a0"
+}
+
+.fa-head-side-cough:before {
+ content: "\e061"
+}
+
+.fa-head-side-cough-slash:before {
+ content: "\e062"
+}
+
+.fa-head-side-mask:before {
+ content: "\e063"
+}
+
+.fa-head-side-virus:before {
+ content: "\e064"
+}
+
+.fa-heading:before {
+ content: "\f1dc"
+}
+
+.fa-headphones:before {
+ content: "\f025"
+}
+
+.fa-headphones-alt:before {
+ content: "\f58f"
+}
+
+.fa-headset:before {
+ content: "\f590"
+}
+
+.fa-heart:before {
+ content: "\f004"
+}
+
+.fa-heart-broken:before {
+ content: "\f7a9"
+}
+
+.fa-heartbeat:before {
+ content: "\f21e"
+}
+
+.fa-helicopter:before {
+ content: "\f533"
+}
+
+.fa-highlighter:before {
+ content: "\f591"
+}
+
+.fa-hiking:before {
+ content: "\f6ec"
+}
+
+.fa-hippo:before {
+ content: "\f6ed"
+}
+
+.fa-hips:before {
+ content: "\f452"
+}
+
+.fa-hire-a-helper:before {
+ content: "\f3b0"
+}
+
+.fa-history:before {
+ content: "\f1da"
+}
+
+.fa-hive:before {
+ content: "\e07f"
+}
+
+.fa-hockey-puck:before {
+ content: "\f453"
+}
+
+.fa-holly-berry:before {
+ content: "\f7aa"
+}
+
+.fa-home:before {
+ content: "\f015"
+}
+
+.fa-hooli:before {
+ content: "\f427"
+}
+
+.fa-hornbill:before {
+ content: "\f592"
+}
+
+.fa-horse:before {
+ content: "\f6f0"
+}
+
+.fa-horse-head:before {
+ content: "\f7ab"
+}
+
+.fa-hospital:before {
+ content: "\f0f8"
+}
+
+.fa-hospital-alt:before {
+ content: "\f47d"
+}
+
+.fa-hospital-symbol:before {
+ content: "\f47e"
+}
+
+.fa-hospital-user:before {
+ content: "\f80d"
+}
+
+.fa-hot-tub:before {
+ content: "\f593"
+}
+
+.fa-hotdog:before {
+ content: "\f80f"
+}
+
+.fa-hotel:before {
+ content: "\f594"
+}
+
+.fa-hotjar:before {
+ content: "\f3b1"
+}
+
+.fa-hourglass:before {
+ content: "\f254"
+}
+
+.fa-hourglass-end:before {
+ content: "\f253"
+}
+
+.fa-hourglass-half:before {
+ content: "\f252"
+}
+
+.fa-hourglass-start:before {
+ content: "\f251"
+}
+
+.fa-house-damage:before {
+ content: "\f6f1"
+}
+
+.fa-house-user:before {
+ content: "\e065"
+}
+
+.fa-houzz:before {
+ content: "\f27c"
+}
+
+.fa-hryvnia:before {
+ content: "\f6f2"
+}
+
+.fa-html5:before {
+ content: "\f13b"
+}
+
+.fa-hubspot:before {
+ content: "\f3b2"
+}
+
+.fa-i-cursor:before {
+ content: "\f246"
+}
+
+.fa-ice-cream:before {
+ content: "\f810"
+}
+
+.fa-icicles:before {
+ content: "\f7ad"
+}
+
+.fa-icons:before {
+ content: "\f86d"
+}
+
+.fa-id-badge:before {
+ content: "\f2c1"
+}
+
+.fa-id-card:before {
+ content: "\f2c2"
+}
+
+.fa-id-card-alt:before {
+ content: "\f47f"
+}
+
+.fa-ideal:before {
+ content: "\e013"
+}
+
+.fa-igloo:before {
+ content: "\f7ae"
+}
+
+.fa-image:before {
+ content: "\f03e"
+}
+
+.fa-images:before {
+ content: "\f302"
+}
+
+.fa-imdb:before {
+ content: "\f2d8"
+}
+
+.fa-inbox:before {
+ content: "\f01c"
+}
+
+.fa-indent:before {
+ content: "\f03c"
+}
+
+.fa-industry:before {
+ content: "\f275"
+}
+
+.fa-infinity:before {
+ content: "\f534"
+}
+
+.fa-info:before {
+ content: "\f129"
+}
+
+.fa-info-circle:before {
+ content: "\f05a"
+}
+
+.fa-innosoft:before {
+ content: "\e080"
+}
+
+.fa-instagram:before {
+ content: "\f16d"
+}
+
+.fa-instagram-square:before {
+ content: "\e055"
+}
+
+.fa-instalod:before {
+ content: "\e081"
+}
+
+.fa-intercom:before {
+ content: "\f7af"
+}
+
+.fa-internet-explorer:before {
+ content: "\f26b"
+}
+
+.fa-invision:before {
+ content: "\f7b0"
+}
+
+.fa-ioxhost:before {
+ content: "\f208"
+}
+
+.fa-italic:before {
+ content: "\f033"
+}
+
+.fa-itch-io:before {
+ content: "\f83a"
+}
+
+.fa-itunes:before {
+ content: "\f3b4"
+}
+
+.fa-itunes-note:before {
+ content: "\f3b5"
+}
+
+.fa-java:before {
+ content: "\f4e4"
+}
+
+.fa-jedi:before {
+ content: "\f669"
+}
+
+.fa-jedi-order:before {
+ content: "\f50e"
+}
+
+.fa-jenkins:before {
+ content: "\f3b6"
+}
+
+.fa-jira:before {
+ content: "\f7b1"
+}
+
+.fa-joget:before {
+ content: "\f3b7"
+}
+
+.fa-joint:before {
+ content: "\f595"
+}
+
+.fa-joomla:before {
+ content: "\f1aa"
+}
+
+.fa-journal-whills:before {
+ content: "\f66a"
+}
+
+.fa-js:before {
+ content: "\f3b8"
+}
+
+.fa-js-square:before {
+ content: "\f3b9"
+}
+
+.fa-jsfiddle:before {
+ content: "\f1cc"
+}
+
+.fa-kaaba:before {
+ content: "\f66b"
+}
+
+.fa-kaggle:before {
+ content: "\f5fa"
+}
+
+.fa-key:before {
+ content: "\f084"
+}
+
+.fa-keybase:before {
+ content: "\f4f5"
+}
+
+.fa-keyboard:before {
+ content: "\f11c"
+}
+
+.fa-keycdn:before {
+ content: "\f3ba"
+}
+
+.fa-khanda:before {
+ content: "\f66d"
+}
+
+.fa-kickstarter:before {
+ content: "\f3bb"
+}
+
+.fa-kickstarter-k:before {
+ content: "\f3bc"
+}
+
+.fa-kiss:before {
+ content: "\f596"
+}
+
+.fa-kiss-beam:before {
+ content: "\f597"
+}
+
+.fa-kiss-wink-heart:before {
+ content: "\f598"
+}
+
+.fa-kiwi-bird:before {
+ content: "\f535"
+}
+
+.fa-korvue:before {
+ content: "\f42f"
+}
+
+.fa-landmark:before {
+ content: "\f66f"
+}
+
+.fa-language:before {
+ content: "\f1ab"
+}
+
+.fa-laptop:before {
+ content: "\f109"
+}
+
+.fa-laptop-code:before {
+ content: "\f5fc"
+}
+
+.fa-laptop-house:before {
+ content: "\e066"
+}
+
+.fa-laptop-medical:before {
+ content: "\f812"
+}
+
+.fa-laravel:before {
+ content: "\f3bd"
+}
+
+.fa-lastfm:before {
+ content: "\f202"
+}
+
+.fa-lastfm-square:before {
+ content: "\f203"
+}
+
+.fa-laugh:before {
+ content: "\f599"
+}
+
+.fa-laugh-beam:before {
+ content: "\f59a"
+}
+
+.fa-laugh-squint:before {
+ content: "\f59b"
+}
+
+.fa-laugh-wink:before {
+ content: "\f59c"
+}
+
+.fa-layer-group:before {
+ content: "\f5fd"
+}
+
+.fa-leaf:before {
+ content: "\f06c"
+}
+
+.fa-leanpub:before {
+ content: "\f212"
+}
+
+.fa-lemon:before {
+ content: "\f094"
+}
+
+.fa-less:before {
+ content: "\f41d"
+}
+
+.fa-less-than:before {
+ content: "\f536"
+}
+
+.fa-less-than-equal:before {
+ content: "\f537"
+}
+
+.fa-level-down-alt:before {
+ content: "\f3be"
+}
+
+.fa-level-up-alt:before {
+ content: "\f3bf"
+}
+
+.fa-life-ring:before {
+ content: "\f1cd"
+}
+
+.fa-lightbulb:before {
+ content: "\f0eb"
+}
+
+.fa-line:before {
+ content: "\f3c0"
+}
+
+.fa-link:before {
+ content: "\f0c1"
+}
+
+.fa-linkedin:before {
+ content: "\f08c"
+}
+
+.fa-linkedin-in:before {
+ content: "\f0e1"
+}
+
+.fa-linode:before {
+ content: "\f2b8"
+}
+
+.fa-linux:before {
+ content: "\f17c"
+}
+
+.fa-lira-sign:before {
+ content: "\f195"
+}
+
+.fa-list:before {
+ content: "\f03a"
+}
+
+.fa-list-alt:before {
+ content: "\f022"
+}
+
+.fa-list-ol:before {
+ content: "\f0cb"
+}
+
+.fa-list-ul:before {
+ content: "\f0ca"
+}
+
+.fa-location-arrow:before {
+ content: "\f124"
+}
+
+.fa-lock:before {
+ content: "\f023"
+}
+
+.fa-lock-open:before {
+ content: "\f3c1"
+}
+
+.fa-long-arrow-alt-down:before {
+ content: "\f309"
+}
+
+.fa-long-arrow-alt-left:before {
+ content: "\f30a"
+}
+
+.fa-long-arrow-alt-right:before {
+ content: "\f30b"
+}
+
+.fa-long-arrow-alt-up:before {
+ content: "\f30c"
+}
+
+.fa-low-vision:before {
+ content: "\f2a8"
+}
+
+.fa-luggage-cart:before {
+ content: "\f59d"
+}
+
+.fa-lungs:before {
+ content: "\f604"
+}
+
+.fa-lungs-virus:before {
+ content: "\e067"
+}
+
+.fa-lyft:before {
+ content: "\f3c3"
+}
+
+.fa-magento:before {
+ content: "\f3c4"
+}
+
+.fa-magic:before {
+ content: "\f0d0"
+}
+
+.fa-magnet:before {
+ content: "\f076"
+}
+
+.fa-mail-bulk:before {
+ content: "\f674"
+}
+
+.fa-mailchimp:before {
+ content: "\f59e"
+}
+
+.fa-male:before {
+ content: "\f183"
+}
+
+.fa-mandalorian:before {
+ content: "\f50f"
+}
+
+.fa-map:before {
+ content: "\f279"
+}
+
+.fa-map-marked:before {
+ content: "\f59f"
+}
+
+.fa-map-marked-alt:before {
+ content: "\f5a0"
+}
+
+.fa-map-marker:before {
+ content: "\f041"
+}
+
+.fa-map-marker-alt:before {
+ content: "\f3c5"
+}
+
+.fa-map-pin:before {
+ content: "\f276"
+}
+
+.fa-map-signs:before {
+ content: "\f277"
+}
+
+.fa-markdown:before {
+ content: "\f60f"
+}
+
+.fa-marker:before {
+ content: "\f5a1"
+}
+
+.fa-mars:before {
+ content: "\f222"
+}
+
+.fa-mars-double:before {
+ content: "\f227"
+}
+
+.fa-mars-stroke:before {
+ content: "\f229"
+}
+
+.fa-mars-stroke-h:before {
+ content: "\f22b"
+}
+
+.fa-mars-stroke-v:before {
+ content: "\f22a"
+}
+
+.fa-mask:before {
+ content: "\f6fa"
+}
+
+.fa-mastodon:before {
+ content: "\f4f6"
+}
+
+.fa-maxcdn:before {
+ content: "\f136"
+}
+
+.fa-mdb:before {
+ content: "\f8ca"
+}
+
+.fa-medal:before {
+ content: "\f5a2"
+}
+
+.fa-medapps:before {
+ content: "\f3c6"
+}
+
+.fa-medium:before {
+ content: "\f23a"
+}
+
+.fa-medium-m:before {
+ content: "\f3c7"
+}
+
+.fa-medkit:before {
+ content: "\f0fa"
+}
+
+.fa-medrt:before {
+ content: "\f3c8"
+}
+
+.fa-meetup:before {
+ content: "\f2e0"
+}
+
+.fa-megaport:before {
+ content: "\f5a3"
+}
+
+.fa-meh:before {
+ content: "\f11a"
+}
+
+.fa-meh-blank:before {
+ content: "\f5a4"
+}
+
+.fa-meh-rolling-eyes:before {
+ content: "\f5a5"
+}
+
+.fa-memory:before {
+ content: "\f538"
+}
+
+.fa-mendeley:before {
+ content: "\f7b3"
+}
+
+.fa-menorah:before {
+ content: "\f676"
+}
+
+.fa-mercury:before {
+ content: "\f223"
+}
+
+.fa-meteor:before {
+ content: "\f753"
+}
+
+.fa-microblog:before {
+ content: "\e01a"
+}
+
+.fa-microchip:before {
+ content: "\f2db"
+}
+
+.fa-microphone:before {
+ content: "\f130"
+}
+
+.fa-microphone-alt:before {
+ content: "\f3c9"
+}
+
+.fa-microphone-alt-slash:before {
+ content: "\f539"
+}
+
+.fa-microphone-slash:before {
+ content: "\f131"
+}
+
+.fa-microscope:before {
+ content: "\f610"
+}
+
+.fa-microsoft:before {
+ content: "\f3ca"
+}
+
+.fa-minus:before {
+ content: "\f068"
+}
+
+.fa-minus-circle:before {
+ content: "\f056"
+}
+
+.fa-minus-square:before {
+ content: "\f146"
+}
+
+.fa-mitten:before {
+ content: "\f7b5"
+}
+
+.fa-mix:before {
+ content: "\f3cb"
+}
+
+.fa-mixcloud:before {
+ content: "\f289"
+}
+
+.fa-mixer:before {
+ content: "\e056"
+}
+
+.fa-mizuni:before {
+ content: "\f3cc"
+}
+
+.fa-mobile:before {
+ content: "\f10b"
+}
+
+.fa-mobile-alt:before {
+ content: "\f3cd"
+}
+
+.fa-modx:before {
+ content: "\f285"
+}
+
+.fa-monero:before {
+ content: "\f3d0"
+}
+
+.fa-money-bill:before {
+ content: "\f0d6"
+}
+
+.fa-money-bill-alt:before {
+ content: "\f3d1"
+}
+
+.fa-money-bill-wave:before {
+ content: "\f53a"
+}
+
+.fa-money-bill-wave-alt:before {
+ content: "\f53b"
+}
+
+.fa-money-check:before {
+ content: "\f53c"
+}
+
+.fa-money-check-alt:before {
+ content: "\f53d"
+}
+
+.fa-monument:before {
+ content: "\f5a6"
+}
+
+.fa-moon:before {
+ content: "\f186"
+}
+
+.fa-mortar-pestle:before {
+ content: "\f5a7"
+}
+
+.fa-mosque:before {
+ content: "\f678"
+}
+
+.fa-motorcycle:before {
+ content: "\f21c"
+}
+
+.fa-mountain:before {
+ content: "\f6fc"
+}
+
+.fa-mouse:before {
+ content: "\f8cc"
+}
+
+.fa-mouse-pointer:before {
+ content: "\f245"
+}
+
+.fa-mug-hot:before {
+ content: "\f7b6"
+}
+
+.fa-music:before {
+ content: "\f001"
+}
+
+.fa-napster:before {
+ content: "\f3d2"
+}
+
+.fa-neos:before {
+ content: "\f612"
+}
+
+.fa-network-wired:before {
+ content: "\f6ff"
+}
+
+.fa-neuter:before {
+ content: "\f22c"
+}
+
+.fa-newspaper:before {
+ content: "\f1ea"
+}
+
+.fa-nimblr:before {
+ content: "\f5a8"
+}
+
+.fa-node:before {
+ content: "\f419"
+}
+
+.fa-node-js:before {
+ content: "\f3d3"
+}
+
+.fa-not-equal:before {
+ content: "\f53e"
+}
+
+.fa-notes-medical:before {
+ content: "\f481"
+}
+
+.fa-npm:before {
+ content: "\f3d4"
+}
+
+.fa-ns8:before {
+ content: "\f3d5"
+}
+
+.fa-nutritionix:before {
+ content: "\f3d6"
+}
+
+.fa-object-group:before {
+ content: "\f247"
+}
+
+.fa-object-ungroup:before {
+ content: "\f248"
+}
+
+.fa-octopus-deploy:before {
+ content: "\e082"
+}
+
+.fa-odnoklassniki:before {
+ content: "\f263"
+}
+
+.fa-odnoklassniki-square:before {
+ content: "\f264"
+}
+
+.fa-oil-can:before {
+ content: "\f613"
+}
+
+.fa-old-republic:before {
+ content: "\f510"
+}
+
+.fa-om:before {
+ content: "\f679"
+}
+
+.fa-opencart:before {
+ content: "\f23d"
+}
+
+.fa-openid:before {
+ content: "\f19b"
+}
+
+.fa-opera:before {
+ content: "\f26a"
+}
+
+.fa-optin-monster:before {
+ content: "\f23c"
+}
+
+.fa-orcid:before {
+ content: "\f8d2"
+}
+
+.fa-osi:before {
+ content: "\f41a"
+}
+
+.fa-otter:before {
+ content: "\f700"
+}
+
+.fa-outdent:before {
+ content: "\f03b"
+}
+
+.fa-page4:before {
+ content: "\f3d7"
+}
+
+.fa-pagelines:before {
+ content: "\f18c"
+}
+
+.fa-pager:before {
+ content: "\f815"
+}
+
+.fa-paint-brush:before {
+ content: "\f1fc"
+}
+
+.fa-paint-roller:before {
+ content: "\f5aa"
+}
+
+.fa-palette:before {
+ content: "\f53f"
+}
+
+.fa-palfed:before {
+ content: "\f3d8"
+}
+
+.fa-pallet:before {
+ content: "\f482"
+}
+
+.fa-paper-plane:before {
+ content: "\f1d8"
+}
+
+.fa-paperclip:before {
+ content: "\f0c6"
+}
+
+.fa-parachute-box:before {
+ content: "\f4cd"
+}
+
+.fa-paragraph:before {
+ content: "\f1dd"
+}
+
+.fa-parking:before {
+ content: "\f540"
+}
+
+.fa-passport:before {
+ content: "\f5ab"
+}
+
+.fa-pastafarianism:before {
+ content: "\f67b"
+}
+
+.fa-paste:before {
+ content: "\f0ea"
+}
+
+.fa-patreon:before {
+ content: "\f3d9"
+}
+
+.fa-pause:before {
+ content: "\f04c"
+}
+
+.fa-pause-circle:before {
+ content: "\f28b"
+}
+
+.fa-paw:before {
+ content: "\f1b0"
+}
+
+.fa-paypal:before {
+ content: "\f1ed"
+}
+
+.fa-peace:before {
+ content: "\f67c"
+}
+
+.fa-pen:before {
+ content: "\f304"
+}
+
+.fa-pen-alt:before {
+ content: "\f305"
+}
+
+.fa-pen-fancy:before {
+ content: "\f5ac"
+}
+
+.fa-pen-nib:before {
+ content: "\f5ad"
+}
+
+.fa-pen-square:before {
+ content: "\f14b"
+}
+
+.fa-pencil-alt:before {
+ content: "\f303"
+}
+
+.fa-pencil-ruler:before {
+ content: "\f5ae"
+}
+
+.fa-penny-arcade:before {
+ content: "\f704"
+}
+
+.fa-people-arrows:before {
+ content: "\e068"
+}
+
+.fa-people-carry:before {
+ content: "\f4ce"
+}
+
+.fa-pepper-hot:before {
+ content: "\f816"
+}
+
+.fa-perbyte:before {
+ content: "\e083"
+}
+
+.fa-percent:before {
+ content: "\f295"
+}
+
+.fa-percentage:before {
+ content: "\f541"
+}
+
+.fa-periscope:before {
+ content: "\f3da"
+}
+
+.fa-person-booth:before {
+ content: "\f756"
+}
+
+.fa-phabricator:before {
+ content: "\f3db"
+}
+
+.fa-phoenix-framework:before {
+ content: "\f3dc"
+}
+
+.fa-phoenix-squadron:before {
+ content: "\f511"
+}
+
+.fa-phone:before {
+ content: "\f095"
+}
+
+.fa-phone-alt:before {
+ content: "\f879"
+}
+
+.fa-phone-slash:before {
+ content: "\f3dd"
+}
+
+.fa-phone-square:before {
+ content: "\f098"
+}
+
+.fa-phone-square-alt:before {
+ content: "\f87b"
+}
+
+.fa-phone-volume:before {
+ content: "\f2a0"
+}
+
+.fa-photo-video:before {
+ content: "\f87c"
+}
+
+.fa-php:before {
+ content: "\f457"
+}
+
+.fa-pied-piper:before {
+ content: "\f2ae"
+}
+
+.fa-pied-piper-alt:before {
+ content: "\f1a8"
+}
+
+.fa-pied-piper-hat:before {
+ content: "\f4e5"
+}
+
+.fa-pied-piper-pp:before {
+ content: "\f1a7"
+}
+
+.fa-pied-piper-square:before {
+ content: "\e01e"
+}
+
+.fa-piggy-bank:before {
+ content: "\f4d3"
+}
+
+.fa-pills:before {
+ content: "\f484"
+}
+
+.fa-pinterest:before {
+ content: "\f0d2"
+}
+
+.fa-pinterest-p:before {
+ content: "\f231"
+}
+
+.fa-pinterest-square:before {
+ content: "\f0d3"
+}
+
+.fa-pizza-slice:before {
+ content: "\f818"
+}
+
+.fa-place-of-worship:before {
+ content: "\f67f"
+}
+
+.fa-plane:before {
+ content: "\f072"
+}
+
+.fa-plane-arrival:before {
+ content: "\f5af"
+}
+
+.fa-plane-departure:before {
+ content: "\f5b0"
+}
+
+.fa-plane-slash:before {
+ content: "\e069"
+}
+
+.fa-play:before {
+ content: "\f04b"
+}
+
+.fa-play-circle:before {
+ content: "\f144"
+}
+
+.fa-playstation:before {
+ content: "\f3df"
+}
+
+.fa-plug:before {
+ content: "\f1e6"
+}
+
+.fa-plus:before {
+ content: "\f067"
+}
+
+.fa-plus-circle:before {
+ content: "\f055"
+}
+
+.fa-plus-square:before {
+ content: "\f0fe"
+}
+
+.fa-podcast:before {
+ content: "\f2ce"
+}
+
+.fa-poll:before {
+ content: "\f681"
+}
+
+.fa-poll-h:before {
+ content: "\f682"
+}
+
+.fa-poo:before {
+ content: "\f2fe"
+}
+
+.fa-poo-storm:before {
+ content: "\f75a"
+}
+
+.fa-poop:before {
+ content: "\f619"
+}
+
+.fa-portrait:before {
+ content: "\f3e0"
+}
+
+.fa-pound-sign:before {
+ content: "\f154"
+}
+
+.fa-power-off:before {
+ content: "\f011"
+}
+
+.fa-pray:before {
+ content: "\f683"
+}
+
+.fa-praying-hands:before {
+ content: "\f684"
+}
+
+.fa-prescription:before {
+ content: "\f5b1"
+}
+
+.fa-prescription-bottle:before {
+ content: "\f485"
+}
+
+.fa-prescription-bottle-alt:before {
+ content: "\f486"
+}
+
+.fa-print:before {
+ content: "\f02f"
+}
+
+.fa-procedures:before {
+ content: "\f487"
+}
+
+.fa-product-hunt:before {
+ content: "\f288"
+}
+
+.fa-project-diagram:before {
+ content: "\f542"
+}
+
+.fa-pump-medical:before {
+ content: "\e06a"
+}
+
+.fa-pump-soap:before {
+ content: "\e06b"
+}
+
+.fa-pushed:before {
+ content: "\f3e1"
+}
+
+.fa-puzzle-piece:before {
+ content: "\f12e"
+}
+
+.fa-python:before {
+ content: "\f3e2"
+}
+
+.fa-qq:before {
+ content: "\f1d6"
+}
+
+.fa-qrcode:before {
+ content: "\f029"
+}
+
+.fa-question:before {
+ content: "\f128"
+}
+
+.fa-question-circle:before {
+ content: "\f059"
+}
+
+.fa-quidditch:before {
+ content: "\f458"
+}
+
+.fa-quinscape:before {
+ content: "\f459"
+}
+
+.fa-quora:before {
+ content: "\f2c4"
+}
+
+.fa-quote-left:before {
+ content: "\f10d"
+}
+
+.fa-quote-right:before {
+ content: "\f10e"
+}
+
+.fa-quran:before {
+ content: "\f687"
+}
+
+.fa-r-project:before {
+ content: "\f4f7"
+}
+
+.fa-radiation:before {
+ content: "\f7b9"
+}
+
+.fa-radiation-alt:before {
+ content: "\f7ba"
+}
+
+.fa-rainbow:before {
+ content: "\f75b"
+}
+
+.fa-random:before {
+ content: "\f074"
+}
+
+.fa-raspberry-pi:before {
+ content: "\f7bb"
+}
+
+.fa-ravelry:before {
+ content: "\f2d9"
+}
+
+.fa-react:before {
+ content: "\f41b"
+}
+
+.fa-reacteurope:before {
+ content: "\f75d"
+}
+
+.fa-readme:before {
+ content: "\f4d5"
+}
+
+.fa-rebel:before {
+ content: "\f1d0"
+}
+
+.fa-receipt:before {
+ content: "\f543"
+}
+
+.fa-record-vinyl:before {
+ content: "\f8d9"
+}
+
+.fa-recycle:before {
+ content: "\f1b8"
+}
+
+.fa-red-river:before {
+ content: "\f3e3"
+}
+
+.fa-reddit:before {
+ content: "\f1a1"
+}
+
+.fa-reddit-alien:before {
+ content: "\f281"
+}
+
+.fa-reddit-square:before {
+ content: "\f1a2"
+}
+
+.fa-redhat:before {
+ content: "\f7bc"
+}
+
+.fa-redo:before {
+ content: "\f01e"
+}
+
+.fa-redo-alt:before {
+ content: "\f2f9"
+}
+
+.fa-registered:before {
+ content: "\f25d"
+}
+
+.fa-remove-format:before {
+ content: "\f87d"
+}
+
+.fa-renren:before {
+ content: "\f18b"
+}
+
+.fa-reply:before {
+ content: "\f3e5"
+}
+
+.fa-reply-all:before {
+ content: "\f122"
+}
+
+.fa-replyd:before {
+ content: "\f3e6"
+}
+
+.fa-republican:before {
+ content: "\f75e"
+}
+
+.fa-researchgate:before {
+ content: "\f4f8"
+}
+
+.fa-resolving:before {
+ content: "\f3e7"
+}
+
+.fa-restroom:before {
+ content: "\f7bd"
+}
+
+.fa-retweet:before {
+ content: "\f079"
+}
+
+.fa-rev:before {
+ content: "\f5b2"
+}
+
+.fa-ribbon:before {
+ content: "\f4d6"
+}
+
+.fa-ring:before {
+ content: "\f70b"
+}
+
+.fa-road:before {
+ content: "\f018"
+}
+
+.fa-robot:before {
+ content: "\f544"
+}
+
+.fa-rocket:before {
+ content: "\f135"
+}
+
+.fa-rocketchat:before {
+ content: "\f3e8"
+}
+
+.fa-rockrms:before {
+ content: "\f3e9"
+}
+
+.fa-route:before {
+ content: "\f4d7"
+}
+
+.fa-rss:before {
+ content: "\f09e"
+}
+
+.fa-rss-square:before {
+ content: "\f143"
+}
+
+.fa-ruble-sign:before {
+ content: "\f158"
+}
+
+.fa-ruler:before {
+ content: "\f545"
+}
+
+.fa-ruler-combined:before {
+ content: "\f546"
+}
+
+.fa-ruler-horizontal:before {
+ content: "\f547"
+}
+
+.fa-ruler-vertical:before {
+ content: "\f548"
+}
+
+.fa-running:before {
+ content: "\f70c"
+}
+
+.fa-rupee-sign:before {
+ content: "\f156"
+}
+
+.fa-rust:before {
+ content: "\e07a"
+}
+
+.fa-sad-cry:before {
+ content: "\f5b3"
+}
+
+.fa-sad-tear:before {
+ content: "\f5b4"
+}
+
+.fa-safari:before {
+ content: "\f267"
+}
+
+.fa-salesforce:before {
+ content: "\f83b"
+}
+
+.fa-sass:before {
+ content: "\f41e"
+}
+
+.fa-satellite:before {
+ content: "\f7bf"
+}
+
+.fa-satellite-dish:before {
+ content: "\f7c0"
+}
+
+.fa-save:before {
+ content: "\f0c7"
+}
+
+.fa-schlix:before {
+ content: "\f3ea"
+}
+
+.fa-school:before {
+ content: "\f549"
+}
+
+.fa-screwdriver:before {
+ content: "\f54a"
+}
+
+.fa-scribd:before {
+ content: "\f28a"
+}
+
+.fa-scroll:before {
+ content: "\f70e"
+}
+
+.fa-sd-card:before {
+ content: "\f7c2"
+}
+
+.fa-search:before {
+ content: "\f002"
+}
+
+.fa-search-dollar:before {
+ content: "\f688"
+}
+
+.fa-search-location:before {
+ content: "\f689"
+}
+
+.fa-search-minus:before {
+ content: "\f010"
+}
+
+.fa-search-plus:before {
+ content: "\f00e"
+}
+
+.fa-searchengin:before {
+ content: "\f3eb"
+}
+
+.fa-seedling:before {
+ content: "\f4d8"
+}
+
+.fa-sellcast:before {
+ content: "\f2da"
+}
+
+.fa-sellsy:before {
+ content: "\f213"
+}
+
+.fa-server:before {
+ content: "\f233"
+}
+
+.fa-servicestack:before {
+ content: "\f3ec"
+}
+
+.fa-shapes:before {
+ content: "\f61f"
+}
+
+.fa-share:before {
+ content: "\f064"
+}
+
+.fa-share-alt:before {
+ content: "\f1e0"
+}
+
+.fa-share-alt-square:before {
+ content: "\f1e1"
+}
+
+.fa-share-square:before {
+ content: "\f14d"
+}
+
+.fa-shekel-sign:before {
+ content: "\f20b"
+}
+
+.fa-shield-alt:before {
+ content: "\f3ed"
+}
+
+.fa-shield-virus:before {
+ content: "\e06c"
+}
+
+.fa-ship:before {
+ content: "\f21a"
+}
+
+.fa-shipping-fast:before {
+ content: "\f48b"
+}
+
+.fa-shirtsinbulk:before {
+ content: "\f214"
+}
+
+.fa-shoe-prints:before {
+ content: "\f54b"
+}
+
+.fa-shopify:before {
+ content: "\e057"
+}
+
+.fa-shopping-bag:before {
+ content: "\f290"
+}
+
+.fa-shopping-basket:before {
+ content: "\f291"
+}
+
+.fa-shopping-cart:before {
+ content: "\f07a"
+}
+
+.fa-shopware:before {
+ content: "\f5b5"
+}
+
+.fa-shower:before {
+ content: "\f2cc"
+}
+
+.fa-shuttle-van:before {
+ content: "\f5b6"
+}
+
+.fa-sign:before {
+ content: "\f4d9"
+}
+
+.fa-sign-in-alt:before {
+ content: "\f2f6"
+}
+
+.fa-sign-language:before {
+ content: "\f2a7"
+}
+
+.fa-sign-out-alt:before {
+ content: "\f2f5"
+}
+
+.fa-signal:before {
+ content: "\f012"
+}
+
+.fa-signature:before {
+ content: "\f5b7"
+}
+
+.fa-sim-card:before {
+ content: "\f7c4"
+}
+
+.fa-simplybuilt:before {
+ content: "\f215"
+}
+
+.fa-sink:before {
+ content: "\e06d"
+}
+
+.fa-sistrix:before {
+ content: "\f3ee"
+}
+
+.fa-sitemap:before {
+ content: "\f0e8"
+}
+
+.fa-sith:before {
+ content: "\f512"
+}
+
+.fa-skating:before {
+ content: "\f7c5"
+}
+
+.fa-sketch:before {
+ content: "\f7c6"
+}
+
+.fa-skiing:before {
+ content: "\f7c9"
+}
+
+.fa-skiing-nordic:before {
+ content: "\f7ca"
+}
+
+.fa-skull:before {
+ content: "\f54c"
+}
+
+.fa-skull-crossbones:before {
+ content: "\f714"
+}
+
+.fa-skyatlas:before {
+ content: "\f216"
+}
+
+.fa-skype:before {
+ content: "\f17e"
+}
+
+.fa-slack:before {
+ content: "\f198"
+}
+
+.fa-slack-hash:before {
+ content: "\f3ef"
+}
+
+.fa-slash:before {
+ content: "\f715"
+}
+
+.fa-sleigh:before {
+ content: "\f7cc"
+}
+
+.fa-sliders-h:before {
+ content: "\f1de"
+}
+
+.fa-slideshare:before {
+ content: "\f1e7"
+}
+
+.fa-smile:before {
+ content: "\f118"
+}
+
+.fa-smile-beam:before {
+ content: "\f5b8"
+}
+
+.fa-smile-wink:before {
+ content: "\f4da"
+}
+
+.fa-smog:before {
+ content: "\f75f"
+}
+
+.fa-smoking:before {
+ content: "\f48d"
+}
+
+.fa-smoking-ban:before {
+ content: "\f54d"
+}
+
+.fa-sms:before {
+ content: "\f7cd"
+}
+
+.fa-snapchat:before {
+ content: "\f2ab"
+}
+
+.fa-snapchat-ghost:before {
+ content: "\f2ac"
+}
+
+.fa-snapchat-square:before {
+ content: "\f2ad"
+}
+
+.fa-snowboarding:before {
+ content: "\f7ce"
+}
+
+.fa-snowflake:before {
+ content: "\f2dc"
+}
+
+.fa-snowman:before {
+ content: "\f7d0"
+}
+
+.fa-snowplow:before {
+ content: "\f7d2"
+}
+
+.fa-soap:before {
+ content: "\e06e"
+}
+
+.fa-socks:before {
+ content: "\f696"
+}
+
+.fa-solar-panel:before {
+ content: "\f5ba"
+}
+
+.fa-sort:before {
+ content: "\f0dc"
+}
+
+.fa-sort-alpha-down:before {
+ content: "\f15d"
+}
+
+.fa-sort-alpha-down-alt:before {
+ content: "\f881"
+}
+
+.fa-sort-alpha-up:before {
+ content: "\f15e"
+}
+
+.fa-sort-alpha-up-alt:before {
+ content: "\f882"
+}
+
+.fa-sort-amount-down:before {
+ content: "\f160"
+}
+
+.fa-sort-amount-down-alt:before {
+ content: "\f884"
+}
+
+.fa-sort-amount-up:before {
+ content: "\f161"
+}
+
+.fa-sort-amount-up-alt:before {
+ content: "\f885"
+}
+
+.fa-sort-down:before {
+ content: "\f0dd"
+}
+
+.fa-sort-numeric-down:before {
+ content: "\f162"
+}
+
+.fa-sort-numeric-down-alt:before {
+ content: "\f886"
+}
+
+.fa-sort-numeric-up:before {
+ content: "\f163"
+}
+
+.fa-sort-numeric-up-alt:before {
+ content: "\f887"
+}
+
+.fa-sort-up:before {
+ content: "\f0de"
+}
+
+.fa-soundcloud:before {
+ content: "\f1be"
+}
+
+.fa-sourcetree:before {
+ content: "\f7d3"
+}
+
+.fa-spa:before {
+ content: "\f5bb"
+}
+
+.fa-space-shuttle:before {
+ content: "\f197"
+}
+
+.fa-speakap:before {
+ content: "\f3f3"
+}
+
+.fa-speaker-deck:before {
+ content: "\f83c"
+}
+
+.fa-spell-check:before {
+ content: "\f891"
+}
+
+.fa-spider:before {
+ content: "\f717"
+}
+
+.fa-spinner:before {
+ content: "\f110"
+}
+
+.fa-splotch:before {
+ content: "\f5bc"
+}
+
+.fa-spotify:before {
+ content: "\f1bc"
+}
+
+.fa-spray-can:before {
+ content: "\f5bd"
+}
+
+.fa-square:before {
+ content: "\f0c8"
+}
+
+.fa-square-full:before {
+ content: "\f45c"
+}
+
+.fa-square-root-alt:before {
+ content: "\f698"
+}
+
+.fa-squarespace:before {
+ content: "\f5be"
+}
+
+.fa-stack-exchange:before {
+ content: "\f18d"
+}
+
+.fa-stack-overflow:before {
+ content: "\f16c"
+}
+
+.fa-stackpath:before {
+ content: "\f842"
+}
+
+.fa-stamp:before {
+ content: "\f5bf"
+}
+
+.fa-star:before {
+ content: "\f005"
+}
+
+.fa-star-and-crescent:before {
+ content: "\f699"
+}
+
+.fa-star-half:before {
+ content: "\f089"
+}
+
+.fa-star-half-alt:before {
+ content: "\f5c0"
+}
+
+.fa-star-of-david:before {
+ content: "\f69a"
+}
+
+.fa-star-of-life:before {
+ content: "\f621"
+}
+
+.fa-staylinked:before {
+ content: "\f3f5"
+}
+
+.fa-steam:before {
+ content: "\f1b6"
+}
+
+.fa-steam-square:before {
+ content: "\f1b7"
+}
+
+.fa-steam-symbol:before {
+ content: "\f3f6"
+}
+
+.fa-step-backward:before {
+ content: "\f048"
+}
+
+.fa-step-forward:before {
+ content: "\f051"
+}
+
+.fa-stethoscope:before {
+ content: "\f0f1"
+}
+
+.fa-sticker-mule:before {
+ content: "\f3f7"
+}
+
+.fa-sticky-note:before {
+ content: "\f249"
+}
+
+.fa-stop:before {
+ content: "\f04d"
+}
+
+.fa-stop-circle:before {
+ content: "\f28d"
+}
+
+.fa-stopwatch:before {
+ content: "\f2f2"
+}
+
+.fa-stopwatch-20:before {
+ content: "\e06f"
+}
+
+.fa-store:before {
+ content: "\f54e"
+}
+
+.fa-store-alt:before {
+ content: "\f54f"
+}
+
+.fa-store-alt-slash:before {
+ content: "\e070"
+}
+
+.fa-store-slash:before {
+ content: "\e071"
+}
+
+.fa-strava:before {
+ content: "\f428"
+}
+
+.fa-stream:before {
+ content: "\f550"
+}
+
+.fa-street-view:before {
+ content: "\f21d"
+}
+
+.fa-strikethrough:before {
+ content: "\f0cc"
+}
+
+.fa-stripe:before {
+ content: "\f429"
+}
+
+.fa-stripe-s:before {
+ content: "\f42a"
+}
+
+.fa-stroopwafel:before {
+ content: "\f551"
+}
+
+.fa-studiovinari:before {
+ content: "\f3f8"
+}
+
+.fa-stumbleupon:before {
+ content: "\f1a4"
+}
+
+.fa-stumbleupon-circle:before {
+ content: "\f1a3"
+}
+
+.fa-subscript:before {
+ content: "\f12c"
+}
+
+.fa-subway:before {
+ content: "\f239"
+}
+
+.fa-suitcase:before {
+ content: "\f0f2"
+}
+
+.fa-suitcase-rolling:before {
+ content: "\f5c1"
+}
+
+.fa-sun:before {
+ content: "\f185"
+}
+
+.fa-superpowers:before {
+ content: "\f2dd"
+}
+
+.fa-superscript:before {
+ content: "\f12b"
+}
+
+.fa-supple:before {
+ content: "\f3f9"
+}
+
+.fa-surprise:before {
+ content: "\f5c2"
+}
+
+.fa-suse:before {
+ content: "\f7d6"
+}
+
+.fa-swatchbook:before {
+ content: "\f5c3"
+}
+
+.fa-swift:before {
+ content: "\f8e1"
+}
+
+.fa-swimmer:before {
+ content: "\f5c4"
+}
+
+.fa-swimming-pool:before {
+ content: "\f5c5"
+}
+
+.fa-symfony:before {
+ content: "\f83d"
+}
+
+.fa-synagogue:before {
+ content: "\f69b"
+}
+
+.fa-sync:before {
+ content: "\f021"
+}
+
+.fa-sync-alt:before {
+ content: "\f2f1"
+}
+
+.fa-syringe:before {
+ content: "\f48e"
+}
+
+.fa-table:before {
+ content: "\f0ce"
+}
+
+.fa-table-tennis:before {
+ content: "\f45d"
+}
+
+.fa-tablet:before {
+ content: "\f10a"
+}
+
+.fa-tablet-alt:before {
+ content: "\f3fa"
+}
+
+.fa-tablets:before {
+ content: "\f490"
+}
+
+.fa-tachometer-alt:before {
+ content: "\f3fd"
+}
+
+.fa-tag:before {
+ content: "\f02b"
+}
+
+.fa-tags:before {
+ content: "\f02c"
+}
+
+.fa-tape:before {
+ content: "\f4db"
+}
+
+.fa-tasks:before {
+ content: "\f0ae"
+}
+
+.fa-taxi:before {
+ content: "\f1ba"
+}
+
+.fa-teamspeak:before {
+ content: "\f4f9"
+}
+
+.fa-teeth:before {
+ content: "\f62e"
+}
+
+.fa-teeth-open:before {
+ content: "\f62f"
+}
+
+.fa-telegram:before {
+ content: "\f2c6"
+}
+
+.fa-telegram-plane:before {
+ content: "\f3fe"
+}
+
+.fa-temperature-high:before {
+ content: "\f769"
+}
+
+.fa-temperature-low:before {
+ content: "\f76b"
+}
+
+.fa-tencent-weibo:before {
+ content: "\f1d5"
+}
+
+.fa-tenge:before {
+ content: "\f7d7"
+}
+
+.fa-terminal:before {
+ content: "\f120"
+}
+
+.fa-text-height:before {
+ content: "\f034"
+}
+
+.fa-text-width:before {
+ content: "\f035"
+}
+
+.fa-th:before {
+ content: "\f00a"
+}
+
+.fa-th-large:before {
+ content: "\f009"
+}
+
+.fa-th-list:before {
+ content: "\f00b"
+}
+
+.fa-the-red-yeti:before {
+ content: "\f69d"
+}
+
+.fa-theater-masks:before {
+ content: "\f630"
+}
+
+.fa-themeco:before {
+ content: "\f5c6"
+}
+
+.fa-themeisle:before {
+ content: "\f2b2"
+}
+
+.fa-thermometer:before {
+ content: "\f491"
+}
+
+.fa-thermometer-empty:before {
+ content: "\f2cb"
+}
+
+.fa-thermometer-full:before {
+ content: "\f2c7"
+}
+
+.fa-thermometer-half:before {
+ content: "\f2c9"
+}
+
+.fa-thermometer-quarter:before {
+ content: "\f2ca"
+}
+
+.fa-thermometer-three-quarters:before {
+ content: "\f2c8"
+}
+
+.fa-think-peaks:before {
+ content: "\f731"
+}
+
+.fa-thumbs-down:before {
+ content: "\f165"
+}
+
+.fa-thumbs-up:before {
+ content: "\f164"
+}
+
+.fa-thumbtack:before {
+ content: "\f08d"
+}
+
+.fa-ticket-alt:before {
+ content: "\f3ff"
+}
+
+.fa-tiktok:before {
+ content: "\e07b"
+}
+
+.fa-times:before {
+ content: "\f00d"
+}
+
+.fa-times-circle:before {
+ content: "\f057"
+}
+
+.fa-tint:before {
+ content: "\f043"
+}
+
+.fa-tint-slash:before {
+ content: "\f5c7"
+}
+
+.fa-tired:before {
+ content: "\f5c8"
+}
+
+.fa-toggle-off:before {
+ content: "\f204"
+}
+
+.fa-toggle-on:before {
+ content: "\f205"
+}
+
+.fa-toilet:before {
+ content: "\f7d8"
+}
+
+.fa-toilet-paper:before {
+ content: "\f71e"
+}
+
+.fa-toilet-paper-slash:before {
+ content: "\e072"
+}
+
+.fa-toolbox:before {
+ content: "\f552"
+}
+
+.fa-tools:before {
+ content: "\f7d9"
+}
+
+.fa-tooth:before {
+ content: "\f5c9"
+}
+
+.fa-torah:before {
+ content: "\f6a0"
+}
+
+.fa-torii-gate:before {
+ content: "\f6a1"
+}
+
+.fa-tractor:before {
+ content: "\f722"
+}
+
+.fa-trade-federation:before {
+ content: "\f513"
+}
+
+.fa-trademark:before {
+ content: "\f25c"
+}
+
+.fa-traffic-light:before {
+ content: "\f637"
+}
+
+.fa-trailer:before {
+ content: "\e041"
+}
+
+.fa-train:before {
+ content: "\f238"
+}
+
+.fa-tram:before {
+ content: "\f7da"
+}
+
+.fa-transgender:before {
+ content: "\f224"
+}
+
+.fa-transgender-alt:before {
+ content: "\f225"
+}
+
+.fa-trash:before {
+ content: "\f1f8"
+}
+
+.fa-trash-alt:before {
+ content: "\f2ed"
+}
+
+.fa-trash-restore:before {
+ content: "\f829"
+}
+
+.fa-trash-restore-alt:before {
+ content: "\f82a"
+}
+
+.fa-tree:before {
+ content: "\f1bb"
+}
+
+.fa-trello:before {
+ content: "\f181"
+}
+
+.fa-tripadvisor:before {
+ content: "\f262"
+}
+
+.fa-trophy:before {
+ content: "\f091"
+}
+
+.fa-truck:before {
+ content: "\f0d1"
+}
+
+.fa-truck-loading:before {
+ content: "\f4de"
+}
+
+.fa-truck-monster:before {
+ content: "\f63b"
+}
+
+.fa-truck-moving:before {
+ content: "\f4df"
+}
+
+.fa-truck-pickup:before {
+ content: "\f63c"
+}
+
+.fa-tshirt:before {
+ content: "\f553"
+}
+
+.fa-tty:before {
+ content: "\f1e4"
+}
+
+.fa-tumblr:before {
+ content: "\f173"
+}
+
+.fa-tumblr-square:before {
+ content: "\f174"
+}
+
+.fa-tv:before {
+ content: "\f26c"
+}
+
+.fa-twitch:before {
+ content: "\f1e8"
+}
+
+.fa-twitter:before {
+ content: "\f099"
+}
+
+.fa-twitter-square:before {
+ content: "\f081"
+}
+
+.fa-typo3:before {
+ content: "\f42b"
+}
+
+.fa-uber:before {
+ content: "\f402"
+}
+
+.fa-ubuntu:before {
+ content: "\f7df"
+}
+
+.fa-uikit:before {
+ content: "\f403"
+}
+
+.fa-umbraco:before {
+ content: "\f8e8"
+}
+
+.fa-umbrella:before {
+ content: "\f0e9"
+}
+
+.fa-umbrella-beach:before {
+ content: "\f5ca"
+}
+
+.fa-uncharted:before {
+ content: "\e084"
+}
+
+.fa-underline:before {
+ content: "\f0cd"
+}
+
+.fa-undo:before {
+ content: "\f0e2"
+}
+
+.fa-undo-alt:before {
+ content: "\f2ea"
+}
+
+.fa-uniregistry:before {
+ content: "\f404"
+}
+
+.fa-unity:before {
+ content: "\e049"
+}
+
+.fa-universal-access:before {
+ content: "\f29a"
+}
+
+.fa-university:before {
+ content: "\f19c"
+}
+
+.fa-unlink:before {
+ content: "\f127"
+}
+
+.fa-unlock:before {
+ content: "\f09c"
+}
+
+.fa-unlock-alt:before {
+ content: "\f13e"
+}
+
+.fa-unsplash:before {
+ content: "\e07c"
+}
+
+.fa-untappd:before {
+ content: "\f405"
+}
+
+.fa-upload:before {
+ content: "\f093"
+}
+
+.fa-ups:before {
+ content: "\f7e0"
+}
+
+.fa-usb:before {
+ content: "\f287"
+}
+
+.fa-user:before {
+ content: "\f007"
+}
+
+.fa-user-alt:before {
+ content: "\f406"
+}
+
+.fa-user-alt-slash:before {
+ content: "\f4fa"
+}
+
+.fa-user-astronaut:before {
+ content: "\f4fb"
+}
+
+.fa-user-check:before {
+ content: "\f4fc"
+}
+
+.fa-user-circle:before {
+ content: "\f2bd"
+}
+
+.fa-user-clock:before {
+ content: "\f4fd"
+}
+
+.fa-user-cog:before {
+ content: "\f4fe"
+}
+
+.fa-user-edit:before {
+ content: "\f4ff"
+}
+
+.fa-user-friends:before {
+ content: "\f500"
+}
+
+.fa-user-graduate:before {
+ content: "\f501"
+}
+
+.fa-user-injured:before {
+ content: "\f728"
+}
+
+.fa-user-lock:before {
+ content: "\f502"
+}
+
+.fa-user-md:before {
+ content: "\f0f0"
+}
+
+.fa-user-minus:before {
+ content: "\f503"
+}
+
+.fa-user-ninja:before {
+ content: "\f504"
+}
+
+.fa-user-nurse:before {
+ content: "\f82f"
+}
+
+.fa-user-plus:before {
+ content: "\f234"
+}
+
+.fa-user-secret:before {
+ content: "\f21b"
+}
+
+.fa-user-shield:before {
+ content: "\f505"
+}
+
+.fa-user-slash:before {
+ content: "\f506"
+}
+
+.fa-user-tag:before {
+ content: "\f507"
+}
+
+.fa-user-tie:before {
+ content: "\f508"
+}
+
+.fa-user-times:before {
+ content: "\f235"
+}
+
+.fa-users:before {
+ content: "\f0c0"
+}
+
+.fa-users-cog:before {
+ content: "\f509"
+}
+
+.fa-users-slash:before {
+ content: "\e073"
+}
+
+.fa-usps:before {
+ content: "\f7e1"
+}
+
+.fa-ussunnah:before {
+ content: "\f407"
+}
+
+.fa-utensil-spoon:before {
+ content: "\f2e5"
+}
+
+.fa-utensils:before {
+ content: "\f2e7"
+}
+
+.fa-vaadin:before {
+ content: "\f408"
+}
+
+.fa-vector-square:before {
+ content: "\f5cb"
+}
+
+.fa-venus:before {
+ content: "\f221"
+}
+
+.fa-venus-double:before {
+ content: "\f226"
+}
+
+.fa-venus-mars:before {
+ content: "\f228"
+}
+
+.fa-vest:before {
+ content: "\e085"
+}
+
+.fa-vest-patches:before {
+ content: "\e086"
+}
+
+.fa-viacoin:before {
+ content: "\f237"
+}
+
+.fa-viadeo:before {
+ content: "\f2a9"
+}
+
+.fa-viadeo-square:before {
+ content: "\f2aa"
+}
+
+.fa-vial:before {
+ content: "\f492"
+}
+
+.fa-vials:before {
+ content: "\f493"
+}
+
+.fa-viber:before {
+ content: "\f409"
+}
+
+.fa-video:before {
+ content: "\f03d"
+}
+
+.fa-video-slash:before {
+ content: "\f4e2"
+}
+
+.fa-vihara:before {
+ content: "\f6a7"
+}
+
+.fa-vimeo:before {
+ content: "\f40a"
+}
+
+.fa-vimeo-square:before {
+ content: "\f194"
+}
+
+.fa-vimeo-v:before {
+ content: "\f27d"
+}
+
+.fa-vine:before {
+ content: "\f1ca"
+}
+
+.fa-virus:before {
+ content: "\e074"
+}
+
+.fa-virus-slash:before {
+ content: "\e075"
+}
+
+.fa-viruses:before {
+ content: "\e076"
+}
+
+.fa-vk:before {
+ content: "\f189"
+}
+
+.fa-vnv:before {
+ content: "\f40b"
+}
+
+.fa-voicemail:before {
+ content: "\f897"
+}
+
+.fa-volleyball-ball:before {
+ content: "\f45f"
+}
+
+.fa-volume-down:before {
+ content: "\f027"
+}
+
+.fa-volume-mute:before {
+ content: "\f6a9"
+}
+
+.fa-volume-off:before {
+ content: "\f026"
+}
+
+.fa-volume-up:before {
+ content: "\f028"
+}
+
+.fa-vote-yea:before {
+ content: "\f772"
+}
+
+.fa-vr-cardboard:before {
+ content: "\f729"
+}
+
+.fa-vuejs:before {
+ content: "\f41f"
+}
+
+.fa-walking:before {
+ content: "\f554"
+}
+
+.fa-wallet:before {
+ content: "\f555"
+}
+
+.fa-warehouse:before {
+ content: "\f494"
+}
+
+.fa-watchman-monitoring:before {
+ content: "\e087"
+}
+
+.fa-water:before {
+ content: "\f773"
+}
+
+.fa-wave-square:before {
+ content: "\f83e"
+}
+
+.fa-waze:before {
+ content: "\f83f"
+}
+
+.fa-weebly:before {
+ content: "\f5cc"
+}
+
+.fa-weibo:before {
+ content: "\f18a"
+}
+
+.fa-weight:before {
+ content: "\f496"
+}
+
+.fa-weight-hanging:before {
+ content: "\f5cd"
+}
+
+.fa-weixin:before {
+ content: "\f1d7"
+}
+
+.fa-whatsapp:before {
+ content: "\f232"
+}
+
+.fa-whatsapp-square:before {
+ content: "\f40c"
+}
+
+.fa-wheelchair:before {
+ content: "\f193"
+}
+
+.fa-whmcs:before {
+ content: "\f40d"
+}
+
+.fa-wifi:before {
+ content: "\f1eb"
+}
+
+.fa-wikipedia-w:before {
+ content: "\f266"
+}
+
+.fa-wind:before {
+ content: "\f72e"
+}
+
+.fa-window-close:before {
+ content: "\f410"
+}
+
+.fa-window-maximize:before {
+ content: "\f2d0"
+}
+
+.fa-window-minimize:before {
+ content: "\f2d1"
+}
+
+.fa-window-restore:before {
+ content: "\f2d2"
+}
+
+.fa-windows:before {
+ content: "\f17a"
+}
+
+.fa-wine-bottle:before {
+ content: "\f72f"
+}
+
+.fa-wine-glass:before {
+ content: "\f4e3"
+}
+
+.fa-wine-glass-alt:before {
+ content: "\f5ce"
+}
+
+.fa-wix:before {
+ content: "\f5cf"
+}
+
+.fa-wizards-of-the-coast:before {
+ content: "\f730"
+}
+
+.fa-wodu:before {
+ content: "\e088"
+}
+
+.fa-wolf-pack-battalion:before {
+ content: "\f514"
+}
+
+.fa-won-sign:before {
+ content: "\f159"
+}
+
+.fa-wordpress:before {
+ content: "\f19a"
+}
+
+.fa-wordpress-simple:before {
+ content: "\f411"
+}
+
+.fa-wpbeginner:before {
+ content: "\f297"
+}
+
+.fa-wpexplorer:before {
+ content: "\f2de"
+}
+
+.fa-wpforms:before {
+ content: "\f298"
+}
+
+.fa-wpressr:before {
+ content: "\f3e4"
+}
+
+.fa-wrench:before {
+ content: "\f0ad"
+}
+
+.fa-x-ray:before {
+ content: "\f497"
+}
+
+.fa-xbox:before {
+ content: "\f412"
+}
+
+.fa-xing:before {
+ content: "\f168"
+}
+
+.fa-xing-square:before {
+ content: "\f169"
+}
+
+.fa-y-combinator:before {
+ content: "\f23b"
+}
+
+.fa-yahoo:before {
+ content: "\f19e"
+}
+
+.fa-yammer:before {
+ content: "\f840"
+}
+
+.fa-yandex:before {
+ content: "\f413"
+}
+
+.fa-yandex-international:before {
+ content: "\f414"
+}
+
+.fa-yarn:before {
+ content: "\f7e3"
+}
+
+.fa-yelp:before {
+ content: "\f1e9"
+}
+
+.fa-yen-sign:before {
+ content: "\f157"
+}
+
+.fa-yin-yang:before {
+ content: "\f6ad"
+}
+
+.fa-yoast:before {
+ content: "\f2b1"
+}
+
+.fa-youtube:before {
+ content: "\f167"
+}
+
+.fa-youtube-square:before {
+ content: "\f431"
+}
+
+.fa-zhihu:before {
+ content: "\f63f"
+}
+
+.sr-only {
+ border: 0;
+ clip: rect(0, 0, 0, 0);
+ height: 1px;
+ margin: -1px;
+ overflow: hidden;
+ padding: 0;
+ position: absolute;
+ width: 1px
+}
+
+.sr-only-focusable:active, .sr-only-focusable:focus {
+ clip: auto;
+ height: auto;
+ margin: 0;
+ overflow: visible;
+ position: static;
+ width: auto
+}
+
+/*!
+ * Font Awesome Free 5.15.1 by @fontawesome - https://fontawesome.com
+ * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
+ */
+@font-face {
+ font-family: Font Awesome\ 5 Free;
+ font-style: normal;
+ font-weight: 400;
+ font-display: block;
+ src: url(../fonts/fa-regular-400.eot);
+ src: url(../fonts/fa-regular-400.eot?#iefix) format("embedded-opentype"), url(../fonts/fa-regular-400.woff2) format("woff2"), url(../fonts/fa-regular-400.woff) format("woff"), url(../fonts/fa-regular-400.ttf) format("truetype"), url(../fonts/fa-regular-400.svg#fontawesome) format("svg")
+}
+
+.far {
+ font-weight: 400
+}
+
+/*!
+ * Font Awesome Free 5.15.1 by @fontawesome - https://fontawesome.com
+ * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
+ */
+@font-face {
+ font-family: Font Awesome\ 5 Free;
+ font-style: normal;
+ font-weight: 900;
+ font-display: block;
+ src: url(../fonts/fa-solid-900.eot);
+ src: url(../fonts/fa-solid-900.eot?#iefix) format("embedded-opentype"), url(../fonts/fa-solid-900.woff2) format("woff2"), url(../fonts/fa-solid-900.woff) format("woff"), url(../fonts/fa-solid-900.ttf) format("truetype"), url(../fonts/fa-solid-900.svg#fontawesome) format("svg")
+}
+
+.fa, .far, .fas {
+ font-family: Font Awesome\ 5 Free
+}
+
+.fa, .fas {
+ font-weight: 900
+}
+
+svg {
+ touch-action: none
+}
+
+.jsvmap-zoomin, .jsvmap-zoomout, image, text {
+ -ms-user-select: none;
+ -webkit-user-select: none;
+ user-select: none
+}
+
+.jsvmap-container {
+ touch-action: none;
+ position: relative;
+ overflow: hidden;
+ height: 100%;
+ width: 100%
+}
+
+.jsvmap-tooltip {
+ background-color: #5c5cff;
+ font-family: sans-serif, Verdana;
+ font-size: smaller;
+ box-shadow: 1px 2px 12px rgba(0, 0, 0, .2);
+ padding: 3px 5px;
+ display: none
+}
+
+.jsvmap-tooltip, .jsvmap-zoom-btn {
+ border-radius: 3px;
+ position: absolute;
+ color: #fff
+}
+
+.jsvmap-zoom-btn {
+ background-color: #292929;
+ padding: 3px;
+ box-sizing: border-box;
+ line-height: 10px;
+ cursor: pointer;
+ height: 15px;
+ width: 15px;
+ left: 10px
+}
+
+.jsvmap-zoom-btn.jsvmap-zoomout {
+ top: 30px
+}
+
+.jsvmap-zoom-btn.jsvmap-zoomin {
+ top: 10px
+}
+
+.jsvmap-series-container {
+ right: 15px;
+ position: absolute
+}
+
+.jsvmap-series-container.jsvmap-series-h {
+ bottom: 15px
+}
+
+.jsvmap-series-container.jsvmap-series-v {
+ top: 15px
+}
+
+.jsvmap-series-container .jsvmap-legend {
+ background-color: #fff;
+ border: 1px solid #e6e6e6;
+ margin-left: 15px;
+ border-radius: 3px;
+ padding: .5rem;
+ float: left
+}
+
+.jsvmap-series-container .jsvmap-legend .jsvmap-legend-title {
+ border-bottom: 1px solid #e6e6e6;
+ padding-bottom: 3px;
+ margin-bottom: 7px;
+ text-align: left
+}
+
+.jsvmap-series-container .jsvmap-legend .jsvmap-legend-inner {
+ overflow: hidden
+}
+
+.jsvmap-series-container .jsvmap-legend .jsvmap-legend-inner .jsvmap-legend-tick {
+ margin-top: 10px;
+ min-width: 40px
+}
+
+.jsvmap-series-container .jsvmap-legend .jsvmap-legend-inner .jsvmap-legend-tick .jsvmap-legend-tick-sample {
+ border-radius: 4px;
+ margin: 4px auto;
+ height: 20px;
+ width: 20px
+}
+
+.jsvmap-series-container .jsvmap-legend .jsvmap-legend-inner .jsvmap-legend-tick .jsvmap-legend-tick-text {
+ margin-top: 3px;
+ font-size: 12px;
+ text-align: center
+}
+
+[data-simplebar] {
+ position: relative;
+ flex-direction: column;
+ flex-wrap: wrap;
+ justify-content: flex-start;
+ align-content: flex-start;
+ align-items: flex-start
+}
+
+.simplebar-wrapper {
+ overflow: hidden;
+ width: inherit;
+ height: inherit;
+ max-width: inherit;
+ max-height: inherit
+}
+
+.simplebar-mask {
+ direction: inherit;
+ overflow: hidden;
+ width: auto !important;
+ height: auto !important;
+ z-index: 0
+}
+
+.simplebar-mask, .simplebar-offset {
+ position: absolute;
+ padding: 0;
+ margin: 0;
+ left: 0;
+ top: 0;
+ bottom: 0;
+ right: 0
+}
+
+.simplebar-offset {
+ direction: inherit !important;
+ box-sizing: inherit !important;
+ resize: none !important;
+ -webkit-overflow-scrolling: touch
+}
+
+.simplebar-content-wrapper {
+ direction: inherit;
+ box-sizing: border-box !important;
+ position: relative;
+ display: block;
+ height: 100%;
+ width: auto;
+ max-width: 100%;
+ max-height: 100%;
+ scrollbar-width: none;
+ -ms-overflow-style: none
+}
+
+.simplebar-content-wrapper::-webkit-scrollbar, .simplebar-hide-scrollbar::-webkit-scrollbar {
+ width: 0;
+ height: 0
+}
+
+.simplebar-content:after, .simplebar-content:before {
+ content: " ";
+ display: table
+}
+
+.simplebar-placeholder {
+ max-height: 100%;
+ max-width: 100%;
+ width: 100%;
+ pointer-events: none
+}
+
+.simplebar-height-auto-observer-wrapper {
+ box-sizing: inherit !important;
+ height: 100%;
+ width: 100%;
+ max-width: 1px;
+ position: relative;
+ float: left;
+ max-height: 1px;
+ overflow: hidden;
+ z-index: -1;
+ padding: 0;
+ margin: 0;
+ pointer-events: none;
+ flex-grow: inherit;
+ flex-shrink: 0;
+ flex-basis: 0
+}
+
+.simplebar-height-auto-observer {
+ box-sizing: inherit;
+ display: block;
+ opacity: 0;
+ top: 0;
+ left: 0;
+ height: 1000%;
+ width: 1000%;
+ min-height: 1px;
+ min-width: 1px;
+ z-index: -1
+}
+
+.simplebar-height-auto-observer, .simplebar-track {
+ position: absolute;
+ overflow: hidden;
+ pointer-events: none
+}
+
+.simplebar-track {
+ z-index: 1;
+ right: 0;
+ bottom: 0
+}
+
+[data-simplebar].simplebar-dragging .simplebar-content {
+ pointer-events: none;
+ -ms-user-select: none;
+ user-select: none;
+ -webkit-user-select: none
+}
+
+[data-simplebar].simplebar-dragging .simplebar-track {
+ pointer-events: all
+}
+
+.simplebar-scrollbar {
+ position: absolute;
+ left: 0;
+ right: 0;
+ min-height: 10px
+}
+
+.simplebar-scrollbar:before {
+ position: absolute;
+ content: "";
+ background: #000;
+ border-radius: 7px;
+ left: 2px;
+ right: 2px;
+ opacity: 0;
+ transition: opacity .2s linear
+}
+
+.simplebar-scrollbar.simplebar-visible:before {
+ opacity: .5;
+ transition: opacity 0s linear
+}
+
+.simplebar-track.simplebar-vertical {
+ top: 0;
+ width: 11px
+}
+
+.simplebar-track.simplebar-vertical .simplebar-scrollbar:before {
+ top: 2px;
+ bottom: 2px
+}
+
+.simplebar-track.simplebar-horizontal {
+ left: 0;
+ height: 11px
+}
+
+.simplebar-track.simplebar-horizontal .simplebar-scrollbar:before {
+ height: 100%;
+ left: 2px;
+ right: 2px
+}
+
+.simplebar-track.simplebar-horizontal .simplebar-scrollbar {
+ right: auto;
+ left: 0;
+ top: 2px;
+ height: 7px;
+ min-height: 0;
+ min-width: 10px;
+ width: auto
+}
+
+[data-simplebar-direction=rtl] .simplebar-track.simplebar-vertical {
+ right: auto;
+ left: 0
+}
+
+.hs-dummy-scrollbar-size {
+ direction: rtl;
+ position: fixed;
+ opacity: 0;
+ visibility: hidden;
+ height: 500px;
+ width: 500px;
+ overflow-y: hidden;
+ overflow-x: scroll
+}
+
+.simplebar-hide-scrollbar {
+ position: fixed;
+ left: 0;
+ visibility: hidden;
+ overflow-y: scroll;
+ scrollbar-width: none;
+ -ms-overflow-style: none
+}
+
+.flatpickr-calendar {
+ background: transparent;
+ opacity: 0;
+ display: none;
+ text-align: center;
+ visibility: hidden;
+ padding: 0;
+ animation: none;
+ direction: ltr;
+ border: 0;
+ font-size: 14px;
+ line-height: 24px;
+ border-radius: 5px;
+ position: absolute;
+ width: 307.875px;
+ box-sizing: border-box;
+ touch-action: manipulation;
+ background: #fff;
+ box-shadow: 1px 0 0 #e6e6e6, -1px 0 0 #e6e6e6, 0 1px 0 #e6e6e6, 0 -1px 0 #e6e6e6, 0 3px 13px rgba(0, 0, 0, .08)
+}
+
+.flatpickr-calendar.inline, .flatpickr-calendar.open {
+ opacity: 1;
+ max-height: 640px;
+ visibility: visible
+}
+
+.flatpickr-calendar.open {
+ display: inline-block;
+ z-index: 99999
+}
+
+.flatpickr-calendar.animate.open {
+ animation: fpFadeInDown .3s cubic-bezier(.23, 1, .32, 1)
+}
+
+.flatpickr-calendar.inline {
+ display: block;
+ position: relative;
+ top: 2px
+}
+
+.flatpickr-calendar.static {
+ position: absolute;
+ top: calc(100% + 2px)
+}
+
+.flatpickr-calendar.static.open {
+ z-index: 999;
+ display: block
+}
+
+.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7) {
+ box-shadow: none !important
+}
+
+.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1) {
+ box-shadow: -2px 0 0 #e6e6e6, 5px 0 0 #e6e6e6
+}
+
+.flatpickr-calendar .hasTime .dayContainer, .flatpickr-calendar .hasWeeks .dayContainer {
+ border-bottom: 0;
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 0
+}
+
+.flatpickr-calendar .hasWeeks .dayContainer {
+ border-left: 0
+}
+
+.flatpickr-calendar.hasTime .flatpickr-time {
+ height: 40px;
+ border-top: 1px solid #e6e6e6
+}
+
+.flatpickr-calendar.noCalendar.hasTime .flatpickr-time {
+ height: auto
+}
+
+.flatpickr-calendar:after, .flatpickr-calendar:before {
+ position: absolute;
+ display: block;
+ pointer-events: none;
+ border: solid transparent;
+ content: "";
+ height: 0;
+ width: 0;
+ left: 22px
+}
+
+.flatpickr-calendar.arrowRight:after, .flatpickr-calendar.arrowRight:before, .flatpickr-calendar.rightMost:after, .flatpickr-calendar.rightMost:before {
+ left: auto;
+ right: 22px
+}
+
+.flatpickr-calendar.arrowCenter:after, .flatpickr-calendar.arrowCenter:before {
+ left: 50%;
+ right: 50%
+}
+
+.flatpickr-calendar:before {
+ border-width: 5px;
+ margin: 0 -5px
+}
+
+.flatpickr-calendar:after {
+ border-width: 4px;
+ margin: 0 -4px
+}
+
+.flatpickr-calendar.arrowTop:after, .flatpickr-calendar.arrowTop:before {
+ bottom: 100%
+}
+
+.flatpickr-calendar.arrowTop:before {
+ border-bottom-color: #e6e6e6
+}
+
+.flatpickr-calendar.arrowTop:after {
+ border-bottom-color: #fff
+}
+
+.flatpickr-calendar.arrowBottom:after, .flatpickr-calendar.arrowBottom:before {
+ top: 100%
+}
+
+.flatpickr-calendar.arrowBottom:before {
+ border-top-color: #e6e6e6
+}
+
+.flatpickr-calendar.arrowBottom:after {
+ border-top-color: #fff
+}
+
+.flatpickr-calendar:focus {
+ outline: 0
+}
+
+.flatpickr-wrapper {
+ position: relative;
+ display: inline-block
+}
+
+.flatpickr-months {
+ display: flex
+}
+
+.flatpickr-months .flatpickr-month {
+ background: transparent;
+ color: rgba(0, 0, 0, .9);
+ fill: rgba(0, 0, 0, .9);
+ height: 34px;
+ line-height: 1;
+ text-align: center;
+ position: relative;
+ -webkit-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ overflow: hidden;
+ flex: 1
+}
+
+.flatpickr-months .flatpickr-next-month, .flatpickr-months .flatpickr-prev-month {
+ text-decoration: none;
+ cursor: pointer;
+ position: absolute;
+ top: 0;
+ height: 34px;
+ padding: 10px;
+ z-index: 3;
+ color: rgba(0, 0, 0, .9);
+ fill: rgba(0, 0, 0, .9)
+}
+
+.flatpickr-months .flatpickr-next-month.flatpickr-disabled, .flatpickr-months .flatpickr-prev-month.flatpickr-disabled {
+ display: none
+}
+
+.flatpickr-months .flatpickr-next-month i, .flatpickr-months .flatpickr-prev-month i {
+ position: relative
+}
+
+.flatpickr-months .flatpickr-next-month.flatpickr-prev-month, .flatpickr-months .flatpickr-prev-month.flatpickr-prev-month {
+ left: 0
+}
+
+.flatpickr-months .flatpickr-next-month.flatpickr-next-month, .flatpickr-months .flatpickr-prev-month.flatpickr-next-month {
+ right: 0
+}
+
+.flatpickr-months .flatpickr-next-month:hover, .flatpickr-months .flatpickr-prev-month:hover {
+ color: #959ea9
+}
+
+.flatpickr-months .flatpickr-next-month:hover svg, .flatpickr-months .flatpickr-prev-month:hover svg {
+ fill: #f64747
+}
+
+.flatpickr-months .flatpickr-next-month svg, .flatpickr-months .flatpickr-prev-month svg {
+ width: 14px;
+ height: 14px
+}
+
+.flatpickr-months .flatpickr-next-month svg path, .flatpickr-months .flatpickr-prev-month svg path {
+ transition: fill .1s;
+ fill: inherit
+}
+
+.numInputWrapper {
+ position: relative;
+ height: auto
+}
+
+.numInputWrapper input, .numInputWrapper span {
+ display: inline-block
+}
+
+.numInputWrapper input {
+ width: 100%
+}
+
+.numInputWrapper input::-ms-clear {
+ display: none
+}
+
+.numInputWrapper input::-webkit-inner-spin-button, .numInputWrapper input::-webkit-outer-spin-button {
+ margin: 0;
+ -webkit-appearance: none
+}
+
+.numInputWrapper span {
+ position: absolute;
+ right: 0;
+ width: 14px;
+ padding: 0 4px 0 2px;
+ height: 50%;
+ line-height: 50%;
+ opacity: 0;
+ cursor: pointer;
+ border: 1px solid rgba(57, 57, 57, .15);
+ box-sizing: border-box
+}
+
+.numInputWrapper span:hover {
+ background: rgba(0, 0, 0, .1)
+}
+
+.numInputWrapper span:active {
+ background: rgba(0, 0, 0, .2)
+}
+
+.numInputWrapper span:after {
+ display: block;
+ content: "";
+ position: absolute
+}
+
+.numInputWrapper span.arrowUp {
+ top: 0;
+ border-bottom: 0
+}
+
+.numInputWrapper span.arrowUp:after {
+ border-left: 4px solid transparent;
+ border-right: 4px solid transparent;
+ border-bottom: 4px solid rgba(57, 57, 57, .6);
+ top: 26%
+}
+
+.numInputWrapper span.arrowDown {
+ top: 50%
+}
+
+.numInputWrapper span.arrowDown:after {
+ border-left: 4px solid transparent;
+ border-right: 4px solid transparent;
+ border-top: 4px solid rgba(57, 57, 57, .6);
+ top: 40%
+}
+
+.numInputWrapper span svg {
+ width: inherit;
+ height: auto
+}
+
+.numInputWrapper span svg path {
+ fill: rgba(0, 0, 0, .5)
+}
+
+.numInputWrapper:hover {
+ background: rgba(0, 0, 0, .05)
+}
+
+.numInputWrapper:hover span {
+ opacity: 1
+}
diff --git a/frontend/src/assets/css/toolshed.scss b/frontend/src/assets/css/toolshed.scss
new file mode 100644
index 0000000..e69de29
diff --git a/frontend/src/assets/fonts/Inter-Black.woff b/frontend/src/assets/fonts/Inter-Black.woff
new file mode 100644
index 0000000..1b7a081
Binary files /dev/null and b/frontend/src/assets/fonts/Inter-Black.woff differ
diff --git a/frontend/src/assets/fonts/Inter-Black.woff2 b/frontend/src/assets/fonts/Inter-Black.woff2
new file mode 100644
index 0000000..1db877f
Binary files /dev/null and b/frontend/src/assets/fonts/Inter-Black.woff2 differ
diff --git a/frontend/src/assets/fonts/Inter-BlackItalic.woff b/frontend/src/assets/fonts/Inter-BlackItalic.woff
new file mode 100644
index 0000000..98f5391
Binary files /dev/null and b/frontend/src/assets/fonts/Inter-BlackItalic.woff differ
diff --git a/frontend/src/assets/fonts/Inter-BlackItalic.woff2 b/frontend/src/assets/fonts/Inter-BlackItalic.woff2
new file mode 100644
index 0000000..831279a
Binary files /dev/null and b/frontend/src/assets/fonts/Inter-BlackItalic.woff2 differ
diff --git a/frontend/src/assets/fonts/Inter-Bold.woff b/frontend/src/assets/fonts/Inter-Bold.woff
new file mode 100644
index 0000000..4b05629
Binary files /dev/null and b/frontend/src/assets/fonts/Inter-Bold.woff differ
diff --git a/frontend/src/assets/fonts/Inter-Bold.woff2 b/frontend/src/assets/fonts/Inter-Bold.woff2
new file mode 100644
index 0000000..e372976
Binary files /dev/null and b/frontend/src/assets/fonts/Inter-Bold.woff2 differ
diff --git a/frontend/src/assets/fonts/Inter-BoldItalic.woff b/frontend/src/assets/fonts/Inter-BoldItalic.woff
new file mode 100644
index 0000000..6792723
Binary files /dev/null and b/frontend/src/assets/fonts/Inter-BoldItalic.woff differ
diff --git a/frontend/src/assets/fonts/Inter-BoldItalic.woff2 b/frontend/src/assets/fonts/Inter-BoldItalic.woff2
new file mode 100644
index 0000000..c2e8502
Binary files /dev/null and b/frontend/src/assets/fonts/Inter-BoldItalic.woff2 differ
diff --git a/frontend/src/assets/fonts/Inter-ExtraBold.woff b/frontend/src/assets/fonts/Inter-ExtraBold.woff
new file mode 100644
index 0000000..c2c1355
Binary files /dev/null and b/frontend/src/assets/fonts/Inter-ExtraBold.woff differ
diff --git a/frontend/src/assets/fonts/Inter-ExtraBold.woff2 b/frontend/src/assets/fonts/Inter-ExtraBold.woff2
new file mode 100644
index 0000000..125d981
Binary files /dev/null and b/frontend/src/assets/fonts/Inter-ExtraBold.woff2 differ
diff --git a/frontend/src/assets/fonts/Inter-ExtraBoldItalic.woff b/frontend/src/assets/fonts/Inter-ExtraBoldItalic.woff
new file mode 100644
index 0000000..0cde9dc
Binary files /dev/null and b/frontend/src/assets/fonts/Inter-ExtraBoldItalic.woff differ
diff --git a/frontend/src/assets/fonts/Inter-ExtraBoldItalic.woff2 b/frontend/src/assets/fonts/Inter-ExtraBoldItalic.woff2
new file mode 100644
index 0000000..b8c0987
Binary files /dev/null and b/frontend/src/assets/fonts/Inter-ExtraBoldItalic.woff2 differ
diff --git a/frontend/src/assets/fonts/Inter-ExtraLight-BETA.woff b/frontend/src/assets/fonts/Inter-ExtraLight-BETA.woff
new file mode 100644
index 0000000..7d5eb03
Binary files /dev/null and b/frontend/src/assets/fonts/Inter-ExtraLight-BETA.woff differ
diff --git a/frontend/src/assets/fonts/Inter-ExtraLight-BETA.woff2 b/frontend/src/assets/fonts/Inter-ExtraLight-BETA.woff2
new file mode 100644
index 0000000..9a40440
Binary files /dev/null and b/frontend/src/assets/fonts/Inter-ExtraLight-BETA.woff2 differ
diff --git a/frontend/src/assets/fonts/Inter-ExtraLightItalic-BETA.woff b/frontend/src/assets/fonts/Inter-ExtraLightItalic-BETA.woff
new file mode 100644
index 0000000..3e039a7
Binary files /dev/null and b/frontend/src/assets/fonts/Inter-ExtraLightItalic-BETA.woff differ
diff --git a/frontend/src/assets/fonts/Inter-ExtraLightItalic-BETA.woff2 b/frontend/src/assets/fonts/Inter-ExtraLightItalic-BETA.woff2
new file mode 100644
index 0000000..0ac33f9
Binary files /dev/null and b/frontend/src/assets/fonts/Inter-ExtraLightItalic-BETA.woff2 differ
diff --git a/frontend/src/assets/fonts/Inter-Italic.woff b/frontend/src/assets/fonts/Inter-Italic.woff
new file mode 100644
index 0000000..0444e7f
Binary files /dev/null and b/frontend/src/assets/fonts/Inter-Italic.woff differ
diff --git a/frontend/src/assets/fonts/Inter-Italic.woff2 b/frontend/src/assets/fonts/Inter-Italic.woff2
new file mode 100644
index 0000000..9f134e4
Binary files /dev/null and b/frontend/src/assets/fonts/Inter-Italic.woff2 differ
diff --git a/frontend/src/assets/fonts/Inter-Light-BETA.woff b/frontend/src/assets/fonts/Inter-Light-BETA.woff
new file mode 100644
index 0000000..8c0556c
Binary files /dev/null and b/frontend/src/assets/fonts/Inter-Light-BETA.woff differ
diff --git a/frontend/src/assets/fonts/Inter-Light-BETA.woff2 b/frontend/src/assets/fonts/Inter-Light-BETA.woff2
new file mode 100644
index 0000000..e5a1561
Binary files /dev/null and b/frontend/src/assets/fonts/Inter-Light-BETA.woff2 differ
diff --git a/frontend/src/assets/fonts/Inter-LightItalic-BETA.woff b/frontend/src/assets/fonts/Inter-LightItalic-BETA.woff
new file mode 100644
index 0000000..56f9a3f
Binary files /dev/null and b/frontend/src/assets/fonts/Inter-LightItalic-BETA.woff differ
diff --git a/frontend/src/assets/fonts/Inter-LightItalic-BETA.woff2 b/frontend/src/assets/fonts/Inter-LightItalic-BETA.woff2
new file mode 100644
index 0000000..2fe1b5f
Binary files /dev/null and b/frontend/src/assets/fonts/Inter-LightItalic-BETA.woff2 differ
diff --git a/frontend/src/assets/fonts/Inter-Medium.woff b/frontend/src/assets/fonts/Inter-Medium.woff
new file mode 100644
index 0000000..b7561d0
Binary files /dev/null and b/frontend/src/assets/fonts/Inter-Medium.woff differ
diff --git a/frontend/src/assets/fonts/Inter-Medium.woff2 b/frontend/src/assets/fonts/Inter-Medium.woff2
new file mode 100644
index 0000000..66528cd
Binary files /dev/null and b/frontend/src/assets/fonts/Inter-Medium.woff2 differ
diff --git a/frontend/src/assets/fonts/Inter-MediumItalic.woff b/frontend/src/assets/fonts/Inter-MediumItalic.woff
new file mode 100644
index 0000000..e0ac074
Binary files /dev/null and b/frontend/src/assets/fonts/Inter-MediumItalic.woff differ
diff --git a/frontend/src/assets/fonts/Inter-MediumItalic.woff2 b/frontend/src/assets/fonts/Inter-MediumItalic.woff2
new file mode 100644
index 0000000..f39af2e
Binary files /dev/null and b/frontend/src/assets/fonts/Inter-MediumItalic.woff2 differ
diff --git a/frontend/src/assets/fonts/Inter-Regular.woff b/frontend/src/assets/fonts/Inter-Regular.woff
new file mode 100644
index 0000000..ea75a90
Binary files /dev/null and b/frontend/src/assets/fonts/Inter-Regular.woff differ
diff --git a/frontend/src/assets/fonts/Inter-Regular.woff2 b/frontend/src/assets/fonts/Inter-Regular.woff2
new file mode 100644
index 0000000..d015841
Binary files /dev/null and b/frontend/src/assets/fonts/Inter-Regular.woff2 differ
diff --git a/frontend/src/assets/fonts/Inter-SemiBold.woff b/frontend/src/assets/fonts/Inter-SemiBold.woff
new file mode 100644
index 0000000..26b1713
Binary files /dev/null and b/frontend/src/assets/fonts/Inter-SemiBold.woff differ
diff --git a/frontend/src/assets/fonts/Inter-SemiBold.woff2 b/frontend/src/assets/fonts/Inter-SemiBold.woff2
new file mode 100644
index 0000000..c092053
Binary files /dev/null and b/frontend/src/assets/fonts/Inter-SemiBold.woff2 differ
diff --git a/frontend/src/assets/fonts/Inter-SemiBoldItalic.woff b/frontend/src/assets/fonts/Inter-SemiBoldItalic.woff
new file mode 100644
index 0000000..1bd17a1
Binary files /dev/null and b/frontend/src/assets/fonts/Inter-SemiBoldItalic.woff differ
diff --git a/frontend/src/assets/fonts/Inter-SemiBoldItalic.woff2 b/frontend/src/assets/fonts/Inter-SemiBoldItalic.woff2
new file mode 100644
index 0000000..3c67c54
Binary files /dev/null and b/frontend/src/assets/fonts/Inter-SemiBoldItalic.woff2 differ
diff --git a/frontend/src/assets/fonts/Inter-Thin-BETA.woff b/frontend/src/assets/fonts/Inter-Thin-BETA.woff
new file mode 100644
index 0000000..42be3bc
Binary files /dev/null and b/frontend/src/assets/fonts/Inter-Thin-BETA.woff differ
diff --git a/frontend/src/assets/fonts/Inter-Thin-BETA.woff2 b/frontend/src/assets/fonts/Inter-Thin-BETA.woff2
new file mode 100644
index 0000000..3b35a12
Binary files /dev/null and b/frontend/src/assets/fonts/Inter-Thin-BETA.woff2 differ
diff --git a/frontend/src/assets/fonts/Inter-ThinItalic-BETA.woff b/frontend/src/assets/fonts/Inter-ThinItalic-BETA.woff
new file mode 100644
index 0000000..9addfb6
Binary files /dev/null and b/frontend/src/assets/fonts/Inter-ThinItalic-BETA.woff differ
diff --git a/frontend/src/assets/fonts/Inter-ThinItalic-BETA.woff2 b/frontend/src/assets/fonts/Inter-ThinItalic-BETA.woff2
new file mode 100644
index 0000000..c8ecf3a
Binary files /dev/null and b/frontend/src/assets/fonts/Inter-ThinItalic-BETA.woff2 differ
diff --git a/frontend/src/assets/fonts/Inter-italic.var.woff2 b/frontend/src/assets/fonts/Inter-italic.var.woff2
new file mode 100644
index 0000000..2300488
Binary files /dev/null and b/frontend/src/assets/fonts/Inter-italic.var.woff2 differ
diff --git a/frontend/src/assets/fonts/Inter-upright.var.woff2 b/frontend/src/assets/fonts/Inter-upright.var.woff2
new file mode 100644
index 0000000..37d9900
Binary files /dev/null and b/frontend/src/assets/fonts/Inter-upright.var.woff2 differ
diff --git a/frontend/src/assets/fonts/Inter.var.woff2 b/frontend/src/assets/fonts/Inter.var.woff2
new file mode 100644
index 0000000..1c91452
Binary files /dev/null and b/frontend/src/assets/fonts/Inter.var.woff2 differ
diff --git a/frontend/src/assets/fonts/fa-brands-400.eot b/frontend/src/assets/fonts/fa-brands-400.eot
new file mode 100644
index 0000000..e4ccce2
Binary files /dev/null and b/frontend/src/assets/fonts/fa-brands-400.eot differ
diff --git a/frontend/src/assets/fonts/fa-brands-400.svg b/frontend/src/assets/fonts/fa-brands-400.svg
new file mode 100644
index 0000000..eb0f26f
--- /dev/null
+++ b/frontend/src/assets/fonts/fa-brands-400.svg
@@ -0,0 +1,3570 @@
+
+
+
+
+
+Created by FontForge 20190801 at Tue Feb 4 18:05:39 2020
+ By Robert Madole
+Copyright (c) Font Awesome
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/frontend/src/assets/fonts/fa-brands-400.ttf b/frontend/src/assets/fonts/fa-brands-400.ttf
new file mode 100644
index 0000000..08622a3
Binary files /dev/null and b/frontend/src/assets/fonts/fa-brands-400.ttf differ
diff --git a/frontend/src/assets/fonts/fa-brands-400.woff b/frontend/src/assets/fonts/fa-brands-400.woff
new file mode 100644
index 0000000..a43870c
Binary files /dev/null and b/frontend/src/assets/fonts/fa-brands-400.woff differ
diff --git a/frontend/src/assets/fonts/fa-brands-400.woff2 b/frontend/src/assets/fonts/fa-brands-400.woff2
new file mode 100644
index 0000000..3c5189d
Binary files /dev/null and b/frontend/src/assets/fonts/fa-brands-400.woff2 differ
diff --git a/frontend/src/assets/fonts/fa-regular-400.eot b/frontend/src/assets/fonts/fa-regular-400.eot
new file mode 100644
index 0000000..bef9f72
Binary files /dev/null and b/frontend/src/assets/fonts/fa-regular-400.eot differ
diff --git a/frontend/src/assets/fonts/fa-regular-400.svg b/frontend/src/assets/fonts/fa-regular-400.svg
new file mode 100644
index 0000000..bccc256
--- /dev/null
+++ b/frontend/src/assets/fonts/fa-regular-400.svg
@@ -0,0 +1,801 @@
+
+
+
+
+Created by FontForge 20200314 at Mon Oct 5 09:50:45 2020
+ By Robert Madole
+Copyright (c) Font Awesome
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/frontend/src/assets/fonts/fa-regular-400.ttf b/frontend/src/assets/fonts/fa-regular-400.ttf
new file mode 100644
index 0000000..659527a
Binary files /dev/null and b/frontend/src/assets/fonts/fa-regular-400.ttf differ
diff --git a/frontend/src/assets/fonts/fa-regular-400.woff b/frontend/src/assets/fonts/fa-regular-400.woff
new file mode 100644
index 0000000..31f44b2
Binary files /dev/null and b/frontend/src/assets/fonts/fa-regular-400.woff differ
diff --git a/frontend/src/assets/fonts/fa-regular-400.woff2 b/frontend/src/assets/fonts/fa-regular-400.woff2
new file mode 100644
index 0000000..0332a9b
Binary files /dev/null and b/frontend/src/assets/fonts/fa-regular-400.woff2 differ
diff --git a/frontend/src/assets/fonts/fa-solid-900.eot b/frontend/src/assets/fonts/fa-solid-900.eot
new file mode 100644
index 0000000..5da4fa0
Binary files /dev/null and b/frontend/src/assets/fonts/fa-solid-900.eot differ
diff --git a/frontend/src/assets/fonts/fa-solid-900.svg b/frontend/src/assets/fonts/fa-solid-900.svg
new file mode 100644
index 0000000..313b311
--- /dev/null
+++ b/frontend/src/assets/fonts/fa-solid-900.svg
@@ -0,0 +1,5028 @@
+
+
+
+
+Created by FontForge 20200314 at Mon Oct 5 09:50:45 2020
+ By Robert Madole
+Copyright (c) Font Awesome
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/frontend/src/assets/fonts/fa-solid-900.ttf b/frontend/src/assets/fonts/fa-solid-900.ttf
new file mode 100644
index 0000000..e074608
Binary files /dev/null and b/frontend/src/assets/fonts/fa-solid-900.ttf differ
diff --git a/frontend/src/assets/fonts/fa-solid-900.woff b/frontend/src/assets/fonts/fa-solid-900.woff
new file mode 100644
index 0000000..ef6b447
Binary files /dev/null and b/frontend/src/assets/fonts/fa-solid-900.woff differ
diff --git a/frontend/src/assets/fonts/fa-solid-900.woff2 b/frontend/src/assets/fonts/fa-solid-900.woff2
new file mode 100644
index 0000000..120b300
Binary files /dev/null and b/frontend/src/assets/fonts/fa-solid-900.woff2 differ
diff --git a/frontend/src/assets/js/app.js b/frontend/src/assets/js/app.js
new file mode 100644
index 0000000..e32287b
--- /dev/null
+++ b/frontend/src/assets/js/app.js
@@ -0,0 +1,25141 @@
+/*! For license information please see app.js.LICENSE.txt */
+!function (e) {
+ var t = {};
+
+ function n(i) {
+ if (t[i]) return t[i].exports;
+ var a = t[i] = {i: i, l: !1, exports: {}};
+ return e[i].call(a.exports, a, a.exports, n), a.l = !0, a.exports
+ }
+
+ n.m = e, n.c = t, n.d = function (e, t, i) {
+ n.o(e, t) || Object.defineProperty(e, t, {enumerable: !0, get: i})
+ }, n.r = function (e) {
+ "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, {value: "Module"}), Object.defineProperty(e, "__esModule", {value: !0})
+ }, n.t = function (e, t) {
+ if (1 & t && (e = n(e)), 8 & t) return e;
+ if (4 & t && "object" == typeof e && e && e.__esModule) return e;
+ var i = Object.create(null);
+ if (n.r(i), Object.defineProperty(i, "default", {
+ enumerable: !0,
+ value: e
+ }), 2 & t && "string" != typeof e) for (var a in e) n.d(i, a, function (t) {
+ return e[t]
+ }.bind(null, a));
+ return i
+ }, n.n = function (e) {
+ var t = e && e.__esModule ? function () {
+ return e.default
+ } : function () {
+ return e
+ };
+ return n.d(t, "a", t), t
+ }, n.o = function (e, t) {
+ return Object.prototype.hasOwnProperty.call(e, t)
+ }, n.p = "", n(n.s = 304)
+}([function (e, t, n) {
+ (function (e) {
+ e.exports = function () {
+ "use strict";
+ var t, i;
+
+ function a() {
+ return t.apply(null, arguments)
+ }
+
+ function r(e) {
+ t = e
+ }
+
+ function l(e) {
+ return e instanceof Array || "[object Array]" === Object.prototype.toString.call(e)
+ }
+
+ function o(e) {
+ return null != e && "[object Object]" === Object.prototype.toString.call(e)
+ }
+
+ function s(e, t) {
+ return Object.prototype.hasOwnProperty.call(e, t)
+ }
+
+ function d(e) {
+ if (Object.getOwnPropertyNames) return 0 === Object.getOwnPropertyNames(e).length;
+ var t;
+ for (t in e) if (s(e, t)) return !1;
+ return !0
+ }
+
+ function u(e) {
+ return void 0 === e
+ }
+
+ function c(e) {
+ return "number" == typeof e || "[object Number]" === Object.prototype.toString.call(e)
+ }
+
+ function h(e) {
+ return e instanceof Date || "[object Date]" === Object.prototype.toString.call(e)
+ }
+
+ function m(e, t) {
+ var n, i = [];
+ for (n = 0; n < e.length; ++n) i.push(t(e[n], n));
+ return i
+ }
+
+ function f(e, t) {
+ for (var n in t) s(t, n) && (e[n] = t[n]);
+ return s(t, "toString") && (e.toString = t.toString), s(t, "valueOf") && (e.valueOf = t.valueOf), e
+ }
+
+ function _(e, t, n, i) {
+ return Gn(e, t, n, i, !0).utc()
+ }
+
+ function p() {
+ return {
+ empty: !1,
+ unusedTokens: [],
+ unusedInput: [],
+ overflow: -2,
+ charsLeftOver: 0,
+ nullInput: !1,
+ invalidEra: null,
+ invalidMonth: null,
+ invalidFormat: !1,
+ userInvalidated: !1,
+ iso: !1,
+ parsedDateParts: [],
+ era: null,
+ meridiem: null,
+ rfc2822: !1,
+ weekdayMismatch: !1
+ }
+ }
+
+ function g(e) {
+ return null == e._pf && (e._pf = p()), e._pf
+ }
+
+ function y(e) {
+ if (null == e._isValid) {
+ var t = g(e), n = i.call(t.parsedDateParts, (function (e) {
+ return null != e
+ })),
+ a = !isNaN(e._d.getTime()) && t.overflow < 0 && !t.empty && !t.invalidEra && !t.invalidMonth && !t.invalidWeekday && !t.weekdayMismatch && !t.nullInput && !t.invalidFormat && !t.userInvalidated && (!t.meridiem || t.meridiem && n);
+ if (e._strict && (a = a && 0 === t.charsLeftOver && 0 === t.unusedTokens.length && void 0 === t.bigHour), null != Object.isFrozen && Object.isFrozen(e)) return a;
+ e._isValid = a
+ }
+ return e._isValid
+ }
+
+ function v(e) {
+ var t = _(NaN);
+ return null != e ? f(g(t), e) : g(t).userInvalidated = !0, t
+ }
+
+ i = Array.prototype.some ? Array.prototype.some : function (e) {
+ var t, n = Object(this), i = n.length >>> 0;
+ for (t = 0; t < i; t++) if (t in n && e.call(this, n[t], t, n)) return !0;
+ return !1
+ };
+ var M = a.momentProperties = [], b = !1;
+
+ function x(e, t) {
+ var n, i, a;
+ if (u(t._isAMomentObject) || (e._isAMomentObject = t._isAMomentObject), u(t._i) || (e._i = t._i), u(t._f) || (e._f = t._f), u(t._l) || (e._l = t._l), u(t._strict) || (e._strict = t._strict), u(t._tzm) || (e._tzm = t._tzm), u(t._isUTC) || (e._isUTC = t._isUTC), u(t._offset) || (e._offset = t._offset), u(t._pf) || (e._pf = g(t)), u(t._locale) || (e._locale = t._locale), M.length > 0) for (n = 0; n < M.length; n++) u(a = t[i = M[n]]) || (e[i] = a);
+ return e
+ }
+
+ function L(e) {
+ x(this, e), this._d = new Date(null != e._d ? e._d.getTime() : NaN), this.isValid() || (this._d = new Date(NaN)), !1 === b && (b = !0, a.updateOffset(this), b = !1)
+ }
+
+ function w(e) {
+ return e instanceof L || null != e && null != e._isAMomentObject
+ }
+
+ function k(e) {
+ !1 === a.suppressDeprecationWarnings && "undefined" != typeof console && console.warn && console.warn("Deprecation warning: " + e)
+ }
+
+ function Y(e, t) {
+ var n = !0;
+ return f((function () {
+ if (null != a.deprecationHandler && a.deprecationHandler(null, e), n) {
+ var i, r, l, o = [];
+ for (r = 0; r < arguments.length; r++) {
+ if (i = "", "object" == typeof arguments[r]) {
+ for (l in i += "\n[" + r + "] ", arguments[0]) s(arguments[0], l) && (i += l + ": " + arguments[0][l] + ", ");
+ i = i.slice(0, -2)
+ } else i = arguments[r];
+ o.push(i)
+ }
+ k(e + "\nArguments: " + Array.prototype.slice.call(o).join("") + "\n" + (new Error).stack), n = !1
+ }
+ return t.apply(this, arguments)
+ }), t)
+ }
+
+ var D, T = {};
+
+ function S(e, t) {
+ null != a.deprecationHandler && a.deprecationHandler(e, t), T[e] || (k(t), T[e] = !0)
+ }
+
+ function j(e) {
+ return "undefined" != typeof Function && e instanceof Function || "[object Function]" === Object.prototype.toString.call(e)
+ }
+
+ function E(e) {
+ var t, n;
+ for (n in e) s(e, n) && (j(t = e[n]) ? this[n] = t : this["_" + n] = t);
+ this._config = e, this._dayOfMonthOrdinalParseLenient = new RegExp((this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) + "|" + /\d{1,2}/.source)
+ }
+
+ function H(e, t) {
+ var n, i = f({}, e);
+ for (n in t) s(t, n) && (o(e[n]) && o(t[n]) ? (i[n] = {}, f(i[n], e[n]), f(i[n], t[n])) : null != t[n] ? i[n] = t[n] : delete i[n]);
+ for (n in e) s(e, n) && !s(t, n) && o(e[n]) && (i[n] = f({}, i[n]));
+ return i
+ }
+
+ function O(e) {
+ null != e && this.set(e)
+ }
+
+ a.suppressDeprecationWarnings = !1, a.deprecationHandler = null, D = Object.keys ? Object.keys : function (e) {
+ var t, n = [];
+ for (t in e) s(e, t) && n.push(t);
+ return n
+ };
+ var A = {
+ sameDay: "[Today at] LT",
+ nextDay: "[Tomorrow at] LT",
+ nextWeek: "dddd [at] LT",
+ lastDay: "[Yesterday at] LT",
+ lastWeek: "[Last] dddd [at] LT",
+ sameElse: "L"
+ };
+
+ function P(e, t, n) {
+ var i = this._calendar[e] || this._calendar.sameElse;
+ return j(i) ? i.call(t, n) : i
+ }
+
+ function C(e, t, n) {
+ var i = "" + Math.abs(e), a = t - i.length;
+ return (e >= 0 ? n ? "+" : "" : "-") + Math.pow(10, Math.max(0, a)).toString().substr(1) + i
+ }
+
+ var F = /(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,
+ I = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g, W = {}, N = {};
+
+ function z(e, t, n, i) {
+ var a = i;
+ "string" == typeof i && (a = function () {
+ return this[i]()
+ }), e && (N[e] = a), t && (N[t[0]] = function () {
+ return C(a.apply(this, arguments), t[1], t[2])
+ }), n && (N[n] = function () {
+ return this.localeData().ordinal(a.apply(this, arguments), e)
+ })
+ }
+
+ function R(e) {
+ return e.match(/\[[\s\S]/) ? e.replace(/^\[|\]$/g, "") : e.replace(/\\/g, "")
+ }
+
+ function V(e) {
+ var t, n, i = e.match(F);
+ for (t = 0, n = i.length; t < n; t++) N[i[t]] ? i[t] = N[i[t]] : i[t] = R(i[t]);
+ return function (t) {
+ var a, r = "";
+ for (a = 0; a < n; a++) r += j(i[a]) ? i[a].call(t, e) : i[a];
+ return r
+ }
+ }
+
+ function B(e, t) {
+ return e.isValid() ? (t = Z(t, e.localeData()), W[t] = W[t] || V(t), W[t](e)) : e.localeData().invalidDate()
+ }
+
+ function Z(e, t) {
+ var n = 5;
+
+ function i(e) {
+ return t.longDateFormat(e) || e
+ }
+
+ for (I.lastIndex = 0; n >= 0 && I.test(e);) e = e.replace(I, i), I.lastIndex = 0, n -= 1;
+ return e
+ }
+
+ var U = {
+ LTS: "h:mm:ss A",
+ LT: "h:mm A",
+ L: "MM/DD/YYYY",
+ LL: "MMMM D, YYYY",
+ LLL: "MMMM D, YYYY h:mm A",
+ LLLL: "dddd, MMMM D, YYYY h:mm A"
+ };
+
+ function J(e) {
+ var t = this._longDateFormat[e], n = this._longDateFormat[e.toUpperCase()];
+ return t || !n ? t : (this._longDateFormat[e] = n.match(F).map((function (e) {
+ return "MMMM" === e || "MM" === e || "DD" === e || "dddd" === e ? e.slice(1) : e
+ })).join(""), this._longDateFormat[e])
+ }
+
+ var G = "Invalid date";
+
+ function q() {
+ return this._invalidDate
+ }
+
+ var K = "%d", X = /\d{1,2}/;
+
+ function $(e) {
+ return this._ordinal.replace("%d", e)
+ }
+
+ var Q = {
+ future: "in %s",
+ past: "%s ago",
+ s: "a few seconds",
+ ss: "%d seconds",
+ m: "a minute",
+ mm: "%d minutes",
+ h: "an hour",
+ hh: "%d hours",
+ d: "a day",
+ dd: "%d days",
+ w: "a week",
+ ww: "%d weeks",
+ M: "a month",
+ MM: "%d months",
+ y: "a year",
+ yy: "%d years"
+ };
+
+ function ee(e, t, n, i) {
+ var a = this._relativeTime[n];
+ return j(a) ? a(e, t, n, i) : a.replace(/%d/i, e)
+ }
+
+ function te(e, t) {
+ var n = this._relativeTime[e > 0 ? "future" : "past"];
+ return j(n) ? n(t) : n.replace(/%s/i, t)
+ }
+
+ var ne = {};
+
+ function ie(e, t) {
+ var n = e.toLowerCase();
+ ne[n] = ne[n + "s"] = ne[t] = e
+ }
+
+ function ae(e) {
+ return "string" == typeof e ? ne[e] || ne[e.toLowerCase()] : void 0
+ }
+
+ function re(e) {
+ var t, n, i = {};
+ for (n in e) s(e, n) && (t = ae(n)) && (i[t] = e[n]);
+ return i
+ }
+
+ var le = {};
+
+ function oe(e, t) {
+ le[e] = t
+ }
+
+ function se(e) {
+ var t, n = [];
+ for (t in e) s(e, t) && n.push({unit: t, priority: le[t]});
+ return n.sort((function (e, t) {
+ return e.priority - t.priority
+ })), n
+ }
+
+ function de(e) {
+ return e % 4 == 0 && e % 100 != 0 || e % 400 == 0
+ }
+
+ function ue(e) {
+ return e < 0 ? Math.ceil(e) || 0 : Math.floor(e)
+ }
+
+ function ce(e) {
+ var t = +e, n = 0;
+ return 0 !== t && isFinite(t) && (n = ue(t)), n
+ }
+
+ function he(e, t) {
+ return function (n) {
+ return null != n ? (fe(this, e, n), a.updateOffset(this, t), this) : me(this, e)
+ }
+ }
+
+ function me(e, t) {
+ return e.isValid() ? e._d["get" + (e._isUTC ? "UTC" : "") + t]() : NaN
+ }
+
+ function fe(e, t, n) {
+ e.isValid() && !isNaN(n) && ("FullYear" === t && de(e.year()) && 1 === e.month() && 29 === e.date() ? (n = ce(n), e._d["set" + (e._isUTC ? "UTC" : "") + t](n, e.month(), et(n, e.month()))) : e._d["set" + (e._isUTC ? "UTC" : "") + t](n))
+ }
+
+ function _e(e) {
+ return j(this[e = ae(e)]) ? this[e]() : this
+ }
+
+ function pe(e, t) {
+ if ("object" == typeof e) {
+ var n, i = se(e = re(e));
+ for (n = 0; n < i.length; n++) this[i[n].unit](e[i[n].unit])
+ } else if (j(this[e = ae(e)])) return this[e](t);
+ return this
+ }
+
+ var ge, ye = /\d/, ve = /\d\d/, Me = /\d{3}/, be = /\d{4}/, xe = /[+-]?\d{6}/, Le = /\d\d?/,
+ we = /\d\d\d\d?/, ke = /\d\d\d\d\d\d?/, Ye = /\d{1,3}/, De = /\d{1,4}/, Te = /[+-]?\d{1,6}/, Se = /\d+/,
+ je = /[+-]?\d+/, Ee = /Z|[+-]\d\d:?\d\d/gi, He = /Z|[+-]\d\d(?::?\d\d)?/gi, Oe = /[+-]?\d+(\.\d{1,3})?/,
+ Ae = /[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i;
+
+ function Pe(e, t, n) {
+ ge[e] = j(t) ? t : function (e, i) {
+ return e && n ? n : t
+ }
+ }
+
+ function Ce(e, t) {
+ return s(ge, e) ? ge[e](t._strict, t._locale) : new RegExp(Fe(e))
+ }
+
+ function Fe(e) {
+ return Ie(e.replace("\\", "").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, (function (e, t, n, i, a) {
+ return t || n || i || a
+ })))
+ }
+
+ function Ie(e) {
+ return e.replace(/[-\/\\^$*+?.()|[\]{}]/g, "\\$&")
+ }
+
+ ge = {};
+ var We = {};
+
+ function Ne(e, t) {
+ var n, i = t;
+ for ("string" == typeof e && (e = [e]), c(t) && (i = function (e, n) {
+ n[t] = ce(e)
+ }), n = 0; n < e.length; n++) We[e[n]] = i
+ }
+
+ function ze(e, t) {
+ Ne(e, (function (e, n, i, a) {
+ i._w = i._w || {}, t(e, i._w, i, a)
+ }))
+ }
+
+ function Re(e, t, n) {
+ null != t && s(We, e) && We[e](t, n._a, n, e)
+ }
+
+ var Ve, Be = 0, Ze = 1, Ue = 2, Je = 3, Ge = 4, qe = 5, Ke = 6, Xe = 7, $e = 8;
+
+ function Qe(e, t) {
+ return (e % t + t) % t
+ }
+
+ function et(e, t) {
+ if (isNaN(e) || isNaN(t)) return NaN;
+ var n = Qe(t, 12);
+ return e += (t - n) / 12, 1 === n ? de(e) ? 29 : 28 : 31 - n % 7 % 2
+ }
+
+ Ve = Array.prototype.indexOf ? Array.prototype.indexOf : function (e) {
+ var t;
+ for (t = 0; t < this.length; ++t) if (this[t] === e) return t;
+ return -1
+ }, z("M", ["MM", 2], "Mo", (function () {
+ return this.month() + 1
+ })), z("MMM", 0, 0, (function (e) {
+ return this.localeData().monthsShort(this, e)
+ })), z("MMMM", 0, 0, (function (e) {
+ return this.localeData().months(this, e)
+ })), ie("month", "M"), oe("month", 8), Pe("M", Le), Pe("MM", Le, ve), Pe("MMM", (function (e, t) {
+ return t.monthsShortRegex(e)
+ })), Pe("MMMM", (function (e, t) {
+ return t.monthsRegex(e)
+ })), Ne(["M", "MM"], (function (e, t) {
+ t[Ze] = ce(e) - 1
+ })), Ne(["MMM", "MMMM"], (function (e, t, n, i) {
+ var a = n._locale.monthsParse(e, i, n._strict);
+ null != a ? t[Ze] = a : g(n).invalidMonth = e
+ }));
+ var tt = "January_February_March_April_May_June_July_August_September_October_November_December".split("_"),
+ nt = "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"), it = /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,
+ at = Ae, rt = Ae;
+
+ function lt(e, t) {
+ return e ? l(this._months) ? this._months[e.month()] : this._months[(this._months.isFormat || it).test(t) ? "format" : "standalone"][e.month()] : l(this._months) ? this._months : this._months.standalone
+ }
+
+ function ot(e, t) {
+ return e ? l(this._monthsShort) ? this._monthsShort[e.month()] : this._monthsShort[it.test(t) ? "format" : "standalone"][e.month()] : l(this._monthsShort) ? this._monthsShort : this._monthsShort.standalone
+ }
+
+ function st(e, t, n) {
+ var i, a, r, l = e.toLocaleLowerCase();
+ if (!this._monthsParse) for (this._monthsParse = [], this._longMonthsParse = [], this._shortMonthsParse = [], i = 0; i < 12; ++i) r = _([2e3, i]), this._shortMonthsParse[i] = this.monthsShort(r, "").toLocaleLowerCase(), this._longMonthsParse[i] = this.months(r, "").toLocaleLowerCase();
+ return n ? "MMM" === t ? -1 !== (a = Ve.call(this._shortMonthsParse, l)) ? a : null : -1 !== (a = Ve.call(this._longMonthsParse, l)) ? a : null : "MMM" === t ? -1 !== (a = Ve.call(this._shortMonthsParse, l)) || -1 !== (a = Ve.call(this._longMonthsParse, l)) ? a : null : -1 !== (a = Ve.call(this._longMonthsParse, l)) || -1 !== (a = Ve.call(this._shortMonthsParse, l)) ? a : null
+ }
+
+ function dt(e, t, n) {
+ var i, a, r;
+ if (this._monthsParseExact) return st.call(this, e, t, n);
+ for (this._monthsParse || (this._monthsParse = [], this._longMonthsParse = [], this._shortMonthsParse = []), i = 0; i < 12; i++) {
+ if (a = _([2e3, i]), n && !this._longMonthsParse[i] && (this._longMonthsParse[i] = new RegExp("^" + this.months(a, "").replace(".", "") + "$", "i"), this._shortMonthsParse[i] = new RegExp("^" + this.monthsShort(a, "").replace(".", "") + "$", "i")), n || this._monthsParse[i] || (r = "^" + this.months(a, "") + "|^" + this.monthsShort(a, ""), this._monthsParse[i] = new RegExp(r.replace(".", ""), "i")), n && "MMMM" === t && this._longMonthsParse[i].test(e)) return i;
+ if (n && "MMM" === t && this._shortMonthsParse[i].test(e)) return i;
+ if (!n && this._monthsParse[i].test(e)) return i
+ }
+ }
+
+ function ut(e, t) {
+ var n;
+ if (!e.isValid()) return e;
+ if ("string" == typeof t) if (/^\d+$/.test(t)) t = ce(t); else if (!c(t = e.localeData().monthsParse(t))) return e;
+ return n = Math.min(e.date(), et(e.year(), t)), e._d["set" + (e._isUTC ? "UTC" : "") + "Month"](t, n), e
+ }
+
+ function ct(e) {
+ return null != e ? (ut(this, e), a.updateOffset(this, !0), this) : me(this, "Month")
+ }
+
+ function ht() {
+ return et(this.year(), this.month())
+ }
+
+ function mt(e) {
+ return this._monthsParseExact ? (s(this, "_monthsRegex") || _t.call(this), e ? this._monthsShortStrictRegex : this._monthsShortRegex) : (s(this, "_monthsShortRegex") || (this._monthsShortRegex = at), this._monthsShortStrictRegex && e ? this._monthsShortStrictRegex : this._monthsShortRegex)
+ }
+
+ function ft(e) {
+ return this._monthsParseExact ? (s(this, "_monthsRegex") || _t.call(this), e ? this._monthsStrictRegex : this._monthsRegex) : (s(this, "_monthsRegex") || (this._monthsRegex = rt), this._monthsStrictRegex && e ? this._monthsStrictRegex : this._monthsRegex)
+ }
+
+ function _t() {
+ function e(e, t) {
+ return t.length - e.length
+ }
+
+ var t, n, i = [], a = [], r = [];
+ for (t = 0; t < 12; t++) n = _([2e3, t]), i.push(this.monthsShort(n, "")), a.push(this.months(n, "")), r.push(this.months(n, "")), r.push(this.monthsShort(n, ""));
+ for (i.sort(e), a.sort(e), r.sort(e), t = 0; t < 12; t++) i[t] = Ie(i[t]), a[t] = Ie(a[t]);
+ for (t = 0; t < 24; t++) r[t] = Ie(r[t]);
+ this._monthsRegex = new RegExp("^(" + r.join("|") + ")", "i"), this._monthsShortRegex = this._monthsRegex, this._monthsStrictRegex = new RegExp("^(" + a.join("|") + ")", "i"), this._monthsShortStrictRegex = new RegExp("^(" + i.join("|") + ")", "i")
+ }
+
+ function pt(e) {
+ return de(e) ? 366 : 365
+ }
+
+ z("Y", 0, 0, (function () {
+ var e = this.year();
+ return e <= 9999 ? C(e, 4) : "+" + e
+ })), z(0, ["YY", 2], 0, (function () {
+ return this.year() % 100
+ })), z(0, ["YYYY", 4], 0, "year"), z(0, ["YYYYY", 5], 0, "year"), z(0, ["YYYYYY", 6, !0], 0, "year"), ie("year", "y"), oe("year", 1), Pe("Y", je), Pe("YY", Le, ve), Pe("YYYY", De, be), Pe("YYYYY", Te, xe), Pe("YYYYYY", Te, xe), Ne(["YYYYY", "YYYYYY"], Be), Ne("YYYY", (function (e, t) {
+ t[Be] = 2 === e.length ? a.parseTwoDigitYear(e) : ce(e)
+ })), Ne("YY", (function (e, t) {
+ t[Be] = a.parseTwoDigitYear(e)
+ })), Ne("Y", (function (e, t) {
+ t[Be] = parseInt(e, 10)
+ })), a.parseTwoDigitYear = function (e) {
+ return ce(e) + (ce(e) > 68 ? 1900 : 2e3)
+ };
+ var gt = he("FullYear", !0);
+
+ function yt() {
+ return de(this.year())
+ }
+
+ function vt(e, t, n, i, a, r, l) {
+ var o;
+ return e < 100 && e >= 0 ? (o = new Date(e + 400, t, n, i, a, r, l), isFinite(o.getFullYear()) && o.setFullYear(e)) : o = new Date(e, t, n, i, a, r, l), o
+ }
+
+ function Mt(e) {
+ var t, n;
+ return e < 100 && e >= 0 ? ((n = Array.prototype.slice.call(arguments))[0] = e + 400, t = new Date(Date.UTC.apply(null, n)), isFinite(t.getUTCFullYear()) && t.setUTCFullYear(e)) : t = new Date(Date.UTC.apply(null, arguments)), t
+ }
+
+ function bt(e, t, n) {
+ var i = 7 + t - n;
+ return -(7 + Mt(e, 0, i).getUTCDay() - t) % 7 + i - 1
+ }
+
+ function xt(e, t, n, i, a) {
+ var r, l, o = 1 + 7 * (t - 1) + (7 + n - i) % 7 + bt(e, i, a);
+ return o <= 0 ? l = pt(r = e - 1) + o : o > pt(e) ? (r = e + 1, l = o - pt(e)) : (r = e, l = o), {
+ year: r,
+ dayOfYear: l
+ }
+ }
+
+ function Lt(e, t, n) {
+ var i, a, r = bt(e.year(), t, n), l = Math.floor((e.dayOfYear() - r - 1) / 7) + 1;
+ return l < 1 ? i = l + wt(a = e.year() - 1, t, n) : l > wt(e.year(), t, n) ? (i = l - wt(e.year(), t, n), a = e.year() + 1) : (a = e.year(), i = l), {
+ week: i,
+ year: a
+ }
+ }
+
+ function wt(e, t, n) {
+ var i = bt(e, t, n), a = bt(e + 1, t, n);
+ return (pt(e) - i + a) / 7
+ }
+
+ function kt(e) {
+ return Lt(e, this._week.dow, this._week.doy).week
+ }
+
+ z("w", ["ww", 2], "wo", "week"), z("W", ["WW", 2], "Wo", "isoWeek"), ie("week", "w"), ie("isoWeek", "W"), oe("week", 5), oe("isoWeek", 5), Pe("w", Le), Pe("ww", Le, ve), Pe("W", Le), Pe("WW", Le, ve), ze(["w", "ww", "W", "WW"], (function (e, t, n, i) {
+ t[i.substr(0, 1)] = ce(e)
+ }));
+ var Yt = {dow: 0, doy: 6};
+
+ function Dt() {
+ return this._week.dow
+ }
+
+ function Tt() {
+ return this._week.doy
+ }
+
+ function St(e) {
+ var t = this.localeData().week(this);
+ return null == e ? t : this.add(7 * (e - t), "d")
+ }
+
+ function jt(e) {
+ var t = Lt(this, 1, 4).week;
+ return null == e ? t : this.add(7 * (e - t), "d")
+ }
+
+ function Et(e, t) {
+ return "string" != typeof e ? e : isNaN(e) ? "number" == typeof (e = t.weekdaysParse(e)) ? e : null : parseInt(e, 10)
+ }
+
+ function Ht(e, t) {
+ return "string" == typeof e ? t.weekdaysParse(e) % 7 || 7 : isNaN(e) ? null : e
+ }
+
+ function Ot(e, t) {
+ return e.slice(t, 7).concat(e.slice(0, t))
+ }
+
+ z("d", 0, "do", "day"), z("dd", 0, 0, (function (e) {
+ return this.localeData().weekdaysMin(this, e)
+ })), z("ddd", 0, 0, (function (e) {
+ return this.localeData().weekdaysShort(this, e)
+ })), z("dddd", 0, 0, (function (e) {
+ return this.localeData().weekdays(this, e)
+ })), z("e", 0, 0, "weekday"), z("E", 0, 0, "isoWeekday"), ie("day", "d"), ie("weekday", "e"), ie("isoWeekday", "E"), oe("day", 11), oe("weekday", 11), oe("isoWeekday", 11), Pe("d", Le), Pe("e", Le), Pe("E", Le), Pe("dd", (function (e, t) {
+ return t.weekdaysMinRegex(e)
+ })), Pe("ddd", (function (e, t) {
+ return t.weekdaysShortRegex(e)
+ })), Pe("dddd", (function (e, t) {
+ return t.weekdaysRegex(e)
+ })), ze(["dd", "ddd", "dddd"], (function (e, t, n, i) {
+ var a = n._locale.weekdaysParse(e, i, n._strict);
+ null != a ? t.d = a : g(n).invalidWeekday = e
+ })), ze(["d", "e", "E"], (function (e, t, n, i) {
+ t[i] = ce(e)
+ }));
+ var At = "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),
+ Pt = "Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"), Ct = "Su_Mo_Tu_We_Th_Fr_Sa".split("_"), Ft = Ae, It = Ae,
+ Wt = Ae;
+
+ function Nt(e, t) {
+ var n = l(this._weekdays) ? this._weekdays : this._weekdays[e && !0 !== e && this._weekdays.isFormat.test(t) ? "format" : "standalone"];
+ return !0 === e ? Ot(n, this._week.dow) : e ? n[e.day()] : n
+ }
+
+ function zt(e) {
+ return !0 === e ? Ot(this._weekdaysShort, this._week.dow) : e ? this._weekdaysShort[e.day()] : this._weekdaysShort
+ }
+
+ function Rt(e) {
+ return !0 === e ? Ot(this._weekdaysMin, this._week.dow) : e ? this._weekdaysMin[e.day()] : this._weekdaysMin
+ }
+
+ function Vt(e, t, n) {
+ var i, a, r, l = e.toLocaleLowerCase();
+ if (!this._weekdaysParse) for (this._weekdaysParse = [], this._shortWeekdaysParse = [], this._minWeekdaysParse = [], i = 0; i < 7; ++i) r = _([2e3, 1]).day(i), this._minWeekdaysParse[i] = this.weekdaysMin(r, "").toLocaleLowerCase(), this._shortWeekdaysParse[i] = this.weekdaysShort(r, "").toLocaleLowerCase(), this._weekdaysParse[i] = this.weekdays(r, "").toLocaleLowerCase();
+ return n ? "dddd" === t ? -1 !== (a = Ve.call(this._weekdaysParse, l)) ? a : null : "ddd" === t ? -1 !== (a = Ve.call(this._shortWeekdaysParse, l)) ? a : null : -1 !== (a = Ve.call(this._minWeekdaysParse, l)) ? a : null : "dddd" === t ? -1 !== (a = Ve.call(this._weekdaysParse, l)) || -1 !== (a = Ve.call(this._shortWeekdaysParse, l)) || -1 !== (a = Ve.call(this._minWeekdaysParse, l)) ? a : null : "ddd" === t ? -1 !== (a = Ve.call(this._shortWeekdaysParse, l)) || -1 !== (a = Ve.call(this._weekdaysParse, l)) || -1 !== (a = Ve.call(this._minWeekdaysParse, l)) ? a : null : -1 !== (a = Ve.call(this._minWeekdaysParse, l)) || -1 !== (a = Ve.call(this._weekdaysParse, l)) || -1 !== (a = Ve.call(this._shortWeekdaysParse, l)) ? a : null
+ }
+
+ function Bt(e, t, n) {
+ var i, a, r;
+ if (this._weekdaysParseExact) return Vt.call(this, e, t, n);
+ for (this._weekdaysParse || (this._weekdaysParse = [], this._minWeekdaysParse = [], this._shortWeekdaysParse = [], this._fullWeekdaysParse = []), i = 0; i < 7; i++) {
+ if (a = _([2e3, 1]).day(i), n && !this._fullWeekdaysParse[i] && (this._fullWeekdaysParse[i] = new RegExp("^" + this.weekdays(a, "").replace(".", "\\.?") + "$", "i"), this._shortWeekdaysParse[i] = new RegExp("^" + this.weekdaysShort(a, "").replace(".", "\\.?") + "$", "i"), this._minWeekdaysParse[i] = new RegExp("^" + this.weekdaysMin(a, "").replace(".", "\\.?") + "$", "i")), this._weekdaysParse[i] || (r = "^" + this.weekdays(a, "") + "|^" + this.weekdaysShort(a, "") + "|^" + this.weekdaysMin(a, ""), this._weekdaysParse[i] = new RegExp(r.replace(".", ""), "i")), n && "dddd" === t && this._fullWeekdaysParse[i].test(e)) return i;
+ if (n && "ddd" === t && this._shortWeekdaysParse[i].test(e)) return i;
+ if (n && "dd" === t && this._minWeekdaysParse[i].test(e)) return i;
+ if (!n && this._weekdaysParse[i].test(e)) return i
+ }
+ }
+
+ function Zt(e) {
+ if (!this.isValid()) return null != e ? this : NaN;
+ var t = this._isUTC ? this._d.getUTCDay() : this._d.getDay();
+ return null != e ? (e = Et(e, this.localeData()), this.add(e - t, "d")) : t
+ }
+
+ function Ut(e) {
+ if (!this.isValid()) return null != e ? this : NaN;
+ var t = (this.day() + 7 - this.localeData()._week.dow) % 7;
+ return null == e ? t : this.add(e - t, "d")
+ }
+
+ function Jt(e) {
+ if (!this.isValid()) return null != e ? this : NaN;
+ if (null != e) {
+ var t = Ht(e, this.localeData());
+ return this.day(this.day() % 7 ? t : t - 7)
+ }
+ return this.day() || 7
+ }
+
+ function Gt(e) {
+ return this._weekdaysParseExact ? (s(this, "_weekdaysRegex") || Xt.call(this), e ? this._weekdaysStrictRegex : this._weekdaysRegex) : (s(this, "_weekdaysRegex") || (this._weekdaysRegex = Ft), this._weekdaysStrictRegex && e ? this._weekdaysStrictRegex : this._weekdaysRegex)
+ }
+
+ function qt(e) {
+ return this._weekdaysParseExact ? (s(this, "_weekdaysRegex") || Xt.call(this), e ? this._weekdaysShortStrictRegex : this._weekdaysShortRegex) : (s(this, "_weekdaysShortRegex") || (this._weekdaysShortRegex = It), this._weekdaysShortStrictRegex && e ? this._weekdaysShortStrictRegex : this._weekdaysShortRegex)
+ }
+
+ function Kt(e) {
+ return this._weekdaysParseExact ? (s(this, "_weekdaysRegex") || Xt.call(this), e ? this._weekdaysMinStrictRegex : this._weekdaysMinRegex) : (s(this, "_weekdaysMinRegex") || (this._weekdaysMinRegex = Wt), this._weekdaysMinStrictRegex && e ? this._weekdaysMinStrictRegex : this._weekdaysMinRegex)
+ }
+
+ function Xt() {
+ function e(e, t) {
+ return t.length - e.length
+ }
+
+ var t, n, i, a, r, l = [], o = [], s = [], d = [];
+ for (t = 0; t < 7; t++) n = _([2e3, 1]).day(t), i = Ie(this.weekdaysMin(n, "")), a = Ie(this.weekdaysShort(n, "")), r = Ie(this.weekdays(n, "")), l.push(i), o.push(a), s.push(r), d.push(i), d.push(a), d.push(r);
+ l.sort(e), o.sort(e), s.sort(e), d.sort(e), this._weekdaysRegex = new RegExp("^(" + d.join("|") + ")", "i"), this._weekdaysShortRegex = this._weekdaysRegex, this._weekdaysMinRegex = this._weekdaysRegex, this._weekdaysStrictRegex = new RegExp("^(" + s.join("|") + ")", "i"), this._weekdaysShortStrictRegex = new RegExp("^(" + o.join("|") + ")", "i"), this._weekdaysMinStrictRegex = new RegExp("^(" + l.join("|") + ")", "i")
+ }
+
+ function $t() {
+ return this.hours() % 12 || 12
+ }
+
+ function Qt() {
+ return this.hours() || 24
+ }
+
+ function en(e, t) {
+ z(e, 0, 0, (function () {
+ return this.localeData().meridiem(this.hours(), this.minutes(), t)
+ }))
+ }
+
+ function tn(e, t) {
+ return t._meridiemParse
+ }
+
+ function nn(e) {
+ return "p" === (e + "").toLowerCase().charAt(0)
+ }
+
+ z("H", ["HH", 2], 0, "hour"), z("h", ["hh", 2], 0, $t), z("k", ["kk", 2], 0, Qt), z("hmm", 0, 0, (function () {
+ return "" + $t.apply(this) + C(this.minutes(), 2)
+ })), z("hmmss", 0, 0, (function () {
+ return "" + $t.apply(this) + C(this.minutes(), 2) + C(this.seconds(), 2)
+ })), z("Hmm", 0, 0, (function () {
+ return "" + this.hours() + C(this.minutes(), 2)
+ })), z("Hmmss", 0, 0, (function () {
+ return "" + this.hours() + C(this.minutes(), 2) + C(this.seconds(), 2)
+ })), en("a", !0), en("A", !1), ie("hour", "h"), oe("hour", 13), Pe("a", tn), Pe("A", tn), Pe("H", Le), Pe("h", Le), Pe("k", Le), Pe("HH", Le, ve), Pe("hh", Le, ve), Pe("kk", Le, ve), Pe("hmm", we), Pe("hmmss", ke), Pe("Hmm", we), Pe("Hmmss", ke), Ne(["H", "HH"], Je), Ne(["k", "kk"], (function (e, t, n) {
+ var i = ce(e);
+ t[Je] = 24 === i ? 0 : i
+ })), Ne(["a", "A"], (function (e, t, n) {
+ n._isPm = n._locale.isPM(e), n._meridiem = e
+ })), Ne(["h", "hh"], (function (e, t, n) {
+ t[Je] = ce(e), g(n).bigHour = !0
+ })), Ne("hmm", (function (e, t, n) {
+ var i = e.length - 2;
+ t[Je] = ce(e.substr(0, i)), t[Ge] = ce(e.substr(i)), g(n).bigHour = !0
+ })), Ne("hmmss", (function (e, t, n) {
+ var i = e.length - 4, a = e.length - 2;
+ t[Je] = ce(e.substr(0, i)), t[Ge] = ce(e.substr(i, 2)), t[qe] = ce(e.substr(a)), g(n).bigHour = !0
+ })), Ne("Hmm", (function (e, t, n) {
+ var i = e.length - 2;
+ t[Je] = ce(e.substr(0, i)), t[Ge] = ce(e.substr(i))
+ })), Ne("Hmmss", (function (e, t, n) {
+ var i = e.length - 4, a = e.length - 2;
+ t[Je] = ce(e.substr(0, i)), t[Ge] = ce(e.substr(i, 2)), t[qe] = ce(e.substr(a))
+ }));
+ var an = /[ap]\.?m?\.?/i, rn = he("Hours", !0);
+
+ function ln(e, t, n) {
+ return e > 11 ? n ? "pm" : "PM" : n ? "am" : "AM"
+ }
+
+ var on, sn = {
+ calendar: A,
+ longDateFormat: U,
+ invalidDate: G,
+ ordinal: K,
+ dayOfMonthOrdinalParse: X,
+ relativeTime: Q,
+ months: tt,
+ monthsShort: nt,
+ week: Yt,
+ weekdays: At,
+ weekdaysMin: Ct,
+ weekdaysShort: Pt,
+ meridiemParse: an
+ }, dn = {}, un = {};
+
+ function cn(e, t) {
+ var n, i = Math.min(e.length, t.length);
+ for (n = 0; n < i; n += 1) if (e[n] !== t[n]) return n;
+ return i
+ }
+
+ function hn(e) {
+ return e ? e.toLowerCase().replace("_", "-") : e
+ }
+
+ function mn(e) {
+ for (var t, n, i, a, r = 0; r < e.length;) {
+ for (t = (a = hn(e[r]).split("-")).length, n = (n = hn(e[r + 1])) ? n.split("-") : null; t > 0;) {
+ if (i = fn(a.slice(0, t).join("-"))) return i;
+ if (n && n.length >= t && cn(a, n) >= t - 1) break;
+ t--
+ }
+ r++
+ }
+ return on
+ }
+
+ function fn(t) {
+ var i = null;
+ if (void 0 === dn[t] && void 0 !== e && e && e.exports) try {
+ i = on._abbr, n(255)("./" + t), _n(i)
+ } catch (e) {
+ dn[t] = null
+ }
+ return dn[t]
+ }
+
+ function _n(e, t) {
+ var n;
+ return e && ((n = u(t) ? yn(e) : pn(e, t)) ? on = n : "undefined" != typeof console && console.warn && console.warn("Locale " + e + " not found. Did you forget to load it?")), on._abbr
+ }
+
+ function pn(e, t) {
+ if (null !== t) {
+ var n, i = sn;
+ if (t.abbr = e, null != dn[e]) S("defineLocaleOverride", "use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."), i = dn[e]._config; else if (null != t.parentLocale) if (null != dn[t.parentLocale]) i = dn[t.parentLocale]._config; else {
+ if (null == (n = fn(t.parentLocale))) return un[t.parentLocale] || (un[t.parentLocale] = []), un[t.parentLocale].push({
+ name: e,
+ config: t
+ }), null;
+ i = n._config
+ }
+ return dn[e] = new O(H(i, t)), un[e] && un[e].forEach((function (e) {
+ pn(e.name, e.config)
+ })), _n(e), dn[e]
+ }
+ return delete dn[e], null
+ }
+
+ function gn(e, t) {
+ if (null != t) {
+ var n, i, a = sn;
+ null != dn[e] && null != dn[e].parentLocale ? dn[e].set(H(dn[e]._config, t)) : (null != (i = fn(e)) && (a = i._config), t = H(a, t), null == i && (t.abbr = e), (n = new O(t)).parentLocale = dn[e], dn[e] = n), _n(e)
+ } else null != dn[e] && (null != dn[e].parentLocale ? (dn[e] = dn[e].parentLocale, e === _n() && _n(e)) : null != dn[e] && delete dn[e]);
+ return dn[e]
+ }
+
+ function yn(e) {
+ var t;
+ if (e && e._locale && e._locale._abbr && (e = e._locale._abbr), !e) return on;
+ if (!l(e)) {
+ if (t = fn(e)) return t;
+ e = [e]
+ }
+ return mn(e)
+ }
+
+ function vn() {
+ return D(dn)
+ }
+
+ function Mn(e) {
+ var t, n = e._a;
+ return n && -2 === g(e).overflow && (t = n[Ze] < 0 || n[Ze] > 11 ? Ze : n[Ue] < 1 || n[Ue] > et(n[Be], n[Ze]) ? Ue : n[Je] < 0 || n[Je] > 24 || 24 === n[Je] && (0 !== n[Ge] || 0 !== n[qe] || 0 !== n[Ke]) ? Je : n[Ge] < 0 || n[Ge] > 59 ? Ge : n[qe] < 0 || n[qe] > 59 ? qe : n[Ke] < 0 || n[Ke] > 999 ? Ke : -1, g(e)._overflowDayOfYear && (t < Be || t > Ue) && (t = Ue), g(e)._overflowWeeks && -1 === t && (t = Xe), g(e)._overflowWeekday && -1 === t && (t = $e), g(e).overflow = t), e
+ }
+
+ var bn = /^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,
+ xn = /^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,
+ Ln = /Z|[+-]\d\d(?::?\d\d)?/,
+ wn = [["YYYYYY-MM-DD", /[+-]\d{6}-\d\d-\d\d/], ["YYYY-MM-DD", /\d{4}-\d\d-\d\d/], ["GGGG-[W]WW-E", /\d{4}-W\d\d-\d/], ["GGGG-[W]WW", /\d{4}-W\d\d/, !1], ["YYYY-DDD", /\d{4}-\d{3}/], ["YYYY-MM", /\d{4}-\d\d/, !1], ["YYYYYYMMDD", /[+-]\d{10}/], ["YYYYMMDD", /\d{8}/], ["GGGG[W]WWE", /\d{4}W\d{3}/], ["GGGG[W]WW", /\d{4}W\d{2}/, !1], ["YYYYDDD", /\d{7}/], ["YYYYMM", /\d{6}/, !1], ["YYYY", /\d{4}/, !1]],
+ kn = [["HH:mm:ss.SSSS", /\d\d:\d\d:\d\d\.\d+/], ["HH:mm:ss,SSSS", /\d\d:\d\d:\d\d,\d+/], ["HH:mm:ss", /\d\d:\d\d:\d\d/], ["HH:mm", /\d\d:\d\d/], ["HHmmss.SSSS", /\d\d\d\d\d\d\.\d+/], ["HHmmss,SSSS", /\d\d\d\d\d\d,\d+/], ["HHmmss", /\d\d\d\d\d\d/], ["HHmm", /\d\d\d\d/], ["HH", /\d\d/]],
+ Yn = /^\/?Date\((-?\d+)/i,
+ Dn = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,
+ Tn = {
+ UT: 0,
+ GMT: 0,
+ EDT: -240,
+ EST: -300,
+ CDT: -300,
+ CST: -360,
+ MDT: -360,
+ MST: -420,
+ PDT: -420,
+ PST: -480
+ };
+
+ function Sn(e) {
+ var t, n, i, a, r, l, o = e._i, s = bn.exec(o) || xn.exec(o);
+ if (s) {
+ for (g(e).iso = !0, t = 0, n = wn.length; t < n; t++) if (wn[t][1].exec(s[1])) {
+ a = wn[t][0], i = !1 !== wn[t][2];
+ break
+ }
+ if (null == a) return void (e._isValid = !1);
+ if (s[3]) {
+ for (t = 0, n = kn.length; t < n; t++) if (kn[t][1].exec(s[3])) {
+ r = (s[2] || " ") + kn[t][0];
+ break
+ }
+ if (null == r) return void (e._isValid = !1)
+ }
+ if (!i && null != r) return void (e._isValid = !1);
+ if (s[4]) {
+ if (!Ln.exec(s[4])) return void (e._isValid = !1);
+ l = "Z"
+ }
+ e._f = a + (r || "") + (l || ""), zn(e)
+ } else e._isValid = !1
+ }
+
+ function jn(e, t, n, i, a, r) {
+ var l = [En(e), nt.indexOf(t), parseInt(n, 10), parseInt(i, 10), parseInt(a, 10)];
+ return r && l.push(parseInt(r, 10)), l
+ }
+
+ function En(e) {
+ var t = parseInt(e, 10);
+ return t <= 49 ? 2e3 + t : t <= 999 ? 1900 + t : t
+ }
+
+ function Hn(e) {
+ return e.replace(/\([^)]*\)|[\n\t]/g, " ").replace(/(\s\s+)/g, " ").replace(/^\s\s*/, "").replace(/\s\s*$/, "")
+ }
+
+ function On(e, t, n) {
+ return !e || Pt.indexOf(e) === new Date(t[0], t[1], t[2]).getDay() || (g(n).weekdayMismatch = !0, n._isValid = !1, !1)
+ }
+
+ function An(e, t, n) {
+ if (e) return Tn[e];
+ if (t) return 0;
+ var i = parseInt(n, 10), a = i % 100;
+ return (i - a) / 100 * 60 + a
+ }
+
+ function Pn(e) {
+ var t, n = Dn.exec(Hn(e._i));
+ if (n) {
+ if (t = jn(n[4], n[3], n[2], n[5], n[6], n[7]), !On(n[1], t, e)) return;
+ e._a = t, e._tzm = An(n[8], n[9], n[10]), e._d = Mt.apply(null, e._a), e._d.setUTCMinutes(e._d.getUTCMinutes() - e._tzm), g(e).rfc2822 = !0
+ } else e._isValid = !1
+ }
+
+ function Cn(e) {
+ var t = Yn.exec(e._i);
+ null === t ? (Sn(e), !1 === e._isValid && (delete e._isValid, Pn(e), !1 === e._isValid && (delete e._isValid, e._strict ? e._isValid = !1 : a.createFromInputFallback(e)))) : e._d = new Date(+t[1])
+ }
+
+ function Fn(e, t, n) {
+ return null != e ? e : null != t ? t : n
+ }
+
+ function In(e) {
+ var t = new Date(a.now());
+ return e._useUTC ? [t.getUTCFullYear(), t.getUTCMonth(), t.getUTCDate()] : [t.getFullYear(), t.getMonth(), t.getDate()]
+ }
+
+ function Wn(e) {
+ var t, n, i, a, r, l = [];
+ if (!e._d) {
+ for (i = In(e), e._w && null == e._a[Ue] && null == e._a[Ze] && Nn(e), null != e._dayOfYear && (r = Fn(e._a[Be], i[Be]), (e._dayOfYear > pt(r) || 0 === e._dayOfYear) && (g(e)._overflowDayOfYear = !0), n = Mt(r, 0, e._dayOfYear), e._a[Ze] = n.getUTCMonth(), e._a[Ue] = n.getUTCDate()), t = 0; t < 3 && null == e._a[t]; ++t) e._a[t] = l[t] = i[t];
+ for (; t < 7; t++) e._a[t] = l[t] = null == e._a[t] ? 2 === t ? 1 : 0 : e._a[t];
+ 24 === e._a[Je] && 0 === e._a[Ge] && 0 === e._a[qe] && 0 === e._a[Ke] && (e._nextDay = !0, e._a[Je] = 0), e._d = (e._useUTC ? Mt : vt).apply(null, l), a = e._useUTC ? e._d.getUTCDay() : e._d.getDay(), null != e._tzm && e._d.setUTCMinutes(e._d.getUTCMinutes() - e._tzm), e._nextDay && (e._a[Je] = 24), e._w && void 0 !== e._w.d && e._w.d !== a && (g(e).weekdayMismatch = !0)
+ }
+ }
+
+ function Nn(e) {
+ var t, n, i, a, r, l, o, s, d;
+ null != (t = e._w).GG || null != t.W || null != t.E ? (r = 1, l = 4, n = Fn(t.GG, e._a[Be], Lt(qn(), 1, 4).year), i = Fn(t.W, 1), ((a = Fn(t.E, 1)) < 1 || a > 7) && (s = !0)) : (r = e._locale._week.dow, l = e._locale._week.doy, d = Lt(qn(), r, l), n = Fn(t.gg, e._a[Be], d.year), i = Fn(t.w, d.week), null != t.d ? ((a = t.d) < 0 || a > 6) && (s = !0) : null != t.e ? (a = t.e + r, (t.e < 0 || t.e > 6) && (s = !0)) : a = r), i < 1 || i > wt(n, r, l) ? g(e)._overflowWeeks = !0 : null != s ? g(e)._overflowWeekday = !0 : (o = xt(n, i, a, r, l), e._a[Be] = o.year, e._dayOfYear = o.dayOfYear)
+ }
+
+ function zn(e) {
+ if (e._f !== a.ISO_8601) if (e._f !== a.RFC_2822) {
+ e._a = [], g(e).empty = !0;
+ var t, n, i, r, l, o, s = "" + e._i, d = s.length, u = 0;
+ for (i = Z(e._f, e._locale).match(F) || [], t = 0; t < i.length; t++) r = i[t], (n = (s.match(Ce(r, e)) || [])[0]) && ((l = s.substr(0, s.indexOf(n))).length > 0 && g(e).unusedInput.push(l), s = s.slice(s.indexOf(n) + n.length), u += n.length), N[r] ? (n ? g(e).empty = !1 : g(e).unusedTokens.push(r), Re(r, n, e)) : e._strict && !n && g(e).unusedTokens.push(r);
+ g(e).charsLeftOver = d - u, s.length > 0 && g(e).unusedInput.push(s), e._a[Je] <= 12 && !0 === g(e).bigHour && e._a[Je] > 0 && (g(e).bigHour = void 0), g(e).parsedDateParts = e._a.slice(0), g(e).meridiem = e._meridiem, e._a[Je] = Rn(e._locale, e._a[Je], e._meridiem), null !== (o = g(e).era) && (e._a[Be] = e._locale.erasConvertYear(o, e._a[Be])), Wn(e), Mn(e)
+ } else Pn(e); else Sn(e)
+ }
+
+ function Rn(e, t, n) {
+ var i;
+ return null == n ? t : null != e.meridiemHour ? e.meridiemHour(t, n) : null != e.isPM ? ((i = e.isPM(n)) && t < 12 && (t += 12), i || 12 !== t || (t = 0), t) : t
+ }
+
+ function Vn(e) {
+ var t, n, i, a, r, l, o = !1;
+ if (0 === e._f.length) return g(e).invalidFormat = !0, void (e._d = new Date(NaN));
+ for (a = 0; a < e._f.length; a++) r = 0, l = !1, t = x({}, e), null != e._useUTC && (t._useUTC = e._useUTC), t._f = e._f[a], zn(t), y(t) && (l = !0), r += g(t).charsLeftOver, r += 10 * g(t).unusedTokens.length, g(t).score = r, o ? r < i && (i = r, n = t) : (null == i || r < i || l) && (i = r, n = t, l && (o = !0));
+ f(e, n || t)
+ }
+
+ function Bn(e) {
+ if (!e._d) {
+ var t = re(e._i), n = void 0 === t.day ? t.date : t.day;
+ e._a = m([t.year, t.month, n, t.hour, t.minute, t.second, t.millisecond], (function (e) {
+ return e && parseInt(e, 10)
+ })), Wn(e)
+ }
+ }
+
+ function Zn(e) {
+ var t = new L(Mn(Un(e)));
+ return t._nextDay && (t.add(1, "d"), t._nextDay = void 0), t
+ }
+
+ function Un(e) {
+ var t = e._i, n = e._f;
+ return e._locale = e._locale || yn(e._l), null === t || void 0 === n && "" === t ? v({nullInput: !0}) : ("string" == typeof t && (e._i = t = e._locale.preparse(t)), w(t) ? new L(Mn(t)) : (h(t) ? e._d = t : l(n) ? Vn(e) : n ? zn(e) : Jn(e), y(e) || (e._d = null), e))
+ }
+
+ function Jn(e) {
+ var t = e._i;
+ u(t) ? e._d = new Date(a.now()) : h(t) ? e._d = new Date(t.valueOf()) : "string" == typeof t ? Cn(e) : l(t) ? (e._a = m(t.slice(0), (function (e) {
+ return parseInt(e, 10)
+ })), Wn(e)) : o(t) ? Bn(e) : c(t) ? e._d = new Date(t) : a.createFromInputFallback(e)
+ }
+
+ function Gn(e, t, n, i, a) {
+ var r = {};
+ return !0 !== t && !1 !== t || (i = t, t = void 0), !0 !== n && !1 !== n || (i = n, n = void 0), (o(e) && d(e) || l(e) && 0 === e.length) && (e = void 0), r._isAMomentObject = !0, r._useUTC = r._isUTC = a, r._l = n, r._i = e, r._f = t, r._strict = i, Zn(r)
+ }
+
+ function qn(e, t, n, i) {
+ return Gn(e, t, n, i, !1)
+ }
+
+ a.createFromInputFallback = Y("value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.", (function (e) {
+ e._d = new Date(e._i + (e._useUTC ? " UTC" : ""))
+ })), a.ISO_8601 = function () {
+ }, a.RFC_2822 = function () {
+ };
+ var Kn = Y("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/", (function () {
+ var e = qn.apply(null, arguments);
+ return this.isValid() && e.isValid() ? e < this ? this : e : v()
+ })),
+ Xn = Y("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/", (function () {
+ var e = qn.apply(null, arguments);
+ return this.isValid() && e.isValid() ? e > this ? this : e : v()
+ }));
+
+ function $n(e, t) {
+ var n, i;
+ if (1 === t.length && l(t[0]) && (t = t[0]), !t.length) return qn();
+ for (n = t[0], i = 1; i < t.length; ++i) t[i].isValid() && !t[i][e](n) || (n = t[i]);
+ return n
+ }
+
+ function Qn() {
+ return $n("isBefore", [].slice.call(arguments, 0))
+ }
+
+ function ei() {
+ return $n("isAfter", [].slice.call(arguments, 0))
+ }
+
+ var ti = function () {
+ return Date.now ? Date.now() : +new Date
+ }, ni = ["year", "quarter", "month", "week", "day", "hour", "minute", "second", "millisecond"];
+
+ function ii(e) {
+ var t, n, i = !1;
+ for (t in e) if (s(e, t) && (-1 === Ve.call(ni, t) || null != e[t] && isNaN(e[t]))) return !1;
+ for (n = 0; n < ni.length; ++n) if (e[ni[n]]) {
+ if (i) return !1;
+ parseFloat(e[ni[n]]) !== ce(e[ni[n]]) && (i = !0)
+ }
+ return !0
+ }
+
+ function ai() {
+ return this._isValid
+ }
+
+ function ri() {
+ return Ti(NaN)
+ }
+
+ function li(e) {
+ var t = re(e), n = t.year || 0, i = t.quarter || 0, a = t.month || 0, r = t.week || t.isoWeek || 0,
+ l = t.day || 0, o = t.hour || 0, s = t.minute || 0, d = t.second || 0, u = t.millisecond || 0;
+ this._isValid = ii(t), this._milliseconds = +u + 1e3 * d + 6e4 * s + 1e3 * o * 60 * 60, this._days = +l + 7 * r, this._months = +a + 3 * i + 12 * n, this._data = {}, this._locale = yn(), this._bubble()
+ }
+
+ function oi(e) {
+ return e instanceof li
+ }
+
+ function si(e) {
+ return e < 0 ? -1 * Math.round(-1 * e) : Math.round(e)
+ }
+
+ function di(e, t, n) {
+ var i, a = Math.min(e.length, t.length), r = Math.abs(e.length - t.length), l = 0;
+ for (i = 0; i < a; i++) (n && e[i] !== t[i] || !n && ce(e[i]) !== ce(t[i])) && l++;
+ return l + r
+ }
+
+ function ui(e, t) {
+ z(e, 0, 0, (function () {
+ var e = this.utcOffset(), n = "+";
+ return e < 0 && (e = -e, n = "-"), n + C(~~(e / 60), 2) + t + C(~~e % 60, 2)
+ }))
+ }
+
+ ui("Z", ":"), ui("ZZ", ""), Pe("Z", He), Pe("ZZ", He), Ne(["Z", "ZZ"], (function (e, t, n) {
+ n._useUTC = !0, n._tzm = hi(He, e)
+ }));
+ var ci = /([\+\-]|\d\d)/gi;
+
+ function hi(e, t) {
+ var n, i, a = (t || "").match(e);
+ return null === a ? null : 0 === (i = 60 * (n = ((a[a.length - 1] || []) + "").match(ci) || ["-", 0, 0])[1] + ce(n[2])) ? 0 : "+" === n[0] ? i : -i
+ }
+
+ function mi(e, t) {
+ var n, i;
+ return t._isUTC ? (n = t.clone(), i = (w(e) || h(e) ? e.valueOf() : qn(e).valueOf()) - n.valueOf(), n._d.setTime(n._d.valueOf() + i), a.updateOffset(n, !1), n) : qn(e).local()
+ }
+
+ function fi(e) {
+ return -Math.round(e._d.getTimezoneOffset())
+ }
+
+ function _i(e, t, n) {
+ var i, r = this._offset || 0;
+ if (!this.isValid()) return null != e ? this : NaN;
+ if (null != e) {
+ if ("string" == typeof e) {
+ if (null === (e = hi(He, e))) return this
+ } else Math.abs(e) < 16 && !n && (e *= 60);
+ return !this._isUTC && t && (i = fi(this)), this._offset = e, this._isUTC = !0, null != i && this.add(i, "m"), r !== e && (!t || this._changeInProgress ? Oi(this, Ti(e - r, "m"), 1, !1) : this._changeInProgress || (this._changeInProgress = !0, a.updateOffset(this, !0), this._changeInProgress = null)), this
+ }
+ return this._isUTC ? r : fi(this)
+ }
+
+ function pi(e, t) {
+ return null != e ? ("string" != typeof e && (e = -e), this.utcOffset(e, t), this) : -this.utcOffset()
+ }
+
+ function gi(e) {
+ return this.utcOffset(0, e)
+ }
+
+ function yi(e) {
+ return this._isUTC && (this.utcOffset(0, e), this._isUTC = !1, e && this.subtract(fi(this), "m")), this
+ }
+
+ function vi() {
+ if (null != this._tzm) this.utcOffset(this._tzm, !1, !0); else if ("string" == typeof this._i) {
+ var e = hi(Ee, this._i);
+ null != e ? this.utcOffset(e) : this.utcOffset(0, !0)
+ }
+ return this
+ }
+
+ function Mi(e) {
+ return !!this.isValid() && (e = e ? qn(e).utcOffset() : 0, (this.utcOffset() - e) % 60 == 0)
+ }
+
+ function bi() {
+ return this.utcOffset() > this.clone().month(0).utcOffset() || this.utcOffset() > this.clone().month(5).utcOffset()
+ }
+
+ function xi() {
+ if (!u(this._isDSTShifted)) return this._isDSTShifted;
+ var e, t = {};
+ return x(t, this), (t = Un(t))._a ? (e = t._isUTC ? _(t._a) : qn(t._a), this._isDSTShifted = this.isValid() && di(t._a, e.toArray()) > 0) : this._isDSTShifted = !1, this._isDSTShifted
+ }
+
+ function Li() {
+ return !!this.isValid() && !this._isUTC
+ }
+
+ function wi() {
+ return !!this.isValid() && this._isUTC
+ }
+
+ function ki() {
+ return !!this.isValid() && this._isUTC && 0 === this._offset
+ }
+
+ a.updateOffset = function () {
+ };
+ var Yi = /^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/,
+ Di = /^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;
+
+ function Ti(e, t) {
+ var n, i, a, r = e, l = null;
+ return oi(e) ? r = {
+ ms: e._milliseconds,
+ d: e._days,
+ M: e._months
+ } : c(e) || !isNaN(+e) ? (r = {}, t ? r[t] = +e : r.milliseconds = +e) : (l = Yi.exec(e)) ? (n = "-" === l[1] ? -1 : 1, r = {
+ y: 0,
+ d: ce(l[Ue]) * n,
+ h: ce(l[Je]) * n,
+ m: ce(l[Ge]) * n,
+ s: ce(l[qe]) * n,
+ ms: ce(si(1e3 * l[Ke])) * n
+ }) : (l = Di.exec(e)) ? (n = "-" === l[1] ? -1 : 1, r = {
+ y: Si(l[2], n),
+ M: Si(l[3], n),
+ w: Si(l[4], n),
+ d: Si(l[5], n),
+ h: Si(l[6], n),
+ m: Si(l[7], n),
+ s: Si(l[8], n)
+ }) : null == r ? r = {} : "object" == typeof r && ("from" in r || "to" in r) && (a = Ei(qn(r.from), qn(r.to)), (r = {}).ms = a.milliseconds, r.M = a.months), i = new li(r), oi(e) && s(e, "_locale") && (i._locale = e._locale), oi(e) && s(e, "_isValid") && (i._isValid = e._isValid), i
+ }
+
+ function Si(e, t) {
+ var n = e && parseFloat(e.replace(",", "."));
+ return (isNaN(n) ? 0 : n) * t
+ }
+
+ function ji(e, t) {
+ var n = {};
+ return n.months = t.month() - e.month() + 12 * (t.year() - e.year()), e.clone().add(n.months, "M").isAfter(t) && --n.months, n.milliseconds = +t - +e.clone().add(n.months, "M"), n
+ }
+
+ function Ei(e, t) {
+ var n;
+ return e.isValid() && t.isValid() ? (t = mi(t, e), e.isBefore(t) ? n = ji(e, t) : ((n = ji(t, e)).milliseconds = -n.milliseconds, n.months = -n.months), n) : {
+ milliseconds: 0,
+ months: 0
+ }
+ }
+
+ function Hi(e, t) {
+ return function (n, i) {
+ var a;
+ return null === i || isNaN(+i) || (S(t, "moment()." + t + "(period, number) is deprecated. Please use moment()." + t + "(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."), a = n, n = i, i = a), Oi(this, Ti(n, i), e), this
+ }
+ }
+
+ function Oi(e, t, n, i) {
+ var r = t._milliseconds, l = si(t._days), o = si(t._months);
+ e.isValid() && (i = null == i || i, o && ut(e, me(e, "Month") + o * n), l && fe(e, "Date", me(e, "Date") + l * n), r && e._d.setTime(e._d.valueOf() + r * n), i && a.updateOffset(e, l || o))
+ }
+
+ Ti.fn = li.prototype, Ti.invalid = ri;
+ var Ai = Hi(1, "add"), Pi = Hi(-1, "subtract");
+
+ function Ci(e) {
+ return "string" == typeof e || e instanceof String
+ }
+
+ function Fi(e) {
+ return w(e) || h(e) || Ci(e) || c(e) || Wi(e) || Ii(e) || null == e
+ }
+
+ function Ii(e) {
+ var t, n, i = o(e) && !d(e), a = !1,
+ r = ["years", "year", "y", "months", "month", "M", "days", "day", "d", "dates", "date", "D", "hours", "hour", "h", "minutes", "minute", "m", "seconds", "second", "s", "milliseconds", "millisecond", "ms"];
+ for (t = 0; t < r.length; t += 1) n = r[t], a = a || s(e, n);
+ return i && a
+ }
+
+ function Wi(e) {
+ var t = l(e), n = !1;
+ return t && (n = 0 === e.filter((function (t) {
+ return !c(t) && Ci(e)
+ })).length), t && n
+ }
+
+ function Ni(e) {
+ var t, n, i = o(e) && !d(e), a = !1,
+ r = ["sameDay", "nextDay", "lastDay", "nextWeek", "lastWeek", "sameElse"];
+ for (t = 0; t < r.length; t += 1) n = r[t], a = a || s(e, n);
+ return i && a
+ }
+
+ function zi(e, t) {
+ var n = e.diff(t, "days", !0);
+ return n < -6 ? "sameElse" : n < -1 ? "lastWeek" : n < 0 ? "lastDay" : n < 1 ? "sameDay" : n < 2 ? "nextDay" : n < 7 ? "nextWeek" : "sameElse"
+ }
+
+ function Ri(e, t) {
+ 1 === arguments.length && (arguments[0] ? Fi(arguments[0]) ? (e = arguments[0], t = void 0) : Ni(arguments[0]) && (t = arguments[0], e = void 0) : (e = void 0, t = void 0));
+ var n = e || qn(), i = mi(n, this).startOf("day"), r = a.calendarFormat(this, i) || "sameElse",
+ l = t && (j(t[r]) ? t[r].call(this, n) : t[r]);
+ return this.format(l || this.localeData().calendar(r, this, qn(n)))
+ }
+
+ function Vi() {
+ return new L(this)
+ }
+
+ function Bi(e, t) {
+ var n = w(e) ? e : qn(e);
+ return !(!this.isValid() || !n.isValid()) && ("millisecond" === (t = ae(t) || "millisecond") ? this.valueOf() > n.valueOf() : n.valueOf() < this.clone().startOf(t).valueOf())
+ }
+
+ function Zi(e, t) {
+ var n = w(e) ? e : qn(e);
+ return !(!this.isValid() || !n.isValid()) && ("millisecond" === (t = ae(t) || "millisecond") ? this.valueOf() < n.valueOf() : this.clone().endOf(t).valueOf() < n.valueOf())
+ }
+
+ function Ui(e, t, n, i) {
+ var a = w(e) ? e : qn(e), r = w(t) ? t : qn(t);
+ return !!(this.isValid() && a.isValid() && r.isValid()) && ("(" === (i = i || "()")[0] ? this.isAfter(a, n) : !this.isBefore(a, n)) && (")" === i[1] ? this.isBefore(r, n) : !this.isAfter(r, n))
+ }
+
+ function Ji(e, t) {
+ var n, i = w(e) ? e : qn(e);
+ return !(!this.isValid() || !i.isValid()) && ("millisecond" === (t = ae(t) || "millisecond") ? this.valueOf() === i.valueOf() : (n = i.valueOf(), this.clone().startOf(t).valueOf() <= n && n <= this.clone().endOf(t).valueOf()))
+ }
+
+ function Gi(e, t) {
+ return this.isSame(e, t) || this.isAfter(e, t)
+ }
+
+ function qi(e, t) {
+ return this.isSame(e, t) || this.isBefore(e, t)
+ }
+
+ function Ki(e, t, n) {
+ var i, a, r;
+ if (!this.isValid()) return NaN;
+ if (!(i = mi(e, this)).isValid()) return NaN;
+ switch (a = 6e4 * (i.utcOffset() - this.utcOffset()), t = ae(t)) {
+ case"year":
+ r = Xi(this, i) / 12;
+ break;
+ case"month":
+ r = Xi(this, i);
+ break;
+ case"quarter":
+ r = Xi(this, i) / 3;
+ break;
+ case"second":
+ r = (this - i) / 1e3;
+ break;
+ case"minute":
+ r = (this - i) / 6e4;
+ break;
+ case"hour":
+ r = (this - i) / 36e5;
+ break;
+ case"day":
+ r = (this - i - a) / 864e5;
+ break;
+ case"week":
+ r = (this - i - a) / 6048e5;
+ break;
+ default:
+ r = this - i
+ }
+ return n ? r : ue(r)
+ }
+
+ function Xi(e, t) {
+ if (e.date() < t.date()) return -Xi(t, e);
+ var n = 12 * (t.year() - e.year()) + (t.month() - e.month()), i = e.clone().add(n, "months");
+ return -(n + (t - i < 0 ? (t - i) / (i - e.clone().add(n - 1, "months")) : (t - i) / (e.clone().add(n + 1, "months") - i))) || 0
+ }
+
+ function $i() {
+ return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")
+ }
+
+ function Qi(e) {
+ if (!this.isValid()) return null;
+ var t = !0 !== e, n = t ? this.clone().utc() : this;
+ return n.year() < 0 || n.year() > 9999 ? B(n, t ? "YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]" : "YYYYYY-MM-DD[T]HH:mm:ss.SSSZ") : j(Date.prototype.toISOString) ? t ? this.toDate().toISOString() : new Date(this.valueOf() + 60 * this.utcOffset() * 1e3).toISOString().replace("Z", B(n, "Z")) : B(n, t ? "YYYY-MM-DD[T]HH:mm:ss.SSS[Z]" : "YYYY-MM-DD[T]HH:mm:ss.SSSZ")
+ }
+
+ function ea() {
+ if (!this.isValid()) return "moment.invalid(/* " + this._i + " */)";
+ var e, t, n, i, a = "moment", r = "";
+ return this.isLocal() || (a = 0 === this.utcOffset() ? "moment.utc" : "moment.parseZone", r = "Z"), e = "[" + a + '("]', t = 0 <= this.year() && this.year() <= 9999 ? "YYYY" : "YYYYYY", n = "-MM-DD[T]HH:mm:ss.SSS", i = r + '[")]', this.format(e + t + n + i)
+ }
+
+ function ta(e) {
+ e || (e = this.isUtc() ? a.defaultFormatUtc : a.defaultFormat);
+ var t = B(this, e);
+ return this.localeData().postformat(t)
+ }
+
+ function na(e, t) {
+ return this.isValid() && (w(e) && e.isValid() || qn(e).isValid()) ? Ti({
+ to: this,
+ from: e
+ }).locale(this.locale()).humanize(!t) : this.localeData().invalidDate()
+ }
+
+ function ia(e) {
+ return this.from(qn(), e)
+ }
+
+ function aa(e, t) {
+ return this.isValid() && (w(e) && e.isValid() || qn(e).isValid()) ? Ti({
+ from: this,
+ to: e
+ }).locale(this.locale()).humanize(!t) : this.localeData().invalidDate()
+ }
+
+ function ra(e) {
+ return this.to(qn(), e)
+ }
+
+ function la(e) {
+ var t;
+ return void 0 === e ? this._locale._abbr : (null != (t = yn(e)) && (this._locale = t), this)
+ }
+
+ a.defaultFormat = "YYYY-MM-DDTHH:mm:ssZ", a.defaultFormatUtc = "YYYY-MM-DDTHH:mm:ss[Z]";
+ var oa = Y("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.", (function (e) {
+ return void 0 === e ? this.localeData() : this.locale(e)
+ }));
+
+ function sa() {
+ return this._locale
+ }
+
+ var da = 1e3, ua = 60 * da, ca = 60 * ua, ha = 3506328 * ca;
+
+ function ma(e, t) {
+ return (e % t + t) % t
+ }
+
+ function fa(e, t, n) {
+ return e < 100 && e >= 0 ? new Date(e + 400, t, n) - ha : new Date(e, t, n).valueOf()
+ }
+
+ function _a(e, t, n) {
+ return e < 100 && e >= 0 ? Date.UTC(e + 400, t, n) - ha : Date.UTC(e, t, n)
+ }
+
+ function pa(e) {
+ var t, n;
+ if (void 0 === (e = ae(e)) || "millisecond" === e || !this.isValid()) return this;
+ switch (n = this._isUTC ? _a : fa, e) {
+ case"year":
+ t = n(this.year(), 0, 1);
+ break;
+ case"quarter":
+ t = n(this.year(), this.month() - this.month() % 3, 1);
+ break;
+ case"month":
+ t = n(this.year(), this.month(), 1);
+ break;
+ case"week":
+ t = n(this.year(), this.month(), this.date() - this.weekday());
+ break;
+ case"isoWeek":
+ t = n(this.year(), this.month(), this.date() - (this.isoWeekday() - 1));
+ break;
+ case"day":
+ case"date":
+ t = n(this.year(), this.month(), this.date());
+ break;
+ case"hour":
+ t = this._d.valueOf(), t -= ma(t + (this._isUTC ? 0 : this.utcOffset() * ua), ca);
+ break;
+ case"minute":
+ t = this._d.valueOf(), t -= ma(t, ua);
+ break;
+ case"second":
+ t = this._d.valueOf(), t -= ma(t, da)
+ }
+ return this._d.setTime(t), a.updateOffset(this, !0), this
+ }
+
+ function ga(e) {
+ var t, n;
+ if (void 0 === (e = ae(e)) || "millisecond" === e || !this.isValid()) return this;
+ switch (n = this._isUTC ? _a : fa, e) {
+ case"year":
+ t = n(this.year() + 1, 0, 1) - 1;
+ break;
+ case"quarter":
+ t = n(this.year(), this.month() - this.month() % 3 + 3, 1) - 1;
+ break;
+ case"month":
+ t = n(this.year(), this.month() + 1, 1) - 1;
+ break;
+ case"week":
+ t = n(this.year(), this.month(), this.date() - this.weekday() + 7) - 1;
+ break;
+ case"isoWeek":
+ t = n(this.year(), this.month(), this.date() - (this.isoWeekday() - 1) + 7) - 1;
+ break;
+ case"day":
+ case"date":
+ t = n(this.year(), this.month(), this.date() + 1) - 1;
+ break;
+ case"hour":
+ t = this._d.valueOf(), t += ca - ma(t + (this._isUTC ? 0 : this.utcOffset() * ua), ca) - 1;
+ break;
+ case"minute":
+ t = this._d.valueOf(), t += ua - ma(t, ua) - 1;
+ break;
+ case"second":
+ t = this._d.valueOf(), t += da - ma(t, da) - 1
+ }
+ return this._d.setTime(t), a.updateOffset(this, !0), this
+ }
+
+ function ya() {
+ return this._d.valueOf() - 6e4 * (this._offset || 0)
+ }
+
+ function va() {
+ return Math.floor(this.valueOf() / 1e3)
+ }
+
+ function Ma() {
+ return new Date(this.valueOf())
+ }
+
+ function ba() {
+ var e = this;
+ return [e.year(), e.month(), e.date(), e.hour(), e.minute(), e.second(), e.millisecond()]
+ }
+
+ function xa() {
+ var e = this;
+ return {
+ years: e.year(),
+ months: e.month(),
+ date: e.date(),
+ hours: e.hours(),
+ minutes: e.minutes(),
+ seconds: e.seconds(),
+ milliseconds: e.milliseconds()
+ }
+ }
+
+ function La() {
+ return this.isValid() ? this.toISOString() : null
+ }
+
+ function wa() {
+ return y(this)
+ }
+
+ function ka() {
+ return f({}, g(this))
+ }
+
+ function Ya() {
+ return g(this).overflow
+ }
+
+ function Da() {
+ return {input: this._i, format: this._f, locale: this._locale, isUTC: this._isUTC, strict: this._strict}
+ }
+
+ function Ta(e, t) {
+ var n, i, r, l = this._eras || yn("en")._eras;
+ for (n = 0, i = l.length; n < i; ++n) {
+ switch (typeof l[n].since) {
+ case"string":
+ r = a(l[n].since).startOf("day"), l[n].since = r.valueOf()
+ }
+ switch (typeof l[n].until) {
+ case"undefined":
+ l[n].until = 1 / 0;
+ break;
+ case"string":
+ r = a(l[n].until).startOf("day").valueOf(), l[n].until = r.valueOf()
+ }
+ }
+ return l
+ }
+
+ function Sa(e, t, n) {
+ var i, a, r, l, o, s = this.eras();
+ for (e = e.toUpperCase(), i = 0, a = s.length; i < a; ++i) if (r = s[i].name.toUpperCase(), l = s[i].abbr.toUpperCase(), o = s[i].narrow.toUpperCase(), n) switch (t) {
+ case"N":
+ case"NN":
+ case"NNN":
+ if (l === e) return s[i];
+ break;
+ case"NNNN":
+ if (r === e) return s[i];
+ break;
+ case"NNNNN":
+ if (o === e) return s[i]
+ } else if ([r, l, o].indexOf(e) >= 0) return s[i]
+ }
+
+ function ja(e, t) {
+ var n = e.since <= e.until ? 1 : -1;
+ return void 0 === t ? a(e.since).year() : a(e.since).year() + (t - e.offset) * n
+ }
+
+ function Ea() {
+ var e, t, n, i = this.localeData().eras();
+ for (e = 0, t = i.length; e < t; ++e) {
+ if (n = this.clone().startOf("day").valueOf(), i[e].since <= n && n <= i[e].until) return i[e].name;
+ if (i[e].until <= n && n <= i[e].since) return i[e].name
+ }
+ return ""
+ }
+
+ function Ha() {
+ var e, t, n, i = this.localeData().eras();
+ for (e = 0, t = i.length; e < t; ++e) {
+ if (n = this.clone().startOf("day").valueOf(), i[e].since <= n && n <= i[e].until) return i[e].narrow;
+ if (i[e].until <= n && n <= i[e].since) return i[e].narrow
+ }
+ return ""
+ }
+
+ function Oa() {
+ var e, t, n, i = this.localeData().eras();
+ for (e = 0, t = i.length; e < t; ++e) {
+ if (n = this.clone().startOf("day").valueOf(), i[e].since <= n && n <= i[e].until) return i[e].abbr;
+ if (i[e].until <= n && n <= i[e].since) return i[e].abbr
+ }
+ return ""
+ }
+
+ function Aa() {
+ var e, t, n, i, r = this.localeData().eras();
+ for (e = 0, t = r.length; e < t; ++e) if (n = r[e].since <= r[e].until ? 1 : -1, i = this.clone().startOf("day").valueOf(), r[e].since <= i && i <= r[e].until || r[e].until <= i && i <= r[e].since) return (this.year() - a(r[e].since).year()) * n + r[e].offset;
+ return this.year()
+ }
+
+ function Pa(e) {
+ return s(this, "_erasNameRegex") || Ra.call(this), e ? this._erasNameRegex : this._erasRegex
+ }
+
+ function Ca(e) {
+ return s(this, "_erasAbbrRegex") || Ra.call(this), e ? this._erasAbbrRegex : this._erasRegex
+ }
+
+ function Fa(e) {
+ return s(this, "_erasNarrowRegex") || Ra.call(this), e ? this._erasNarrowRegex : this._erasRegex
+ }
+
+ function Ia(e, t) {
+ return t.erasAbbrRegex(e)
+ }
+
+ function Wa(e, t) {
+ return t.erasNameRegex(e)
+ }
+
+ function Na(e, t) {
+ return t.erasNarrowRegex(e)
+ }
+
+ function za(e, t) {
+ return t._eraYearOrdinalRegex || Se
+ }
+
+ function Ra() {
+ var e, t, n = [], i = [], a = [], r = [], l = this.eras();
+ for (e = 0, t = l.length; e < t; ++e) i.push(Ie(l[e].name)), n.push(Ie(l[e].abbr)), a.push(Ie(l[e].narrow)), r.push(Ie(l[e].name)), r.push(Ie(l[e].abbr)), r.push(Ie(l[e].narrow));
+ this._erasRegex = new RegExp("^(" + r.join("|") + ")", "i"), this._erasNameRegex = new RegExp("^(" + i.join("|") + ")", "i"), this._erasAbbrRegex = new RegExp("^(" + n.join("|") + ")", "i"), this._erasNarrowRegex = new RegExp("^(" + a.join("|") + ")", "i")
+ }
+
+ function Va(e, t) {
+ z(0, [e, e.length], 0, t)
+ }
+
+ function Ba(e) {
+ return Ka.call(this, e, this.week(), this.weekday(), this.localeData()._week.dow, this.localeData()._week.doy)
+ }
+
+ function Za(e) {
+ return Ka.call(this, e, this.isoWeek(), this.isoWeekday(), 1, 4)
+ }
+
+ function Ua() {
+ return wt(this.year(), 1, 4)
+ }
+
+ function Ja() {
+ return wt(this.isoWeekYear(), 1, 4)
+ }
+
+ function Ga() {
+ var e = this.localeData()._week;
+ return wt(this.year(), e.dow, e.doy)
+ }
+
+ function qa() {
+ var e = this.localeData()._week;
+ return wt(this.weekYear(), e.dow, e.doy)
+ }
+
+ function Ka(e, t, n, i, a) {
+ var r;
+ return null == e ? Lt(this, i, a).year : (t > (r = wt(e, i, a)) && (t = r), Xa.call(this, e, t, n, i, a))
+ }
+
+ function Xa(e, t, n, i, a) {
+ var r = xt(e, t, n, i, a), l = Mt(r.year, 0, r.dayOfYear);
+ return this.year(l.getUTCFullYear()), this.month(l.getUTCMonth()), this.date(l.getUTCDate()), this
+ }
+
+ function $a(e) {
+ return null == e ? Math.ceil((this.month() + 1) / 3) : this.month(3 * (e - 1) + this.month() % 3)
+ }
+
+ z("N", 0, 0, "eraAbbr"), z("NN", 0, 0, "eraAbbr"), z("NNN", 0, 0, "eraAbbr"), z("NNNN", 0, 0, "eraName"), z("NNNNN", 0, 0, "eraNarrow"), z("y", ["y", 1], "yo", "eraYear"), z("y", ["yy", 2], 0, "eraYear"), z("y", ["yyy", 3], 0, "eraYear"), z("y", ["yyyy", 4], 0, "eraYear"), Pe("N", Ia), Pe("NN", Ia), Pe("NNN", Ia), Pe("NNNN", Wa), Pe("NNNNN", Na), Ne(["N", "NN", "NNN", "NNNN", "NNNNN"], (function (e, t, n, i) {
+ var a = n._locale.erasParse(e, i, n._strict);
+ a ? g(n).era = a : g(n).invalidEra = e
+ })), Pe("y", Se), Pe("yy", Se), Pe("yyy", Se), Pe("yyyy", Se), Pe("yo", za), Ne(["y", "yy", "yyy", "yyyy"], Be), Ne(["yo"], (function (e, t, n, i) {
+ var a;
+ n._locale._eraYearOrdinalRegex && (a = e.match(n._locale._eraYearOrdinalRegex)), n._locale.eraYearOrdinalParse ? t[Be] = n._locale.eraYearOrdinalParse(e, a) : t[Be] = parseInt(e, 10)
+ })), z(0, ["gg", 2], 0, (function () {
+ return this.weekYear() % 100
+ })), z(0, ["GG", 2], 0, (function () {
+ return this.isoWeekYear() % 100
+ })), Va("gggg", "weekYear"), Va("ggggg", "weekYear"), Va("GGGG", "isoWeekYear"), Va("GGGGG", "isoWeekYear"), ie("weekYear", "gg"), ie("isoWeekYear", "GG"), oe("weekYear", 1), oe("isoWeekYear", 1), Pe("G", je), Pe("g", je), Pe("GG", Le, ve), Pe("gg", Le, ve), Pe("GGGG", De, be), Pe("gggg", De, be), Pe("GGGGG", Te, xe), Pe("ggggg", Te, xe), ze(["gggg", "ggggg", "GGGG", "GGGGG"], (function (e, t, n, i) {
+ t[i.substr(0, 2)] = ce(e)
+ })), ze(["gg", "GG"], (function (e, t, n, i) {
+ t[i] = a.parseTwoDigitYear(e)
+ })), z("Q", 0, "Qo", "quarter"), ie("quarter", "Q"), oe("quarter", 7), Pe("Q", ye), Ne("Q", (function (e, t) {
+ t[Ze] = 3 * (ce(e) - 1)
+ })), z("D", ["DD", 2], "Do", "date"), ie("date", "D"), oe("date", 9), Pe("D", Le), Pe("DD", Le, ve), Pe("Do", (function (e, t) {
+ return e ? t._dayOfMonthOrdinalParse || t._ordinalParse : t._dayOfMonthOrdinalParseLenient
+ })), Ne(["D", "DD"], Ue), Ne("Do", (function (e, t) {
+ t[Ue] = ce(e.match(Le)[0])
+ }));
+ var Qa = he("Date", !0);
+
+ function er(e) {
+ var t = Math.round((this.clone().startOf("day") - this.clone().startOf("year")) / 864e5) + 1;
+ return null == e ? t : this.add(e - t, "d")
+ }
+
+ z("DDD", ["DDDD", 3], "DDDo", "dayOfYear"), ie("dayOfYear", "DDD"), oe("dayOfYear", 4), Pe("DDD", Ye), Pe("DDDD", Me), Ne(["DDD", "DDDD"], (function (e, t, n) {
+ n._dayOfYear = ce(e)
+ })), z("m", ["mm", 2], 0, "minute"), ie("minute", "m"), oe("minute", 14), Pe("m", Le), Pe("mm", Le, ve), Ne(["m", "mm"], Ge);
+ var tr = he("Minutes", !1);
+ z("s", ["ss", 2], 0, "second"), ie("second", "s"), oe("second", 15), Pe("s", Le), Pe("ss", Le, ve), Ne(["s", "ss"], qe);
+ var nr, ir, ar = he("Seconds", !1);
+ for (z("S", 0, 0, (function () {
+ return ~~(this.millisecond() / 100)
+ })), z(0, ["SS", 2], 0, (function () {
+ return ~~(this.millisecond() / 10)
+ })), z(0, ["SSS", 3], 0, "millisecond"), z(0, ["SSSS", 4], 0, (function () {
+ return 10 * this.millisecond()
+ })), z(0, ["SSSSS", 5], 0, (function () {
+ return 100 * this.millisecond()
+ })), z(0, ["SSSSSS", 6], 0, (function () {
+ return 1e3 * this.millisecond()
+ })), z(0, ["SSSSSSS", 7], 0, (function () {
+ return 1e4 * this.millisecond()
+ })), z(0, ["SSSSSSSS", 8], 0, (function () {
+ return 1e5 * this.millisecond()
+ })), z(0, ["SSSSSSSSS", 9], 0, (function () {
+ return 1e6 * this.millisecond()
+ })), ie("millisecond", "ms"), oe("millisecond", 16), Pe("S", Ye, ye), Pe("SS", Ye, ve), Pe("SSS", Ye, Me), nr = "SSSS"; nr.length <= 9; nr += "S") Pe(nr, Se);
+
+ function rr(e, t) {
+ t[Ke] = ce(1e3 * ("0." + e))
+ }
+
+ for (nr = "S"; nr.length <= 9; nr += "S") Ne(nr, rr);
+
+ function lr() {
+ return this._isUTC ? "UTC" : ""
+ }
+
+ function or() {
+ return this._isUTC ? "Coordinated Universal Time" : ""
+ }
+
+ ir = he("Milliseconds", !1), z("z", 0, 0, "zoneAbbr"), z("zz", 0, 0, "zoneName");
+ var sr = L.prototype;
+
+ function dr(e) {
+ return qn(1e3 * e)
+ }
+
+ function ur() {
+ return qn.apply(null, arguments).parseZone()
+ }
+
+ function cr(e) {
+ return e
+ }
+
+ sr.add = Ai, sr.calendar = Ri, sr.clone = Vi, sr.diff = Ki, sr.endOf = ga, sr.format = ta, sr.from = na, sr.fromNow = ia, sr.to = aa, sr.toNow = ra, sr.get = _e, sr.invalidAt = Ya, sr.isAfter = Bi, sr.isBefore = Zi, sr.isBetween = Ui, sr.isSame = Ji, sr.isSameOrAfter = Gi, sr.isSameOrBefore = qi, sr.isValid = wa, sr.lang = oa, sr.locale = la, sr.localeData = sa, sr.max = Xn, sr.min = Kn, sr.parsingFlags = ka, sr.set = pe, sr.startOf = pa, sr.subtract = Pi, sr.toArray = ba, sr.toObject = xa, sr.toDate = Ma, sr.toISOString = Qi, sr.inspect = ea, "undefined" != typeof Symbol && null != Symbol.for && (sr[Symbol.for("nodejs.util.inspect.custom")] = function () {
+ return "Moment<" + this.format() + ">"
+ }), sr.toJSON = La, sr.toString = $i, sr.unix = va, sr.valueOf = ya, sr.creationData = Da, sr.eraName = Ea, sr.eraNarrow = Ha, sr.eraAbbr = Oa, sr.eraYear = Aa, sr.year = gt, sr.isLeapYear = yt, sr.weekYear = Ba, sr.isoWeekYear = Za, sr.quarter = sr.quarters = $a, sr.month = ct, sr.daysInMonth = ht, sr.week = sr.weeks = St, sr.isoWeek = sr.isoWeeks = jt, sr.weeksInYear = Ga, sr.weeksInWeekYear = qa, sr.isoWeeksInYear = Ua, sr.isoWeeksInISOWeekYear = Ja, sr.date = Qa, sr.day = sr.days = Zt, sr.weekday = Ut, sr.isoWeekday = Jt, sr.dayOfYear = er, sr.hour = sr.hours = rn, sr.minute = sr.minutes = tr, sr.second = sr.seconds = ar, sr.millisecond = sr.milliseconds = ir, sr.utcOffset = _i, sr.utc = gi, sr.local = yi, sr.parseZone = vi, sr.hasAlignedHourOffset = Mi, sr.isDST = bi, sr.isLocal = Li, sr.isUtcOffset = wi, sr.isUtc = ki, sr.isUTC = ki, sr.zoneAbbr = lr, sr.zoneName = or, sr.dates = Y("dates accessor is deprecated. Use date instead.", Qa), sr.months = Y("months accessor is deprecated. Use month instead", ct), sr.years = Y("years accessor is deprecated. Use year instead", gt), sr.zone = Y("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/", pi), sr.isDSTShifted = Y("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information", xi);
+ var hr = O.prototype;
+
+ function mr(e, t, n, i) {
+ var a = yn(), r = _().set(i, t);
+ return a[n](r, e)
+ }
+
+ function fr(e, t, n) {
+ if (c(e) && (t = e, e = void 0), e = e || "", null != t) return mr(e, t, n, "month");
+ var i, a = [];
+ for (i = 0; i < 12; i++) a[i] = mr(e, i, n, "month");
+ return a
+ }
+
+ function _r(e, t, n, i) {
+ "boolean" == typeof e ? (c(t) && (n = t, t = void 0), t = t || "") : (n = t = e, e = !1, c(t) && (n = t, t = void 0), t = t || "");
+ var a, r = yn(), l = e ? r._week.dow : 0, o = [];
+ if (null != n) return mr(t, (n + l) % 7, i, "day");
+ for (a = 0; a < 7; a++) o[a] = mr(t, (a + l) % 7, i, "day");
+ return o
+ }
+
+ function pr(e, t) {
+ return fr(e, t, "months")
+ }
+
+ function gr(e, t) {
+ return fr(e, t, "monthsShort")
+ }
+
+ function yr(e, t, n) {
+ return _r(e, t, n, "weekdays")
+ }
+
+ function vr(e, t, n) {
+ return _r(e, t, n, "weekdaysShort")
+ }
+
+ function Mr(e, t, n) {
+ return _r(e, t, n, "weekdaysMin")
+ }
+
+ hr.calendar = P, hr.longDateFormat = J, hr.invalidDate = q, hr.ordinal = $, hr.preparse = cr, hr.postformat = cr, hr.relativeTime = ee, hr.pastFuture = te, hr.set = E, hr.eras = Ta, hr.erasParse = Sa, hr.erasConvertYear = ja, hr.erasAbbrRegex = Ca, hr.erasNameRegex = Pa, hr.erasNarrowRegex = Fa, hr.months = lt, hr.monthsShort = ot, hr.monthsParse = dt, hr.monthsRegex = ft, hr.monthsShortRegex = mt, hr.week = kt, hr.firstDayOfYear = Tt, hr.firstDayOfWeek = Dt, hr.weekdays = Nt, hr.weekdaysMin = Rt, hr.weekdaysShort = zt, hr.weekdaysParse = Bt, hr.weekdaysRegex = Gt, hr.weekdaysShortRegex = qt, hr.weekdaysMinRegex = Kt, hr.isPM = nn, hr.meridiem = ln, _n("en", {
+ eras: [{
+ since: "0001-01-01",
+ until: 1 / 0,
+ offset: 1,
+ name: "Anno Domini",
+ narrow: "AD",
+ abbr: "AD"
+ }, {since: "0000-12-31", until: -1 / 0, offset: 1, name: "Before Christ", narrow: "BC", abbr: "BC"}],
+ dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/,
+ ordinal: function (e) {
+ var t = e % 10;
+ return e + (1 === ce(e % 100 / 10) ? "th" : 1 === t ? "st" : 2 === t ? "nd" : 3 === t ? "rd" : "th")
+ }
+ }), a.lang = Y("moment.lang is deprecated. Use moment.locale instead.", _n), a.langData = Y("moment.langData is deprecated. Use moment.localeData instead.", yn);
+ var br = Math.abs;
+
+ function xr() {
+ var e = this._data;
+ return this._milliseconds = br(this._milliseconds), this._days = br(this._days), this._months = br(this._months), e.milliseconds = br(e.milliseconds), e.seconds = br(e.seconds), e.minutes = br(e.minutes), e.hours = br(e.hours), e.months = br(e.months), e.years = br(e.years), this
+ }
+
+ function Lr(e, t, n, i) {
+ var a = Ti(t, n);
+ return e._milliseconds += i * a._milliseconds, e._days += i * a._days, e._months += i * a._months, e._bubble()
+ }
+
+ function wr(e, t) {
+ return Lr(this, e, t, 1)
+ }
+
+ function kr(e, t) {
+ return Lr(this, e, t, -1)
+ }
+
+ function Yr(e) {
+ return e < 0 ? Math.floor(e) : Math.ceil(e)
+ }
+
+ function Dr() {
+ var e, t, n, i, a, r = this._milliseconds, l = this._days, o = this._months, s = this._data;
+ return r >= 0 && l >= 0 && o >= 0 || r <= 0 && l <= 0 && o <= 0 || (r += 864e5 * Yr(Sr(o) + l), l = 0, o = 0), s.milliseconds = r % 1e3, e = ue(r / 1e3), s.seconds = e % 60, t = ue(e / 60), s.minutes = t % 60, n = ue(t / 60), s.hours = n % 24, l += ue(n / 24), o += a = ue(Tr(l)), l -= Yr(Sr(a)), i = ue(o / 12), o %= 12, s.days = l, s.months = o, s.years = i, this
+ }
+
+ function Tr(e) {
+ return 4800 * e / 146097
+ }
+
+ function Sr(e) {
+ return 146097 * e / 4800
+ }
+
+ function jr(e) {
+ if (!this.isValid()) return NaN;
+ var t, n, i = this._milliseconds;
+ if ("month" === (e = ae(e)) || "quarter" === e || "year" === e) switch (t = this._days + i / 864e5, n = this._months + Tr(t), e) {
+ case"month":
+ return n;
+ case"quarter":
+ return n / 3;
+ case"year":
+ return n / 12
+ } else switch (t = this._days + Math.round(Sr(this._months)), e) {
+ case"week":
+ return t / 7 + i / 6048e5;
+ case"day":
+ return t + i / 864e5;
+ case"hour":
+ return 24 * t + i / 36e5;
+ case"minute":
+ return 1440 * t + i / 6e4;
+ case"second":
+ return 86400 * t + i / 1e3;
+ case"millisecond":
+ return Math.floor(864e5 * t) + i;
+ default:
+ throw new Error("Unknown unit " + e)
+ }
+ }
+
+ function Er() {
+ return this.isValid() ? this._milliseconds + 864e5 * this._days + this._months % 12 * 2592e6 + 31536e6 * ce(this._months / 12) : NaN
+ }
+
+ function Hr(e) {
+ return function () {
+ return this.as(e)
+ }
+ }
+
+ var Or = Hr("ms"), Ar = Hr("s"), Pr = Hr("m"), Cr = Hr("h"), Fr = Hr("d"), Ir = Hr("w"), Wr = Hr("M"),
+ Nr = Hr("Q"), zr = Hr("y");
+
+ function Rr() {
+ return Ti(this)
+ }
+
+ function Vr(e) {
+ return e = ae(e), this.isValid() ? this[e + "s"]() : NaN
+ }
+
+ function Br(e) {
+ return function () {
+ return this.isValid() ? this._data[e] : NaN
+ }
+ }
+
+ var Zr = Br("milliseconds"), Ur = Br("seconds"), Jr = Br("minutes"), Gr = Br("hours"), qr = Br("days"),
+ Kr = Br("months"), Xr = Br("years");
+
+ function $r() {
+ return ue(this.days() / 7)
+ }
+
+ var Qr = Math.round, el = {ss: 44, s: 45, m: 45, h: 22, d: 26, w: null, M: 11};
+
+ function tl(e, t, n, i, a) {
+ return a.relativeTime(t || 1, !!n, e, i)
+ }
+
+ function nl(e, t, n, i) {
+ var a = Ti(e).abs(), r = Qr(a.as("s")), l = Qr(a.as("m")), o = Qr(a.as("h")), s = Qr(a.as("d")),
+ d = Qr(a.as("M")), u = Qr(a.as("w")), c = Qr(a.as("y")),
+ h = r <= n.ss && ["s", r] || r < n.s && ["ss", r] || l <= 1 && ["m"] || l < n.m && ["mm", l] || o <= 1 && ["h"] || o < n.h && ["hh", o] || s <= 1 && ["d"] || s < n.d && ["dd", s];
+ return null != n.w && (h = h || u <= 1 && ["w"] || u < n.w && ["ww", u]), (h = h || d <= 1 && ["M"] || d < n.M && ["MM", d] || c <= 1 && ["y"] || ["yy", c])[2] = t, h[3] = +e > 0, h[4] = i, tl.apply(null, h)
+ }
+
+ function il(e) {
+ return void 0 === e ? Qr : "function" == typeof e && (Qr = e, !0)
+ }
+
+ function al(e, t) {
+ return void 0 !== el[e] && (void 0 === t ? el[e] : (el[e] = t, "s" === e && (el.ss = t - 1), !0))
+ }
+
+ function rl(e, t) {
+ if (!this.isValid()) return this.localeData().invalidDate();
+ var n, i, a = !1, r = el;
+ return "object" == typeof e && (t = e, e = !1), "boolean" == typeof e && (a = e), "object" == typeof t && (r = Object.assign({}, el, t), null != t.s && null == t.ss && (r.ss = t.s - 1)), i = nl(this, !a, r, n = this.localeData()), a && (i = n.pastFuture(+this, i)), n.postformat(i)
+ }
+
+ var ll = Math.abs;
+
+ function ol(e) {
+ return (e > 0) - (e < 0) || +e
+ }
+
+ function sl() {
+ if (!this.isValid()) return this.localeData().invalidDate();
+ var e, t, n, i, a, r, l, o, s = ll(this._milliseconds) / 1e3, d = ll(this._days), u = ll(this._months),
+ c = this.asSeconds();
+ return c ? (e = ue(s / 60), t = ue(e / 60), s %= 60, e %= 60, n = ue(u / 12), u %= 12, i = s ? s.toFixed(3).replace(/\.?0+$/, "") : "", a = c < 0 ? "-" : "", r = ol(this._months) !== ol(c) ? "-" : "", l = ol(this._days) !== ol(c) ? "-" : "", o = ol(this._milliseconds) !== ol(c) ? "-" : "", a + "P" + (n ? r + n + "Y" : "") + (u ? r + u + "M" : "") + (d ? l + d + "D" : "") + (t || e || s ? "T" : "") + (t ? o + t + "H" : "") + (e ? o + e + "M" : "") + (s ? o + i + "S" : "")) : "P0D"
+ }
+
+ var dl = li.prototype;
+ return dl.isValid = ai, dl.abs = xr, dl.add = wr, dl.subtract = kr, dl.as = jr, dl.asMilliseconds = Or, dl.asSeconds = Ar, dl.asMinutes = Pr, dl.asHours = Cr, dl.asDays = Fr, dl.asWeeks = Ir, dl.asMonths = Wr, dl.asQuarters = Nr, dl.asYears = zr, dl.valueOf = Er, dl._bubble = Dr, dl.clone = Rr, dl.get = Vr, dl.milliseconds = Zr, dl.seconds = Ur, dl.minutes = Jr, dl.hours = Gr, dl.days = qr, dl.weeks = $r, dl.months = Kr, dl.years = Xr, dl.humanize = rl, dl.toISOString = sl, dl.toString = sl, dl.toJSON = sl, dl.locale = la, dl.localeData = sa, dl.toIsoString = Y("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)", sl), dl.lang = oa, z("X", 0, 0, "unix"), z("x", 0, 0, "valueOf"), Pe("x", je), Pe("X", Oe), Ne("X", (function (e, t, n) {
+ n._d = new Date(1e3 * parseFloat(e))
+ })), Ne("x", (function (e, t, n) {
+ n._d = new Date(ce(e))
+ })), a.version = "2.29.1", r(qn), a.fn = sr, a.min = Qn, a.max = ei, a.now = ti, a.utc = _, a.unix = dr, a.months = pr, a.isDate = h, a.locale = _n, a.invalid = v, a.duration = Ti, a.isMoment = w, a.weekdays = yr, a.parseZone = ur, a.localeData = yn, a.isDuration = oi, a.monthsShort = gr, a.weekdaysMin = Mr, a.defineLocale = pn, a.updateLocale = gn, a.locales = vn, a.weekdaysShort = vr, a.normalizeUnits = ae, a.relativeTimeRounding = il, a.relativeTimeThreshold = al, a.calendarFormat = zi, a.prototype = sr, a.HTML5_FMT = {
+ DATETIME_LOCAL: "YYYY-MM-DDTHH:mm",
+ DATETIME_LOCAL_SECONDS: "YYYY-MM-DDTHH:mm:ss",
+ DATETIME_LOCAL_MS: "YYYY-MM-DDTHH:mm:ss.SSS",
+ DATE: "YYYY-MM-DD",
+ TIME: "HH:mm",
+ TIME_SECONDS: "HH:mm:ss",
+ TIME_MS: "HH:mm:ss.SSS",
+ WEEK: "GGGG-[W]WW",
+ MONTH: "YYYY-MM"
+ }, a
+ }()
+ }).call(this, n(254)(e))
+}, function (e, t, n) {
+ (function (t) {
+ var n = function (e) {
+ return e && e.Math == Math && e
+ };
+ e.exports = n("object" == typeof globalThis && globalThis) || n("object" == typeof window && window) || n("object" == typeof self && self) || n("object" == typeof t && t) || function () {
+ return this
+ }() || Function("return this")()
+ }).call(this, n(11))
+}, function (e, t) {
+ e.exports = function (e) {
+ try {
+ return !!e()
+ } catch (e) {
+ return !0
+ }
+ }
+}, function (e, t, n) {
+ var i = n(1), a = n(198), r = n(4), l = n(39), o = n(205), s = n(265), d = a("wks"), u = i.Symbol,
+ c = s ? u : u && u.withoutSetter || l;
+ e.exports = function (e) {
+ return r(d, e) || (o && r(u, e) ? d[e] = u[e] : d[e] = c("Symbol." + e)), d[e]
+ }
+}, function (e, t) {
+ var n = {}.hasOwnProperty;
+ e.exports = function (e, t) {
+ return n.call(e, t)
+ }
+}, function (e, t) {
+ e.exports = function (e) {
+ return "object" == typeof e ? null !== e : "function" == typeof e
+ }
+}, function (e, t, n) {
+ var i = n(5);
+ e.exports = function (e) {
+ if (!i(e)) throw TypeError(String(e) + " is not an object");
+ return e
+ }
+}, function (e, t, n) {
+ var i = n(9), a = n(10), r = n(34);
+ e.exports = i ? function (e, t, n) {
+ return a.f(e, t, r(1, n))
+ } : function (e, t, n) {
+ return e[t] = n, e
+ }
+}, function (e, t, n) {
+ var i = n(1), a = n(191).f, r = n(7), l = n(13), o = n(35), s = n(257), d = n(201);
+ e.exports = function (e, t) {
+ var n, u, c, h, m, f = e.target, _ = e.global, p = e.stat;
+ if (n = _ ? i : p ? i[f] || o(f, {}) : (i[f] || {}).prototype) for (u in t) {
+ if (h = t[u], c = e.noTargetGet ? (m = a(n, u)) && m.value : n[u], !d(_ ? u : f + (p ? "." : "#") + u, e.forced) && void 0 !== c) {
+ if (typeof h == typeof c) continue;
+ s(h, c)
+ }
+ (e.sham || c && c.sham) && r(h, "sham", !0), l(n, u, h, e)
+ }
+ }
+}, function (e, t, n) {
+ var i = n(2);
+ e.exports = !i((function () {
+ return 7 != Object.defineProperty({}, 1, {
+ get: function () {
+ return 7
+ }
+ })[1]
+ }))
+}, function (e, t, n) {
+ var i = n(9), a = n(194), r = n(6), l = n(193), o = Object.defineProperty;
+ t.f = i ? o : function (e, t, n) {
+ if (r(e), t = l(t, !0), r(n), a) try {
+ return o(e, t, n)
+ } catch (e) {
+ }
+ if ("get" in n || "set" in n) throw TypeError("Accessors not supported");
+ return "value" in n && (e[t] = n.value), e
+ }
+}, function (e, t) {
+ var n;
+ n = function () {
+ return this
+ }();
+ try {
+ n = n || new Function("return this")()
+ } catch (e) {
+ "object" == typeof window && (n = window)
+ }
+ e.exports = n
+}, function (e, t) {
+ e.exports = function (e) {
+ if (null == e) throw TypeError("Can't call method on " + e);
+ return e
+ }
+}, function (e, t, n) {
+ var i = n(1), a = n(7), r = n(4), l = n(35), o = n(196), s = n(17), d = s.get, u = s.enforce,
+ c = String(String).split("String");
+ (e.exports = function (e, t, n, o) {
+ var s, d = !!o && !!o.unsafe, h = !!o && !!o.enumerable, m = !!o && !!o.noTargetGet;
+ "function" == typeof n && ("string" != typeof t || r(n, "name") || a(n, "name", t), (s = u(n)).source || (s.source = c.join("string" == typeof t ? t : ""))), e !== i ? (d ? !m && e[t] && (h = !0) : delete e[t], h ? e[t] = n : a(e, t, n)) : h ? e[t] = n : l(t, n)
+ })(Function.prototype, "toString", (function () {
+ return "function" == typeof this && d(this).source || o(this)
+ }))
+}, function (e, t, n) {
+ var i = n(24), a = Math.min;
+ e.exports = function (e) {
+ return e > 0 ? a(i(e), 9007199254740991) : 0
+ }
+}, function (e, t) {
+ var n = e.exports = "undefined" != typeof window && window.Math == Math ? window : "undefined" != typeof self && self.Math == Math ? self : Function("return this")();
+ "number" == typeof __g && (__g = n)
+}, function (e, t) {
+ var n = {}.toString;
+ e.exports = function (e) {
+ return n.call(e).slice(8, -1)
+ }
+}, function (e, t, n) {
+ var i, a, r, l = n(197), o = n(1), s = n(5), d = n(7), u = n(4), c = n(36), h = n(37), m = n(23), f = o.WeakMap;
+ if (l) {
+ var _ = c.state || (c.state = new f), p = _.get, g = _.has, y = _.set;
+ i = function (e, t) {
+ return t.facade = e, y.call(_, e, t), t
+ }, a = function (e) {
+ return p.call(_, e) || {}
+ }, r = function (e) {
+ return g.call(_, e)
+ }
+ } else {
+ var v = h("state");
+ m[v] = !0, i = function (e, t) {
+ return t.facade = e, d(e, v, t), t
+ }, a = function (e) {
+ return u(e, v) ? e[v] : {}
+ }, r = function (e) {
+ return u(e, v)
+ }
+ }
+ e.exports = {
+ set: i, get: a, has: r, enforce: function (e) {
+ return r(e) ? a(e) : i(e, {})
+ }, getterFor: function (e) {
+ return function (t) {
+ var n;
+ if (!s(t) || (n = a(t)).type !== e) throw TypeError("Incompatible receiver, " + e + " required");
+ return n
+ }
+ }
+ }
+}, function (e, t, n) {
+ var i = n(12);
+ e.exports = function (e) {
+ return Object(i(e))
+ }
+}, function (e, t) {
+ e.exports = {}
+}, function (e, t, n) {
+ "use strict";
+ (function (e) {
+ var n = "undefined" != typeof window && "undefined" != typeof document && "undefined" != typeof navigator,
+ i = function () {
+ for (var e = ["Edge", "Trident", "Firefox"], t = 0; t < e.length; t += 1) if (n && navigator.userAgent.indexOf(e[t]) >= 0) return 1;
+ return 0
+ }();
+ var a = n && window.Promise ? function (e) {
+ var t = !1;
+ return function () {
+ t || (t = !0, window.Promise.resolve().then((function () {
+ t = !1, e()
+ })))
+ }
+ } : function (e) {
+ var t = !1;
+ return function () {
+ t || (t = !0, setTimeout((function () {
+ t = !1, e()
+ }), i))
+ }
+ };
+
+ function r(e) {
+ return e && "[object Function]" === {}.toString.call(e)
+ }
+
+ function l(e, t) {
+ if (1 !== e.nodeType) return [];
+ var n = e.ownerDocument.defaultView.getComputedStyle(e, null);
+ return t ? n[t] : n
+ }
+
+ function o(e) {
+ return "HTML" === e.nodeName ? e : e.parentNode || e.host
+ }
+
+ function s(e) {
+ if (!e) return document.body;
+ switch (e.nodeName) {
+ case"HTML":
+ case"BODY":
+ return e.ownerDocument.body;
+ case"#document":
+ return e.body
+ }
+ var t = l(e), n = t.overflow, i = t.overflowX, a = t.overflowY;
+ return /(auto|scroll|overlay)/.test(n + a + i) ? e : s(o(e))
+ }
+
+ function d(e) {
+ return e && e.referenceNode ? e.referenceNode : e
+ }
+
+ var u = n && !(!window.MSInputMethodContext || !document.documentMode),
+ c = n && /MSIE 10/.test(navigator.userAgent);
+
+ function h(e) {
+ return 11 === e ? u : 10 === e ? c : u || c
+ }
+
+ function m(e) {
+ if (!e) return document.documentElement;
+ for (var t = h(10) ? document.body : null, n = e.offsetParent || null; n === t && e.nextElementSibling;) n = (e = e.nextElementSibling).offsetParent;
+ var i = n && n.nodeName;
+ return i && "BODY" !== i && "HTML" !== i ? -1 !== ["TH", "TD", "TABLE"].indexOf(n.nodeName) && "static" === l(n, "position") ? m(n) : n : e ? e.ownerDocument.documentElement : document.documentElement
+ }
+
+ function f(e) {
+ return null !== e.parentNode ? f(e.parentNode) : e
+ }
+
+ function _(e, t) {
+ if (!(e && e.nodeType && t && t.nodeType)) return document.documentElement;
+ var n = e.compareDocumentPosition(t) & Node.DOCUMENT_POSITION_FOLLOWING, i = n ? e : t, a = n ? t : e,
+ r = document.createRange();
+ r.setStart(i, 0), r.setEnd(a, 0);
+ var l, o, s = r.commonAncestorContainer;
+ if (e !== s && t !== s || i.contains(a)) return "BODY" === (o = (l = s).nodeName) || "HTML" !== o && m(l.firstElementChild) !== l ? m(s) : s;
+ var d = f(e);
+ return d.host ? _(d.host, t) : _(e, f(t).host)
+ }
+
+ function p(e) {
+ var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "top",
+ n = "top" === t ? "scrollTop" : "scrollLeft", i = e.nodeName;
+ if ("BODY" === i || "HTML" === i) {
+ var a = e.ownerDocument.documentElement, r = e.ownerDocument.scrollingElement || a;
+ return r[n]
+ }
+ return e[n]
+ }
+
+ function g(e, t) {
+ var n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2], i = p(t, "top"), a = p(t, "left"),
+ r = n ? -1 : 1;
+ return e.top += i * r, e.bottom += i * r, e.left += a * r, e.right += a * r, e
+ }
+
+ function y(e, t) {
+ var n = "x" === t ? "Left" : "Top", i = "Left" === n ? "Right" : "Bottom";
+ return parseFloat(e["border" + n + "Width"]) + parseFloat(e["border" + i + "Width"])
+ }
+
+ function v(e, t, n, i) {
+ return Math.max(t["offset" + e], t["scroll" + e], n["client" + e], n["offset" + e], n["scroll" + e], h(10) ? parseInt(n["offset" + e]) + parseInt(i["margin" + ("Height" === e ? "Top" : "Left")]) + parseInt(i["margin" + ("Height" === e ? "Bottom" : "Right")]) : 0)
+ }
+
+ function M(e) {
+ var t = e.body, n = e.documentElement, i = h(10) && getComputedStyle(n);
+ return {height: v("Height", t, n, i), width: v("Width", t, n, i)}
+ }
+
+ var b = function (e, t) {
+ if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
+ }, x = function () {
+ function e(e, t) {
+ for (var n = 0; n < t.length; n++) {
+ var i = t[n];
+ i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
+ }
+ }
+
+ return function (t, n, i) {
+ return n && e(t.prototype, n), i && e(t, i), t
+ }
+ }(), L = function (e, t, n) {
+ return t in e ? Object.defineProperty(e, t, {
+ value: n,
+ enumerable: !0,
+ configurable: !0,
+ writable: !0
+ }) : e[t] = n, e
+ }, w = Object.assign || function (e) {
+ for (var t = 1; t < arguments.length; t++) {
+ var n = arguments[t];
+ for (var i in n) Object.prototype.hasOwnProperty.call(n, i) && (e[i] = n[i])
+ }
+ return e
+ };
+
+ function k(e) {
+ return w({}, e, {right: e.left + e.width, bottom: e.top + e.height})
+ }
+
+ function Y(e) {
+ var t = {};
+ try {
+ if (h(10)) {
+ t = e.getBoundingClientRect();
+ var n = p(e, "top"), i = p(e, "left");
+ t.top += n, t.left += i, t.bottom += n, t.right += i
+ } else t = e.getBoundingClientRect()
+ } catch (e) {
+ }
+ var a = {left: t.left, top: t.top, width: t.right - t.left, height: t.bottom - t.top},
+ r = "HTML" === e.nodeName ? M(e.ownerDocument) : {}, o = r.width || e.clientWidth || a.width,
+ s = r.height || e.clientHeight || a.height, d = e.offsetWidth - o, u = e.offsetHeight - s;
+ if (d || u) {
+ var c = l(e);
+ d -= y(c, "x"), u -= y(c, "y"), a.width -= d, a.height -= u
+ }
+ return k(a)
+ }
+
+ function D(e, t) {
+ var n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2], i = h(10),
+ a = "HTML" === t.nodeName, r = Y(e), o = Y(t), d = s(e), u = l(t), c = parseFloat(u.borderTopWidth),
+ m = parseFloat(u.borderLeftWidth);
+ n && a && (o.top = Math.max(o.top, 0), o.left = Math.max(o.left, 0));
+ var f = k({top: r.top - o.top - c, left: r.left - o.left - m, width: r.width, height: r.height});
+ if (f.marginTop = 0, f.marginLeft = 0, !i && a) {
+ var _ = parseFloat(u.marginTop), p = parseFloat(u.marginLeft);
+ f.top -= c - _, f.bottom -= c - _, f.left -= m - p, f.right -= m - p, f.marginTop = _, f.marginLeft = p
+ }
+ return (i && !n ? t.contains(d) : t === d && "BODY" !== d.nodeName) && (f = g(f, t)), f
+ }
+
+ function T(e) {
+ var t = arguments.length > 1 && void 0 !== arguments[1] && arguments[1],
+ n = e.ownerDocument.documentElement, i = D(e, n), a = Math.max(n.clientWidth, window.innerWidth || 0),
+ r = Math.max(n.clientHeight, window.innerHeight || 0), l = t ? 0 : p(n), o = t ? 0 : p(n, "left"),
+ s = {top: l - i.top + i.marginTop, left: o - i.left + i.marginLeft, width: a, height: r};
+ return k(s)
+ }
+
+ function S(e) {
+ var t = e.nodeName;
+ if ("BODY" === t || "HTML" === t) return !1;
+ if ("fixed" === l(e, "position")) return !0;
+ var n = o(e);
+ return !!n && S(n)
+ }
+
+ function j(e) {
+ if (!e || !e.parentElement || h()) return document.documentElement;
+ for (var t = e.parentElement; t && "none" === l(t, "transform");) t = t.parentElement;
+ return t || document.documentElement
+ }
+
+ function E(e, t, n, i) {
+ var a = arguments.length > 4 && void 0 !== arguments[4] && arguments[4], r = {top: 0, left: 0},
+ l = a ? j(e) : _(e, d(t));
+ if ("viewport" === i) r = T(l, a); else {
+ var u = void 0;
+ "scrollParent" === i ? "BODY" === (u = s(o(t))).nodeName && (u = e.ownerDocument.documentElement) : u = "window" === i ? e.ownerDocument.documentElement : i;
+ var c = D(u, l, a);
+ if ("HTML" !== u.nodeName || S(l)) r = c; else {
+ var h = M(e.ownerDocument), m = h.height, f = h.width;
+ r.top += c.top - c.marginTop, r.bottom = m + c.top, r.left += c.left - c.marginLeft, r.right = f + c.left
+ }
+ }
+ var p = "number" == typeof (n = n || 0);
+ return r.left += p ? n : n.left || 0, r.top += p ? n : n.top || 0, r.right -= p ? n : n.right || 0, r.bottom -= p ? n : n.bottom || 0, r
+ }
+
+ function H(e) {
+ return e.width * e.height
+ }
+
+ function O(e, t, n, i, a) {
+ var r = arguments.length > 5 && void 0 !== arguments[5] ? arguments[5] : 0;
+ if (-1 === e.indexOf("auto")) return e;
+ var l = E(n, i, r, a), o = {
+ top: {width: l.width, height: t.top - l.top},
+ right: {width: l.right - t.right, height: l.height},
+ bottom: {width: l.width, height: l.bottom - t.bottom},
+ left: {width: t.left - l.left, height: l.height}
+ }, s = Object.keys(o).map((function (e) {
+ return w({key: e}, o[e], {area: H(o[e])})
+ })).sort((function (e, t) {
+ return t.area - e.area
+ })), d = s.filter((function (e) {
+ var t = e.width, i = e.height;
+ return t >= n.clientWidth && i >= n.clientHeight
+ })), u = d.length > 0 ? d[0].key : s[0].key, c = e.split("-")[1];
+ return u + (c ? "-" + c : "")
+ }
+
+ function A(e, t, n) {
+ var i = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : null, a = i ? j(t) : _(t, d(n));
+ return D(n, a, i)
+ }
+
+ function P(e) {
+ var t = e.ownerDocument.defaultView.getComputedStyle(e),
+ n = parseFloat(t.marginTop || 0) + parseFloat(t.marginBottom || 0),
+ i = parseFloat(t.marginLeft || 0) + parseFloat(t.marginRight || 0);
+ return {width: e.offsetWidth + i, height: e.offsetHeight + n}
+ }
+
+ function C(e) {
+ var t = {left: "right", right: "left", bottom: "top", top: "bottom"};
+ return e.replace(/left|right|bottom|top/g, (function (e) {
+ return t[e]
+ }))
+ }
+
+ function F(e, t, n) {
+ n = n.split("-")[0];
+ var i = P(e), a = {width: i.width, height: i.height}, r = -1 !== ["right", "left"].indexOf(n),
+ l = r ? "top" : "left", o = r ? "left" : "top", s = r ? "height" : "width", d = r ? "width" : "height";
+ return a[l] = t[l] + t[s] / 2 - i[s] / 2, a[o] = n === o ? t[o] - i[d] : t[C(o)], a
+ }
+
+ function I(e, t) {
+ return Array.prototype.find ? e.find(t) : e.filter(t)[0]
+ }
+
+ function W(e, t, n) {
+ return (void 0 === n ? e : e.slice(0, function (e, t, n) {
+ if (Array.prototype.findIndex) return e.findIndex((function (e) {
+ return e[t] === n
+ }));
+ var i = I(e, (function (e) {
+ return e[t] === n
+ }));
+ return e.indexOf(i)
+ }(e, "name", n))).forEach((function (e) {
+ e.function && console.warn("`modifier.function` is deprecated, use `modifier.fn`!");
+ var n = e.function || e.fn;
+ e.enabled && r(n) && (t.offsets.popper = k(t.offsets.popper), t.offsets.reference = k(t.offsets.reference), t = n(t, e))
+ })), t
+ }
+
+ function N() {
+ if (!this.state.isDestroyed) {
+ var e = {instance: this, styles: {}, arrowStyles: {}, attributes: {}, flipped: !1, offsets: {}};
+ e.offsets.reference = A(this.state, this.popper, this.reference, this.options.positionFixed), e.placement = O(this.options.placement, e.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding), e.originalPlacement = e.placement, e.positionFixed = this.options.positionFixed, e.offsets.popper = F(this.popper, e.offsets.reference, e.placement), e.offsets.popper.position = this.options.positionFixed ? "fixed" : "absolute", e = W(this.modifiers, e), this.state.isCreated ? this.options.onUpdate(e) : (this.state.isCreated = !0, this.options.onCreate(e))
+ }
+ }
+
+ function z(e, t) {
+ return e.some((function (e) {
+ var n = e.name;
+ return e.enabled && n === t
+ }))
+ }
+
+ function R(e) {
+ for (var t = [!1, "ms", "Webkit", "Moz", "O"], n = e.charAt(0).toUpperCase() + e.slice(1), i = 0; i < t.length; i++) {
+ var a = t[i], r = a ? "" + a + n : e;
+ if (void 0 !== document.body.style[r]) return r
+ }
+ return null
+ }
+
+ function V() {
+ return this.state.isDestroyed = !0, z(this.modifiers, "applyStyle") && (this.popper.removeAttribute("x-placement"), this.popper.style.position = "", this.popper.style.top = "", this.popper.style.left = "", this.popper.style.right = "", this.popper.style.bottom = "", this.popper.style.willChange = "", this.popper.style[R("transform")] = ""), this.disableEventListeners(), this.options.removeOnDestroy && this.popper.parentNode.removeChild(this.popper), this
+ }
+
+ function B(e) {
+ var t = e.ownerDocument;
+ return t ? t.defaultView : window
+ }
+
+ function Z(e, t, n, i) {
+ var a = "BODY" === e.nodeName, r = a ? e.ownerDocument.defaultView : e;
+ r.addEventListener(t, n, {passive: !0}), a || Z(s(r.parentNode), t, n, i), i.push(r)
+ }
+
+ function U(e, t, n, i) {
+ n.updateBound = i, B(e).addEventListener("resize", n.updateBound, {passive: !0});
+ var a = s(e);
+ return Z(a, "scroll", n.updateBound, n.scrollParents), n.scrollElement = a, n.eventsEnabled = !0, n
+ }
+
+ function J() {
+ this.state.eventsEnabled || (this.state = U(this.reference, this.options, this.state, this.scheduleUpdate))
+ }
+
+ function G() {
+ var e, t;
+ this.state.eventsEnabled && (cancelAnimationFrame(this.scheduleUpdate), this.state = (e = this.reference, t = this.state, B(e).removeEventListener("resize", t.updateBound), t.scrollParents.forEach((function (e) {
+ e.removeEventListener("scroll", t.updateBound)
+ })), t.updateBound = null, t.scrollParents = [], t.scrollElement = null, t.eventsEnabled = !1, t))
+ }
+
+ function q(e) {
+ return "" !== e && !isNaN(parseFloat(e)) && isFinite(e)
+ }
+
+ function K(e, t) {
+ Object.keys(t).forEach((function (n) {
+ var i = "";
+ -1 !== ["width", "height", "top", "right", "bottom", "left"].indexOf(n) && q(t[n]) && (i = "px"), e.style[n] = t[n] + i
+ }))
+ }
+
+ var X = n && /Firefox/i.test(navigator.userAgent);
+
+ function $(e, t, n) {
+ var i = I(e, (function (e) {
+ return e.name === t
+ })), a = !!i && e.some((function (e) {
+ return e.name === n && e.enabled && e.order < i.order
+ }));
+ if (!a) {
+ var r = "`" + t + "`", l = "`" + n + "`";
+ console.warn(l + " modifier is required by " + r + " modifier in order to work, be sure to include it before " + r + "!")
+ }
+ return a
+ }
+
+ var Q = ["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"],
+ ee = Q.slice(3);
+
+ function te(e) {
+ var t = arguments.length > 1 && void 0 !== arguments[1] && arguments[1], n = ee.indexOf(e),
+ i = ee.slice(n + 1).concat(ee.slice(0, n));
+ return t ? i.reverse() : i
+ }
+
+ var ne = "flip", ie = "clockwise", ae = "counterclockwise";
+
+ function re(e, t, n, i) {
+ var a = [0, 0], r = -1 !== ["right", "left"].indexOf(i), l = e.split(/(\+|\-)/).map((function (e) {
+ return e.trim()
+ })), o = l.indexOf(I(l, (function (e) {
+ return -1 !== e.search(/,|\s/)
+ })));
+ l[o] && -1 === l[o].indexOf(",") && console.warn("Offsets separated by white space(s) are deprecated, use a comma (,) instead.");
+ var s = /\s*,\s*|\s+/,
+ d = -1 !== o ? [l.slice(0, o).concat([l[o].split(s)[0]]), [l[o].split(s)[1]].concat(l.slice(o + 1))] : [l];
+ return (d = d.map((function (e, i) {
+ var a = (1 === i ? !r : r) ? "height" : "width", l = !1;
+ return e.reduce((function (e, t) {
+ return "" === e[e.length - 1] && -1 !== ["+", "-"].indexOf(t) ? (e[e.length - 1] = t, l = !0, e) : l ? (e[e.length - 1] += t, l = !1, e) : e.concat(t)
+ }), []).map((function (e) {
+ return function (e, t, n, i) {
+ var a = e.match(/((?:\-|\+)?\d*\.?\d*)(.*)/), r = +a[1], l = a[2];
+ if (!r) return e;
+ if (0 === l.indexOf("%")) {
+ var o = void 0;
+ switch (l) {
+ case"%p":
+ o = n;
+ break;
+ case"%":
+ case"%r":
+ default:
+ o = i
+ }
+ return k(o)[t] / 100 * r
+ }
+ if ("vh" === l || "vw" === l) return ("vh" === l ? Math.max(document.documentElement.clientHeight, window.innerHeight || 0) : Math.max(document.documentElement.clientWidth, window.innerWidth || 0)) / 100 * r;
+ return r
+ }(e, a, t, n)
+ }))
+ }))).forEach((function (e, t) {
+ e.forEach((function (n, i) {
+ q(n) && (a[t] += n * ("-" === e[i - 1] ? -1 : 1))
+ }))
+ })), a
+ }
+
+ var le = {
+ placement: "bottom", positionFixed: !1, eventsEnabled: !0, removeOnDestroy: !1, onCreate: function () {
+ }, onUpdate: function () {
+ }, modifiers: {
+ shift: {
+ order: 100, enabled: !0, fn: function (e) {
+ var t = e.placement, n = t.split("-")[0], i = t.split("-")[1];
+ if (i) {
+ var a = e.offsets, r = a.reference, l = a.popper, o = -1 !== ["bottom", "top"].indexOf(n),
+ s = o ? "left" : "top", d = o ? "width" : "height",
+ u = {start: L({}, s, r[s]), end: L({}, s, r[s] + r[d] - l[d])};
+ e.offsets.popper = w({}, l, u[i])
+ }
+ return e
+ }
+ }, offset: {
+ order: 200, enabled: !0, fn: function (e, t) {
+ var n = t.offset, i = e.placement, a = e.offsets, r = a.popper, l = a.reference,
+ o = i.split("-")[0], s = void 0;
+ return s = q(+n) ? [+n, 0] : re(n, r, l, o), "left" === o ? (r.top += s[0], r.left -= s[1]) : "right" === o ? (r.top += s[0], r.left += s[1]) : "top" === o ? (r.left += s[0], r.top -= s[1]) : "bottom" === o && (r.left += s[0], r.top += s[1]), e.popper = r, e
+ }, offset: 0
+ }, preventOverflow: {
+ order: 300, enabled: !0, fn: function (e, t) {
+ var n = t.boundariesElement || m(e.instance.popper);
+ e.instance.reference === n && (n = m(n));
+ var i = R("transform"), a = e.instance.popper.style, r = a.top, l = a.left, o = a[i];
+ a.top = "", a.left = "", a[i] = "";
+ var s = E(e.instance.popper, e.instance.reference, t.padding, n, e.positionFixed);
+ a.top = r, a.left = l, a[i] = o, t.boundaries = s;
+ var d = t.priority, u = e.offsets.popper, c = {
+ primary: function (e) {
+ var n = u[e];
+ return u[e] < s[e] && !t.escapeWithReference && (n = Math.max(u[e], s[e])), L({}, e, n)
+ }, secondary: function (e) {
+ var n = "right" === e ? "left" : "top", i = u[n];
+ return u[e] > s[e] && !t.escapeWithReference && (i = Math.min(u[n], s[e] - ("right" === e ? u.width : u.height))), L({}, n, i)
+ }
+ };
+ return d.forEach((function (e) {
+ var t = -1 !== ["left", "top"].indexOf(e) ? "primary" : "secondary";
+ u = w({}, u, c[t](e))
+ })), e.offsets.popper = u, e
+ }, priority: ["left", "right", "top", "bottom"], padding: 5, boundariesElement: "scrollParent"
+ }, keepTogether: {
+ order: 400, enabled: !0, fn: function (e) {
+ var t = e.offsets, n = t.popper, i = t.reference, a = e.placement.split("-")[0], r = Math.floor,
+ l = -1 !== ["top", "bottom"].indexOf(a), o = l ? "right" : "bottom", s = l ? "left" : "top",
+ d = l ? "width" : "height";
+ return n[o] < r(i[s]) && (e.offsets.popper[s] = r(i[s]) - n[d]), n[s] > r(i[o]) && (e.offsets.popper[s] = r(i[o])), e
+ }
+ }, arrow: {
+ order: 500, enabled: !0, fn: function (e, t) {
+ var n;
+ if (!$(e.instance.modifiers, "arrow", "keepTogether")) return e;
+ var i = t.element;
+ if ("string" == typeof i) {
+ if (!(i = e.instance.popper.querySelector(i))) return e
+ } else if (!e.instance.popper.contains(i)) return console.warn("WARNING: `arrow.element` must be child of its popper element!"), e;
+ var a = e.placement.split("-")[0], r = e.offsets, o = r.popper, s = r.reference,
+ d = -1 !== ["left", "right"].indexOf(a), u = d ? "height" : "width", c = d ? "Top" : "Left",
+ h = c.toLowerCase(), m = d ? "left" : "top", f = d ? "bottom" : "right", _ = P(i)[u];
+ s[f] - _ < o[h] && (e.offsets.popper[h] -= o[h] - (s[f] - _)), s[h] + _ > o[f] && (e.offsets.popper[h] += s[h] + _ - o[f]), e.offsets.popper = k(e.offsets.popper);
+ var p = s[h] + s[u] / 2 - _ / 2, g = l(e.instance.popper), y = parseFloat(g["margin" + c]),
+ v = parseFloat(g["border" + c + "Width"]), M = p - e.offsets.popper[h] - y - v;
+ return M = Math.max(Math.min(o[u] - _, M), 0), e.arrowElement = i, e.offsets.arrow = (L(n = {}, h, Math.round(M)), L(n, m, ""), n), e
+ }, element: "[x-arrow]"
+ }, flip: {
+ order: 600,
+ enabled: !0,
+ fn: function (e, t) {
+ if (z(e.instance.modifiers, "inner")) return e;
+ if (e.flipped && e.placement === e.originalPlacement) return e;
+ var n = E(e.instance.popper, e.instance.reference, t.padding, t.boundariesElement, e.positionFixed),
+ i = e.placement.split("-")[0], a = C(i), r = e.placement.split("-")[1] || "", l = [];
+ switch (t.behavior) {
+ case ne:
+ l = [i, a];
+ break;
+ case ie:
+ l = te(i);
+ break;
+ case ae:
+ l = te(i, !0);
+ break;
+ default:
+ l = t.behavior
+ }
+ return l.forEach((function (o, s) {
+ if (i !== o || l.length === s + 1) return e;
+ i = e.placement.split("-")[0], a = C(i);
+ var d = e.offsets.popper, u = e.offsets.reference, c = Math.floor,
+ h = "left" === i && c(d.right) > c(u.left) || "right" === i && c(d.left) < c(u.right) || "top" === i && c(d.bottom) > c(u.top) || "bottom" === i && c(d.top) < c(u.bottom),
+ m = c(d.left) < c(n.left), f = c(d.right) > c(n.right), _ = c(d.top) < c(n.top),
+ p = c(d.bottom) > c(n.bottom),
+ g = "left" === i && m || "right" === i && f || "top" === i && _ || "bottom" === i && p,
+ y = -1 !== ["top", "bottom"].indexOf(i),
+ v = !!t.flipVariations && (y && "start" === r && m || y && "end" === r && f || !y && "start" === r && _ || !y && "end" === r && p),
+ M = !!t.flipVariationsByContent && (y && "start" === r && f || y && "end" === r && m || !y && "start" === r && p || !y && "end" === r && _),
+ b = v || M;
+ (h || g || b) && (e.flipped = !0, (h || g) && (i = l[s + 1]), b && (r = function (e) {
+ return "end" === e ? "start" : "start" === e ? "end" : e
+ }(r)), e.placement = i + (r ? "-" + r : ""), e.offsets.popper = w({}, e.offsets.popper, F(e.instance.popper, e.offsets.reference, e.placement)), e = W(e.instance.modifiers, e, "flip"))
+ })), e
+ },
+ behavior: "flip",
+ padding: 5,
+ boundariesElement: "viewport",
+ flipVariations: !1,
+ flipVariationsByContent: !1
+ }, inner: {
+ order: 700, enabled: !1, fn: function (e) {
+ var t = e.placement, n = t.split("-")[0], i = e.offsets, a = i.popper, r = i.reference,
+ l = -1 !== ["left", "right"].indexOf(n), o = -1 === ["top", "left"].indexOf(n);
+ return a[l ? "left" : "top"] = r[n] - (o ? a[l ? "width" : "height"] : 0), e.placement = C(t), e.offsets.popper = k(a), e
+ }
+ }, hide: {
+ order: 800, enabled: !0, fn: function (e) {
+ if (!$(e.instance.modifiers, "hide", "preventOverflow")) return e;
+ var t = e.offsets.reference, n = I(e.instance.modifiers, (function (e) {
+ return "preventOverflow" === e.name
+ })).boundaries;
+ if (t.bottom < n.top || t.left > n.right || t.top > n.bottom || t.right < n.left) {
+ if (!0 === e.hide) return e;
+ e.hide = !0, e.attributes["x-out-of-boundaries"] = ""
+ } else {
+ if (!1 === e.hide) return e;
+ e.hide = !1, e.attributes["x-out-of-boundaries"] = !1
+ }
+ return e
+ }
+ }, computeStyle: {
+ order: 850, enabled: !0, fn: function (e, t) {
+ var n = t.x, i = t.y, a = e.offsets.popper, r = I(e.instance.modifiers, (function (e) {
+ return "applyStyle" === e.name
+ })).gpuAcceleration;
+ void 0 !== r && console.warn("WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!");
+ var l = void 0 !== r ? r : t.gpuAcceleration, o = m(e.instance.popper), s = Y(o),
+ d = {position: a.position}, u = function (e, t) {
+ var n = e.offsets, i = n.popper, a = n.reference, r = Math.round, l = Math.floor,
+ o = function (e) {
+ return e
+ }, s = r(a.width), d = r(i.width), u = -1 !== ["left", "right"].indexOf(e.placement),
+ c = -1 !== e.placement.indexOf("-"), h = t ? u || c || s % 2 == d % 2 ? r : l : o,
+ m = t ? r : o;
+ return {
+ left: h(s % 2 == 1 && d % 2 == 1 && !c && t ? i.left - 1 : i.left),
+ top: m(i.top),
+ bottom: m(i.bottom),
+ right: h(i.right)
+ }
+ }(e, window.devicePixelRatio < 2 || !X), c = "bottom" === n ? "top" : "bottom",
+ h = "right" === i ? "left" : "right", f = R("transform"), _ = void 0, p = void 0;
+ if (p = "bottom" === c ? "HTML" === o.nodeName ? -o.clientHeight + u.bottom : -s.height + u.bottom : u.top, _ = "right" === h ? "HTML" === o.nodeName ? -o.clientWidth + u.right : -s.width + u.right : u.left, l && f) d[f] = "translate3d(" + _ + "px, " + p + "px, 0)", d[c] = 0, d[h] = 0, d.willChange = "transform"; else {
+ var g = "bottom" === c ? -1 : 1, y = "right" === h ? -1 : 1;
+ d[c] = p * g, d[h] = _ * y, d.willChange = c + ", " + h
+ }
+ var v = {"x-placement": e.placement};
+ return e.attributes = w({}, v, e.attributes), e.styles = w({}, d, e.styles), e.arrowStyles = w({}, e.offsets.arrow, e.arrowStyles), e
+ }, gpuAcceleration: !0, x: "bottom", y: "right"
+ }, applyStyle: {
+ order: 900, enabled: !0, fn: function (e) {
+ var t, n;
+ return K(e.instance.popper, e.styles), t = e.instance.popper, n = e.attributes, Object.keys(n).forEach((function (e) {
+ !1 !== n[e] ? t.setAttribute(e, n[e]) : t.removeAttribute(e)
+ })), e.arrowElement && Object.keys(e.arrowStyles).length && K(e.arrowElement, e.arrowStyles), e
+ }, onLoad: function (e, t, n, i, a) {
+ var r = A(a, t, e, n.positionFixed),
+ l = O(n.placement, r, t, e, n.modifiers.flip.boundariesElement, n.modifiers.flip.padding);
+ return t.setAttribute("x-placement", l), K(t, {position: n.positionFixed ? "fixed" : "absolute"}), n
+ }, gpuAcceleration: void 0
+ }
+ }
+ }, oe = function () {
+ function e(t, n) {
+ var i = this, l = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};
+ b(this, e), this.scheduleUpdate = function () {
+ return requestAnimationFrame(i.update)
+ }, this.update = a(this.update.bind(this)), this.options = w({}, e.Defaults, l), this.state = {
+ isDestroyed: !1,
+ isCreated: !1,
+ scrollParents: []
+ }, this.reference = t && t.jquery ? t[0] : t, this.popper = n && n.jquery ? n[0] : n, this.options.modifiers = {}, Object.keys(w({}, e.Defaults.modifiers, l.modifiers)).forEach((function (t) {
+ i.options.modifiers[t] = w({}, e.Defaults.modifiers[t] || {}, l.modifiers ? l.modifiers[t] : {})
+ })), this.modifiers = Object.keys(this.options.modifiers).map((function (e) {
+ return w({name: e}, i.options.modifiers[e])
+ })).sort((function (e, t) {
+ return e.order - t.order
+ })), this.modifiers.forEach((function (e) {
+ e.enabled && r(e.onLoad) && e.onLoad(i.reference, i.popper, i.options, e, i.state)
+ })), this.update();
+ var o = this.options.eventsEnabled;
+ o && this.enableEventListeners(), this.state.eventsEnabled = o
+ }
+
+ return x(e, [{
+ key: "update", value: function () {
+ return N.call(this)
+ }
+ }, {
+ key: "destroy", value: function () {
+ return V.call(this)
+ }
+ }, {
+ key: "enableEventListeners", value: function () {
+ return J.call(this)
+ }
+ }, {
+ key: "disableEventListeners", value: function () {
+ return G.call(this)
+ }
+ }]), e
+ }();
+ oe.Utils = ("undefined" != typeof window ? window : e).PopperUtils, oe.placements = Q, oe.Defaults = le, t.a = oe
+ }).call(this, n(11))
+}, function (e, t, n) {
+ var i = n(22), a = n(12);
+ e.exports = function (e) {
+ return i(a(e))
+ }
+}, function (e, t, n) {
+ var i = n(2), a = n(16), r = "".split;
+ e.exports = i((function () {
+ return !Object("z").propertyIsEnumerable(0)
+ })) ? function (e) {
+ return "String" == a(e) ? r.call(e, "") : Object(e)
+ } : Object
+}, function (e, t) {
+ e.exports = {}
+}, function (e, t) {
+ var n = Math.ceil, i = Math.floor;
+ e.exports = function (e) {
+ return isNaN(e = +e) ? 0 : (e > 0 ? i : n)(e)
+ }
+}, function (e, t) {
+ var n = !("undefined" == typeof window || !window.document || !window.document.createElement);
+ e.exports = n
+}, function (e, t, n) {
+ var i = n(27);
+ e.exports = function (e) {
+ if (!i(e)) throw TypeError(e + " is not an object!");
+ return e
+ }
+}, function (e, t) {
+ e.exports = function (e) {
+ return "object" == typeof e ? null !== e : "function" == typeof e
+ }
+}, function (e, t) {
+ e.exports = function (e) {
+ if (null == e) throw TypeError("Can't call method on " + e);
+ return e
+ }
+}, function (e, t) {
+ var n = Math.ceil, i = Math.floor;
+ e.exports = function (e) {
+ return isNaN(e = +e) ? 0 : (e > 0 ? i : n)(e)
+ }
+}, function (e, t) {
+ var n = e.exports = {version: "2.6.12"};
+ "number" == typeof __e && (__e = n)
+}, function (e, t, n) {
+ var i = n(245), a = n(249);
+ e.exports = n(32) ? function (e, t, n) {
+ return i.f(e, t, a(1, n))
+ } : function (e, t, n) {
+ return e[t] = n, e
+ }
+}, function (e, t, n) {
+ e.exports = !n(33)((function () {
+ return 7 != Object.defineProperty({}, "a", {
+ get: function () {
+ return 7
+ }
+ }).a
+ }))
+}, function (e, t) {
+ e.exports = function (e) {
+ try {
+ return !!e()
+ } catch (e) {
+ return !0
+ }
+ }
+}, function (e, t) {
+ e.exports = function (e, t) {
+ return {enumerable: !(1 & e), configurable: !(2 & e), writable: !(4 & e), value: t}
+ }
+}, function (e, t, n) {
+ var i = n(1), a = n(7);
+ e.exports = function (e, t) {
+ try {
+ a(i, e, t)
+ } catch (n) {
+ i[e] = t
+ }
+ return t
+ }
+}, function (e, t, n) {
+ var i = n(1), a = n(35), r = "__core-js_shared__", l = i[r] || a(r, {});
+ e.exports = l
+}, function (e, t, n) {
+ var i = n(198), a = n(39), r = i("keys");
+ e.exports = function (e) {
+ return r[e] || (r[e] = a(e))
+ }
+}, function (e, t) {
+ e.exports = !1
+}, function (e, t) {
+ var n = 0, i = Math.random();
+ e.exports = function (e) {
+ return "Symbol(" + String(void 0 === e ? "" : e) + ")_" + (++n + i).toString(36)
+ }
+}, function (e, t, n) {
+ var i = n(259), a = n(1), r = function (e) {
+ return "function" == typeof e ? e : void 0
+ };
+ e.exports = function (e, t) {
+ return arguments.length < 2 ? r(i[e]) || r(a[e]) : i[e] && i[e][t] || a[e] && a[e][t]
+ }
+}, function (e, t) {
+ e.exports = ["constructor", "hasOwnProperty", "isPrototypeOf", "propertyIsEnumerable", "toLocaleString", "toString", "valueOf"]
+}, function (e, t, n) {
+ var i = n(203), a = n(22), r = n(18), l = n(14), o = n(263), s = [].push, d = function (e) {
+ var t = 1 == e, n = 2 == e, d = 3 == e, u = 4 == e, c = 6 == e, h = 7 == e, m = 5 == e || c;
+ return function (f, _, p, g) {
+ for (var y, v, M = r(f), b = a(M), x = i(_, p, 3), L = l(b.length), w = 0, k = g || o, Y = t ? k(f, L) : n || h ? k(f, 0) : void 0; L > w; w++) if ((m || w in b) && (v = x(y = b[w], w, M), e)) if (t) Y[w] = v; else if (v) switch (e) {
+ case 3:
+ return !0;
+ case 5:
+ return y;
+ case 6:
+ return w;
+ case 2:
+ s.call(Y, y)
+ } else switch (e) {
+ case 4:
+ return !1;
+ case 7:
+ s.call(Y, y)
+ }
+ return c ? -1 : d || u ? u : Y
+ }
+ };
+ e.exports = {
+ forEach: d(0),
+ map: d(1),
+ filter: d(2),
+ some: d(3),
+ every: d(4),
+ find: d(5),
+ findIndex: d(6),
+ filterOut: d(7)
+ }
+}, function (e, t, n) {
+ var i = n(9), a = n(2), r = n(4), l = Object.defineProperty, o = {}, s = function (e) {
+ throw e
+ };
+ e.exports = function (e, t) {
+ if (r(o, e)) return o[e];
+ t || (t = {});
+ var n = [][e], d = !!r(t, "ACCESSORS") && t.ACCESSORS, u = r(t, 0) ? t[0] : s, c = r(t, 1) ? t[1] : void 0;
+ return o[e] = !!n && !a((function () {
+ if (d && !i) return !0;
+ var e = {length: -1};
+ d ? l(e, 1, {enumerable: !0, get: s}) : e[1] = 1, n.call(e, u, c)
+ }))
+ }
+}, function (e, t, n) {
+ var i = n(10).f, a = n(4), r = n(3)("toStringTag");
+ e.exports = function (e, t, n) {
+ e && !a(e = n ? e : e.prototype, r) && i(e, r, {configurable: !0, value: t})
+ }
+}, function (e, t, n) {
+ var i = {};
+ i[n(3)("toStringTag")] = "z", e.exports = "[object z]" === String(i)
+}, function (e, t, n) {
+ var i = n(23), a = n(5), r = n(4), l = n(10).f, o = n(39), s = n(285), d = o("meta"), u = 0,
+ c = Object.isExtensible || function () {
+ return !0
+ }, h = function (e) {
+ l(e, d, {value: {objectID: "O" + ++u, weakData: {}}})
+ }, m = e.exports = {
+ REQUIRED: !1, fastKey: function (e, t) {
+ if (!a(e)) return "symbol" == typeof e ? e : ("string" == typeof e ? "S" : "P") + e;
+ if (!r(e, d)) {
+ if (!c(e)) return "F";
+ if (!t) return "E";
+ h(e)
+ }
+ return e[d].objectID
+ }, getWeakData: function (e, t) {
+ if (!r(e, d)) {
+ if (!c(e)) return !0;
+ if (!t) return !1;
+ h(e)
+ }
+ return e[d].weakData
+ }, onFreeze: function (e) {
+ return s && m.REQUIRED && c(e) && !r(e, d) && h(e), e
+ }
+ };
+ i[d] = !0
+}, function (e, t, n) {
+ "use strict";
+ var i, a, r = n(298), l = n(299), o = RegExp.prototype.exec, s = String.prototype.replace, d = o,
+ u = (i = /a/, a = /b*/g, o.call(i, "a"), o.call(a, "a"), 0 !== i.lastIndex || 0 !== a.lastIndex),
+ c = l.UNSUPPORTED_Y || l.BROKEN_CARET, h = void 0 !== /()??/.exec("")[1];
+ (u || h || c) && (d = function (e) {
+ var t, n, i, a, l = this, d = c && l.sticky, m = r.call(l), f = l.source, _ = 0, p = e;
+ return d && (-1 === (m = m.replace("y", "")).indexOf("g") && (m += "g"), p = String(e).slice(l.lastIndex), l.lastIndex > 0 && (!l.multiline || l.multiline && "\n" !== e[l.lastIndex - 1]) && (f = "(?: " + f + ")", p = " " + p, _++), n = new RegExp("^(?:" + f + ")", m)), h && (n = new RegExp("^" + f + "$(?!\\s)", m)), u && (t = l.lastIndex), i = o.call(d ? n : l, p), d ? i ? (i.input = i.input.slice(_), i[0] = i[0].slice(_), i.index = l.lastIndex, l.lastIndex += i[0].length) : l.lastIndex = 0 : u && i && (l.lastIndex = l.global ? i.index + i[0].length : t), h && i && i.length > 1 && s.call(i[0], n, (function () {
+ for (a = 1; a < arguments.length - 2; a++) void 0 === arguments[a] && (i[a] = void 0)
+ })), i
+ }), e.exports = d
+}, function (e, t, n) {
+ var i;
+ "undefined" != typeof self && self, i = function () {
+ return function (e) {
+ var t = {};
+
+ function n(i) {
+ if (t[i]) return t[i].exports;
+ var a = t[i] = {i: i, l: !1, exports: {}};
+ return e[i].call(a.exports, a, a.exports, n), a.l = !0, a.exports
+ }
+
+ return n.m = e, n.c = t, n.d = function (e, t, i) {
+ n.o(e, t) || Object.defineProperty(e, t, {configurable: !1, enumerable: !0, get: i})
+ }, n.r = function (e) {
+ Object.defineProperty(e, "__esModule", {value: !0})
+ }, n.n = function (e) {
+ var t = e && e.__esModule ? function () {
+ return e.default
+ } : function () {
+ return e
+ };
+ return n.d(t, "a", t), t
+ }, n.o = function (e, t) {
+ return Object.prototype.hasOwnProperty.call(e, t)
+ }, n.p = "", n(n.s = 0)
+ }({
+ "./dist/icons.json": function (e) {
+ e.exports = {
+ activity: ' ',
+ airplay: ' ',
+ "alert-circle": ' ',
+ "alert-octagon": ' ',
+ "alert-triangle": ' ',
+ "align-center": ' ',
+ "align-justify": ' ',
+ "align-left": ' ',
+ "align-right": ' ',
+ anchor: ' ',
+ aperture: ' ',
+ archive: ' ',
+ "arrow-down-circle": ' ',
+ "arrow-down-left": ' ',
+ "arrow-down-right": ' ',
+ "arrow-down": ' ',
+ "arrow-left-circle": ' ',
+ "arrow-left": ' ',
+ "arrow-right-circle": ' ',
+ "arrow-right": ' ',
+ "arrow-up-circle": ' ',
+ "arrow-up-left": ' ',
+ "arrow-up-right": ' ',
+ "arrow-up": ' ',
+ "at-sign": ' ',
+ award: ' ',
+ "bar-chart-2": ' ',
+ "bar-chart": ' ',
+ "battery-charging": ' ',
+ battery: ' ',
+ "bell-off": ' ',
+ bell: ' ',
+ bluetooth: ' ',
+ bold: ' ',
+ "book-open": ' ',
+ book: ' ',
+ bookmark: ' ',
+ box: ' ',
+ briefcase: ' ',
+ calendar: ' ',
+ "camera-off": ' ',
+ camera: ' ',
+ cast: ' ',
+ "check-circle": ' ',
+ "check-square": ' ',
+ check: ' ',
+ "chevron-down": ' ',
+ "chevron-left": ' ',
+ "chevron-right": ' ',
+ "chevron-up": ' ',
+ "chevrons-down": ' ',
+ "chevrons-left": ' ',
+ "chevrons-right": ' ',
+ "chevrons-up": ' ',
+ chrome: ' ',
+ circle: ' ',
+ clipboard: ' ',
+ clock: ' ',
+ "cloud-drizzle": ' ',
+ "cloud-lightning": ' ',
+ "cloud-off": ' ',
+ "cloud-rain": ' ',
+ "cloud-snow": ' ',
+ cloud: ' ',
+ code: ' ',
+ codepen: ' ',
+ codesandbox: ' ',
+ coffee: ' ',
+ columns: ' ',
+ command: ' ',
+ compass: ' ',
+ copy: ' ',
+ "corner-down-left": ' ',
+ "corner-down-right": ' ',
+ "corner-left-down": ' ',
+ "corner-left-up": ' ',
+ "corner-right-down": ' ',
+ "corner-right-up": ' ',
+ "corner-up-left": ' ',
+ "corner-up-right": ' ',
+ cpu: ' ',
+ "credit-card": ' ',
+ crop: ' ',
+ crosshair: ' ',
+ database: ' ',
+ delete: ' ',
+ disc: ' ',
+ "divide-circle": ' ',
+ "divide-square": ' ',
+ divide: ' ',
+ "dollar-sign": ' ',
+ "download-cloud": ' ',
+ download: ' ',
+ dribbble: ' ',
+ droplet: ' ',
+ "edit-2": ' ',
+ "edit-3": ' ',
+ edit: ' ',
+ "external-link": ' ',
+ "eye-off": ' ',
+ eye: ' ',
+ facebook: ' ',
+ "fast-forward": ' ',
+ feather: ' ',
+ figma: ' ',
+ "file-minus": ' ',
+ "file-plus": ' ',
+ "file-text": ' ',
+ file: ' ',
+ film: ' ',
+ filter: ' ',
+ flag: ' ',
+ "folder-minus": ' ',
+ "folder-plus": ' ',
+ folder: ' ',
+ framer: ' ',
+ frown: ' ',
+ gift: ' ',
+ "git-branch": ' ',
+ "git-commit": ' ',
+ "git-merge": ' ',
+ "git-pull-request": ' ',
+ github: ' ',
+ gitlab: ' ',
+ globe: ' ',
+ grid: ' ',
+ "hard-drive": ' ',
+ hash: ' ',
+ headphones: ' ',
+ heart: ' ',
+ "help-circle": ' ',
+ hexagon: ' ',
+ home: ' ',
+ image: ' ',
+ inbox: ' ',
+ info: ' ',
+ instagram: ' ',
+ italic: ' ',
+ key: ' ',
+ layers: ' ',
+ layout: ' ',
+ "life-buoy": ' ',
+ "link-2": ' ',
+ link: ' ',
+ linkedin: ' ',
+ list: ' ',
+ loader: ' ',
+ lock: ' ',
+ "log-in": ' ',
+ "log-out": ' ',
+ mail: ' ',
+ "map-pin": ' ',
+ map: ' ',
+ "maximize-2": ' ',
+ maximize: ' ',
+ meh: ' ',
+ menu: ' ',
+ "message-circle": ' ',
+ "message-square": ' ',
+ "mic-off": ' ',
+ mic: ' ',
+ "minimize-2": ' ',
+ minimize: ' ',
+ "minus-circle": ' ',
+ "minus-square": ' ',
+ minus: ' ',
+ monitor: ' ',
+ moon: ' ',
+ "more-horizontal": ' ',
+ "more-vertical": ' ',
+ "mouse-pointer": ' ',
+ move: ' ',
+ music: ' ',
+ "navigation-2": ' ',
+ navigation: ' ',
+ octagon: ' ',
+ package: ' ',
+ paperclip: ' ',
+ "pause-circle": ' ',
+ pause: ' ',
+ "pen-tool": ' ',
+ percent: ' ',
+ "phone-call": ' ',
+ "phone-forwarded": ' ',
+ "phone-incoming": ' ',
+ "phone-missed": ' ',
+ "phone-off": ' ',
+ "phone-outgoing": ' ',
+ phone: ' ',
+ "pie-chart": ' ',
+ "play-circle": ' ',
+ play: ' ',
+ "plus-circle": ' ',
+ "plus-square": ' ',
+ plus: ' ',
+ pocket: ' ',
+ power: ' ',
+ printer: ' ',
+ radio: ' ',
+ "refresh-ccw": ' ',
+ "refresh-cw": ' ',
+ repeat: ' ',
+ rewind: ' ',
+ "rotate-ccw": ' ',
+ "rotate-cw": ' ',
+ rss: ' ',
+ save: ' ',
+ scissors: ' ',
+ search: ' ',
+ send: ' ',
+ server: ' ',
+ settings: ' ',
+ "share-2": ' ',
+ share: ' ',
+ "shield-off": ' ',
+ shield: ' ',
+ "shopping-bag": ' ',
+ "shopping-cart": ' ',
+ shuffle: ' ',
+ sidebar: ' ',
+ "skip-back": ' ',
+ "skip-forward": ' ',
+ slack: ' ',
+ slash: ' ',
+ sliders: ' ',
+ smartphone: ' ',
+ smile: ' ',
+ speaker: ' ',
+ square: ' ',
+ star: ' ',
+ "stop-circle": ' ',
+ sun: ' ',
+ sunrise: ' ',
+ sunset: ' ',
+ tablet: ' ',
+ tag: ' ',
+ target: ' ',
+ terminal: ' ',
+ thermometer: ' ',
+ "thumbs-down": ' ',
+ "thumbs-up": ' ',
+ "toggle-left": ' ',
+ "toggle-right": ' ',
+ tool: ' ',
+ "trash-2": ' ',
+ trash: ' ',
+ trello: ' ',
+ "trending-down": ' ',
+ "trending-up": ' ',
+ triangle: ' ',
+ truck: ' ',
+ tv: ' ',
+ twitch: ' ',
+ twitter: ' ',
+ type: ' ',
+ umbrella: ' ',
+ underline: ' ',
+ unlock: ' ',
+ "upload-cloud": ' ',
+ upload: ' ',
+ "user-check": ' ',
+ "user-minus": ' ',
+ "user-plus": ' ',
+ "user-x": ' ',
+ user: ' ',
+ users: ' ',
+ "video-off": ' ',
+ video: ' ',
+ voicemail: ' ',
+ "volume-1": ' ',
+ "volume-2": ' ',
+ "volume-x": ' ',
+ volume: ' ',
+ watch: ' ',
+ "wifi-off": ' ',
+ wifi: ' ',
+ wind: ' ',
+ "x-circle": ' ',
+ "x-octagon": ' ',
+ "x-square": ' ',
+ x: ' ',
+ youtube: ' ',
+ "zap-off": ' ',
+ zap: ' ',
+ "zoom-in": ' ',
+ "zoom-out": ' '
+ }
+ }, "./node_modules/classnames/dedupe.js": function (e, t, n) {
+ var i;
+ !function () {
+ "use strict";
+ var n = function () {
+ function e() {
+ }
+
+ function t(e, t) {
+ for (var n = t.length, i = 0; i < n; ++i) a(e, t[i])
+ }
+
+ e.prototype = Object.create(null);
+ var n = {}.hasOwnProperty, i = /\s+/;
+
+ function a(e, a) {
+ if (a) {
+ var r = typeof a;
+ "string" === r ? function (e, t) {
+ for (var n = t.split(i), a = n.length, r = 0; r < a; ++r) e[n[r]] = !0
+ }(e, a) : Array.isArray(a) ? t(e, a) : "object" === r ? function (e, t) {
+ for (var i in t) n.call(t, i) && (e[i] = !!t[i])
+ }(e, a) : "number" === r && function (e, t) {
+ e[t] = !0
+ }(e, a)
+ }
+ }
+
+ return function () {
+ for (var n = arguments.length, i = Array(n), a = 0; a < n; a++) i[a] = arguments[a];
+ var r = new e;
+ t(r, i);
+ var l = [];
+ for (var o in r) r[o] && l.push(o);
+ return l.join(" ")
+ }
+ }();
+ void 0 !== e && e.exports ? e.exports = n : void 0 === (i = function () {
+ return n
+ }.apply(t, [])) || (e.exports = i)
+ }()
+ }, "./node_modules/core-js/es/array/from.js": function (e, t, n) {
+ n("./node_modules/core-js/modules/es.string.iterator.js"), n("./node_modules/core-js/modules/es.array.from.js");
+ var i = n("./node_modules/core-js/internals/path.js");
+ e.exports = i.Array.from
+ }, "./node_modules/core-js/internals/a-function.js": function (e, t) {
+ e.exports = function (e) {
+ if ("function" != typeof e) throw TypeError(String(e) + " is not a function");
+ return e
+ }
+ }, "./node_modules/core-js/internals/an-object.js": function (e, t, n) {
+ var i = n("./node_modules/core-js/internals/is-object.js");
+ e.exports = function (e) {
+ if (!i(e)) throw TypeError(String(e) + " is not an object");
+ return e
+ }
+ }, "./node_modules/core-js/internals/array-from.js": function (e, t, n) {
+ "use strict";
+ var i = n("./node_modules/core-js/internals/bind-context.js"),
+ a = n("./node_modules/core-js/internals/to-object.js"),
+ r = n("./node_modules/core-js/internals/call-with-safe-iteration-closing.js"),
+ l = n("./node_modules/core-js/internals/is-array-iterator-method.js"),
+ o = n("./node_modules/core-js/internals/to-length.js"),
+ s = n("./node_modules/core-js/internals/create-property.js"),
+ d = n("./node_modules/core-js/internals/get-iterator-method.js");
+ e.exports = function (e) {
+ var t, n, u, c, h = a(e), m = "function" == typeof this ? this : Array, f = arguments.length,
+ _ = f > 1 ? arguments[1] : void 0, p = void 0 !== _, g = 0, y = d(h);
+ if (p && (_ = i(_, f > 2 ? arguments[2] : void 0, 2)), null == y || m == Array && l(y)) for (n = new m(t = o(h.length)); t > g; g++) s(n, g, p ? _(h[g], g) : h[g]); else for (c = y.call(h), n = new m; !(u = c.next()).done; g++) s(n, g, p ? r(c, _, [u.value, g], !0) : u.value);
+ return n.length = g, n
+ }
+ }, "./node_modules/core-js/internals/array-includes.js": function (e, t, n) {
+ var i = n("./node_modules/core-js/internals/to-indexed-object.js"),
+ a = n("./node_modules/core-js/internals/to-length.js"),
+ r = n("./node_modules/core-js/internals/to-absolute-index.js");
+ e.exports = function (e) {
+ return function (t, n, l) {
+ var o, s = i(t), d = a(s.length), u = r(l, d);
+ if (e && n != n) {
+ for (; d > u;) if ((o = s[u++]) != o) return !0
+ } else for (; d > u; u++) if ((e || u in s) && s[u] === n) return e || u || 0;
+ return !e && -1
+ }
+ }
+ }, "./node_modules/core-js/internals/bind-context.js": function (e, t, n) {
+ var i = n("./node_modules/core-js/internals/a-function.js");
+ e.exports = function (e, t, n) {
+ if (i(e), void 0 === t) return e;
+ switch (n) {
+ case 0:
+ return function () {
+ return e.call(t)
+ };
+ case 1:
+ return function (n) {
+ return e.call(t, n)
+ };
+ case 2:
+ return function (n, i) {
+ return e.call(t, n, i)
+ };
+ case 3:
+ return function (n, i, a) {
+ return e.call(t, n, i, a)
+ }
+ }
+ return function () {
+ return e.apply(t, arguments)
+ }
+ }
+ }, "./node_modules/core-js/internals/call-with-safe-iteration-closing.js": function (e, t, n) {
+ var i = n("./node_modules/core-js/internals/an-object.js");
+ e.exports = function (e, t, n, a) {
+ try {
+ return a ? t(i(n)[0], n[1]) : t(n)
+ } catch (t) {
+ var r = e.return;
+ throw void 0 !== r && i(r.call(e)), t
+ }
+ }
+ }, "./node_modules/core-js/internals/check-correctness-of-iteration.js": function (e, t, n) {
+ var i = n("./node_modules/core-js/internals/well-known-symbol.js")("iterator"), a = !1;
+ try {
+ var r = 0, l = {
+ next: function () {
+ return {done: !!r++}
+ }, return: function () {
+ a = !0
+ }
+ };
+ l[i] = function () {
+ return this
+ }, Array.from(l, (function () {
+ throw 2
+ }))
+ } catch (e) {
+ }
+ e.exports = function (e, t) {
+ if (!t && !a) return !1;
+ var n = !1;
+ try {
+ var r = {};
+ r[i] = function () {
+ return {
+ next: function () {
+ return {done: n = !0}
+ }
+ }
+ }, e(r)
+ } catch (e) {
+ }
+ return n
+ }
+ }, "./node_modules/core-js/internals/classof-raw.js": function (e, t) {
+ var n = {}.toString;
+ e.exports = function (e) {
+ return n.call(e).slice(8, -1)
+ }
+ }, "./node_modules/core-js/internals/classof.js": function (e, t, n) {
+ var i = n("./node_modules/core-js/internals/classof-raw.js"),
+ a = n("./node_modules/core-js/internals/well-known-symbol.js")("toStringTag"),
+ r = "Arguments" == i(function () {
+ return arguments
+ }());
+ e.exports = function (e) {
+ var t, n, l;
+ return void 0 === e ? "Undefined" : null === e ? "Null" : "string" == typeof (n = function (e, t) {
+ try {
+ return e[t]
+ } catch (e) {
+ }
+ }(t = Object(e), a)) ? n : r ? i(t) : "Object" == (l = i(t)) && "function" == typeof t.callee ? "Arguments" : l
+ }
+ }, "./node_modules/core-js/internals/copy-constructor-properties.js": function (e, t, n) {
+ var i = n("./node_modules/core-js/internals/has.js"),
+ a = n("./node_modules/core-js/internals/own-keys.js"),
+ r = n("./node_modules/core-js/internals/object-get-own-property-descriptor.js"),
+ l = n("./node_modules/core-js/internals/object-define-property.js");
+ e.exports = function (e, t) {
+ for (var n = a(t), o = l.f, s = r.f, d = 0; d < n.length; d++) {
+ var u = n[d];
+ i(e, u) || o(e, u, s(t, u))
+ }
+ }
+ }, "./node_modules/core-js/internals/correct-prototype-getter.js": function (e, t, n) {
+ var i = n("./node_modules/core-js/internals/fails.js");
+ e.exports = !i((function () {
+ function e() {
+ }
+
+ return e.prototype.constructor = null, Object.getPrototypeOf(new e) !== e.prototype
+ }))
+ }, "./node_modules/core-js/internals/create-iterator-constructor.js": function (e, t, n) {
+ "use strict";
+ var i = n("./node_modules/core-js/internals/iterators-core.js").IteratorPrototype,
+ a = n("./node_modules/core-js/internals/object-create.js"),
+ r = n("./node_modules/core-js/internals/create-property-descriptor.js"),
+ l = n("./node_modules/core-js/internals/set-to-string-tag.js"),
+ o = n("./node_modules/core-js/internals/iterators.js"), s = function () {
+ return this
+ };
+ e.exports = function (e, t, n) {
+ var d = t + " Iterator";
+ return e.prototype = a(i, {next: r(1, n)}), l(e, d, !1, !0), o[d] = s, e
+ }
+ }, "./node_modules/core-js/internals/create-property-descriptor.js": function (e, t) {
+ e.exports = function (e, t) {
+ return {enumerable: !(1 & e), configurable: !(2 & e), writable: !(4 & e), value: t}
+ }
+ }, "./node_modules/core-js/internals/create-property.js": function (e, t, n) {
+ "use strict";
+ var i = n("./node_modules/core-js/internals/to-primitive.js"),
+ a = n("./node_modules/core-js/internals/object-define-property.js"),
+ r = n("./node_modules/core-js/internals/create-property-descriptor.js");
+ e.exports = function (e, t, n) {
+ var l = i(t);
+ l in e ? a.f(e, l, r(0, n)) : e[l] = n
+ }
+ }, "./node_modules/core-js/internals/define-iterator.js": function (e, t, n) {
+ "use strict";
+ var i = n("./node_modules/core-js/internals/export.js"),
+ a = n("./node_modules/core-js/internals/create-iterator-constructor.js"),
+ r = n("./node_modules/core-js/internals/object-get-prototype-of.js"),
+ l = n("./node_modules/core-js/internals/object-set-prototype-of.js"),
+ o = n("./node_modules/core-js/internals/set-to-string-tag.js"),
+ s = n("./node_modules/core-js/internals/hide.js"),
+ d = n("./node_modules/core-js/internals/redefine.js"),
+ u = n("./node_modules/core-js/internals/well-known-symbol.js"),
+ c = n("./node_modules/core-js/internals/is-pure.js"),
+ h = n("./node_modules/core-js/internals/iterators.js"),
+ m = n("./node_modules/core-js/internals/iterators-core.js"), f = m.IteratorPrototype,
+ _ = m.BUGGY_SAFARI_ITERATORS, p = u("iterator"), g = "keys", y = "values", v = "entries",
+ M = function () {
+ return this
+ };
+ e.exports = function (e, t, n, u, m, b, x) {
+ a(n, t, u);
+ var L, w, k, Y = function (e) {
+ if (e === m && E) return E;
+ if (!_ && e in S) return S[e];
+ switch (e) {
+ case g:
+ case y:
+ case v:
+ return function () {
+ return new n(this, e)
+ }
+ }
+ return function () {
+ return new n(this)
+ }
+ }, D = t + " Iterator", T = !1, S = e.prototype, j = S[p] || S["@@iterator"] || m && S[m],
+ E = !_ && j || Y(m), H = "Array" == t && S.entries || j;
+ if (H && (L = r(H.call(new e)), f !== Object.prototype && L.next && (c || r(L) === f || (l ? l(L, f) : "function" != typeof L[p] && s(L, p, M)), o(L, D, !0, !0), c && (h[D] = M))), m == y && j && j.name !== y && (T = !0, E = function () {
+ return j.call(this)
+ }), c && !x || S[p] === E || s(S, p, E), h[t] = E, m) if (w = {
+ values: Y(y),
+ keys: b ? E : Y(g),
+ entries: Y(v)
+ }, x) for (k in w) (_ || T || !(k in S)) && d(S, k, w[k]); else i({
+ target: t,
+ proto: !0,
+ forced: _ || T
+ }, w);
+ return w
+ }
+ }, "./node_modules/core-js/internals/descriptors.js": function (e, t, n) {
+ var i = n("./node_modules/core-js/internals/fails.js");
+ e.exports = !i((function () {
+ return 7 != Object.defineProperty({}, "a", {
+ get: function () {
+ return 7
+ }
+ }).a
+ }))
+ }, "./node_modules/core-js/internals/document-create-element.js": function (e, t, n) {
+ var i = n("./node_modules/core-js/internals/global.js"),
+ a = n("./node_modules/core-js/internals/is-object.js"), r = i.document,
+ l = a(r) && a(r.createElement);
+ e.exports = function (e) {
+ return l ? r.createElement(e) : {}
+ }
+ }, "./node_modules/core-js/internals/enum-bug-keys.js": function (e, t) {
+ e.exports = ["constructor", "hasOwnProperty", "isPrototypeOf", "propertyIsEnumerable", "toLocaleString", "toString", "valueOf"]
+ }, "./node_modules/core-js/internals/export.js": function (e, t, n) {
+ var i = n("./node_modules/core-js/internals/global.js"),
+ a = n("./node_modules/core-js/internals/object-get-own-property-descriptor.js").f,
+ r = n("./node_modules/core-js/internals/hide.js"),
+ l = n("./node_modules/core-js/internals/redefine.js"),
+ o = n("./node_modules/core-js/internals/set-global.js"),
+ s = n("./node_modules/core-js/internals/copy-constructor-properties.js"),
+ d = n("./node_modules/core-js/internals/is-forced.js");
+ e.exports = function (e, t) {
+ var n, u, c, h, m, f = e.target, _ = e.global, p = e.stat;
+ if (n = _ ? i : p ? i[f] || o(f, {}) : (i[f] || {}).prototype) for (u in t) {
+ if (h = t[u], c = e.noTargetGet ? (m = a(n, u)) && m.value : n[u], !d(_ ? u : f + (p ? "." : "#") + u, e.forced) && void 0 !== c) {
+ if (typeof h == typeof c) continue;
+ s(h, c)
+ }
+ (e.sham || c && c.sham) && r(h, "sham", !0), l(n, u, h, e)
+ }
+ }
+ }, "./node_modules/core-js/internals/fails.js": function (e, t) {
+ e.exports = function (e) {
+ try {
+ return !!e()
+ } catch (e) {
+ return !0
+ }
+ }
+ }, "./node_modules/core-js/internals/function-to-string.js": function (e, t, n) {
+ var i = n("./node_modules/core-js/internals/shared.js");
+ e.exports = i("native-function-to-string", Function.toString)
+ }, "./node_modules/core-js/internals/get-iterator-method.js": function (e, t, n) {
+ var i = n("./node_modules/core-js/internals/classof.js"),
+ a = n("./node_modules/core-js/internals/iterators.js"),
+ r = n("./node_modules/core-js/internals/well-known-symbol.js")("iterator");
+ e.exports = function (e) {
+ if (null != e) return e[r] || e["@@iterator"] || a[i(e)]
+ }
+ }, "./node_modules/core-js/internals/global.js": function (e, t, n) {
+ (function (t) {
+ var n = "object", i = function (e) {
+ return e && e.Math == Math && e
+ };
+ e.exports = i(typeof globalThis == n && globalThis) || i(typeof window == n && window) || i(typeof self == n && self) || i(typeof t == n && t) || Function("return this")()
+ }).call(this, n("./node_modules/webpack/buildin/global.js"))
+ }, "./node_modules/core-js/internals/has.js": function (e, t) {
+ var n = {}.hasOwnProperty;
+ e.exports = function (e, t) {
+ return n.call(e, t)
+ }
+ }, "./node_modules/core-js/internals/hidden-keys.js": function (e, t) {
+ e.exports = {}
+ }, "./node_modules/core-js/internals/hide.js": function (e, t, n) {
+ var i = n("./node_modules/core-js/internals/descriptors.js"),
+ a = n("./node_modules/core-js/internals/object-define-property.js"),
+ r = n("./node_modules/core-js/internals/create-property-descriptor.js");
+ e.exports = i ? function (e, t, n) {
+ return a.f(e, t, r(1, n))
+ } : function (e, t, n) {
+ return e[t] = n, e
+ }
+ }, "./node_modules/core-js/internals/html.js": function (e, t, n) {
+ var i = n("./node_modules/core-js/internals/global.js").document;
+ e.exports = i && i.documentElement
+ }, "./node_modules/core-js/internals/ie8-dom-define.js": function (e, t, n) {
+ var i = n("./node_modules/core-js/internals/descriptors.js"),
+ a = n("./node_modules/core-js/internals/fails.js"),
+ r = n("./node_modules/core-js/internals/document-create-element.js");
+ e.exports = !i && !a((function () {
+ return 7 != Object.defineProperty(r("div"), "a", {
+ get: function () {
+ return 7
+ }
+ }).a
+ }))
+ }, "./node_modules/core-js/internals/indexed-object.js": function (e, t, n) {
+ var i = n("./node_modules/core-js/internals/fails.js"),
+ a = n("./node_modules/core-js/internals/classof-raw.js"), r = "".split;
+ e.exports = i((function () {
+ return !Object("z").propertyIsEnumerable(0)
+ })) ? function (e) {
+ return "String" == a(e) ? r.call(e, "") : Object(e)
+ } : Object
+ }, "./node_modules/core-js/internals/internal-state.js": function (e, t, n) {
+ var i, a, r, l = n("./node_modules/core-js/internals/native-weak-map.js"),
+ o = n("./node_modules/core-js/internals/global.js"),
+ s = n("./node_modules/core-js/internals/is-object.js"),
+ d = n("./node_modules/core-js/internals/hide.js"), u = n("./node_modules/core-js/internals/has.js"),
+ c = n("./node_modules/core-js/internals/shared-key.js"),
+ h = n("./node_modules/core-js/internals/hidden-keys.js"), m = o.WeakMap;
+ if (l) {
+ var f = new m, _ = f.get, p = f.has, g = f.set;
+ i = function (e, t) {
+ return g.call(f, e, t), t
+ }, a = function (e) {
+ return _.call(f, e) || {}
+ }, r = function (e) {
+ return p.call(f, e)
+ }
+ } else {
+ var y = c("state");
+ h[y] = !0, i = function (e, t) {
+ return d(e, y, t), t
+ }, a = function (e) {
+ return u(e, y) ? e[y] : {}
+ }, r = function (e) {
+ return u(e, y)
+ }
+ }
+ e.exports = {
+ set: i, get: a, has: r, enforce: function (e) {
+ return r(e) ? a(e) : i(e, {})
+ }, getterFor: function (e) {
+ return function (t) {
+ var n;
+ if (!s(t) || (n = a(t)).type !== e) throw TypeError("Incompatible receiver, " + e + " required");
+ return n
+ }
+ }
+ }
+ }, "./node_modules/core-js/internals/is-array-iterator-method.js": function (e, t, n) {
+ var i = n("./node_modules/core-js/internals/well-known-symbol.js"),
+ a = n("./node_modules/core-js/internals/iterators.js"), r = i("iterator"), l = Array.prototype;
+ e.exports = function (e) {
+ return void 0 !== e && (a.Array === e || l[r] === e)
+ }
+ }, "./node_modules/core-js/internals/is-forced.js": function (e, t, n) {
+ var i = n("./node_modules/core-js/internals/fails.js"), a = /#|\.prototype\./, r = function (e, t) {
+ var n = o[l(e)];
+ return n == d || n != s && ("function" == typeof t ? i(t) : !!t)
+ }, l = r.normalize = function (e) {
+ return String(e).replace(a, ".").toLowerCase()
+ }, o = r.data = {}, s = r.NATIVE = "N", d = r.POLYFILL = "P";
+ e.exports = r
+ }, "./node_modules/core-js/internals/is-object.js": function (e, t) {
+ e.exports = function (e) {
+ return "object" == typeof e ? null !== e : "function" == typeof e
+ }
+ }, "./node_modules/core-js/internals/is-pure.js": function (e, t) {
+ e.exports = !1
+ }, "./node_modules/core-js/internals/iterators-core.js": function (e, t, n) {
+ "use strict";
+ var i, a, r, l = n("./node_modules/core-js/internals/object-get-prototype-of.js"),
+ o = n("./node_modules/core-js/internals/hide.js"), s = n("./node_modules/core-js/internals/has.js"),
+ d = n("./node_modules/core-js/internals/well-known-symbol.js"),
+ u = n("./node_modules/core-js/internals/is-pure.js"), c = d("iterator"), h = !1;
+ [].keys && ("next" in (r = [].keys()) ? (a = l(l(r))) !== Object.prototype && (i = a) : h = !0), null == i && (i = {}), u || s(i, c) || o(i, c, (function () {
+ return this
+ })), e.exports = {IteratorPrototype: i, BUGGY_SAFARI_ITERATORS: h}
+ }, "./node_modules/core-js/internals/iterators.js": function (e, t) {
+ e.exports = {}
+ }, "./node_modules/core-js/internals/native-symbol.js": function (e, t, n) {
+ var i = n("./node_modules/core-js/internals/fails.js");
+ e.exports = !!Object.getOwnPropertySymbols && !i((function () {
+ return !String(Symbol())
+ }))
+ }, "./node_modules/core-js/internals/native-weak-map.js": function (e, t, n) {
+ var i = n("./node_modules/core-js/internals/global.js"),
+ a = n("./node_modules/core-js/internals/function-to-string.js"), r = i.WeakMap;
+ e.exports = "function" == typeof r && /native code/.test(a.call(r))
+ }, "./node_modules/core-js/internals/object-create.js": function (e, t, n) {
+ var i = n("./node_modules/core-js/internals/an-object.js"),
+ a = n("./node_modules/core-js/internals/object-define-properties.js"),
+ r = n("./node_modules/core-js/internals/enum-bug-keys.js"),
+ l = n("./node_modules/core-js/internals/hidden-keys.js"),
+ o = n("./node_modules/core-js/internals/html.js"),
+ s = n("./node_modules/core-js/internals/document-create-element.js"),
+ d = n("./node_modules/core-js/internals/shared-key.js")("IE_PROTO"), u = function () {
+ }, c = function () {
+ var e, t = s("iframe"), n = r.length;
+ for (t.style.display = "none", o.appendChild(t), t.src = String("javascript:"), (e = t.contentWindow.document).open(), e.write("
\ No newline at end of file
diff --git a/frontend/src/components/BadgeSelectField.vue b/frontend/src/components/BadgeSelectField.vue
new file mode 100644
index 0000000..2ad407b
--- /dev/null
+++ b/frontend/src/components/BadgeSelectField.vue
@@ -0,0 +1,206 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/frontend/src/components/BaseLayout.vue b/frontend/src/components/BaseLayout.vue
index 21b3d75..885e108 100644
--- a/frontend/src/components/BaseLayout.vue
+++ b/frontend/src/components/BaseLayout.vue
@@ -6,6 +6,14 @@
+
+
@@ -14,14 +22,27 @@
+
+
\ No newline at end of file
diff --git a/frontend/src/components/CombinedFileField.vue b/frontend/src/components/CombinedFileField.vue
new file mode 100644
index 0000000..c5430b0
--- /dev/null
+++ b/frontend/src/components/CombinedFileField.vue
@@ -0,0 +1,193 @@
+
+
+ Create New
+ Update
+
+
+ {{ file.name }}
+
+
+ {{ file.name }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/frontend/src/components/DeletableWrapper.vue b/frontend/src/components/DeletableWrapper.vue
new file mode 100644
index 0000000..d357a01
--- /dev/null
+++ b/frontend/src/components/DeletableWrapper.vue
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/frontend/src/components/DragDropFileSource.vue b/frontend/src/components/DragDropFileSource.vue
new file mode 100644
index 0000000..6646ef5
--- /dev/null
+++ b/frontend/src/components/DragDropFileSource.vue
@@ -0,0 +1,88 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/frontend/src/components/FsFileSource.vue b/frontend/src/components/FsFileSource.vue
new file mode 100644
index 0000000..29bff9a
--- /dev/null
+++ b/frontend/src/components/FsFileSource.vue
@@ -0,0 +1,59 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/frontend/src/components/Messages.vue b/frontend/src/components/Messages.vue
new file mode 100644
index 0000000..5ff485c
--- /dev/null
+++ b/frontend/src/components/Messages.vue
@@ -0,0 +1,112 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/frontend/src/components/Notifications.vue b/frontend/src/components/Notifications.vue
new file mode 100644
index 0000000..9ed61b3
--- /dev/null
+++ b/frontend/src/components/Notifications.vue
@@ -0,0 +1,99 @@
+
+
+
+
+
+ {{
+ top_notifications.length
+ }}
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/frontend/src/components/PropertyBadge.vue b/frontend/src/components/PropertyBadge.vue
new file mode 100644
index 0000000..86084cc
--- /dev/null
+++ b/frontend/src/components/PropertyBadge.vue
@@ -0,0 +1,115 @@
+
+
+
+ {{ property.name }} =
+
+
+
+ {{ property.unit_symbol }}
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/frontend/src/components/PropertyField.vue b/frontend/src/components/PropertyField.vue
new file mode 100644
index 0000000..7681d16
--- /dev/null
+++ b/frontend/src/components/PropertyField.vue
@@ -0,0 +1,89 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/frontend/src/components/SearchBox.vue b/frontend/src/components/SearchBox.vue
new file mode 100644
index 0000000..ad7a323
--- /dev/null
+++ b/frontend/src/components/SearchBox.vue
@@ -0,0 +1,54 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/frontend/src/components/Sidebar.vue b/frontend/src/components/Sidebar.vue
index 8643cbd..b6dd9dc 100644
--- a/frontend/src/components/Sidebar.vue
+++ b/frontend/src/components/Sidebar.vue
@@ -9,6 +9,36 @@
+
+
+
+
+
@@ -68,6 +98,19 @@ export default {
flex-grow: 1
}
+.sidebar-link, a.sidebar-link {
+ display: block;
+ padding: .625rem 1.625rem;
+ font-weight: 400;
+ transition: background .1s ease-in-out;
+ position: relative;
+ text-decoration: none;
+ cursor: pointer;
+ color: #e9ecef80;
+ background: #222e3c;
+ border-left: 3px solid transparent;
+}
+
.sidebar-link i, .sidebar-link svg, a.sidebar-link i, a.sidebar-link svg {
margin-right: .75rem;
color: rgba(233, 236, 239, .5)
diff --git a/frontend/src/components/TagField.vue b/frontend/src/components/TagField.vue
new file mode 100644
index 0000000..c5f78fc
--- /dev/null
+++ b/frontend/src/components/TagField.vue
@@ -0,0 +1,78 @@
+
+
+
+
+ {{ option }}
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/frontend/src/components/UserDropdown.vue b/frontend/src/components/UserDropdown.vue
new file mode 100644
index 0000000..4b631b5
--- /dev/null
+++ b/frontend/src/components/UserDropdown.vue
@@ -0,0 +1,59 @@
+
+
+
+
+
+
+
+
+
+
+ {{ username }}
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/frontend/src/components/WebcamFileSource.vue b/frontend/src/components/WebcamFileSource.vue
new file mode 100644
index 0000000..3605a79
--- /dev/null
+++ b/frontend/src/components/WebcamFileSource.vue
@@ -0,0 +1,201 @@
+
+
+
+
+
+
+
+
+
+
+ {{ lastError }}
+
+
+
+
+ Video stream not available.
+
+
+
+
+
+ Capture
+
+
+ Retake
+
+
+ Save
+
+
+
+ Select Camera Source
+
+ {{ camera.label }}
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/frontend/src/dns.js b/frontend/src/dns.js
index f07ea22..5b964dd 100644
--- a/frontend/src/dns.js
+++ b/frontend/src/dns.js
@@ -13,9 +13,13 @@ function get_prefered_server() {
request.open('GET', '/local/dns', false);
request.send(null);
if (request.status === 200) {
- const servers = JSON.parse(request.responseText);
- if (servers && servers.length > 0) {
- return servers;
+ try {
+ const servers = JSON.parse(request.responseText);
+ if (servers && servers.length > 0) {
+ return servers;
+ }
+ } catch (e) {
+ console.error(e);
}
}
return ['1.1.1.1', '8.8.8.8'];
@@ -31,6 +35,7 @@ class FallBackResolver {
const key = domain + ':' + type;
if (key in this._cache && this._cache[key].time > Date.now() - 1000 * 60 * 60) {
const age_seconds = Math.ceil(Date.now() / 1000 - this._cache[key].time / 1000);
+ //console.log('cache hit', key, this._cache[key].ttl - age_seconds);
return [this._cache[key].data];
}
const result = await query(
@@ -43,6 +48,7 @@ class FallBackResolver {
const first = result.answers[0];
this._cache[key] = {time: Date.now(), ...first}; // TODO hadle multiple answers
localStorage.setItem('dns-cache', JSON.stringify(this._cache));
+ //console.log('cache miss', key, first.ttl);
return [first.data];
}
}
diff --git a/frontend/src/federation.js b/frontend/src/federation.js
index 9afe33c..405fd3c 100644
--- a/frontend/src/federation.js
+++ b/frontend/src/federation.js
@@ -179,9 +179,10 @@ class ServerSet {
}
const url = "https://" + server + target // TODO https
return await fetch(url, {
- method: 'GET',
+ method: 'PUT',
headers: {
- ...auth.buildAuthHeader(url)
+ 'Content-Type': 'application/json',
+ ...auth.buildAuthHeader(url, data)
},
credentials: 'omit'
}).catch(err => {
@@ -190,7 +191,35 @@ class ServerSet {
}
)
} catch (e) {
- console.error('get from server failed', server, e)
+ console.error('put to server failed', server, e)
+ }
+ }
+ throw new Error('all servers failed')
+ }
+
+ async delete(auth, target) {
+ if (!auth || typeof auth.buildAuthHeader !== 'function') {
+ throw new Error('no auth')
+ }
+ for (const server of this.servers) {
+ try {
+ if (this.unreachable_neighbors.queryUnreachable(server)) {
+ continue
+ }
+ const url = "https://" + server + target // TODO https
+ return await fetch(url, {
+ method: 'DELETE',
+ headers: {
+ ...auth.buildAuthHeader(url)
+ },
+ credentials: 'omit'
+ }).catch(err => {
+ console.error('delete from server failed', server, err)
+ this.unreachable_neighbors.unreachable(server)
+ }
+ )
+ } catch (e) {
+ console.error('delete from server failed', server, e)
}
}
throw new Error('all servers failed')
@@ -278,6 +307,87 @@ class ServerSetUnion {
}
+class ServerSetUnion {
+ constructor(serverSets) {
+ if (!serverSets || !Array.isArray(serverSets)) {
+ throw new Error('no serverSets')
+ }
+ this.serverSets = serverSets;
+ }
+
+ add(serverset) {
+ if (!serverset || !(serverset instanceof ServerSet)) {
+ throw new Error('no serverset')
+ }
+ if (this.serverSets.find(s => serverset.servers.every(s2 => s.servers.includes(s2)))) {
+ console.warn('serverset already in union', serverset)
+ return
+ }
+ this.serverSets.push(serverset)
+ }
+
+ async get(auth, target) {
+ try {
+ return await this.serverSets.reduce(async (acc, serverset) => {
+ return acc.then(async (acc) => {
+ return acc.concat(await serverset.get(auth, target))
+ })
+ }, Promise.resolve([]))
+ } catch (e) {
+ throw new Error('all servers failed')
+ }
+ }
+
+ async post(auth, target, data) {
+ try {
+ return await this.serverSets.reduce(async (acc, serverset) => {
+ return acc.then(async (acc) => {
+ return acc.concat(await serverset.post(auth, target, data))
+ })
+ }, Promise.resolve([]))
+ } catch (e) {
+ throw new Error('all servers failed')
+ }
+ }
+
+ async patch(auth, target, data) {
+ try {
+ return await this.serverSets.reduce(async (acc, serverset) => {
+ return acc.then(async (acc) => {
+ return acc.concat(await serverset.patch(auth, target, data))
+ })
+ }, Promise.resolve([]))
+ } catch (e) {
+ throw new Error('all servers failed')
+ }
+ }
+
+ async put(auth, target, data) {
+ try {
+ return await this.serverSets.reduce(async (acc, serverset) => {
+ return acc.then(async (acc) => {
+ return acc.concat(await serverset.put(auth, target, data))
+ })
+ }, Promise.resolve([]))
+ } catch (e) {
+ throw new Error('all servers failed')
+ }
+ }
+
+ async delete(auth, target) {
+ try {
+ return await this.serverSets.reduce(async (acc, serverset) => {
+ return acc.then(async (acc) => {
+ return acc.concat(await serverset.delete(auth, target))
+ })
+ }, Promise.resolve([]))
+ } catch (e) {
+ throw new Error('all servers failed')
+ }
+ }
+}
+
+
class authMethod {
constructor(method, auth) {
this.method = method;
diff --git a/frontend/src/main.js b/frontend/src/main.js
index 2277ac2..f7b79e5 100644
--- a/frontend/src/main.js
+++ b/frontend/src/main.js
@@ -1,4 +1,5 @@
import {createApp} from 'vue'
+//import { BootstrapVue, BootstrapVueIcons } from 'bootstrap-vue'
import {BootstrapIconsPlugin} from 'bootstrap-icons-vue';
import App from './App.vue'
diff --git a/frontend/src/router.js b/frontend/src/router.js
index 1602093..bd24b1f 100644
--- a/frontend/src/router.js
+++ b/frontend/src/router.js
@@ -1,28 +1,48 @@
import {createRouter, createWebHistory} from 'vue-router'
-import Index from '@/views/Index.vue';
+import Dashboard from '@/views/Dashboard.vue';
import Login from '@/views/Login.vue';
import Register from '@/views/Register.vue';
+import store from '@/store';
+import Profile from '@/views/Profile.vue';
+import Settings from '@/views/Settings.vue';
+import Friends from '@/views/Friends.vue';
+import Inventory from '@/views/Inventory.vue';
+import Search from '@/views/Search.vue';
+import InventoryDetail from '@/views/InventoryDetail.vue';
+import InventoryNew from '@/views/InventoryNew.vue';
+import InventoryEdit from '@/views/InventoryEdit.vue';
+import Admin from '@/views/Admin.vue';
+import Swatch from '@/views/Swatch.vue';
+import Files from '@/views/Files.vue';
const routes = [
- {path: '/', component: Index, meta: {requiresAuth: true}},
+ {path: '/', component: Dashboard, meta: {requiresAuth: true}},
+ {path: '/profile', component: Profile, meta: {requiresAuth: true}},
+ {path: '/settings', component: Settings, meta: {requiresAuth: true}},
+ {path: '/inventory', component: Inventory, meta: {requiresAuth: true}},
+ {path: '/inventory/:id', component: InventoryDetail, meta: {requiresAuth: true}, props: true},
+ {path: '/inventory/:id/edit', component: InventoryEdit, meta: {requiresAuth: true}, props: true},
+ {path: '/inventory/new', component: InventoryNew, meta: {requiresAuth: true}},
+ {path: '/friends', component: Friends, meta: {requiresAuth: true}},
+ {path: '/files', component: Files, meta: {requiresAuth: true}},
+ {path: '/admin', component: Admin, meta: {requiresAuth: true}},
+ {path: '/swatch', component: Swatch, meta: {requiresAuth: true}},
+ {path: '/search/:query', component: Search, meta: {requiresAuth: true}, props: true},
{path: '/login', component: Login, meta: {requiresAuth: false}},
{path: '/register', component: Register, meta: {requiresAuth: false}},
+ {path: '/:pathMatch(.*)*', redirect: '/'}
]
const router = createRouter({
- // 4. Provide the history implementation to use. We are using the hash history for simplicity here.
history: createWebHistory(),
linkActiveClass: "active",
- routes, // short for `routes: routes`
+ routes,
})
router.beforeEach((to/*, from*/) => {
- // instead of having to check every route record with
- // to.matched.some(record => record.meta.requiresAuth)
- if (to.meta.requiresAuth && false) {
- // this route requires auth, check if logged in
- // if not, redirect to login page.
+ // if this route requires auth, check if logged in, if not, redirect to login page.
+ if (to.meta.requiresAuth && !store.getters.isLoggedIn) {
console.log("Not logged in, redirecting to login page")
return {
path: '/login',
diff --git a/frontend/src/scss/_card.scss b/frontend/src/scss/_card.scss
index 49d9171..edc8a4a 100644
--- a/frontend/src/scss/_card.scss
+++ b/frontend/src/scss/_card.scss
@@ -9,6 +9,7 @@
.card-header {
background-color: map-get($theme-colors, background-1);
border-bottom: 0 solid transparent;
+ padding: 1rem 1.25rem;
}
.card-title {
diff --git a/frontend/src/scss/_tags.scss b/frontend/src/scss/_tags.scss
new file mode 100644
index 0000000..9d29752
--- /dev/null
+++ b/frontend/src/scss/_tags.scss
@@ -0,0 +1,3 @@
+.badge {
+ color: #fff;
+}
\ No newline at end of file
diff --git a/frontend/src/scss/toolshed.scss b/frontend/src/scss/toolshed.scss
index 160f891..b099f5f 100644
--- a/frontend/src/scss/toolshed.scss
+++ b/frontend/src/scss/toolshed.scss
@@ -90,6 +90,7 @@ $body-color: $gray-700;
@import "card";
@import "forms";
+@import "tags";
#root, body, html {
height: 100%;
diff --git a/frontend/src/store.js b/frontend/src/store.js
index 6d0dd73..f7aece2 100644
--- a/frontend/src/store.js
+++ b/frontend/src/store.js
@@ -13,9 +13,20 @@ export default createStore({
token: null,
keypair: null,
remember: false,
+ friends: [],
+ item_map: {},
home_servers: null,
+ all_friends_servers: null,
+ messages: [],
resolver: new FallBackResolver(),
unreachable_neighbors: new NeighborsCache(),
+ tags: [],
+ properties: [],
+ files: [],
+ categories: [],
+ availability_policies: [],
+ domains: [],
+ storage_locations: [],
},
mutations: {
setUser(state, user) {
@@ -42,9 +53,39 @@ export default createStore({
}
localStorage.setItem('remember', remember);
},
+ setInventoryItems(state, {url, items}) {
+ state.item_map[url] = items;
+ },
+ setFriends(state, friends) {
+ state.friends = friends;
+ },
setHomeServers(state, home_servers) {
state.home_servers = home_servers;
},
+ setAllFriendsServers(state, servers) {
+ state.all_friends_servers = servers;
+ },
+ setTags(state, tags) {
+ state.tags = tags;
+ },
+ setProperties(state, properties) {
+ state.properties = properties;
+ },
+ setCategories(state, categories) {
+ state.categories = categories;
+ },
+ setAvailabilityPolicies(state, availability_policies) {
+ state.availability_policies = availability_policies;
+ },
+ setDomains(state, domains) {
+ state.domains = domains;
+ },
+ setStorageLocations(state, storage_locations) {
+ state.storage_locations = storage_locations;
+ },
+ setFiles(state, files) {
+ state.files = files;
+ },
logout(state) {
state.user = null;
state.token = null;
@@ -67,6 +108,7 @@ export default createStore({
if (keypair) {
this.commit('setKey', keypair)
}
+ router.push('/');
}
state.cache_loaded = true;
}
@@ -74,13 +116,12 @@ export default createStore({
actions: {
async login({commit, dispatch, state, getters}, {username, password, remember}) {
commit('setRemember', remember);
- const data = await dispatch('lookupServer', {username}).then(servers => new ServerSet(servers, state.unreachable_neighbors))
- .then(set => set.post(getters.nullAuth, '/auth/token/', {username, password}))
+ const s = await dispatch('lookupServer', {username}).then(servers => new ServerSet(servers, state.unreachable_neighbors))
+ const data = await s.post(getters.nullAuth, '/auth/token/', {username, password})
if (data.token && data.key) {
commit('setToken', data.token);
commit('setUser', username);
commit('setKey', data.key);
- const s = await dispatch('lookupServer', {username}).then(servers => new ServerSet(servers, state.unreachable_neighbors))
commit('setHomeServers', s)
return true;
} else {
@@ -89,6 +130,12 @@ export default createStore({
},
async lookupServer({state}, {username}) {
const domain = username.split('@')[1]
+ if (domain === 'localhost')
+ return ['localhost:5173'];
+ if (domain === 'example.com')
+ return ['localhost:5173'];
+ if (domain === 'example.jedi')
+ return ['localhost:5173'];
const request = '_toolshed-server._tcp.' + domain + '.'
return await state.resolver.query(request, 'SRV').then(
(result) => result.map(
@@ -101,9 +148,221 @@ export default createStore({
commit('setHomeServers', promise)
return promise
},
+ async getAllKnownServers({state, dispatch, commit}) {
+ const friends = await dispatch('fetchFriends')
+ if (state.all_friends_servers)
+ return state.all_friends_servers
+ const promise = (async () => {
+ const servers = new ServerSetUnion([])
+ const home = await dispatch('getHomeServers')
+ servers.add(home)
+ for (const friend of friends) {
+ const s = await dispatch('lookupServer', {username: friend.username})
+ servers.add(new ServerSet(s, state.unreachable_neighbors))
+ }
+ return servers
+ })()
+ commit('setAllFriendsServers', promise)
+ return promise
+ },
async getFriendServers({state, dispatch, commit}, {username}) {
return dispatch('lookupServer', {username}).then(servers => new ServerSet(servers, state.unreachable_neighbors))
},
+ async fetchInventoryItems({commit, dispatch, getters}) {
+ const servers = await dispatch('getHomeServers')
+ const items = await servers.get(getters.signAuth, '/api/inventory_items/')
+ items.map(item => item.files.map(file => file.owner = item.owner))
+ commit('setInventoryItems', {url: '/', items})
+ return items
+ },
+ async createInventoryItem({state, dispatch, getters}, item) {
+ const servers = await dispatch('getHomeServers')
+ const data = {availability_policy: 'private', ...item}
+ const reply = await servers.post(getters.signAuth, '/api/inventory_items/', data)
+ state.last_load.files = 0
+ return reply
+ },
+ async updateInventoryItem({state, dispatch, getters}, item) {
+ const servers = await dispatch('getHomeServers')
+ const data = {availability_policy: 'friends', ...item}
+ data.files = data.files.map(file => file.id)
+ return await servers.patch(getters.signAuth, '/api/inventory_items/' + item.id + '/', data)
+ },
+ async deleteInventoryItem({state, dispatch, getters}, item) {
+ const servers = await dispatch('getHomeServers')
+ const ret = await servers.delete(getters.signAuth, '/api/inventory_items/' + item.id + '/')
+ dispatch('fetchInventoryItems')
+ return ret
+ },
+ async fetchSearchResults({state, commit, dispatch, getters}, {query}) {
+ const servers = await dispatch('getAllKnownServers')
+ const items = await servers.get(getters.signAuth, '/api/search/?query=' + query)
+ items.map(item => item.files.map(file => file.owner = item.owner))
+ commit('setInventoryItems', {url: '/search/' + query, items})
+ return items
+ },
+ async fetchFriends({commit, dispatch, getters, state}) {
+ const servers = await dispatch('getHomeServers')
+ const data = await servers.get(getters.signAuth, '/api/friends/')
+ commit('setFriends', data)
+ return data
+ },
+ async fetchFriendRequests({state, dispatch, getters}) {
+ const servers = await dispatch('getHomeServers')
+ return await servers.get(getters.signAuth, '/api/friendrequests/')
+ },
+ async requestFriend({state, dispatch, getters}, {username}) {
+ if (username in state.friends) {
+ return true;
+ }
+ const home_servers = await dispatch('getHomeServers')
+ const home_reply = await home_servers.post(getters.signAuth, '/api/friendrequests/', {
+ befriender: state.user,
+ befriendee: username
+ })
+ if (home_reply.status !== 'pending' || !home_reply.secret)
+ return false;
+
+ const befriendee_servers = await dispatch('getFriendServers', {username})
+ const ext_reply = await befriendee_servers.post(getters.signAuth, '/api/friendrequests/', {
+ befriender: state.user,
+ befriendee: username,
+ befriender_key: nacl.to_hex(state.keypair.signPk),
+ secret: home_reply.secret
+ })
+ return true;
+ },
+ async acceptFriend({state, dispatch, getters}, {id, secret, befriender}) {
+ const home_servers = await dispatch('getHomeServers')
+ const home_reply = await home_servers.post(getters.signAuth, '/api/friends/', {
+ friend_request_id: id, secret: secret
+ })
+ const ext_servers = await dispatch('getFriendServers', {username: befriender})
+ const ext_reply = await ext_servers.post(getters.signAuth, '/api/friendrequests/', {
+ befriender: state.user,
+ befriendee: befriender,
+ befriender_key: nacl.to_hex(state.keypair.signPk),
+ secret: secret
+ })
+ return true
+ },
+ async declineFriend({state, dispatch, getters}, {id}) {
+ const servers = await dispatch('getHomeServers')
+ return await servers.delete(getters.signAuth, '/api/friendrequests/' + id + '/')
+ },
+ async dropFriend({state, dispatch, getters}, {id}) {
+ const servers = await dispatch('getHomeServers')
+ return await servers.delete(getters.signAuth, '/api/friends/' + id + '/')
+ },
+ async fetchFiles({state, commit, dispatch, getters}) {
+ if (state.last_load.files > Date.now() - 1000 * 60 * 60 * 24) {
+ return state.files
+ }
+ const servers = await dispatch('getHomeServers')
+ const data = await servers.get(getters.signAuth, '/api/files/')
+ data.map(file => file.owner = state.user)
+ commit('setFiles', data)
+ state.last_load.files = Date.now()
+ return data
+ },
+ async fetchFilesByItem({state, commit, dispatch, getters}, {id}) {
+ const servers = await dispatch('getHomeServers')
+ return await servers.get(getters.signAuth, '/api/item_files/' + id + '/')
+ },
+ async pushFile({state, dispatch, getters}, {item_id, file}) {
+ const servers = await dispatch('getHomeServers')
+ const data = await servers.post(getters.signAuth, '/api/item_files/' + item_id + '/', file)
+ if (data.name) {
+ data.owner = state.user
+ state.files.push(data)
+ return data
+ }
+ },
+ async deleteFile({state, dispatch, getters}, {id}) {
+ const servers = await dispatch('getHomeServers')
+ await servers.delete(getters.signAuth, '/api/files/' + id + '/')
+ state.files = state.files.filter(file => file.id !== id)
+ },
+ async deleteItemFile({state, dispatch, getters}, {item_id, file_id}) {
+ const servers = await dispatch('getHomeServers')
+ await servers.delete(getters.signAuth, '/api/item_files/' + item_id + '/' + file_id + '/')
+ state.files = state.files.filter(file => file.id !== file_id)
+ },
+ async fetchTags({state, commit, dispatch, getters}) {
+ if (state.last_load.tags > Date.now() - 1000 * 60 * 60 * 24) {
+ return state.tags
+ }
+ const servers = await dispatch('getHomeServers')
+ const data = await servers.get(getters.signAuth, '/api/tags/')
+ commit('setTags', data)
+ state.last_load.tags = Date.now()
+ return data
+ },
+ async fetchProperties({state, commit, dispatch, getters}) {
+ if (state.last_load.properties > Date.now() - 1000 * 60 * 60 * 24) {
+ return state.properties
+ }
+ const servers = await dispatch('getHomeServers')
+ const data = await servers.get(getters.signAuth, '/api/properties/')
+ commit('setProperties', data)
+ state.last_load.properties = Date.now()
+ return data
+ },
+ async fetchCategories({state, commit, dispatch, getters}) {
+ if (state.last_load.categories > Date.now() - 1000 * 60 * 60 * 24) {
+ return state.categories
+ }
+ const servers = await dispatch('getHomeServers')
+ const data = await servers.get(getters.signAuth, '/api/categories/')
+ commit('setCategories', data)
+ state.last_load.categories = Date.now()
+ return data
+ },
+ async fetchAvailabilityPolicies({state, commit, dispatch, getters}) {
+ if (state.last_load.availability_policies > Date.now() - 1000 * 60 * 60 * 24) {
+ return state.availability_policies
+ }
+ const servers = await dispatch('getHomeServers')
+ const data = await servers.get(getters.signAuth, '/api/availability_policies/')
+ commit('setAvailabilityPolicies', data.map(policy => ({slug: policy[0], text: policy[1]})))
+ state.last_load.availability_policies = Date.now()
+ return data
+ },
+ async fetchStorageLocations({state, commit, dispatch, getters}) {
+ if (state.last_load.storage_locations > Date.now() - 1000 * 60 * 60 * 24) {
+ return state.storage_locations
+ }
+ const servers = await dispatch('getHomeServers')
+ const data = await servers.get(getters.signAuth, '/api/storage_locations/')
+ commit('setStorageLocations', data)
+ state.last_load.storage_locations = Date.now()
+ return data
+ },
+ async fetchInfo({state, commit, dispatch, getters}) {
+ const last_load_info = Math.min(
+ state.last_load.tags,
+ state.last_load.properties,
+ state.last_load.categories,
+ state.last_load.availability_policies)
+ if (last_load_info > Date.now() - 1000 * 60 * 60 * 24) {
+ return state.info
+ }
+ const servers = await dispatch('getHomeServers')
+ const data = await servers.get(getters.signAuth, '/api/info/')
+ commit('setTags', data.tags)
+ commit('setProperties', data.properties)
+ commit('setCategories', data.categories)
+ commit('setAvailabilityPolicies', data.availability_policies.map(policy => ({
+ slug: policy[0],
+ text: policy[1]
+ })))
+ commit('setDomains', data.domains)
+ state.last_load.tags = Date.now()
+ state.last_load.properties = Date.now()
+ state.last_load.categories = Date.now()
+ state.last_load.availability_policies = Date.now()
+ return data
+ }
},
getters: {
isLoggedIn(state) {
@@ -128,5 +387,49 @@ export default createStore({
nullAuth(state) {
return createNullAuth({})
},
+ inventory_items(state) {
+ return state.item_map['/'] || []
+ },
+ loaded_items(state) {
+ return Object.entries(state.item_map).reduce((acc, [url, items]) => {
+ return acc.concat(items)
+ }, [])
+ },
+ notifications(state) {
+ // supported types: error, warning, info, login, success, friend
+ const u = state.unreachable_neighbors.list().map(elem => {
+ return {
+ type: 'error',
+ title: elem.domain + ' unreachable',
+ msg: 'The neighbor ' + elem.domain + ' is currently unreachable. Please try again later.',
+ time: elem.time
+ }
+ })
+ return [...u, {
+ type: 'info',
+ title: 'Welcome to the Toolshed',
+ msg: 'This is a federated social network. You can add friends from other servers and share items with them.',
+ time: Date.now()
+ }, {
+ type: 'warning',
+ title: 'Lorem ipsum',
+ msg: 'Aliquam ex eros, imperdiet vulputate hendrerit et.',
+ time: Date.now() - 1000 * 60 * 60 * 2
+ }, {
+ type: 'login',
+ title: 'Login from 192.186.1.8',
+ time: Date.now() - 1000 * 60 * 60 * 5
+ }, {
+ type: 'friend',
+ title: 'New connection',
+ msg: 'Christina accepted your request.',
+ time: Date.now() - 1000 * 60 * 60 * 14
+ }, {
+ type: 'success',
+ title: 'Lorem ipsum',
+ msg: 'Aliquam ex eros, imperdiet vulputate hendrerit et.',
+ time: Date.now() - 1000 * 60 * 60 * 24
+ }]
+ },
}
})
\ No newline at end of file
diff --git a/frontend/src/tests/SearchBox.js b/frontend/src/tests/SearchBox.js
new file mode 100644
index 0000000..cf12d07
--- /dev/null
+++ b/frontend/src/tests/SearchBox.js
@@ -0,0 +1,59 @@
+import {mount} from '@vue/test-utils'
+import SearchBox from '../components/SearchBox.vue'
+
+test('SearchBox component', async () => {
+ expect(SearchBox).toBeTruthy()
+
+ const mockRoute = {
+ params: {
+ query: 'urltest',
+ }
+ }
+
+ const mockRouter = {
+ push: vi.fn(),
+ }
+
+ const wrapper = mount(SearchBox, {
+ props: {},
+ global: {
+ mocks: {
+ $route: mockRoute,
+ $router: mockRouter,
+ }
+ },
+ attachTo: document.body,
+ })
+
+ await wrapper.get('button').trigger('click')
+
+ expect(mockRouter.push).toHaveBeenCalledWith('/search/urltest')
+
+ mockRouter.push.mockClear()
+
+ await wrapper.find({ref: 'search-text'}).setValue('test2')
+
+ await wrapper.get('button').trigger('click')
+
+ expect(mockRouter.push).toHaveBeenCalledWith('/search/test2')
+
+ mockRouter.push.mockClear()
+
+ await wrapper.find({ref: 'search-text'}).setValue('äöüß!§$%&/()=?')
+
+ await wrapper.get('button').trigger('click')
+
+ expect(mockRouter.push).toHaveBeenCalledWith('/search/%C3%A4%C3%B6%C3%BC%C3%9F!%C2%A7%24%25%26%2F()%3D%3F')
+
+ mockRouter.push.mockClear()
+
+ await wrapper.find({ref: 'search-text'}).setValue('')
+
+ await wrapper.get('button').trigger('click')
+
+ expect(mockRouter.push).not.toHaveBeenCalled()
+
+ expect(await wrapper.find({ref: 'search-text'}).element).toEqual(document.activeElement)
+
+ expect(wrapper.html()).toMatchSnapshot()
+})
diff --git a/frontend/src/tests/__snapshots__/SearchBox.js.snap b/frontend/src/tests/__snapshots__/SearchBox.js.snap
new file mode 100644
index 0000000..d7a5ee0
--- /dev/null
+++ b/frontend/src/tests/__snapshots__/SearchBox.js.snap
@@ -0,0 +1,9 @@
+// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
+
+exports[`SearchBox component 1`] = `
+""
+`;
diff --git a/frontend/src/views/Admin.vue b/frontend/src/views/Admin.vue
new file mode 100644
index 0000000..53ff1ba
--- /dev/null
+++ b/frontend/src/views/Admin.vue
@@ -0,0 +1,115 @@
+
+
+
+
+
Admin
+
+
+
+
+
+
+
+
+ {{ property.name }} ({{ property.unit_name }}, {{ property.unit_symbol }})
+
+
+
+
+
+
+
+
+
+
+
+ {{ policy.text }}
+
+
+
+
+
+
+
+
+
+ {{ location.path }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/frontend/src/views/Index.vue b/frontend/src/views/Dashboard.vue
similarity index 50%
rename from frontend/src/views/Index.vue
rename to frontend/src/views/Dashboard.vue
index 90fbeb1..1f23884 100644
--- a/frontend/src/views/Index.vue
+++ b/frontend/src/views/Dashboard.vue
@@ -5,7 +5,16 @@
Dashboard
-
+
+
+
+
+
+
+
+
@@ -18,7 +27,7 @@ import * as BIcons from "bootstrap-icons-vue";
import BaseLayout from "@/components/BaseLayout.vue";
export default {
- name: 'Index',
+ name: 'Dashboard',
components: {
...BIcons,
BaseLayout
diff --git a/frontend/src/views/Files.vue b/frontend/src/views/Files.vue
new file mode 100644
index 0000000..15a0e35
--- /dev/null
+++ b/frontend/src/views/Files.vue
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/frontend/src/views/Friends.vue b/frontend/src/views/Friends.vue
new file mode 100644
index 0000000..f2f40c1
--- /dev/null
+++ b/frontend/src/views/Friends.vue
@@ -0,0 +1,197 @@
+
+
+
+
+
Friends
+
+
+
+
+
+
+
+
+ Name
+ Key
+
+
+
+ Refresh
+
+
+
+
+
+
+ {{ request.befriender }}
+
+ {{ request.befriender_public_key.slice(0, 32) }}...
+
+
+
+
+ Accept
+
+
+
+ Decline
+
+
+
+
+
+
+
+ Refresh
+ Add
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/frontend/src/views/Inventory.vue b/frontend/src/views/Inventory.vue
new file mode 100644
index 0000000..0f9b8c5
--- /dev/null
+++ b/frontend/src/views/Inventory.vue
@@ -0,0 +1,153 @@
+
+
+
+
+
Inventory Own & Friends"
+
+
+
+
+
+
+
+ Name
+ Availability Policy
+ Amount
+ Actions
+
+
+
+
+
+ {{ item.name }}
+
+ {{ item.owner }}
+
+ {{ item.availability_policy }}
+
+ {{ item.owned_quantity }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Refresh
+ Add
+
+
+
+
+
+
+
+
+ Name
+ Owner
+ Availability Policy
+ Amount
+
+
+
+
+
+ {{ item.name }}
+
+ {{ item.owner }}
+ {{ item.availability_policy }}
+ {{ item.owned_quantity }}
+
+
+
+
+
+
+
+
+
+
{{ item.name }}
+
+ {{ item.availability_policy }}
+ {{ item.owned_quantity }}
+
+
+
+
+
+
+
+
+
+
+
+
+ Refresh
+ Add
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/frontend/src/views/InventoryDetail.vue b/frontend/src/views/InventoryDetail.vue
new file mode 100644
index 0000000..c37a81e
--- /dev/null
+++ b/frontend/src/views/InventoryDetail.vue
@@ -0,0 +1,104 @@
+
+
+
+
+
+
+
+
+
+ Description
+ {{ item.description }}
+
+
+ Tags
+
+ {{ tag }}
+
+
+
+ Properties
+
+ {{ property.name }}={{ property.value }}
+
+
+
+ Quantity
+ {{ item.owned_quantity }}
+
+
+
+
+
+
+
+
+
+ Edit
+
+ $router.push('/inventory'))">
+
+ Delete
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/frontend/src/views/InventoryEdit.vue b/frontend/src/views/InventoryEdit.vue
new file mode 100644
index 0000000..97e834f
--- /dev/null
+++ b/frontend/src/views/InventoryEdit.vue
@@ -0,0 +1,127 @@
+
+
+
+
+
+
+
+
+
+ Name
+
+
+
+ Description
+
+
+
+ Tags
+
+
+
+
+ Quantity
+
+
+
+ Availablity Policy
+
+
+ {{ policy.text }}
+
+
+
+
+ Image
+
+
+
+ Update
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/frontend/src/views/InventoryNew.vue b/frontend/src/views/InventoryNew.vue
new file mode 100644
index 0000000..0a5ad75
--- /dev/null
+++ b/frontend/src/views/InventoryNew.vue
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+
+
+
+ Name
+
+
+
+ Description
+
+
+
+ Tags
+
+
+
+
+ Tags
+
+
+
+
+ Quantity
+
+
+
+ Availablity Policy
+
+
+ {{ policy.text }}
+
+
+
+
+ Availablity Policy
+
+
+ {{ policy.text }}
+
+
+
+
+ Image
+
+
+
+ $router.push('/inventory'))">Add
+
+
+
+
+ Add
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/frontend/src/views/Login.vue b/frontend/src/views/Login.vue
index 7a2097b..b53ec8e 100644
--- a/frontend/src/views/Login.vue
+++ b/frontend/src/views/Login.vue
@@ -24,7 +24,9 @@
Username
+ {{ errors.username }}
Password
@@ -65,6 +67,7 @@
diff --git a/frontend/src/views/Profile.vue b/frontend/src/views/Profile.vue
new file mode 100644
index 0000000..3fec4eb
--- /dev/null
+++ b/frontend/src/views/Profile.vue
@@ -0,0 +1,256 @@
+
+
+
+
+
+
Profile
+
+
+
+
+
+
+
+
+ {{ user.username }}
+
+
+ {{ user.email }}
+
+
+
+
+
+
+
+
Bio
+
+ {{ user.bio }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 5m ago
+ Vanessa Tucker started following Christina
+ Mason
+ Today 7:51 pm
+
+
+
+
+
+
+
+
+
30m ago
+
Charles Hall posted something on
Christina
+ Mason 's timeline
+
Today 7:21 pm
+
+
+ Etiam rhoncus. Maecenas tempus, tellus eget condimentum rhoncus, sem
+ quam semper libero, sit amet adipiscing sem neque sed ipsum. Nam quam
+ nunc, blandit vel, luctus
+ pulvinar, hendrerit id, lorem. Maecenas nec odio et ante tincidunt
+ tempus. Donec vitae sapien ut libero venenatis faucibus. Nullam quis
+ ante.
+
+
+
+ Like
+
+
+
+
+
+
+
+ 1h ago
+ Christina Mason posted a new blog
+
+ Today 6:35 pm
+
+
+
+
+
+
+
+
3h ago
+
William Harris posted two photos on
Christina
+ Mason 's timeline
+
Today 5:12 pm
+
+
+
+
+
+
+
+
+
+
+
+ Like
+
+
+
+
+
+
+
+
1d ago
+
William Harris started following
Christina
+ Mason
+
Yesterday 3:12 pm
+
+
+
+
+
+
+
+ Nam quam nunc, blandit vel, luctus pulvinar, hendrerit id,
+ lorem. Maecenas nec odio et ante tincidunt tempus.
+
+
+
+
+
+
+
+
+
+
+ 1d ago
+ Christina Mason posted a new blog
+ Yesterday 2:43 pm
+
+
+
+
+
+
+
+ 1d ago
+ Charles Hall started following Christina
+ Mason
+ Yesterdag 1:51 pm
+
+
+
+
+
Load more
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/frontend/src/views/Register.vue b/frontend/src/views/Register.vue
index f0091d0..4f0d05a 100644
--- a/frontend/src/views/Register.vue
+++ b/frontend/src/views/Register.vue
@@ -44,6 +44,7 @@
@@ -51,6 +52,7 @@
@@ -58,6 +60,7 @@
@@ -86,6 +89,10 @@
diff --git a/frontend/src/views/Search.vue b/frontend/src/views/Search.vue
new file mode 100644
index 0000000..5cb3fa4
--- /dev/null
+++ b/frontend/src/views/Search.vue
@@ -0,0 +1,92 @@
+
+
+
+
+
Search Inventories
+
+
+
+
+
+
+
+
+
+ Name
+ Owner
+ Amount
+ Actions
+
+
+
+
+
+ {{ item.name }}
+
+ {{ item.owner }}
+ {{ item.owned_quantity }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/frontend/src/views/Settings.vue b/frontend/src/views/Settings.vue
new file mode 100644
index 0000000..8784570
--- /dev/null
+++ b/frontend/src/views/Settings.vue
@@ -0,0 +1,209 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/frontend/src/views/Swatch.vue b/frontend/src/views/Swatch.vue
new file mode 100644
index 0000000..9f69d01
--- /dev/null
+++ b/frontend/src/views/Swatch.vue
@@ -0,0 +1,4907 @@
+
+
+
+
+
+
Brand color
+
+
+
Theme colors
+
.bg-primary
+
.bg-secondary
+
.bg-success
+
.bg-danger
+
.bg-warning
+
.bg-info
+
.bg-light
+
.bg-dark
+
.bg-white
+
+
+
+
Gradient of grey
+
.swatch-100
+
.swatch-200
+
.swatch-300
+
.swatch-400
+
.swatch-500
+
.swatch-600
+
.swatch-700
+
.swatch-800
+
.swatch-900
+
+
+
+
+
+
Links
+
+
+
+
+
Link inside an alert
+
+ This is a primary alert with
+
an example link . Give it a click if you
+ like.
+
+
+
+
+
+
+
Grid
+
+
+
+
+
+
.col-sm-1
+
.col-sm-1
+
.col-sm-1
+
.col-sm-1
+
.col-sm-1
+
.col-sm-1
+
.col-sm-1
+
.col-sm-1
+
.col-sm-1
+
.col-sm-1
+
.col-sm-1
+
.col-sm-1
+
+
+
.col-sm-2
+
.col-sm-3
+
.col-sm-7
+
+
+
.col-sm-4
+
.col-sm-4
+
.col-sm-4
+
+
+
.col-sm-5
+
.col-sm-7
+
+
+
.col-sm-6
+
.col-sm-6
+
+
+
+
+
+
+
+
+
Fonts
+
+
+
h1
+
h2
+
h3
+
h4
+
h5
+
h6
+
+
+
+
Heading 1
+ Sub-heading
+
+
Heading 2
+ Sub-heading
+
+
Heading 3
+ Sub-heading
+
+
Heading 4
+ Sub-heading
+
+
Heading 5
+ Sub-heading
+
+
Heading 6
+ Sub-heading
+
+
+
+
+
Display 1
+
Display 2
+
Display 3
+
Display 4
+
+
+
+
+ This is the article lead — it stands out at the start of the article.
+
+
+
+ This is normal text at the normal size etc...
+
+
+
Sample
+ marked text
+ .
+
+
+
+
+ The most important moment of your life is now. The most important person in your life is the
+ one you are with now,
+ and the most important activity in your life is the one you are involved with now.
+
+
+
+
+
+
+
+
Buttons
+
+
+
Default buttons
+ Primary
+ Secondary
+ Info
+ Success
+ Warning
+ Danger
+ Light
+ Dark
+ Link
+
+
+
+
Buttons with outline
+ Primary
+ Secondary
+ Info
+ Success
+ Warning
+ Danger
+ Light
+ Dark
+
+
+
+
+
Buttons sizes
+ Small
+ Default
+ Large
+
+
+
+ Block level button
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Forms
+
+
+
+
Default form group
+
+
+ First Name
+
+
+
+ Last Name
+
+
+ Submit
+
+
+
+
Inline form
+
+
+
+ First Name
+
+ Last Name
+
+ Submit
+
+
+
+
Aligned form
+
+
+
+
+
+
Form with help text
+
+
+ Account Id
+
+ Your account ID is located at the top of your invoice.
+
+
+
Checkbox and radio
+
+
+
+
+
+
+
Dropdown
+
+
+
+
Default dropdown
+
+
+
+
+
+
+
+
Dropdown with menu
+
+
+ About Us
+
+
+
+
+
+
Dropdown with divider
+
+
+ About Us
+
+
+
+
+
+
+
+
+
+
Navs
+
+
Default nav
+
+
+
+
Horizontal menu
+
+
+
+
Nav with tabs
+
+
+
+
Nav with pills
+
+
+
+
Horizontal nav with pills
+
+
+
+
Nav with tabs and dropdown
+
+
+
+
+
+
+
+
+
Welcome home! Click on the tabs to see the content change.
+
+
+
+
A hat is a head covering. It can be worn for protection against the elements, ceremonial
+ reasons, religious reasons,
+ safety, or as a fashion accessory.
+
+
+
+
A shoe is an item of footwear intended to protect and comfort the human foot while doing
+ various activities. Shoes
+ are also used as an item of decoration.
+
+
+
+
A boot is a type of footwear and a specific type of shoe. Most boots mainly cover the
+ foot and the ankle, while
+ some also cover some part of the lower calf. Some boots extend up the leg, sometimes as
+ far as the knee or even
+ the hip.
+
+
+
+
+
+
+
+
+
+
Navbar
+
+
+
+
+
+
+
+
+ Logo
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Logo
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Logo
+
+
+
+
+
+
+
+
+
+
+
Tables
+
+
+
Default table
+
+
+
+
+ Header 1
+ Header 2
+ Header 3
+
+
+
+
+ Footer 1
+ Footer 2
+ Footer 3
+
+
+
+
+ Cell
+ Cell
+ Cell
+
+
+ Cell
+ Cell
+ Cell
+
+
+ Cell
+ Cell
+ Cell
+
+
+
+
+
+
+
+
+
Table inverse
+
+
+
+ Header 1
+ Header 2
+ Header 3
+
+
+
+
+ Footer 1
+ Footer 2
+ Footer 3
+
+
+
+
+ Cell
+ Cell
+ Cell
+
+
+ Cell
+ Cell
+ Cell
+
+
+ Cell
+ Cell
+ Cell
+
+
+
+
+
+
+
+
Table striped
+
+
+
+ Header 1
+ Header 2
+ Header 3
+
+
+
+
+ Footer 1
+ Footer 2
+ Footer 3
+
+
+
+
+ Cell
+ Cell
+ Cell
+
+
+ Cell
+ Cell
+ Cell
+
+
+ Cell
+ Cell
+ Cell
+
+
+
+
+
+
+
+
Table with border
+
+
+
+ Header 1
+ Header 2
+ Header 3
+
+
+
+
+ Footer 1
+ Footer 2
+ Footer 3
+
+
+
+
+ Cell
+ Cell
+ Cell
+
+
+ Cell
+ Cell
+ Cell
+
+
+ Cell
+ Cell
+ Cell
+
+
+
+
+
+
+
Table with hover
+
+
+
+ Header 1
+ Header 2
+ Header 3
+
+
+
+
+ Footer 1
+ Footer 2
+ Footer 3
+
+
+
+
+ Cell
+ Cell
+ Cell
+
+
+ Cell
+ Cell
+ Cell
+
+
+ Cell
+ Cell
+ Cell
+
+
+
+
+
+
+
+
Table with Head with default color
+
+
+
+ Header 1
+ Header 2
+ Header 3
+
+
+
+
+ Footer 1
+ Footer 2
+ Footer 3
+
+
+
+
+ Cell
+ Cell
+ Cell
+
+
+ Cell
+ Cell
+ Cell
+
+
+ Cell
+ Cell
+ Cell
+
+
+
+
+
+
+
+
Table with inverse Head color
+
+
+
+ Header 1
+ Header 2
+ Header 3
+
+
+
+
+ Footer 1
+ Footer 2
+ Footer 3
+
+
+
+
+ Cell
+ Cell
+ Cell
+
+
+ Cell
+ Cell
+ Cell
+
+
+ Cell
+ Cell
+ Cell
+
+
+
+
+
+
+
+
+
Pagination
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Jumbotron
+
+
+
+
Container size jumboton
+
Think BIG with a Bootstrap Jumbotron!
+
+
+
+
+
+
+
Container fluid size jumbotron
+
Think BIG with a Bootstrap Jumbotron!
+
+
+
+
+
+
+
+
Cards
+
+
+
+
Boot Polish
+
Boot polish is a waxy paste, cream, or liquid used to polish, shine,
+ and waterproof leather shoes or boots to extend
+ the footwear's life, and restore, maintain and improve their appearance.
+
More
+
+
+
+
+
+
+
Sun Gone
+
Here are the top resources for all things related to the Sun.
+
Sun Gone
+
Still Gone
+
+
+
+
+
+
+
+
Sun Gone
+ Sun disappears!
+
+
+
+
+
The sun disappeared behind the horizon today. Experts claim it
+ could be gone for good!
+
Full Report
+
+
+
+
+
+
+
+
+
+
Ugg Boots
+
Best ugg boots on the planet. Free shipping, 24/7 customer
+ service.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Looks like the Sun has returned. Here's
+ why .
+
+
+
+
+
+
+
+
+
+
+
+
Tooltip
+
+
+
Inline tooltip
+
Check out my
+ Grid tutorial , as you never know when you
+ might need it!
+
+
+
+
All position tooltip
+
+ Shoes
+
+
+ Boots
+
+
+ Ugg
+
+
+ Socks
+
+
+
+
+
+
+
+
Popovers
+
+
All popover position
+
+ Popover on top
+
+
+
+ Popover on right
+
+
+
+ Popover on bottom
+
+
+
+ Popover on left
+
+
+
+
+
+
+
Badges
+
+
+
Badge heading
+ Example heading
+ New
+
+ Example heading
+ New
+
+ Example heading
+ New
+
+ Example heading
+ New
+
+ Example heading
+ New
+
+ Example heading
+ New
+
+
+
+
+
Button with inline badge
+
+ Notifications
+ 4
+
+
+ Profile
+ 9
+ unread messages
+
+
+
+
+
Default badges
+ Primary
+ Secondary
+ Success
+ Danger
+ Warning
+ Info
+ Light
+ Dark
+
+
+
+
Badges pill
+ Primary
+ Secondary
+ Success
+ Danger
+ Warning
+ Info
+ Light
+ Dark
+
+
+
+
+
+
+
+
Modals
+
+
+
+ Default Modal
+
+
+
+ Large Modal
+
+
+
+ Small Modal
+
+
+
+
+
+
+
+
+
+
+ Small shoes are typically worn by people with small feet.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Large shoes are usually avoided by people with small feet.
+
+
+
+
+
+
+
+
+
+
+
+
+ A type of open-toed sandal.
+
+
+
+
+
+
+
+
+
+
+
Alerts
+
+
+
Default alert
+
Success alert
+
Info alert
+
Warning alert
+
Danger alert
+
Light alert
+
Dark alert
+
+
+
+
Dismissible alert
+
+
+ ×
+
+ Congratulations! You successfully tied your shoelace!
+
+
+
+
+
Dismissible alert with fade
+
+
+ ×
+
+ Congratulations! You successfully tied your shoelace!
+
+
+
+
+
+
+
Progress bars
+
+
+
Default Progress bar
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Striped Progress bar
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Animated Progress bar
+
+
+
+
+
+
+
List group
+
+
+
Default list group
+
+ These Boots Are Made For Walking
+ Eleanor, Put Your Boots On
+ Puss 'n' Boots
+ Die With Your Boots On
+ Fairies Wear Boots
+
+
+
+
+
List group with pills
+
+
+ These Boots Are Made For Walking
+ 15
+
+
+ Eleanor, Put Your Boots On
+ 38
+
+
+ Puss 'n' Boots
+ 76
+
+
+ Die With Your Boots On
+ 112
+
+
+ Fairies Wear Boots
+ 181
+
+
+
+
+
+
+
+
Button List group
+
+ These Boots Are Made For
+ Walking
+
+ Eleanor, Put Your
+ Boots On
+
+ Puss 'n' Boots
+ Die With Your Boots On
+
+ Fairies Wear Boots
+
+
+
+
+
List group with colors
+
+
+
+
+
+
+
+
+
+
Figures
+
+
+
+
+ A caption for the above image.
+
+
+
+
+
+
+ A caption for the above image.
+
+
+
+
+
+
+
+
+
+
Carousel
+
+
+
+
+
+
+
+
+
+
+
+
+
First slide
+
This is the first slide.
+
+
+
+
+
+
Second slide
+
This is the second slide.
+
+
+
+
+
+
Third slide
+
This is the third slide.
+
+
+
+
+
+ Previous
+
+
+
+ Next
+
+
+
+
+
+
+
+
Close
+
+ ×
+
+
+
+
+
+
Code
+
+
Default code
+ For example,
+ <section> should be wrapped as inline.
+
+
+
+
Code with pre tag
+
+
+ <p>Sample text here...</p>
+ <p>And another line of sample text here...</p>
+
+
+
+
+
+
+
Var tag
+ y =
+ m
+ x +
+ b
+
+
+
+
Kbd tag
+ To switch directories, type
+ cd followed by the name of the directory.
+ To edit settings, press
+
+ ctrl +
+ ,
+
+
+
+
+
Samp tag
+ This text is meant to be treated as sample output from a computer program.
+
+
+
+
+
+
+
+
+
+
Alerts
+
Alerts
+
+
+
+
+ Well done! You successfully read this
+ important alert message.
+
+
+
+
+ ×
+
+ Well done! You can dismiss this message with the X button.
+
+
+
+
+
+
+
+
+
+
+
+
+
Buttons
+
+
+
+
+
+
+
+
+
+
Dropdowns
+
+
+
+
+
+ Action
+
+
+
+
+ Action
+
+ Toggle Dropdown
+
+
+
+
+
+
+
+
+
+
+ Action
+
+
+
+
+ Action
+
+ Toggle Dropdown
+
+
+
+
+
+
+
+
+
Grouping them
+
+
+
+
+
+
One
+
Two
+
+
+
+ Dropdown
+
+
+
+
+
+
+
+
+
+
+
Seven
+
+
+
+ Dropdown
+
+
+
+
+
+
+
+
+
+
+
+
+
One
+
Two
+
+
+
+ Dropdown
+
+
+
+
+
+
+
+
+
+
+
Seven
+
+
+
+ Dropdown
+
+
+
+
+
+
+
+
+
Checkboxes and Radios
+
+
+
+
+
+
+
+
+
Cards
+
+
Cards
+
+
+
+
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere
+ erat
+ a ante. Integer posuere erat a ante.
+ Someone famous in Source Title
+
+
+
+
+
+
+
+
+
+
+
Card title
+
Some quick example text to build on the card title and make
+ up
+ the bulk of the card's content.
+
Go somewhere
+
+
+
+
+
+
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere
+ erat
+ a ante.
+ Someone famous in Source Title
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere
+ erat
+ a ante.
+ Someone famous in Source Title
+
+
+
+
+
+
+
+
+
+
+
Special title treatment
+
With supporting text below as a natural lead-in to
+ additional
+ content.
+
Go somewhere
+
+
+
+
+
+
+
+
+
+ Cras justo odio
+ Dapibus ac facilisis in
+ Vestibulum at eros
+
+
+
+
+
+
+
+
+
+
+
+
Special title treatment
+
With supporting text below as a natural lead-in to additional
+ content.
+
Go somewhere
+
+
+
+
+
+
+
+
+
+
+
Forms
+
Forms
+
+
+
+
+
+
Start with a small group form
+
+
+
+
+ Email address
+
+ We'll never share
+ your
+ email
+
+ Submit
+
+
+
+
+
+
+
+
+
+
+
+
Or with an inline form
+
+
+
+ Username
+
+
+
+
+ Go
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Even more form controls
+
+
+
+ Check this custom
+ checkbox
+
+
+
+
+
+
+
+
+
+ Open this select menu
+ One
+ Two
+ Three
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Jumbotron
+
Jumbotron
+
+
+
+
Hello, world!
+
This is a simple hero unit, a simple jumbotron-style component for calling
+ extra
+ attention to featured content or information.
+
+
It uses utility classes for typography and spacing to space content out within the larger
+ container.
+
+ Learn more
+
+
+
+
+
+
+
+
Lists
+
+ Lists
+
+
+
+
+
+
+ Cras justo odio
+ Dapibus ac facilisis in
+ Porta ac consectetur ac
+
+ Cras justo odio
+ 14
+
+ Vestibulum at eros
+ Dapibus ac facilisis in
+
+
+
+
+
+
+
+
+
+
+
+
+
Popovers
+
Popovers
+
+
+
+ Popover on top
+
+
+
+ Popover on right
+
+
+
+ Popover on bottom
+
+
+
+ Popover on left
+
+
+
+
+
+
+
Progress
+
Progress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Tables
+
Tables
+
+
+
+
+
+ #
+ First Name
+ Last Name
+ Username
+
+
+
+
+ 1
+ Mark
+ Otto
+ @mdo
+
+
+ 2
+ Jacob
+ Thornton
+ @fat
+
+
+
+ 3
+ Contextual
+ Row
+ @hackerthemes
+
+
+
+
+
+
+
+
+
+
+ #
+ First Name
+ Last Name
+ Username
+
+
+
+
+ 1
+ Mark
+ Otto
+ @mdo
+
+
+ 2
+ Jacob
+ Thornton
+ @fat
+
+
+ 3
+ Contextual Row
+ @hackerthemes
+
+
+
+
+
+
+
+
Tooltips
+
Tooltips
+
+
+
+ Tooltip on top
+
+
+ Tooltip on right
+
+
+ Tooltip on bottom
+
+
+ Tooltip on left
+
+
+
+
+
+
Typography
+
Typography
+
+
+
+
+
Display 1
+ Display 2
+ Display 3
+ Display 4
+
+
+
+
h1. Bootstrap heading
+
+
+
h2. Bootstrap heading
+
+
+
h3. Bootstrap heading
+
+
+
h4. Bootstrap heading
+
+
+
h5. Bootstrap heading
+
+
+
h6. Bootstrap heading
+
+
+
+
+ Lead Text - Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.
+ Duis
+ mollis, est non commodo luctus.
+
+
+
+
+
Body text
+
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ad, cumque delectus
+ deleniti dolor esse ex fugiat, id in ipsum modi molestiae mollitia, nulla
+ numquam
+ provident quasi soluta sunt tempora vel. Lorem ipsum dolor sit amet, consectetur
+ adipisicing elit. Accusamus, aspernatur consequuntur cumque dolor ducimus earum
+ eos,
+ expedita, fuga harum incidunt maxime modi mollitia numquam praesentium sapiente
+ suscipit temporibus ut vero. Lorem ipsum dolor sit amet, consectetur adipisicing
+ elit. Amet nam nostrum pariatur praesentium tempore. Ad architecto at aut dicta
+ enim, eveniet expedita libero magnam minus, nihil, non sequi sunt
+ voluptates!
+
+
+
+
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer
+ posuere
+ erat a ante.
+
+
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere
+ erat a ante.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Primary
+ Secondary
+ Success
+ Info
+ Warning
+ Danger
+ Link
+
+
+
+ Primary
+ Secondary
+ Success
+ Info
+ Warning
+ Danger
+ Link
+
+
+
+ Primary
+ Secondary
+ Success
+ Info
+ Warning
+ Danger
+
+
+
+
+
+ Large button
+ Default button
+ Small button
+
+
+
+
+
+
+
+
+
+
+
+ Left
+ Middle
+ Right
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Heading 1
+
Heading 2
+
Heading 3
+
Heading 4
+
Heading 5
+
Heading 6
+
+ Heading
+ with muted text
+
+
Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor
+ auctor.
+
+
+
+
+
Example body text
+
Nullam quis risus eget urna mollis ornare vel eu leo. Cum sociis
+ natoque
+ penatibus et
+ magnis dis parturient montes, nascetur ridiculus mus. Nullam id dolor id nibh
+ ultricies
+ vehicula.
+
This line of text is meant to be treated as fine print.
+
The following is rendered as bold text .
+
The following is rendered as italicized text .
+
An abbreviation of the word attribute is attr .
+
+
+
+
+
+
Emphasis classes
+
Fusce dapibus, tellus ac cursus commodo, tortor mauris nibh.
+
Nullam id dolor id nibh ultricies vehicula ut id elit.
+
Pellentesque ornare sem lacinia quam venenatis vestibulum.
+
Etiam porta sem malesuada magna mollis euismod.
+
Donec ullamcorper nulla non metus auctor fringilla.
+
Duis mollis, est non commodo luctus, nisi erat porttitor
+ ligula.
+
Maecenas sed diam eget risus varius blandit sit amet non magna.
+
+
+
+
+
+
+
+
+
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer
+ posuere
+ erat a ante.
+
+
+
+
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer
+ posuere
+ erat a ante.
+
+
+
+
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer
+ posuere
+ erat a ante.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Type
+ Column heading
+ Column heading
+ Column heading
+
+
+
+
+ Active
+ Column content
+ Column content
+ Column content
+
+
+ Default
+ Column content
+ Column content
+ Column content
+
+
+ Primary
+ Column content
+ Column content
+ Column content
+
+
+ Secondary
+ Column content
+ Column content
+ Column content
+
+
+ Success
+ Column content
+ Column content
+ Column content
+
+
+ Danger
+ Column content
+ Column content
+ Column content
+
+
+ Warning
+ Column content
+ Column content
+ Column content
+
+
+ Info
+ Column content
+ Column content
+ Column content
+
+
+ Light
+ Column content
+ Column content
+ Column content
+
+
+ Dark
+ Column content
+ Column content
+ Column content
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Tabs
+
+
+
+
+
Raw denim you probably haven't heard of them jean shorts Austin. Nesciunt
+ tofu
+ stumptown aliqua, retro
+ synth master cleanse. Mustache cliche tempor, williamsburg carles vegan
+ helvetica. Reprehenderit
+ butcher retro keffiyeh dreamcatcher synth. Cosby sweater eu banh mi, qui
+ irure
+ terry richardson ex
+ squid. Aliquip placeat salvia cillum iphone. Seitan aliquip quis cardigan
+ american apparel, butcher
+ voluptate nisi qui.
+
+
+
Food truck fixie locavore, accusamus mcsweeney's marfa nulla single-origin
+ coffee
+ squid. Exercitation
+ +1 labore velit, blog sartorial PBR leggings next level wes anderson artisan
+ four loko farm-to-table
+ craft beer twee. Qui photo booth letterpress, commodo enim craft beer mlkshk
+ aliquip jean shorts
+ ullamco ad vinyl cillum PBR. Homo nostrud organic, assumenda labore
+ aesthetic
+ magna delectus mollit.
+
+
+
Etsy mixtape wayfarers, ethical wes anderson tofu before they sold out
+ mcsweeney's organic lomo retro
+ fanny pack lo-fi farm-to-table readymade. Messenger bag gentrify pitchfork
+ tattooed craft beer, iphone
+ skateboard locavore carles etsy salvia banksy hoodie helvetica. DIY synth
+ PBR
+ banksy irony. Leggings
+ gentrify squid 8-bit cred pitchfork.
+
+
+
Trust fund seitan letterpress, keytar raw denim keffiyeh etsy art party
+ before
+ they sold out master
+ cleanse gluten-free squid scenester freegan cosby sweater. Fanny pack
+ portland
+ seitan DIY, art party
+ locavore wolf cliche high life echo park Austin. Cred vinyl keffiyeh DIY
+ salvia
+ PBR, banh mi before
+ they sold out farm-to-table VHS viral locavore cosby sweater.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Badges
+
+ Primary
+ Secondary
+ Success
+ Danger
+ Warning
+ Info
+ Light
+ Dark
+
+
+ Primary
+ Secondary
+ Success
+ Danger
+ Warning
+ Info
+ Light
+ Dark
+
+
+
+
+
+
+
+
+
+
+
+
Basic
+
+
+
Contextual alternatives
+
+
+
Multiple bars
+
+
+
Striped
+
+
+
Animated
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Hello, world!
+
This is a simple hero unit, a simple jumbotron-style component for
+ calling extra attention
+ to featured content or information.
+
+
It uses utility classes for typography and spacing to space content out within
+ the
+ larger container.
+
+ Learn more
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Cras justo odio
+ 14
+
+
+ Dapibus ac facilisis in
+ 2
+
+
+ Morbi leo risus
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Primary card title
+
Some quick example text to build on the card title and make
+ up
+ the bulk of the
+ card's content.
+
+
+
+
+
+
Secondary card title
+
Some quick example text to build on the card title and make
+ up
+ the bulk of the
+ card's content.
+
+
+
+
+
+
Success card title
+
Some quick example text to build on the card title and make
+ up
+ the bulk of the
+ card's content.
+
+
+
+
+
+
Danger card title
+
Some quick example text to build on the card title and make
+ up
+ the bulk of the
+ card's content.
+
+
+
+
+
+
Warning card title
+
Some quick example text to build on the card title and make
+ up
+ the bulk of the
+ card's content.
+
+
+
+
+
+
Info card title
+
Some quick example text to build on the card title and make
+ up
+ the bulk of the
+ card's content.
+
+
+
+
+
+
Light card title
+
Some quick example text to build on the card title and make
+ up
+ the bulk of the
+ card's content.
+
+
+
+
+
+
Dark card title
+
Some quick example text to build on the card title and make
+ up
+ the bulk of the
+ card's content.
+
+
+
+
+
+
+
+
+
+
Primary card title
+
Some quick example text to build on the card title and make
+ up
+ the bulk of the
+ card's content.
+
+
+
+
+
+
Secondary card title
+
Some quick example text to build on the card title and make
+ up
+ the bulk of the
+ card's content.
+
+
+
+
+
+
Success card title
+
Some quick example text to build on the card title and make
+ up
+ the bulk of the
+ card's content.
+
+
+
+
+
+
Danger card title
+
Some quick example text to build on the card title and make
+ up
+ the bulk of the
+ card's content.
+
+
+
+
+
+
Warning card title
+
Some quick example text to build on the card title and make
+ up
+ the bulk of the
+ card's content.
+
+
+
+
+
+
Info card title
+
Some quick example text to build on the card title and make
+ up
+ the bulk of the
+ card's content.
+
+
+
+
+
+
Light card title
+
Some quick example text to build on the card title and make
+ up
+ the bulk of the
+ card's content.
+
+
+
+
+
+
Dark card title
+
Some quick example text to build on the card title and make
+ up
+ the bulk of the
+ card's content.
+
+
+
+
+
+
+
+
+
+
+
Special title treatment
+ Support card subtitle
+
+
+
+
Some quick example text to build on the card title and make
+ up
+ the bulk of the
+ card's content.
+
+
+ Cras justo odio
+ Dapibus ac facilisis in
+ Vestibulum at eros
+
+
+
+
+
+
+
Card title
+
Card subtitle
+
Some quick example text to build on the card title and make
+ up
+ the bulk of the
+ card's content.
+
Card link
+
Another link
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Modals
+
+
+
+
+
+
+
Modal body text goes here.
+
+
+
+
+
+
+
+
+
Popovers
+
+ Left
+
+
+ Top
+
+
+ Bottom
+
+
+ Right
+
+
+
Tooltips
+
+ Left
+
+
+ Top
+
+
+ Bottom
+
+
+ Right
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/frontend/vite.config.js b/frontend/vite.config.js
index f6a3db5..0e5b8af 100644
--- a/frontend/vite.config.js
+++ b/frontend/vite.config.js
@@ -2,7 +2,6 @@ import {fileURLToPath, URL} from 'node:url'
import {defineConfig} from 'vite'
import vue from '@vitejs/plugin-vue'
-import * as fs from "fs";
export default defineConfig({
plugins: [vue()],
@@ -23,9 +22,64 @@ export default defineConfig({
'Content-Security-Policy': 'default-src \'self\';'
+ ' script-src \'self\' \'wasm-unsafe-eval\';'
+ ' style-src \'self\' \'unsafe-inline\';'
- + ' img-src \'self\' data:; '
- + ' connect-src * data:', // TODO: change * to https://* for production (probably in nginx config not here)
+ + ' img-src \'self\' https://* data:;'
+ + ' connect-src * data:', // TODO: change * to https://* for production
},
+ https: {
+ key: fs.readFileSync('.local/privkey.pem'),
+ cert: fs.readFileSync('.local/fullchain.pem')
+ },
+ proxy: {
+ '^/api/': {
+ target: "http://127.0.0.1:8000/",
+ headers: {
+ 'Host': 'localhost:5173',
+ 'Origin': 'https://localhost:5173',
+ 'X-Forwarded-Host': 'localhost:5173',
+ 'X-Forwarded-Proto': 'https',
+ }
+ },
+ '^/auth/': {
+ target: "http://127.0.0.1:8000/",
+ headers: {
+ 'Host': 'localhost:5173',
+ 'Origin': 'https://localhost:5173',
+ 'X-Forwarded-Host': 'localhost:5173',
+ 'X-Forwarded-Proto': 'https',
+ }
+// target: "https://toolshed.j3d1.de:8000/",
+// secure: false,
+// },
+// '^/docs/': {
+// target: "https://toolshed.j3d1.de:8000/",
+// },
+// '^/static/': {
+// target: "https://toolshed.j3d1.de:8000/",
+//>>>>>>> busti/proto/frontend
+ },
+ '^/media/': {
+ target: "http://127.0.0.1:8000/",
+ headers: {
+ 'Host': 'localhost:5173',
+ 'Origin': 'https://localhost:5173',
+ 'X-Forwarded-Host': 'localhost:5173',
+ 'X-Forwarded-Proto': 'https',
+ }
+ },
+ '^/docs/': {
+ target: "http://127.0.0.1:8000/",
+ },
+ '^/static/': {
+ target: "http://127.0.0.1:8000/",
+ },
+ '^/wiki/': {
+ target: "http://127.0.0.1:8080/",
+ rewrite: (path) => path.replace(/^\/wiki/, ''),
+ },
+ '^/livereload/': {
+ target: "http://127.0.0.1:8080/",
+ }
+ }
},
test: {
include: ['src/tests/**/*.js'],
diff --git a/nginx.conf b/nginx.conf
new file mode 100644
index 0000000..35eec4f
--- /dev/null
+++ b/nginx.conf
@@ -0,0 +1,37 @@
+worker_processes 2;
+
+events {
+ use epoll;
+ worker_connections 128;
+}
+
+error_log logs/error.log info;
+
+http {
+ server_tokens off;
+ include /etc/nginx/mime.types;
+ charset utf-8;
+
+ access_log logs/access.log combined;
+
+ server {
+ server_name localhost;
+ listen 0.0.0.0:8080;
+
+ error_page 500 502 503 504 /50x.html;
+
+ location / {
+ root frontend/dist/;
+ }
+
+ location /api/ {
+ proxy_pass http://127.0.0.1:8000/api/;
+ }
+
+ location /auth/ {
+ proxy_pass http://127.0.0.1:8000/auth/;
+ }
+
+ }
+
+}
\ No newline at end of file
diff --git a/proxy.sh b/proxy.sh
new file mode 100755
index 0000000..aa07e9f
--- /dev/null
+++ b/proxy.sh
@@ -0,0 +1,3 @@
+#!/bin/bash
+
+/usr/sbin/nginx -g "daemon off;pid nginx.pid;" -c nginx.conf -e nginx.log -p $(pwd)
\ No newline at end of file