diff --git a/.circleci/config.yml b/.circleci/config.yml index 6ef9db1f0c74e0a0a0bff906161925f9fd6757a3..dbbe20cdf7c83ee6f5ba25ff1459382e42cce3b1 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -28,6 +28,7 @@ jobs: build-fe: executor: node working_directory: ~/repo + resource_class: large steps: - checkout - run: diff --git a/.github/ISSUE_TEMPLATE/scoping_review_form.md b/.github/ISSUE_TEMPLATE/scoping_review_form.md new file mode 100644 index 0000000000000000000000000000000000000000..c529198f6b82d82547d4df77e6ea886353615628 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/scoping_review_form.md @@ -0,0 +1,55 @@ +--- +name: Scoping Review Form +about: Get feedback on your code +title: '' +labels: + - 'Type: Scoping' + - 'scoping' +assignees: '' + +--- + +_**PLEASE DO NOT INCLUDE SENSITIVE INFORMATION**_ + +[Use this form](https://docs.google.com/forms/d/e/1FAIpQLSdcn68IgWuk5-YyXF8ZuVK5Dxj5az6eemmLlqDsghJwEmxY6A/viewform). if you need to include the following information: + +- Account name or name of person +- Account email +- Any personally identifying information +- Title of submission (app URLs alone are OK) +- When in doubt, use the above form. + +**Is your scoping review request related to an existing functionality? Please describe.** + +A clear and concise description of what or where the existing page or function is. Include URLs. + +**Describe the solution** + +A clear and concise description of what you want to happen. Include ideal URLs, if they don't already exist. + +**Describe alternatives you've considered** + +A clear and concise description of any alternative solutions or features you've considered. + +**Additional context** + +Add any other context or screenshots about the feature request here. + +**Priority** + +- High (keeping you from completing day-to-day tasks) +- Medium (slowing you down) +- Low priority (annoying, would be nice to not see) + +**Affected roles** + +- Staff +- Applicants +- Reviewers +- Partners +- Developers +- General public + +**Ideal deadline** + +Date when you'd like feedback, if appropriate. diff --git a/docker/Dockerfile.dev b/docker/Dockerfile.dev index 28432efa07065244c5acf28ce77a72a34d06a3bd..aeb41abb1b4c5cddceb01c426f8715e8e60acb54 100644 --- a/docker/Dockerfile.dev +++ b/docker/Dockerfile.dev @@ -1,27 +1,21 @@ FROM cimg/python:3.9.10-node -# Set work directory +# Set work directory. WORKDIR /usr/local/hypha -# Set environment variables +# Set environment variables. ENV API_BASE_URL http://apply.hypha.test:8090/api ENV DATABASE_URL postgres://hypha:hypha@db:5432/hypha ENV DJANGO_SETTINGS_MODULE hypha.settings.dev ENV PYTHONDONTWRITEBYTECODE 1 ENV PYTHONUNBUFFERED 1 -# Prepare for npm -COPY package.json package-lock.json /usr/local/hypha/ - # Set owner on /usr/local. RUN sudo chown -R circleci:circleci /usr/local -# Install node dependencies. -RUN npm install --quiet - # Install python dependencies. COPY requirements.txt requirements-dev.txt /usr/local/hypha/ RUN pip3 install --quiet -r requirements-dev.txt -# Run entrypoint.sh +# Run entrypoint.sh. ENTRYPOINT ["/usr/local/hypha/docker/entrypoint.dev.sh"] diff --git a/docker/entrypoint.dev.sh b/docker/entrypoint.dev.sh index 1284aae6cf8af42a71d1a5969b430b680eb7d652..883da8c353d4f37288bb4e29f7f4f0c5625ff975 100755 --- a/docker/entrypoint.dev.sh +++ b/docker/entrypoint.dev.sh @@ -1,13 +1,16 @@ #!/bin/sh -#npm install --quiet +# Install node packages and run build command. +npm install --quiet npm run build -#pip3 install --quiet -r requirements-dev.txt +# Run needed python commands. python3 manage.py createcachetable python3 manage.py collectstatic --noinput --verbosity=0 python3 manage.py migrate python3 manage.py wagtailsiteupdate hypha.test apply.hypha.test 8090 + +# Start gunicorn server. gunicorn hypha.wsgi:application --env DJANGO_SETTINGS_MODULE=hypha.settings.dev --reload --bind 0.0.0.0:9001 exec "$@" diff --git a/hypha/apply/activity/admin.py b/hypha/apply/activity/admin.py index ba4883b4e30c9b8236045d184eb14d9022ff4e70..e2c10512196d14598f4abd1d147da1bc293b2c2b 100644 --- a/hypha/apply/activity/admin.py +++ b/hypha/apply/activity/admin.py @@ -8,7 +8,7 @@ class MessageInline(admin.TabularInline): readonly_fields = ('type', 'recipient', 'content', 'status', 'external_id') can_delete = False - def has_add_permission(self, request): + def has_add_permission(self, request, obj): return False diff --git a/hypha/apply/activity/messaging.py b/hypha/apply/activity/messaging.py index 2c7e705561bc78ce7eda510adf8c8b1ab7430845..944532c958d333b4c6fa9f495278155764469b39 100644 --- a/hypha/apply/activity/messaging.py +++ b/hypha/apply/activity/messaging.py @@ -2,7 +2,6 @@ import json import logging from collections import defaultdict -import requests from django.conf import settings from django.contrib import messages from django.contrib.auth import get_user_model @@ -10,6 +9,7 @@ from django.db import models from django.template.loader import render_to_string from django.utils import timezone from django.utils.translation import gettext as _ +from django_slack import slack_message from hypha.apply.projects.models.payment import ( APPROVED_BY_FINANCE_1, @@ -18,7 +18,9 @@ from hypha.apply.projects.models.payment import ( CHANGES_REQUESTED_BY_FINANCE_1, CHANGES_REQUESTED_BY_FINANCE_2, CHANGES_REQUESTED_BY_STAFF, + CONVERTED, DECLINED, + PAID, RESUBMITTED, SUBMITTED, ) @@ -465,7 +467,7 @@ class SlackAdapter(AdapterBase): def __init__(self): super().__init__() - self.destination = settings.SLACK_DESTINATION_URL + self.destination = settings.SLACK_ENDPOINT_URL self.target_room = settings.SLACK_DESTINATION_ROOM self.comments_room = settings.SLACK_DESTINATION_ROOM_COMMENTS self.comments_type = settings.SLACK_TYPE_COMMENTS @@ -509,7 +511,10 @@ class SlackAdapter(AdapterBase): recipients.append(self.slack_id(submission.assigned.with_roles().last().reviewer)) if message_type == MESSAGES.UPDATE_INVOICE_STATUS: - if related.status in [SUBMITTED, RESUBMITTED, CHANGES_REQUESTED_BY_FINANCE_1, APPROVED_BY_FINANCE_2]: + if related.status in [ + SUBMITTED, RESUBMITTED, CHANGES_REQUESTED_BY_FINANCE_1, + APPROVED_BY_FINANCE_2, CONVERTED, PAID + ]: # Notify project lead/staff return recipients if related.status in [APPROVED_BY_STAFF, CHANGES_REQUESTED_BY_FINANCE_2]: @@ -711,23 +716,26 @@ class SlackAdapter(AdapterBase): def send_message(self, message, recipient, source, **kwargs): target_rooms = self.slack_channels(source, **kwargs) - if not self.destination or not any(target_rooms): + if not any(target_rooms) or not settings.SLACK_TOKEN: errors = list() - if not self.destination: - errors.append('Destination URL') if not target_rooms: errors.append('Room ID') + if not settings.SLACK_TOKEN: + errors.append('Slack Token') return 'Missing configuration: {}'.format(', '.join(errors)) message = ' '.join([recipient, message]).strip() data = { - "room": target_rooms, "message": message, } - response = requests.post(self.destination, json=data) - - return str(response.status_code) + ': ' + response.content.decode() + for room in target_rooms: + try: + slack_message('messages/slack_message.html', data, channel=room) + except Exception as e: + logger.exception(e) + return '400: Bad Request' + return '200: OK' class EmailAdapter(AdapterBase): diff --git a/hypha/apply/activity/tasks.py b/hypha/apply/activity/tasks.py index 247c8ceda95de33fc5cd4d347528d1a1181f45fc..cc4c13f21a9fc974f11b26b4e832d68ec0d38d84 100644 --- a/hypha/apply/activity/tasks.py +++ b/hypha/apply/activity/tasks.py @@ -8,6 +8,8 @@ app.config_from_object(settings, namespace='CELERY', force=True) def send_mail(subject, message, from_address, recipients, logs=None): + if settings.EMAIL_SUBJECT_PREFIX: + subject = str(settings.EMAIL_SUBJECT_PREFIX) + str(subject) # Convenience method to wrap the tasks and handle the callback send_mail_task.apply_async( kwargs={ diff --git a/hypha/apply/activity/templates/messages/email/applicant_base.html b/hypha/apply/activity/templates/messages/email/applicant_base.html index fd8a4765f5b97bd90d20813009cece8f33a7be9c..636c74b1e151fc3fe58c71b684fc18a921933cdb 100644 --- a/hypha/apply/activity/templates/messages/email/applicant_base.html +++ b/hypha/apply/activity/templates/messages/email/applicant_base.html @@ -3,11 +3,9 @@ {% load i18n %} {% block salutation %}{% blocktrans with name=source.user.get_full_name|default:"applicant" %}Dear {{ name }},{% endblocktrans %}{% endblock %} -{% block more_info %} -{% trans "Link to your application" %}: {{ request.scheme }}://{{ request.get_host }}{{ source.get_absolute_url }} +{% block more_info %}{% trans "Link to your application" %}: {{ request.scheme }}://{{ request.get_host }}{{ source.get_absolute_url }} {% trans "If you have any questions, please submit them here" %}: {{ request.scheme }}://{{ request.get_host }}{{ source.get_absolute_url }}#communications -{% trans "Link to our guide" %}: {{ ORG_GUIDE_URL }} +{% trans "See our guide for more information" %}: {{ ORG_GUIDE_URL }} -{% blocktrans %}If you have any issues accessing the submission system or other general inquiries, please email us at {{ ORG_EMAIL }}{% endblocktrans %} -{% endblock %} +{% blocktrans %}If you have any issues accessing the submission system or other general inquiries, please email us at {{ ORG_EMAIL }}{% endblocktrans %}{% endblock %} diff --git a/hypha/apply/activity/templates/messages/email/base.html b/hypha/apply/activity/templates/messages/email/base.html index 84fa974aec1298033ec3da11634b605fb43fc969..07f42af0d36839c3d65e24d0bfa5df9a5a1bec2e 100644 --- a/hypha/apply/activity/templates/messages/email/base.html +++ b/hypha/apply/activity/templates/messages/email/base.html @@ -1,13 +1,14 @@ {% load i18n %} {% block salutation %}{% blocktrans %}Dear {{ user }},{% endblocktrans %}{% endblock %} -{% load i18n %} {% block content %}{% endblock %} + {% block more_info %}{% endblock %} + {% blocktrans %}Kind Regards, -The {{ ORG_SHORT_NAME }} Team +The {{ ORG_SHORT_NAME }} Team{% endblocktrans %} -- {{ ORG_LONG_NAME }} -{{ PUBLIC_SITE.root_url }}{% endblocktrans %} +{{ PUBLIC_SITE.root_url }} {% block post_signature_content %}{% endblock %} diff --git a/hypha/apply/activity/templates/messages/email/invited_to_proposal.html b/hypha/apply/activity/templates/messages/email/invited_to_proposal.html index 778ab5d7c998c3aeea77e5c958fc50a6e187b185..27bac4f1bed69573ca2a4c88774eea65d8dde9c7 100644 --- a/hypha/apply/activity/templates/messages/email/invited_to_proposal.html +++ b/hypha/apply/activity/templates/messages/email/invited_to_proposal.html @@ -1,15 +1,13 @@ {% extends "messages/email/applicant_base.html" %} {% load i18n %} -{% block content %}{% blocktrans %}We’ve reviewed your concept note and think it could be a good fit for {{ ORG_SHORT_NAME }} funding. We would like to invite you to submit a proposal with more details about your project. You will receive a second email linking to a determination message with detailed feedback.{% endblocktrans %} +{% block content %}{% blocktrans %}We’ve reviewed your Concept note and think it could be a good fit for {{ ORG_SHORT_NAME }} funding. We would like to invite you to submit a Proposal with more details about your project. You will receive a second email linking to a determination message with detailed feedback.{% endblocktrans %} -{% blocktrans %}The system will allow you to save a draft of your proposal as you work on it. When you feel it is ready for our review, please click the “Submit†button and we’ll know to take a look at it. We’ll reply to you with feedback on your Proposal as quickly as possible.{% endblocktrans %}{% endblock %} +{% blocktrans %}Please review our Proposal Guide at {{ ORG_GUIDE_URL }} to learn more about the information we’d like to see. In the proposal please also address the feedback we provided in the concept note determination.{% endblocktrans %}{% endblock %} -{% block more_info %} -{% trans "Here is the link to start creating your proposal" %}: {{ request.scheme }}://{{ request.get_host }}{{ source.get_absolute_url }} +{% block more_info %}{% trans "Here is the link to start creating your proposal" %}: {{ request.scheme }}://{{ request.get_host }}{{ source.get_absolute_url }} {% trans "If you have any questions, please submit them here" %}: {{ request.scheme }}://{{ request.get_host }}{{ source.get_absolute_url }}#communications -{% trans "Link to our guide" %}: {{ ORG_GUIDE_URL }} +{% blocktrans %}The system will allow you to save a draft of your proposal as you work on it. When you feel it is ready for our review, please click the “Submit†button and we’ll know to take a look at it. We’ll reply to you with feedback on your Proposal as quickly as possible.{% endblocktrans %} -{% blocktrans %}If you have any issues accessing the submission system or other general inquiries, please email us at {{ ORG_EMAIL }}{% endblocktrans %} -{% endblock %} +{% blocktrans %}If you have any issues accessing the submission system or other general inquiries, please email us at {{ ORG_EMAIL }}{% endblocktrans %}{% endblock %} diff --git a/hypha/apply/activity/templates/messages/email/transition.html b/hypha/apply/activity/templates/messages/email/transition.html index 11d25c2dda12225b45c71faa79a014effc023864..4188597a6802f485ffaffb2125c34da05d504aae 100644 --- a/hypha/apply/activity/templates/messages/email/transition.html +++ b/hypha/apply/activity/templates/messages/email/transition.html @@ -1,6 +1,6 @@ {% extends "messages/email/applicant_base.html" %} {% load i18n %} -{% block content %}{% blocktrans with old_status=old_phase.public_name new_status=source.phase.public_name %}Your application has been progressed from {{ old_status }} to {{ new_status }}.{% endblocktrans %}{% endblock %} - +{% block content %}{% blocktrans with old_status=old_phase.public_name new_status=source.phase.public_name %}Your application is now in "{{ new_status }}" status (progressed from "{{ old_status }}").{% endblocktrans %} +{% trans "Please submit any questions related to your application here" %}: {{ request.scheme }}://{{ request.get_host }}{{ source.get_absolute_url }}#communications{% endblock %} diff --git a/hypha/apply/activity/templates/messages/slack_message.html b/hypha/apply/activity/templates/messages/slack_message.html new file mode 100644 index 0000000000000000000000000000000000000000..1974748d10599f1f3950bac5009d9f22736b1ab2 --- /dev/null +++ b/hypha/apply/activity/templates/messages/slack_message.html @@ -0,0 +1,6 @@ +{% extends django_slack %} +<!--Template required for django-slack. We can customize it for channels, endpoint_url, etc as per the requirements.--> + +{% block text %} +{{ message|safe }} +{% endblock %} diff --git a/hypha/apply/activity/tests/test_messaging.py b/hypha/apply/activity/tests/test_messaging.py index bd716ec6256dc611edab3c147bb88b170a403055..e6f90c0c6a1029cb41bd185e4ae514586a8ea1c1 100644 --- a/hypha/apply/activity/tests/test_messaging.py +++ b/hypha/apply/activity/tests/test_messaging.py @@ -7,6 +7,7 @@ import responses from django.contrib.messages import get_messages from django.core import mail from django.test import TestCase, override_settings +from django_slack.utils import get_backend from hypha.apply.funds.tests.factories import ( ApplicationSubmissionFactory, @@ -330,99 +331,101 @@ class TestActivityAdapter(TestCase): class TestSlackAdapter(AdapterMixin, TestCase): source_factory = ApplicationSubmissionFactory + backend = 'django_slack.backends.TestBackend' target_url = 'https://my-slack-backend.com/incoming/my-very-secret-key' target_room = '#<ROOM ID>' + token = 'fake-token' @override_settings( - SLACK_DESTINATION_URL=target_url, + SLACK_ENDPOINT_URL=target_url, SLACK_DESTINATION_ROOM=None, + SLACK_BACKEND=backend, + SLACK_TOKEN=token, ) - @responses.activate def test_cant_send_with_no_room(self): + error_message = "Missing configuration: Room ID" adapter = SlackAdapter() submission = ApplicationSubmissionFactory() - adapter.send_message('my message', '', source=submission) - self.assertEqual(len(responses.calls), 0) + messages = adapter.send_message('my message', '', source=submission) + self.assertEqual(messages, error_message) @override_settings( - SLACK_DESTINATION_URL=None, + SLACK_ENDPOINT_URL=target_url, SLACK_DESTINATION_ROOM=target_room, + SLACK_BACKEND=backend, + SLACK_TOKEN=None, ) - @responses.activate - def test_cant_send_with_no_url(self): + def test_cant_send_with_no_token(self): + error_message = "Missing configuration: Slack Token" adapter = SlackAdapter() submission = ApplicationSubmissionFactory() - adapter.send_message('my message', '', source=submission) - self.assertEqual(len(responses.calls), 0) + messages = adapter.send_message('my message', '', source=submission) + self.assertEqual(messages, error_message) @override_settings( - SLACK_DESTINATION_URL=target_url, + SLACK_ENDPOINT_URL=target_url, SLACK_DESTINATION_ROOM=target_room, + SLACK_BACKEND=backend, + SLACK_TOKEN=token, ) - @responses.activate def test_correct_payload(self): - responses.add(responses.POST, self.target_url, status=200, body='OK') + backend = get_backend() + backend.reset_messages() submission = ApplicationSubmissionFactory() adapter = SlackAdapter() message = 'my message' adapter.send_message(message, '', source=submission) - self.assertEqual(len(responses.calls), 1) - self.assertDictEqual( - json.loads(responses.calls[0].request.body), - { - 'room': [self.target_room], - 'message': message, - } - ) + messages = backend.retrieve_messages() + self.assertEqual(len(messages), 1) + message_payload = json.loads(messages[0]['payload']) + self.assertEqual(message_payload['text'], message) @override_settings( - SLACK_DESTINATION_URL=target_url, + SLACK_ENDPOINT_URL=target_url, SLACK_DESTINATION_ROOM=target_room, + SLACK_BACKEND=backend, + SLACK_TOKEN=token, ) - @responses.activate def test_fund_custom_slack_channel(self): + backend = get_backend() + backend.reset_messages() responses.add(responses.POST, self.target_url, status=200, body='OK') submission = ApplicationSubmissionFactory(round__parent__slack_channel='dummy') adapter = SlackAdapter() message = 'my message' adapter.send_message(message, '', source=submission) - self.assertEqual(len(responses.calls), 1) - self.assertDictEqual( - json.loads(responses.calls[0].request.body), - { - 'room': ['#dummy'], - 'message': message, - } - ) + messages = backend.retrieve_messages() + self.assertEqual(len(messages), 1) + message_payload = json.loads(messages[0]['payload']) + self.assertEqual(message_payload['text'], message) + self.assertEqual(message_payload['channel'], '#dummy') @override_settings( - SLACK_DESTINATION_URL=target_url, + SLACK_ENDPOINT_URL=target_url, SLACK_DESTINATION_ROOM=target_room, + SLACK_BACKEND=backend, + SLACK_TOKEN=token, ) - @responses.activate def test_fund_multiple_custom_slack_channel(self): - responses.add(responses.POST, self.target_url, status=200, body='OK') + backend = get_backend() + backend.reset_messages() submission = ApplicationSubmissionFactory(round__parent__slack_channel='dummy1, dummy2') adapter = SlackAdapter() message = 'my message' adapter.send_message(message, '', source=submission) - self.assertEqual(len(responses.calls), 1) - self.assertDictEqual( - json.loads(responses.calls[0].request.body), - { - 'room': ['#dummy1', '#dummy2'], - 'message': message, - } - ) + messages = backend.retrieve_messages() + self.assertEqual(len(messages), 2) + for index, sent_message in enumerate(messages): + message_payload = json.loads(sent_message['payload']) + self.assertEqual(message_payload['text'], message) + self.assertEqual(message_payload['channel'], '#dummy' + str(index + 1)) - @responses.activate def test_gets_lead_if_slack_set(self): adapter = SlackAdapter() submission = ApplicationSubmissionFactory() recipients = adapter.recipients(MESSAGES.COMMENT, source=submission, related=None) self.assertTrue(submission.lead.slack in recipients[0]) - @responses.activate def test_gets_blank_if_slack_not_set(self): adapter = SlackAdapter() submission = ApplicationSubmissionFactory(lead__slack='') @@ -430,13 +433,12 @@ class TestSlackAdapter(AdapterMixin, TestCase): self.assertTrue(submission.lead.slack in recipients[0]) @override_settings( - SLACK_DESTINATION_URL=target_url, + SLACK_ENDPOINT_URL=target_url, SLACK_DESTINATION_ROOM=target_room, + SLACK_BACKEND=backend, + SLACK_TOKEN=token, ) - @responses.activate def test_message_with_good_response(self): - responses.add(responses.POST, self.target_url, status=200, body='OK') - self.adapter = SlackAdapter() self.adapter_process(MESSAGES.NEW_SUBMISSION) self.assertEqual(Message.objects.count(), 1) @@ -445,19 +447,21 @@ class TestSlackAdapter(AdapterMixin, TestCase): self.assertEqual(sent_message.status, '200: OK') @override_settings( - SLACK_DESTINATION_URL=target_url, + SLACK_ENDPOINT_URL=target_url, SLACK_DESTINATION_ROOM=target_room, + SLACK_BACKEND=backend, + SLACK_TOKEN=token, ) - @responses.activate - def test_message_with_bad_response(self): - responses.add(responses.POST, self.target_url, status=400, body='Bad Request') - - self.adapter = SlackAdapter() - self.adapter_process(MESSAGES.NEW_SUBMISSION) - self.assertEqual(Message.objects.count(), 1) - sent_message = Message.objects.first() - self.assertEqual(sent_message.content[0:10], self.adapter.messages[MESSAGES.NEW_SUBMISSION][0:10]) - self.assertEqual(sent_message.status, '400: Bad Request') + def test_400_bad_request(self): + backend = get_backend() + backend.reset_messages() + submission = ApplicationSubmissionFactory() + adapter = SlackAdapter() + message = '' + message_status = adapter.send_message(message, '', source=submission) + messages = backend.retrieve_messages() + self.assertEqual(len(messages), 0) + self.assertEqual(message_status, '400: Bad Request') @override_settings(SEND_MESSAGES=True) @@ -592,8 +596,10 @@ class TestAdaptersForProject(AdapterMixin, TestCase): activity = ActivityAdapter source_factory = ProjectFactory # Slack + backend = 'django_slack.backends.TestBackend' target_url = 'https://my-slack-backend.com/incoming/my-very-secret-key' target_room = '#<ROOM ID>' + token = 'fake-token' def test_activity_lead_change(self): old_lead = UserFactory() @@ -635,12 +641,14 @@ class TestAdaptersForProject(AdapterMixin, TestCase): self.assertEqual(project.submission, activity.related_object) @override_settings( - SLACK_DESTINATION_URL=target_url, + SLACK_ENDPOINT_URL=target_url, SLACK_DESTINATION_ROOM=target_room, + SLACK_BACKEND=backend, + SLACK_TOKEN=token, ) - @responses.activate def test_slack_created(self): - responses.add(responses.POST, self.target_url, status=200, body='OK') + backend = get_backend() + backend.reset_messages() project = self.source_factory() user = UserFactory() self.adapter_process( @@ -650,18 +658,21 @@ class TestAdaptersForProject(AdapterMixin, TestCase): source=project, related=project.submission, ) - self.assertEqual(len(responses.calls), 1) - data = json.loads(responses.calls[0].request.body) - self.assertIn(str(user), data['message']) - self.assertIn(str(project), data['message']) + messages = backend.retrieve_messages() + self.assertEqual(len(messages), 1) + message_payload = json.loads(messages[0]['payload']) + self.assertIn(str(user), message_payload['text']) + self.assertIn(str(project), message_payload['text']) @override_settings( - SLACK_DESTINATION_URL=target_url, + SLACK_ENDPOINT_URL=target_url, SLACK_DESTINATION_ROOM=target_room, + SLACK_BACKEND=backend, + SLACK_TOKEN=token, ) - @responses.activate def test_slack_lead_change(self): - responses.add(responses.POST, self.target_url, status=200, body='OK') + backend = get_backend() + backend.reset_messages() project = self.source_factory() user = UserFactory() self.adapter_process( @@ -671,19 +682,21 @@ class TestAdaptersForProject(AdapterMixin, TestCase): source=project, related=project.submission, ) - self.assertEqual(len(responses.calls), 1) - data = json.loads(responses.calls[0].request.body) - self.assertIn(str(user), data['message']) - self.assertIn(str(project), data['message']) + messages = backend.retrieve_messages() + self.assertEqual(len(messages), 1) + message_payload = json.loads(messages[0]['payload']) + self.assertIn(str(user), message_payload['text']) + self.assertIn(str(project), message_payload['text']) @override_settings( - SLACK_DESTINATION_URL=target_url, + SLACK_ENDPOINT_URL=target_url, SLACK_DESTINATION_ROOM=target_room, + SLACK_BACKEND=backend, + SLACK_TOKEN=token, ) - @responses.activate def test_slack_applicant_update_invoice(self): - responses.add(responses.POST, self.target_url, status=200, body='OK') - + backend = get_backend() + backend.reset_messages() project = self.source_factory() invoice = InvoiceFactory(project=project) applicant = ApplicantFactory() @@ -695,21 +708,22 @@ class TestAdaptersForProject(AdapterMixin, TestCase): source=project, related=invoice, ) + messages = backend.retrieve_messages() - self.assertEqual(len(responses.calls), 1) - - data = json.loads(responses.calls[0].request.body) - self.assertIn(str(applicant), data['message']) - self.assertIn(str(project), data['message']) + self.assertEqual(len(messages), 1) + message_payload = json.loads(messages[0]['payload']) + self.assertIn(str(applicant), message_payload['text']) + self.assertIn(str(project), message_payload['text']) @override_settings( - SLACK_DESTINATION_URL=target_url, + SLACK_ENDPOINT_URL=target_url, SLACK_DESTINATION_ROOM=target_room, + SLACK_BACKEND=backend, + SLACK_TOKEN=token, ) - @responses.activate def test_slack_staff_update_invoice(self): - responses.add(responses.POST, self.target_url, status=200, body='OK') - + backend = get_backend() + backend.reset_messages() project = self.source_factory() invoice = InvoiceFactory(project=project) staff = StaffFactory() @@ -721,8 +735,8 @@ class TestAdaptersForProject(AdapterMixin, TestCase): source=project, related=invoice, ) - - self.assertEqual(len(responses.calls), 1) + messages = backend.retrieve_messages() + self.assertEqual(len(messages), 1) @override_settings(SEND_MESSAGES=True) def test_email_staff_update_invoice(self): diff --git a/hypha/apply/api/v1/filters.py b/hypha/apply/api/v1/filters.py index 23764e78c4c78896ebe0be708404d566be6341d2..025aa4f9a112369b98755947edeb588cbec30c9c 100644 --- a/hypha/apply/api/v1/filters.py +++ b/hypha/apply/api/v1/filters.py @@ -45,7 +45,7 @@ class SubmissionsFilter(filters.FilterSet): ) id = filters.ModelMultipleChoiceFilter( field_name='id', - queryset=ApplicationSubmission.objects.current().with_latest_update(), + queryset=ApplicationSubmission.objects.exclude_draft().current().with_latest_update(), method='filter_id' ) diff --git a/hypha/apply/api/v1/views.py b/hypha/apply/api/v1/views.py index b5b9e2baaaecf122b25c7607be59f193fc4a579a..be67214edfea966f331c7ca9afdbe553acfc8d7d 100644 --- a/hypha/apply/api/v1/views.py +++ b/hypha/apply/api/v1/views.py @@ -62,8 +62,8 @@ class SubmissionViewSet(viewsets.ReadOnlyModelViewSet, viewsets.GenericViewSet): def get_queryset(self): if self.action == 'list': - return ApplicationSubmission.objects.current().with_latest_update() - return ApplicationSubmission.objects.all().prefetch_related( + return ApplicationSubmission.objects.exclude_draft().current().with_latest_update() + return ApplicationSubmission.objects.exclude_draft().prefetch_related( Prefetch('reviews', Review.objects.submitted()), ) diff --git a/hypha/apply/dashboard/views.py b/hypha/apply/dashboard/views.py index ac7a22f69742c0ee3453ac163546ea4002e84a6c..f08e327d03c75d6acf94f7d292fb642b9ba1a288 100644 --- a/hypha/apply/dashboard/views.py +++ b/hypha/apply/dashboard/views.py @@ -4,7 +4,11 @@ from django.urls import reverse, reverse_lazy from django.views.generic import TemplateView from django_tables2.views import MultiTableMixin -from hypha.apply.funds.models import ApplicationSubmission, RoundsAndLabs +from hypha.apply.funds.models import ( + ApplicationSubmission, + ReviewerSettings, + RoundsAndLabs, +) from hypha.apply.funds.tables import ( ReviewerSubmissionsTable, SubmissionFilterAndSearch, @@ -162,7 +166,7 @@ class FinanceDashboardView(MyFlaggedMixin, TemplateView): def active_invoices(self): if self.request.user.is_finance_level_2: - invoices = Invoice.objects.approved_by_finance_1() + invoices = Invoice.objects.for_finance_2() else: invoices = Invoice.objects.for_finance_1() @@ -188,7 +192,16 @@ class ReviewerDashboardView(MyFlaggedMixin, MySubmissionContextMixin, TemplateVi def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) - submissions = ApplicationSubmission.objects.all().for_table(self.request.user) + ''' + If use_settings variable is set for ReviewerSettings use settings + parameters to filter submissions or return all as it + was by default. + ''' + reviewer_settings = ReviewerSettings.for_request(self.request) + if reviewer_settings.use_settings: + submissions = ApplicationSubmission.objects.for_reviewer_settings(self.request.user, reviewer_settings).for_table(self.request.user) + else: + submissions = ApplicationSubmission.objects.all().for_table(self.request.user) context.update({ 'awaiting_reviews': self.awaiting_reviews(submissions), diff --git a/hypha/apply/determinations/migrations/0012_auto_20220509_1136.py b/hypha/apply/determinations/migrations/0012_auto_20220509_1136.py new file mode 100644 index 0000000000000000000000000000000000000000..1fbaf3e5427cd001e9cb74753f7b4884e66eb2fd --- /dev/null +++ b/hypha/apply/determinations/migrations/0012_auto_20220509_1136.py @@ -0,0 +1,59 @@ +# Generated by Django 3.2.13 on 2022-05-09 11:36 + +from django.db import migrations +import wagtail.core.fields + + +class Migration(migrations.Migration): + + dependencies = [ + ('determinations', '0011_auto_20220111_1314'), + ] + + operations = [ + migrations.AlterField( + model_name='determinationmessagesettings', + name='concept_accepted', + field=wagtail.core.fields.RichTextField(blank=True, verbose_name='Approved'), + ), + migrations.AlterField( + model_name='determinationmessagesettings', + name='concept_more_info', + field=wagtail.core.fields.RichTextField(blank=True, verbose_name='Needs more info'), + ), + migrations.AlterField( + model_name='determinationmessagesettings', + name='concept_rejected', + field=wagtail.core.fields.RichTextField(blank=True, verbose_name='Dismissed'), + ), + migrations.AlterField( + model_name='determinationmessagesettings', + name='proposal_accepted', + field=wagtail.core.fields.RichTextField(blank=True, verbose_name='Approved'), + ), + migrations.AlterField( + model_name='determinationmessagesettings', + name='proposal_more_info', + field=wagtail.core.fields.RichTextField(blank=True, verbose_name='Needs more info'), + ), + migrations.AlterField( + model_name='determinationmessagesettings', + name='proposal_rejected', + field=wagtail.core.fields.RichTextField(blank=True, verbose_name='Dismissed'), + ), + migrations.AlterField( + model_name='determinationmessagesettings', + name='request_accepted', + field=wagtail.core.fields.RichTextField(blank=True, verbose_name='Approved'), + ), + migrations.AlterField( + model_name='determinationmessagesettings', + name='request_more_info', + field=wagtail.core.fields.RichTextField(blank=True, verbose_name='Needs more info'), + ), + migrations.AlterField( + model_name='determinationmessagesettings', + name='request_rejected', + field=wagtail.core.fields.RichTextField(blank=True, verbose_name='Dismissed'), + ), + ] diff --git a/hypha/apply/determinations/models.py b/hypha/apply/determinations/models.py index 5e5bcbb9a5bcc4a265816f664153dbc9c9516248..7d21872249a74c2eecdc34ccb4d91d78068e6a82 100644 --- a/hypha/apply/determinations/models.py +++ b/hypha/apply/determinations/models.py @@ -15,6 +15,7 @@ from wagtail.contrib.settings.models import BaseSetting, register_setting from wagtail.core.fields import RichTextField, StreamField from hypha.apply.funds.models.mixins import AccessFormData +from hypha.apply.funds.workflow import Concept, Proposal, Request from .blocks import ( DeterminationBlock, @@ -184,21 +185,25 @@ class DeterminationMessageSettings(BaseSetting): class Meta: verbose_name = 'determination messages' - request_accepted = RichTextField("Approved") - request_rejected = RichTextField("Dismissed") - request_more_info = RichTextField("Needs more info") + request_accepted = RichTextField("Approved", blank=True) + request_rejected = RichTextField("Dismissed", blank=True) + request_more_info = RichTextField("Needs more info", blank=True) - concept_accepted = RichTextField("Approved") - concept_rejected = RichTextField("Dismissed") - concept_more_info = RichTextField("Needs more info") + concept_accepted = RichTextField("Approved", blank=True) + concept_rejected = RichTextField("Dismissed", blank=True) + concept_more_info = RichTextField("Needs more info", blank=True) - proposal_accepted = RichTextField("Approved") - proposal_rejected = RichTextField("Dismissed") - proposal_more_info = RichTextField("Needs more info") + proposal_accepted = RichTextField("Approved", blank=True) + proposal_rejected = RichTextField("Dismissed", blank=True) + proposal_more_info = RichTextField("Needs more info", blank=True) def get_for_stage(self, stage_name): message_templates = {} - prefix = f"{stage_name.lower()}_" + if stage_name in [Request.name, Concept.name, Proposal.name]: + prefix = f"{stage_name.lower()}_" + else: + # Use Request's message templates for remaining workflows + prefix = "request_" for field in self._meta.get_fields(): if prefix in field.name: diff --git a/hypha/apply/determinations/templates/determinations/base_determination_form.html b/hypha/apply/determinations/templates/determinations/base_determination_form.html index 26b805e215d47af818c7ed357f1a4299c58c1cf3..510c1d5538dccbe892b9cb13298ef2951400c00b 100644 --- a/hypha/apply/determinations/templates/determinations/base_determination_form.html +++ b/hypha/apply/determinations/templates/determinations/base_determination_form.html @@ -52,8 +52,7 @@ </form> {% for type, message in message_templates.items %} <div class="is-hidden" data-type="{{ type }}" id="determination-message-{{ type }}"> - <h1>message</h1> - {{ message|bleach }} + {{ message }} </div> {% endfor %} </div> @@ -61,5 +60,6 @@ {% endblock %} {% block extra_js %} - {# Skip this until the script is improved. <script src="{% static 'js/apply/determination-template.js' %}"></script> #} + {{ field_blocks_ids|json_script:"block-ids" }} + <script src="{% static 'js/apply/determination-template.js' %}"></script> {% endblock %} diff --git a/hypha/apply/determinations/views.py b/hypha/apply/determinations/views.py index c75fd11952e5a7ef1aef4f83cf36ca1416eefa30..acd32c39a62741efe87457cf024e6a1eb83a1ede 100644 --- a/hypha/apply/determinations/views.py +++ b/hypha/apply/determinations/views.py @@ -24,7 +24,7 @@ from hypha.apply.stream_forms.models import BaseStreamForm from hypha.apply.users.decorators import staff_required from hypha.apply.utils.views import CreateOrUpdateView, ViewDispatcher -from .blocks import DeterminationBlock +from .blocks import DeterminationBlock, DeterminationMessageBlock from .forms import ( BatchConceptDeterminationForm, BatchDeterminationForm, @@ -308,9 +308,18 @@ class DeterminationCreateOrUpdateView(BaseStreamForm, CreateOrUpdateView): site = Site.find_for_request(self.request) determination_messages = DeterminationMessageSettings.for_site(site) + # Pass blocks ids to identify block types(determination & message) in determination message template js. + field_blocks_ids = {} + if self.submission.is_determination_form_attached: + for field_block in self.get_defined_fields(): + if isinstance(field_block.block, DeterminationBlock) or \ + isinstance(field_block.block, DeterminationMessageBlock): + field_blocks_ids[field_block.block_type] = field_block.id + return super().get_context_data( submission=self.submission, message_templates=determination_messages.get_for_stage(self.submission.stage.name), + field_blocks_ids=field_blocks_ids, **kwargs ) diff --git a/hypha/apply/funds/admin_forms.py b/hypha/apply/funds/admin_forms.py index a1d15f0c6d2b7f279b2639ca053e7c82309f8a29..cc3a7611e1532fc3f8bb346c0e1688d2b5c87360 100644 --- a/hypha/apply/funds/admin_forms.py +++ b/hypha/apply/funds/admin_forms.py @@ -14,6 +14,7 @@ class WorkflowFormAdminForm(WagtailAdminPageForm): workflow = WORKFLOWS[cleaned_data['workflow_name']] application_forms = self.formsets['forms'] review_forms = self.formsets['review_forms'] + external_review_forms = self.formsets['external_review_forms'] determination_forms = self.formsets['determination_forms'] number_of_stages = len(workflow.stages) @@ -21,6 +22,7 @@ class WorkflowFormAdminForm(WagtailAdminPageForm): if number_of_stages == 1: self.validate_stages_equal_forms(workflow, application_forms) self.validate_stages_equal_forms(workflow, review_forms, form_type="Review form") + self.validate_stages_equal_forms(workflow, external_review_forms, form_type="External Review form") self.validate_stages_equal_forms( workflow, determination_forms, form_type="Determination form" ) @@ -63,6 +65,18 @@ class WorkflowFormAdminForm(WagtailAdminPageForm): number_of_stages = len(workflow.stages) plural_stage = 's' if number_of_stages > 1 else '' + # External Review Form is optional and should be single if provided + if form_type == "External Review form": + if number_of_forms > 1: + self.add_error( + None, + f'Number of {form_type}s should not be more than one: ' + f'{number_of_forms} {form_type}{plural_form} provided', + ) + return + else: + return + if number_of_forms != number_of_stages: self.add_error( None, diff --git a/hypha/apply/funds/admin_views.py b/hypha/apply/funds/admin_views.py index 4b3dbef3650eb7b58a612508130b72e61790350d..d828302fa5c073a31132cab9a91e82f4f4162529 100644 --- a/hypha/apply/funds/admin_views.py +++ b/hypha/apply/funds/admin_views.py @@ -101,6 +101,15 @@ class CopyApplicationFormViewClass(CreateView): class CreateApplicationFormView(CreateView): + def get_form(self): + """ + Overriding this method to disable the single file block option from Application Form. + Set 0 as max_number of single file can be added to make single file block option unavailable or disable. + """ + form = super(CreateApplicationFormView, self).get_form() + form.fields['form_fields'].block.meta.block_counts = {'file': {'min_num': 0, 'max_num': 0}} + return form + def form_invalid(self, form): show_admin_form_error_messages(self.request, form) return self.render_to_response(self.get_context_data(form=form)) @@ -108,6 +117,17 @@ class CreateApplicationFormView(CreateView): class EditApplicationFormView(EditView): + def get_form(self): + """ + Overriding this method to disable the single file block option from Application Form. + Calculating the number of Single file blocks that exist in the instance already. + And set that count as max_number of single file block can be added to make single file option disable. + """ + form = super(EditApplicationFormView, self).get_form() + single_file_count = sum(1 for block in self.get_instance().form_fields.raw_data if block['type'] == 'file') + form.fields['form_fields'].block.meta.block_counts = {'file': {'min_num': 0, 'max_num': single_file_count}} + return form + def form_invalid(self, form): show_admin_form_error_messages(self.request, form) return self.render_to_response(self.get_context_data(form=form)) diff --git a/hypha/apply/funds/forms.py b/hypha/apply/funds/forms.py index 52e4eb5ab8f6da78dc6c11813b19f35199f7bf9b..ed280143099856aaf6e11bb9e85da14d455086e5 100644 --- a/hypha/apply/funds/forms.py +++ b/hypha/apply/funds/forms.py @@ -5,6 +5,7 @@ from operator import methodcaller import bleach from django import forms +from django.conf import settings from django.utils.safestring import mark_safe from django.utils.text import slugify from django.utils.translation import gettext_lazy as _ @@ -193,7 +194,7 @@ class UpdateReviewersForm(ApplicationSubmissionModelForm): reviewer_reviewers = forms.ModelMultipleChoiceField( queryset=User.objects.reviewers().only('pk', 'full_name'), widget=Select2MultiCheckboxesWidget(attrs={'data-placeholder': 'Reviewers'}), - label=_('Reviewers'), + label=_('External Reviewers'), required=False, ) @@ -251,7 +252,14 @@ class UpdateReviewersForm(ApplicationSubmissionModelForm): field.initial = initial def can_alter_external_reviewers(self, instance, user): - return instance.stage.has_external_review and (user == instance.lead or user.is_superuser) + if instance.stage.has_external_review: + if user.is_superuser: + return True + if settings.GIVE_STAFF_LEAD_PERMS: + return user.is_apply_staff + else: + return user == instance.lead + return False def clean(self): cleaned_data = super().clean() @@ -315,9 +323,18 @@ class UpdateReviewersForm(ApplicationSubmissionModelForm): class BatchUpdateReviewersForm(forms.Form): submissions = forms.CharField(widget=forms.HiddenInput(attrs={'class': 'js-submissions-id'})) + external_reviewers = forms.ModelMultipleChoiceField( + queryset=User.objects.reviewers().only('pk', 'full_name'), + widget=Select2MultiCheckboxesWidget(attrs={'data-placeholder': 'Reviewers'}), + label=_('External Reviewers'), + required=False, + ) def __init__(self, *args, user=None, round=None, **kwargs): super().__init__(*args, **kwargs) + self.user = user + + self.fields = OrderedDict(self.fields) self.role_fields = {} field_data = make_role_reviewer_fields() @@ -327,6 +344,8 @@ class BatchUpdateReviewersForm(forms.Form): self.fields[field_name] = data['field'] self.role_fields[field_name] = data['role'] + self.fields.move_to_end('external_reviewers') + def clean_submissions(self): value = self.cleaned_data['submissions'] submission_ids = [int(submission) for submission in value.split(',')] @@ -334,6 +353,16 @@ class BatchUpdateReviewersForm(forms.Form): def clean(self): cleaned_data = super().clean() + external_reviewers = self.cleaned_data['external_reviewers'] + submissions = self.cleaned_data['submissions'] + if external_reviewers: + # User needs to be superuser or lead of all selected submissions. + if not self.user_can_alter_submissions_external_reviewers(submissions, self.user): + self.add_error('external_reviewers', _("Only Lead can change the External Reviewers")) + # If user is trying to change the external reviewers for submissions that doesn't have workflow with external_review stage. + elif self.submissions_cant_have_external_reviewers(submissions): + self.add_error('external_reviewers', _('External Reviewers cannot be selected because of the application workflow')) + role_reviewers = [ user for field, user in self.cleaned_data.items() @@ -346,8 +375,25 @@ class BatchUpdateReviewersForm(forms.Form): return cleaned_data + def submissions_cant_have_external_reviewers(self, submissions): + for submission in submissions: + if not submission.stage.has_external_review: + return True + return False + + def user_can_alter_submissions_external_reviewers(self, submissions, user): + # User needs to be superuser or lead of all selected submissions. + if user.is_superuser: + return True + if settings.GIVE_STAFF_LEAD_PERMS and user.is_apply_staff: + return True + if submissions.count() == submissions.filter(lead=user).count(): + return True + return False + def save(self): submissions = self.cleaned_data['submissions'] + external_reviewers = self.cleaned_data['external_reviewers'] assigned_roles = { role: self.cleaned_data[field] for field, role in self.role_fields.items() @@ -356,6 +402,12 @@ class BatchUpdateReviewersForm(forms.Form): if reviewer: AssignedReviewers.objects.update_role(role, reviewer, *submissions) + for submission in submissions: + AssignedReviewers.objects.bulk_create_reviewers( + [reviewer for reviewer in external_reviewers], + submission, + ) + return None diff --git a/hypha/apply/funds/management/commands/export_submissions_csv.py b/hypha/apply/funds/management/commands/export_submissions_csv.py index e3ce85ebac3cc3113179610e4d0e8a476b49b9ff..999f380d391076cb4f745797084d98530ed0c14a 100644 --- a/hypha/apply/funds/management/commands/export_submissions_csv.py +++ b/hypha/apply/funds/management/commands/export_submissions_csv.py @@ -12,7 +12,7 @@ class Command(BaseCommand): with open('export_submissions.csv', 'w', newline='') as csvfile: writer = csv.writer(csvfile, quoting=csv.QUOTE_ALL) writer.writerow(['Submission ID', 'Submission title', 'Submission author', 'Submission e-mail', 'Submission value', 'Submission duration', 'Submission reapplied', 'Submission stage', 'Submission phase', 'Submission screening', 'Submission date', 'Submission region', 'Submission country', 'Submission focus', 'Round/Lab/Fellowship']) - for submission in ApplicationSubmission.objects.all(): + for submission in ApplicationSubmission.objects.exclude_draft(): submission_region = '' submission_country = '' submission_focus = '' diff --git a/hypha/apply/funds/migrations/0095_only_external_review_option.py b/hypha/apply/funds/migrations/0095_only_external_review_option.py new file mode 100644 index 0000000000000000000000000000000000000000..04f995f420912d2ff131766d296db84e5becb276 --- /dev/null +++ b/hypha/apply/funds/migrations/0095_only_external_review_option.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.13 on 2022-04-25 07:58 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('funds', '0094_auto_20220406_0800'), + ] + + operations = [ + migrations.AlterField( + model_name='reviewersettings', + name='state', + field=models.CharField(choices=[('all', 'All States'), ('ext_state_or_higher', 'Only External review and higher'), ('ext_state_only', 'Only External review')], default='all', help_text='Submissions states for which reviewers should have access to', max_length=20), + ), + ] diff --git a/hypha/apply/funds/migrations/0096_only_active_users.py b/hypha/apply/funds/migrations/0096_only_active_users.py new file mode 100644 index 0000000000000000000000000000000000000000..0f0f2267e77bb5e7a7020102385b3253c33abb73 --- /dev/null +++ b/hypha/apply/funds/migrations/0096_only_active_users.py @@ -0,0 +1,57 @@ +# Generated by Django 3.2.13 on 2022-04-13 12:16 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion +import modelcluster.fields + + +class Migration(migrations.Migration): + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('funds', '0095_only_external_review_option'), + ] + + operations = [ + migrations.AlterField( + model_name='applicationbase', + name='reviewers', + field=modelcluster.fields.ParentalManyToManyField(blank=True, limit_choices_to={'groups__name': 'Reviewer', 'is_active': True}, related_name='applicationbase_reviewers', to=settings.AUTH_USER_MODEL), + ), + migrations.AlterField( + model_name='applicationsubmission', + name='lead', + field=models.ForeignKey(limit_choices_to={'groups__name': 'Staff', 'is_active': True}, on_delete=django.db.models.deletion.PROTECT, related_name='submission_lead', to=settings.AUTH_USER_MODEL), + ), + migrations.AlterField( + model_name='applicationsubmission', + name='partners', + field=models.ManyToManyField(blank=True, limit_choices_to={'groups__name': 'Partner', 'is_active': True}, related_name='submissions_partner', to=settings.AUTH_USER_MODEL), + ), + migrations.AlterField( + model_name='assignedreviewers', + name='reviewer', + field=models.ForeignKey(limit_choices_to={'groups__name__in': ['Staff', 'Reviewer', 'Community reviewer'], 'is_active': True}, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL), + ), + migrations.AlterField( + model_name='labbase', + name='lead', + field=models.ForeignKey(limit_choices_to={'groups__name': 'Staff', 'is_active': True}, on_delete=django.db.models.deletion.PROTECT, related_name='lab_lead', to=settings.AUTH_USER_MODEL), + ), + migrations.AlterField( + model_name='labbase', + name='reviewers', + field=modelcluster.fields.ParentalManyToManyField(blank=True, limit_choices_to={'groups__name': 'Reviewer', 'is_active': True}, related_name='labs_reviewer', to=settings.AUTH_USER_MODEL), + ), + migrations.AlterField( + model_name='roundbase', + name='lead', + field=models.ForeignKey(limit_choices_to={'groups__name': 'Staff', 'is_active': True}, on_delete=django.db.models.deletion.PROTECT, related_name='roundbase_lead', to=settings.AUTH_USER_MODEL), + ), + migrations.AlterField( + model_name='roundbase', + name='reviewers', + field=modelcluster.fields.ParentalManyToManyField(blank=True, limit_choices_to={'groups__name': 'Reviewer', 'is_active': True}, related_name='roundbase_reviewer', to=settings.AUTH_USER_MODEL), + ), + ] diff --git a/hypha/apply/funds/migrations/0097_applicationbaseexternalreviewform_labbaseexternalreviewform_roundbaseexternalreviewform.py b/hypha/apply/funds/migrations/0097_applicationbaseexternalreviewform_labbaseexternalreviewform_roundbaseexternalreviewform.py new file mode 100644 index 0000000000000000000000000000000000000000..c6b322bc24f30a12fbd7a2884ef72f042c6856c5 --- /dev/null +++ b/hypha/apply/funds/migrations/0097_applicationbaseexternalreviewform_labbaseexternalreviewform_roundbaseexternalreviewform.py @@ -0,0 +1,55 @@ +# Generated by Django 3.2.13 on 2022-05-18 06:21 + +from django.db import migrations, models +import django.db.models.deletion +import modelcluster.fields + + +class Migration(migrations.Migration): + + dependencies = [ + ('review', '0024_auto_20220111_1314'), + ('funds', '0096_only_active_users'), + ] + + operations = [ + migrations.CreateModel( + name='RoundBaseExternalReviewForm', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('sort_order', models.IntegerField(blank=True, editable=False, null=True)), + ('form', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='review.reviewform')), + ('round', modelcluster.fields.ParentalKey(on_delete=django.db.models.deletion.CASCADE, related_name='external_review_forms', to='funds.roundbase')), + ], + options={ + 'ordering': ['sort_order'], + 'abstract': False, + }, + ), + migrations.CreateModel( + name='LabBaseExternalReviewForm', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('sort_order', models.IntegerField(blank=True, editable=False, null=True)), + ('form', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='review.reviewform')), + ('lab', modelcluster.fields.ParentalKey(on_delete=django.db.models.deletion.CASCADE, related_name='external_review_forms', to='funds.labbase')), + ], + options={ + 'ordering': ['sort_order'], + 'abstract': False, + }, + ), + migrations.CreateModel( + name='ApplicationBaseExternalReviewForm', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('sort_order', models.IntegerField(blank=True, editable=False, null=True)), + ('application', modelcluster.fields.ParentalKey(on_delete=django.db.models.deletion.CASCADE, related_name='external_review_forms', to='funds.applicationbase')), + ('form', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='review.reviewform')), + ], + options={ + 'ordering': ['sort_order'], + 'abstract': False, + }, + ), + ] diff --git a/hypha/apply/funds/migrations/0098_alter_applicationsubmission_submit_time.py b/hypha/apply/funds/migrations/0098_alter_applicationsubmission_submit_time.py new file mode 100644 index 0000000000000000000000000000000000000000..aecb8fc2219df930535307c414d955e36ec9c1dd --- /dev/null +++ b/hypha/apply/funds/migrations/0098_alter_applicationsubmission_submit_time.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.13 on 2022-05-24 13:20 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('funds', '0097_applicationbaseexternalreviewform_labbaseexternalreviewform_roundbaseexternalreviewform'), + ] + + operations = [ + migrations.AlterField( + model_name='applicationsubmission', + name='submit_time', + field=models.DateTimeField(verbose_name='submit time'), + ), + ] diff --git a/hypha/apply/funds/models/applications.py b/hypha/apply/funds/models/applications.py index 41195ab058ff3fdef2f9cc1f3f603ed42b598c6e..ef24ed5599e23b91357338a0fc0f383fd2ee7c9e 100644 --- a/hypha/apply/funds/models/applications.py +++ b/hypha/apply/funds/models/applications.py @@ -179,7 +179,16 @@ class RoundBase(WorkflowStreamForm, SubmittableStreamForm): # type: ignore ReadOnlyPanel('get_workflow_name_display', heading=_('Workflow'), help_text=_('Copied from the fund.')), # Forms comes from parental key in models/forms.py ReadOnlyInlinePanel('forms', help_text=_('Copied from the fund.')), - ReadOnlyInlinePanel('review_forms', help_text=_('Copied from the fund.')), + ReadOnlyInlinePanel( + 'review_forms', + help_text=_('Copied from the fund.'), + heading=_('Internal Review Form') + ), + ReadOnlyInlinePanel( + 'external_review_forms', + help_text=_('Copied from the fund.'), + heading=_('External Review Form') + ), ReadOnlyInlinePanel('determination_forms', help_text=_('Copied from the fund.')), ] @@ -221,6 +230,7 @@ class RoundBase(WorkflowStreamForm, SubmittableStreamForm): # type: ignore # Would be nice to do this using model clusters as part of the __init__ self._copy_forms('forms') self._copy_forms('review_forms') + self._copy_forms('external_review_forms') self._copy_forms('determination_forms') def _copy_forms(self, field): diff --git a/hypha/apply/funds/models/forms.py b/hypha/apply/funds/models/forms.py index 455d6df1bd6b31be3c06e84e6b4b2f65cf389c0a..45cd6566d3507142658709f8840589ec18841b41 100644 --- a/hypha/apply/funds/models/forms.py +++ b/hypha/apply/funds/models/forms.py @@ -150,14 +150,26 @@ class ApplicationBaseReviewForm(AbstractRelatedReviewForm): application = ParentalKey('ApplicationBase', related_name='review_forms') +class ApplicationBaseExternalReviewForm(AbstractRelatedReviewForm): + application = ParentalKey('ApplicationBase', related_name='external_review_forms') + + class RoundBaseReviewForm(AbstractRelatedReviewForm): round = ParentalKey('RoundBase', related_name='review_forms') +class RoundBaseExternalReviewForm(AbstractRelatedReviewForm): + round = ParentalKey('RoundBase', related_name='external_review_forms') + + class LabBaseReviewForm(AbstractRelatedReviewForm): lab = ParentalKey('LabBase', related_name='review_forms') +class LabBaseExternalReviewForm(AbstractRelatedReviewForm): + lab = ParentalKey('LabBase', related_name='external_review_forms') + + class ApplicationBaseDeterminationForm(AbstractRelatedDeterminationForm): application = ParentalKey('ApplicationBase', related_name='determination_forms') diff --git a/hypha/apply/funds/models/reviewer_role.py b/hypha/apply/funds/models/reviewer_role.py index 4226124cfc3e8ad575e0c2d17d2317eef84468f5..a895bd691fd2e42c58e23068c1caf3a6dae41180 100644 --- a/hypha/apply/funds/models/reviewer_role.py +++ b/hypha/apply/funds/models/reviewer_role.py @@ -44,7 +44,8 @@ class ReviewerSettings(BaseSetting): STATES = [ ('all', 'All States'), - ('ext_state_or_higher', 'Only External review and higher') + ('ext_state_or_higher', 'Only External review and higher'), + ('ext_state_only', 'Only External review') ] OUTCOMES = [ diff --git a/hypha/apply/funds/models/submissions.py b/hypha/apply/funds/models/submissions.py index a0299f60efa9b50b7f84585d242eb4d1c9966b53..4a5165099ee624a056bb3e43c6cfebc61734959f 100644 --- a/hypha/apply/funds/models/submissions.py +++ b/hypha/apply/funds/models/submissions.py @@ -27,7 +27,9 @@ from django.db.models.fields.json import KeyTextTransform from django.db.models.functions import Cast, Coalesce from django.dispatch import receiver from django.urls import reverse +from django.utils import timezone from django.utils.text import slugify +from django.utils.translation import gettext_lazy as _ from django_fsm import RETURN_VALUE, FSMField, can_proceed, transition from django_fsm.signals import post_transition from wagtail.contrib.forms.models import AbstractFormSubmission @@ -57,6 +59,7 @@ from ..workflow import ( active_statuses, dismissed_statuses, ext_or_higher_statuses, + ext_review_statuses, get_review_active_statuses, review_statuses, ) @@ -146,6 +149,8 @@ class ApplicationSubmissionQueryset(JSONOrderable): qs = qs.reviewed_by(user) if reviewer_settings.state == 'ext_state_or_higher': qs = qs.filter(status__in=ext_or_higher_statuses) + if reviewer_settings.state == 'ext_state_only': + qs = qs.filter(status__in=ext_review_statuses) if reviewer_settings.outcome == 'accepted': qs = qs.filter(status__in=accepted_statuses) if reviewer_settings.outcome == 'all_except_dismissed': @@ -477,6 +482,8 @@ class ApplicationSubmission( blank=True ) + submit_time = models.DateTimeField(verbose_name=_('submit time'), auto_now_add=False) + is_draft = False live_revision = models.OneToOneField( @@ -664,6 +671,7 @@ class ApplicationSubmission( creating = not self.id if creating: + self.submit_time = timezone.now() # We are creating the object default to first stage self.workflow_name = self.get_from_parent('workflow_name') # Copy extra relevant information to the child diff --git a/hypha/apply/funds/models/utils.py b/hypha/apply/funds/models/utils.py index 920c4f48a7cd10ddcfc49038a162a0f34e77c408..7dc42ef6e805cfa95eb224d0cc77ad02de86b166 100644 --- a/hypha/apply/funds/models/utils.py +++ b/hypha/apply/funds/models/utils.py @@ -26,11 +26,11 @@ REVIEW_GROUPS = [ REVIEWER_GROUP_NAME, COMMUNITY_REVIEWER_GROUP_NAME, ] -LIMIT_TO_STAFF = {'groups__name': STAFF_GROUP_NAME} -LIMIT_TO_REVIEWERS = {'groups__name': REVIEWER_GROUP_NAME} -LIMIT_TO_PARTNERS = {'groups__name': PARTNER_GROUP_NAME} -LIMIT_TO_COMMUNITY_REVIEWERS = {'groups__name': COMMUNITY_REVIEWER_GROUP_NAME} -LIMIT_TO_REVIEWER_GROUPS = {'groups__name__in': REVIEW_GROUPS} +LIMIT_TO_STAFF = {'groups__name': STAFF_GROUP_NAME, 'is_active': True} +LIMIT_TO_REVIEWERS = {'groups__name': REVIEWER_GROUP_NAME, 'is_active': True} +LIMIT_TO_PARTNERS = {'groups__name': PARTNER_GROUP_NAME, 'is_active': True} +LIMIT_TO_COMMUNITY_REVIEWERS = {'groups__name': COMMUNITY_REVIEWER_GROUP_NAME, 'is_active': True} +LIMIT_TO_REVIEWER_GROUPS = {'groups__name__in': REVIEW_GROUPS, 'is_active': True} def admin_url(page): @@ -116,7 +116,12 @@ class WorkflowStreamForm(WorkflowHelpers, AbstractStreamForm): # type: ignore content_panels = AbstractStreamForm.content_panels + [ FieldPanel('workflow_name'), InlinePanel('forms', label=_('Forms')), - InlinePanel('review_forms', label=_('Review Forms')), + InlinePanel('review_forms', label=_('Internal Review Forms')), + InlinePanel( + 'external_review_forms', + label=_('External Review Forms'), max_num=1, + help_text='Add a form to be used by external reviewers.' + ), InlinePanel('determination_forms', label=_('Determination Forms')) ] diff --git a/hypha/apply/funds/templates/funds/email/confirmation.html b/hypha/apply/funds/templates/funds/email/confirmation.html index f93667ffd14116ddd5e36f384ad258b4d2bf48e7..24ab2d9fde1f29b1efc32941aa46cb63fd85c8c8 100644 --- a/hypha/apply/funds/templates/funds/email/confirmation.html +++ b/hypha/apply/funds/templates/funds/email/confirmation.html @@ -1,12 +1,16 @@ {% extends "messages/email/base.html" %} + {% load i18n %} +{% block content %}{% blocktrans with title=source.title %}We appreciate your {{ title }} application submission to the {{ ORG_LONG_NAME }}. We will review and reply to your submission as quickly as possible.{% endblocktrans %} + +{% trans "If you have any questions, please submit them here" %}: {{ request.scheme }}://{{ request.get_host }}{{ source.get_absolute_url }}#communications -{% block content %}{% blocktrans with title=source.page.specific.title %}We appreciate your {{ title }} application submission to the {{ ORG_LONG_NAME }}. We will review and reply to your submission as quickly as possible. +{% blocktrans %}If you have issues accessing the submission system or general inquiries, please email us at {{ ORG_EMAIL }}.{% endblocktrans %} -Our reply will have the next steps for your {{ title }} application. You can find more information about our support options, review process and selection criteria on our website.{% endblocktrans %} +{% blocktrans %}For more information about our support options, review process, and selection criteria, please visit our website at {{ ORG_URL }}.{% endblocktrans %} {% with email_context=source.page.specific %}{{ email_context.confirmation_text_extra }}{% endwith %} -{% trans "Project name" %}: {{ title }} +{% trans "Project name" %}: {{ source.title }} {% trans "Contact name" %}: {{ source.user.get_full_name }} {% trans "Contact email" %}: {{ source.user.email }}{% endblock %} diff --git a/hypha/apply/funds/tests/test_admin_form.py b/hypha/apply/funds/tests/test_admin_form.py index 5d1ec92bcbc05c49fe1a0936f96b9aedfc3792bd..80119563409e97f5ae1f4c905c22da621af7579d 100644 --- a/hypha/apply/funds/tests/test_admin_form.py +++ b/hypha/apply/funds/tests/test_admin_form.py @@ -38,14 +38,16 @@ def formset_base(field, total, delete, factory, same=False, form_stage_info=None return base_data -def form_data(num_appl_forms=0, num_review_forms=0, num_determination_forms=0, delete=0, stages=1, same_forms=False, form_stage_info=[1]): +def form_data(num_appl_forms=0, num_review_forms=0, num_determination_forms=0, num_external_review_forms=0, delete=0, stages=1, same_forms=False, form_stage_info=[1]): form_data = formset_base( 'forms', num_appl_forms, delete, same=same_forms, factory=ApplicationFormFactory, form_stage_info=form_stage_info) review_form_data = formset_base('review_forms', num_review_forms, False, same=same_forms, factory=ReviewFormFactory) + external_review_form_data = formset_base('external_review_forms', num_external_review_forms, True, same=same_forms, factory=ReviewFormFactory) determination_form_data = formset_base('determination_forms', num_determination_forms, False, same=same_forms, factory=DeterminationFormFactory) form_data.update(review_form_data) + form_data.update(external_review_form_data) form_data.update(determination_form_data) fund_data = factory.build(dict, FACTORY_CLASS=FundTypeFactory) @@ -96,3 +98,15 @@ class TestWorkflowFormAdminForm(TestCase): form = self.submit_data(form_data(2, 2, 2, stages=2, form_stage_info=[1, 1])) self.assertFalse(form.is_valid()) self.assertTrue(form.errors['__all__']) + + def test_validate_external_review_form(self): + form = self.submit_data(form_data(1, 1, 1, num_external_review_forms=1, stages=1)) + self.assertTrue(form.is_valid(), form.errors.as_text()) + + def test_validates_without_external_review_form(self): + form = self.submit_data(form_data(1, 1, 1, num_external_review_forms=0, stages=1)) + self.assertTrue(form.is_valid(), form.errors.as_text()) + + def test_doesnt_validates_with_multiple_external_review_form(self): + form = self.submit_data(form_data(1, 1, 1, num_external_review_forms=2, stages=1)) + self.assertFalse(form.is_valid(), form.errors.as_text()) diff --git a/hypha/apply/funds/tests/test_admin_views.py b/hypha/apply/funds/tests/test_admin_views.py index 56d33862bbf7e64d8fb1af32b5bffebb374c082c..7b7dc199fcaa52eaa862dc72d3b7bd76ce002eff 100644 --- a/hypha/apply/funds/tests/test_admin_views.py +++ b/hypha/apply/funds/tests/test_admin_views.py @@ -35,7 +35,7 @@ class TestFundCreationView(TestCase): cls.user = SuperUserFactory() cls.home = ApplyHomePageFactory() - def create_page(self, appl_forms=1, review_forms=1, determination_forms=1, stages=1, same_forms=False, form_stage_info=[1]): + def create_page(self, appl_forms=1, review_forms=1, determination_forms=1, external_review_form=0, stages=1, same_forms=False, form_stage_info=[1]): self.client.force_login(self.user) url = reverse('wagtailadmin_pages:add', args=('funds', 'fundtype', self.home.id)) @@ -43,6 +43,7 @@ class TestFundCreationView(TestCase): appl_forms, review_forms, determination_forms, + external_review_form, same_forms=same_forms, stages=stages, form_stage_info=form_stage_info, @@ -68,6 +69,13 @@ class TestFundCreationView(TestCase): self.assertEqual(fund.review_forms.count(), 1) self.assertEqual(fund.determination_forms.count(), 1) + def test_can_create_fund_with_external_review_form(self): + fund = self.create_page(1, 1, 1, external_review_form=1, stages=1) + self.assertEqual(fund.forms.count(), 1) + self.assertEqual(fund.review_forms.count(), 1) + self.assertEqual(fund.determination_forms.count(), 1) + self.assertEqual(fund.external_review_forms.count(), 1) + def test_can_create_multi_phase_fund(self): fund = self.create_page(2, 2, 2, stages=2, form_stage_info=[1, 2]) self.assertEqual(fund.forms.count(), 2) diff --git a/hypha/apply/funds/views.py b/hypha/apply/funds/views.py index 84f033ac163bb86cb5fea158b8c235907f860b07..336de5ab0679f33fdcc3d222144d99e1dbc9aa79 100644 --- a/hypha/apply/funds/views.py +++ b/hypha/apply/funds/views.py @@ -115,7 +115,7 @@ User = get_user_model() class SubmissionStatsMixin: def get_context_data(self, **kwargs): - submissions = ApplicationSubmission.objects.all() + submissions = ApplicationSubmission.objects.exclude_draft() submission_undetermined_count = submissions.undetermined().count() review_my_count = submissions.reviewed_by(self.request.user).count() @@ -128,7 +128,7 @@ class SubmissionStatsMixin: submission_accepted_sum = intcomma(submission_accepted_value.get('value__sum')) submission_accepted_count = submission_accepted.count() - reviews = Review.objects.all() + reviews = Review.objects.submitted() review_count = reviews.count() review_my_score = reviews.by_user(self.request.user).score() @@ -1030,6 +1030,11 @@ class ApplicantSubmissionEditView(BaseSubmissionEditView): def form_valid(self, form): self.object.new_data(form.cleaned_data) + # Update submit_time only when application is getting submitted from the Draft State for the first time. + if self.object.status == DRAFT_STATE and 'submit' in self.request.POST: + self.object.submit_time = timezone.now() + self.object.save(update_fields=['submit_time']) + if 'save' in self.request.POST: self.object.create_revision(draft=True, by=self.request.user) messages.success(self.request, _('Submission saved successfully')) @@ -1282,7 +1287,7 @@ class SubmissionResultView(SubmissionStatsMixin, FilterView): return new_kwargs def get_queryset(self): - return self.filterset_class._meta.model.objects.current() + return self.filterset_class._meta.model.objects.current().exclude_draft() def get_context_data(self, **kwargs): search_term = self.request.GET.get('query') diff --git a/hypha/apply/funds/workflow.py b/hypha/apply/funds/workflow.py index c79c373a752e35101b673000b0633da6e06ff0df..c5f7a387d232a34285ba5efcd61a12a6b72ad5cd 100644 --- a/hypha/apply/funds/workflow.py +++ b/hypha/apply/funds/workflow.py @@ -1013,25 +1013,34 @@ def get_review_statuses(user=None): return reviews +def get_ext_review_statuses(): + reviews = set() + + for phase_name, phase in PHASES: + if phase_name.endswith('external_review'): + reviews.add(phase_name) + return reviews + + def get_ext_or_higher_statuses(): """ Returns a set of all the statuses for all workflow which are External Review or higher than that. """ - ext_review_or_higher_statuses = set() + reviews = set() for workflow in WORKFLOWS.values(): step = None for phase in workflow.values(): - if phase.display_name == 'External Review': + if phase.name.endswith('external_review'): # Update the step for this workflow as External review state step = phase.step # Phase should have step higher or equal than External # review state for this workflow if step and phase.step >= step: - ext_review_or_higher_statuses.add(phase.name) - return ext_review_or_higher_statuses + reviews.add(phase.name) + return reviews def get_accepted_statuses(): @@ -1050,8 +1059,9 @@ def get_dismissed_statuses(): return dismissed_statuses -ext_or_higher_statuses = get_ext_or_higher_statuses() review_statuses = get_review_statuses() +ext_review_statuses = get_ext_review_statuses() +ext_or_higher_statuses = get_ext_or_higher_statuses() accepted_statuses = get_accepted_statuses() dismissed_statuses = get_dismissed_statuses() diff --git a/hypha/apply/projects/forms/payment.py b/hypha/apply/projects/forms/payment.py index 3f4a46826cb8589919b3c3aca252a7a0d09b0801..0d16ff7c40a25539caebd85c74dd60b5348009e8 100644 --- a/hypha/apply/projects/forms/payment.py +++ b/hypha/apply/projects/forms/payment.py @@ -16,8 +16,10 @@ from ..models.payment import ( CHANGES_REQUESTED_BY_FINANCE_1, CHANGES_REQUESTED_BY_FINANCE_2, CHANGES_REQUESTED_BY_STAFF, + CONVERTED, DECLINED, INVOICE_STATUS_CHOICES, + PAID, RESUBMITTED, SUBMITTED, Invoice, @@ -61,6 +63,8 @@ class ChangeInvoiceStatusForm(forms.ModelForm): user_choices ), APPROVED_BY_FINANCE_1: filter_request_choices([CHANGES_REQUESTED_BY_FINANCE_2, APPROVED_BY_FINANCE_2], user_choices), + APPROVED_BY_FINANCE_2: filter_request_choices([CONVERTED, PAID], user_choices), + CONVERTED: filter_request_choices([PAID], user_choices), } status_field.choices = possible_status_transitions_lut.get(instance.status, []) @@ -74,37 +78,25 @@ class ChangeInvoiceStatusForm(forms.ModelForm): class InvoiceBaseForm(forms.ModelForm): class Meta: - fields = ['date_from', 'date_to', 'amount', 'document', 'message_for_pm'] + fields = ['document', 'message_for_pm'] model = Invoice - widgets = { - 'date_from': forms.DateInput, - 'date_to': forms.DateInput, - } def __init__(self, user=None, *args, **kwargs): super().__init__(*args, **kwargs) - self.fields['amount'].widget.attrs['min'] = 0 self.initial['message_for_pm'] = '' - def clean(self): - cleaned_data = super().clean() - date_from = cleaned_data['date_from'] - date_to = cleaned_data['date_to'] - - if date_from > date_to: - self.add_error('date_from', _('Date From must be before Date To')) - - return cleaned_data - class CreateInvoiceForm(FileFormMixin, InvoiceBaseForm): - document = SingleFileField(label='Invoice File', required=True) + document = SingleFileField( + label='Invoice File', required=True, + help_text=_('The invoice must be a PDF.') + ) supporting_documents = MultiFileField( required=False, help_text=_('Files that are related to the invoice. They could be xls, microsoft office documents, open office documents, pdfs, txt files.') ) - field_order = ['date_from', 'date_to', 'amount', 'document', 'supporting_documents', 'message_for_pm'] + field_order = ['document', 'supporting_documents', 'message_for_pm'] def save(self, commit=True): invoice = super().save(commit=commit) @@ -123,7 +115,7 @@ class EditInvoiceForm(FileFormMixin, InvoiceBaseForm): document = SingleFileField(label=_('Invoice File'), required=True) supporting_documents = MultiFileField(required=False) - field_order = ['date_from', 'date_to', 'amount', 'document', 'supporting_documents', 'message_for_pm'] + field_order = ['document', 'supporting_documents', 'message_for_pm'] @transaction.atomic def save(self, commit=True): diff --git a/hypha/apply/projects/migrations/0050_add_new_invoice_status.py b/hypha/apply/projects/migrations/0050_add_new_invoice_status.py new file mode 100644 index 0000000000000000000000000000000000000000..ebb9bfbf690b91a2ced19ddc019d2ec513268b73 --- /dev/null +++ b/hypha/apply/projects/migrations/0050_add_new_invoice_status.py @@ -0,0 +1,19 @@ +# Generated by Django 3.2.12 on 2022-04-06 07:12 + +from django.db import migrations +import django_fsm + + +class Migration(migrations.Migration): + + dependencies = [ + ('application_projects', '0049_add_fields_for_finance_integrations'), + ] + + operations = [ + migrations.AlterField( + model_name='invoice', + name='status', + field=django_fsm.FSMField(choices=[('submitted', 'Submitted'), ('resubmitted', 'Resubmitted'), ('changes_requested_staff', 'Changes Requested by Staff'), ('changes_requested_finance_1', 'Changes Requested by Finance 1'), ('changes_requested_finance_2', 'Changes Requested by Finance 2'), ('approved_by_staff', 'Approved by Staff'), ('approved_by_finance_1', 'Approved by Finance 1'), ('approved_by_finance_2', 'Approved by Finance 2'), ('paid', 'Paid'), ('converted', 'Converted'), ('declined', 'Declined')], default='submitted', max_length=50), + ), + ] diff --git a/hypha/apply/projects/migrations/0051_remove_unnecessary_fields_from_invoice.py b/hypha/apply/projects/migrations/0051_remove_unnecessary_fields_from_invoice.py new file mode 100644 index 0000000000000000000000000000000000000000..11ad637d548ba6d70e8286efcb3f98d24703c04d --- /dev/null +++ b/hypha/apply/projects/migrations/0051_remove_unnecessary_fields_from_invoice.py @@ -0,0 +1,25 @@ +# Generated by Django 3.2.12 on 2022-04-12 05:32 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('application_projects', '0050_add_new_invoice_status'), + ] + + operations = [ + migrations.RemoveField( + model_name='invoice', + name='amount', + ), + migrations.RemoveField( + model_name='invoice', + name='date_from', + ), + migrations.RemoveField( + model_name='invoice', + name='date_to', + ), + ] diff --git a/hypha/apply/projects/models/payment.py b/hypha/apply/projects/models/payment.py index 32338b78564525c48000f4ef1beaeed642183d65..ffbf79f448dfa0b8bfba2a9bcc9b9ae1a6954f2a 100644 --- a/hypha/apply/projects/models/payment.py +++ b/hypha/apply/projects/models/payment.py @@ -1,5 +1,6 @@ import decimal import os +from textwrap import wrap from django.conf import settings from django.core.validators import MinValueValidator @@ -22,6 +23,7 @@ CHANGES_REQUESTED_BY_FINANCE_2 = 'changes_requested_finance_2' APPROVED_BY_STAFF = 'approved_by_staff' APPROVED_BY_FINANCE_1 = 'approved_by_finance_1' APPROVED_BY_FINANCE_2 = 'approved_by_finance_2' +CONVERTED = 'converted' PAID = 'paid' DECLINED = 'declined' @@ -35,6 +37,7 @@ INVOICE_STATUS_CHOICES = [ (APPROVED_BY_FINANCE_1, _('Approved by Finance 1')), (APPROVED_BY_FINANCE_2, _('Approved by Finance 2')), (PAID, _('Paid')), + (CONVERTED, _('Converted')), (DECLINED, _('Declined')), ] @@ -46,7 +49,7 @@ INVOICE_TRANISTION_TO_RESUBMITTED = [ INVOICE_STATUS_PM_CHOICES = [CHANGES_REQUESTED_BY_STAFF, APPROVED_BY_STAFF, DECLINED] INVOICE_STATUS_FINANCE_1_CHOICES = [CHANGES_REQUESTED_BY_FINANCE_1, APPROVED_BY_FINANCE_1] -INVOICE_STATUS_FINANCE_2_CHOICES = [CHANGES_REQUESTED_BY_FINANCE_2, APPROVED_BY_FINANCE_2, PAID] +INVOICE_STATUS_FINANCE_2_CHOICES = [CHANGES_REQUESTED_BY_FINANCE_2, APPROVED_BY_FINANCE_2, CONVERTED, PAID] def invoice_status_user_choices(user): @@ -76,6 +79,9 @@ class InvoiceQueryset(models.QuerySet): def for_finance_1(self): return self.filter(status__in=[APPROVED_BY_STAFF, CHANGES_REQUESTED_BY_FINANCE_2]) + def for_finance_2(self): + return self.filter(status__in=[APPROVED_BY_FINANCE_1, APPROVED_BY_FINANCE_2, CONVERTED]) + def rejected(self): return self.filter(status=DECLINED) @@ -116,14 +122,6 @@ class InvoiceDeliverable(models.Model): class Invoice(models.Model): project = models.ForeignKey("Project", on_delete=models.CASCADE, related_name="invoices") by = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name="invoices") - date_from = models.DateTimeField() - date_to = models.DateTimeField() - amount = models.DecimalField( - default=0, - max_digits=10, - decimal_places=2, - validators=[MinValueValidator(decimal.Decimal('0.01'))], - ) paid_value = models.DecimalField( max_digits=10, decimal_places=2, @@ -176,8 +174,8 @@ class Invoice(models.Model): Formatting should be HP###### i.e. HP000001 and so on. ''' - prefix = 'HP' - return prefix + f"{self.id:06}" + prefix = 'HP-' + return prefix + '-'.join(wrap(f"{self.id:06}", 3)) def can_user_delete(self, user): if user.is_applicant or user.is_apply_staff or user.is_finance_level_1 or user.is_finance_level_2 or user.is_contracting: @@ -224,7 +222,7 @@ class Invoice(models.Model): return True if user.is_finance_level_2: - if self.status in {APPROVED_BY_FINANCE_1}: + if self.status in {APPROVED_BY_FINANCE_1, APPROVED_BY_FINANCE_2, CONVERTED}: return True return False @@ -256,7 +254,7 @@ class Invoice(models.Model): @property def value(self): - return self.paid_value or self.amount + return self.paid_value def get_absolute_url(self): return reverse( diff --git a/hypha/apply/projects/tables.py b/hypha/apply/projects/tables.py index c1cbfcc58314886f2892cfa39e7aa15149603ec7..2060685c90be84cb57ca169be4bce31341441da8 100644 --- a/hypha/apply/projects/tables.py +++ b/hypha/apply/projects/tables.py @@ -11,31 +11,29 @@ from .models import Invoice, Project, Report class BaseInvoiceTable(tables.Table): - project = tables.LinkColumn( + vendor_document_number = tables.LinkColumn( 'funds:projects:invoice-detail', - verbose_name=_('Invoice reference'), - text=lambda r: textwrap.shorten(r.project.title, width=30, placeholder="..."), + verbose_name=_('Invoice Number'), args=[tables.utils.A('project.pk'), tables.utils.A('pk')], ) + project = tables.Column( + verbose_name=_('Project Name') + ) status = tables.Column() requested_at = tables.DateColumn(verbose_name=_('Submitted')) - amount = tables.Column(verbose_name=_('Value ({currency})').format(currency=settings.CURRENCY_SYMBOL)) - def render_amount(self, value): - return intcomma(value) + def render_project(self, value): + text = textwrap.shorten(value.title, width=30, placeholder="..."), + return text[0] class InvoiceDashboardTable(BaseInvoiceTable): - date_from = tables.DateColumn(verbose_name=_('Period Start')) - date_to = tables.DateColumn(verbose_name=_('Period End')) - class Meta: fields = [ 'requested_at', - 'project', + 'vendor_document_number', 'status', - 'date_from', - 'date_to', + 'project', ] model = Invoice order_by = ['-requested_at'] @@ -49,9 +47,9 @@ class InvoiceListTable(BaseInvoiceTable): class Meta: fields = [ 'requested_at', - 'project', - 'amount', + 'vendor_document_number', 'status', + 'project', 'lead', 'fund', ] @@ -60,13 +58,6 @@ class InvoiceListTable(BaseInvoiceTable): order_by = ['-requested_at'] attrs = {'class': 'invoices-table'} - def order_value(self, qs, is_descending): - direction = '-' if is_descending else '' - - qs = qs.order_by(f'{direction}paid_value', f'{direction}amount') - - return qs, True - class BaseProjectsTable(tables.Table): title = tables.LinkColumn( diff --git a/hypha/apply/projects/templates/application_projects/includes/invoices.html b/hypha/apply/projects/templates/application_projects/includes/invoices.html index d8834fc3295d8c7a44cdd28e3bec65ad57516e25..53f958d05c18ed338bacf19e014bdfceab948769 100644 --- a/hypha/apply/projects/templates/application_projects/includes/invoices.html +++ b/hypha/apply/projects/templates/application_projects/includes/invoices.html @@ -12,20 +12,18 @@ <table class="data-block__table"> <thead> <tr> - <th class="data-block__table-amount">{% trans "Amount" %} ({{ CURRENCY_SYMBOL }})</th> - <th class="data-block__table-status">{% trans "Status" %}</th> - <th class="data-block__table-date">{% trans "From" %}</th> - <th class="data-block__table-date">{% trans "To" %}</th> + <th class="data-block__table-amount">{% trans "Submitted" %}</th> + <th class="data-block__table-status">{% trans "Invoice Number" %}</th> + <th class="data-block__table-date">{% trans "Status" %}</th> <th class="data-block__table-update"></th> </tr> </thead> <tbody> {% for invoice in object.invoices.not_rejected %} <tr> - <td><span class="data-block__mobile-label">{% trans "Amount" %}: </span>{{ invoice.amount|intcomma }}</td> + <td><span class="data-block__mobile-label">{% trans "Submitted" %}: </span>{{ invoice.requested_at.date }}</td> + <td><span class="data-block__mobile-label">{% trans "Invoice Number" %}: </span>{{ invoice.vendor_document_number }}</td> <td><span class="data-block__mobile-label">{% trans "Status" %}: </span>{{ invoice.get_status_display }}</td> - <td><span class="data-block__mobile-label">{% trans "From" %}: </span>{{ invoice.date_from.date }}</td> - <td><span class="data-block__mobile-label">{% trans "To" %}: </span>{{ invoice.date_to.date }}</td> <td> <a class="data-block__action-link" href="{{ invoice.get_absolute_url }}">View</a> {% can_edit invoice user as user_can_edit_request %} @@ -59,7 +57,8 @@ <table class="data-block__table is-hidden js-payment-block-rejected-table"> <thead> <tr> - <th class="data-block__table-amount">{% trans "Amount" %}</th> + <th class="data-block__table-amount">{% trans "Submitted" %}</th> + <th class="data-block__table-amount">{% trans "Invoice Number" %}</th> <th class="data-block__table-status">{% trans "Status" %}</th> <th class="data-block__table-view"></th> </tr> @@ -67,7 +66,8 @@ <tbody> {% for invoice in object.invoices.rejected %} <tr> - <td><span class="data-block__mobile-label">{% trans "Amount" %}: </span>{{ CURRENCY_SYMBOL }}{{ invoice.value }}</td> + <td><span class="data-block__mobile-label">{% trans "Submitted" %}: </span>{{ invoice.requested_at.date }}</td> + <td><span class="data-block__mobile-label">{% trans "Invoice Number" %}: </span>{{ invoice.vendor_document_number }}</td> <td><span class="data-block__mobile-label">{% trans "Status" %}: </span>{{ invoice.get_status_display }}</td> <td><a href="{{ invoice.get_absolute_url }}">{% trans "View" %}</a></td> </tr> diff --git a/hypha/apply/projects/templates/application_projects/invoice_confirm_delete.html b/hypha/apply/projects/templates/application_projects/invoice_confirm_delete.html index 6d056588b2147a88d5a65ddb3a73c43e5fc72b60..2ad489d5eef377017ddbc0280f85a65fbd54c77e 100644 --- a/hypha/apply/projects/templates/application_projects/invoice_confirm_delete.html +++ b/hypha/apply/projects/templates/application_projects/invoice_confirm_delete.html @@ -20,8 +20,6 @@ <p class="card__text"><b>{% trans "Status" %}:</b> {{ object.get_status_display }}</p> <p class="card__text"><b>{% trans "Vendor" %}:</b> {{ object.project.vendor.name }}</p> <p class="card__text"><b>{% trans "Invoice Number" %}:</b> {{ object.pk }}</p> - <p class="card__text"><b>{% trans "Period of Performance" %}:</b> {{ object.date_from.date }} | {{ object.date_to.date }}</p> - <p class="card__text"><b>{% trans "Total" %}:</b> {{ CURRENCY_SYMBOL }}{{ object.amount|intcomma }}</p> </div> <div class="card card--solid"> diff --git a/hypha/apply/projects/templates/application_projects/invoice_detail.html b/hypha/apply/projects/templates/application_projects/invoice_detail.html index 7ea20670fdb92cf4ee7cde1cbffcc8b83bca8919..bef8d68bfbf2d256eb57ea83028e15928cf491d4 100644 --- a/hypha/apply/projects/templates/application_projects/invoice_detail.html +++ b/hypha/apply/projects/templates/application_projects/invoice_detail.html @@ -18,9 +18,7 @@ <div class="card card--solid"> <p class="card__text"><b>{% trans "Status" %}:</b> {{ object.get_status_display }}</p> <p class="card__text"><b>{% trans "Vendor" %}:</b> {{ object.project.vendor.name }}</p> - <p class="card__text"><b>{% trans "Invoice Number" %}:</b> {{ object.pk }}</p> - <p class="card__text"><b>{% trans "Period of Performance" %}:</b> {{ object.date_from.date }} | {{ object.date_to.date }}</p> - <p class="card__text"><b>{% trans "Total" %}:</b> {{ CURRENCY_SYMBOL }}{{ object.amount|intcomma }}</p> + <p class="card__text"><b>{% trans "Invoice Number" %}:</b> {{ object.vendor_document_number }}</p> </div> <div class="card card--solid"> diff --git a/hypha/apply/projects/tests/factories.py b/hypha/apply/projects/tests/factories.py index a5e386f967a213a7e6c217ee4ec9ac4635f57aa4..a1e710afb1f5836c98606f814241e4dafc1d40db 100644 --- a/hypha/apply/projects/tests/factories.py +++ b/hypha/apply/projects/tests/factories.py @@ -1,7 +1,6 @@ import decimal import factory -import pytz from dateutil.relativedelta import relativedelta from django.utils import timezone @@ -107,11 +106,6 @@ class PacketFileFactory(factory.django.DjangoModelFactory): class InvoiceFactory(factory.django.DjangoModelFactory): project = factory.SubFactory(ProjectFactory) by = factory.SubFactory(UserFactory) - amount = factory.Faker('pydecimal', min_value=1, max_value=10000000, right_digits=2) - - date_from = factory.Faker('date_time').evaluate(None, None, {'tzinfo': pytz.utc, 'locale': None}) - date_to = factory.Faker('date_time').evaluate(None, None, {'tzinfo': pytz.utc, 'locale': None}) - document = factory.django.FileField() class Meta: diff --git a/hypha/apply/projects/tests/test_forms.py b/hypha/apply/projects/tests/test_forms.py index d4d5bb883afd7ecf0d4bcf15ec14bfcb08b0a386..769a3d6619da6349ee70d3531e1fe057f9f6c151 100644 --- a/hypha/apply/projects/tests/test_forms.py +++ b/hypha/apply/projects/tests/test_forms.py @@ -287,10 +287,7 @@ class TestCreateInvoiceForm(TestCase): def test_adding_invoice(self): data = { 'paid_value': '10', - 'date_from': '2018-08-15', - 'date_to': '2019-08-15', 'comment': 'test comment', - 'amount': 100.0 } document = SimpleUploadedFile('invoice.pdf', BytesIO(b'somebinarydata').read()) @@ -314,10 +311,7 @@ class TestCreateInvoiceForm(TestCase): def test_supporting_documents_not_required(self): data = { 'paid_value': '10', - 'date_from': '2018-08-15', - 'date_to': '2019-08-15', 'comment': 'test comment', - 'amount': 100 } @@ -335,38 +329,6 @@ class TestCreateInvoiceForm(TestCase): self.assertEqual(invoice.supporting_documents.count(), 0) - def test_invoice_dates_are_correct(self): - invoice = SimpleUploadedFile('invoice.pdf', BytesIO(b'somebinarydata').read()) - files = { - 'document': invoice, - } - - form = CreateInvoiceForm( - files=files, - data={ - 'paid_value': '10', - 'date_from': '2018-08-15', - 'date_to': '2019-08-15', - 'comment': 'test comment', - 'amount': 100 - - } - ) - self.assertTrue(form.is_valid(), msg=form.errors) - - form = CreateInvoiceForm( - files=files, - data={ - 'paid_value': '10', - 'date_from': '2019-08-15', - 'date_to': '2018-08-15', - 'comment': 'test comment', - 'amount': 100 - - } - ) - self.assertFalse(form.is_valid()) - class TestEditInvoiceForm(TestCase): @@ -379,9 +341,6 @@ class TestEditInvoiceForm(TestCase): data={ 'document': invoice.document, 'supporting_documents-uploads': '[]', - 'date_from': '2018-08-15', - 'date_to': '2019-08-15', - 'amount': invoice.amount, }, files={ 'supporting_documents': [], @@ -405,9 +364,6 @@ class TestEditInvoiceForm(TestCase): "size": supporting_document.document.size, "type": "existing"}] ), - 'date_from': '2018-08-15', - 'date_to': '2019-08-15', - 'amount': invoice.amount, }, instance=invoice) self.assertTrue(form.is_valid()) @@ -424,9 +380,6 @@ class TestEditInvoiceForm(TestCase): data={ 'document': invoice.document, 'supporting_documents-uploads': '[]', - 'date_from': '2018-08-15', - 'date_to': '2019-08-15', - 'amount': invoice.amount, }, files={ 'supporting_documents': supporting_document, diff --git a/hypha/apply/projects/tests/test_models.py b/hypha/apply/projects/tests/test_models.py index 4ee923a46858a851ad445591e24d494a107e88a0..92c442a376833643d27142f0fa71c6da12c18ccb 100644 --- a/hypha/apply/projects/tests/test_models.py +++ b/hypha/apply/projects/tests/test_models.py @@ -19,6 +19,7 @@ from ..models.payment import ( CHANGES_REQUESTED_BY_FINANCE_1, CHANGES_REQUESTED_BY_FINANCE_2, CHANGES_REQUESTED_BY_STAFF, + CONVERTED, DECLINED, INVOICE_STATUS_FINANCE_1_CHOICES, INVOICE_STATUS_FINANCE_2_CHOICES, @@ -236,7 +237,7 @@ class TestInvoiceModel(TestCase): self.assertFalse(invoice.can_user_change_status(user)) def test_finance2_can_change_status(self): - statuses = [APPROVED_BY_FINANCE_1] + statuses = [APPROVED_BY_FINANCE_1, APPROVED_BY_FINANCE_2, CONVERTED] user = Finance2Factory() for status in statuses: invoice = InvoiceFactory(status=status) @@ -244,7 +245,7 @@ class TestInvoiceModel(TestCase): def test_finance2_cant_change_status(self): statuses = [ - APPROVED_BY_STAFF, APPROVED_BY_FINANCE_2, CHANGES_REQUESTED_BY_FINANCE_1, CHANGES_REQUESTED_BY_FINANCE_2, + APPROVED_BY_STAFF, CHANGES_REQUESTED_BY_FINANCE_1, CHANGES_REQUESTED_BY_FINANCE_2, CHANGES_REQUESTED_BY_STAFF, DECLINED, PAID, RESUBMITTED, SUBMITTED ] user = Finance2Factory() diff --git a/hypha/apply/projects/tests/test_views.py b/hypha/apply/projects/tests/test_views.py index 0575d7d673db6d5328fb9ee08445b9e67dbad2fe..d8c1c6e1d934b9b134b4fd693b9b3b1fed9ca9e5 100644 --- a/hypha/apply/projects/tests/test_views.py +++ b/hypha/apply/projects/tests/test_views.py @@ -1,5 +1,4 @@ import json -from decimal import Decimal from io import BytesIO from dateutil.relativedelta import relativedelta @@ -814,9 +813,6 @@ class TestApplicantEditInvoiceView(BaseViewTestCase): self.assertTrue(invoice.supporting_documents.exists()) response = self.post_page(invoice, { - 'amount': invoice.amount, - 'date_from': '2018-08-15', - 'date_to': '2019-08-15', 'comment': 'test comment', 'invoice': '', 'supporting_documents-uploads': '[]', @@ -830,12 +826,7 @@ class TestApplicantEditInvoiceView(BaseViewTestCase): invoice = InvoiceFactory(project=project) supporting_document = SupportingDocumentFactory(invoice=invoice) - amount = invoice.amount - response = self.post_page(invoice, { - 'amount': amount + 1, - 'date_from': '2018-08-15', - 'date_to': '2019-08-15', 'comment': 'test comment', 'invoice': '', 'supporting_documents-uploads': json.dumps([{"name": supporting_document.document.name, "size": supporting_document.document.size, "type": "existing"}]), @@ -847,8 +838,6 @@ class TestApplicantEditInvoiceView(BaseViewTestCase): invoice.refresh_from_db() self.assertEqual(project.invoices.first().pk, invoice.pk) - - self.assertEqual(amount + Decimal("1"), invoice.amount) self.assertEqual(invoice.supporting_documents.first().document, supporting_document.document) @@ -868,9 +857,6 @@ class TestStaffEditInvoiceView(BaseViewTestCase): SupportingDocumentFactory(invoice=invoice) response = self.post_page(invoice, { - 'amount': invoice.amount, - 'date_from': '2018-08-15', - 'date_to': '2019-08-15', 'comment': 'test comment', 'invoice': '', 'supporting_documents-uploads': '[]', @@ -885,15 +871,10 @@ class TestStaffEditInvoiceView(BaseViewTestCase): invoice = InvoiceFactory(project=project) supporting_document = SupportingDocumentFactory(invoice=invoice) - amount = invoice.amount - document = BytesIO(b'somebinarydata') document.name = 'invoice.pdf' response = self.post_page(invoice, { - 'amount': amount + 1, - 'date_from': '2018-08-15', - 'date_to': '2019-08-15', 'comment': 'test comment', 'document': document, 'supporting_documents-uploads': json.dumps([{"name": supporting_document.document.name, "size": supporting_document.document.size, "type": "existing"}]), @@ -906,7 +887,6 @@ class TestStaffEditInvoiceView(BaseViewTestCase): self.assertEqual(project.invoices.first().pk, invoice.pk) - self.assertEqual(amount + Decimal("1"), invoice.amount) self.assertEqual(invoice.supporting_documents.first().document, supporting_document.document) diff --git a/hypha/apply/projects/views/payment.py b/hypha/apply/projects/views/payment.py index 74c464d5b6fd91ef94a404c68d014471984dce5f..c7f20fd13a9d706281d62cfe5640ba2164e316c5 100644 --- a/hypha/apply/projects/views/payment.py +++ b/hypha/apply/projects/views/payment.py @@ -273,6 +273,3 @@ class InvoiceListView(SingleTableMixin, FilterView): model = Invoice table_class = InvoiceListTable template_name = 'application_projects/invoice_list.html' - - def get_queryset(self): - return Invoice.objects.order_by('date_to') diff --git a/hypha/apply/projects/views/project.py b/hypha/apply/projects/views/project.py index 0bc20a25b5412743d83651d0da37320183d4bf33..66f2b283f5a1065fae3e26fcbf7b8858f73f1335 100644 --- a/hypha/apply/projects/views/project.py +++ b/hypha/apply/projects/views/project.py @@ -642,7 +642,7 @@ class ProjectOverviewView(TemplateView): } def get_invoices(self, request): - invoices = Invoice.objects.order_by('date_to')[:10] + invoices = Invoice.objects.order_by('-requested_at')[:10] return { 'filterset': InvoiceListFilter(request.GET or None, request=request, queryset=invoices), diff --git a/hypha/apply/review/views.py b/hypha/apply/review/views.py index 46190b8bfad8fa4a6b9c4581c788d81f168ca472..1e1ab63cf40ae1606c36159ae8f6f20b7d781945 100644 --- a/hypha/apply/review/views.py +++ b/hypha/apply/review/views.py @@ -51,8 +51,16 @@ class ReviewContextMixin: ) -def get_fields_for_stage(submission): +def get_fields_for_stage(submission, user=None): forms = submission.get_from_parent('review_forms').all() + external_review_forms = submission.get_from_parent('external_review_forms').all() + + # Use ExternalReviewForm if submission's stage has external review and external review form is attached to fund. + # ExternalReviewForm is only for non-staff reviewers(external reviewers) + if submission.stage.has_external_review and external_review_forms: + if user and not user.is_apply_staff: + forms = external_review_forms + index = submission.workflow.stages.index(submission.stage) try: return forms[index].form.form_fields @@ -81,7 +89,7 @@ class ReviewEditView(UserPassesTestMixin, BaseStreamForm, UpdateView): def get_defined_fields(self): review = self.get_object() - return get_fields_for_stage(review.submission) + return get_fields_for_stage(review.submission, user=self.request.user) def get_form_kwargs(self): review = self.get_object() @@ -145,7 +153,7 @@ class ReviewCreateOrUpdateView(BaseStreamForm, CreateOrUpdateView): ) def get_defined_fields(self): - return get_fields_for_stage(self.submission) + return get_fields_for_stage(self.submission, user=self.request.user) def get_form_kwargs(self): kwargs = super().get_form_kwargs() diff --git a/hypha/apply/stream_forms/blocks.py b/hypha/apply/stream_forms/blocks.py index caf09cfb3707cc8338e6e9c684508795467e4e14..93b95abcfb067874541e399a0a45b368d478be51 100644 --- a/hypha/apply/stream_forms/blocks.py +++ b/hypha/apply/stream_forms/blocks.py @@ -429,6 +429,7 @@ class MultiFileFieldBlock(UploadableMediaBlock): field_class = MultiFileField class Meta: + icon = 'download' label = _('Multiple File field') template = 'stream_forms/render_multi_file_field.html' diff --git a/hypha/apply/templates/forms/includes/field.html b/hypha/apply/templates/forms/includes/field.html index 629a6e248b2c7066368bd79a38bed5166262ff3f..b0dbf0c81795f1e8a525e28d795684257afdf6bb 100644 --- a/hypha/apply/templates/forms/includes/field.html +++ b/hypha/apply/templates/forms/includes/field.html @@ -1,4 +1,4 @@ -{% load util_tags %} +{% load i18n util_tags %} {% with widget_type=field|widget_type field_type=field|field_type %} <div class="form__group {{ field.id_for_label }} {% if widget_type == 'checkbox_input' %} form__group--checkbox{% endif %}{% if widget_type == 'clearable_file_input' or widget_type == 'multi_file_input' or widget_type == 'single_file_field_widget' or widget_type == 'multi_file_field_widget' %} form__group--file{% endif %}{% if field.help_text %} form__group--wrap{% endif %}{% if field.errors %} form__error{% endif %}{% if is_application and field.field.group_number > 1 %} field-group field-group-{{ field.field.group_number }}{% endif %}{% if is_application and field.field.grouper_for %} form-fields-grouper{% endif %}"{% if is_application and field.field.grouper_for %}data-grouper-for="{{ field.field.grouper_for }}" data-toggle-on="{{ field.field.choices.0.0 }}" data-toggle-off="{{ field.field.choices.1.0 }}"{% endif %}{% if is_application and field.field.group_number > 1 %} data-hidden="{% if not show_all_group_fields and not field.field.visible %}true{% else %}false{% endif %}" data-required="{{ field.field.required_when_visible }}"{% endif %}{% if field.field.word_limit %} data-word-limit="{{ field.field.word_limit }}"{% endif %}> @@ -24,7 +24,7 @@ {% endif %} {% if field.field.help_link %} - <p class="form__help-link"><a href="{{ field.field.help_link }}" target="_blank" rel="noopener noreferrer">See help guide for more information.<svg class="form__open-icon"><use xlink:href="#open-in-new-tab"></use></svg></a></p> + <p class="form__help-link"><a href="{{ field.field.help_link }}" target="_blank" rel="noopener noreferrer">{% trans "See help guide for more information." %}<svg class="form__open-icon"><use xlink:href="#open-in-new-tab"></use></svg></a></p> {% endif %} <div class="form__item"> diff --git a/hypha/apply/users/admin_views.py b/hypha/apply/users/admin_views.py index b8ae44a43d612fd97450a0ccc087c0f5a4604168..17c8da5835ebda9c2525cb5ba735abf5247e78a9 100644 --- a/hypha/apply/users/admin_views.py +++ b/hypha/apply/users/admin_views.py @@ -1,10 +1,14 @@ +import django_filters from django.contrib.auth import get_user_model +from django.contrib.auth.models import Group from django.core.paginator import Paginator from django.db.models import Q -from django.shortcuts import render +from django.shortcuts import get_object_or_404 +from django.template.response import TemplateResponse from django.utils.translation import gettext as _ from django.views.decorators.vary import vary_on_headers from wagtail.admin.auth import any_permission_required +from wagtail.admin.filters import WagtailFilterSet from wagtail.admin.forms.search import SearchForm from wagtail.core.compat import AUTH_USER_APP_LABEL, AUTH_USER_MODEL_NAME @@ -18,9 +22,36 @@ change_user_perm = "{0}.change_{1}".format(AUTH_USER_APP_LABEL, AUTH_USER_MODEL_ delete_user_perm = "{0}.delete_{1}".format(AUTH_USER_APP_LABEL, AUTH_USER_MODEL_NAME.lower()) +class UserFilterSet(WagtailFilterSet): + STATUS_CHOICES = ( + ('inactive', 'INACTIVE'), + ('active', 'ACTIVE'), + ) + roles = django_filters.ModelChoiceFilter(queryset=Group.objects.all(), label='Roles', method='filter_by_roles') + status = django_filters.ChoiceFilter(choices=STATUS_CHOICES, label='Status', method='filter_by_status') + + class Meta: + model = User + fields = [ + 'roles', + 'status' + ] + + def filter_by_roles(self, queryset, name, value): + queryset = queryset.filter(groups__name=value) + return queryset + + def filter_by_status(self, queryset, name, value): + if value == 'active': + return queryset.filter(is_active=True) + elif value == 'inactive': + return queryset.filter(is_active=False) + return queryset + + @any_permission_required(add_user_perm, change_user_perm, delete_user_perm) @vary_on_headers('X-Requested-With') -def index(request): +def index(request, *args): """ Override wagtail's users index view to filter by full_name https://github.com/wagtail/wagtail/blob/af69cb4a544a1b9be1339546be62ff54b389730e/wagtail/users/views/users.py#L47 @@ -28,6 +59,12 @@ def index(request): q = None is_searching = False + group = None + group_filter = Q() + if args: + group = get_object_or_404(Group, id=args[0]) + group_filter = Q(groups=group) if args else Q() + model_fields = [f.name for f in User._meta.get_fields()] if 'q' in request.GET: @@ -54,12 +91,17 @@ def index(request): if 'full_name' in model_fields: conditions |= Q(full_name__icontains=term) - users = User.objects.filter(conditions) + users = User.objects.filter(group_filter & conditions) else: form = SearchForm(placeholder=_("Search users")) if not is_searching: - users = User.objects.all().order_by('-is_active', 'full_name') + users = User.objects.filter(group_filter).order_by('-is_active', 'full_name') + + filters = None + if not group: + filters = UserFilterSet(request.GET, queryset=users, request=request) + users = filters.qs if 'ordering' in request.GET: ordering = request.GET['ordering'] @@ -71,21 +113,31 @@ def index(request): else: ordering = 'name' - paginator = Paginator(users, per_page=20) + user_count = users.count() + paginator = Paginator(users.select_related('wagtail_userprofile'), per_page=20) users = paginator.get_page(request.GET.get('p')) if request.headers.get('x-requested-with') == 'XMLHttpRequest': - return render(request, "wagtailusers/users/results.html", { + return TemplateResponse(request, "wagtailusers/users/results.html", { 'users': users, + 'user_count': user_count, 'is_searching': is_searching, 'query_string': q, + 'filters': filters, 'ordering': ordering, + 'app_label': User._meta.app_label, + 'model_name': User._meta.model_name, }) else: - return render(request, "wagtailusers/users/index.html", { + return TemplateResponse(request, "wagtailusers/users/index.html", { + 'group': group, 'search_form': form, 'users': users, + 'user_count': user_count, 'is_searching': is_searching, 'ordering': ordering, 'query_string': q, + 'filters': filters, + 'app_label': User._meta.app_label, + 'model_name': User._meta.model_name, }) diff --git a/hypha/apply/users/middleware.py b/hypha/apply/users/middleware.py index 4ebdf2d0e55453a10ffbe6b5069c04ec03f1d53a..53ae4fc4f3bc1363d4a7d528459805271e69e43d 100644 --- a/hypha/apply/users/middleware.py +++ b/hypha/apply/users/middleware.py @@ -1,8 +1,16 @@ +from django.conf import settings +from django.shortcuts import redirect from social_core.exceptions import AuthForbidden from social_django.middleware import ( SocialAuthExceptionMiddleware as _SocialAuthExceptionMiddleware, ) +ALLOWED_SUBPATH_FOR_UNVERIFIED_USERS = [ + 'login/', + 'logout/', + 'account/', +] + class SocialAuthExceptionMiddleware(_SocialAuthExceptionMiddleware): """ @@ -13,3 +21,36 @@ class SocialAuthExceptionMiddleware(_SocialAuthExceptionMiddleware): return 'Your credentials are not recognised.' super().get_message(request, exception) + + +class TwoFactorAuthenticationMiddleware: + """ + Middleware to enforce 2FA activation for unverified users + + To activate this middleware set env variable ENFORCE_TWO_FACTOR as True. + + This will redirect all request from unverified users to enable 2FA first. + Except the request made on the url paths listed in ALLOWED_SUBPATH_FOR_UNVERIFIED_USERS. + """ + def __init__(self, get_response): + self.get_response = get_response + + def is_path_allowed(self, path): + + for sub_path in ALLOWED_SUBPATH_FOR_UNVERIFIED_USERS: + if sub_path in path: + return True + return False + + def __call__(self, request): + # code to execute before the view + user = request.user + if settings.ENFORCE_TWO_FACTOR: + if user.is_authenticated and not user.is_verified() and not user.social_auth.exists(): + if not self.is_path_allowed(request.path): + return redirect('/account/two_factor/required/') + + response = self.get_response(request) + + # code to execute after view + return response diff --git a/hypha/apply/users/models.py b/hypha/apply/users/models.py index f23aeab93173db51c7d1819762e70fb7e106d9fe..1b84b1a7c91b437a4d45ee73e0e65e6aae3faca3 100644 --- a/hypha/apply/users/models.py +++ b/hypha/apply/users/models.py @@ -25,35 +25,35 @@ from .utils import send_activation_email class UserQuerySet(models.QuerySet): def staff(self): return self.filter( - Q(groups__name=STAFF_GROUP_NAME) | Q(is_superuser=True) + Q(groups__name=STAFF_GROUP_NAME, is_active=True) | Q(is_superuser=True, is_active=True) ).distinct() def staff_admin(self): - return self.filter(groups__name=TEAMADMIN_GROUP_NAME) + return self.filter(groups__name=TEAMADMIN_GROUP_NAME, is_active=True) def reviewers(self): - return self.filter(groups__name=REVIEWER_GROUP_NAME) + return self.filter(groups__name=REVIEWER_GROUP_NAME, is_active=True) def partners(self): - return self.filter(groups__name=PARTNER_GROUP_NAME) + return self.filter(groups__name=PARTNER_GROUP_NAME, is_active=True) def community_reviewers(self): - return self.filter(groups__name=COMMUNITY_REVIEWER_GROUP_NAME) + return self.filter(groups__name=COMMUNITY_REVIEWER_GROUP_NAME, is_active=True) def applicants(self): - return self.filter(groups__name=APPLICANT_GROUP_NAME) + return self.filter(groups__name=APPLICANT_GROUP_NAME, is_active=True) def approvers(self): - return self.filter(groups__name=APPROVER_GROUP_NAME) + return self.filter(groups__name=APPROVER_GROUP_NAME, is_active=True) def finances_level_1(self): - return self.filter(groups__name=FINANCE_GROUP_NAME).exclude(groups__name=APPROVER_GROUP_NAME) + return self.filter(groups__name=FINANCE_GROUP_NAME, is_active=True).exclude(groups__name=APPROVER_GROUP_NAME) def finances_level_2(self): - return self.filter(groups__name=FINANCE_GROUP_NAME).filter(groups__name=APPROVER_GROUP_NAME) + return self.filter(groups__name=FINANCE_GROUP_NAME, is_active=True).filter(groups__name=APPROVER_GROUP_NAME) def contracting(self): - return self.filter(groups__name=CONTRACTING_GROUP_NAME) + return self.filter(groups__name=CONTRACTING_GROUP_NAME, is_active=True) class UserManager(BaseUserManager.from_queryset(UserQuerySet)): diff --git a/hypha/apply/users/templates/two_factor/_wizard_actions.html b/hypha/apply/users/templates/two_factor/_wizard_actions.html index 6c9b1111e43a240de8bb642bb9ba855ef4b6b881..ff5a768b90ea2111f884e877d05f750831e1eaea 100644 --- a/hypha/apply/users/templates/two_factor/_wizard_actions.html +++ b/hypha/apply/users/templates/two_factor/_wizard_actions.html @@ -1,8 +1,15 @@ {% load i18n %} -<button type="submit" class="button button--primary">{% trans "Next" %}</button> +{% if wizard.steps.current == 'token' %} + {% trans "Login" as button_text %} +{% elif wizard.steps.current == 'generator' %} + {% trans "Enable Two-Factor Authentication" as button_text %} +{% else %} + {% trans "Next" as button_text %} +{% endif %} + +<button type="submit" class="button button--primary">{{ button_text }}</button> {% if cancel_url %} - <a href="{% url 'users:account' %}" - class="link link--bold link--left-space">{% trans "Cancel" %}</a> + <a href="{% url 'users:account' %}" class="link link--bold link--left-space">{% trans "Cancel" %}</a> {% endif %} diff --git a/hypha/apply/users/templates/two_factor/admin/disable.html b/hypha/apply/users/templates/two_factor/admin/disable.html new file mode 100644 index 0000000000000000000000000000000000000000..a3fc26d465297ccff74832a1c6b19fcd1aa44c13 --- /dev/null +++ b/hypha/apply/users/templates/two_factor/admin/disable.html @@ -0,0 +1,31 @@ +<!-- It is a custom template built on the top of wagtail base, to confirm 2FA disable process with the user's Password --> +{% extends "wagtailadmin/base.html" %} +{% load i18n static wagtailadmin_tags %} + +{% block content %} + + {% trans "Disabling 2FA" as editing_str %} + {% include "wagtailadmin/shared/header.html" with title=editing_str subtitle=user.get_username merged=1 tabbed=1 icon="user" %} + + <form class="form" action="" method="POST" novalidate> + <div class="tab-content"> + {% csrf_token %} + + <section id="account" class="active nice-padding"> + <p> Are you sure you want to disable the Two Factor Authentication for this user? Please type your password to confirm.</p> + + <ul class="fields"> + {% block fields %} + {% include "wagtailadmin/shared/field_as_li.html" with field=form.password %} + {% endblock %} + + <li> + <button class="button button--primary" type="submit">{% trans 'Disable 2FA' %}</button> + </li> + </ul> + </section> + </div> + </form> + + +{% endblock %} diff --git a/hypha/apply/users/templates/two_factor/core/backup_tokens.html b/hypha/apply/users/templates/two_factor/core/backup_tokens.html index 545536d013ac470484795682e14052375e5459f2..f13936464d47574e0204835a327b08df3772f483 100644 --- a/hypha/apply/users/templates/two_factor/core/backup_tokens.html +++ b/hypha/apply/users/templates/two_factor/core/backup_tokens.html @@ -1,15 +1,13 @@ {% extends "two_factor/_base_focus.html" %} -{% load i18n %} +{% load i18n users_tags %} {% block content %} - <p><a href="{% url 'two_factor:profile'%}" - class="btn btn-link">{% trans "Back" %}</a></p> - <h1>{% block title %}{% trans "Backup Tokens" %}{% endblock %}</h1> - <p>{% blocktrans %}Backup tokens can be used when your primary and backup - phone numbers aren't available. The backup tokens below can be used - for login verification. If you've used up all your backup tokens, you - can generate a new set of backup tokens. Only the backup tokens shown - below will be valid.{% endblocktrans %}</p> + <p><a href="{% url 'users:account'%}" + class="btn btn-link">{% trans "Back to account" %}</a></p> + <h1>{% block title %}{% trans "Backup Codes" %}{% endblock %}</h1> + <p>{% blocktrans trimmed %}These codes should be kept in a safe, + private place for when you need them. When they are used up, + you can generate a new set of backup codes.{% endblocktrans %}</p> {% if device.token_set.count %} <ul> @@ -17,12 +15,18 @@ <li>{{ token.token }}</li> {% endfor %} </ul> - <p>{% blocktrans %}Print these tokens and keep them somewhere safe.{% endblocktrans %}</p> + <p>{% blocktrans %}You should now download, or print these codes, + and keep them somewhere safe.{% endblocktrans %}</p> + <form method="post">{% csrf_token %}{{ form }} + <button class="btn btn-primary" type="submit">{% trans "Regenerate Codes" %}</button> + <a class="btn btn-link link--left-space" href="data:text/plain;charset=UTF-8,{% tokens_text device.token_set.all %}" download="backup_codes.txt"> + {% trans "Save Codes" %}</a> + </form> {% else %} <p>{% trans "You don't have any backup codes yet." %}</p> + <form method="post">{% csrf_token %}{{ form }} + <button class="btn btn-primary" type="submit">{% trans "Generate Codes" %}</button> + </form> {% endif %} - <form method="post">{% csrf_token %}{{ form }} - <button class="btn btn-primary" type="submit">{% trans "Generate Tokens" %}</button> - </form> {% endblock %} diff --git a/hypha/apply/users/templates/two_factor/core/backup_tokens_password.html b/hypha/apply/users/templates/two_factor/core/backup_tokens_password.html index 12d3028ce8dd5b8eb80d770df74aaf515de911f0..ae3541f82a8016683dfb26f449c74819abf60f5b 100644 --- a/hypha/apply/users/templates/two_factor/core/backup_tokens_password.html +++ b/hypha/apply/users/templates/two_factor/core/backup_tokens_password.html @@ -2,16 +2,16 @@ {% load i18n %} {% block content %} -<p><a href="{% url 'two_factor:profile'%}" +<p><a href="{% url 'users:account'%}" class="btn btn-link">{% trans "Back to account" %}</a></p> - <h1>{% block title %}{% trans "Backup Tokens" %}{% endblock %}</h1> - <p>{% blocktrans %}Backup tokens can be used when your primary and backup - phone numbers aren't available. The backup tokens below can be used - for login verification. + <h1>{% block title %}{% trans "Backup Codes" %}{% endblock %}</h1> + <p>{% blocktrans trimmed %}If you loose your smartphone, or your Authenticator app is not available, + you can use a backup code along with your username and password to login until you recover your smartphone. + Each backup code can be used only once. </br> - If you've used up all your backup tokens, you - can generate a new set of backup tokens. Only the backup tokens shown - below will be valid.{% endblocktrans %}</p> + </br> + These codes should be kept in a secure, private place for when you need them. + When they are used up, you can generate a new set of backup codes.{% endblocktrans %}</p> <div class="wrapper wrapper--small wrapper--inner-space-medium"> <form class="form" action="" method="POST" novalidate> {% if form.non_field_errors %} @@ -24,7 +24,7 @@ {% if form.errors %} <ul class="errorlist"> - {% blocktrans count counter=form.errors.items|length %} + {% blocktrans trimmed count counter=form.errors.items|length %} <li>Please correct the error below.</li> {% plural %} <li>Please correct the errors below.</li> diff --git a/hypha/apply/users/templates/two_factor/core/setup.html b/hypha/apply/users/templates/two_factor/core/setup.html new file mode 100644 index 0000000000000000000000000000000000000000..c7ab1e66ca0d099f39cb0bd9d503dd0abdda7497 --- /dev/null +++ b/hypha/apply/users/templates/two_factor/core/setup.html @@ -0,0 +1,62 @@ +{% extends "two_factor/_base_focus.html" %} +{% load i18n %} + +{% block content %} + <h1>{% block title %}{% trans "Two-Factor Authentication (2FA)" %}{% endblock %}</h1> + {% if wizard.steps.current == 'welcome' %} + <p>{% blocktrans trimmed %}You are about to take your account security to the + next level.{% endblocktrans %}</p> + <p>{% blocktrans trimmed %}To start using 2FA, you need to install an Authenticator app on your smartphone or computer. With Safari on Apple devices you can also use a built in system.{% endblocktrans %}</p> + <p>{% blocktrans trimmed %}Install the app you choose then continue to Enable Two-Factor Authentication. {% endblocktrans %}</p> + {% elif wizard.steps.current == 'method' %} + <p>{% blocktrans trimmed %}Please select which authentication method you would + like to use.{% endblocktrans %}</p> + {% elif wizard.steps.current == 'generator' %} + <p>{% blocktrans trimmed %}To start using a token generator, please use your + smartphone to scan the QR code below. For example, use Google + Authenticator. Then, enter the token generated by the app. + {% endblocktrans %}</p> + <p><img src="{{ QR_URL }}" alt="QR Code" class="bg-white" width="200" height="200" /></p> + <details> + <summary>Advanced</summary> + <p>For advanced users, here is the otpauth url in string format.</p> + <p><a href="{{ otpauth_url }}">{{ otpauth_url }}</a></p> + </details> + {% elif wizard.steps.current == 'sms' %} + <p>{% blocktrans trimmed %}Please enter the phone number you wish to receive the + text messages on. This number will be validated in the next step. + {% endblocktrans %}</p> + {% elif wizard.steps.current == 'call' %} + <p>{% blocktrans trimmed %}Please enter the phone number you wish to be called on. + This number will be validated in the next step. {% endblocktrans %}</p> + {% elif wizard.steps.current == 'validation' %} + {% if challenge_succeeded %} + {% if device.method == 'call' %} + <p>{% blocktrans trimmed %}We are calling your phone right now, please enter the + digits you hear.{% endblocktrans %}</p> + {% elif device.method == 'sms' %} + <p>{% blocktrans trimmed %}We sent you a text message, please enter the tokens we + sent.{% endblocktrans %}</p> + {% endif %} + {% else %} + <p class="alert alert-warning" role="alert">{% blocktrans trimmed %}We've + encountered an issue with the selected authentication method. Please + go back and verify that you entered your information correctly, try + again, or use a different authentication method instead. If the issue + persists, contact the site administrator.{% endblocktrans %}</p> + {% endif %} + {% elif wizard.steps.current == 'yubikey' %} + <p>{% blocktrans trimmed %}To identify and verify your YubiKey, please insert a + token in the field below. Your YubiKey will be linked to your + account.{% endblocktrans %}</p> + {% endif %} + + <form action="" method="post">{% csrf_token %} + {% include "two_factor/_wizard_forms.html" %} + + {# hidden submit button to enable [enter] key #} + <input type="submit" value="" class="d-none" /> + + {% include "two_factor/_wizard_actions.html" %} + </form> +{% endblock %} diff --git a/hypha/apply/users/templates/two_factor/core/setup_complete.html b/hypha/apply/users/templates/two_factor/core/setup_complete.html new file mode 100644 index 0000000000000000000000000000000000000000..422f3f0b5d028f8e182d1d5c1722c5d441a8366e --- /dev/null +++ b/hypha/apply/users/templates/two_factor/core/setup_complete.html @@ -0,0 +1,25 @@ +{% extends "two_factor/_base_focus.html" %} +{% load i18n %} + +{% block content %} + <h1>{% block title %}{% trans "Two-Factor Authentication(2FA)" %}{% endblock %}</h1> + + <p>{% blocktrans trimmed %}Congratulations, you've successfully enabled two-factor + authentication.{% endblocktrans %}</p> + <p>{% blocktrans trimmed %}We strongly recommend you to save the backup codes. + To get the backup codes you can continue to Show Codes.{% endblocktrans %}</p> + + {% if not phone_methods %} + <a href="{% url 'users:backup_tokens_password' %}" class="btn btn-link">Show Codes</a> + <a href="{% url 'users:account' %}" class="link link--bold link--left-space">{% trans "Back to Account" %}</a> + {% else %} + <p>{% blocktrans trimmed %}However, it might happen that you don't have access to + your primary token device. To enable account recovery, add a phone + number.{% endblocktrans %}</p> + + <p><a href="{% url 'users:backup_tokens_password' %}" class="btn btn-block">Show Codes</a></p> + <p><a href="{% url 'two_factor:phone_create' %}" + class="btn btn-success">{% trans "Add Phone Number" %}</a></p> + {% endif %} + +{% endblock %} diff --git a/hypha/apply/users/templates/two_factor/core/two_factor_required.html b/hypha/apply/users/templates/two_factor/core/two_factor_required.html new file mode 100644 index 0000000000000000000000000000000000000000..6bc76007338ad1e5427a8d746e1bd8b7cb70fd1e --- /dev/null +++ b/hypha/apply/users/templates/two_factor/core/two_factor_required.html @@ -0,0 +1,22 @@ +<!--Custom template to enforce 2FA and Copied from two_factor/core/otp_required.html--> + +{% extends "two_factor/_base_focus.html" %} +{% load i18n %} + +{% block content %} + <h1>{% block title %}{% trans "Permission Denied" %}{% endblock %}</h1> + + <p>{% blocktrans trimmed %}The page you requested, enforces users to verify using + two-factor authentication for security reasons. You need to set up these + security features in order to access this page. Without setting up these security features, + You can only access the account(Profile section) or can logout from the system.{% endblocktrans %}</p> + + <p>{% blocktrans trimmed %}Two-factor authentication is not already set up for your + account. Set up two-factor authentication for enhanced account + security.{% endblocktrans %}</p> + + <p> + <a href="{% url 'two_factor:setup' %}" class="btn btn-primary"> + {% trans "Set up Two-Factor Authentication (2FA)" %}</a> + </p> +{% endblock %} diff --git a/hypha/apply/users/templates/two_factor/profile/disable.html b/hypha/apply/users/templates/two_factor/profile/disable.html index aa47f1654bba4fa68464f28177aaabc8dc931fc7..44ca21a1e9dc5840520ff92a816c5ebe6b3d9fe5 100644 --- a/hypha/apply/users/templates/two_factor/profile/disable.html +++ b/hypha/apply/users/templates/two_factor/profile/disable.html @@ -2,10 +2,10 @@ {% load i18n %} {% block content %} - <p><a href="{% url 'two_factor:profile'%}" + <p><a href="{% url 'users:account'%}" class="btn btn-link">{% trans "Back to account" %}</a></p> <h1>{% block title %}{% trans "Disable Two-factor Authentication" %}{% endblock %}</h1> - <p>{% blocktrans %}Disabling Two-factor authentication weakens your account security. + <p>{% blocktrans trimmed %}Disabling Two-factor authentication weakens your account security. We recommend reenabling it when you can.{% endblocktrans %}</p> <div class="wrapper wrapper--small wrapper--inner-space-medium"> <form class="form" action="" method="POST" novalidate> @@ -19,7 +19,7 @@ {% if form.errors %} <ul class="errorlist"> - {% blocktrans count counter=form.errors.items|length %} + {% blocktrans trimmed count counter=form.errors.items|length %} <li>Please correct the error below.</li> {% plural %} <li>Please correct the errors below.</li> diff --git a/hypha/apply/users/templates/two_factor/profile/profile.html b/hypha/apply/users/templates/two_factor/profile/profile.html index 1ffe8dd38c0fd69f11c498357e756afdcb63e4ea..fc7177d1cb56b1d8a451688ec3a9af34ba6155f9 100644 --- a/hypha/apply/users/templates/two_factor/profile/profile.html +++ b/hypha/apply/users/templates/two_factor/profile/profile.html @@ -1,5 +1,5 @@ {% extends "two_factor/_base.html" %} -{% load i18n two_factor %} +{% load i18n %} {% block content %} <p><a href="{% url 'users:account' %}" class="btn btn-primary"> @@ -12,23 +12,23 @@ {% if default_device_type == 'TOTPDevice' %} <p>{% trans "Tokens will be generated by your token generator." %}</p> {% elif default_device_type == 'PhoneDevice' %} - <p>{% blocktrans with primary=default_device|device_action %}Primary method: {{ primary }}{% endblocktrans %}</p> + <p>{% blocktrans with primary=default_device.generate_challenge_button_title %}Primary method: {{ primary }}{% endblocktrans %}</p> {% elif default_device_type == 'RemoteYubikeyDevice' %} <p>{% blocktrans %}Tokens will be generated by your YubiKey.{% endblocktrans %}</p> {% endif %} {% if available_phone_methods %} <h2>{% trans "Backup Phone Numbers" %}</h2> - <p>{% blocktrans %}If your primary method is not available, we are able to + <p>{% blocktrans trimmed %}If your primary method is not available, we are able to send backup tokens to the phone numbers listed below.{% endblocktrans %}</p> <ul> {% for phone in backup_phones %} <li> - {{ phone|device_action }} + {{ phone.generate_challenge_button_title }} <form method="post" action="{% url 'two_factor:phone_delete' phone.id %}" - onsubmit="return confirm('Are you sure?')"> + onsubmit="return confirm({% trans 'Are you sure?' %})"> {% csrf_token %} - <button class="btn btn-xs btn-warning" + <button class="btn btn-sm btn-warning" type="submit">{% trans "Unregister" %}</button> </form> </li> @@ -40,9 +40,9 @@ <h2>{% trans "Backup Tokens" %}</h2> <p> - {% blocktrans %}If you don't have any device with you, you can access + {% blocktrans trimmed %}If you don't have any device with you, you can access your account using backup tokens.{% endblocktrans %} - {% blocktrans count counter=backup_tokens %} + {% blocktrans trimmed count counter=backup_tokens %} You have only one backup token remaining. {% plural %} You have {{ counter }} backup tokens remaining. @@ -52,12 +52,12 @@ class="btn btn-info">{% trans "Show Codes" %}</a></p> <h2>{% trans "Disable Two-Factor Authentication" %}</h2> - <p>{% blocktrans %}However we strongly discourage you to do so, you can + <p>{% blocktrans trimmed %}However we strongly discourage you to do so, you can also disable two-factor authentication for your account.{% endblocktrans %}</p> <p><a class="btn btn-default" href="{% url 'two_factor:disable' %}"> {% trans "Disable Two-Factor Authentication" %}</a></p> {% else %} - <p>{% blocktrans %}Two-factor authentication is not enabled for your + <p>{% blocktrans trimmed %}Two-factor authentication is not enabled for your account. Enable two-factor authentication for enhanced account security.{% endblocktrans %}</p> <p><a href="{% url 'two_factor:setup' %}" class="btn btn-primary"> diff --git a/hypha/apply/users/templates/users/account.html b/hypha/apply/users/templates/users/account.html index d504006947bda4320af9c97f3941460c5fc66e0d..bb18d684f40e95a13a1cc7cdd0db62f7d7cde7a7 100644 --- a/hypha/apply/users/templates/users/account.html +++ b/hypha/apply/users/templates/users/account.html @@ -4,7 +4,7 @@ {% block title %}Account{% endblock %} {% block content %} -<div class="admin-bar"> +<div class="admin-bar" xmlns="http://www.w3.org/1999/html"> <div class="admin-bar__inner admin-bar__inner--with-button"> <h3 class="admin-bar__heading">{% trans "Welcome" %} {{ user }}</h3> <a href="{% url 'dashboard:dashboard' %}" class="button button--primary button--arrow-pixels-white"> @@ -27,15 +27,26 @@ </div> {% if show_change_password and user.has_usable_password and not backends.associated %} + <br> + <hr> <div class="profile__column"> - <h3>{% trans "Change password" %}</h3> + <h3>{% trans "Account Security" %}</h3> + <h4>{% trans "Password" %}</h4> <p><a class="button button--primary" href="{% url 'users:password_change' %}">{% trans "Update password" %}</a></p> - <h3>{% trans "Account security" %}</h3> - <p><a class="link link--button link--button--narrow" href="{% url 'two_factor:profile' %}">{% trans "Two-factor authentication settings" %}</a></p> + <h4>{% trans "Two-Factor Authentication (2FA)" %}</h4> + {% if default_device %} + <div> + <p><a class="button button--primary" href="{% url 'users:backup_tokens_password' %}">{% trans "Show backup codes" %}</a></p> + <p><a class="button button--primary" href="{% url 'two_factor:disable' %}">{% trans "Disable 2FA" %}</a></p> + </div> + {% else %} + <p><a class="button button--primary" href="{% url 'two_factor:setup' %}">{% trans "Enable 2FA" %}</a></p> + {% endif %} </div> {% endif %} + <div class="profile__column"> {% if swappable_form %} <h3>{% trans "Become" %}:</h3> diff --git a/hypha/apply/users/templates/users/activation/email.txt b/hypha/apply/users/templates/users/activation/email.txt index 69a869192dea18efda070d3763371bb6c599ffa9..9e3e2c809b1a256a9405927b8044160a7f18fde1 100644 --- a/hypha/apply/users/templates/users/activation/email.txt +++ b/hypha/apply/users/templates/users/activation/email.txt @@ -1,25 +1,22 @@ -{% load i18n wagtailadmin_tags %} -{% base_url_setting as base_url %} -{% firstof name username as user %} - +{% load i18n wagtailadmin_tags %}{% base_url_setting as base_url %}{% firstof name username as user %} {% blocktrans %}Dear {{ user }},{% endblocktrans %} -{% blocktrans %}An account on the {{ ORG_LONG_NAME }} web site has been created. Activate your account by clicking this link or copying and pasting it to your browser:{% endblocktrans %} +{% blocktrans %}Activate your account on the {{ org_long_name }} web site by clicking this link or copying and pasting it to your browser:{% endblocktrans %} {% if site %}{{ site.root_url }}{% else %}{{ base_url }}{% endif %}{{ activation_path }} -{% blocktrans %}This link can be used only once and will lead you to a page where you can set your password. It will remain active for {{ timeout_days }} days, so do it now.{% endblocktrans %} +{% blocktrans %}This link can be used only once and will lead you to a page where you can set your password. It will remain active for {{ timeout_days }} days, so please set your password as soon as possible.{% endblocktrans %} {% trans "After setting your password, you will be able to log in at" %}: {% if site %}{{ site.root_url }}{% else %}{{ base_url }}{% endif %} {% trans "in the future using" %}: {% trans "Username" %}: {{ username }} {% trans "Password" %}: {% trans "Your chosen password" %} -{% blocktrans with root_url=site.root_url %}If you do not complete the activation process within {{ timeout_days }} days you can use the password reset form at{% endblocktrans %}: {% if site %}{{ root_url }}{% else %}{{ base_url }}{% endif %}{% url 'users:password_reset' %} +{% blocktrans %}If you do not complete the activation process within {{ timeout_days }} days you can use the password reset form at{% endblocktrans %}: {% if site %}{{ site.root_url }}{% else %}{{ base_url }}{% endif %}{% url 'users:password_reset' %} -{% blocktrans with root_url=PUBLIC_SITE.root_url %}Kind Regards, -The {{ ORG_SHORT_NAME }} Team +{% blocktrans %}Kind Regards, +The {{ org_short_name }} Team{% endblocktrans %} -- -{{ ORG_LONG_NAME }} -{{ root_url }}{% endblocktrans %} +{{ org_long_name }} +{% if site %}{{ site.root_url }}{% else %}{{ base_url }}{% endif %} diff --git a/hypha/apply/users/templates/users/change_password.html b/hypha/apply/users/templates/users/change_password.html index 5b66a7d424bf3dee3555cfcd7d2fac0f7606d5be..b671f6e256111aa50721550f002f0433c1f13ad2 100644 --- a/hypha/apply/users/templates/users/change_password.html +++ b/hypha/apply/users/templates/users/change_password.html @@ -17,7 +17,7 @@ {% if form.errors %} <ul class="errorlist"> - {% blocktrans count counter=form.errors.items|length %} + {% blocktrans trimmed count counter=form.errors.items|length %} <li>Please correct the error below.</li> {% plural %} <li>Please correct the errors below.</li> diff --git a/hypha/apply/users/templates/users/email_change/confirm_email.txt b/hypha/apply/users/templates/users/email_change/confirm_email.txt index c62efe9c12b4adb34704fea7846db54df6ce160d..f5625233ffff3952ac9b5038a51c946e275a4196 100644 --- a/hypha/apply/users/templates/users/email_change/confirm_email.txt +++ b/hypha/apply/users/templates/users/email_change/confirm_email.txt @@ -1,19 +1,15 @@ -{% load i18n wagtailadmin_tags %} -{% base_url_setting as base_url %} -{% firstof name username as user %} - +{% load i18n wagtailadmin_tags %}{% base_url_setting as base_url %}{% firstof name username as user %} {% blocktrans %}Dear {{ user }},{% endblocktrans %} -{% blocktrans %}Request to change email of your account on the {{ ORG_LONG_NAME }} web site has been accepted. Confirm your email by clicking this link or copying and pasting it to your browser:{% endblocktrans %} +{% blocktrans %}Request to change email of your account on the {{ org_long_name }} web site has been accepted. Confirm your email by clicking this link or copying and pasting it to your browser:{% endblocktrans %} {% if site %}{{ site.root_url }}{% else %}{{ base_url }}{% endif %}{{ activation_path }} {% blocktrans %}This link will only remain active for {{ timeout_days }} days and will lead you to profile page after verification.{% endblocktrans %} - -{% blocktrans with root_url=PUBLIC_SITE.root_url %}Kind Regards, -The {{ ORG_SHORT_NAME }} Team +{% blocktrans %}Kind Regards, +The {{ org_short_name }} Team{% endblocktrans %} -- -{{ ORG_LONG_NAME }} -{{ root_url }}{% endblocktrans %} +{{ org_long_name }} +{% if site %}{{ site.root_url }}{% else %}{{ base_url }}{% endif %} diff --git a/hypha/apply/users/templates/users/email_change/confirm_password.html b/hypha/apply/users/templates/users/email_change/confirm_password.html index 73011a83d1a31c317907a9247d25a9229e759fd9..b2527aaa91a93ca17ccebbcee2818410a7695739 100644 --- a/hypha/apply/users/templates/users/email_change/confirm_password.html +++ b/hypha/apply/users/templates/users/email_change/confirm_password.html @@ -18,7 +18,7 @@ {% if form.errors %} <ul class="errorlist"> - {% blocktrans count counter=form.errors.items|length %} + {% blocktrans trimmed count counter=form.errors.items|length %} <li>Please correct the error below.</li> {% plural %} <li>Please correct the errors below.</li> diff --git a/hypha/apply/users/templates/users/login.html b/hypha/apply/users/templates/users/login.html index c2a084a0c7624491c9e23a23bb93388190caa940..da278a5d06213c55de199e78ecd8297a7bd480ca 100644 --- a/hypha/apply/users/templates/users/login.html +++ b/hypha/apply/users/templates/users/login.html @@ -1,5 +1,5 @@ {% extends 'base.html' %} -{% load i18n two_factor wagtailcore_tags %} +{% load i18n wagtailcore_tags %} {% block header_modifier %}header--light-bg{% endblock %} {% block page_title %}Login{% endblock %} @@ -11,17 +11,17 @@ <p>{% blocktrans %}Enter your credentials.{% endblocktrans %}</p> {% elif wizard.steps.current == 'token' %} {% if device.method == 'call' %} - <p>{% blocktrans %}We are calling your phone right now, please enter the + <p>{% blocktrans trimmed %}We are calling your phone right now, please enter the digits you hear.{% endblocktrans %}</p> {% elif device.method == 'sms' %} - <p>{% blocktrans %}We sent you a text message, please enter the tokens we + <p>{% blocktrans trimmed %}We sent you a text message, please enter the tokens we sent.{% endblocktrans %}</p> {% else %} - <p>{% blocktrans %}Please enter the tokens generated by your token + <p>{% blocktrans trimmed %}Please enter the tokens generated by your token generator.{% endblocktrans %}</p> {% endif %} {% elif wizard.steps.current == 'backup' %} - <p>{% blocktrans %}Use this form for entering backup tokens for logging in. + <p>{% blocktrans trimmed %}Use this form for entering backup tokens for logging in. These tokens have been generated for you to print and keep safe. Please enter one of these backup tokens to login to your account.{% endblocktrans %}</p> {% endif %} @@ -51,7 +51,7 @@ {% for other in other_devices %} <button name="challenge_device" value="{{ other.persistent_id }}" class="btn btn-default btn-block" type="submit"> - {{ other|device_action }} + {{ other.generate_challenge_button_title }} </button> {% endfor %}</p> {% endif %} @@ -59,7 +59,7 @@ <p>{% trans "As a last resort, you can use a backup token:" %}</p> <p> <button name="wizard_goto_step" type="submit" value="backup" - class="btn btn-default btn-block">{% trans "Use Backup Token" %}</button> + class="link link--button link--button-white link--button-white--narrow">{% trans "Use Backup Token" %}</button> </p> {% endif %} diff --git a/hypha/apply/users/templates/users/password_reset/confirm.html b/hypha/apply/users/templates/users/password_reset/confirm.html index e5d2940b462cd4be52b918e5409c04ae61e4b288..076197a8d873e36ca4b5dac3885c848caa403e39 100644 --- a/hypha/apply/users/templates/users/password_reset/confirm.html +++ b/hypha/apply/users/templates/users/password_reset/confirm.html @@ -17,7 +17,7 @@ {% if form.errors %} <ul class="errorlist"> - {% blocktrans count counter=form.errors.items|length %} + {% blocktrans trimmed count counter=form.errors.items|length %} <li>Please correct the error below.</li> {% plural %} <li>Please correct the errors below.</li> diff --git a/hypha/apply/users/templates/users/password_reset/email.txt b/hypha/apply/users/templates/users/password_reset/email.txt index ba51754de39bd3626c4305932b718256f87a4e07..2cfbdd19e89ec9120a8d1ed39fa9fdc1618ccf20 100644 --- a/hypha/apply/users/templates/users/password_reset/email.txt +++ b/hypha/apply/users/templates/users/password_reset/email.txt @@ -1,5 +1,6 @@ -{% load i18n wagtailadmin_tags %}{% base_url_setting as base_url %} +{% load i18n wagtailadmin_tags %} {% trans "Please follow the link below to reset your password:" %} + {{ protocol }}://{{ domain }}{% url 'users:password_reset_confirm' uidb64=uid token=token %} {% if user.USERNAME_FIELD != "email" %} diff --git a/hypha/apply/users/templates/users/password_reset/form.html b/hypha/apply/users/templates/users/password_reset/form.html index fa72d211ca760a3e50160d13c688ce29696e0039..3a28d709fad811bc6b4831204152710fca67480f 100644 --- a/hypha/apply/users/templates/users/password_reset/form.html +++ b/hypha/apply/users/templates/users/password_reset/form.html @@ -18,11 +18,12 @@ {% endif %} <form class="form form--with-p-tags" method="post"> + <p class="form__help">{% trans "Forgot or want to change your password? Please enter your user account's email address and we will send you a password reset link." %}</p> {% csrf_token %} <p>{{ form.email.label_tag }}</p> <p>{{ form.email }}</p> - <button class="link link--button-secondary" type="submit">{% trans 'Reset password' %}</button> + <button class="link link--button-secondary" type="submit">{% trans "Send password reset email" %}</button> </form> </div> {% endblock %} diff --git a/hypha/apply/users/templates/wagtailusers/users/edit.html b/hypha/apply/users/templates/wagtailusers/users/edit.html index 285659a35fc3f3cdab2c489fa356852cb46059a5..6acd9e295ceed8f8f298f0f7472ececa06c58757 100644 --- a/hypha/apply/users/templates/wagtailusers/users/edit.html +++ b/hypha/apply/users/templates/wagtailusers/users/edit.html @@ -1,26 +1,78 @@ +<!-- Override the Wagtail's user edit template to add a custom 'Disable 2FA' button to account section--> {% extends "wagtailusers/users/edit.html" %} +{% load i18n wagtailimages_tags users_tags %} +{% block content %} -{% block fields %} - {% if form.separate_username_field %} - {% include "wagtailadmin/shared/field_as_li.html" with field=form.username_field %} - {% endif %} - {% include "wagtailadmin/shared/field_as_li.html" with field=form.email %} - {% include "wagtailadmin/shared/field_as_li.html" with field=form.full_name %} - - {% comment %} - First/last name hidden input with dummy values because.. Wagtail admin - See hypha.apply.users.forms.CustomUserEditForm - {% endcomment %} - {{ form.first_name }} - {{ form.last_name }} - - {% if form.password1 %} - {% include "wagtailadmin/shared/field_as_li.html" with field=form.password1 %} - {% endif %} - {% if form.password2 %} - {% include "wagtailadmin/shared/field_as_li.html" with field=form.password2 %} - {% endif %} - {% if form.is_active %} - {% include "wagtailadmin/shared/field_as_li.html" with field=form.is_active %} - {% endif %} -{% endblock fields %} + {% trans "Editing" as editing_str %} + {% include "wagtailadmin/shared/header.html" with title=editing_str subtitle=user.get_username merged=1 tabbed=1 icon="user" %} + + <ul class="tab-nav merged" data-tab-nav> + <li class="active"><a href="#account">{% trans "Account" %}</a></li> + <li><a href="#roles">{% trans "Roles" %}</a></li> + </ul> + + <form action="{% url 'wagtailusers_users:edit' user.pk %}" method="POST" novalidate{% if form.is_multipart %} enctype="multipart/form-data"{% endif %}> + <div class="tab-content"> + {% csrf_token %} + + <section id="account" class="active nice-padding"> + <ul class="fields"> + {% block fields %} + <!-- Block Fields are overridden to show fields as per the requirement --> + {% if form.separate_username_field %} + {% include "wagtailadmin/shared/field_as_li.html" with field=form.username_field %} + {% endif %} + {% include "wagtailadmin/shared/field_as_li.html" with field=form.email %} + {% include "wagtailadmin/shared/field_as_li.html" with field=form.full_name %} + + {% comment %} + First/last name hidden input with dummy values because.. Wagtail admin + See hypha.apply.users.forms.CustomUserEditForm + {% endcomment %} + {{ form.first_name }} + {{ form.last_name }} + + {% if form.password1 %} + {% include "wagtailadmin/shared/field_as_li.html" with field=form.password1 %} + {% endif %} + {% if form.password2 %} + {% include "wagtailadmin/shared/field_as_li.html" with field=form.password2 %} + {% endif %} + {% if form.is_active %} + {% include "wagtailadmin/shared/field_as_li.html" with field=form.is_active %} + {% endif %} + {% endblock fields %} + + <li> + <input type="submit" value="{% trans 'Save' %}" class="button" /> + {% if can_delete %} + <a href="{% url 'wagtailusers_users:delete' user.pk %}" class="button button-secondary no">{% trans "Delete user" %}</a> + {% endif %} + <!-- Add a custom button to user account edit form --> + {% user_2fa_enabled user as is_2fa_enabled %} + {% if is_2fa_enabled %} + <a href="{% url 'users:admin_disable' user.pk %}" class="button">{% trans "Disable 2FA" %}</a> + {% else %} + <button type="button" title="{% trans "This account do not have 2FA enabled." %}" class="button" disabled>{% trans "Disable 2FA" %}</button> + {% endif %} + </li> + </ul> + </section> + <section id="roles" class="nice-padding"> + <ul class="fields"> + {% if form.is_superuser %} + {% include "wagtailadmin/shared/field_as_li.html" with field=form.is_superuser %} + {% endif %} + + {% include "wagtailadmin/shared/field_as_li.html" with field=form.groups %} + <li> + <input type="submit" value="{% trans 'Save' %}" class="button" /> + {% if can_delete %} + <a href="{% url 'wagtailusers_users:delete' user.pk %}" class="button button-secondary no">{% trans "Delete user" %}</a> + {% endif %} + </li> + </ul> + </section> + </div> + </form> +{% endblock %} diff --git a/hypha/apply/users/templates/wagtailusers/users/index.html b/hypha/apply/users/templates/wagtailusers/users/index.html new file mode 100644 index 0000000000000000000000000000000000000000..fd28fb0f853ace65d13e46235be626bcfb50a80b --- /dev/null +++ b/hypha/apply/users/templates/wagtailusers/users/index.html @@ -0,0 +1,44 @@ +{% extends "wagtailadmin/base.html" %} +{% load i18n static wagtailadmin_tags %} +{% block titletag %}{% trans "Users" %}{% endblock %} +{% block extra_js %} + {{ block.super }} + <script> + window.headerSearch = { + {% if group %} + url: "{% url 'wagtailusers_groups:users' group.id %}", + {% else %} + url: "{% url 'wagtailusers_users:index' %}", + {% endif %} + termInput: "#id_q", + targetOutput: "#user-results" + } + </script> + <script> + window.wagtailConfig.BULK_ACTION_ITEM_TYPE = 'USER'; + </script> + <script defer src="{% versioned_static 'wagtailadmin/js/bulk-actions.js' %}"></script> +{% endblock %} + +{% block extra_css %} + {{ block.super }} + <link rel="stylesheet" href="{% static 'css/apply/wagtail_users_list.css' %}" type="text/css" /> + + {{ filters.form.media.css }} +{% endblock %} + +{% block content %} + {% trans "Users" as users_str %} + {% trans "Add a user" as add_a_user_str %} + + {% url "wagtailusers_users:add" as add_link %} + {% include "wagtailadmin/shared/header.html" with subtitle=group.name title=users_str action_url=add_link action_text=add_a_user_str icon="user" search_url="wagtailusers_users:index" %} + + <div class="nice-padding"> + <div id="user-results" class="users"> + {% include "wagtailusers/users/results.html" %} + </div> + {% trans "Select all users in listing" as select_all_text %} + {% include 'wagtailadmin/bulk_actions/footer.html' with select_all_obj_text=select_all_text app_label=app_label model_name=model_name objects=users %} + </div> +{% endblock %} diff --git a/hypha/apply/users/templates/wagtailusers/users/list.html b/hypha/apply/users/templates/wagtailusers/users/list.html index 449f1d102477bab09fd77e776ef9186bf37a7dd8..1ba5b89f7ce5284077d112e25fd76b4cf87cca4d 100644 --- a/hypha/apply/users/templates/wagtailusers/users/list.html +++ b/hypha/apply/users/templates/wagtailusers/users/list.html @@ -1,7 +1,8 @@ -{% load i18n wagtailusers_tags wagtailadmin_tags %} +{% load i18n l10n wagtailusers_tags wagtailadmin_tags %} <table class="listing"> <thead> <tr> + {% include 'wagtailadmin/bulk_actions/select_all_checkbox_cell.html' %} <th class="name"> {% trans "Name" %} {% if ordering == "name" %} @@ -32,8 +33,9 @@ <tbody> {% for user in users %} <tr> - <td class="title" valign="top"> - <h2> + {% include "wagtailadmin/bulk_actions/listing_checkbox_cell.html" with obj_type="user" obj=user aria_labelledby_prefix="user_" aria_labelledby=user.pk|unlocalize aria_labelledby_suffix="_title" %} + <td id="user_{{ user.pk|unlocalize }}_title" class="title" valign="top"> + <h2 class="title-wrapper"> <span class="avatar small"><img src="{% avatar_url user size=25 %}" /></span> <a href="{% url 'wagtailusers_users:edit' user.pk %}">{{ user.get_full_name|default:user.get_username }}</a> </h2> diff --git a/hypha/apply/users/templates/wagtailusers/users/results.html b/hypha/apply/users/templates/wagtailusers/users/results.html new file mode 100644 index 0000000000000000000000000000000000000000..61fcec4dc56068515889e9a0fd08ac60a8bc8441 --- /dev/null +++ b/hypha/apply/users/templates/wagtailusers/users/results.html @@ -0,0 +1,49 @@ +{% load i18n wagtailadmin_tags %} +<div class="users-list{% if filters %} users-list--has-filters{% endif %}"> + <div class="users-list__results"> + {% if users %} + <h2 role="alert"> + {% blocktrans trimmed count count=user_count %} + There is {{ user_count }} user + {% plural %} + There are {{ user_count }} users + {% endblocktrans %} + </h2> + + {% if is_searching %} + {% search_other %} + {% endif %} + {% include "wagtailusers/users/list.html" %} + + {# call pagination_nav with no linkurl, to generate general-purpose links like <div href="?p=2"/> #} + {% include "wagtailadmin/shared/pagination_nav.html" with items=users %} + {% else %} + <h2 role="alert">{% blocktrans trimmed %}Sorry, no users match "<em>{{ query_string }}</em>"{% endblocktrans %}</h2> + {% if is_searching %} + {% search_other %} + {% else %} + {% url 'wagtailusers_users:add' as wagtailusers_add_url %} + {% if group %} + {% with group.name as group_name %} + <p>{% blocktrans trimmed %}The {{ group_name }} group has no users configured. Why not <a href="{{ wagtailusers_add_url }}">add some</a>?{% endblocktrans %}</p> + {% endwith %} + {% else %} + <p>{% blocktrans trimmed %}There are no users configured. Why not <a href="{{ wagtailusers_add_url }}">add some</a>?{% endblocktrans %}</p> + {% endif %} + {% endif %} + {% endif %} + </div> + {% if filters %} + <div class="users-list__filters"> + <h2>{% trans 'Filter' %}</h2> + <form method="get"> + {% for filter in filters.form %} + {{ filter.label_tag }} + {{ filter }} + {{ filter.errors }} + {% endfor %} + <button class="button button-longrunning" type="submit">{% icon name="spinner" %}{% trans 'Apply filters' %}</button> + </form> + </div> + {% endif %} +</div> diff --git a/hypha/apply/users/templatetags/users_tags.py b/hypha/apply/users/templatetags/users_tags.py index a3e8b5432f9fe4e1221c013a0061350e111a21e1..94a8584b01ddcc24a41cc8b199c334ceb6c8529a 100644 --- a/hypha/apply/users/templatetags/users_tags.py +++ b/hypha/apply/users/templatetags/users_tags.py @@ -1,4 +1,5 @@ from django import template +from django_otp import devices_for_user from ..utils import can_use_oauth_check @@ -25,3 +26,19 @@ def can_use_oauth(context): user = context.get('user') return can_use_oauth_check(user) + + +@register.simple_tag +def user_2fa_enabled(user): + """Checking if 2FA devices exist for the user""" + if len(list(devices_for_user(user))): + return True + return False + + +@register.simple_tag +def tokens_text(token_set): + tokens_string = "" + for token in token_set: + tokens_string += str(token.token) + " \n" + return tokens_string diff --git a/hypha/apply/users/tests/test_middleware.py b/hypha/apply/users/tests/test_middleware.py new file mode 100644 index 0000000000000000000000000000000000000000..6800bb67ba2247e3dad6b7b57787fe25fffa9989 --- /dev/null +++ b/hypha/apply/users/tests/test_middleware.py @@ -0,0 +1,41 @@ +from django.conf import settings +from django.test import TestCase, override_settings +from django.urls import reverse + +from hypha.apply.users.tests.factories import UserFactory + +from ..middleware import ALLOWED_SUBPATH_FOR_UNVERIFIED_USERS + + +@override_settings(ROOT_URLCONF='hypha.apply.urls', ENFORCE_TWO_FACTOR=True) +class TestTwoFactorAuthenticationMiddleware(TestCase): + def enable_otp(self, user): + return user.totpdevice_set.create(name='default') + + def test_unverified_user_redirect(self): + user = UserFactory() + self.client.force_login(user) + + response = self.client.get(settings.LOGIN_REDIRECT_URL, follow=True) + self.assertRedirects(response, reverse('users:two_factor_required'), status_code=301) + + response = self.client.get(reverse('funds:submissions:list'), follow=True) + self.assertRedirects(response, reverse('users:two_factor_required'), status_code=301) + + def test_verified_user_redirect(self): + user = UserFactory() + self.client.force_login(user) + self.enable_otp(user=user) + response = self.client.get(settings.LOGIN_REDIRECT_URL, follow=True) + self.assertEqual(response.status_code, 200) + + response = self.client.get(reverse('funds:submissions:list'), follow=True) + self.assertEqual(response.status_code, 200) + + def test_unverified_user_can_access_allowed_urls(self): + user = UserFactory() + self.client.force_login(user) + + for path in ALLOWED_SUBPATH_FOR_UNVERIFIED_USERS: + response = self.client.get(path, follow=True) + self.assertEqual(response.status_code, 200) diff --git a/hypha/apply/users/tests/test_views.py b/hypha/apply/users/tests/test_views.py index a1bea58c49ca8ad035a910cffa32cff44a35c8e3..52f70dbc6a04496f6f46c8ffa2c638bcf0fe9ade 100644 --- a/hypha/apply/users/tests/test_views.py +++ b/hypha/apply/users/tests/test_views.py @@ -74,9 +74,9 @@ class TestBecome(TestCase): response = self.client.post(url, {'user_pk': target.pk}, follow=True, secure=True) return response - def test_staff_can_become_user(self): + def test_staff_cannot_become_user(self): response = self.become_request(self.staff, self.user) - self.assertEqual(response.status_code, 200) + self.assertEqual(response.status_code, 403) def test_staff_cannot_become_superuser(self): response = self.become_request(self.staff, self.superuser) diff --git a/hypha/apply/users/urls.py b/hypha/apply/users/urls.py index eaea2ed6784a6c2e84ee5de7e3e11450539fcfe4..ec4e26546911823f463da082bc1143c8ec336a1e 100644 --- a/hypha/apply/users/urls.py +++ b/hypha/apply/users/urls.py @@ -1,3 +1,4 @@ +from django.conf import settings from django.contrib.auth import views as auth_views from django.urls import include, path, reverse_lazy @@ -8,8 +9,11 @@ from .views import ( EmailChangeDoneView, EmailChangePasswordView, LoginView, + TWOFAAdminDisableView, TWOFABackupTokensPasswordView, TWOFADisableView, + TWOFARequiredMessageView, + TWOFASetupView, become, create_password, oauth, @@ -36,7 +40,6 @@ public_urlpatterns = [ urlpatterns = [ path('account/', include([ path('', AccountView.as_view(), name='account'), - path('become/', become, name='become'), path('password/', include([ path('', EmailChangePasswordView.as_view(), name='email_change_confirm_password'), path( @@ -83,11 +86,20 @@ urlpatterns = [ ActivationView.as_view(), name='activate' ), + # Two factor redirect + path('two_factor/required/', TWOFARequiredMessageView.as_view(), name='two_factor_required'), + path('two_factor/setup/', TWOFASetupView.as_view(), name='setup'), path('two_factor/backup_tokens/password/', TWOFABackupTokensPasswordView.as_view(), name='backup_tokens_password'), path('two_factor/disable/', TWOFADisableView.as_view(), name='disable'), + path('two_factor/admin/disable/<str:user_id>/', TWOFAAdminDisableView.as_view(), name='admin_disable'), path('confirmation/done/', EmailChangeDoneView.as_view(), name="confirm_link_sent"), path('confirmation/<uidb64>/<token>/', EmailChangeConfirmationView.as_view(), name="confirm_email"), path('activate/', create_password, name="activate_password"), path('oauth', oauth, name='oauth'), ])), ] + +if settings.HIJACK_ENABLE: + urlpatterns += [ + path('account/become/', become, name='become'), + ] diff --git a/hypha/apply/users/utils.py b/hypha/apply/users/utils.py index d3553d65537b8d48ddde1b5114741c5b2b2fc3ea..0fc69fd8604519ee7218182c6f992b383f683256 100644 --- a/hypha/apply/users/utils.py +++ b/hypha/apply/users/utils.py @@ -34,13 +34,16 @@ def send_activation_email(user, site=None): activation_path = reverse('users:activate', kwargs={'uidb64': uid, 'token': token}) + timeout_days = settings.PASSWORD_RESET_TIMEOUT // (24 * 3600) + context = { 'user': user, 'name': user.get_full_name(), 'username': user.get_username(), 'activation_path': activation_path, - 'timeout_days': settings.PASSWORD_RESET_TIMEOUT, + 'timeout_days': timeout_days, 'org_long_name': settings.ORG_LONG_NAME, + 'org_short_name': settings.ORG_SHORT_NAME, } if site: @@ -63,14 +66,17 @@ def send_confirmation_email(user, token, updated_email=None, site=None): activation_path = reverse('users:confirm_email', kwargs={'uidb64': uid, 'token': token}) + timeout_days = settings.PASSWORD_RESET_TIMEOUT // (24 * 3600) + context = { 'user': user, 'name': user.get_full_name(), 'username': user.get_username(), 'unverified_email': updated_email, 'activation_path': activation_path, - 'timeout_days': settings.PASSWORD_RESET_TIMEOUT, + 'timeout_days': timeout_days, 'org_long_name': settings.ORG_LONG_NAME, + 'org_short_name': settings.ORG_SHORT_NAME, } if site: diff --git a/hypha/apply/users/views.py b/hypha/apply/users/views.py index a258c3f7419029dea8df19e04ae6be8b544bdde1..b020e2c6cfe1adbd735b43190e4ccd83cf636476 100644 --- a/hypha/apply/users/views.py +++ b/hypha/apply/users/views.py @@ -4,9 +4,10 @@ from urllib.parse import urlencode from django.conf import settings from django.contrib import messages from django.contrib.auth import get_user_model, login, update_session_auth_hash -from django.contrib.auth.decorators import login_required +from django.contrib.auth.decorators import login_required, permission_required from django.contrib.auth.forms import AdminPasswordChangeForm from django.contrib.auth.tokens import PasswordResetTokenGenerator +from django.contrib.sites.shortcuts import get_current_site from django.core.exceptions import PermissionDenied from django.core.signing import BadSignature, Signer, TimestampSigner, dumps, loads from django.shortcuts import Http404, get_object_or_404, redirect, render @@ -16,15 +17,21 @@ from django.utils.decorators import method_decorator from django.utils.encoding import force_str from django.utils.http import urlsafe_base64_decode from django.utils.translation import gettext_lazy as _ +from django.views.decorators.cache import never_cache from django.views.generic import UpdateView from django.views.generic.base import TemplateView from django.views.generic.edit import FormView +from django_otp import devices_for_user from hijack.views import AcquireUserView from two_factor.forms import AuthenticationTokenForm, BackupTokenForm +from two_factor.utils import default_device, get_otpauth_url, totp_digits +from two_factor.views import BackupTokensView as TwoFactorBackupTokensView from two_factor.views import DisableView as TwoFactorDisableView from two_factor.views import LoginView as TwoFactorLoginView +from two_factor.views import SetupView as TwoFactorSetupView from wagtail.admin.views.account import password_management_enabled from wagtail.core.models import Site +from wagtail.users.views.users import change_user_perm from hypha.apply.home.models import ApplyHomePage @@ -89,7 +96,7 @@ class AccountView(UpdateView): return reverse_lazy('users:account') def get_context_data(self, **kwargs): - if self.request.user.is_superuser: + if self.request.user.is_superuser and settings.HIJACK_ENABLE: swappable_form = BecomeUserForm() else: swappable_form = None @@ -98,6 +105,7 @@ class AccountView(UpdateView): return super().get_context_data( swappable_form=swappable_form, + default_device=default_device(self.request.user), show_change_password=show_change_password, **kwargs, ) @@ -159,7 +167,10 @@ class EmailChangeDoneView(TemplateView): @login_required() def become(request): - if not request.user.is_apply_staff: + if not settings.HIJACK_ENABLE: + raise Http404(_('Hijack feature is not enabled.')) + + if not request.user.is_superuser: raise PermissionDenied() id = request.POST.get('user_pk') @@ -199,7 +210,7 @@ class EmailChangeConfirmationView(TemplateView): try: unsigned_value = signer.unsign( token, - max_age=datetime.timedelta(days=settings.PASSWORD_RESET_TIMEOUT) + max_age=datetime.timedelta(seconds=settings.PASSWORD_RESET_TIMEOUT) ) except Exception: return False @@ -276,8 +287,33 @@ def create_password(request): }) +@method_decorator(never_cache, name='dispatch') @method_decorator(login_required, name='dispatch') -class TWOFABackupTokensPasswordView(FormView): +class TWOFASetupView(TwoFactorSetupView): + def get_issuer(self): + return get_current_site(self.request).name + + def get_context_data(self, form, **kwargs): + context = super().get_context_data(form, **kwargs) + if self.steps.current == 'generator': + try: + username = self.request.user.get_username() + except AttributeError: + username = self.request.user.username + + otpauth_url = get_otpauth_url(accountname=username, + issuer=self.get_issuer(), + secret=context['secret_key'], + digits=totp_digits()) + context.update({ + 'otpauth_url': otpauth_url, + }) + + return context + + +@method_decorator(login_required, name='dispatch') +class TWOFABackupTokensPasswordView(TwoFactorBackupTokensView): """ Require password to see backup codes """ @@ -304,3 +340,43 @@ class TWOFADisableView(TwoFactorDisableView): kwargs = super().get_form_kwargs() kwargs['user'] = self.request.user return kwargs + + +@method_decorator(permission_required(change_user_perm, raise_exception=True), name='dispatch') +class TWOFAAdminDisableView(FormView): + """ + View for PasswordForm to confirm the Disable 2FA process on wagtail admin. + """ + form_class = TWOFAPasswordForm + template_name = 'two_factor/admin/disable.html' + user = None + + def get_form_kwargs(self): + kwargs = super().get_form_kwargs() + # pass request's user to form to validate the password + kwargs['user'] = self.request.user + # store the user from url for redirecting to the same user's account edit page + self.user = get_object_or_404(User, pk=self.kwargs.get('user_id')) + return kwargs + + def get_form(self, form_class=None): + form = super(TWOFAAdminDisableView, self).get_form(form_class=form_class) + form.fields['password'].label = "Password" + return form + + def form_valid(self, form): + for device in devices_for_user(self.user): + device.delete() + return redirect(self.get_success_url()) + + def get_success_url(self): + return reverse('wagtailusers_users:edit', kwargs={'user_id': self.user.id}) + + def get_context_data(self, **kwargs): + ctx = super(TWOFAAdminDisableView, self).get_context_data(**kwargs) + ctx['user'] = self.user + return ctx + + +class TWOFARequiredMessageView(TemplateView): + template_name = 'two_factor/core/two_factor_required.html' diff --git a/hypha/apply/users/wagtail_hooks.py b/hypha/apply/users/wagtail_hooks.py index ea7b6e59b7a2bed712eabf37e0393ad457a6562c..b3dfc4512ec4f8cee46a55d2069980a59fd6c66e 100644 --- a/hypha/apply/users/wagtail_hooks.py +++ b/hypha/apply/users/wagtail_hooks.py @@ -10,6 +10,7 @@ from .admin_views import index def register_admin_urls(): return [ re_path(r'^users/$', index, name='index'), + re_path(r'^groups/(\d+)/users/$', index, name='index'), ] diff --git a/hypha/apply/utils/notifications.py b/hypha/apply/utils/notifications.py index 13e403e4b1800de4ea94de5e90580cdcdbaf2e30..8b6930af1cf1e7004055709910b3726915c729aa 100644 --- a/hypha/apply/utils/notifications.py +++ b/hypha/apply/utils/notifications.py @@ -1,11 +1,15 @@ -import requests +import logging + from django.conf import settings +from django_slack import slack_message + +logger = logging.getLogger(__name__) class SlackNotifications(): def __init__(self): - self.destination = settings.SLACK_DESTINATION_URL + self.destination = settings.SLACK_ENDPOINT_URL self.target_room = settings.SLACK_DESTINATION_ROOM def __call__(self, *args, recipients=None, related=None, **kwargs): @@ -29,12 +33,14 @@ class SlackNotifications(): return f'<{link}|{title}>' def send_message(self, message, request, recipients=None, related=None, **kwargs): - if not self.destination or not self.target_room: + if not self.destination or not self.target_room or not settings.SLACK_TOKEN: errors = list() if not self.destination: errors.append('Destination URL') if not self.target_room: errors.append('Room ID') + if not settings.SLACK_TOKEN: + errors.append('Slack Token') return 'Missing configuration: {}'.format(', '.join(errors)) slack_users = self.slack_users(recipients) if recipients else '' @@ -44,12 +50,14 @@ class SlackNotifications(): message = ' '.join([slack_users, message, slack_link]).strip() data = { - "room": self.target_room, "message": message, } - response = requests.post(self.destination, json=data) - - return str(response.status_code) + ': ' + response.content.decode() + try: + slack_message('messages/slack_message.html', data, channel=self.target_room) + return '200: OK' + except Exception as e: + logger.exception(e) + return '400: Bad Request' slack_notify = SlackNotifications() diff --git a/hypha/locale/django.pot b/hypha/locale/django.pot index 01dd00ea562bf27881ef15fbca64051af40171f2..cdfd16abba1cae348bae741b71d6f3a0111cd7e8 100644 --- a/hypha/locale/django.pot +++ b/hypha/locale/django.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-11-09 10:44+0000\n" +"POT-Creation-Date: 2022-04-29 14:22+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -18,418 +18,418 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" -#: hypha/apply/activity/messaging.py:39 +#: hypha/apply/activity/messaging.py:53 #, python-brace-format msgid " as {role}" msgstr "" -#: hypha/apply/activity/messaging.py:228 +#: hypha/apply/activity/messaging.py:242 #, python-brace-format msgid "Submitted {source.title} for {source.page.title}" msgstr "" -#: hypha/apply/activity/messaging.py:229 hypha/apply/activity/messaging.py:230 +#: hypha/apply/activity/messaging.py:243 hypha/apply/activity/messaging.py:244 msgid "Edited" msgstr "" -#: hypha/apply/activity/messaging.py:231 hypha/apply/activity/messaging.py:245 +#: hypha/apply/activity/messaging.py:245 hypha/apply/activity/messaging.py:259 #, python-brace-format msgid "Lead changed from {old_lead} to {source.lead}" msgstr "" -#: hypha/apply/activity/messaging.py:232 +#: hypha/apply/activity/messaging.py:246 #, python-brace-format msgid "Batch Lead changed to {new_lead}" msgstr "" -#: hypha/apply/activity/messaging.py:233 +#: hypha/apply/activity/messaging.py:247 #, python-brace-format msgid "Sent a determination. Outcome: {determination.clean_outcome}" msgstr "" -#: hypha/apply/activity/messaging.py:235 +#: hypha/apply/activity/messaging.py:249 msgid "Invited to submit a proposal" msgstr "" -#: hypha/apply/activity/messaging.py:239 +#: hypha/apply/activity/messaging.py:253 msgid "Submitted a review" msgstr "" -#: hypha/apply/activity/messaging.py:240 +#: hypha/apply/activity/messaging.py:254 msgid "Opened the submission while still sealed" msgstr "" -#: hypha/apply/activity/messaging.py:242 +#: hypha/apply/activity/messaging.py:256 #, python-brace-format msgid "" "{user} {opinion.opinion_display}s with {opinion.review.author}s review of " "{source}" msgstr "" -#: hypha/apply/activity/messaging.py:243 +#: hypha/apply/activity/messaging.py:257 msgid "Created" msgstr "" -#: hypha/apply/activity/messaging.py:244 +#: hypha/apply/activity/messaging.py:258 #, python-brace-format msgid "Progressed from {old_stage} to {source.status_display}" msgstr "" -#: hypha/apply/activity/messaging.py:246 +#: hypha/apply/activity/messaging.py:260 msgid "Requested approval" msgstr "" -#: hypha/apply/activity/messaging.py:247 +#: hypha/apply/activity/messaging.py:261 #: hypha/apply/determinations/options.py:12 msgid "Approved" msgstr "" -#: hypha/apply/activity/messaging.py:248 +#: hypha/apply/activity/messaging.py:262 #, python-brace-format msgid "Requested changes for acceptance: \"{comment}\"" msgstr "" -#: hypha/apply/activity/messaging.py:249 +#: hypha/apply/activity/messaging.py:263 #, python-brace-format msgid "Uploaded a {contract.state} contract" msgstr "" -#: hypha/apply/activity/messaging.py:250 +#: hypha/apply/activity/messaging.py:264 msgid "Approved contract" msgstr "" -#: hypha/apply/activity/messaging.py:251 -#, python-brace-format -msgid "Updated Invoice status to: {invoice.status_display}" -msgstr "" - -#: hypha/apply/activity/messaging.py:252 +#: hypha/apply/activity/messaging.py:266 msgid "Invoice created" msgstr "" -#: hypha/apply/activity/messaging.py:253 +#: hypha/apply/activity/messaging.py:267 msgid "Submitted a report" msgstr "" -#: hypha/apply/activity/messaging.py:284 +#: hypha/apply/activity/messaging.py:298 msgid "Reviewers updated." msgstr "" -#: hypha/apply/activity/messaging.py:286 hypha/apply/activity/messaging.py:356 -#: hypha/apply/activity/messaging.py:513 +#: hypha/apply/activity/messaging.py:300 hypha/apply/activity/messaging.py:370 +#: hypha/apply/activity/messaging.py:552 msgid "Added:" msgstr "" -#: hypha/apply/activity/messaging.py:290 hypha/apply/activity/messaging.py:360 -#: hypha/apply/activity/messaging.py:517 +#: hypha/apply/activity/messaging.py:304 hypha/apply/activity/messaging.py:374 +#: hypha/apply/activity/messaging.py:556 msgid "Removed:" msgstr "" -#: hypha/apply/activity/messaging.py:296 +#: hypha/apply/activity/messaging.py:310 msgid "Batch Reviewers Updated." msgstr "" -#: hypha/apply/activity/messaging.py:298 +#: hypha/apply/activity/messaging.py:312 #, python-brace-format msgid "{user} as {name}." msgstr "" -#: hypha/apply/activity/messaging.py:316 +#: hypha/apply/activity/messaging.py:330 #, python-brace-format msgid "Successfully deleted submissions: {title}" msgstr "" -#: hypha/apply/activity/messaging.py:320 +#: hypha/apply/activity/messaging.py:334 #, python-brace-format msgid "Progressed from {old_display} to {new_display}" msgstr "" -#: hypha/apply/activity/messaging.py:354 +#: hypha/apply/activity/messaging.py:368 msgid "Partners updated." msgstr "" -#: hypha/apply/activity/messaging.py:367 +#: hypha/apply/activity/messaging.py:381 #, python-brace-format msgid "" "Updated reporting frequency. New schedule is: {new_schedule} starting on " "{schedule_start}" msgstr "" -#: hypha/apply/activity/messaging.py:405 +#: hypha/apply/activity/messaging.py:390 +#, python-brace-format +msgid "Updated Invoice status to: {status}." +msgstr "" + +#: hypha/apply/activity/messaging.py:423 #, python-brace-format msgid "Screening status from {old_status} to {new_status}" msgstr "" -#: hypha/apply/activity/messaging.py:412 +#: hypha/apply/activity/messaging.py:430 #, python-brace-format msgid "" "A new submission has been submitted for {source.page.title}: <{link}|{source." "title}>" msgstr "" -#: hypha/apply/activity/messaging.py:413 +#: hypha/apply/activity/messaging.py:431 #, python-brace-format msgid "" "The lead of <{link}|{source.title}> has been updated from {old_lead} to " "{source.lead} by {user}" msgstr "" -#: hypha/apply/activity/messaging.py:415 +#: hypha/apply/activity/messaging.py:433 #, python-brace-format msgid "" "A new {comment.visibility} comment has been posted on <{link}|{source.title}" "> by {user}" msgstr "" -#: hypha/apply/activity/messaging.py:416 hypha/apply/activity/messaging.py:417 +#: hypha/apply/activity/messaging.py:434 hypha/apply/activity/messaging.py:435 #, python-brace-format msgid "{user} has edited <{link}|{source.title}>" msgstr "" -#: hypha/apply/activity/messaging.py:420 +#: hypha/apply/activity/messaging.py:438 #, python-brace-format msgid "{user} has updated the partners on <{link}|{source.title}>" msgstr "" -#: hypha/apply/activity/messaging.py:421 +#: hypha/apply/activity/messaging.py:439 #, python-brace-format msgid "" "{user} has updated the status of <{link}|{source.title}>: {old_phase." "display_name} → {source.phase}" msgstr "" -#: hypha/apply/activity/messaging.py:425 +#: hypha/apply/activity/messaging.py:443 #, python-brace-format msgid "A proposal has been submitted for review: <{link}|{source.title}>" msgstr "" -#: hypha/apply/activity/messaging.py:426 +#: hypha/apply/activity/messaging.py:444 #, python-brace-format msgid "" "<{link}|{source.title}> by {source.user} has been invited to submit a " "proposal" msgstr "" -#: hypha/apply/activity/messaging.py:427 +#: hypha/apply/activity/messaging.py:445 #, python-brace-format msgid "" "{user} has submitted a review for <{link}|{source.title}>. Outcome: {review." "outcome}, Score: {review.get_score_display}" msgstr "" -#: hypha/apply/activity/messaging.py:429 +#: hypha/apply/activity/messaging.py:447 #, python-brace-format msgid "{user} has opened the sealed submission: <{link}|{source.title}>" msgstr "" -#: hypha/apply/activity/messaging.py:430 +#: hypha/apply/activity/messaging.py:448 #, python-brace-format msgid "" "{user} {opinion.opinion_display}s with {opinion.review.author}s review of " "{source.title}" msgstr "" -#: hypha/apply/activity/messaging.py:432 +#: hypha/apply/activity/messaging.py:450 #, python-brace-format msgid "{user} has deleted {source.title}" msgstr "" -#: hypha/apply/activity/messaging.py:433 +#: hypha/apply/activity/messaging.py:451 #, python-brace-format msgid "{user} has deleted {review.author} review for <{link}|{source.title}>." msgstr "" -#: hypha/apply/activity/messaging.py:434 +#: hypha/apply/activity/messaging.py:452 #, python-brace-format msgid "{user} has created a Project: <{link}|{source.title}>." msgstr "" -#: hypha/apply/activity/messaging.py:435 +#: hypha/apply/activity/messaging.py:453 #, python-brace-format msgid "" "The lead of project <{link}|{source.title}> has been updated from {old_lead} " "to {source.lead} by {user}" msgstr "" -#: hypha/apply/activity/messaging.py:436 +#: hypha/apply/activity/messaging.py:454 #, python-brace-format msgid "{user} has edited {review.author} review for <{link}|{source.title}>." msgstr "" -#: hypha/apply/activity/messaging.py:437 +#: hypha/apply/activity/messaging.py:455 #, python-brace-format msgid "{user} has requested approval on project <{link}|{source.title}>." msgstr "" -#: hypha/apply/activity/messaging.py:438 +#: hypha/apply/activity/messaging.py:456 #, python-brace-format msgid "{user} has approved project <{link}|{source.title}>." msgstr "" -#: hypha/apply/activity/messaging.py:439 +#: hypha/apply/activity/messaging.py:457 #, python-brace-format msgid "" "{user} has requested changes for project acceptance on <{link}|{source.title}" ">." msgstr "" -#: hypha/apply/activity/messaging.py:440 +#: hypha/apply/activity/messaging.py:458 #, python-brace-format msgid "{user} has uploaded a contract for <{link}|{source.title}>." msgstr "" -#: hypha/apply/activity/messaging.py:441 +#: hypha/apply/activity/messaging.py:459 #, python-brace-format msgid "{user} has approved contract for <{link}|{source.title}>." msgstr "" -#: hypha/apply/activity/messaging.py:442 +#: hypha/apply/activity/messaging.py:460 #, python-brace-format msgid "{user} has created invoice for <{link}|{source.title}>." msgstr "" -#: hypha/apply/activity/messaging.py:443 +#: hypha/apply/activity/messaging.py:461 #, python-brace-format msgid "" "{user} has changed the status of <{link_related}|invoice> on <{link}|{source." "title}> to {invoice.status_display}." msgstr "" -#: hypha/apply/activity/messaging.py:444 +#: hypha/apply/activity/messaging.py:462 #, python-brace-format msgid "{user} has deleted invoice from <{link}|{source.title}>." msgstr "" -#: hypha/apply/activity/messaging.py:445 +#: hypha/apply/activity/messaging.py:463 #, python-brace-format msgid "{user} has updated invoice for <{link}|{source.title}>." msgstr "" -#: hypha/apply/activity/messaging.py:446 +#: hypha/apply/activity/messaging.py:464 #, python-brace-format msgid "{user} has submitted a report for <{link}|{source.title}>." msgstr "" -#: hypha/apply/activity/messaging.py:510 +#: hypha/apply/activity/messaging.py:549 #, python-brace-format msgid "{user} has updated the reviewers on <{link}|{title}>." msgstr "" -#: hypha/apply/activity/messaging.py:526 +#: hypha/apply/activity/messaging.py:565 #, python-brace-format msgid "{user} has batch changed lead to {new_lead} on: {submissions_text}" msgstr "" -#: hypha/apply/activity/messaging.py:537 hypha/apply/activity/messaging.py:973 +#: hypha/apply/activity/messaging.py:576 hypha/apply/activity/messaging.py:1018 #, python-brace-format msgid "{user} as {name}," msgstr "" -#: hypha/apply/activity/messaging.py:542 +#: hypha/apply/activity/messaging.py:581 #, python-brace-format msgid "" "{user} has batch added {reviewers_text} as reviewers on: {submissions_text}" msgstr "" -#: hypha/apply/activity/messaging.py:560 +#: hypha/apply/activity/messaging.py:599 #, python-brace-format msgid "{user} has transitioned the following submissions: {submissions_links}" msgstr "" -#: hypha/apply/activity/messaging.py:570 +#: hypha/apply/activity/messaging.py:609 #, python-brace-format msgid "" "A determination for <{link}|{submission_title}> was sent by email. Outcome: " "{determination_outcome}" msgstr "" -#: hypha/apply/activity/messaging.py:577 +#: hypha/apply/activity/messaging.py:616 #, python-brace-format msgid "" "A determination for <{link}|{submission_title}> was saved without sending an " "email. Outcome: {determination_outcome}" msgstr "" -#: hypha/apply/activity/messaging.py:594 +#: hypha/apply/activity/messaging.py:633 #, python-brace-format msgid "Determinations of {outcome} was sent for: {submissions_links}" msgstr "" -#: hypha/apply/activity/messaging.py:603 +#: hypha/apply/activity/messaging.py:642 #, python-brace-format msgid "{user} has deleted submissions: {title}" msgstr "" -#: hypha/apply/activity/messaging.py:617 +#: hypha/apply/activity/messaging.py:656 #, python-brace-format msgid "" "<{link}|{title}> is ready for review. The following are assigned as " "reviewers: {reviewers}" msgstr "" -#: hypha/apply/activity/messaging.py:732 +#: hypha/apply/activity/messaging.py:771 #, python-brace-format msgid "Application ready to review: {source.title}" msgstr "" -#: hypha/apply/activity/messaging.py:734 +#: hypha/apply/activity/messaging.py:773 msgid "Multiple applications are now ready for your review" msgstr "" -#: hypha/apply/activity/messaging.py:736 +#: hypha/apply/activity/messaging.py:775 #, python-brace-format msgid "Reminder: Application ready to review: {source.title}" msgstr "" -#: hypha/apply/activity/messaging.py:739 +#: hypha/apply/activity/messaging.py:778 #, python-brace-format msgid "Your application to {org_long_name}: {source.title}" msgstr "" -#: hypha/apply/activity/messaging.py:741 +#: hypha/apply/activity/messaging.py:780 #, python-brace-format msgid "Your {org_long_name} Project: {source.title}" msgstr "" -#: hypha/apply/activity/messaging.py:963 +#: hypha/apply/activity/messaging.py:1008 msgid "Successfully uploaded document" msgstr "" -#: hypha/apply/activity/messaging.py:964 +#: hypha/apply/activity/messaging.py:1009 msgid "Successfully removed document" msgstr "" -#: hypha/apply/activity/messaging.py:967 +#: hypha/apply/activity/messaging.py:1012 msgid "Reminder created" msgstr "" -#: hypha/apply/activity/messaging.py:968 +#: hypha/apply/activity/messaging.py:1013 msgid "Reminder deleted" msgstr "" -#: hypha/apply/activity/messaging.py:979 +#: hypha/apply/activity/messaging.py:1024 #, python-brace-format msgid "Batch reviewers added: {reviewers_text} to " msgstr "" -#: hypha/apply/activity/messaging.py:984 +#: hypha/apply/activity/messaging.py:1029 #, python-brace-format msgid "" "Successfully updated reporting frequency. They will now report " "{new_schedule} starting on {schedule_start}" msgstr "" -#: hypha/apply/activity/messaging.py:988 +#: hypha/apply/activity/messaging.py:1033 #, python-brace-format msgid "Successfully skipped a Report for {start_date} to {end_date}" msgstr "" -#: hypha/apply/activity/messaging.py:990 +#: hypha/apply/activity/messaging.py:1035 #, python-brace-format msgid "Successfully unskipped a Report for {start_date} to {end_date}" msgstr "" -#: hypha/apply/activity/messaging.py:1009 +#: hypha/apply/activity/messaging.py:1054 #, python-brace-format msgid "Successfully determined as {outcome}: " msgstr "" @@ -478,6 +478,7 @@ msgstr "" #: hypha/apply/activity/templates/messages/email/base.html:2 #: hypha/apply/users/templates/users/activation/email.txt:5 +#: hypha/apply/users/templates/users/email_change/confirm_email.txt:5 #, python-format msgid "Dear %(user)s," msgstr "" @@ -504,7 +505,7 @@ msgstr "" #: hypha/apply/activity/templates/messages/email/batch_ready_to_review.html:10 #: hypha/apply/activity/templates/messages/email/contract_uploaded.html:7 -#: hypha/apply/activity/templates/messages/email/invoice_status_updated.html:14 +#: hypha/apply/activity/templates/messages/email/invoice_status_updated.html:16 #: hypha/apply/activity/templates/messages/email/invoice_updated.html:9 #: hypha/apply/activity/templates/messages/email/partners_update_applicant.html:9 #: hypha/apply/activity/templates/messages/email/partners_update_partner.html:9 @@ -518,7 +519,6 @@ msgstr "" #: hypha/apply/activity/templates/messages/email/batch_ready_to_review.html:11 #: hypha/apply/activity/templates/messages/email/contract_uploaded.html:8 -#: hypha/apply/activity/templates/messages/email/invoice_status_updated.html:15 #: hypha/apply/activity/templates/messages/email/invoice_updated.html:10 #: hypha/apply/activity/templates/messages/email/partners_update_applicant.html:10 #: hypha/apply/activity/templates/messages/email/partners_update_partner.html:10 @@ -598,16 +598,24 @@ msgid "" "for period %(date_from)s to %(date_to)s." msgstr "" -#: hypha/apply/activity/templates/messages/email/invoice_status_updated.html:6 +#: hypha/apply/activity/templates/messages/email/invoice_status_updated.html:7 #: hypha/apply/activity/templates/messages/email/invoice_updated.html:7 #, python-format msgid "It is now %(status)s." msgstr "" -#: hypha/apply/activity/templates/messages/email/invoice_status_updated.html:9 +#: hypha/apply/activity/templates/messages/email/invoice_status_updated.html:10 msgid "The staff member left this comment" msgstr "" +#: hypha/apply/activity/templates/messages/email/invoice_status_updated.html:15 +msgid "Invoice Link" +msgstr "" + +#: hypha/apply/activity/templates/messages/email/invoice_status_updated.html:17 +msgid "Project Link" +msgstr "" + #: hypha/apply/activity/templates/messages/email/partners_update_applicant.html:5 msgid "New partner(s) has been added to your submission." msgstr "" @@ -740,13 +748,13 @@ msgid "Contracting Information has been updated on %(title)s." msgstr "" #: hypha/apply/api/v1/determination/utils.py:25 -#: hypha/apply/determinations/forms.py:106 +#: hypha/apply/determinations/forms.py:108 #: hypha/apply/determinations/views.py:93 msgid "-- No determination selected -- " msgstr "" #: hypha/apply/api/v1/filters.py:23 hypha/apply/funds/tables.py:416 -#: hypha/apply/users/templates/wagtailusers/users/list.html:46 +#: hypha/apply/users/templates/wagtailusers/users/list.html:48 msgid "Active" msgstr "" @@ -770,19 +778,21 @@ msgstr "" msgid "Not found" msgstr "" -#: hypha/apply/api/v1/projects/views.py:39 +#: hypha/apply/api/v1/projects/views.py:50 msgid "Not Found" msgstr "" -#: hypha/apply/api/v1/projects/views.py:45 +#: hypha/apply/api/v1/projects/views.py:56 msgid "Invoice Already has this deliverable" msgstr "" -#: hypha/apply/api/v1/projects/views.py:48 +#: hypha/apply/api/v1/projects/views.py:59 msgid "Required quantity is more than available" msgstr "" -#: hypha/apply/categories/blocks.py:34 hypha/apply/stream_forms/blocks.py:36 +#: hypha/apply/categories/blocks.py:34 hypha/apply/funds/blocks.py:30 +#: hypha/apply/funds/blocks.py:53 hypha/apply/funds/blocks.py:102 +#: hypha/apply/stream_forms/blocks.py:36 msgid "Label" msgstr "" @@ -790,11 +800,17 @@ msgstr "" msgid "Leave blank to use the default Category label" msgstr "" -#: hypha/apply/categories/blocks.py:40 +#: hypha/apply/categories/blocks.py:39 hypha/apply/funds/blocks.py:31 +#: hypha/apply/funds/blocks.py:54 hypha/apply/funds/blocks.py:103 +#: hypha/apply/stream_forms/blocks.py:37 +msgid "Help text" +msgstr "" + +#: hypha/apply/categories/blocks.py:41 msgid "Leave blank to use the default Category help text" msgstr "" -#: hypha/apply/categories/blocks.py:43 +#: hypha/apply/categories/blocks.py:44 msgid "Multi select" msgstr "" @@ -877,7 +893,11 @@ msgstr "" #: hypha/apply/funds/templates/funds/applicationsubmission_detail.html:70 #: hypha/apply/funds/templates/funds/applicationsubmission_simplified_detail.html:33 #: hypha/apply/funds/templates/funds/includes/revision_diff_table.html:4 -#: hypha/apply/projects/models/payment.py:21 hypha/apply/projects/tables.py:21 +#: hypha/apply/projects/models/payment.py:31 hypha/apply/projects/tables.py:23 +#: hypha/apply/projects/templates/application_projects/includes/invoices.html:15 +#: hypha/apply/projects/templates/application_projects/includes/invoices.html:24 +#: hypha/apply/projects/templates/application_projects/includes/invoices.html:60 +#: hypha/apply/projects/templates/application_projects/includes/invoices.html:69 #: hypha/apply/projects/templates/application_projects/includes/reports.html:63 #: hypha/apply/projects/templates/application_projects/includes/reports.html:74 msgid "Submitted" @@ -919,11 +939,10 @@ msgstr "" #: hypha/apply/determinations/templates/determinations/determination_detail.html:25 #: hypha/apply/funds/templates/funds/admin/widgets/read_only.html:2 #: hypha/apply/funds/templates/funds/applicationsubmission_detail.html:81 -#: hypha/apply/funds/templates/funds/applicationsubmission_detail.html:86 #: hypha/apply/projects/templates/application_projects/includes/reports.html:81 -#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:32 -#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:56 -#: hypha/apply/projects/templates/application_projects/invoice_detail.html:57 +#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:34 +#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:58 +#: hypha/apply/projects/templates/application_projects/invoice_detail.html:59 #: hypha/apply/projects/templates/application_projects/invoice_form.html:4 #: hypha/apply/projects/templates/application_projects/report_detail.html:59 #: hypha/apply/projects/templates/application_projects/vendor_detail.html:23 @@ -966,53 +985,54 @@ msgid "No submissions" msgstr "" #: hypha/apply/dashboard/templates/dashboard/community_dashboard.html:38 -#: hypha/apply/dashboard/templates/dashboard/dashboard.html:106 +#: hypha/apply/dashboard/templates/dashboard/dashboard.html:108 #: hypha/apply/dashboard/templates/dashboard/reviewer_dashboard.html:35 msgid "Your previous reviews" msgstr "" -#: hypha/apply/dashboard/templates/dashboard/dashboard.html:18 +#: hypha/apply/dashboard/templates/dashboard/dashboard.html:19 #: hypha/apply/dashboard/templates/dashboard/finance_dashboard.html:14 msgid "Apply admin" msgstr "" -#: hypha/apply/dashboard/templates/dashboard/dashboard.html:30 +#: hypha/apply/dashboard/templates/dashboard/dashboard.html:32 msgid "Submissions waiting for your review" msgstr "" -#: hypha/apply/dashboard/templates/dashboard/dashboard.html:32 -#: hypha/apply/dashboard/templates/dashboard/dashboard.html:39 -#: hypha/apply/dashboard/templates/dashboard/dashboard.html:47 -#: hypha/apply/dashboard/templates/dashboard/dashboard.html:55 +#: hypha/apply/dashboard/templates/dashboard/dashboard.html:34 +#: hypha/apply/dashboard/templates/dashboard/dashboard.html:41 +#: hypha/apply/dashboard/templates/dashboard/dashboard.html:49 +#: hypha/apply/dashboard/templates/dashboard/dashboard.html:57 #: hypha/apply/funds/templates/funds/includes/round-block-listing.html:23 #: hypha/apply/funds/templates/funds/includes/status-block.html:10 #: hypha/apply/projects/templates/application_projects/includes/invoices.html:72 #: hypha/apply/projects/templates/application_projects/includes/reports.html:78 -#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:16 -#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:39 -#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:64 +#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:17 +#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:19 +#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:41 +#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:66 msgid "View" msgstr "" -#: hypha/apply/dashboard/templates/dashboard/dashboard.html:37 +#: hypha/apply/dashboard/templates/dashboard/dashboard.html:39 msgid "Live projects under your management" msgstr "" -#: hypha/apply/dashboard/templates/dashboard/dashboard.html:45 -#: hypha/apply/dashboard/templates/dashboard/dashboard.html:92 +#: hypha/apply/dashboard/templates/dashboard/dashboard.html:47 +#: hypha/apply/dashboard/templates/dashboard/dashboard.html:94 msgid "Projects awaiting approval" msgstr "" -#: hypha/apply/dashboard/templates/dashboard/dashboard.html:53 +#: hypha/apply/dashboard/templates/dashboard/dashboard.html:55 msgid "Requests for invoices requiring your attention" msgstr "" -#: hypha/apply/dashboard/templates/dashboard/dashboard.html:77 +#: hypha/apply/dashboard/templates/dashboard/dashboard.html:79 msgid "Your projects" msgstr "" -#: hypha/apply/dashboard/templates/dashboard/dashboard.html:83 -#: hypha/apply/dashboard/templates/dashboard/dashboard.html:112 +#: hypha/apply/dashboard/templates/dashboard/dashboard.html:85 +#: hypha/apply/dashboard/templates/dashboard/dashboard.html:114 #: hypha/apply/dashboard/templates/dashboard/includes/flagged.html:12 #: hypha/apply/dashboard/templates/dashboard/includes/waiting-for-review.html:13 #: hypha/apply/dashboard/templates/dashboard/reviewer_dashboard.html:41 @@ -1025,7 +1045,7 @@ msgstr "" msgid "Show all" msgstr "" -#: hypha/apply/dashboard/templates/dashboard/dashboard.html:99 +#: hypha/apply/dashboard/templates/dashboard/dashboard.html:101 #: hypha/apply/dashboard/templates/dashboard/finance_dashboard.html:21 msgid "Active Invoices" msgstr "" @@ -1064,12 +1084,11 @@ msgstr "" #: hypha/apply/determinations/blocks.py:65 #: hypha/apply/determinations/blocks.py:66 #: hypha/apply/determinations/blocks.py:67 -#: hypha/apply/determinations/blocks.py:68 hypha/apply/funds/blocks.py:184 +#: hypha/apply/determinations/blocks.py:68 hypha/apply/funds/blocks.py:193 #: hypha/apply/review/blocks.py:160 hypha/apply/review/blocks.py:161 #: hypha/apply/review/blocks.py:162 hypha/apply/review/blocks.py:163 #: hypha/apply/review/blocks.py:164 hypha/apply/review/blocks.py:165 -#: hypha/apply/review/blocks.py:166 hypha/apply/stream_forms/blocks.py:467 -#: hypha/apply/stream_forms/blocks.py:468 +#: hypha/apply/review/blocks.py:166 hypha/apply/stream_forms/blocks.py:468 #: hypha/apply/stream_forms/blocks.py:469 #: hypha/apply/stream_forms/blocks.py:470 #: hypha/apply/stream_forms/blocks.py:471 @@ -1081,8 +1100,9 @@ msgstr "" #: hypha/apply/stream_forms/blocks.py:477 #: hypha/apply/stream_forms/blocks.py:478 #: hypha/apply/stream_forms/blocks.py:479 -#: hypha/apply/stream_forms/blocks.py:480 hypha/apply/utils/blocks.py:66 -#: hypha/apply/utils/blocks.py:67 +#: hypha/apply/stream_forms/blocks.py:480 +#: hypha/apply/stream_forms/blocks.py:481 hypha/apply/utils/blocks.py:76 +#: hypha/apply/utils/blocks.py:77 msgid "Fields" msgstr "" @@ -1090,161 +1110,161 @@ msgstr "" msgid "Section text/header" msgstr "" -#: hypha/apply/determinations/forms.py:170 -#: hypha/apply/determinations/forms.py:251 -#: hypha/apply/determinations/forms.py:507 -#: hypha/apply/determinations/models.py:102 +#: hypha/apply/determinations/forms.py:172 +#: hypha/apply/determinations/forms.py:253 +#: hypha/apply/determinations/forms.py:515 +#: hypha/apply/determinations/models.py:101 #: hypha/apply/determinations/templates/determinations/determination_detail.html:12 #: hypha/apply/determinations/templates/determinations/determination_detail.html:20 msgid "Determination" msgstr "" -#: hypha/apply/determinations/forms.py:176 -#: hypha/apply/determinations/forms.py:257 -#: hypha/apply/determinations/models.py:103 +#: hypha/apply/determinations/forms.py:178 +#: hypha/apply/determinations/forms.py:259 +#: hypha/apply/determinations/models.py:102 msgid "Determination message" msgstr "" -#: hypha/apply/determinations/forms.py:183 +#: hypha/apply/determinations/forms.py:185 msgid "Goals and principles" msgstr "" -#: hypha/apply/determinations/forms.py:203 +#: hypha/apply/determinations/forms.py:205 msgid "Technical merit" msgstr "" -#: hypha/apply/determinations/forms.py:218 +#: hypha/apply/determinations/forms.py:220 msgid "Reasonable, realistic and sustainable" msgstr "" -#: hypha/apply/determinations/forms.py:232 +#: hypha/apply/determinations/forms.py:234 msgid "Other comments" msgstr "" -#: hypha/apply/determinations/forms.py:265 +#: hypha/apply/determinations/forms.py:267 msgid "Positive aspects" msgstr "" -#: hypha/apply/determinations/forms.py:271 +#: hypha/apply/determinations/forms.py:273 msgid "Concerns" msgstr "" -#: hypha/apply/determinations/forms.py:277 +#: hypha/apply/determinations/forms.py:279 msgid "Items that must be addressed" msgstr "" -#: hypha/apply/determinations/forms.py:283 +#: hypha/apply/determinations/forms.py:285 msgid "Project overview questions and comments" msgstr "" -#: hypha/apply/determinations/forms.py:286 +#: hypha/apply/determinations/forms.py:288 msgid "Objectives questions and comments" msgstr "" -#: hypha/apply/determinations/forms.py:289 +#: hypha/apply/determinations/forms.py:291 msgid "Methods and strategy questions and comments" msgstr "" -#: hypha/apply/determinations/forms.py:292 +#: hypha/apply/determinations/forms.py:294 msgid "Technical feasibility questions and comments" msgstr "" -#: hypha/apply/determinations/forms.py:295 +#: hypha/apply/determinations/forms.py:297 msgid "Alternative analysis - \"red teaming\" questions and comments" msgstr "" -#: hypha/apply/determinations/forms.py:298 +#: hypha/apply/determinations/forms.py:300 msgid "Usability questions and comments" msgstr "" -#: hypha/apply/determinations/forms.py:301 +#: hypha/apply/determinations/forms.py:303 msgid "Sustainability questions and comments" msgstr "" -#: hypha/apply/determinations/forms.py:304 +#: hypha/apply/determinations/forms.py:306 msgid "Collaboration questions and comments" msgstr "" -#: hypha/apply/determinations/forms.py:307 +#: hypha/apply/determinations/forms.py:309 msgid "Cost realism questions and comments" msgstr "" -#: hypha/apply/determinations/forms.py:310 +#: hypha/apply/determinations/forms.py:312 msgid "Qualifications questions and comments" msgstr "" -#: hypha/apply/determinations/forms.py:313 +#: hypha/apply/determinations/forms.py:315 msgid "Evaluation questions and comments" msgstr "" -#: hypha/apply/determinations/forms.py:317 +#: hypha/apply/determinations/forms.py:319 msgid "Rationale and appropriateness questions and comments" msgstr "" -#: hypha/apply/determinations/forms.py:354 +#: hypha/apply/determinations/forms.py:359 #: hypha/apply/determinations/views.py:354 msgid "-- No proposal form selected -- " msgstr "" -#: hypha/apply/determinations/forms.py:356 +#: hypha/apply/determinations/forms.py:361 #: hypha/apply/determinations/views.py:356 msgid "Proposal Form" msgstr "" -#: hypha/apply/determinations/forms.py:358 +#: hypha/apply/determinations/forms.py:363 #: hypha/apply/determinations/views.py:358 msgid "Select the proposal form to use for proposal stage." msgstr "" -#: hypha/apply/determinations/models.py:110 +#: hypha/apply/determinations/models.py:109 #: hypha/apply/determinations/templates/determinations/includes/determination_block.html:7 #: hypha/apply/funds/workflow.py:205 hypha/apply/funds/workflow.py:332 #: hypha/apply/funds/workflow.py:487 hypha/apply/funds/workflow.py:666 -#: hypha/apply/review/models.py:162 +#: hypha/apply/review/models.py:161 msgid "Draft" msgstr "" -#: hypha/apply/determinations/models.py:111 -#: hypha/apply/projects/models/vendor.py:49 hypha/apply/review/models.py:163 +#: hypha/apply/determinations/models.py:110 +#: hypha/apply/projects/models/vendor.py:49 hypha/apply/review/models.py:162 msgid "Creation time" msgstr "" -#: hypha/apply/determinations/models.py:112 -#: hypha/apply/projects/models/vendor.py:50 hypha/apply/review/models.py:164 +#: hypha/apply/determinations/models.py:111 +#: hypha/apply/projects/models/vendor.py:50 hypha/apply/review/models.py:163 msgid "Update time" msgstr "" -#: hypha/apply/determinations/models.py:113 +#: hypha/apply/determinations/models.py:112 msgid "Send message to applicant" msgstr "" -#: hypha/apply/determinations/models.py:229 +#: hypha/apply/determinations/models.py:228 #: hypha/apply/projects/templates/application_projects/project_admin_detail.html:22 msgid "Request" msgstr "" -#: hypha/apply/determinations/models.py:230 +#: hypha/apply/determinations/models.py:229 msgid "Concept note" msgstr "" -#: hypha/apply/determinations/models.py:231 +#: hypha/apply/determinations/models.py:230 #: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:13 -#: hypha/apply/projects/templates/application_projects/project_detail.html:198 +#: hypha/apply/projects/templates/application_projects/project_detail.html:169 msgid "Proposal" msgstr "" -#: hypha/apply/determinations/models.py:351 +#: hypha/apply/determinations/models.py:350 msgid "Concept form" msgstr "" -#: hypha/apply/determinations/models.py:352 +#: hypha/apply/determinations/models.py:351 msgid "Proposal form" msgstr "" #: hypha/apply/determinations/options.py:10 hypha/apply/funds/workflow.py:315 #: hypha/apply/funds/workflow.py:469 hypha/apply/funds/workflow.py:648 #: hypha/apply/funds/workflow.py:769 hypha/apply/funds/workflow.py:923 -#: hypha/apply/funds/workflow.py:1145 +#: hypha/apply/funds/workflow.py:1155 msgid "Dismissed" msgstr "" @@ -1287,14 +1307,14 @@ msgstr "" #: hypha/apply/determinations/templates/determinations/base_determination_form.html:48 #: hypha/apply/funds/templates/funds/application_base.html:67 #: hypha/apply/funds/templates/funds/applicationsubmission_form.html:36 -#: hypha/apply/funds/views.py:939 +#: hypha/apply/funds/views.py:950 #: hypha/apply/review/templates/review/review_edit_form.html:40 #: hypha/apply/review/templates/review/review_form.html:41 msgid "Save draft" msgstr "" #: hypha/apply/determinations/templates/determinations/base_determination_form.html:50 -#: hypha/apply/funds/views.py:938 hypha/apply/funds/workflow.py:200 +#: hypha/apply/funds/views.py:949 hypha/apply/funds/workflow.py:200 #: hypha/apply/funds/workflow.py:228 hypha/apply/funds/workflow.py:271 #: hypha/apply/funds/workflow.py:327 hypha/apply/funds/workflow.py:353 #: hypha/apply/funds/workflow.py:391 hypha/apply/funds/workflow.py:429 @@ -1309,6 +1329,7 @@ msgstr "" #: hypha/apply/projects/templates/application_projects/vendor_form.html:27 #: hypha/apply/review/templates/review/review_edit_form.html:42 #: hypha/apply/review/templates/review/review_form.html:43 +#: hypha/apply/users/templates/users/email_change/confirm_password.html:35 msgid "Submit" msgstr "" @@ -1415,7 +1436,7 @@ msgstr "" msgid "There is a draft determination you do not have permission to edit." msgstr "" -#: hypha/apply/determinations/views.py:435 +#: hypha/apply/determinations/views.py:427 #, python-brace-format msgid "" "A determination of \"{current}\" exists but you tried to progress as " @@ -1461,51 +1482,75 @@ msgstr "" msgid "Closed" msgstr "" -#: hypha/apply/funds/admin_views.py:65 +#: hypha/apply/funds/admin_views.py:67 #, python-brace-format msgid "Page '{0}' and {1} subpages copied." msgstr "" -#: hypha/apply/funds/admin_views.py:70 +#: hypha/apply/funds/admin_views.py:72 #, python-brace-format msgid "Page '{0}' copied." msgstr "" -#: hypha/apply/funds/blocks.py:32 +#: hypha/apply/funds/blocks.py:30 +msgid "What is the title of your application?" +msgstr "" + +#: hypha/apply/funds/blocks.py:31 +msgid "This project name can be changed if a full proposal is requested." +msgstr "" + +#: hypha/apply/funds/blocks.py:34 msgid "Application title" msgstr "" -#: hypha/apply/funds/blocks.py:42 +#: hypha/apply/funds/blocks.py:44 msgid "Requested amount" msgstr "" -#: hypha/apply/funds/blocks.py:65 -#: hypha/apply/funds/templates/funds/includes/rendered_answers.html:27 +#: hypha/apply/funds/blocks.py:53 +msgid "What email address should we use to contact you?" +msgstr "" + +#: hypha/apply/funds/blocks.py:55 +msgid "" +"We will use this email address to communicate with you about your proposal." +msgstr "" + +#: hypha/apply/funds/blocks.py:71 +#: hypha/apply/funds/templates/funds/includes/rendered_answers.html:29 #: hypha/apply/funds/templates/funds/includes/revision_diff_table.html:17 #: hypha/apply/projects/models/vendor.py:20 #: hypha/apply/projects/models/vendor.py:57 -#: hypha/apply/projects/templates/application_projects/project_detail.html:110 #: hypha/apply/projects/templates/application_projects/project_simplified_detail.html:55 msgid "Address" msgstr "" -#: hypha/apply/funds/blocks.py:183 hypha/apply/stream_forms/blocks.py:465 -#: hypha/apply/stream_forms/blocks.py:466 -#: hypha/apply/stream_forms/blocks.py:481 -#: hypha/apply/stream_forms/blocks.py:482 hypha/apply/utils/blocks.py:74 +#: hypha/apply/funds/blocks.py:102 +msgid "What is your name?" +msgstr "" + +#: hypha/apply/funds/blocks.py:104 +msgid "We will use this name when we communicate with you about your proposal." +msgstr "" + +#: hypha/apply/funds/blocks.py:192 hypha/apply/stream_forms/blocks.py:466 +#: hypha/apply/stream_forms/blocks.py:467 +#: hypha/apply/stream_forms/blocks.py:482 +#: hypha/apply/stream_forms/blocks.py:483 hypha/apply/utils/blocks.py:84 msgid "Custom" msgstr "" -#: hypha/apply/funds/forms.py:59 hypha/apply/funds/forms.py:78 +#: hypha/apply/funds/forms.py:60 hypha/apply/funds/forms.py:79 msgid "Take action" msgstr "" -#: hypha/apply/funds/forms.py:138 hypha/apply/projects/forms/project.py:189 +#: hypha/apply/funds/forms.py:139 hypha/apply/projects/forms/project.py:182 #, python-brace-format msgid "Update lead from {lead} to" msgstr "" -#: hypha/apply/funds/forms.py:143 +#: hypha/apply/funds/forms.py:144 #: hypha/apply/funds/templates/funds/applicationsubmission_detail.html:25 #: hypha/apply/funds/templates/funds/applicationsubmission_detail.html:27 #: hypha/apply/funds/templates/funds/applicationsubmission_simplified_detail.html:20 @@ -1514,51 +1559,49 @@ msgstr "" #: hypha/apply/funds/templates/funds/submission_sealed.html:14 #: hypha/apply/funds/templates/funds/submissions_by_round.html:12 #: hypha/apply/projects/filters.py:28 hypha/apply/projects/filters.py:42 -#: hypha/apply/projects/tables.py:49 +#: hypha/apply/projects/tables.py:45 #: hypha/apply/projects/templates/application_projects/project_admin_detail.html:104 #: hypha/apply/projects/templates/application_projects/project_simplified_detail.html:19 msgid "Lead" msgstr "" -#: hypha/apply/funds/forms.py:195 hypha/apply/funds/tables.py:259 -#: hypha/apply/funds/tables.py:443 -#: hypha/apply/funds/templates/funds/includes/admin_primary_actions.html:48 -#: hypha/apply/funds/templates/funds/includes/table_filter_and_search.html:37 -msgid "Reviewers" +#: hypha/apply/funds/forms.py:196 +#: hypha/apply/projects/templates/application_projects/project_simplified_detail.html:113 +msgid "External Reviewers" msgstr "" -#: hypha/apply/funds/forms.py:260 +#: hypha/apply/funds/forms.py:267 msgid "Can't unassign, just change, because review already submitted" msgstr "" -#: hypha/apply/funds/forms.py:265 hypha/apply/funds/forms.py:338 +#: hypha/apply/funds/forms.py:272 hypha/apply/funds/forms.py:345 msgid "Users cannot be assigned to multiple roles." msgstr "" -#: hypha/apply/funds/forms.py:364 +#: hypha/apply/funds/forms.py:371 msgid "-- No reviewer selected --" msgstr "" -#: hypha/apply/funds/forms.py:366 +#: hypha/apply/funds/forms.py:373 #, python-brace-format msgid "{role_name} Reviewer" msgstr "" -#: hypha/apply/funds/forms.py:381 +#: hypha/apply/funds/forms.py:388 #: hypha/apply/funds/templates/funds/includes/admin_primary_actions.html:49 msgid "Partners" msgstr "" -#: hypha/apply/funds/forms.py:442 +#: hypha/apply/funds/forms.py:449 msgid "Meta terms" msgstr "" -#: hypha/apply/funds/forms.py:445 +#: hypha/apply/funds/forms.py:452 msgid "Meta terms are hierarchical in nature." msgstr "" #: hypha/apply/funds/models/__init__.py:17 hypha/apply/funds/tables.py:74 -#: hypha/apply/projects/tables.py:48 hypha/apply/projects/tables.py:80 +#: hypha/apply/projects/tables.py:44 hypha/apply/projects/tables.py:69 msgid "Fund" msgstr "" @@ -1570,50 +1613,50 @@ msgstr "" msgid "Lab" msgstr "" -#: hypha/apply/funds/models/applications.py:82 -#: hypha/apply/funds/models/applications.py:418 +#: hypha/apply/funds/models/applications.py:74 +#: hypha/apply/funds/models/applications.py:402 msgid "Link to the apply guide." msgstr "" -#: hypha/apply/funds/models/applications.py:84 +#: hypha/apply/funds/models/applications.py:76 msgid "" "The slack #channel for notifications. If left empty, notifications will go " "to the default channel." msgstr "" -#: hypha/apply/funds/models/applications.py:126 -#: hypha/apply/funds/models/applications.py:196 -#: hypha/apply/funds/models/applications.py:434 +#: hypha/apply/funds/models/applications.py:117 +#: hypha/apply/funds/models/applications.py:187 +#: hypha/apply/funds/models/applications.py:417 msgid "Content" msgstr "" -#: hypha/apply/funds/models/applications.py:128 -#: hypha/apply/funds/models/applications.py:197 -#: hypha/apply/funds/models/applications.py:436 +#: hypha/apply/funds/models/applications.py:119 +#: hypha/apply/funds/models/applications.py:188 +#: hypha/apply/funds/models/applications.py:419 msgid "Promote" msgstr "" -#: hypha/apply/funds/models/applications.py:175 +#: hypha/apply/funds/models/applications.py:166 msgid "When no end date is provided the round will remain open indefinitely." msgstr "" -#: hypha/apply/funds/models/applications.py:186 +#: hypha/apply/funds/models/applications.py:177 msgid "Dates" msgstr "" -#: hypha/apply/funds/models/applications.py:188 +#: hypha/apply/funds/models/applications.py:179 #: hypha/apply/funds/models/utils.py:52 msgid "Workflow" msgstr "" -#: hypha/apply/funds/models/applications.py:188 -#: hypha/apply/funds/models/applications.py:190 -#: hypha/apply/funds/models/applications.py:191 -#: hypha/apply/funds/models/applications.py:192 +#: hypha/apply/funds/models/applications.py:179 +#: hypha/apply/funds/models/applications.py:181 +#: hypha/apply/funds/models/applications.py:182 +#: hypha/apply/funds/models/applications.py:183 msgid "Copied from the fund." msgstr "" -#: hypha/apply/funds/models/applications.py:420 +#: hypha/apply/funds/models/applications.py:404 msgid "The slack #channel for notifications." msgstr "" @@ -1621,23 +1664,23 @@ msgstr "" msgid "The order this role should appear in the Update Reviewers form." msgstr "" -#: hypha/apply/funds/models/reviewer_role.py:63 +#: hypha/apply/funds/models/reviewer_role.py:64 msgid "Submissions for which reviewers should have access to" msgstr "" -#: hypha/apply/funds/models/reviewer_role.py:69 +#: hypha/apply/funds/models/reviewer_role.py:70 msgid "Submissions states for which reviewers should have access to" msgstr "" -#: hypha/apply/funds/models/reviewer_role.py:75 +#: hypha/apply/funds/models/reviewer_role.py:76 msgid "Submissions outcomes for which reviewers should have access to" msgstr "" -#: hypha/apply/funds/models/reviewer_role.py:79 +#: hypha/apply/funds/models/reviewer_role.py:80 msgid "Submissions for which reviewer is assigned to" msgstr "" -#: hypha/apply/funds/models/reviewer_role.py:83 +#: hypha/apply/funds/models/reviewer_role.py:84 msgid "Use the above configured variables to filter out submissions" msgstr "" @@ -1680,14 +1723,14 @@ msgstr "" #: hypha/apply/funds/tables.py:72 #: hypha/apply/funds/templates/funds/includes/table_filter_and_search.html:27 #: hypha/apply/projects/filters.py:27 hypha/apply/projects/filters.py:43 -#: hypha/apply/projects/tables.py:79 -#: hypha/apply/projects/templates/application_projects/includes/invoices.html:16 +#: hypha/apply/projects/tables.py:68 +#: hypha/apply/projects/templates/application_projects/includes/invoices.html:17 #: hypha/apply/projects/templates/application_projects/includes/invoices.html:26 -#: hypha/apply/projects/templates/application_projects/includes/invoices.html:63 +#: hypha/apply/projects/templates/application_projects/includes/invoices.html:62 #: hypha/apply/projects/templates/application_projects/includes/invoices.html:71 #: hypha/apply/projects/templates/application_projects/invoice_confirm_delete.html:20 #: hypha/apply/projects/templates/application_projects/invoice_detail.html:19 -#: hypha/apply/users/templates/wagtailusers/users/list.html:23 +#: hypha/apply/users/templates/wagtailusers/users/list.html:24 #: hypha/public/partner/tables.py:51 hypha/public/partner/tables.py:97 msgid "Status" msgstr "" @@ -1715,7 +1758,7 @@ msgid "Screening" msgstr "" #: hypha/apply/funds/tables.py:169 -#: hypha/apply/users/templates/wagtailusers/users/list.html:21 +#: hypha/apply/users/templates/wagtailusers/users/list.html:22 msgid "Role" msgstr "" @@ -1741,6 +1784,12 @@ msgstr "" msgid "Leads" msgstr "" +#: hypha/apply/funds/tables.py:259 hypha/apply/funds/tables.py:443 +#: hypha/apply/funds/templates/funds/includes/admin_primary_actions.html:48 +#: hypha/apply/funds/templates/funds/includes/table_filter_and_search.html:37 +msgid "Reviewers" +msgstr "" + #: hypha/apply/funds/tables.py:260 msgid "No Status" msgstr "" @@ -1852,7 +1901,7 @@ msgid "Revisions for %(title)s" msgstr "" #: hypha/apply/funds/templates/funds/applicationrevision_list.html:8 -#: hypha/apply/funds/templates/funds/includes/admin_primary_actions.html:53 +#: hypha/apply/funds/templates/funds/includes/admin_primary_actions.html:55 msgid "Revisions" msgstr "" @@ -1899,7 +1948,7 @@ msgstr "" #: hypha/apply/funds/templates/funds/applicationsubmission_confirm_delete.html:19 #: hypha/apply/funds/templates/funds/includes/create_project_form.html:6 #: hypha/apply/funds/templates/funds/reminder_confirm_delete.html:18 -#: hypha/apply/projects/templates/application_projects/invoice_confirm_delete.html:30 +#: hypha/apply/projects/templates/application_projects/invoice_confirm_delete.html:28 #: hypha/apply/projects/templates/application_projects/project_admin_detail.html:52 #: hypha/apply/review/templates/review/review_confirm_delete.html:18 msgid "Confirm" @@ -1942,19 +1991,19 @@ msgstr "" #: hypha/apply/funds/templates/funds/applicationsubmission_detail.html:75 #: hypha/apply/funds/templates/funds/includes/batch_delete_submission_form.html:14 -#: hypha/apply/funds/templates/funds/includes/delegated_form_base.html:34 +#: hypha/apply/funds/templates/funds/includes/delegated_form_base.html:33 #: hypha/apply/funds/templates/funds/includes/table_filter_and_search.html:42 -#: hypha/apply/projects/templates/application_projects/invoice_detail.html:63 +#: hypha/apply/projects/templates/application_projects/invoice_detail.html:65 #: hypha/apply/review/templates/review/review_detail.html:33 msgid "Delete" msgstr "" -#: hypha/apply/funds/templates/funds/applicationsubmission_detail.html:131 +#: hypha/apply/funds/templates/funds/applicationsubmission_detail.html:126 msgid "Related submissions" msgstr "" -#: hypha/apply/funds/templates/funds/applicationsubmission_detail.html:133 -#: hypha/apply/funds/templates/funds/applicationsubmission_detail.html:137 +#: hypha/apply/funds/templates/funds/applicationsubmission_detail.html:128 +#: hypha/apply/funds/templates/funds/applicationsubmission_detail.html:132 msgid "View linked" msgstr "" @@ -2015,8 +2064,8 @@ msgstr "" #: hypha/apply/funds/templates/funds/includes/admin_primary_actions.html:2 #: hypha/apply/funds/templates/funds/includes/generic_primary_actions.html:5 -#: hypha/apply/projects/templates/application_projects/project_detail.html:145 -#: hypha/apply/projects/templates/application_projects/project_detail.html:150 +#: hypha/apply/projects/templates/application_projects/project_detail.html:116 +#: hypha/apply/projects/templates/application_projects/project_detail.html:121 msgid "Actions to take" msgstr "" @@ -2058,12 +2107,16 @@ msgstr "" msgid "Assign" msgstr "" -#: hypha/apply/funds/templates/funds/includes/admin_primary_actions.html:55 +#: hypha/apply/funds/templates/funds/includes/admin_primary_actions.html:54 +msgid "More actions" +msgstr "" + +#: hypha/apply/funds/templates/funds/includes/admin_primary_actions.html:57 #: hypha/apply/funds/templates/funds/includes/meta_terms_block.html:3 msgid "Meta Terms" msgstr "" -#: hypha/apply/funds/templates/funds/includes/admin_primary_actions.html:57 +#: hypha/apply/funds/templates/funds/includes/admin_primary_actions.html:59 #: hypha/apply/funds/templates/funds/includes/create_reminder_form.html:3 msgid "Create Reminder" msgstr "" @@ -2083,6 +2136,7 @@ msgid "" msgstr "" #: hypha/apply/funds/templates/funds/includes/batch_progress_form.html:3 +#: hypha/apply/projects/templates/application_projects/invoice_admin_detail.html:35 msgid "Update Status" msgstr "" @@ -2093,7 +2147,6 @@ msgstr "" #: hypha/apply/funds/templates/funds/includes/update_meta_terms_form.html:4 #: hypha/apply/funds/templates/funds/includes/update_partner_form.html:4 #: hypha/apply/funds/templates/funds/includes/update_reviewer_form.html:4 -#: hypha/apply/projects/templates/application_projects/invoice_admin_detail.html:29 #: hypha/apply/projects/templates/application_projects/project_admin_detail.html:29 msgid "Update" msgstr "" @@ -2107,7 +2160,9 @@ msgid "Add Reviewers" msgstr "" #: hypha/apply/funds/templates/funds/includes/create_project_form.html:4 -msgid "This will create a new project and notify the Applicant." +msgid "" +"This will create a new project. The Applicant will be notified only after a " +"lead has been set for the project." msgstr "" #: hypha/apply/funds/templates/funds/includes/create_project_form.html:5 @@ -2121,12 +2176,12 @@ msgstr "" msgid "Create" msgstr "" -#: hypha/apply/funds/templates/funds/includes/delegated_form_base.html:29 +#: hypha/apply/funds/templates/funds/includes/delegated_form_base.html:28 #: hypha/apply/funds/templates/funds/includes/table_filter_and_search.html:71 msgid "Close" msgstr "" -#: hypha/apply/funds/templates/funds/includes/delegated_form_base.html:30 +#: hypha/apply/funds/templates/funds/includes/delegated_form_base.html:29 #: hypha/apply/projects/templates/application_projects/includes/report_line.html:41 #: hypha/apply/projects/templates/application_projects/project_form.html:30 #: hypha/apply/projects/templates/application_projects/report_form.html:55 @@ -2141,7 +2196,7 @@ msgid "" msgstr "" #: hypha/apply/funds/templates/funds/includes/progress_form.html:5 -#: hypha/apply/projects/templates/application_projects/invoice_admin_detail.html:28 +#: hypha/apply/projects/templates/application_projects/invoice_admin_detail.html:34 msgid "Current status" msgstr "" @@ -2167,23 +2222,23 @@ msgstr "" msgid "Requested Funding" msgstr "" -#: hypha/apply/funds/templates/funds/includes/rendered_answers.html:12 +#: hypha/apply/funds/templates/funds/includes/rendered_answers.html:13 #: hypha/apply/funds/templates/funds/includes/revision_diff_table.html:15 msgid "Project Duration" msgstr "" -#: hypha/apply/funds/templates/funds/includes/rendered_answers.html:17 +#: hypha/apply/funds/templates/funds/includes/rendered_answers.html:19 #: hypha/apply/funds/templates/funds/includes/revision_diff_table.html:9 msgid "Legal Name" msgstr "" -#: hypha/apply/funds/templates/funds/includes/rendered_answers.html:18 +#: hypha/apply/funds/templates/funds/includes/rendered_answers.html:20 msgid "Edit account" msgstr "" -#: hypha/apply/funds/templates/funds/includes/rendered_answers.html:22 +#: hypha/apply/funds/templates/funds/includes/rendered_answers.html:24 #: hypha/apply/funds/templates/funds/includes/revision_diff_table.html:11 -#: hypha/apply/projects/templates/application_projects/project_detail.html:97 +#: hypha/apply/projects/templates/application_projects/project_detail.html:87 #: hypha/apply/projects/templates/application_projects/project_simplified_detail.html:50 msgid "E-mail" msgstr "" @@ -2237,7 +2292,7 @@ msgstr "" #: hypha/apply/funds/templates/funds/includes/submission_stats.html:13 #: hypha/apply/funds/workflow.py:300 hypha/apply/funds/workflow.py:454 #: hypha/apply/funds/workflow.py:633 hypha/apply/funds/workflow.py:908 -#: hypha/apply/funds/workflow.py:1141 +#: hypha/apply/funds/workflow.py:1151 msgid "Accepted" msgstr "" @@ -2303,6 +2358,7 @@ msgid "Filter by" msgstr "" #: hypha/apply/funds/templates/funds/includes/table_filter_and_search.html:78 +#: hypha/apply/users/templates/wagtailusers/users/results.html:37 msgid "Filter" msgstr "" @@ -2394,6 +2450,14 @@ msgstr "" msgid "All Submissions" msgstr "" +#: hypha/apply/funds/templates/funds/submissions_awaiting_review.html:5 +msgid "Awaiting Review" +msgstr "" + +#: hypha/apply/funds/templates/funds/submissions_awaiting_review.html:11 +msgid "Waiting for your Review" +msgstr "" + #: hypha/apply/funds/templates/funds/submissions_overview.html:12 msgid "Track and explore recent submissions" msgstr "" @@ -2465,45 +2529,45 @@ msgstr "" msgid "Awaiting" msgstr "" -#: hypha/apply/funds/templates/funds/tables/table.html:96 +#: hypha/apply/funds/templates/funds/tables/table.html:95 msgid "Linked" msgstr "" -#: hypha/apply/funds/templates/funds/tables/table.html:130 +#: hypha/apply/funds/templates/funds/tables/table.html:129 #: hypha/public/partner/templates/partner/table.html:42 #: hypha/templates/includes/pagination.html:6 msgid "previous" msgstr "" -#: hypha/apply/funds/templates/funds/tables/table.html:137 +#: hypha/apply/funds/templates/funds/tables/table.html:136 msgid "Page" msgstr "" -#: hypha/apply/funds/templates/funds/tables/table.html:144 +#: hypha/apply/funds/templates/funds/tables/table.html:143 #: hypha/apply/projects/templates/application_projects/includes/report_line.html:5 #: hypha/public/partner/templates/partner/table.html:56 #: hypha/templates/includes/pagination.html:14 msgid "next" msgstr "" -#: hypha/apply/funds/views.py:231 hypha/apply/funds/views.py:263 -#: hypha/apply/funds/views.py:284 hypha/apply/projects/views/project.py:319 +#: hypha/apply/funds/views.py:232 hypha/apply/funds/views.py:264 +#: hypha/apply/funds/views.py:285 hypha/apply/projects/views/project.py:328 msgid "Sorry something went wrong" msgstr "" -#: hypha/apply/funds/views.py:327 +#: hypha/apply/funds/views.py:328 msgid "Failed to update: " msgstr "" -#: hypha/apply/funds/views.py:500 hypha/apply/funds/views.py:503 +#: hypha/apply/funds/views.py:524 hypha/apply/funds/views.py:527 msgid "No Round or Lab found matching the query" msgstr "" -#: hypha/apply/funds/views.py:526 +#: hypha/apply/funds/views.py:550 msgid "No statuses match the requested value" msgstr "" -#: hypha/apply/funds/views.py:1024 +#: hypha/apply/funds/views.py:1035 msgid "Submission saved successfully" msgstr "" @@ -2604,7 +2668,7 @@ msgstr "" #: hypha/apply/funds/workflow.py:248 hypha/apply/funds/workflow.py:369 #: hypha/apply/funds/workflow.py:537 hypha/apply/funds/workflow.py:708 -#: hypha/apply/funds/workflow.py:822 hypha/apply/funds/workflow.py:1117 +#: hypha/apply/funds/workflow.py:822 hypha/apply/funds/workflow.py:1127 msgid "Internal Review" msgstr "" @@ -2636,7 +2700,7 @@ msgid "Ready For Discussion (revert)" msgstr "" #: hypha/apply/funds/workflow.py:293 hypha/apply/funds/workflow.py:447 -#: hypha/apply/funds/workflow.py:626 hypha/apply/funds/workflow.py:1137 +#: hypha/apply/funds/workflow.py:626 hypha/apply/funds/workflow.py:1147 msgid "Ready for Determination" msgstr "" @@ -2663,7 +2727,7 @@ msgid "Open Internal Review (revert)" msgstr "" #: hypha/apply/funds/workflow.py:407 hypha/apply/funds/workflow.py:586 -#: hypha/apply/funds/workflow.py:861 hypha/apply/funds/workflow.py:1133 +#: hypha/apply/funds/workflow.py:861 hypha/apply/funds/workflow.py:1143 msgid "External Review" msgstr "" @@ -2713,7 +2777,7 @@ msgstr "" msgid "Ready For Final Determination" msgstr "" -#: hypha/apply/funds/workflow.py:782 hypha/apply/funds/workflow.py:1129 +#: hypha/apply/funds/workflow.py:782 hypha/apply/funds/workflow.py:1139 msgid "Invited for Proposal" msgstr "" @@ -2733,15 +2797,15 @@ msgstr "" msgid "Final Determination" msgstr "" -#: hypha/apply/funds/workflow.py:1113 +#: hypha/apply/funds/workflow.py:1123 msgid "Received" msgstr "" -#: hypha/apply/funds/workflow.py:1121 +#: hypha/apply/funds/workflow.py:1131 msgid "Ready for Discussion" msgstr "" -#: hypha/apply/funds/workflow.py:1125 +#: hypha/apply/funds/workflow.py:1135 msgid "More Information Requested" msgstr "" @@ -2755,25 +2819,25 @@ msgstr "" msgid "Reporting Period" msgstr "" -#: hypha/apply/projects/forms/payment.py:63 -msgid "You can only set a value when moving to the Paid status." +#: hypha/apply/projects/forms/payment.py:75 +msgid "Required checks on this invoice need to be compeleted for approval." msgstr "" -#: hypha/apply/projects/forms/payment.py:86 -msgid "Date From must be before Date To" +#: hypha/apply/projects/forms/payment.py:92 +msgid "The invoice must be a PDF." msgstr "" -#: hypha/apply/projects/forms/payment.py:95 +#: hypha/apply/projects/forms/payment.py:96 msgid "" "Files that are related to the invoice. They could be xls, microsoft office " "documents, open office documents, pdfs, txt files." msgstr "" -#: hypha/apply/projects/forms/payment.py:114 +#: hypha/apply/projects/forms/payment.py:115 msgid "Invoice File" msgstr "" -#: hypha/apply/projects/forms/payment.py:165 +#: hypha/apply/projects/forms/payment.py:166 msgid "File not found on submission" msgstr "" @@ -2793,15 +2857,15 @@ msgstr "" msgid "Cannot approve for a different user" msgstr "" -#: hypha/apply/projects/forms/project.py:143 +#: hypha/apply/projects/forms/project.py:136 msgid "A Project can only be sent for Approval when Committed." msgstr "" -#: hypha/apply/projects/forms/project.py:146 +#: hypha/apply/projects/forms/project.py:139 msgid "A Project can only be sent for Approval once" msgstr "" -#: hypha/apply/projects/forms/project.py:173 +#: hypha/apply/projects/forms/project.py:166 msgid "File Name" msgstr "" @@ -2833,78 +2897,102 @@ msgstr "" msgid "Cannot start a schedule beyond the end date" msgstr "" -#: hypha/apply/projects/forms/vendor.py:49 +#: hypha/apply/projects/forms/vendor.py:50 #: hypha/apply/projects/models/vendor.py:46 msgid "Yes, the account belongs to the organisation above" msgstr "" -#: hypha/apply/projects/forms/vendor.py:50 +#: hypha/apply/projects/forms/vendor.py:51 #: hypha/apply/projects/models/vendor.py:47 msgid "No, it is a personal bank account" msgstr "" -#: hypha/apply/projects/forms/vendor.py:105 hypha/apply/review/options.py:23 +#: hypha/apply/projects/forms/vendor.py:106 hypha/apply/review/options.py:23 msgid "No" msgstr "" -#: hypha/apply/projects/forms/vendor.py:105 hypha/apply/review/options.py:25 +#: hypha/apply/projects/forms/vendor.py:106 hypha/apply/review/options.py:25 msgid "Yes" msgstr "" -#: hypha/apply/projects/models/payment.py:22 -msgid "Changes Requested" +#: hypha/apply/projects/models/payment.py:32 +msgid "Resubmitted" +msgstr "" + +#: hypha/apply/projects/models/payment.py:33 +msgid "Changes Requested by Staff" +msgstr "" + +#: hypha/apply/projects/models/payment.py:34 +msgid "Changes Requested by Finance 1" +msgstr "" + +#: hypha/apply/projects/models/payment.py:35 +msgid "Changes Requested by Finance 2" msgstr "" -#: hypha/apply/projects/models/payment.py:23 -msgid "Under Review" +#: hypha/apply/projects/models/payment.py:36 +msgid "Approved by Staff" msgstr "" -#: hypha/apply/projects/models/payment.py:24 +#: hypha/apply/projects/models/payment.py:37 +msgid "Approved by Finance 1" +msgstr "" + +#: hypha/apply/projects/models/payment.py:38 +msgid "Approved by Finance 2" +msgstr "" + +#: hypha/apply/projects/models/payment.py:39 msgid "Paid" msgstr "" -#: hypha/apply/projects/models/payment.py:25 +#: hypha/apply/projects/models/payment.py:40 +msgid "Converted" +msgstr "" + +#: hypha/apply/projects/models/payment.py:41 msgid "Declined" msgstr "" -#: hypha/apply/projects/models/payment.py:64 +#: hypha/apply/projects/models/payment.py:108 msgid "Quantity Selected on an Invoice" msgstr "" -#: hypha/apply/projects/models/payment.py:97 +#: hypha/apply/projects/models/payment.py:133 msgid "Message" msgstr "" -#: hypha/apply/projects/models/payment.py:107 +#: hypha/apply/projects/models/payment.py:152 #, python-brace-format msgid "Invoice requested for {project}" msgstr "" -#: hypha/apply/projects/models/project.py:51 +#: hypha/apply/projects/models/project.py:48 msgid "Committed" msgstr "" -#: hypha/apply/projects/models/project.py:52 +#: hypha/apply/projects/models/project.py:49 msgid "Contracting" msgstr "" -#: hypha/apply/projects/models/project.py:53 +#: hypha/apply/projects/models/project.py:50 msgid "In Progress" msgstr "" -#: hypha/apply/projects/models/project.py:54 +#: hypha/apply/projects/models/project.py:51 msgid "Closing" msgstr "" -#: hypha/apply/projects/models/project.py:55 +#: hypha/apply/projects/models/project.py:52 msgid "Complete" msgstr "" -#: hypha/apply/projects/models/project.py:147 +#: hypha/apply/projects/models/project.py:139 msgid "Proposed Start Date" msgstr "" -#: hypha/apply/projects/models/project.py:148 +#: hypha/apply/projects/models/project.py:140 msgid "Proposed End Date" msgstr "" @@ -2912,27 +3000,27 @@ msgstr "" msgid "Proposed End Date must be after Proposed Start Date" msgstr "" -#: hypha/apply/projects/models/project.py:392 +#: hypha/apply/projects/models/project.py:391 #, python-brace-format msgid "Approval of {project} by {user}" msgstr "" -#: hypha/apply/projects/models/project.py:414 -#: hypha/apply/projects/templates/application_projects/project_detail.html:222 +#: hypha/apply/projects/models/project.py:413 +#: hypha/apply/projects/templates/application_projects/project_detail.html:193 msgid "Signed" msgstr "" -#: hypha/apply/projects/models/project.py:414 -#: hypha/apply/projects/templates/application_projects/project_detail.html:233 +#: hypha/apply/projects/models/project.py:413 +#: hypha/apply/projects/templates/application_projects/project_detail.html:204 msgid "Unsigned" msgstr "" -#: hypha/apply/projects/models/project.py:417 +#: hypha/apply/projects/models/project.py:416 #, python-brace-format msgid "Contract for {project} ({state})" msgstr "" -#: hypha/apply/projects/models/project.py:431 +#: hypha/apply/projects/models/project.py:430 #, python-brace-format msgid "Project file: {title}" msgstr "" @@ -2978,34 +3066,29 @@ msgid "Every {occurrence} weeks on {weekday}" msgstr "" #: hypha/apply/projects/tables.py:16 -msgid "Invoice reference" -msgstr "" - -#: hypha/apply/projects/tables.py:22 -#, python-brace-format -msgid "Value ({currency})" -msgstr "" - -#: hypha/apply/projects/tables.py:29 -msgid "Period Start" +#: hypha/apply/projects/templates/application_projects/includes/invoices.html:16 +#: hypha/apply/projects/templates/application_projects/includes/invoices.html:25 +#: hypha/apply/projects/templates/application_projects/includes/invoices.html:61 +#: hypha/apply/projects/templates/application_projects/includes/invoices.html:70 +#: hypha/apply/projects/templates/application_projects/invoice_confirm_delete.html:22 +#: hypha/apply/projects/templates/application_projects/invoice_detail.html:21 +msgid "Invoice Number" msgstr "" -#: hypha/apply/projects/tables.py:30 -#: hypha/apply/projects/templates/application_projects/includes/reports.html:62 -#: hypha/apply/projects/templates/application_projects/includes/reports.html:71 -msgid "Period End" +#: hypha/apply/projects/tables.py:20 +msgid "Project Name" msgstr "" -#: hypha/apply/projects/tables.py:81 +#: hypha/apply/projects/tables.py:70 #: hypha/apply/projects/templates/application_projects/includes/reports.html:5 msgid "Reporting" msgstr "" -#: hypha/apply/projects/tables.py:83 +#: hypha/apply/projects/tables.py:72 msgid "End Date" msgstr "" -#: hypha/apply/projects/tables.py:84 +#: hypha/apply/projects/tables.py:73 #, python-brace-format msgid "Fund Allocation ({currency})" msgstr "" @@ -3018,41 +3101,33 @@ msgstr "" msgid "to" msgstr "" -#: hypha/apply/projects/templates/application_projects/includes/deliverables_block.html:3 +#: hypha/apply/projects/templates/application_projects/includes/deliverables_block.html:5 msgid "Choose deliverables" msgstr "" -#: hypha/apply/projects/templates/application_projects/includes/deliverables_block.html:7 +#: hypha/apply/projects/templates/application_projects/includes/deliverables_block.html:9 msgid "Invoice Covers Deliverables" msgstr "" -#: hypha/apply/projects/templates/application_projects/includes/deliverables_block.html:15 +#: hypha/apply/projects/templates/application_projects/includes/deliverables_block.html:17 msgid "Available to invoice:" msgstr "" -#: hypha/apply/projects/templates/application_projects/includes/deliverables_block.html:19 +#: hypha/apply/projects/templates/application_projects/includes/deliverables_block.html:21 msgid "Quantity:" msgstr "" #: hypha/apply/projects/templates/application_projects/includes/deliverables_block.html:29 -#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:123 -msgid "Remove" +msgid "Deliverables" msgstr "" #: hypha/apply/projects/templates/application_projects/includes/deliverables_block.html:35 -msgid "Total:" -msgstr "" - -#: hypha/apply/projects/templates/application_projects/includes/funding_block.html:4 -msgid "Fund total" -msgstr "" - -#: hypha/apply/projects/templates/application_projects/includes/funding_block.html:8 -msgid "Total paid" +#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:125 +msgid "Remove" msgstr "" -#: hypha/apply/projects/templates/application_projects/includes/funding_block.html:13 -msgid "Awaiting payment" +#: hypha/apply/projects/templates/application_projects/includes/deliverables_block.html:41 +msgid "Total:" msgstr "" #: hypha/apply/projects/templates/application_projects/includes/invoice_block.html:4 @@ -3073,32 +3148,15 @@ msgid "Invoices" msgstr "" #: hypha/apply/projects/templates/application_projects/includes/invoices.html:8 -#: hypha/apply/projects/templates/application_projects/project_detail.html:184 +#: hypha/apply/projects/templates/application_projects/project_detail.html:155 msgid "Add Invoice" msgstr "" -#: hypha/apply/projects/templates/application_projects/includes/invoices.html:15 -#: hypha/apply/projects/templates/application_projects/includes/invoices.html:25 -#: hypha/apply/projects/templates/application_projects/includes/invoices.html:62 -#: hypha/apply/projects/templates/application_projects/includes/invoices.html:70 -msgid "Amount" -msgstr "" - -#: hypha/apply/projects/templates/application_projects/includes/invoices.html:17 -#: hypha/apply/projects/templates/application_projects/includes/invoices.html:27 -msgid "From" -msgstr "" - -#: hypha/apply/projects/templates/application_projects/includes/invoices.html:18 -#: hypha/apply/projects/templates/application_projects/includes/invoices.html:28 -msgid "To" -msgstr "" - -#: hypha/apply/projects/templates/application_projects/includes/invoices.html:48 +#: hypha/apply/projects/templates/application_projects/includes/invoices.html:46 msgid "No active Invoices." msgstr "" -#: hypha/apply/projects/templates/application_projects/includes/invoices.html:56 +#: hypha/apply/projects/templates/application_projects/includes/invoices.html:54 msgid "Show rejected" msgstr "" @@ -3176,6 +3234,11 @@ msgstr "" msgid "Past reports" msgstr "" +#: hypha/apply/projects/templates/application_projects/includes/reports.html:62 +#: hypha/apply/projects/templates/application_projects/includes/reports.html:71 +msgid "Period End" +msgstr "" + #: hypha/apply/projects/templates/application_projects/includes/reports.html:87 msgid "Unskip" msgstr "" @@ -3185,86 +3248,93 @@ msgid "No reports submitted" msgstr "" #: hypha/apply/projects/templates/application_projects/includes/reports.html:102 -#: hypha/apply/projects/templates/application_projects/project_detail.html:106 msgid "Show more" msgstr "" +#: hypha/apply/projects/templates/application_projects/includes/required_checks_block.html:5 +msgid "Required Checks" +msgstr "" + +#: hypha/apply/projects/templates/application_projects/includes/required_checks_block.html:8 +msgid "Make sure valid OFAC and SAM check, and W8/W9 are on file" +msgstr "" + +#: hypha/apply/projects/templates/application_projects/includes/required_checks_block.html:17 +msgid "Link to SAM/OFAC/W8/W9:" +msgstr "" + #: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:6 -#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:75 +#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:77 msgid "Supporting documents" msgstr "" -#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:18 -#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:113 +#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:20 +#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:115 msgid "Download" msgstr "" -#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:26 -#: hypha/apply/projects/templates/application_projects/project_detail.html:200 +#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:28 +#: hypha/apply/projects/templates/application_projects/project_detail.html:171 #: hypha/apply/projects/views/vendor.py:250 msgid "Contracting Information" msgstr "" -#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:34 -#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:58 +#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:36 +#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:60 msgid "Fill in" msgstr "" -#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:50 +#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:52 msgid "Approval Form" msgstr "" -#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:84 -#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:87 +#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:86 +#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:89 msgid "Choose file" msgstr "" -#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:89 +#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:91 msgid "Upload new" msgstr "" -#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:94 +#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:96 msgid "Every project should include the following documents" msgstr "" -#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:141 +#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:143 #: hypha/apply/projects/templates/application_projects/project_admin_detail.html:74 msgid "Submit for Approval" msgstr "" -#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:148 +#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:150 msgid "Select a document" msgstr "" -#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:150 +#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:152 msgid "Copy" msgstr "" -#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:155 +#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:157 msgid "Upload a new document" msgstr "" -#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:157 -#: hypha/apply/projects/templates/application_projects/project_detail.html:169 +#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:159 +#: hypha/apply/projects/templates/application_projects/project_detail.html:140 msgid "Upload" msgstr "" -#: hypha/apply/projects/templates/application_projects/invoice_admin_detail.html:18 -msgid "Cannot change from 'Paid' or 'Declined' state" -msgstr "" - -#: hypha/apply/projects/templates/application_projects/invoice_admin_detail.html:23 -msgid "Change Status" +#: hypha/apply/projects/templates/application_projects/invoice_admin_detail.html:29 +msgid "Update Invoice Status" msgstr "" -#: hypha/apply/projects/templates/application_projects/invoice_admin_detail.html:27 -msgid "Change status" +#: hypha/apply/projects/templates/application_projects/invoice_admin_detail.html:33 +msgid "Update Invoice status" msgstr "" #: hypha/apply/projects/templates/application_projects/invoice_confirm_delete.html:4 #: hypha/apply/projects/templates/application_projects/invoice_detail.html:4 #: hypha/apply/projects/templates/application_projects/invoice_detail.html:11 -#: hypha/apply/projects/templates/application_projects/invoice_detail.html:28 +#: hypha/apply/projects/templates/application_projects/invoice_detail.html:26 #: hypha/apply/projects/templates/application_projects/invoice_form.html:4 #: hypha/apply/projects/templates/application_projects/invoice_form.html:8 msgid "Invoice" @@ -3279,31 +3349,16 @@ msgstr "" msgid "Vendor" msgstr "" -#: hypha/apply/projects/templates/application_projects/invoice_confirm_delete.html:22 -#: hypha/apply/projects/templates/application_projects/invoice_detail.html:21 -msgid "Invoice Number" -msgstr "" - -#: hypha/apply/projects/templates/application_projects/invoice_confirm_delete.html:23 -#: hypha/apply/projects/templates/application_projects/invoice_detail.html:22 -msgid "Period of Performance" -msgstr "" - -#: hypha/apply/projects/templates/application_projects/invoice_confirm_delete.html:24 -#: hypha/apply/projects/templates/application_projects/invoice_detail.html:23 -msgid "Total" -msgstr "" - -#: hypha/apply/projects/templates/application_projects/invoice_confirm_delete.html:29 +#: hypha/apply/projects/templates/application_projects/invoice_confirm_delete.html:27 msgid "Are you sure you want to delete this invoice for" msgstr "" -#: hypha/apply/projects/templates/application_projects/invoice_detail.html:33 +#: hypha/apply/projects/templates/application_projects/invoice_detail.html:31 #: hypha/apply/projects/templates/application_projects/project_simplified_detail.html:125 msgid "Supporting Documents" msgstr "" -#: hypha/apply/projects/templates/application_projects/invoice_detail.html:48 +#: hypha/apply/projects/templates/application_projects/invoice_detail.html:50 msgid "" "Only editable when 'Submitted' or you have been requested to make changes" msgstr "" @@ -3439,59 +3494,38 @@ msgid "Project Information" msgstr "" #: hypha/apply/projects/templates/application_projects/project_detail.html:82 -#: hypha/apply/projects/templates/application_projects/project_simplified_detail.html:35 -msgid "Proposed start date" -msgstr "" - -#: hypha/apply/projects/templates/application_projects/project_detail.html:87 -#: hypha/apply/projects/templates/application_projects/project_simplified_detail.html:40 -msgid "Project Proposed end date" +msgid "Contractor" msgstr "" -#: hypha/apply/projects/templates/application_projects/project_detail.html:92 -#: hypha/apply/projects/templates/application_projects/project_simplified_detail.html:45 -msgid "Legal name" -msgstr "" - -#: hypha/apply/projects/templates/application_projects/project_detail.html:115 -#: hypha/apply/projects/templates/application_projects/project_simplified_detail.html:60 -msgid "Phone" -msgstr "" - -#: hypha/apply/projects/templates/application_projects/project_detail.html:120 -#: hypha/apply/projects/templates/application_projects/project_simplified_detail.html:65 -msgid "Value" -msgstr "" - -#: hypha/apply/projects/templates/application_projects/project_detail.html:158 +#: hypha/apply/projects/templates/application_projects/project_detail.html:129 msgid "Fill in Contracting Info" msgstr "" -#: hypha/apply/projects/templates/application_projects/project_detail.html:165 +#: hypha/apply/projects/templates/application_projects/project_detail.html:136 msgid "Upload Signed Contract" msgstr "" -#: hypha/apply/projects/templates/application_projects/project_detail.html:167 +#: hypha/apply/projects/templates/application_projects/project_detail.html:138 msgid "Upload Contract" msgstr "" -#: hypha/apply/projects/templates/application_projects/project_detail.html:177 +#: hypha/apply/projects/templates/application_projects/project_detail.html:148 msgid "Upload contract" msgstr "" -#: hypha/apply/projects/templates/application_projects/project_detail.html:196 +#: hypha/apply/projects/templates/application_projects/project_detail.html:167 msgid "Supporting Information" msgstr "" -#: hypha/apply/projects/templates/application_projects/project_detail.html:203 +#: hypha/apply/projects/templates/application_projects/project_detail.html:174 msgid "Approval form" msgstr "" -#: hypha/apply/projects/templates/application_projects/project_detail.html:214 +#: hypha/apply/projects/templates/application_projects/project_detail.html:185 msgid "Contracts" msgstr "" -#: hypha/apply/projects/templates/application_projects/project_detail.html:243 +#: hypha/apply/projects/templates/application_projects/project_detail.html:214 msgid "Approved by" msgstr "" @@ -3503,6 +3537,26 @@ msgstr "" msgid "No Projects Available." msgstr "" +#: hypha/apply/projects/templates/application_projects/project_simplified_detail.html:35 +msgid "Proposed start date" +msgstr "" + +#: hypha/apply/projects/templates/application_projects/project_simplified_detail.html:40 +msgid "Project Proposed end date" +msgstr "" + +#: hypha/apply/projects/templates/application_projects/project_simplified_detail.html:45 +msgid "Legal name" +msgstr "" + +#: hypha/apply/projects/templates/application_projects/project_simplified_detail.html:60 +msgid "Phone" +msgstr "" + +#: hypha/apply/projects/templates/application_projects/project_simplified_detail.html:65 +msgid "Value" +msgstr "" + #: hypha/apply/projects/templates/application_projects/project_simplified_detail.html:71 msgid "Sent to Compliance" msgstr "" @@ -3532,10 +3586,6 @@ msgstr "" msgid "No reviews" msgstr "" -#: hypha/apply/projects/templates/application_projects/project_simplified_detail.html:113 -msgid "External Reviewers" -msgstr "" - #: hypha/apply/projects/templates/application_projects/report_detail.html:4 msgid "Report" msgstr "" @@ -3663,8 +3713,17 @@ msgstr "" msgid "Visit Project Detail Page" msgstr "" -#: hypha/apply/projects/views/project.py:589 -#: hypha/apply/projects/views/project.py:636 +#: hypha/apply/projects/views/payment.py:55 +#: hypha/apply/projects/views/payment.py:209 +#, python-brace-format +msgid "<p>Invoice status updated to: {status}.</p>" +msgstr "" + +#: hypha/apply/projects/views/payment.py:155 +msgid "<p>Invoice created.</p>" +msgstr "" + +#: hypha/apply/projects/views/project.py:599 msgid "You are not allowed to edit the project at this time" msgstr "" @@ -3693,12 +3752,12 @@ msgstr "" msgid "Paragraph" msgstr "" -#: hypha/apply/review/models.py:160 +#: hypha/apply/review/models.py:159 #: hypha/apply/review/templates/review/review_detail.html:19 msgid "Recommendation" msgstr "" -#: hypha/apply/review/models.py:165 +#: hypha/apply/review/models.py:164 msgid "Visibility" msgstr "" @@ -3800,10 +3859,6 @@ msgstr "" msgid "Create Review" msgstr "" -#: hypha/apply/stream_forms/blocks.py:37 -msgid "Help text" -msgstr "" - #: hypha/apply/stream_forms/blocks.py:38 msgid "Help link" msgstr "" @@ -3908,29 +3963,34 @@ msgstr "" msgid "File field" msgstr "" -#: hypha/apply/stream_forms/blocks.py:432 +#: hypha/apply/stream_forms/blocks.py:433 msgid "Multiple File field" msgstr "" -#: hypha/apply/stream_forms/blocks.py:465 +#: hypha/apply/stream_forms/blocks.py:466 msgid "Section text" msgstr "" -#: hypha/apply/stream_forms/blocks.py:466 +#: hypha/apply/stream_forms/blocks.py:467 msgid "Section header" msgstr "" -#: hypha/apply/stream_forms/blocks.py:485 hypha/public/forms/models.py:62 +#: hypha/apply/stream_forms/blocks.py:486 hypha/public/forms/models.py:75 msgid "Form fields" msgstr "" +#: hypha/apply/stream_forms/models.py:67 +msgid "" +"You are logged in so this information is fetched from your user account." +msgstr "" + #: hypha/apply/templates/forms/includes/form_errors.html:5 msgid "" "There were some errors with your form. Please amend the fields highlighted " "below." msgstr "" -#: hypha/apply/users/admin_views.py:34 hypha/apply/users/admin_views.py:59 +#: hypha/apply/users/admin_views.py:64 hypha/apply/users/admin_views.py:89 msgid "Search users" msgstr "" @@ -3944,19 +4004,36 @@ msgstr "" msgid "Only includes active, non-superusers" msgstr "" -#: hypha/apply/users/models.py:102 +#: hypha/apply/users/forms.py:87 +#: hypha/apply/users/templates/users/activation/email.txt:16 +msgid "Password" +msgstr "" + +#: hypha/apply/users/forms.py:88 +msgid "Email change requires you to put password." +msgstr "" + +#: hypha/apply/users/forms.py:101 hypha/apply/users/forms.py:130 +msgid "Incorrect password. Please try again." +msgstr "" + +#: hypha/apply/users/forms.py:117 +msgid "Please type your password to confirm" +msgstr "" + +#: hypha/apply/users/models.py:105 msgid "email address" msgstr "" -#: hypha/apply/users/models.py:103 +#: hypha/apply/users/models.py:106 msgid "Full name" msgstr "" -#: hypha/apply/users/models.py:105 +#: hypha/apply/users/models.py:108 msgid "Slack name" msgstr "" -#: hypha/apply/users/models.py:107 +#: hypha/apply/users/models.py:110 msgid "This is the name we should \"@mention\" when sending notifications" msgstr "" @@ -3977,22 +4054,21 @@ msgid "Next" msgstr "" #: hypha/apply/users/templates/two_factor/core/backup_tokens.html:6 -#: hypha/apply/users/templates/two_factor/profile/disable.html:6 msgid "Back" msgstr "" #: hypha/apply/users/templates/two_factor/core/backup_tokens.html:7 +#: hypha/apply/users/templates/two_factor/core/backup_tokens_password.html:7 #: hypha/apply/users/templates/two_factor/profile/profile.html:41 msgid "Backup Tokens" msgstr "" #: hypha/apply/users/templates/two_factor/core/backup_tokens.html:8 msgid "" -"Backup tokens can be used when your primary and backup\n" -" phone numbers aren't available. The backup tokens below can be used\n" -" for login verification. If you've used up all your backup tokens, you\n" -" can generate a new set of backup tokens. Only the backup tokens shown\n" -" below will be valid." +"Backup tokens can be used when your primary and backup phone numbers aren't " +"available. The backup tokens below can be used for login verification. If " +"you've used up all your backup tokens, you can generate a new set of backup " +"tokens. Only the backup tokens shown below will be valid." msgstr "" #: hypha/apply/users/templates/two_factor/core/backup_tokens.html:20 @@ -4007,22 +4083,69 @@ msgstr "" msgid "Generate Tokens" msgstr "" -#: hypha/apply/users/templates/two_factor/profile/disable.html:7 -msgid "Disable Two-factor Authentication" +#: hypha/apply/users/templates/two_factor/core/backup_tokens_password.html:6 +#: hypha/apply/users/templates/two_factor/profile/disable.html:6 +#: hypha/apply/users/templates/two_factor/profile/profile.html:6 +msgid "Back to account" msgstr "" -#: hypha/apply/users/templates/two_factor/profile/disable.html:8 +#: hypha/apply/users/templates/two_factor/core/backup_tokens_password.html:8 msgid "" -"You are about to disable two-factor authentication. This\n" -" weakens your account security, are you sure?" +"Backup tokens can be used when your primary and backup phone numbers aren't " +"available. The backup tokens below can be used for login verification. </br> " +"If you've used up all your backup tokens, you can generate a new set of " +"backup tokens. Only the backup tokens shown below will be valid." msgstr "" -#: hypha/apply/users/templates/two_factor/profile/disable.html:14 -msgid "Disable" +#: hypha/apply/users/templates/two_factor/core/backup_tokens_password.html:27 +#: hypha/apply/users/templates/two_factor/profile/disable.html:22 +#: hypha/apply/users/templates/users/change_password.html:20 +#: hypha/apply/users/templates/users/email_change/confirm_password.html:21 +#: hypha/apply/users/templates/users/password_reset/confirm.html:20 +msgid "<li>Please correct the error below.</li>" +msgid_plural "<li>Please correct the errors below.</li>" +msgstr[0] "" +msgstr[1] "" + +#: hypha/apply/users/templates/two_factor/core/backup_tokens_password.html:41 +#: hypha/apply/users/templates/two_factor/profile/profile.html:52 +msgid "Show Codes" msgstr "" -#: hypha/apply/users/templates/two_factor/profile/profile.html:6 -msgid "Back to account" +#: hypha/apply/users/templates/two_factor/core/two_factor_required.html:7 +msgid "Permission Denied" +msgstr "" + +#: hypha/apply/users/templates/two_factor/core/two_factor_required.html:9 +msgid "" +"The page you requested, enforces users to verify using two-factor " +"authentication for security reasons. You need to enable these security " +"features in order to access this page. Without enabling these security " +"features, You can only access the account(Profile section) or can logout " +"from the system." +msgstr "" + +#: hypha/apply/users/templates/two_factor/core/two_factor_required.html:14 +#: hypha/apply/users/templates/two_factor/profile/profile.html:60 +msgid "" +"Two-factor authentication is not enabled for your account. Enable two-factor " +"authentication for enhanced account security." +msgstr "" + +#: hypha/apply/users/templates/two_factor/core/two_factor_required.html:20 +#: hypha/apply/users/templates/two_factor/profile/profile.html:64 +msgid "Enable Two-Factor Authentication" +msgstr "" + +#: hypha/apply/users/templates/two_factor/profile/disable.html:7 +#: hypha/apply/users/templates/two_factor/profile/disable.html:36 +msgid "Disable Two-factor Authentication" +msgstr "" + +#: hypha/apply/users/templates/two_factor/profile/disable.html:8 +msgid "" +"Disabling Two-factor authentication weakens your account security. We " +"recommend reenabling it when you can." msgstr "" #: hypha/apply/users/templates/two_factor/profile/profile.html:9 @@ -4048,8 +4171,8 @@ msgstr "" #: hypha/apply/users/templates/two_factor/profile/profile.html:22 msgid "" -"If your primary method is not available, we are able to\n" -" send backup tokens to the phone numbers listed below." +"If your primary method is not available, we are able to send backup tokens " +"to the phone numbers listed below." msgstr "" #: hypha/apply/users/templates/two_factor/profile/profile.html:32 @@ -4062,27 +4185,17 @@ msgstr "" #: hypha/apply/users/templates/two_factor/profile/profile.html:43 msgid "" -"If you don't have any device with you, you can access\n" -" your account using backup tokens." +"If you don't have any device with you, you can access your account using " +"backup tokens." msgstr "" #: hypha/apply/users/templates/two_factor/profile/profile.html:45 #, python-format -msgid "" -"\n" -" You have only one backup token remaining.\n" -" " -msgid_plural "" -"\n" -" You have %(counter)s backup tokens remaining.\n" -" " +msgid "You have only one backup token remaining." +msgid_plural "You have %(counter)s backup tokens remaining." msgstr[0] "" msgstr[1] "" -#: hypha/apply/users/templates/two_factor/profile/profile.html:52 -msgid "Show Codes" -msgstr "" - #: hypha/apply/users/templates/two_factor/profile/profile.html:54 #: hypha/apply/users/templates/two_factor/profile/profile.html:58 msgid "Disable Two-Factor Authentication" @@ -4090,19 +4203,8 @@ msgstr "" #: hypha/apply/users/templates/two_factor/profile/profile.html:55 msgid "" -"However we strongly discourage you to do so, you can\n" -" also disable two-factor authentication for your account." -msgstr "" - -#: hypha/apply/users/templates/two_factor/profile/profile.html:60 -msgid "" -"Two-factor authentication is not enabled for your\n" -" account. Enable two-factor authentication for enhanced account\n" -" security." -msgstr "" - -#: hypha/apply/users/templates/two_factor/profile/profile.html:64 -msgid "Enable Two-Factor Authentication" +"However we strongly discourage you to do so, you can also disable two-factor " +"authentication for your account." msgstr "" #: hypha/apply/users/templates/users/account.html:25 @@ -4154,14 +4256,10 @@ msgid "in the future using" msgstr "" #: hypha/apply/users/templates/users/activation/email.txt:15 -#: hypha/apply/users/templates/wagtailusers/users/list.html:14 +#: hypha/apply/users/templates/wagtailusers/users/list.html:15 msgid "Username" msgstr "" -#: hypha/apply/users/templates/users/activation/email.txt:16 -msgid "Password" -msgstr "" - #: hypha/apply/users/templates/users/activation/email.txt:16 msgid "Your chosen password" msgstr "" @@ -4216,19 +4314,6 @@ msgstr "" msgid "Set a password" msgstr "" -#: hypha/apply/users/templates/users/change_password.html:20 -#: hypha/apply/users/templates/users/password_reset/confirm.html:20 -msgid "" -"\n" -" <li>Please correct the error below.</li>\n" -" " -msgid_plural "" -"\n" -" <li>Please correct the errors below.</li>\n" -" " -msgstr[0] "" -msgstr[1] "" - #: hypha/apply/users/templates/users/change_password.html:34 #: hypha/apply/users/templates/users/password_reset/complete.html:4 #: hypha/apply/users/templates/users/password_reset/confirm.html:34 @@ -4239,57 +4324,121 @@ msgstr[1] "" msgid "Reset password" msgstr "" +#: hypha/apply/users/templates/users/email_change/confirm_email.txt:7 +#, python-format +msgid "" +"Request to change email of your account on the %(ORG_LONG_NAME)s web site " +"has been accepted. Confirm your email by clicking this link or copying and " +"pasting it to your browser:" +msgstr "" + +#: hypha/apply/users/templates/users/email_change/confirm_email.txt:11 +#, python-format +msgid "" +"This link will only remain active for %(timeout_days)s days and will lead " +"you to profile page after verification." +msgstr "" + +#: hypha/apply/users/templates/users/email_change/confirm_email.txt:14 +#, python-format +msgid "" +"Kind Regards,\n" +"The %(ORG_SHORT_NAME)s Team\n" +"\n" +"--\n" +"%(ORG_LONG_NAME)s\n" +"%(root_url)s" +msgstr "" + +#: hypha/apply/users/templates/users/email_change/confirm_password.html:4 +#: hypha/apply/users/templates/users/email_change/confirm_password.html:5 +#: hypha/apply/users/views.py:111 +msgid "Enter Password" +msgstr "" + +#: hypha/apply/users/templates/users/email_change/done.html:4 +#: hypha/apply/users/templates/users/password_reset/done.html:4 +msgid "Check your email" +msgstr "" + +#: hypha/apply/users/templates/users/email_change/done.html:5 +#: hypha/apply/users/views.py:157 +msgid "Verify Email" +msgstr "" + +#: hypha/apply/users/templates/users/email_change/done.html:9 +msgid "" +"To start using the new email, please click on the confirmation link that has " +"been sent to you on your new email." +msgstr "" + +#: hypha/apply/users/templates/users/email_change/invalid_link.html:4 +msgid "Invalid Confirmation" +msgstr "" + +#: hypha/apply/users/templates/users/email_change/invalid_link.html:5 +msgid "Invalid Confirmation URL" +msgstr "" + +#: hypha/apply/users/templates/users/email_change/invalid_link.html:9 +msgid "Possible reason:" +msgstr "" + +#: hypha/apply/users/templates/users/email_change/invalid_link.html:11 +msgid "The confirmation link has expired." +msgstr "" + +#: hypha/apply/users/templates/users/email_change/invalid_link.html:14 +#, python-format +msgid "" +"Try again to change email from accounts page. If that fails please contact " +"%(ORG_SHORT_NAME)s at" +msgstr "" + #: hypha/apply/users/templates/users/login.html:11 msgid "Enter your credentials." msgstr "" #: hypha/apply/users/templates/users/login.html:14 -msgid "" -"We are calling your phone right now, please enter the\n" -" digits you hear." +msgid "We are calling your phone right now, please enter the digits you hear." msgstr "" #: hypha/apply/users/templates/users/login.html:17 -msgid "" -"We sent you a text message, please enter the tokens we\n" -" sent." +msgid "We sent you a text message, please enter the tokens we sent." msgstr "" #: hypha/apply/users/templates/users/login.html:20 -msgid "" -"Please enter the tokens generated by your token\n" -" generator." +msgid "Please enter the tokens generated by your token generator." msgstr "" #: hypha/apply/users/templates/users/login.html:24 msgid "" -"Use this form for entering backup tokens for logging in.\n" -" These tokens have been generated for you to print and keep safe. " -"Please\n" -" enter one of these backup tokens to login to your account." +"Use this form for entering backup tokens for logging in. These tokens have " +"been generated for you to print and keep safe. Please enter one of these " +"backup tokens to login to your account." msgstr "" -#: hypha/apply/users/templates/users/login.html:38 +#: hypha/apply/users/templates/users/login.html:39 msgid "Forgot your password?" msgstr "" -#: hypha/apply/users/templates/users/login.html:39 +#: hypha/apply/users/templates/users/login.html:41 msgid "Login" msgstr "" -#: hypha/apply/users/templates/users/login.html:47 +#: hypha/apply/users/templates/users/login.html:49 msgid "Or, alternatively, use one of your backup phones:" msgstr "" -#: hypha/apply/users/templates/users/login.html:57 +#: hypha/apply/users/templates/users/login.html:59 msgid "As a last resort, you can use a backup token:" msgstr "" -#: hypha/apply/users/templates/users/login.html:60 +#: hypha/apply/users/templates/users/login.html:62 msgid "Use Backup Token" msgstr "" -#: hypha/apply/users/templates/users/login.html:72 +#: hypha/apply/users/templates/users/login.html:74 #, python-format msgid "Log in with your %(ORG_SHORT_NAME)s email" msgstr "" @@ -4326,10 +4475,6 @@ msgid "" "used. Please request a new password reset." msgstr "" -#: hypha/apply/users/templates/users/password_reset/done.html:4 -msgid "Check your email" -msgstr "" - #: hypha/apply/users/templates/users/password_reset/done.html:9 msgid "A link to reset your password has been emailed to you." msgstr "" @@ -4342,28 +4487,80 @@ msgstr "" msgid "Your username (in case you've forgotten):" msgstr "" -#: hypha/apply/users/templates/wagtailusers/users/list.html:6 +#: hypha/apply/users/templates/wagtailusers/users/index.html:3 +#: hypha/apply/users/templates/wagtailusers/users/index.html:31 +msgid "Users" +msgstr "" + +#: hypha/apply/users/templates/wagtailusers/users/index.html:32 +msgid "Add a user" +msgstr "" + +#: hypha/apply/users/templates/wagtailusers/users/index.html:41 +msgid "Select all users in listing" +msgstr "" + +#: hypha/apply/users/templates/wagtailusers/users/list.html:7 #: hypha/public/people/models.py:180 msgid "Name" msgstr "" -#: hypha/apply/users/templates/wagtailusers/users/list.html:45 +#: hypha/apply/users/templates/wagtailusers/users/list.html:47 msgid "Admin" msgstr "" -#: hypha/apply/users/templates/wagtailusers/users/list.html:46 +#: hypha/apply/users/templates/wagtailusers/users/list.html:48 msgid "Inactive" msgstr "" -#: hypha/apply/utils/blocks.py:39 +#: hypha/apply/users/templates/wagtailusers/users/results.html:6 +#, python-format +msgid "There is %(user_count)s user" +msgid_plural "There are %(user_count)s users" +msgstr[0] "" +msgstr[1] "" + +#: hypha/apply/users/templates/wagtailusers/users/results.html:21 +#, python-format +msgid "Sorry, no users match \"<em>%(query_string)s</em>\"" +msgstr "" + +#: hypha/apply/users/templates/wagtailusers/users/results.html:28 +#, python-format +msgid "" +"The %(group_name)s group has no users configured. Why not <a href=" +"\"%(wagtailusers_add_url)s\">add some</a>?" +msgstr "" + +#: hypha/apply/users/templates/wagtailusers/users/results.html:31 +#, python-format +msgid "" +"There are no users configured. Why not <a href=\"%(wagtailusers_add_url)s" +"\">add some</a>?" +msgstr "" + +#: hypha/apply/users/templates/wagtailusers/users/results.html:44 +msgid "Apply filters" +msgstr "" + +#: hypha/apply/users/views.py:142 +msgid "Password Page timed out. Try changing the email again." +msgstr "" + +#: hypha/apply/users/views.py:192 +#, python-brace-format +msgid "Your email has been successfully updated to {email}!" +msgstr "" + +#: hypha/apply/utils/blocks.py:49 msgid "Rich text field" msgstr "" -#: hypha/apply/utils/blocks.py:54 +#: hypha/apply/utils/blocks.py:64 msgid "Markdown text field" msgstr "" -#: hypha/apply/utils/blocks.py:73 +#: hypha/apply/utils/blocks.py:83 msgid " Required" msgstr "" @@ -4689,7 +4886,7 @@ msgstr "" msgid "Funding" msgstr "" -#: hypha/templates/base-apply.html:107 hypha/templates/base-apply.html:116 +#: hypha/templates/base-apply.html:104 hypha/templates/base-apply.html:113 msgid "Log out" msgstr "" diff --git a/hypha/locale/en/LC_MESSAGES/django.po b/hypha/locale/en/LC_MESSAGES/django.po index 11554738e1d3809227e5cb24091849647f72bf72..f064db18c590afa13a7899f16ac6a10617c1d1cb 100644 --- a/hypha/locale/en/LC_MESSAGES/django.po +++ b/hypha/locale/en/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-11-09 10:44+0000\n" +"POT-Creation-Date: 2022-04-29 14:22+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -18,418 +18,418 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: hypha/apply/activity/messaging.py:39 +#: hypha/apply/activity/messaging.py:53 #, python-brace-format msgid " as {role}" msgstr "" -#: hypha/apply/activity/messaging.py:228 +#: hypha/apply/activity/messaging.py:242 #, python-brace-format msgid "Submitted {source.title} for {source.page.title}" msgstr "" -#: hypha/apply/activity/messaging.py:229 hypha/apply/activity/messaging.py:230 +#: hypha/apply/activity/messaging.py:243 hypha/apply/activity/messaging.py:244 msgid "Edited" msgstr "" -#: hypha/apply/activity/messaging.py:231 hypha/apply/activity/messaging.py:245 +#: hypha/apply/activity/messaging.py:245 hypha/apply/activity/messaging.py:259 #, python-brace-format msgid "Lead changed from {old_lead} to {source.lead}" msgstr "" -#: hypha/apply/activity/messaging.py:232 +#: hypha/apply/activity/messaging.py:246 #, python-brace-format msgid "Batch Lead changed to {new_lead}" msgstr "" -#: hypha/apply/activity/messaging.py:233 +#: hypha/apply/activity/messaging.py:247 #, python-brace-format msgid "Sent a determination. Outcome: {determination.clean_outcome}" msgstr "" -#: hypha/apply/activity/messaging.py:235 +#: hypha/apply/activity/messaging.py:249 msgid "Invited to submit a proposal" msgstr "" -#: hypha/apply/activity/messaging.py:239 +#: hypha/apply/activity/messaging.py:253 msgid "Submitted a review" msgstr "" -#: hypha/apply/activity/messaging.py:240 +#: hypha/apply/activity/messaging.py:254 msgid "Opened the submission while still sealed" msgstr "" -#: hypha/apply/activity/messaging.py:242 +#: hypha/apply/activity/messaging.py:256 #, python-brace-format msgid "" "{user} {opinion.opinion_display}s with {opinion.review.author}s review of " "{source}" msgstr "" -#: hypha/apply/activity/messaging.py:243 +#: hypha/apply/activity/messaging.py:257 msgid "Created" msgstr "" -#: hypha/apply/activity/messaging.py:244 +#: hypha/apply/activity/messaging.py:258 #, python-brace-format msgid "Progressed from {old_stage} to {source.status_display}" msgstr "" -#: hypha/apply/activity/messaging.py:246 +#: hypha/apply/activity/messaging.py:260 msgid "Requested approval" msgstr "" -#: hypha/apply/activity/messaging.py:247 +#: hypha/apply/activity/messaging.py:261 #: hypha/apply/determinations/options.py:12 msgid "Approved" msgstr "" -#: hypha/apply/activity/messaging.py:248 +#: hypha/apply/activity/messaging.py:262 #, python-brace-format msgid "Requested changes for acceptance: \"{comment}\"" msgstr "" -#: hypha/apply/activity/messaging.py:249 +#: hypha/apply/activity/messaging.py:263 #, python-brace-format msgid "Uploaded a {contract.state} contract" msgstr "" -#: hypha/apply/activity/messaging.py:250 +#: hypha/apply/activity/messaging.py:264 msgid "Approved contract" msgstr "" -#: hypha/apply/activity/messaging.py:251 -#, python-brace-format -msgid "Updated Invoice status to: {invoice.status_display}" -msgstr "" - -#: hypha/apply/activity/messaging.py:252 +#: hypha/apply/activity/messaging.py:266 msgid "Invoice created" msgstr "" -#: hypha/apply/activity/messaging.py:253 +#: hypha/apply/activity/messaging.py:267 msgid "Submitted a report" msgstr "" -#: hypha/apply/activity/messaging.py:284 +#: hypha/apply/activity/messaging.py:298 msgid "Reviewers updated." msgstr "" -#: hypha/apply/activity/messaging.py:286 hypha/apply/activity/messaging.py:356 -#: hypha/apply/activity/messaging.py:513 +#: hypha/apply/activity/messaging.py:300 hypha/apply/activity/messaging.py:370 +#: hypha/apply/activity/messaging.py:552 msgid "Added:" msgstr "" -#: hypha/apply/activity/messaging.py:290 hypha/apply/activity/messaging.py:360 -#: hypha/apply/activity/messaging.py:517 +#: hypha/apply/activity/messaging.py:304 hypha/apply/activity/messaging.py:374 +#: hypha/apply/activity/messaging.py:556 msgid "Removed:" msgstr "" -#: hypha/apply/activity/messaging.py:296 +#: hypha/apply/activity/messaging.py:310 msgid "Batch Reviewers Updated." msgstr "" -#: hypha/apply/activity/messaging.py:298 +#: hypha/apply/activity/messaging.py:312 #, python-brace-format msgid "{user} as {name}." msgstr "" -#: hypha/apply/activity/messaging.py:316 +#: hypha/apply/activity/messaging.py:330 #, python-brace-format msgid "Successfully deleted submissions: {title}" msgstr "" -#: hypha/apply/activity/messaging.py:320 +#: hypha/apply/activity/messaging.py:334 #, python-brace-format msgid "Progressed from {old_display} to {new_display}" msgstr "" -#: hypha/apply/activity/messaging.py:354 +#: hypha/apply/activity/messaging.py:368 msgid "Partners updated." msgstr "" -#: hypha/apply/activity/messaging.py:367 +#: hypha/apply/activity/messaging.py:381 #, python-brace-format msgid "" "Updated reporting frequency. New schedule is: {new_schedule} starting on " "{schedule_start}" msgstr "" -#: hypha/apply/activity/messaging.py:405 +#: hypha/apply/activity/messaging.py:390 +#, python-brace-format +msgid "Updated Invoice status to: {status}." +msgstr "" + +#: hypha/apply/activity/messaging.py:423 #, python-brace-format msgid "Screening status from {old_status} to {new_status}" msgstr "" -#: hypha/apply/activity/messaging.py:412 +#: hypha/apply/activity/messaging.py:430 #, python-brace-format msgid "" "A new submission has been submitted for {source.page.title}: <{link}|{source." "title}>" msgstr "" -#: hypha/apply/activity/messaging.py:413 +#: hypha/apply/activity/messaging.py:431 #, python-brace-format msgid "" "The lead of <{link}|{source.title}> has been updated from {old_lead} to " "{source.lead} by {user}" msgstr "" -#: hypha/apply/activity/messaging.py:415 +#: hypha/apply/activity/messaging.py:433 #, python-brace-format msgid "" "A new {comment.visibility} comment has been posted on <{link}|{source.title}" "> by {user}" msgstr "" -#: hypha/apply/activity/messaging.py:416 hypha/apply/activity/messaging.py:417 +#: hypha/apply/activity/messaging.py:434 hypha/apply/activity/messaging.py:435 #, python-brace-format msgid "{user} has edited <{link}|{source.title}>" msgstr "" -#: hypha/apply/activity/messaging.py:420 +#: hypha/apply/activity/messaging.py:438 #, python-brace-format msgid "{user} has updated the partners on <{link}|{source.title}>" msgstr "" -#: hypha/apply/activity/messaging.py:421 +#: hypha/apply/activity/messaging.py:439 #, python-brace-format msgid "" "{user} has updated the status of <{link}|{source.title}>: {old_phase." "display_name} → {source.phase}" msgstr "" -#: hypha/apply/activity/messaging.py:425 +#: hypha/apply/activity/messaging.py:443 #, python-brace-format msgid "A proposal has been submitted for review: <{link}|{source.title}>" msgstr "" -#: hypha/apply/activity/messaging.py:426 +#: hypha/apply/activity/messaging.py:444 #, python-brace-format msgid "" "<{link}|{source.title}> by {source.user} has been invited to submit a " "proposal" msgstr "" -#: hypha/apply/activity/messaging.py:427 +#: hypha/apply/activity/messaging.py:445 #, python-brace-format msgid "" "{user} has submitted a review for <{link}|{source.title}>. Outcome: {review." "outcome}, Score: {review.get_score_display}" msgstr "" -#: hypha/apply/activity/messaging.py:429 +#: hypha/apply/activity/messaging.py:447 #, python-brace-format msgid "{user} has opened the sealed submission: <{link}|{source.title}>" msgstr "" -#: hypha/apply/activity/messaging.py:430 +#: hypha/apply/activity/messaging.py:448 #, python-brace-format msgid "" "{user} {opinion.opinion_display}s with {opinion.review.author}s review of " "{source.title}" msgstr "" -#: hypha/apply/activity/messaging.py:432 +#: hypha/apply/activity/messaging.py:450 #, python-brace-format msgid "{user} has deleted {source.title}" msgstr "" -#: hypha/apply/activity/messaging.py:433 +#: hypha/apply/activity/messaging.py:451 #, python-brace-format msgid "{user} has deleted {review.author} review for <{link}|{source.title}>." msgstr "" -#: hypha/apply/activity/messaging.py:434 +#: hypha/apply/activity/messaging.py:452 #, python-brace-format msgid "{user} has created a Project: <{link}|{source.title}>." msgstr "" -#: hypha/apply/activity/messaging.py:435 +#: hypha/apply/activity/messaging.py:453 #, python-brace-format msgid "" "The lead of project <{link}|{source.title}> has been updated from {old_lead} " "to {source.lead} by {user}" msgstr "" -#: hypha/apply/activity/messaging.py:436 +#: hypha/apply/activity/messaging.py:454 #, python-brace-format msgid "{user} has edited {review.author} review for <{link}|{source.title}>." msgstr "" -#: hypha/apply/activity/messaging.py:437 +#: hypha/apply/activity/messaging.py:455 #, python-brace-format msgid "{user} has requested approval on project <{link}|{source.title}>." msgstr "" -#: hypha/apply/activity/messaging.py:438 +#: hypha/apply/activity/messaging.py:456 #, python-brace-format msgid "{user} has approved project <{link}|{source.title}>." msgstr "" -#: hypha/apply/activity/messaging.py:439 +#: hypha/apply/activity/messaging.py:457 #, python-brace-format msgid "" "{user} has requested changes for project acceptance on <{link}|{source.title}" ">." msgstr "" -#: hypha/apply/activity/messaging.py:440 +#: hypha/apply/activity/messaging.py:458 #, python-brace-format msgid "{user} has uploaded a contract for <{link}|{source.title}>." msgstr "" -#: hypha/apply/activity/messaging.py:441 +#: hypha/apply/activity/messaging.py:459 #, python-brace-format msgid "{user} has approved contract for <{link}|{source.title}>." msgstr "" -#: hypha/apply/activity/messaging.py:442 +#: hypha/apply/activity/messaging.py:460 #, python-brace-format msgid "{user} has created invoice for <{link}|{source.title}>." msgstr "" -#: hypha/apply/activity/messaging.py:443 +#: hypha/apply/activity/messaging.py:461 #, python-brace-format msgid "" "{user} has changed the status of <{link_related}|invoice> on <{link}|{source." "title}> to {invoice.status_display}." msgstr "" -#: hypha/apply/activity/messaging.py:444 +#: hypha/apply/activity/messaging.py:462 #, python-brace-format msgid "{user} has deleted invoice from <{link}|{source.title}>." msgstr "" -#: hypha/apply/activity/messaging.py:445 +#: hypha/apply/activity/messaging.py:463 #, python-brace-format msgid "{user} has updated invoice for <{link}|{source.title}>." msgstr "" -#: hypha/apply/activity/messaging.py:446 +#: hypha/apply/activity/messaging.py:464 #, python-brace-format msgid "{user} has submitted a report for <{link}|{source.title}>." msgstr "" -#: hypha/apply/activity/messaging.py:510 +#: hypha/apply/activity/messaging.py:549 #, python-brace-format msgid "{user} has updated the reviewers on <{link}|{title}>." msgstr "" -#: hypha/apply/activity/messaging.py:526 +#: hypha/apply/activity/messaging.py:565 #, python-brace-format msgid "{user} has batch changed lead to {new_lead} on: {submissions_text}" msgstr "" -#: hypha/apply/activity/messaging.py:537 hypha/apply/activity/messaging.py:973 +#: hypha/apply/activity/messaging.py:576 hypha/apply/activity/messaging.py:1018 #, python-brace-format msgid "{user} as {name}," msgstr "" -#: hypha/apply/activity/messaging.py:542 +#: hypha/apply/activity/messaging.py:581 #, python-brace-format msgid "" "{user} has batch added {reviewers_text} as reviewers on: {submissions_text}" msgstr "" -#: hypha/apply/activity/messaging.py:560 +#: hypha/apply/activity/messaging.py:599 #, python-brace-format msgid "{user} has transitioned the following submissions: {submissions_links}" msgstr "" -#: hypha/apply/activity/messaging.py:570 +#: hypha/apply/activity/messaging.py:609 #, python-brace-format msgid "" "A determination for <{link}|{submission_title}> was sent by email. Outcome: " "{determination_outcome}" msgstr "" -#: hypha/apply/activity/messaging.py:577 +#: hypha/apply/activity/messaging.py:616 #, python-brace-format msgid "" "A determination for <{link}|{submission_title}> was saved without sending an " "email. Outcome: {determination_outcome}" msgstr "" -#: hypha/apply/activity/messaging.py:594 +#: hypha/apply/activity/messaging.py:633 #, python-brace-format msgid "Determinations of {outcome} was sent for: {submissions_links}" msgstr "" -#: hypha/apply/activity/messaging.py:603 +#: hypha/apply/activity/messaging.py:642 #, python-brace-format msgid "{user} has deleted submissions: {title}" msgstr "" -#: hypha/apply/activity/messaging.py:617 +#: hypha/apply/activity/messaging.py:656 #, python-brace-format msgid "" "<{link}|{title}> is ready for review. The following are assigned as " "reviewers: {reviewers}" msgstr "" -#: hypha/apply/activity/messaging.py:732 +#: hypha/apply/activity/messaging.py:771 #, python-brace-format msgid "Application ready to review: {source.title}" msgstr "" -#: hypha/apply/activity/messaging.py:734 +#: hypha/apply/activity/messaging.py:773 msgid "Multiple applications are now ready for your review" msgstr "" -#: hypha/apply/activity/messaging.py:736 +#: hypha/apply/activity/messaging.py:775 #, python-brace-format msgid "Reminder: Application ready to review: {source.title}" msgstr "" -#: hypha/apply/activity/messaging.py:739 +#: hypha/apply/activity/messaging.py:778 #, python-brace-format msgid "Your application to {org_long_name}: {source.title}" msgstr "" -#: hypha/apply/activity/messaging.py:741 +#: hypha/apply/activity/messaging.py:780 #, python-brace-format msgid "Your {org_long_name} Project: {source.title}" msgstr "" -#: hypha/apply/activity/messaging.py:963 +#: hypha/apply/activity/messaging.py:1008 msgid "Successfully uploaded document" msgstr "" -#: hypha/apply/activity/messaging.py:964 +#: hypha/apply/activity/messaging.py:1009 msgid "Successfully removed document" msgstr "" -#: hypha/apply/activity/messaging.py:967 +#: hypha/apply/activity/messaging.py:1012 msgid "Reminder created" msgstr "" -#: hypha/apply/activity/messaging.py:968 +#: hypha/apply/activity/messaging.py:1013 msgid "Reminder deleted" msgstr "" -#: hypha/apply/activity/messaging.py:979 +#: hypha/apply/activity/messaging.py:1024 #, python-brace-format msgid "Batch reviewers added: {reviewers_text} to " msgstr "" -#: hypha/apply/activity/messaging.py:984 +#: hypha/apply/activity/messaging.py:1029 #, python-brace-format msgid "" "Successfully updated reporting frequency. They will now report " "{new_schedule} starting on {schedule_start}" msgstr "" -#: hypha/apply/activity/messaging.py:988 +#: hypha/apply/activity/messaging.py:1033 #, python-brace-format msgid "Successfully skipped a Report for {start_date} to {end_date}" msgstr "" -#: hypha/apply/activity/messaging.py:990 +#: hypha/apply/activity/messaging.py:1035 #, python-brace-format msgid "Successfully unskipped a Report for {start_date} to {end_date}" msgstr "" -#: hypha/apply/activity/messaging.py:1009 +#: hypha/apply/activity/messaging.py:1054 #, python-brace-format msgid "Successfully determined as {outcome}: " msgstr "" @@ -478,6 +478,7 @@ msgstr "" #: hypha/apply/activity/templates/messages/email/base.html:2 #: hypha/apply/users/templates/users/activation/email.txt:5 +#: hypha/apply/users/templates/users/email_change/confirm_email.txt:5 #, python-format msgid "Dear %(user)s," msgstr "" @@ -504,7 +505,7 @@ msgstr "" #: hypha/apply/activity/templates/messages/email/batch_ready_to_review.html:10 #: hypha/apply/activity/templates/messages/email/contract_uploaded.html:7 -#: hypha/apply/activity/templates/messages/email/invoice_status_updated.html:14 +#: hypha/apply/activity/templates/messages/email/invoice_status_updated.html:16 #: hypha/apply/activity/templates/messages/email/invoice_updated.html:9 #: hypha/apply/activity/templates/messages/email/partners_update_applicant.html:9 #: hypha/apply/activity/templates/messages/email/partners_update_partner.html:9 @@ -518,7 +519,6 @@ msgstr "" #: hypha/apply/activity/templates/messages/email/batch_ready_to_review.html:11 #: hypha/apply/activity/templates/messages/email/contract_uploaded.html:8 -#: hypha/apply/activity/templates/messages/email/invoice_status_updated.html:15 #: hypha/apply/activity/templates/messages/email/invoice_updated.html:10 #: hypha/apply/activity/templates/messages/email/partners_update_applicant.html:10 #: hypha/apply/activity/templates/messages/email/partners_update_partner.html:10 @@ -598,16 +598,24 @@ msgid "" "for period %(date_from)s to %(date_to)s." msgstr "" -#: hypha/apply/activity/templates/messages/email/invoice_status_updated.html:6 +#: hypha/apply/activity/templates/messages/email/invoice_status_updated.html:7 #: hypha/apply/activity/templates/messages/email/invoice_updated.html:7 #, python-format msgid "It is now %(status)s." msgstr "" -#: hypha/apply/activity/templates/messages/email/invoice_status_updated.html:9 +#: hypha/apply/activity/templates/messages/email/invoice_status_updated.html:10 msgid "The staff member left this comment" msgstr "" +#: hypha/apply/activity/templates/messages/email/invoice_status_updated.html:15 +msgid "Invoice Link" +msgstr "" + +#: hypha/apply/activity/templates/messages/email/invoice_status_updated.html:17 +msgid "Project Link" +msgstr "" + #: hypha/apply/activity/templates/messages/email/partners_update_applicant.html:5 msgid "New partner(s) has been added to your submission." msgstr "" @@ -740,13 +748,13 @@ msgid "Contracting Information has been updated on %(title)s." msgstr "" #: hypha/apply/api/v1/determination/utils.py:25 -#: hypha/apply/determinations/forms.py:106 +#: hypha/apply/determinations/forms.py:108 #: hypha/apply/determinations/views.py:93 msgid "-- No determination selected -- " msgstr "" #: hypha/apply/api/v1/filters.py:23 hypha/apply/funds/tables.py:416 -#: hypha/apply/users/templates/wagtailusers/users/list.html:46 +#: hypha/apply/users/templates/wagtailusers/users/list.html:48 msgid "Active" msgstr "" @@ -770,19 +778,21 @@ msgstr "" msgid "Not found" msgstr "" -#: hypha/apply/api/v1/projects/views.py:39 +#: hypha/apply/api/v1/projects/views.py:50 msgid "Not Found" msgstr "" -#: hypha/apply/api/v1/projects/views.py:45 +#: hypha/apply/api/v1/projects/views.py:56 msgid "Invoice Already has this deliverable" msgstr "" -#: hypha/apply/api/v1/projects/views.py:48 +#: hypha/apply/api/v1/projects/views.py:59 msgid "Required quantity is more than available" msgstr "" -#: hypha/apply/categories/blocks.py:34 hypha/apply/stream_forms/blocks.py:36 +#: hypha/apply/categories/blocks.py:34 hypha/apply/funds/blocks.py:30 +#: hypha/apply/funds/blocks.py:53 hypha/apply/funds/blocks.py:102 +#: hypha/apply/stream_forms/blocks.py:36 msgid "Label" msgstr "" @@ -790,11 +800,17 @@ msgstr "" msgid "Leave blank to use the default Category label" msgstr "" -#: hypha/apply/categories/blocks.py:40 +#: hypha/apply/categories/blocks.py:39 hypha/apply/funds/blocks.py:31 +#: hypha/apply/funds/blocks.py:54 hypha/apply/funds/blocks.py:103 +#: hypha/apply/stream_forms/blocks.py:37 +msgid "Help text" +msgstr "" + +#: hypha/apply/categories/blocks.py:41 msgid "Leave blank to use the default Category help text" msgstr "" -#: hypha/apply/categories/blocks.py:43 +#: hypha/apply/categories/blocks.py:44 msgid "Multi select" msgstr "" @@ -877,7 +893,11 @@ msgstr "" #: hypha/apply/funds/templates/funds/applicationsubmission_detail.html:70 #: hypha/apply/funds/templates/funds/applicationsubmission_simplified_detail.html:33 #: hypha/apply/funds/templates/funds/includes/revision_diff_table.html:4 -#: hypha/apply/projects/models/payment.py:21 hypha/apply/projects/tables.py:21 +#: hypha/apply/projects/models/payment.py:31 hypha/apply/projects/tables.py:23 +#: hypha/apply/projects/templates/application_projects/includes/invoices.html:15 +#: hypha/apply/projects/templates/application_projects/includes/invoices.html:24 +#: hypha/apply/projects/templates/application_projects/includes/invoices.html:60 +#: hypha/apply/projects/templates/application_projects/includes/invoices.html:69 #: hypha/apply/projects/templates/application_projects/includes/reports.html:63 #: hypha/apply/projects/templates/application_projects/includes/reports.html:74 msgid "Submitted" @@ -919,11 +939,10 @@ msgstr "" #: hypha/apply/determinations/templates/determinations/determination_detail.html:25 #: hypha/apply/funds/templates/funds/admin/widgets/read_only.html:2 #: hypha/apply/funds/templates/funds/applicationsubmission_detail.html:81 -#: hypha/apply/funds/templates/funds/applicationsubmission_detail.html:86 #: hypha/apply/projects/templates/application_projects/includes/reports.html:81 -#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:32 -#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:56 -#: hypha/apply/projects/templates/application_projects/invoice_detail.html:57 +#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:34 +#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:58 +#: hypha/apply/projects/templates/application_projects/invoice_detail.html:59 #: hypha/apply/projects/templates/application_projects/invoice_form.html:4 #: hypha/apply/projects/templates/application_projects/report_detail.html:59 #: hypha/apply/projects/templates/application_projects/vendor_detail.html:23 @@ -966,53 +985,54 @@ msgid "No submissions" msgstr "" #: hypha/apply/dashboard/templates/dashboard/community_dashboard.html:38 -#: hypha/apply/dashboard/templates/dashboard/dashboard.html:106 +#: hypha/apply/dashboard/templates/dashboard/dashboard.html:108 #: hypha/apply/dashboard/templates/dashboard/reviewer_dashboard.html:35 msgid "Your previous reviews" msgstr "" -#: hypha/apply/dashboard/templates/dashboard/dashboard.html:18 +#: hypha/apply/dashboard/templates/dashboard/dashboard.html:19 #: hypha/apply/dashboard/templates/dashboard/finance_dashboard.html:14 msgid "Apply admin" msgstr "" -#: hypha/apply/dashboard/templates/dashboard/dashboard.html:30 +#: hypha/apply/dashboard/templates/dashboard/dashboard.html:32 msgid "Submissions waiting for your review" msgstr "" -#: hypha/apply/dashboard/templates/dashboard/dashboard.html:32 -#: hypha/apply/dashboard/templates/dashboard/dashboard.html:39 -#: hypha/apply/dashboard/templates/dashboard/dashboard.html:47 -#: hypha/apply/dashboard/templates/dashboard/dashboard.html:55 +#: hypha/apply/dashboard/templates/dashboard/dashboard.html:34 +#: hypha/apply/dashboard/templates/dashboard/dashboard.html:41 +#: hypha/apply/dashboard/templates/dashboard/dashboard.html:49 +#: hypha/apply/dashboard/templates/dashboard/dashboard.html:57 #: hypha/apply/funds/templates/funds/includes/round-block-listing.html:23 #: hypha/apply/funds/templates/funds/includes/status-block.html:10 #: hypha/apply/projects/templates/application_projects/includes/invoices.html:72 #: hypha/apply/projects/templates/application_projects/includes/reports.html:78 -#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:16 -#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:39 -#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:64 +#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:17 +#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:19 +#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:41 +#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:66 msgid "View" msgstr "" -#: hypha/apply/dashboard/templates/dashboard/dashboard.html:37 +#: hypha/apply/dashboard/templates/dashboard/dashboard.html:39 msgid "Live projects under your management" msgstr "" -#: hypha/apply/dashboard/templates/dashboard/dashboard.html:45 -#: hypha/apply/dashboard/templates/dashboard/dashboard.html:92 +#: hypha/apply/dashboard/templates/dashboard/dashboard.html:47 +#: hypha/apply/dashboard/templates/dashboard/dashboard.html:94 msgid "Projects awaiting approval" msgstr "" -#: hypha/apply/dashboard/templates/dashboard/dashboard.html:53 +#: hypha/apply/dashboard/templates/dashboard/dashboard.html:55 msgid "Requests for invoices requiring your attention" msgstr "" -#: hypha/apply/dashboard/templates/dashboard/dashboard.html:77 +#: hypha/apply/dashboard/templates/dashboard/dashboard.html:79 msgid "Your projects" msgstr "" -#: hypha/apply/dashboard/templates/dashboard/dashboard.html:83 -#: hypha/apply/dashboard/templates/dashboard/dashboard.html:112 +#: hypha/apply/dashboard/templates/dashboard/dashboard.html:85 +#: hypha/apply/dashboard/templates/dashboard/dashboard.html:114 #: hypha/apply/dashboard/templates/dashboard/includes/flagged.html:12 #: hypha/apply/dashboard/templates/dashboard/includes/waiting-for-review.html:13 #: hypha/apply/dashboard/templates/dashboard/reviewer_dashboard.html:41 @@ -1025,7 +1045,7 @@ msgstr "" msgid "Show all" msgstr "" -#: hypha/apply/dashboard/templates/dashboard/dashboard.html:99 +#: hypha/apply/dashboard/templates/dashboard/dashboard.html:101 #: hypha/apply/dashboard/templates/dashboard/finance_dashboard.html:21 msgid "Active Invoices" msgstr "" @@ -1064,12 +1084,11 @@ msgstr "" #: hypha/apply/determinations/blocks.py:65 #: hypha/apply/determinations/blocks.py:66 #: hypha/apply/determinations/blocks.py:67 -#: hypha/apply/determinations/blocks.py:68 hypha/apply/funds/blocks.py:184 +#: hypha/apply/determinations/blocks.py:68 hypha/apply/funds/blocks.py:193 #: hypha/apply/review/blocks.py:160 hypha/apply/review/blocks.py:161 #: hypha/apply/review/blocks.py:162 hypha/apply/review/blocks.py:163 #: hypha/apply/review/blocks.py:164 hypha/apply/review/blocks.py:165 -#: hypha/apply/review/blocks.py:166 hypha/apply/stream_forms/blocks.py:467 -#: hypha/apply/stream_forms/blocks.py:468 +#: hypha/apply/review/blocks.py:166 hypha/apply/stream_forms/blocks.py:468 #: hypha/apply/stream_forms/blocks.py:469 #: hypha/apply/stream_forms/blocks.py:470 #: hypha/apply/stream_forms/blocks.py:471 @@ -1081,8 +1100,9 @@ msgstr "" #: hypha/apply/stream_forms/blocks.py:477 #: hypha/apply/stream_forms/blocks.py:478 #: hypha/apply/stream_forms/blocks.py:479 -#: hypha/apply/stream_forms/blocks.py:480 hypha/apply/utils/blocks.py:66 -#: hypha/apply/utils/blocks.py:67 +#: hypha/apply/stream_forms/blocks.py:480 +#: hypha/apply/stream_forms/blocks.py:481 hypha/apply/utils/blocks.py:76 +#: hypha/apply/utils/blocks.py:77 msgid "Fields" msgstr "" @@ -1090,161 +1110,161 @@ msgstr "" msgid "Section text/header" msgstr "" -#: hypha/apply/determinations/forms.py:170 -#: hypha/apply/determinations/forms.py:251 -#: hypha/apply/determinations/forms.py:507 -#: hypha/apply/determinations/models.py:102 +#: hypha/apply/determinations/forms.py:172 +#: hypha/apply/determinations/forms.py:253 +#: hypha/apply/determinations/forms.py:515 +#: hypha/apply/determinations/models.py:101 #: hypha/apply/determinations/templates/determinations/determination_detail.html:12 #: hypha/apply/determinations/templates/determinations/determination_detail.html:20 msgid "Determination" msgstr "" -#: hypha/apply/determinations/forms.py:176 -#: hypha/apply/determinations/forms.py:257 -#: hypha/apply/determinations/models.py:103 +#: hypha/apply/determinations/forms.py:178 +#: hypha/apply/determinations/forms.py:259 +#: hypha/apply/determinations/models.py:102 msgid "Determination message" msgstr "" -#: hypha/apply/determinations/forms.py:183 +#: hypha/apply/determinations/forms.py:185 msgid "Goals and principles" msgstr "" -#: hypha/apply/determinations/forms.py:203 +#: hypha/apply/determinations/forms.py:205 msgid "Technical merit" msgstr "" -#: hypha/apply/determinations/forms.py:218 +#: hypha/apply/determinations/forms.py:220 msgid "Reasonable, realistic and sustainable" msgstr "" -#: hypha/apply/determinations/forms.py:232 +#: hypha/apply/determinations/forms.py:234 msgid "Other comments" msgstr "" -#: hypha/apply/determinations/forms.py:265 +#: hypha/apply/determinations/forms.py:267 msgid "Positive aspects" msgstr "" -#: hypha/apply/determinations/forms.py:271 +#: hypha/apply/determinations/forms.py:273 msgid "Concerns" msgstr "" -#: hypha/apply/determinations/forms.py:277 +#: hypha/apply/determinations/forms.py:279 msgid "Items that must be addressed" msgstr "" -#: hypha/apply/determinations/forms.py:283 +#: hypha/apply/determinations/forms.py:285 msgid "Project overview questions and comments" msgstr "" -#: hypha/apply/determinations/forms.py:286 +#: hypha/apply/determinations/forms.py:288 msgid "Objectives questions and comments" msgstr "" -#: hypha/apply/determinations/forms.py:289 +#: hypha/apply/determinations/forms.py:291 msgid "Methods and strategy questions and comments" msgstr "" -#: hypha/apply/determinations/forms.py:292 +#: hypha/apply/determinations/forms.py:294 msgid "Technical feasibility questions and comments" msgstr "" -#: hypha/apply/determinations/forms.py:295 +#: hypha/apply/determinations/forms.py:297 msgid "Alternative analysis - \"red teaming\" questions and comments" msgstr "" -#: hypha/apply/determinations/forms.py:298 +#: hypha/apply/determinations/forms.py:300 msgid "Usability questions and comments" msgstr "" -#: hypha/apply/determinations/forms.py:301 +#: hypha/apply/determinations/forms.py:303 msgid "Sustainability questions and comments" msgstr "" -#: hypha/apply/determinations/forms.py:304 +#: hypha/apply/determinations/forms.py:306 msgid "Collaboration questions and comments" msgstr "" -#: hypha/apply/determinations/forms.py:307 +#: hypha/apply/determinations/forms.py:309 msgid "Cost realism questions and comments" msgstr "" -#: hypha/apply/determinations/forms.py:310 +#: hypha/apply/determinations/forms.py:312 msgid "Qualifications questions and comments" msgstr "" -#: hypha/apply/determinations/forms.py:313 +#: hypha/apply/determinations/forms.py:315 msgid "Evaluation questions and comments" msgstr "" -#: hypha/apply/determinations/forms.py:317 +#: hypha/apply/determinations/forms.py:319 msgid "Rationale and appropriateness questions and comments" msgstr "" -#: hypha/apply/determinations/forms.py:354 +#: hypha/apply/determinations/forms.py:359 #: hypha/apply/determinations/views.py:354 msgid "-- No proposal form selected -- " msgstr "" -#: hypha/apply/determinations/forms.py:356 +#: hypha/apply/determinations/forms.py:361 #: hypha/apply/determinations/views.py:356 msgid "Proposal Form" msgstr "" -#: hypha/apply/determinations/forms.py:358 +#: hypha/apply/determinations/forms.py:363 #: hypha/apply/determinations/views.py:358 msgid "Select the proposal form to use for proposal stage." msgstr "" -#: hypha/apply/determinations/models.py:110 +#: hypha/apply/determinations/models.py:109 #: hypha/apply/determinations/templates/determinations/includes/determination_block.html:7 #: hypha/apply/funds/workflow.py:205 hypha/apply/funds/workflow.py:332 #: hypha/apply/funds/workflow.py:487 hypha/apply/funds/workflow.py:666 -#: hypha/apply/review/models.py:162 +#: hypha/apply/review/models.py:161 msgid "Draft" msgstr "" -#: hypha/apply/determinations/models.py:111 -#: hypha/apply/projects/models/vendor.py:49 hypha/apply/review/models.py:163 +#: hypha/apply/determinations/models.py:110 +#: hypha/apply/projects/models/vendor.py:49 hypha/apply/review/models.py:162 msgid "Creation time" msgstr "" -#: hypha/apply/determinations/models.py:112 -#: hypha/apply/projects/models/vendor.py:50 hypha/apply/review/models.py:164 +#: hypha/apply/determinations/models.py:111 +#: hypha/apply/projects/models/vendor.py:50 hypha/apply/review/models.py:163 msgid "Update time" msgstr "" -#: hypha/apply/determinations/models.py:113 +#: hypha/apply/determinations/models.py:112 msgid "Send message to applicant" msgstr "" -#: hypha/apply/determinations/models.py:229 +#: hypha/apply/determinations/models.py:228 #: hypha/apply/projects/templates/application_projects/project_admin_detail.html:22 msgid "Request" msgstr "" -#: hypha/apply/determinations/models.py:230 +#: hypha/apply/determinations/models.py:229 msgid "Concept note" msgstr "" -#: hypha/apply/determinations/models.py:231 +#: hypha/apply/determinations/models.py:230 #: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:13 -#: hypha/apply/projects/templates/application_projects/project_detail.html:198 +#: hypha/apply/projects/templates/application_projects/project_detail.html:169 msgid "Proposal" msgstr "" -#: hypha/apply/determinations/models.py:351 +#: hypha/apply/determinations/models.py:350 msgid "Concept form" msgstr "" -#: hypha/apply/determinations/models.py:352 +#: hypha/apply/determinations/models.py:351 msgid "Proposal form" msgstr "" #: hypha/apply/determinations/options.py:10 hypha/apply/funds/workflow.py:315 #: hypha/apply/funds/workflow.py:469 hypha/apply/funds/workflow.py:648 #: hypha/apply/funds/workflow.py:769 hypha/apply/funds/workflow.py:923 -#: hypha/apply/funds/workflow.py:1145 +#: hypha/apply/funds/workflow.py:1155 msgid "Dismissed" msgstr "" @@ -1287,14 +1307,14 @@ msgstr "" #: hypha/apply/determinations/templates/determinations/base_determination_form.html:48 #: hypha/apply/funds/templates/funds/application_base.html:67 #: hypha/apply/funds/templates/funds/applicationsubmission_form.html:36 -#: hypha/apply/funds/views.py:939 +#: hypha/apply/funds/views.py:950 #: hypha/apply/review/templates/review/review_edit_form.html:40 #: hypha/apply/review/templates/review/review_form.html:41 msgid "Save draft" msgstr "" #: hypha/apply/determinations/templates/determinations/base_determination_form.html:50 -#: hypha/apply/funds/views.py:938 hypha/apply/funds/workflow.py:200 +#: hypha/apply/funds/views.py:949 hypha/apply/funds/workflow.py:200 #: hypha/apply/funds/workflow.py:228 hypha/apply/funds/workflow.py:271 #: hypha/apply/funds/workflow.py:327 hypha/apply/funds/workflow.py:353 #: hypha/apply/funds/workflow.py:391 hypha/apply/funds/workflow.py:429 @@ -1309,6 +1329,7 @@ msgstr "" #: hypha/apply/projects/templates/application_projects/vendor_form.html:27 #: hypha/apply/review/templates/review/review_edit_form.html:42 #: hypha/apply/review/templates/review/review_form.html:43 +#: hypha/apply/users/templates/users/email_change/confirm_password.html:35 msgid "Submit" msgstr "" @@ -1415,7 +1436,7 @@ msgstr "" msgid "There is a draft determination you do not have permission to edit." msgstr "" -#: hypha/apply/determinations/views.py:435 +#: hypha/apply/determinations/views.py:427 #, python-brace-format msgid "" "A determination of \"{current}\" exists but you tried to progress as " @@ -1461,51 +1482,75 @@ msgstr "" msgid "Closed" msgstr "" -#: hypha/apply/funds/admin_views.py:65 +#: hypha/apply/funds/admin_views.py:67 #, python-brace-format msgid "Page '{0}' and {1} subpages copied." msgstr "" -#: hypha/apply/funds/admin_views.py:70 +#: hypha/apply/funds/admin_views.py:72 #, python-brace-format msgid "Page '{0}' copied." msgstr "" -#: hypha/apply/funds/blocks.py:32 +#: hypha/apply/funds/blocks.py:30 +msgid "What is the title of your application?" +msgstr "" + +#: hypha/apply/funds/blocks.py:31 +msgid "This project name can be changed if a full proposal is requested." +msgstr "" + +#: hypha/apply/funds/blocks.py:34 msgid "Application title" msgstr "" -#: hypha/apply/funds/blocks.py:42 +#: hypha/apply/funds/blocks.py:44 msgid "Requested amount" msgstr "" -#: hypha/apply/funds/blocks.py:65 -#: hypha/apply/funds/templates/funds/includes/rendered_answers.html:27 +#: hypha/apply/funds/blocks.py:53 +msgid "What email address should we use to contact you?" +msgstr "" + +#: hypha/apply/funds/blocks.py:55 +msgid "" +"We will use this email address to communicate with you about your proposal." +msgstr "" + +#: hypha/apply/funds/blocks.py:71 +#: hypha/apply/funds/templates/funds/includes/rendered_answers.html:29 #: hypha/apply/funds/templates/funds/includes/revision_diff_table.html:17 #: hypha/apply/projects/models/vendor.py:20 #: hypha/apply/projects/models/vendor.py:57 -#: hypha/apply/projects/templates/application_projects/project_detail.html:110 #: hypha/apply/projects/templates/application_projects/project_simplified_detail.html:55 msgid "Address" msgstr "" -#: hypha/apply/funds/blocks.py:183 hypha/apply/stream_forms/blocks.py:465 -#: hypha/apply/stream_forms/blocks.py:466 -#: hypha/apply/stream_forms/blocks.py:481 -#: hypha/apply/stream_forms/blocks.py:482 hypha/apply/utils/blocks.py:74 +#: hypha/apply/funds/blocks.py:102 +msgid "What is your name?" +msgstr "" + +#: hypha/apply/funds/blocks.py:104 +msgid "We will use this name when we communicate with you about your proposal." +msgstr "" + +#: hypha/apply/funds/blocks.py:192 hypha/apply/stream_forms/blocks.py:466 +#: hypha/apply/stream_forms/blocks.py:467 +#: hypha/apply/stream_forms/blocks.py:482 +#: hypha/apply/stream_forms/blocks.py:483 hypha/apply/utils/blocks.py:84 msgid "Custom" msgstr "" -#: hypha/apply/funds/forms.py:59 hypha/apply/funds/forms.py:78 +#: hypha/apply/funds/forms.py:60 hypha/apply/funds/forms.py:79 msgid "Take action" msgstr "" -#: hypha/apply/funds/forms.py:138 hypha/apply/projects/forms/project.py:189 +#: hypha/apply/funds/forms.py:139 hypha/apply/projects/forms/project.py:182 #, python-brace-format msgid "Update lead from {lead} to" msgstr "" -#: hypha/apply/funds/forms.py:143 +#: hypha/apply/funds/forms.py:144 #: hypha/apply/funds/templates/funds/applicationsubmission_detail.html:25 #: hypha/apply/funds/templates/funds/applicationsubmission_detail.html:27 #: hypha/apply/funds/templates/funds/applicationsubmission_simplified_detail.html:20 @@ -1514,51 +1559,49 @@ msgstr "" #: hypha/apply/funds/templates/funds/submission_sealed.html:14 #: hypha/apply/funds/templates/funds/submissions_by_round.html:12 #: hypha/apply/projects/filters.py:28 hypha/apply/projects/filters.py:42 -#: hypha/apply/projects/tables.py:49 +#: hypha/apply/projects/tables.py:45 #: hypha/apply/projects/templates/application_projects/project_admin_detail.html:104 #: hypha/apply/projects/templates/application_projects/project_simplified_detail.html:19 msgid "Lead" msgstr "" -#: hypha/apply/funds/forms.py:195 hypha/apply/funds/tables.py:259 -#: hypha/apply/funds/tables.py:443 -#: hypha/apply/funds/templates/funds/includes/admin_primary_actions.html:48 -#: hypha/apply/funds/templates/funds/includes/table_filter_and_search.html:37 -msgid "Reviewers" +#: hypha/apply/funds/forms.py:196 +#: hypha/apply/projects/templates/application_projects/project_simplified_detail.html:113 +msgid "External Reviewers" msgstr "" -#: hypha/apply/funds/forms.py:260 +#: hypha/apply/funds/forms.py:267 msgid "Can't unassign, just change, because review already submitted" msgstr "" -#: hypha/apply/funds/forms.py:265 hypha/apply/funds/forms.py:338 +#: hypha/apply/funds/forms.py:272 hypha/apply/funds/forms.py:345 msgid "Users cannot be assigned to multiple roles." msgstr "" -#: hypha/apply/funds/forms.py:364 +#: hypha/apply/funds/forms.py:371 msgid "-- No reviewer selected --" msgstr "" -#: hypha/apply/funds/forms.py:366 +#: hypha/apply/funds/forms.py:373 #, python-brace-format msgid "{role_name} Reviewer" msgstr "" -#: hypha/apply/funds/forms.py:381 +#: hypha/apply/funds/forms.py:388 #: hypha/apply/funds/templates/funds/includes/admin_primary_actions.html:49 msgid "Partners" msgstr "" -#: hypha/apply/funds/forms.py:442 +#: hypha/apply/funds/forms.py:449 msgid "Meta terms" msgstr "" -#: hypha/apply/funds/forms.py:445 +#: hypha/apply/funds/forms.py:452 msgid "Meta terms are hierarchical in nature." msgstr "" #: hypha/apply/funds/models/__init__.py:17 hypha/apply/funds/tables.py:74 -#: hypha/apply/projects/tables.py:48 hypha/apply/projects/tables.py:80 +#: hypha/apply/projects/tables.py:44 hypha/apply/projects/tables.py:69 msgid "Fund" msgstr "" @@ -1570,50 +1613,50 @@ msgstr "" msgid "Lab" msgstr "" -#: hypha/apply/funds/models/applications.py:82 -#: hypha/apply/funds/models/applications.py:418 +#: hypha/apply/funds/models/applications.py:74 +#: hypha/apply/funds/models/applications.py:402 msgid "Link to the apply guide." msgstr "" -#: hypha/apply/funds/models/applications.py:84 +#: hypha/apply/funds/models/applications.py:76 msgid "" "The slack #channel for notifications. If left empty, notifications will go " "to the default channel." msgstr "" -#: hypha/apply/funds/models/applications.py:126 -#: hypha/apply/funds/models/applications.py:196 -#: hypha/apply/funds/models/applications.py:434 +#: hypha/apply/funds/models/applications.py:117 +#: hypha/apply/funds/models/applications.py:187 +#: hypha/apply/funds/models/applications.py:417 msgid "Content" msgstr "" -#: hypha/apply/funds/models/applications.py:128 -#: hypha/apply/funds/models/applications.py:197 -#: hypha/apply/funds/models/applications.py:436 +#: hypha/apply/funds/models/applications.py:119 +#: hypha/apply/funds/models/applications.py:188 +#: hypha/apply/funds/models/applications.py:419 msgid "Promote" msgstr "" -#: hypha/apply/funds/models/applications.py:175 +#: hypha/apply/funds/models/applications.py:166 msgid "When no end date is provided the round will remain open indefinitely." msgstr "" -#: hypha/apply/funds/models/applications.py:186 +#: hypha/apply/funds/models/applications.py:177 msgid "Dates" msgstr "" -#: hypha/apply/funds/models/applications.py:188 +#: hypha/apply/funds/models/applications.py:179 #: hypha/apply/funds/models/utils.py:52 msgid "Workflow" msgstr "" -#: hypha/apply/funds/models/applications.py:188 -#: hypha/apply/funds/models/applications.py:190 -#: hypha/apply/funds/models/applications.py:191 -#: hypha/apply/funds/models/applications.py:192 +#: hypha/apply/funds/models/applications.py:179 +#: hypha/apply/funds/models/applications.py:181 +#: hypha/apply/funds/models/applications.py:182 +#: hypha/apply/funds/models/applications.py:183 msgid "Copied from the fund." msgstr "" -#: hypha/apply/funds/models/applications.py:420 +#: hypha/apply/funds/models/applications.py:404 msgid "The slack #channel for notifications." msgstr "" @@ -1621,23 +1664,23 @@ msgstr "" msgid "The order this role should appear in the Update Reviewers form." msgstr "" -#: hypha/apply/funds/models/reviewer_role.py:63 +#: hypha/apply/funds/models/reviewer_role.py:64 msgid "Submissions for which reviewers should have access to" msgstr "" -#: hypha/apply/funds/models/reviewer_role.py:69 +#: hypha/apply/funds/models/reviewer_role.py:70 msgid "Submissions states for which reviewers should have access to" msgstr "" -#: hypha/apply/funds/models/reviewer_role.py:75 +#: hypha/apply/funds/models/reviewer_role.py:76 msgid "Submissions outcomes for which reviewers should have access to" msgstr "" -#: hypha/apply/funds/models/reviewer_role.py:79 +#: hypha/apply/funds/models/reviewer_role.py:80 msgid "Submissions for which reviewer is assigned to" msgstr "" -#: hypha/apply/funds/models/reviewer_role.py:83 +#: hypha/apply/funds/models/reviewer_role.py:84 msgid "Use the above configured variables to filter out submissions" msgstr "" @@ -1680,14 +1723,14 @@ msgstr "" #: hypha/apply/funds/tables.py:72 #: hypha/apply/funds/templates/funds/includes/table_filter_and_search.html:27 #: hypha/apply/projects/filters.py:27 hypha/apply/projects/filters.py:43 -#: hypha/apply/projects/tables.py:79 -#: hypha/apply/projects/templates/application_projects/includes/invoices.html:16 +#: hypha/apply/projects/tables.py:68 +#: hypha/apply/projects/templates/application_projects/includes/invoices.html:17 #: hypha/apply/projects/templates/application_projects/includes/invoices.html:26 -#: hypha/apply/projects/templates/application_projects/includes/invoices.html:63 +#: hypha/apply/projects/templates/application_projects/includes/invoices.html:62 #: hypha/apply/projects/templates/application_projects/includes/invoices.html:71 #: hypha/apply/projects/templates/application_projects/invoice_confirm_delete.html:20 #: hypha/apply/projects/templates/application_projects/invoice_detail.html:19 -#: hypha/apply/users/templates/wagtailusers/users/list.html:23 +#: hypha/apply/users/templates/wagtailusers/users/list.html:24 #: hypha/public/partner/tables.py:51 hypha/public/partner/tables.py:97 msgid "Status" msgstr "" @@ -1715,7 +1758,7 @@ msgid "Screening" msgstr "" #: hypha/apply/funds/tables.py:169 -#: hypha/apply/users/templates/wagtailusers/users/list.html:21 +#: hypha/apply/users/templates/wagtailusers/users/list.html:22 msgid "Role" msgstr "" @@ -1741,6 +1784,12 @@ msgstr "" msgid "Leads" msgstr "" +#: hypha/apply/funds/tables.py:259 hypha/apply/funds/tables.py:443 +#: hypha/apply/funds/templates/funds/includes/admin_primary_actions.html:48 +#: hypha/apply/funds/templates/funds/includes/table_filter_and_search.html:37 +msgid "Reviewers" +msgstr "" + #: hypha/apply/funds/tables.py:260 msgid "No Status" msgstr "" @@ -1852,7 +1901,7 @@ msgid "Revisions for %(title)s" msgstr "" #: hypha/apply/funds/templates/funds/applicationrevision_list.html:8 -#: hypha/apply/funds/templates/funds/includes/admin_primary_actions.html:53 +#: hypha/apply/funds/templates/funds/includes/admin_primary_actions.html:55 msgid "Revisions" msgstr "" @@ -1899,7 +1948,7 @@ msgstr "" #: hypha/apply/funds/templates/funds/applicationsubmission_confirm_delete.html:19 #: hypha/apply/funds/templates/funds/includes/create_project_form.html:6 #: hypha/apply/funds/templates/funds/reminder_confirm_delete.html:18 -#: hypha/apply/projects/templates/application_projects/invoice_confirm_delete.html:30 +#: hypha/apply/projects/templates/application_projects/invoice_confirm_delete.html:28 #: hypha/apply/projects/templates/application_projects/project_admin_detail.html:52 #: hypha/apply/review/templates/review/review_confirm_delete.html:18 msgid "Confirm" @@ -1942,19 +1991,19 @@ msgstr "" #: hypha/apply/funds/templates/funds/applicationsubmission_detail.html:75 #: hypha/apply/funds/templates/funds/includes/batch_delete_submission_form.html:14 -#: hypha/apply/funds/templates/funds/includes/delegated_form_base.html:34 +#: hypha/apply/funds/templates/funds/includes/delegated_form_base.html:33 #: hypha/apply/funds/templates/funds/includes/table_filter_and_search.html:42 -#: hypha/apply/projects/templates/application_projects/invoice_detail.html:63 +#: hypha/apply/projects/templates/application_projects/invoice_detail.html:65 #: hypha/apply/review/templates/review/review_detail.html:33 msgid "Delete" msgstr "" -#: hypha/apply/funds/templates/funds/applicationsubmission_detail.html:131 +#: hypha/apply/funds/templates/funds/applicationsubmission_detail.html:126 msgid "Related submissions" msgstr "" -#: hypha/apply/funds/templates/funds/applicationsubmission_detail.html:133 -#: hypha/apply/funds/templates/funds/applicationsubmission_detail.html:137 +#: hypha/apply/funds/templates/funds/applicationsubmission_detail.html:128 +#: hypha/apply/funds/templates/funds/applicationsubmission_detail.html:132 msgid "View linked" msgstr "" @@ -2015,8 +2064,8 @@ msgstr "" #: hypha/apply/funds/templates/funds/includes/admin_primary_actions.html:2 #: hypha/apply/funds/templates/funds/includes/generic_primary_actions.html:5 -#: hypha/apply/projects/templates/application_projects/project_detail.html:145 -#: hypha/apply/projects/templates/application_projects/project_detail.html:150 +#: hypha/apply/projects/templates/application_projects/project_detail.html:116 +#: hypha/apply/projects/templates/application_projects/project_detail.html:121 msgid "Actions to take" msgstr "" @@ -2058,12 +2107,16 @@ msgstr "" msgid "Assign" msgstr "" -#: hypha/apply/funds/templates/funds/includes/admin_primary_actions.html:55 +#: hypha/apply/funds/templates/funds/includes/admin_primary_actions.html:54 +msgid "More actions" +msgstr "" + +#: hypha/apply/funds/templates/funds/includes/admin_primary_actions.html:57 #: hypha/apply/funds/templates/funds/includes/meta_terms_block.html:3 msgid "Meta Terms" msgstr "" -#: hypha/apply/funds/templates/funds/includes/admin_primary_actions.html:57 +#: hypha/apply/funds/templates/funds/includes/admin_primary_actions.html:59 #: hypha/apply/funds/templates/funds/includes/create_reminder_form.html:3 msgid "Create Reminder" msgstr "" @@ -2083,6 +2136,7 @@ msgid "" msgstr "" #: hypha/apply/funds/templates/funds/includes/batch_progress_form.html:3 +#: hypha/apply/projects/templates/application_projects/invoice_admin_detail.html:35 msgid "Update Status" msgstr "" @@ -2093,7 +2147,6 @@ msgstr "" #: hypha/apply/funds/templates/funds/includes/update_meta_terms_form.html:4 #: hypha/apply/funds/templates/funds/includes/update_partner_form.html:4 #: hypha/apply/funds/templates/funds/includes/update_reviewer_form.html:4 -#: hypha/apply/projects/templates/application_projects/invoice_admin_detail.html:29 #: hypha/apply/projects/templates/application_projects/project_admin_detail.html:29 msgid "Update" msgstr "" @@ -2107,7 +2160,9 @@ msgid "Add Reviewers" msgstr "" #: hypha/apply/funds/templates/funds/includes/create_project_form.html:4 -msgid "This will create a new project and notify the Applicant." +msgid "" +"This will create a new project. The Applicant will be notified only after a " +"lead has been set for the project." msgstr "" #: hypha/apply/funds/templates/funds/includes/create_project_form.html:5 @@ -2121,12 +2176,12 @@ msgstr "" msgid "Create" msgstr "" -#: hypha/apply/funds/templates/funds/includes/delegated_form_base.html:29 +#: hypha/apply/funds/templates/funds/includes/delegated_form_base.html:28 #: hypha/apply/funds/templates/funds/includes/table_filter_and_search.html:71 msgid "Close" msgstr "" -#: hypha/apply/funds/templates/funds/includes/delegated_form_base.html:30 +#: hypha/apply/funds/templates/funds/includes/delegated_form_base.html:29 #: hypha/apply/projects/templates/application_projects/includes/report_line.html:41 #: hypha/apply/projects/templates/application_projects/project_form.html:30 #: hypha/apply/projects/templates/application_projects/report_form.html:55 @@ -2141,7 +2196,7 @@ msgid "" msgstr "" #: hypha/apply/funds/templates/funds/includes/progress_form.html:5 -#: hypha/apply/projects/templates/application_projects/invoice_admin_detail.html:28 +#: hypha/apply/projects/templates/application_projects/invoice_admin_detail.html:34 msgid "Current status" msgstr "" @@ -2167,23 +2222,23 @@ msgstr "" msgid "Requested Funding" msgstr "" -#: hypha/apply/funds/templates/funds/includes/rendered_answers.html:12 +#: hypha/apply/funds/templates/funds/includes/rendered_answers.html:13 #: hypha/apply/funds/templates/funds/includes/revision_diff_table.html:15 msgid "Project Duration" msgstr "" -#: hypha/apply/funds/templates/funds/includes/rendered_answers.html:17 +#: hypha/apply/funds/templates/funds/includes/rendered_answers.html:19 #: hypha/apply/funds/templates/funds/includes/revision_diff_table.html:9 msgid "Legal Name" msgstr "" -#: hypha/apply/funds/templates/funds/includes/rendered_answers.html:18 +#: hypha/apply/funds/templates/funds/includes/rendered_answers.html:20 msgid "Edit account" msgstr "" -#: hypha/apply/funds/templates/funds/includes/rendered_answers.html:22 +#: hypha/apply/funds/templates/funds/includes/rendered_answers.html:24 #: hypha/apply/funds/templates/funds/includes/revision_diff_table.html:11 -#: hypha/apply/projects/templates/application_projects/project_detail.html:97 +#: hypha/apply/projects/templates/application_projects/project_detail.html:87 #: hypha/apply/projects/templates/application_projects/project_simplified_detail.html:50 msgid "E-mail" msgstr "" @@ -2237,7 +2292,7 @@ msgstr "" #: hypha/apply/funds/templates/funds/includes/submission_stats.html:13 #: hypha/apply/funds/workflow.py:300 hypha/apply/funds/workflow.py:454 #: hypha/apply/funds/workflow.py:633 hypha/apply/funds/workflow.py:908 -#: hypha/apply/funds/workflow.py:1141 +#: hypha/apply/funds/workflow.py:1151 msgid "Accepted" msgstr "" @@ -2303,6 +2358,7 @@ msgid "Filter by" msgstr "" #: hypha/apply/funds/templates/funds/includes/table_filter_and_search.html:78 +#: hypha/apply/users/templates/wagtailusers/users/results.html:37 msgid "Filter" msgstr "" @@ -2394,6 +2450,14 @@ msgstr "" msgid "All Submissions" msgstr "" +#: hypha/apply/funds/templates/funds/submissions_awaiting_review.html:5 +msgid "Awaiting Review" +msgstr "" + +#: hypha/apply/funds/templates/funds/submissions_awaiting_review.html:11 +msgid "Waiting for your Review" +msgstr "" + #: hypha/apply/funds/templates/funds/submissions_overview.html:12 msgid "Track and explore recent submissions" msgstr "" @@ -2465,45 +2529,45 @@ msgstr "" msgid "Awaiting" msgstr "" -#: hypha/apply/funds/templates/funds/tables/table.html:96 +#: hypha/apply/funds/templates/funds/tables/table.html:95 msgid "Linked" msgstr "" -#: hypha/apply/funds/templates/funds/tables/table.html:130 +#: hypha/apply/funds/templates/funds/tables/table.html:129 #: hypha/public/partner/templates/partner/table.html:42 #: hypha/templates/includes/pagination.html:6 msgid "previous" msgstr "" -#: hypha/apply/funds/templates/funds/tables/table.html:137 +#: hypha/apply/funds/templates/funds/tables/table.html:136 msgid "Page" msgstr "" -#: hypha/apply/funds/templates/funds/tables/table.html:144 +#: hypha/apply/funds/templates/funds/tables/table.html:143 #: hypha/apply/projects/templates/application_projects/includes/report_line.html:5 #: hypha/public/partner/templates/partner/table.html:56 #: hypha/templates/includes/pagination.html:14 msgid "next" msgstr "" -#: hypha/apply/funds/views.py:231 hypha/apply/funds/views.py:263 -#: hypha/apply/funds/views.py:284 hypha/apply/projects/views/project.py:319 +#: hypha/apply/funds/views.py:232 hypha/apply/funds/views.py:264 +#: hypha/apply/funds/views.py:285 hypha/apply/projects/views/project.py:328 msgid "Sorry something went wrong" msgstr "" -#: hypha/apply/funds/views.py:327 +#: hypha/apply/funds/views.py:328 msgid "Failed to update: " msgstr "" -#: hypha/apply/funds/views.py:500 hypha/apply/funds/views.py:503 +#: hypha/apply/funds/views.py:524 hypha/apply/funds/views.py:527 msgid "No Round or Lab found matching the query" msgstr "" -#: hypha/apply/funds/views.py:526 +#: hypha/apply/funds/views.py:550 msgid "No statuses match the requested value" msgstr "" -#: hypha/apply/funds/views.py:1024 +#: hypha/apply/funds/views.py:1035 msgid "Submission saved successfully" msgstr "" @@ -2604,7 +2668,7 @@ msgstr "" #: hypha/apply/funds/workflow.py:248 hypha/apply/funds/workflow.py:369 #: hypha/apply/funds/workflow.py:537 hypha/apply/funds/workflow.py:708 -#: hypha/apply/funds/workflow.py:822 hypha/apply/funds/workflow.py:1117 +#: hypha/apply/funds/workflow.py:822 hypha/apply/funds/workflow.py:1127 msgid "Internal Review" msgstr "" @@ -2636,7 +2700,7 @@ msgid "Ready For Discussion (revert)" msgstr "" #: hypha/apply/funds/workflow.py:293 hypha/apply/funds/workflow.py:447 -#: hypha/apply/funds/workflow.py:626 hypha/apply/funds/workflow.py:1137 +#: hypha/apply/funds/workflow.py:626 hypha/apply/funds/workflow.py:1147 msgid "Ready for Determination" msgstr "" @@ -2663,7 +2727,7 @@ msgid "Open Internal Review (revert)" msgstr "" #: hypha/apply/funds/workflow.py:407 hypha/apply/funds/workflow.py:586 -#: hypha/apply/funds/workflow.py:861 hypha/apply/funds/workflow.py:1133 +#: hypha/apply/funds/workflow.py:861 hypha/apply/funds/workflow.py:1143 msgid "External Review" msgstr "" @@ -2713,7 +2777,7 @@ msgstr "" msgid "Ready For Final Determination" msgstr "" -#: hypha/apply/funds/workflow.py:782 hypha/apply/funds/workflow.py:1129 +#: hypha/apply/funds/workflow.py:782 hypha/apply/funds/workflow.py:1139 msgid "Invited for Proposal" msgstr "" @@ -2733,15 +2797,15 @@ msgstr "" msgid "Final Determination" msgstr "" -#: hypha/apply/funds/workflow.py:1113 +#: hypha/apply/funds/workflow.py:1123 msgid "Received" msgstr "" -#: hypha/apply/funds/workflow.py:1121 +#: hypha/apply/funds/workflow.py:1131 msgid "Ready for Discussion" msgstr "" -#: hypha/apply/funds/workflow.py:1125 +#: hypha/apply/funds/workflow.py:1135 msgid "More Information Requested" msgstr "" @@ -2755,25 +2819,25 @@ msgstr "" msgid "Reporting Period" msgstr "" -#: hypha/apply/projects/forms/payment.py:63 -msgid "You can only set a value when moving to the Paid status." +#: hypha/apply/projects/forms/payment.py:75 +msgid "Required checks on this invoice need to be compeleted for approval." msgstr "" -#: hypha/apply/projects/forms/payment.py:86 -msgid "Date From must be before Date To" +#: hypha/apply/projects/forms/payment.py:92 +msgid "The invoice must be a PDF." msgstr "" -#: hypha/apply/projects/forms/payment.py:95 +#: hypha/apply/projects/forms/payment.py:96 msgid "" "Files that are related to the invoice. They could be xls, microsoft office " "documents, open office documents, pdfs, txt files." msgstr "" -#: hypha/apply/projects/forms/payment.py:114 +#: hypha/apply/projects/forms/payment.py:115 msgid "Invoice File" msgstr "" -#: hypha/apply/projects/forms/payment.py:165 +#: hypha/apply/projects/forms/payment.py:166 msgid "File not found on submission" msgstr "" @@ -2793,15 +2857,15 @@ msgstr "" msgid "Cannot approve for a different user" msgstr "" -#: hypha/apply/projects/forms/project.py:143 +#: hypha/apply/projects/forms/project.py:136 msgid "A Project can only be sent for Approval when Committed." msgstr "" -#: hypha/apply/projects/forms/project.py:146 +#: hypha/apply/projects/forms/project.py:139 msgid "A Project can only be sent for Approval once" msgstr "" -#: hypha/apply/projects/forms/project.py:173 +#: hypha/apply/projects/forms/project.py:166 msgid "File Name" msgstr "" @@ -2833,78 +2897,102 @@ msgstr "" msgid "Cannot start a schedule beyond the end date" msgstr "" -#: hypha/apply/projects/forms/vendor.py:49 +#: hypha/apply/projects/forms/vendor.py:50 #: hypha/apply/projects/models/vendor.py:46 msgid "Yes, the account belongs to the organisation above" msgstr "" -#: hypha/apply/projects/forms/vendor.py:50 +#: hypha/apply/projects/forms/vendor.py:51 #: hypha/apply/projects/models/vendor.py:47 msgid "No, it is a personal bank account" msgstr "" -#: hypha/apply/projects/forms/vendor.py:105 hypha/apply/review/options.py:23 +#: hypha/apply/projects/forms/vendor.py:106 hypha/apply/review/options.py:23 msgid "No" msgstr "" -#: hypha/apply/projects/forms/vendor.py:105 hypha/apply/review/options.py:25 +#: hypha/apply/projects/forms/vendor.py:106 hypha/apply/review/options.py:25 msgid "Yes" msgstr "" -#: hypha/apply/projects/models/payment.py:22 -msgid "Changes Requested" +#: hypha/apply/projects/models/payment.py:32 +msgid "Resubmitted" +msgstr "" + +#: hypha/apply/projects/models/payment.py:33 +msgid "Changes Requested by Staff" +msgstr "" + +#: hypha/apply/projects/models/payment.py:34 +msgid "Changes Requested by Finance 1" +msgstr "" + +#: hypha/apply/projects/models/payment.py:35 +msgid "Changes Requested by Finance 2" msgstr "" -#: hypha/apply/projects/models/payment.py:23 -msgid "Under Review" +#: hypha/apply/projects/models/payment.py:36 +msgid "Approved by Staff" msgstr "" -#: hypha/apply/projects/models/payment.py:24 +#: hypha/apply/projects/models/payment.py:37 +msgid "Approved by Finance 1" +msgstr "" + +#: hypha/apply/projects/models/payment.py:38 +msgid "Approved by Finance 2" +msgstr "" + +#: hypha/apply/projects/models/payment.py:39 msgid "Paid" msgstr "" -#: hypha/apply/projects/models/payment.py:25 +#: hypha/apply/projects/models/payment.py:40 +msgid "Converted" +msgstr "" + +#: hypha/apply/projects/models/payment.py:41 msgid "Declined" msgstr "" -#: hypha/apply/projects/models/payment.py:64 +#: hypha/apply/projects/models/payment.py:108 msgid "Quantity Selected on an Invoice" msgstr "" -#: hypha/apply/projects/models/payment.py:97 +#: hypha/apply/projects/models/payment.py:133 msgid "Message" msgstr "" -#: hypha/apply/projects/models/payment.py:107 +#: hypha/apply/projects/models/payment.py:152 #, python-brace-format msgid "Invoice requested for {project}" msgstr "" -#: hypha/apply/projects/models/project.py:51 +#: hypha/apply/projects/models/project.py:48 msgid "Committed" msgstr "" -#: hypha/apply/projects/models/project.py:52 +#: hypha/apply/projects/models/project.py:49 msgid "Contracting" msgstr "" -#: hypha/apply/projects/models/project.py:53 +#: hypha/apply/projects/models/project.py:50 msgid "In Progress" msgstr "" -#: hypha/apply/projects/models/project.py:54 +#: hypha/apply/projects/models/project.py:51 msgid "Closing" msgstr "" -#: hypha/apply/projects/models/project.py:55 +#: hypha/apply/projects/models/project.py:52 msgid "Complete" msgstr "" -#: hypha/apply/projects/models/project.py:147 +#: hypha/apply/projects/models/project.py:139 msgid "Proposed Start Date" msgstr "" -#: hypha/apply/projects/models/project.py:148 +#: hypha/apply/projects/models/project.py:140 msgid "Proposed End Date" msgstr "" @@ -2912,27 +3000,27 @@ msgstr "" msgid "Proposed End Date must be after Proposed Start Date" msgstr "" -#: hypha/apply/projects/models/project.py:392 +#: hypha/apply/projects/models/project.py:391 #, python-brace-format msgid "Approval of {project} by {user}" msgstr "" -#: hypha/apply/projects/models/project.py:414 -#: hypha/apply/projects/templates/application_projects/project_detail.html:222 +#: hypha/apply/projects/models/project.py:413 +#: hypha/apply/projects/templates/application_projects/project_detail.html:193 msgid "Signed" msgstr "" -#: hypha/apply/projects/models/project.py:414 -#: hypha/apply/projects/templates/application_projects/project_detail.html:233 +#: hypha/apply/projects/models/project.py:413 +#: hypha/apply/projects/templates/application_projects/project_detail.html:204 msgid "Unsigned" msgstr "" -#: hypha/apply/projects/models/project.py:417 +#: hypha/apply/projects/models/project.py:416 #, python-brace-format msgid "Contract for {project} ({state})" msgstr "" -#: hypha/apply/projects/models/project.py:431 +#: hypha/apply/projects/models/project.py:430 #, python-brace-format msgid "Project file: {title}" msgstr "" @@ -2978,34 +3066,29 @@ msgid "Every {occurrence} weeks on {weekday}" msgstr "" #: hypha/apply/projects/tables.py:16 -msgid "Invoice reference" -msgstr "" - -#: hypha/apply/projects/tables.py:22 -#, python-brace-format -msgid "Value ({currency})" -msgstr "" - -#: hypha/apply/projects/tables.py:29 -msgid "Period Start" +#: hypha/apply/projects/templates/application_projects/includes/invoices.html:16 +#: hypha/apply/projects/templates/application_projects/includes/invoices.html:25 +#: hypha/apply/projects/templates/application_projects/includes/invoices.html:61 +#: hypha/apply/projects/templates/application_projects/includes/invoices.html:70 +#: hypha/apply/projects/templates/application_projects/invoice_confirm_delete.html:22 +#: hypha/apply/projects/templates/application_projects/invoice_detail.html:21 +msgid "Invoice Number" msgstr "" -#: hypha/apply/projects/tables.py:30 -#: hypha/apply/projects/templates/application_projects/includes/reports.html:62 -#: hypha/apply/projects/templates/application_projects/includes/reports.html:71 -msgid "Period End" +#: hypha/apply/projects/tables.py:20 +msgid "Project Name" msgstr "" -#: hypha/apply/projects/tables.py:81 +#: hypha/apply/projects/tables.py:70 #: hypha/apply/projects/templates/application_projects/includes/reports.html:5 msgid "Reporting" msgstr "" -#: hypha/apply/projects/tables.py:83 +#: hypha/apply/projects/tables.py:72 msgid "End Date" msgstr "" -#: hypha/apply/projects/tables.py:84 +#: hypha/apply/projects/tables.py:73 #, python-brace-format msgid "Fund Allocation ({currency})" msgstr "" @@ -3018,41 +3101,33 @@ msgstr "" msgid "to" msgstr "" -#: hypha/apply/projects/templates/application_projects/includes/deliverables_block.html:3 +#: hypha/apply/projects/templates/application_projects/includes/deliverables_block.html:5 msgid "Choose deliverables" msgstr "" -#: hypha/apply/projects/templates/application_projects/includes/deliverables_block.html:7 +#: hypha/apply/projects/templates/application_projects/includes/deliverables_block.html:9 msgid "Invoice Covers Deliverables" msgstr "" -#: hypha/apply/projects/templates/application_projects/includes/deliverables_block.html:15 +#: hypha/apply/projects/templates/application_projects/includes/deliverables_block.html:17 msgid "Available to invoice:" msgstr "" -#: hypha/apply/projects/templates/application_projects/includes/deliverables_block.html:19 +#: hypha/apply/projects/templates/application_projects/includes/deliverables_block.html:21 msgid "Quantity:" msgstr "" #: hypha/apply/projects/templates/application_projects/includes/deliverables_block.html:29 -#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:123 -msgid "Remove" +msgid "Deliverables" msgstr "" #: hypha/apply/projects/templates/application_projects/includes/deliverables_block.html:35 -msgid "Total:" -msgstr "" - -#: hypha/apply/projects/templates/application_projects/includes/funding_block.html:4 -msgid "Fund total" -msgstr "" - -#: hypha/apply/projects/templates/application_projects/includes/funding_block.html:8 -msgid "Total paid" +#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:125 +msgid "Remove" msgstr "" -#: hypha/apply/projects/templates/application_projects/includes/funding_block.html:13 -msgid "Awaiting payment" +#: hypha/apply/projects/templates/application_projects/includes/deliverables_block.html:41 +msgid "Total:" msgstr "" #: hypha/apply/projects/templates/application_projects/includes/invoice_block.html:4 @@ -3073,32 +3148,15 @@ msgid "Invoices" msgstr "" #: hypha/apply/projects/templates/application_projects/includes/invoices.html:8 -#: hypha/apply/projects/templates/application_projects/project_detail.html:184 +#: hypha/apply/projects/templates/application_projects/project_detail.html:155 msgid "Add Invoice" msgstr "" -#: hypha/apply/projects/templates/application_projects/includes/invoices.html:15 -#: hypha/apply/projects/templates/application_projects/includes/invoices.html:25 -#: hypha/apply/projects/templates/application_projects/includes/invoices.html:62 -#: hypha/apply/projects/templates/application_projects/includes/invoices.html:70 -msgid "Amount" -msgstr "" - -#: hypha/apply/projects/templates/application_projects/includes/invoices.html:17 -#: hypha/apply/projects/templates/application_projects/includes/invoices.html:27 -msgid "From" -msgstr "" - -#: hypha/apply/projects/templates/application_projects/includes/invoices.html:18 -#: hypha/apply/projects/templates/application_projects/includes/invoices.html:28 -msgid "To" -msgstr "" - -#: hypha/apply/projects/templates/application_projects/includes/invoices.html:48 +#: hypha/apply/projects/templates/application_projects/includes/invoices.html:46 msgid "No active Invoices." msgstr "" -#: hypha/apply/projects/templates/application_projects/includes/invoices.html:56 +#: hypha/apply/projects/templates/application_projects/includes/invoices.html:54 msgid "Show rejected" msgstr "" @@ -3176,6 +3234,11 @@ msgstr "" msgid "Past reports" msgstr "" +#: hypha/apply/projects/templates/application_projects/includes/reports.html:62 +#: hypha/apply/projects/templates/application_projects/includes/reports.html:71 +msgid "Period End" +msgstr "" + #: hypha/apply/projects/templates/application_projects/includes/reports.html:87 msgid "Unskip" msgstr "" @@ -3185,86 +3248,93 @@ msgid "No reports submitted" msgstr "" #: hypha/apply/projects/templates/application_projects/includes/reports.html:102 -#: hypha/apply/projects/templates/application_projects/project_detail.html:106 msgid "Show more" msgstr "" +#: hypha/apply/projects/templates/application_projects/includes/required_checks_block.html:5 +msgid "Required Checks" +msgstr "" + +#: hypha/apply/projects/templates/application_projects/includes/required_checks_block.html:8 +msgid "Make sure valid OFAC and SAM check, and W8/W9 are on file" +msgstr "" + +#: hypha/apply/projects/templates/application_projects/includes/required_checks_block.html:17 +msgid "Link to SAM/OFAC/W8/W9:" +msgstr "" + #: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:6 -#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:75 +#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:77 msgid "Supporting documents" msgstr "" -#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:18 -#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:113 +#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:20 +#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:115 msgid "Download" msgstr "" -#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:26 -#: hypha/apply/projects/templates/application_projects/project_detail.html:200 +#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:28 +#: hypha/apply/projects/templates/application_projects/project_detail.html:171 #: hypha/apply/projects/views/vendor.py:250 msgid "Contracting Information" msgstr "" -#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:34 -#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:58 +#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:36 +#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:60 msgid "Fill in" msgstr "" -#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:50 +#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:52 msgid "Approval Form" msgstr "" -#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:84 -#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:87 +#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:86 +#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:89 msgid "Choose file" msgstr "" -#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:89 +#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:91 msgid "Upload new" msgstr "" -#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:94 +#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:96 msgid "Every project should include the following documents" msgstr "" -#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:141 +#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:143 #: hypha/apply/projects/templates/application_projects/project_admin_detail.html:74 msgid "Submit for Approval" msgstr "" -#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:148 +#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:150 msgid "Select a document" msgstr "" -#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:150 +#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:152 msgid "Copy" msgstr "" -#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:155 +#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:157 msgid "Upload a new document" msgstr "" -#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:157 -#: hypha/apply/projects/templates/application_projects/project_detail.html:169 +#: hypha/apply/projects/templates/application_projects/includes/supporting_documents.html:159 +#: hypha/apply/projects/templates/application_projects/project_detail.html:140 msgid "Upload" msgstr "" -#: hypha/apply/projects/templates/application_projects/invoice_admin_detail.html:18 -msgid "Cannot change from 'Paid' or 'Declined' state" -msgstr "" - -#: hypha/apply/projects/templates/application_projects/invoice_admin_detail.html:23 -msgid "Change Status" +#: hypha/apply/projects/templates/application_projects/invoice_admin_detail.html:29 +msgid "Update Invoice Status" msgstr "" -#: hypha/apply/projects/templates/application_projects/invoice_admin_detail.html:27 -msgid "Change status" +#: hypha/apply/projects/templates/application_projects/invoice_admin_detail.html:33 +msgid "Update Invoice status" msgstr "" #: hypha/apply/projects/templates/application_projects/invoice_confirm_delete.html:4 #: hypha/apply/projects/templates/application_projects/invoice_detail.html:4 #: hypha/apply/projects/templates/application_projects/invoice_detail.html:11 -#: hypha/apply/projects/templates/application_projects/invoice_detail.html:28 +#: hypha/apply/projects/templates/application_projects/invoice_detail.html:26 #: hypha/apply/projects/templates/application_projects/invoice_form.html:4 #: hypha/apply/projects/templates/application_projects/invoice_form.html:8 msgid "Invoice" @@ -3279,31 +3349,16 @@ msgstr "" msgid "Vendor" msgstr "" -#: hypha/apply/projects/templates/application_projects/invoice_confirm_delete.html:22 -#: hypha/apply/projects/templates/application_projects/invoice_detail.html:21 -msgid "Invoice Number" -msgstr "" - -#: hypha/apply/projects/templates/application_projects/invoice_confirm_delete.html:23 -#: hypha/apply/projects/templates/application_projects/invoice_detail.html:22 -msgid "Period of Performance" -msgstr "" - -#: hypha/apply/projects/templates/application_projects/invoice_confirm_delete.html:24 -#: hypha/apply/projects/templates/application_projects/invoice_detail.html:23 -msgid "Total" -msgstr "" - -#: hypha/apply/projects/templates/application_projects/invoice_confirm_delete.html:29 +#: hypha/apply/projects/templates/application_projects/invoice_confirm_delete.html:27 msgid "Are you sure you want to delete this invoice for" msgstr "" -#: hypha/apply/projects/templates/application_projects/invoice_detail.html:33 +#: hypha/apply/projects/templates/application_projects/invoice_detail.html:31 #: hypha/apply/projects/templates/application_projects/project_simplified_detail.html:125 msgid "Supporting Documents" msgstr "" -#: hypha/apply/projects/templates/application_projects/invoice_detail.html:48 +#: hypha/apply/projects/templates/application_projects/invoice_detail.html:50 msgid "" "Only editable when 'Submitted' or you have been requested to make changes" msgstr "" @@ -3439,59 +3494,38 @@ msgid "Project Information" msgstr "" #: hypha/apply/projects/templates/application_projects/project_detail.html:82 -#: hypha/apply/projects/templates/application_projects/project_simplified_detail.html:35 -msgid "Proposed start date" -msgstr "" - -#: hypha/apply/projects/templates/application_projects/project_detail.html:87 -#: hypha/apply/projects/templates/application_projects/project_simplified_detail.html:40 -msgid "Project Proposed end date" +msgid "Contractor" msgstr "" -#: hypha/apply/projects/templates/application_projects/project_detail.html:92 -#: hypha/apply/projects/templates/application_projects/project_simplified_detail.html:45 -msgid "Legal name" -msgstr "" - -#: hypha/apply/projects/templates/application_projects/project_detail.html:115 -#: hypha/apply/projects/templates/application_projects/project_simplified_detail.html:60 -msgid "Phone" -msgstr "" - -#: hypha/apply/projects/templates/application_projects/project_detail.html:120 -#: hypha/apply/projects/templates/application_projects/project_simplified_detail.html:65 -msgid "Value" -msgstr "" - -#: hypha/apply/projects/templates/application_projects/project_detail.html:158 +#: hypha/apply/projects/templates/application_projects/project_detail.html:129 msgid "Fill in Contracting Info" msgstr "" -#: hypha/apply/projects/templates/application_projects/project_detail.html:165 +#: hypha/apply/projects/templates/application_projects/project_detail.html:136 msgid "Upload Signed Contract" msgstr "" -#: hypha/apply/projects/templates/application_projects/project_detail.html:167 +#: hypha/apply/projects/templates/application_projects/project_detail.html:138 msgid "Upload Contract" msgstr "" -#: hypha/apply/projects/templates/application_projects/project_detail.html:177 +#: hypha/apply/projects/templates/application_projects/project_detail.html:148 msgid "Upload contract" msgstr "" -#: hypha/apply/projects/templates/application_projects/project_detail.html:196 +#: hypha/apply/projects/templates/application_projects/project_detail.html:167 msgid "Supporting Information" msgstr "" -#: hypha/apply/projects/templates/application_projects/project_detail.html:203 +#: hypha/apply/projects/templates/application_projects/project_detail.html:174 msgid "Approval form" msgstr "" -#: hypha/apply/projects/templates/application_projects/project_detail.html:214 +#: hypha/apply/projects/templates/application_projects/project_detail.html:185 msgid "Contracts" msgstr "" -#: hypha/apply/projects/templates/application_projects/project_detail.html:243 +#: hypha/apply/projects/templates/application_projects/project_detail.html:214 msgid "Approved by" msgstr "" @@ -3503,6 +3537,26 @@ msgstr "" msgid "No Projects Available." msgstr "" +#: hypha/apply/projects/templates/application_projects/project_simplified_detail.html:35 +msgid "Proposed start date" +msgstr "" + +#: hypha/apply/projects/templates/application_projects/project_simplified_detail.html:40 +msgid "Project Proposed end date" +msgstr "" + +#: hypha/apply/projects/templates/application_projects/project_simplified_detail.html:45 +msgid "Legal name" +msgstr "" + +#: hypha/apply/projects/templates/application_projects/project_simplified_detail.html:60 +msgid "Phone" +msgstr "" + +#: hypha/apply/projects/templates/application_projects/project_simplified_detail.html:65 +msgid "Value" +msgstr "" + #: hypha/apply/projects/templates/application_projects/project_simplified_detail.html:71 msgid "Sent to Compliance" msgstr "" @@ -3532,10 +3586,6 @@ msgstr "" msgid "No reviews" msgstr "" -#: hypha/apply/projects/templates/application_projects/project_simplified_detail.html:113 -msgid "External Reviewers" -msgstr "" - #: hypha/apply/projects/templates/application_projects/report_detail.html:4 msgid "Report" msgstr "" @@ -3663,8 +3713,17 @@ msgstr "" msgid "Visit Project Detail Page" msgstr "" -#: hypha/apply/projects/views/project.py:589 -#: hypha/apply/projects/views/project.py:636 +#: hypha/apply/projects/views/payment.py:55 +#: hypha/apply/projects/views/payment.py:209 +#, python-brace-format +msgid "<p>Invoice status updated to: {status}.</p>" +msgstr "" + +#: hypha/apply/projects/views/payment.py:155 +msgid "<p>Invoice created.</p>" +msgstr "" + +#: hypha/apply/projects/views/project.py:599 msgid "You are not allowed to edit the project at this time" msgstr "" @@ -3693,12 +3752,12 @@ msgstr "" msgid "Paragraph" msgstr "" -#: hypha/apply/review/models.py:160 +#: hypha/apply/review/models.py:159 #: hypha/apply/review/templates/review/review_detail.html:19 msgid "Recommendation" msgstr "" -#: hypha/apply/review/models.py:165 +#: hypha/apply/review/models.py:164 msgid "Visibility" msgstr "" @@ -3800,10 +3859,6 @@ msgstr "" msgid "Create Review" msgstr "" -#: hypha/apply/stream_forms/blocks.py:37 -msgid "Help text" -msgstr "" - #: hypha/apply/stream_forms/blocks.py:38 msgid "Help link" msgstr "" @@ -3908,29 +3963,34 @@ msgstr "" msgid "File field" msgstr "" -#: hypha/apply/stream_forms/blocks.py:432 +#: hypha/apply/stream_forms/blocks.py:433 msgid "Multiple File field" msgstr "" -#: hypha/apply/stream_forms/blocks.py:465 +#: hypha/apply/stream_forms/blocks.py:466 msgid "Section text" msgstr "" -#: hypha/apply/stream_forms/blocks.py:466 +#: hypha/apply/stream_forms/blocks.py:467 msgid "Section header" msgstr "" -#: hypha/apply/stream_forms/blocks.py:485 hypha/public/forms/models.py:62 +#: hypha/apply/stream_forms/blocks.py:486 hypha/public/forms/models.py:75 msgid "Form fields" msgstr "" +#: hypha/apply/stream_forms/models.py:67 +msgid "" +"You are logged in so this information is fetched from your user account." +msgstr "" + #: hypha/apply/templates/forms/includes/form_errors.html:5 msgid "" "There were some errors with your form. Please amend the fields highlighted " "below." msgstr "" -#: hypha/apply/users/admin_views.py:34 hypha/apply/users/admin_views.py:59 +#: hypha/apply/users/admin_views.py:64 hypha/apply/users/admin_views.py:89 msgid "Search users" msgstr "" @@ -3944,19 +4004,36 @@ msgstr "" msgid "Only includes active, non-superusers" msgstr "" -#: hypha/apply/users/models.py:102 +#: hypha/apply/users/forms.py:87 +#: hypha/apply/users/templates/users/activation/email.txt:16 +msgid "Password" +msgstr "" + +#: hypha/apply/users/forms.py:88 +msgid "Email change requires you to put password." +msgstr "" + +#: hypha/apply/users/forms.py:101 hypha/apply/users/forms.py:130 +msgid "Incorrect password. Please try again." +msgstr "" + +#: hypha/apply/users/forms.py:117 +msgid "Please type your password to confirm" +msgstr "" + +#: hypha/apply/users/models.py:105 msgid "email address" msgstr "" -#: hypha/apply/users/models.py:103 +#: hypha/apply/users/models.py:106 msgid "Full name" msgstr "" -#: hypha/apply/users/models.py:105 +#: hypha/apply/users/models.py:108 msgid "Slack name" msgstr "" -#: hypha/apply/users/models.py:107 +#: hypha/apply/users/models.py:110 msgid "This is the name we should \"@mention\" when sending notifications" msgstr "" @@ -3977,22 +4054,21 @@ msgid "Next" msgstr "" #: hypha/apply/users/templates/two_factor/core/backup_tokens.html:6 -#: hypha/apply/users/templates/two_factor/profile/disable.html:6 msgid "Back" msgstr "" #: hypha/apply/users/templates/two_factor/core/backup_tokens.html:7 +#: hypha/apply/users/templates/two_factor/core/backup_tokens_password.html:7 #: hypha/apply/users/templates/two_factor/profile/profile.html:41 msgid "Backup Tokens" msgstr "" #: hypha/apply/users/templates/two_factor/core/backup_tokens.html:8 msgid "" -"Backup tokens can be used when your primary and backup\n" -" phone numbers aren't available. The backup tokens below can be used\n" -" for login verification. If you've used up all your backup tokens, you\n" -" can generate a new set of backup tokens. Only the backup tokens shown\n" -" below will be valid." +"Backup tokens can be used when your primary and backup phone numbers aren't " +"available. The backup tokens below can be used for login verification. If " +"you've used up all your backup tokens, you can generate a new set of backup " +"tokens. Only the backup tokens shown below will be valid." msgstr "" #: hypha/apply/users/templates/two_factor/core/backup_tokens.html:20 @@ -4007,22 +4083,69 @@ msgstr "" msgid "Generate Tokens" msgstr "" -#: hypha/apply/users/templates/two_factor/profile/disable.html:7 -msgid "Disable Two-factor Authentication" +#: hypha/apply/users/templates/two_factor/core/backup_tokens_password.html:6 +#: hypha/apply/users/templates/two_factor/profile/disable.html:6 +#: hypha/apply/users/templates/two_factor/profile/profile.html:6 +msgid "Back to account" msgstr "" -#: hypha/apply/users/templates/two_factor/profile/disable.html:8 +#: hypha/apply/users/templates/two_factor/core/backup_tokens_password.html:8 msgid "" -"You are about to disable two-factor authentication. This\n" -" weakens your account security, are you sure?" +"Backup tokens can be used when your primary and backup phone numbers aren't " +"available. The backup tokens below can be used for login verification. </br> " +"If you've used up all your backup tokens, you can generate a new set of " +"backup tokens. Only the backup tokens shown below will be valid." msgstr "" -#: hypha/apply/users/templates/two_factor/profile/disable.html:14 -msgid "Disable" +#: hypha/apply/users/templates/two_factor/core/backup_tokens_password.html:27 +#: hypha/apply/users/templates/two_factor/profile/disable.html:22 +#: hypha/apply/users/templates/users/change_password.html:20 +#: hypha/apply/users/templates/users/email_change/confirm_password.html:21 +#: hypha/apply/users/templates/users/password_reset/confirm.html:20 +msgid "<li>Please correct the error below.</li>" +msgid_plural "<li>Please correct the errors below.</li>" +msgstr[0] "" +msgstr[1] "" + +#: hypha/apply/users/templates/two_factor/core/backup_tokens_password.html:41 +#: hypha/apply/users/templates/two_factor/profile/profile.html:52 +msgid "Show Codes" msgstr "" -#: hypha/apply/users/templates/two_factor/profile/profile.html:6 -msgid "Back to account" +#: hypha/apply/users/templates/two_factor/core/two_factor_required.html:7 +msgid "Permission Denied" +msgstr "" + +#: hypha/apply/users/templates/two_factor/core/two_factor_required.html:9 +msgid "" +"The page you requested, enforces users to verify using two-factor " +"authentication for security reasons. You need to enable these security " +"features in order to access this page. Without enabling these security " +"features, You can only access the account(Profile section) or can logout " +"from the system." +msgstr "" + +#: hypha/apply/users/templates/two_factor/core/two_factor_required.html:14 +#: hypha/apply/users/templates/two_factor/profile/profile.html:60 +msgid "" +"Two-factor authentication is not enabled for your account. Enable two-factor " +"authentication for enhanced account security." +msgstr "" + +#: hypha/apply/users/templates/two_factor/core/two_factor_required.html:20 +#: hypha/apply/users/templates/two_factor/profile/profile.html:64 +msgid "Enable Two-Factor Authentication" +msgstr "" + +#: hypha/apply/users/templates/two_factor/profile/disable.html:7 +#: hypha/apply/users/templates/two_factor/profile/disable.html:36 +msgid "Disable Two-factor Authentication" +msgstr "" + +#: hypha/apply/users/templates/two_factor/profile/disable.html:8 +msgid "" +"Disabling Two-factor authentication weakens your account security. We " +"recommend reenabling it when you can." msgstr "" #: hypha/apply/users/templates/two_factor/profile/profile.html:9 @@ -4048,8 +4171,8 @@ msgstr "" #: hypha/apply/users/templates/two_factor/profile/profile.html:22 msgid "" -"If your primary method is not available, we are able to\n" -" send backup tokens to the phone numbers listed below." +"If your primary method is not available, we are able to send backup tokens " +"to the phone numbers listed below." msgstr "" #: hypha/apply/users/templates/two_factor/profile/profile.html:32 @@ -4062,27 +4185,17 @@ msgstr "" #: hypha/apply/users/templates/two_factor/profile/profile.html:43 msgid "" -"If you don't have any device with you, you can access\n" -" your account using backup tokens." +"If you don't have any device with you, you can access your account using " +"backup tokens." msgstr "" #: hypha/apply/users/templates/two_factor/profile/profile.html:45 #, python-format -msgid "" -"\n" -" You have only one backup token remaining.\n" -" " -msgid_plural "" -"\n" -" You have %(counter)s backup tokens remaining.\n" -" " +msgid "You have only one backup token remaining." +msgid_plural "You have %(counter)s backup tokens remaining." msgstr[0] "" msgstr[1] "" -#: hypha/apply/users/templates/two_factor/profile/profile.html:52 -msgid "Show Codes" -msgstr "" - #: hypha/apply/users/templates/two_factor/profile/profile.html:54 #: hypha/apply/users/templates/two_factor/profile/profile.html:58 msgid "Disable Two-Factor Authentication" @@ -4090,19 +4203,8 @@ msgstr "" #: hypha/apply/users/templates/two_factor/profile/profile.html:55 msgid "" -"However we strongly discourage you to do so, you can\n" -" also disable two-factor authentication for your account." -msgstr "" - -#: hypha/apply/users/templates/two_factor/profile/profile.html:60 -msgid "" -"Two-factor authentication is not enabled for your\n" -" account. Enable two-factor authentication for enhanced account\n" -" security." -msgstr "" - -#: hypha/apply/users/templates/two_factor/profile/profile.html:64 -msgid "Enable Two-Factor Authentication" +"However we strongly discourage you to do so, you can also disable two-factor " +"authentication for your account." msgstr "" #: hypha/apply/users/templates/users/account.html:25 @@ -4154,14 +4256,10 @@ msgid "in the future using" msgstr "" #: hypha/apply/users/templates/users/activation/email.txt:15 -#: hypha/apply/users/templates/wagtailusers/users/list.html:14 +#: hypha/apply/users/templates/wagtailusers/users/list.html:15 msgid "Username" msgstr "" -#: hypha/apply/users/templates/users/activation/email.txt:16 -msgid "Password" -msgstr "" - #: hypha/apply/users/templates/users/activation/email.txt:16 msgid "Your chosen password" msgstr "" @@ -4216,19 +4314,6 @@ msgstr "" msgid "Set a password" msgstr "" -#: hypha/apply/users/templates/users/change_password.html:20 -#: hypha/apply/users/templates/users/password_reset/confirm.html:20 -msgid "" -"\n" -" <li>Please correct the error below.</li>\n" -" " -msgid_plural "" -"\n" -" <li>Please correct the errors below.</li>\n" -" " -msgstr[0] "" -msgstr[1] "" - #: hypha/apply/users/templates/users/change_password.html:34 #: hypha/apply/users/templates/users/password_reset/complete.html:4 #: hypha/apply/users/templates/users/password_reset/confirm.html:34 @@ -4239,57 +4324,121 @@ msgstr[1] "" msgid "Reset password" msgstr "" +#: hypha/apply/users/templates/users/email_change/confirm_email.txt:7 +#, python-format +msgid "" +"Request to change email of your account on the %(ORG_LONG_NAME)s web site " +"has been accepted. Confirm your email by clicking this link or copying and " +"pasting it to your browser:" +msgstr "" + +#: hypha/apply/users/templates/users/email_change/confirm_email.txt:11 +#, python-format +msgid "" +"This link will only remain active for %(timeout_days)s days and will lead " +"you to profile page after verification." +msgstr "" + +#: hypha/apply/users/templates/users/email_change/confirm_email.txt:14 +#, python-format +msgid "" +"Kind Regards,\n" +"The %(ORG_SHORT_NAME)s Team\n" +"\n" +"--\n" +"%(ORG_LONG_NAME)s\n" +"%(root_url)s" +msgstr "" + +#: hypha/apply/users/templates/users/email_change/confirm_password.html:4 +#: hypha/apply/users/templates/users/email_change/confirm_password.html:5 +#: hypha/apply/users/views.py:111 +msgid "Enter Password" +msgstr "" + +#: hypha/apply/users/templates/users/email_change/done.html:4 +#: hypha/apply/users/templates/users/password_reset/done.html:4 +msgid "Check your email" +msgstr "" + +#: hypha/apply/users/templates/users/email_change/done.html:5 +#: hypha/apply/users/views.py:157 +msgid "Verify Email" +msgstr "" + +#: hypha/apply/users/templates/users/email_change/done.html:9 +msgid "" +"To start using the new email, please click on the confirmation link that has " +"been sent to you on your new email." +msgstr "" + +#: hypha/apply/users/templates/users/email_change/invalid_link.html:4 +msgid "Invalid Confirmation" +msgstr "" + +#: hypha/apply/users/templates/users/email_change/invalid_link.html:5 +msgid "Invalid Confirmation URL" +msgstr "" + +#: hypha/apply/users/templates/users/email_change/invalid_link.html:9 +msgid "Possible reason:" +msgstr "" + +#: hypha/apply/users/templates/users/email_change/invalid_link.html:11 +msgid "The confirmation link has expired." +msgstr "" + +#: hypha/apply/users/templates/users/email_change/invalid_link.html:14 +#, python-format +msgid "" +"Try again to change email from accounts page. If that fails please contact " +"%(ORG_SHORT_NAME)s at" +msgstr "" + #: hypha/apply/users/templates/users/login.html:11 msgid "Enter your credentials." msgstr "" #: hypha/apply/users/templates/users/login.html:14 -msgid "" -"We are calling your phone right now, please enter the\n" -" digits you hear." +msgid "We are calling your phone right now, please enter the digits you hear." msgstr "" #: hypha/apply/users/templates/users/login.html:17 -msgid "" -"We sent you a text message, please enter the tokens we\n" -" sent." +msgid "We sent you a text message, please enter the tokens we sent." msgstr "" #: hypha/apply/users/templates/users/login.html:20 -msgid "" -"Please enter the tokens generated by your token\n" -" generator." +msgid "Please enter the tokens generated by your token generator." msgstr "" #: hypha/apply/users/templates/users/login.html:24 msgid "" -"Use this form for entering backup tokens for logging in.\n" -" These tokens have been generated for you to print and keep safe. " -"Please\n" -" enter one of these backup tokens to login to your account." +"Use this form for entering backup tokens for logging in. These tokens have " +"been generated for you to print and keep safe. Please enter one of these " +"backup tokens to login to your account." msgstr "" -#: hypha/apply/users/templates/users/login.html:38 +#: hypha/apply/users/templates/users/login.html:39 msgid "Forgot your password?" msgstr "" -#: hypha/apply/users/templates/users/login.html:39 +#: hypha/apply/users/templates/users/login.html:41 msgid "Login" msgstr "" -#: hypha/apply/users/templates/users/login.html:47 +#: hypha/apply/users/templates/users/login.html:49 msgid "Or, alternatively, use one of your backup phones:" msgstr "" -#: hypha/apply/users/templates/users/login.html:57 +#: hypha/apply/users/templates/users/login.html:59 msgid "As a last resort, you can use a backup token:" msgstr "" -#: hypha/apply/users/templates/users/login.html:60 +#: hypha/apply/users/templates/users/login.html:62 msgid "Use Backup Token" msgstr "" -#: hypha/apply/users/templates/users/login.html:72 +#: hypha/apply/users/templates/users/login.html:74 #, python-format msgid "Log in with your %(ORG_SHORT_NAME)s email" msgstr "" @@ -4326,10 +4475,6 @@ msgid "" "used. Please request a new password reset." msgstr "" -#: hypha/apply/users/templates/users/password_reset/done.html:4 -msgid "Check your email" -msgstr "" - #: hypha/apply/users/templates/users/password_reset/done.html:9 msgid "A link to reset your password has been emailed to you." msgstr "" @@ -4342,28 +4487,80 @@ msgstr "" msgid "Your username (in case you've forgotten):" msgstr "" -#: hypha/apply/users/templates/wagtailusers/users/list.html:6 +#: hypha/apply/users/templates/wagtailusers/users/index.html:3 +#: hypha/apply/users/templates/wagtailusers/users/index.html:31 +msgid "Users" +msgstr "" + +#: hypha/apply/users/templates/wagtailusers/users/index.html:32 +msgid "Add a user" +msgstr "" + +#: hypha/apply/users/templates/wagtailusers/users/index.html:41 +msgid "Select all users in listing" +msgstr "" + +#: hypha/apply/users/templates/wagtailusers/users/list.html:7 #: hypha/public/people/models.py:180 msgid "Name" msgstr "" -#: hypha/apply/users/templates/wagtailusers/users/list.html:45 +#: hypha/apply/users/templates/wagtailusers/users/list.html:47 msgid "Admin" msgstr "" -#: hypha/apply/users/templates/wagtailusers/users/list.html:46 +#: hypha/apply/users/templates/wagtailusers/users/list.html:48 msgid "Inactive" msgstr "" -#: hypha/apply/utils/blocks.py:39 +#: hypha/apply/users/templates/wagtailusers/users/results.html:6 +#, python-format +msgid "There is %(user_count)s user" +msgid_plural "There are %(user_count)s users" +msgstr[0] "" +msgstr[1] "" + +#: hypha/apply/users/templates/wagtailusers/users/results.html:21 +#, python-format +msgid "Sorry, no users match \"<em>%(query_string)s</em>\"" +msgstr "" + +#: hypha/apply/users/templates/wagtailusers/users/results.html:28 +#, python-format +msgid "" +"The %(group_name)s group has no users configured. Why not <a href=" +"\"%(wagtailusers_add_url)s\">add some</a>?" +msgstr "" + +#: hypha/apply/users/templates/wagtailusers/users/results.html:31 +#, python-format +msgid "" +"There are no users configured. Why not <a href=\"%(wagtailusers_add_url)s" +"\">add some</a>?" +msgstr "" + +#: hypha/apply/users/templates/wagtailusers/users/results.html:44 +msgid "Apply filters" +msgstr "" + +#: hypha/apply/users/views.py:142 +msgid "Password Page timed out. Try changing the email again." +msgstr "" + +#: hypha/apply/users/views.py:192 +#, python-brace-format +msgid "Your email has been successfully updated to {email}!" +msgstr "" + +#: hypha/apply/utils/blocks.py:49 msgid "Rich text field" msgstr "" -#: hypha/apply/utils/blocks.py:54 +#: hypha/apply/utils/blocks.py:64 msgid "Markdown text field" msgstr "" -#: hypha/apply/utils/blocks.py:73 +#: hypha/apply/utils/blocks.py:83 msgid " Required" msgstr "" @@ -4689,7 +4886,7 @@ msgstr "" msgid "Funding" msgstr "" -#: hypha/templates/base-apply.html:107 hypha/templates/base-apply.html:116 +#: hypha/templates/base-apply.html:104 hypha/templates/base-apply.html:113 msgid "Log out" msgstr "" diff --git a/hypha/public/utils/context_processors.py b/hypha/public/utils/context_processors.py index 8f86e839a0e9cea6cb7c4ad02289f4e43149c6f3..f0c59999c6f4108a1c3832f54563a5177fb39a66 100644 --- a/hypha/public/utils/context_processors.py +++ b/hypha/public/utils/context_processors.py @@ -14,6 +14,8 @@ def global_vars(request): 'ORG_LONG_NAME': settings.ORG_LONG_NAME, 'ORG_SHORT_NAME': settings.ORG_SHORT_NAME, 'ORG_EMAIL': settings.ORG_EMAIL, + 'ORG_GUIDE_URL': settings.ORG_GUIDE_URL, + 'ORG_URL': settings.ORG_URL, 'MATOMO_URL': settings.MATOMO_URL, 'MATOMO_SITEID': settings.MATOMO_SITEID, 'CURRENCY_SYMBOL': settings.CURRENCY_SYMBOL, diff --git a/hypha/settings/base.py b/hypha/settings/base.py index d0379bd6a8321fd4be66fea9973cf87ff64d4839..07e5af2b9dc97fad7fbfc133c753e5d03903e143 100644 --- a/hypha/settings/base.py +++ b/hypha/settings/base.py @@ -28,6 +28,7 @@ ALLOWED_HOSTS = env.list('ALLOWED_HOSTS', []) ORG_LONG_NAME = env.str('ORG_LONG_NAME', 'Acme Corporation') ORG_SHORT_NAME = env.str('ORG_SHORT_NAME', 'ACME') ORG_EMAIL = env.str('ORG_EMAIL', 'info@example.org') +ORG_URL = env.str('ORG_URL', 'https://www.example.org/') ORG_GUIDE_URL = env.str('ORG_GUIDE_URL', 'https://guide.example.org/') @@ -104,6 +105,7 @@ INSTALLED_APPS = [ 'django_bleach', 'django_fsm', 'django_pwned_passwords', + 'django_slack', 'django_otp', 'django_otp.plugins.otp_totp', 'django_otp.plugins.otp_static', @@ -143,6 +145,7 @@ MIDDLEWARE = [ 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'django_referrer_policy.middleware.ReferrerPolicyMiddleware', 'django_otp.middleware.OTPMiddleware', + 'hypha.apply.users.middleware.TwoFactorAuthenticationMiddleware', 'hijack.middleware.HijackUserMiddleware', @@ -295,6 +298,10 @@ PASSWORD_RESET_TIMEOUT = env.int('PASSWORD_RESET_TIMEOUT', 259200) # Seconds to enter password on password page while email change/2FA change (default 120). PASSWORD_PAGE_TIMEOUT = env.int('PASSWORD_PAGE_TIMEOUT', 120) +# Use Pillow to create QR codes so they are PNG and not SVG. +# Apples Safari on iOS and macOS can then recognise them automatically. +TWO_FACTOR_QR_FACTORY = 'qrcode.image.pil.PilImage' + # Internationalization # https://docs.djangoproject.com/en/stable/topics/i18n/ @@ -361,6 +368,14 @@ WAGTAIL_PASSWORD_MANAGEMENT_ENABLED = False WAGTAILUSERS_PASSWORD_ENABLED = False WAGTAILUSERS_PASSWORD_REQUIRED = False +# Enforce Two factor setting +ENFORCE_TWO_FACTOR = env.bool('ENFORCE_TWO_FACTOR', False) + +# Give staff lead permissions. +# Only effects setting external reviewers for now. +GIVE_STAFF_LEAD_PERMS = env.bool('GIVE_STAFF_LEAD_PERMS', False) + + LOGIN_URL = 'users_public:login' LOGIN_REDIRECT_URL = 'dashboard:dashboard' @@ -493,6 +508,7 @@ FILE_ALLOWED_EXTENSIONS = ['doc', 'docx', 'odp', 'ods', 'odt', 'pdf', 'ppt', 'pp FILE_ACCEPT_ATTR_VALUE = ', '.join(['.' + ext for ext in FILE_ALLOWED_EXTENSIONS]) # Hijack Settings +HIJACK_ENABLE = env.bool('HIJACK_ENABLE', False) HIJACK_LOGIN_REDIRECT_URL = '/dashboard/' HIJACK_LOGOUT_REDIRECT_URL = '/account/' HIJACK_DECORATOR = 'hypha.apply.users.decorators.superuser_decorator' @@ -509,7 +525,13 @@ if not SEND_MESSAGES: SEND_READY_FOR_REVIEW = env.bool('SEND_READY_FOR_REVIEW', True) -SLACK_DESTINATION_URL = env.str('SLACK_DESTINATION_URL', None) +# Django Slack settings +SLACK_TOKEN = env.str('SLACK_TOKEN', None) +SLACK_USERNAME = env.str('SLACK_USERNAME', 'Hypha') +SLACK_BACKEND = 'django_slack.backends.CeleryBackend' # UrllibBackend can be used for sync +SLACK_ENDPOINT_URL = env.str('SLACK_ENDPOINT_URL', 'https://slack.com/api/chat.postMessage') + +# Slack settings SLACK_DESTINATION_ROOM = env.str('SLACK_DESTINATION_ROOM', None) SLACK_DESTINATION_ROOM_COMMENTS = env.str('SLACK_DESTINATION_ROOM_COMMENTS', None) SLACK_TYPE_COMMENTS = env.list('SLACK_TYPE_COMMENTS', []) diff --git a/hypha/settings/test.py b/hypha/settings/test.py index 1d913795abb604266204c36627b4f05d42358e15..e4936bbfb355f67645f8f151eb9ab0b6ba5bd2ca 100644 --- a/hypha/settings/test.py +++ b/hypha/settings/test.py @@ -9,6 +9,8 @@ logging.disable(logging.CRITICAL) SECRET_KEY = 'NOT A SECRET' +HIJACK_ENABLE = True + PROJECTS_ENABLED = True PROJECTS_AUTO_CREATE = True diff --git a/hypha/static_src/src/app/webpack.base.config.js b/hypha/static_src/src/app/webpack.base.config.js index 9479be50505026f8e137e34f6080934ae709a341..e729f61f5b415c77f49df81e9ae40b463ccaf57b 100644 --- a/hypha/static_src/src/app/webpack.base.config.js +++ b/hypha/static_src/src/app/webpack.base.config.js @@ -71,10 +71,12 @@ module.exports = (webpackEnv) => { loader: 'sass-loader', options: { sourceMap: !isProduction, - data: '@import "main.scss";', - includePaths: [ - path.join(__dirname, 'src') - ] + additionalData: '@import "main.scss";', + sassOptions: { + includePaths: [ + path.join(__dirname, 'src') + ] + } } }] }, diff --git a/hypha/static_src/src/javascript/apply/determination-template.js b/hypha/static_src/src/javascript/apply/determination-template.js index 092e2ce552c32ecfc727b4fd93ecbfac973dca42..a243faa3de98b2fa93ce49848161953900fe9b66 100644 --- a/hypha/static_src/src/javascript/apply/determination-template.js +++ b/hypha/static_src/src/javascript/apply/determination-template.js @@ -1,10 +1,11 @@ (function ($) { 'use strict'; + const field_blocks_ids = JSON.parse(document.getElementById('block-ids').textContent); let DeterminationCopy = class { static selector() { - return '#id_outcome'; + return ('#id_' + field_blocks_ids['determination']); } constructor(node) { @@ -32,7 +33,8 @@ } updateTextArea(text) { - window.tinyMCE.get('id_message').setContent(text); + this.message_box = document.querySelector('#id_' + field_blocks_ids['message'] + '_ifr'); + this.message_box.contentDocument.getElementsByTagName('body')[0].innerHTML = text; } }; diff --git a/hypha/static_src/src/sass/apply/components/_button.scss b/hypha/static_src/src/sass/apply/components/_button.scss index 7ad95b226f40a152ab53922aff23a42cfb61831c..f667b86802d4a9445289c89b76300c8dd395e889 100644 --- a/hypha/static_src/src/sass/apply/components/_button.scss +++ b/hypha/static_src/src/sass/apply/components/_button.scss @@ -5,6 +5,7 @@ background-image: none; border: 0; box-shadow: none; + line-height: 1.15; &:hover { cursor: pointer; diff --git a/hypha/static_src/src/sass/apply/components/_two-factor.scss b/hypha/static_src/src/sass/apply/components/_two-factor.scss index d601abbf2140c094e7949a9297b4d4a08c72d3e8..e3e61077866566510da4dee1bd67385c595889dd 100644 --- a/hypha/static_src/src/sass/apply/components/_two-factor.scss +++ b/hypha/static_src/src/sass/apply/components/_two-factor.scss @@ -11,16 +11,33 @@ @extend %h3; font-weight: 700; } + + .mb-3 { + margin-bottom: 1rem; + } +} + +// 2FA token label font size +label[for='id_generator-token'] { + font-size: 20px; } .d-none { display: none; } +.bg-white { + background-color: $color--white; +} + // 2FA token field. // stylelint-disable property-no-vendor-prefix, selector-id-pattern, selector-max-id #id_generator-token { -moz-appearance: textfield; + border: 3px solid $color--dark-blue; + line-height: 1.5; + width: 8ch; + padding: 5px; &::-webkit-outer-spin-button, &::-webkit-inner-spin-button { diff --git a/hypha/static_src/src/sass/apply/custom/_extra.scss b/hypha/static_src/src/sass/apply/custom/_extra.scss new file mode 100644 index 0000000000000000000000000000000000000000..061b3d43d20a13cabcd4ea4932fe3a38aaa49290 --- /dev/null +++ b/hypha/static_src/src/sass/apply/custom/_extra.scss @@ -0,0 +1 @@ +// stylelint-disable no-empty-source diff --git a/hypha/static_src/src/sass/apply/main.scss b/hypha/static_src/src/sass/apply/main.scss index 25494f7926dd57ad223193abf0daa2b93dcdbcb5..150d659960e74af3bfc4b8da72db452846c236db 100644 --- a/hypha/static_src/src/sass/apply/main.scss +++ b/hypha/static_src/src/sass/apply/main.scss @@ -3,6 +3,9 @@ @import 'abstracts/mixins'; @import 'abstracts/variables'; +// Custom overrides +@import 'custom/extra'; + // Base @import 'base/base'; @import 'base/typography'; diff --git a/hypha/static_src/src/sass/apply/wagtail_users_list.scss b/hypha/static_src/src/sass/apply/wagtail_users_list.scss new file mode 100644 index 0000000000000000000000000000000000000000..0770fa211fe5b8ce7d78f281a461688ee3929cfa --- /dev/null +++ b/hypha/static_src/src/sass/apply/wagtail_users_list.scss @@ -0,0 +1,27 @@ +// Abstracts +@import 'abstracts/functions'; +@import 'abstracts/mixins'; +@import 'abstracts/variables'; + +.users-list { + display: grid; + grid-template-columns: auto; + grid-column-gap: 50px; + + &--has-filters { + grid-template-columns: auto 250px; + } + + &__results { + grid-column-start: col-start 1 col-end 2; + } + + &__filters { + grid-column-start: col-start -2 col-end -1; + + button[type='submit'] { + display: block; + margin-top: 20px; + } + } +} diff --git a/hypha/static_src/src/sass/public/components/_link.scss b/hypha/static_src/src/sass/public/components/_link.scss index 95288fd06cbce9d68278f03eb5ff11cd95eff4c4..113be555b4cabb00d6e15ccb675b57e73f6572c8 100644 --- a/hypha/static_src/src/sass/public/components/_link.scss +++ b/hypha/static_src/src/sass/public/components/_link.scss @@ -53,6 +53,21 @@ } } + &--button-white { + @include button(transparent, $color--black); + color: $color--black; + border-color: $color--black; + + &:focus, + &:hover { + color: $color--white; + } + + &--narrow { + @include button--narrow; + } + } + &--button-long-text { padding: 10px; diff --git a/hypha/static_src/src/sass/public/custom/_extra.scss b/hypha/static_src/src/sass/public/custom/_extra.scss new file mode 100644 index 0000000000000000000000000000000000000000..061b3d43d20a13cabcd4ea4932fe3a38aaa49290 --- /dev/null +++ b/hypha/static_src/src/sass/public/custom/_extra.scss @@ -0,0 +1 @@ +// stylelint-disable no-empty-source diff --git a/hypha/static_src/src/sass/public/main.scss b/hypha/static_src/src/sass/public/main.scss index 3b4b12a7b23e83eae2e91b6fa2a9d2ce6c25dcff..1b076da4ae7755b4b4bf609af46a1460eb1f0155 100644 --- a/hypha/static_src/src/sass/public/main.scss +++ b/hypha/static_src/src/sass/public/main.scss @@ -3,6 +3,9 @@ @import 'abstracts/mixins'; @import 'abstracts/variables'; +// Custom overrides +@import 'custom/extra'; + // Base @import 'base/base'; @import 'base/typography'; diff --git a/package-lock.json b/package-lock.json index c48469028788d29ad914da5dc3258d088a87cfa6..fdb91f629db67a2d245c8695796592d1a03f8eb4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,89 +10,100 @@ "license": "GPL-2.0", "dependencies": { "@date-io/date-fns": "^1.3.13", - "@material-ui/core": "^4.11.4", - "@material-ui/icons": "^4.9.1", - "@material-ui/lab": "^4.0.0-alpha.58", + "@material-ui/core": "^4.12.4", + "@material-ui/icons": "^4.11.3", + "@material-ui/lab": "^4.0.0-alpha.61", "@material-ui/pickers": "^3.3.10", - "@rooks/use-interval": "^3.0.1", + "@rooks/use-interval": "^4.11.2", "@svgr/webpack": "^6.2.1", - "@tinymce/tinymce-react": "^3.12.6", - "connected-react-router": "^6.9.1", - "core-js": "^3.15.2", - "date-fns": "^2.22.1", - "del": "^4.1.1", + "@tinymce/tinymce-react": "^3.14.0", + "connected-react-router": "^6.9.2", + "core-js": "^3.21.1", + "date-fns": "^2.28.0", + "del": "^6.0.0", "detect-node": "^2.1.0", "humps": "^2.0.1", "invariant": "^2.2.4", - "js-cookie": "^2.2.0", + "js-cookie": "^2.2.1", "lodash.isequal": "^4.5.0", "lodash.pick": "^4.4.0", "prop-types": "^15.7.2", "react": "^16.14.0", "react-dom": "^16.14.0", - "react-modal": "^3.14.3", - "react-redux": "^7.2.4", - "react-router-dom": "^5.2.0", - "react-rte": "^0.16.3", + "react-modal": "^3.14.4", + "react-redux": "^7.2.8", + "react-router-dom": "^5.3.0", + "react-rte": "^0.16.5", "react-transition-group": "^4.4.2", "react-window-size-listener": "^1.2.3", - "redux": "^4.1.0", + "redux": "^4.1.2", "redux-logger": "^3.0.6", "redux-mock-store": "^1.5.4", "redux-saga": "^1.1.3", - "redux-thunk": "^2.3.0", - "reselect": "^4.0.0", + "redux-thunk": "^2.4.1", + "reselect": "^4.1.5", "resolve-cwd": "^3.0.0", - "sass": "^1.49.9", + "sass": "^1.50.0", "seamless-immutable": "^7.1.4", "smoothscroll-polyfill": "^0.4.4", - "underscore": "^1.13.1", - "uuid": "^3.3.2", + "underscore": "^1.13.2", + "uuid": "^8.3.2", "validate.js": "^0.13.1" }, "devDependencies": { - "@babel/core": "^7.16.12", - "@babel/eslint-parser": "^7.16.5", + "@babel/core": "^7.17.9", + "@babel/eslint-parser": "^7.17.0", "@babel/plugin-proposal-class-properties": "^7.14.5", "@babel/preset-env": "^7.14.7", - "@babel/preset-react": "^7.14.5", + "@babel/preset-react": "^7.16.7", "babel-jest": "^27.5.1", - "babel-loader": "^8.2.2", - "concurrently": "^7.0.0", - "css-loader": "^2.1.1", + "babel-loader": "^8.2.4", + "concurrently": "^7.1.0", + "css-loader": "^6.7.1", "enzyme": "^3.3.0", "enzyme-adapter-react-16": "^1.1.1", "enzyme-to-json": "^3.6.2", - "eslint": "^8.7.0", - "eslint-plugin-react": "^7.28.0", - "eslint-webpack-plugin": "^2.5.4", + "eslint": "^8.13.0", + "eslint-plugin-react": "^7.29.4", + "eslint-webpack-plugin": "^3.1.1", "extra-watch-webpack-plugin": "^1.0.3", - "filemanager-webpack-plugin": "^6.1.7", + "filemanager-webpack-plugin": "^7.0.0-beta.0", "identity-obj-proxy": "^3.0.0", "istanbul-reports": "^3.0.2", "jest": "^27.5.1", "jsdom": "19.0.0", "jsdom-global": "3.0.2", "nodemon": "^2.0.15", - "postcss": "^8.4.5", + "postcss": "^8.4.12", "react-hot-loader": "^4.8.4", "redux-devtools-extension": "^2.13.9", - "sass-loader": "^7.1.0", - "sinon": "^5.0.7", - "style-loader": "^0.23.1", - "stylelint": "^14.3.0", + "sass-loader": "^12.6.0", + "sinon": "^13.0.2", + "style-loader": "^3.3.1", + "stylelint": "^14.6.1", "stylelint-config-standard-scss": "^3.0.0", - "stylelint-scss": "^4.1.0", - "webpack": "^5.69.1", - "webpack-bundle-analyzer": "^3.9.0", - "webpack-bundle-tracker": "^1.4.0", - "webpack-cli": "4.9.0", - "webpack-dev-server": "4.7.4" + "stylelint-scss": "^4.2.0", + "webpack": "^5.72.0", + "webpack-bundle-analyzer": "^4.5.0", + "webpack-bundle-tracker": "^1.5.0", + "webpack-cli": "4.9.2", + "webpack-dev-server": "4.8.1" }, "engines": { "node": "16.14.x" } }, + "node_modules/@ampproject/remapping": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.1.2.tgz", + "integrity": "sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg==", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/@babel/code-frame": { "version": "7.16.7", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", @@ -105,33 +116,33 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.0.tgz", - "integrity": "sha512-392byTlpGWXMv4FbyWw3sAZ/FrW/DrwqLGXpy0mbyNe9Taqv1mg9yON5/o0cnr8XYCkFTZbC1eV+c+LAROgrng==", + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.7.tgz", + "integrity": "sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.16.12", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.12.tgz", - "integrity": "sha512-dK5PtG1uiN2ikk++5OzSYsitZKny4wOCD0nrO4TqnW4BVBTQ2NGS3NgilvT/TEyxTST7LNyWV/T4tXDoD3fOgg==", + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.9.tgz", + "integrity": "sha512-5ug+SfZCpDAkVp9SFIZAzlW18rlzsOcJGaetCjkySnrXXDUw9AR8cDUm1iByTmdWM6yxX6/zycaV76w3YTF2gw==", "dependencies": { + "@ampproject/remapping": "^2.1.0", "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.16.8", - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-module-transforms": "^7.16.7", - "@babel/helpers": "^7.16.7", - "@babel/parser": "^7.16.12", + "@babel/generator": "^7.17.9", + "@babel/helper-compilation-targets": "^7.17.7", + "@babel/helper-module-transforms": "^7.17.7", + "@babel/helpers": "^7.17.9", + "@babel/parser": "^7.17.9", "@babel/template": "^7.16.7", - "@babel/traverse": "^7.16.10", - "@babel/types": "^7.16.8", + "@babel/traverse": "^7.17.9", + "@babel/types": "^7.17.0", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", - "json5": "^2.1.2", - "semver": "^6.3.0", - "source-map": "^0.5.0" + "json5": "^2.2.1", + "semver": "^6.3.0" }, "engines": { "node": ">=6.9.0" @@ -142,9 +153,9 @@ } }, "node_modules/@babel/eslint-parser": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.16.5.tgz", - "integrity": "sha512-mUqYa46lgWqHKQ33Q6LNCGp/wPR3eqOYTUixHFsfrSQqRxH0+WOzca75iEjFr5RDGH1dDz622LaHhLOzOuQRUA==", + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.17.0.tgz", + "integrity": "sha512-PUEJ7ZBXbRkbq3qqM/jZ2nIuakUBqCYc7Qf52Lj7dlZ6zERnqisdHioL0l4wwQZnmskMeasqUNzLBFKs3nylXA==", "dev": true, "dependencies": { "eslint-scope": "^5.1.1", @@ -169,9 +180,9 @@ } }, "node_modules/@babel/generator": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.3.tgz", - "integrity": "sha512-+R6Dctil/MgUsZsZAkYgK+ADNSZzJRRy0TvY65T71z/CR854xHQ1EweBYXdfT+HNeN7w0cSJJEzgxZMv40pxsg==", + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.9.tgz", + "integrity": "sha512-rAdDousTwxbIxbz5I7GEQ3lUip+xVCXooZNbsydCWs3xA7ZsYOv+CFRdzGxRX78BmQHu9B1Eso59AOZQOJDEdQ==", "dependencies": { "@babel/types": "^7.17.0", "jsesc": "^2.5.1", @@ -205,11 +216,11 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz", - "integrity": "sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA==", + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz", + "integrity": "sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==", "dependencies": { - "@babel/compat-data": "^7.16.4", + "@babel/compat-data": "^7.17.7", "@babel/helper-validator-option": "^7.16.7", "browserslist": "^4.17.5", "semver": "^6.3.0" @@ -297,24 +308,12 @@ } }, "node_modules/@babel/helper-function-name": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz", - "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==", + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz", + "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==", "dependencies": { - "@babel/helper-get-function-arity": "^7.16.7", "@babel/template": "^7.16.7", - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-get-function-arity": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz", - "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==", - "dependencies": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.17.0" }, "engines": { "node": ">=6.9.0" @@ -354,13 +353,13 @@ } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.17.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.6.tgz", - "integrity": "sha512-2ULmRdqoOMpdvkbT8jONrZML/XALfzxlb052bldftkicAUy8AxSCkD5trDPQcwHNmolcl7wP6ehNqMlyUw6AaA==", + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz", + "integrity": "sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==", "dependencies": { "@babel/helper-environment-visitor": "^7.16.7", "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-simple-access": "^7.16.7", + "@babel/helper-simple-access": "^7.17.7", "@babel/helper-split-export-declaration": "^7.16.7", "@babel/helper-validator-identifier": "^7.16.7", "@babel/template": "^7.16.7", @@ -419,11 +418,11 @@ } }, "node_modules/@babel/helper-simple-access": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz", - "integrity": "sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g==", + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz", + "integrity": "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==", "dependencies": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.17.0" }, "engines": { "node": ">=6.9.0" @@ -482,13 +481,13 @@ } }, "node_modules/@babel/helpers": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.7.tgz", - "integrity": "sha512-9ZDoqtfY7AuEOt3cxchfii6C7GDyyMBffktR5B2jvWv8u2+efwvpnVKXMWzNehqy68tKgAfSwfdw/lWpthS2bw==", + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.9.tgz", + "integrity": "sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==", "dependencies": { "@babel/template": "^7.16.7", - "@babel/traverse": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/traverse": "^7.17.9", + "@babel/types": "^7.17.0" }, "engines": { "node": ">=6.9.0" @@ -508,9 +507,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.3.tgz", - "integrity": "sha512-7yJPvPV+ESz2IUTPbOL+YkIGyCqOyNIzdguKQuJGnH7bg1WTIifuM21YqokFt/THWh1AkCRn9IgoykTRCBVpzA==", + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.9.tgz", + "integrity": "sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg==", "bin": { "parser": "bin/babel-parser.js" }, @@ -875,11 +874,11 @@ } }, "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.14.5.tgz", - "integrity": "sha512-ohuFIsOMXJnbOMRfX7/w7LocdR6R7whhuRD4ax8IipLcLPlZGJKkBxgHp++U4N/vKyU16/YDQr2f5seajD3jIw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.7.tgz", + "integrity": "sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q==", "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1357,11 +1356,11 @@ } }, "node_modules/@babel/plugin-transform-react-display-name": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.14.5.tgz", - "integrity": "sha512-07aqY1ChoPgIxsuDviptRpVkWCSbXWmzQqcgy65C6YSFOfPFvb/DX3bBRHh7pCd/PMEEYHYWUTSVkCbkVainYQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.16.7.tgz", + "integrity": "sha512-qgIg8BcZgd0G/Cz916D5+9kqX0c7nPZyXaP8R2tLNN5tkyIZdG5fEwBrxwplzSnjC1jvQmyMNVwUCZPcbGY7Pg==", "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1371,15 +1370,15 @@ } }, "node_modules/@babel/plugin-transform-react-jsx": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.14.5.tgz", - "integrity": "sha512-7RylxNeDnxc1OleDm0F5Q/BSL+whYRbOAR+bwgCxIr0L32v7UFh/pz1DLMZideAUxKT6eMoS2zQH6fyODLEi8Q==", + "version": "7.17.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.17.3.tgz", + "integrity": "sha512-9tjBm4O07f7mzKSIlEmPdiE6ub7kfIe6Cd+w+oQebpATfTQMAgW+YOuWxogbKVTulA+MEO7byMeIUtQ1z+z+ZQ==", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.14.5", - "@babel/helper-module-imports": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-jsx": "^7.14.5", - "@babel/types": "^7.14.5" + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-jsx": "^7.16.7", + "@babel/types": "^7.17.0" }, "engines": { "node": ">=6.9.0" @@ -1389,11 +1388,11 @@ } }, "node_modules/@babel/plugin-transform-react-jsx-development": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.14.5.tgz", - "integrity": "sha512-rdwG/9jC6QybWxVe2UVOa7q6cnTpw8JRRHOxntG/h6g/guAOe6AhtQHJuJh5FwmnXIT1bdm5vC2/5huV8ZOorQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.16.7.tgz", + "integrity": "sha512-RMvQWvpla+xy6MlBpPlrKZCMRs2AGiHOGHY3xRwl0pEeim348dDyxeH4xBsMPbIMhujeq7ihE702eM2Ew0Wo+A==", "dependencies": { - "@babel/plugin-transform-react-jsx": "^7.14.5" + "@babel/plugin-transform-react-jsx": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1403,12 +1402,12 @@ } }, "node_modules/@babel/plugin-transform-react-pure-annotations": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.14.5.tgz", - "integrity": "sha512-3X4HpBJimNxW4rhUy/SONPyNQHp5YRr0HhJdT2OH1BRp0of7u3Dkirc7x9FRJMKMqTBI079VZ1hzv7Ouuz///g==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.16.7.tgz", + "integrity": "sha512-hs71ToC97k3QWxswh2ElzMFABXHvGiJ01IB1TbYQDGeWRKWz/MPUTh5jGExdHvosYKpnJW5Pm3S4+TA3FyX+GA==", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1664,16 +1663,16 @@ } }, "node_modules/@babel/preset-react": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.14.5.tgz", - "integrity": "sha512-XFxBkjyObLvBaAvkx1Ie95Iaq4S/GUEIrejyrntQ/VCMKUYvKLoyKxOBzJ2kjA3b6rC9/KL6KXfDC2GqvLiNqQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.16.7.tgz", + "integrity": "sha512-fWpyI8UM/HE6DfPBzD8LnhQ/OcH8AgTaqcqP2nGOXEUV+VKBR5JRN9hCk9ai+zQQ57vtm9oWeXguBCPNUjytgA==", "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-validator-option": "^7.14.5", - "@babel/plugin-transform-react-display-name": "^7.14.5", - "@babel/plugin-transform-react-jsx": "^7.14.5", - "@babel/plugin-transform-react-jsx-development": "^7.14.5", - "@babel/plugin-transform-react-pure-annotations": "^7.14.5" + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-option": "^7.16.7", + "@babel/plugin-transform-react-display-name": "^7.16.7", + "@babel/plugin-transform-react-jsx": "^7.16.7", + "@babel/plugin-transform-react-jsx-development": "^7.16.7", + "@babel/plugin-transform-react-pure-annotations": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1699,9 +1698,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.14.8", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.8.tgz", - "integrity": "sha512-twj3L8Og5SaCRCErB4x4ajbvBIVV77CGeFglHpeg5WC5FF8TZzBWXtTJ4MqaD9QszLYTtr+IsaAL2rEUevb+eg==", + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.9.tgz", + "integrity": "sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg==", "dependencies": { "regenerator-runtime": "^0.13.4" }, @@ -1723,17 +1722,17 @@ } }, "node_modules/@babel/traverse": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.3.tgz", - "integrity": "sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==", + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.9.tgz", + "integrity": "sha512-PQO8sDIJ8SIwipTPiR71kJQCKQYB5NGImbOviK8K+kg5xkNSYXLBupuX9QhatFowrsvo9Hj8WgArg3W7ijNAQw==", "dependencies": { "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.3", + "@babel/generator": "^7.17.9", "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", + "@babel/helper-function-name": "^7.17.9", "@babel/helper-hoist-variables": "^7.16.7", "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.17.3", + "@babel/parser": "^7.17.9", "@babel/types": "^7.17.0", "debug": "^4.1.0", "globals": "^11.1.0" @@ -1791,16 +1790,16 @@ "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==" }, "node_modules/@eslint/eslintrc": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.5.tgz", - "integrity": "sha512-BLxsnmK3KyPunz5wmCCpqy0YelEoxxGmH73Is+Z74oOTMtExcjkr3dDR6quwrjh1YspA8DH9gnX1o069KiS9AQ==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.1.tgz", + "integrity": "sha512-bxvbYnBPN1Gibwyp6NrpnFzA3YtRL3BBAyEAFVIpNTm2Rn4Vy87GA5M4aSn3InRrlsbX5N0GW7XIx+U4SAEKdQ==", "dev": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.2.0", + "espree": "^9.3.1", "globals": "^13.9.0", - "ignore": "^4.0.6", + "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", "minimatch": "^3.0.4", @@ -1817,9 +1816,9 @@ "dev": true }, "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz", - "integrity": "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==", + "version": "13.13.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.13.0.tgz", + "integrity": "sha512-EQ7Q18AJlPwp3vUDL4mKA0KXrXyNIQyWon6T6XQiBQF0XHvRsiCSrWmmeATpUzdJN2HhWZU6Pdl0a9zdep5p6A==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -1831,15 +1830,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@eslint/eslintrc/node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, "node_modules/@eslint/eslintrc/node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -2214,21 +2204,6 @@ "node": ">=8.6" } }, - "node_modules/@jest/core/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/@jest/core/node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -2736,17 +2711,44 @@ "node": ">=8" } }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz", + "integrity": "sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.11", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz", + "integrity": "sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz", + "integrity": "sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ==", + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@leichtgewicht/ip-codec": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.3.tgz", + "integrity": "sha512-nkalE/f1RvRGChwBnEIoBfSEYOXnCRdleKuv6+lePbMDrMZXeDQnqak5XDOeBgrPPyPfAdcCu/B5z+v3VhplGg==", + "dev": true + }, "node_modules/@material-ui/core": { - "version": "4.12.2", - "resolved": "https://registry.npmjs.org/@material-ui/core/-/core-4.12.2.tgz", - "integrity": "sha512-Q1npB8V73IC+eV2X6as+g71MpEGQwqKHUI2iujY62npk35V8nMx/bUXAHjv5kKG1BZ8s8XUWoG6s/VkjYPjjQA==", - "deprecated": "You can now upgrade to @mui/material. See the guide: https://mui.com/guides/migration-v4/", + "version": "4.12.4", + "resolved": "https://registry.npmjs.org/@material-ui/core/-/core-4.12.4.tgz", + "integrity": "sha512-tr7xekNlM9LjA6pagJmL8QCgZXaubWUwkJnoYcMKd4gw/t4XiyvnTkjdGrUVicyB2BsdaAv1tvow45bPM4sSwQ==", "dependencies": { "@babel/runtime": "^7.4.4", - "@material-ui/styles": "^4.11.4", - "@material-ui/system": "^4.12.1", + "@material-ui/styles": "^4.11.5", + "@material-ui/system": "^4.12.2", "@material-ui/types": "5.1.0", - "@material-ui/utils": "^4.11.2", + "@material-ui/utils": "^4.11.3", "@types/react-transition-group": "^4.2.0", "clsx": "^1.0.4", "hoist-non-react-statics": "^3.3.2", @@ -2774,9 +2776,9 @@ } }, "node_modules/@material-ui/icons": { - "version": "4.11.2", - "resolved": "https://registry.npmjs.org/@material-ui/icons/-/icons-4.11.2.tgz", - "integrity": "sha512-fQNsKX2TxBmqIGJCSi3tGTO/gZ+eJgWmMJkgDiOfyNaunNaxcklJQFaFogYcFl0qFuaEz1qaXYXboa/bUXVSOQ==", + "version": "4.11.3", + "resolved": "https://registry.npmjs.org/@material-ui/icons/-/icons-4.11.3.tgz", + "integrity": "sha512-IKHlyx6LDh8n19vzwH5RtHIOHl9Tu90aAAxcbWME6kp4dmvODM3UvOHJeMIDzUbd4muuJKHmlNoBN+mDY4XkBA==", "dependencies": { "@babel/runtime": "^7.4.4" }, @@ -2796,12 +2798,12 @@ } }, "node_modules/@material-ui/lab": { - "version": "4.0.0-alpha.60", - "resolved": "https://registry.npmjs.org/@material-ui/lab/-/lab-4.0.0-alpha.60.tgz", - "integrity": "sha512-fadlYsPJF+0fx2lRuyqAuJj7hAS1tLDdIEEdov5jlrpb5pp4b+mRDUqQTUxi4inRZHS1bEXpU8QWUhO6xX88aA==", + "version": "4.0.0-alpha.61", + "resolved": "https://registry.npmjs.org/@material-ui/lab/-/lab-4.0.0-alpha.61.tgz", + "integrity": "sha512-rSzm+XKiNUjKegj8bzt5+pygZeckNLOr+IjykH8sYdVk7dE9y2ZuUSofiMV2bJk3qU+JHwexmw+q0RyNZB9ugg==", "dependencies": { "@babel/runtime": "^7.4.4", - "@material-ui/utils": "^4.11.2", + "@material-ui/utils": "^4.11.3", "clsx": "^1.0.4", "prop-types": "^15.7.2", "react-is": "^16.8.0 || ^17.0.0" @@ -2842,14 +2844,14 @@ } }, "node_modules/@material-ui/styles": { - "version": "4.11.4", - "resolved": "https://registry.npmjs.org/@material-ui/styles/-/styles-4.11.4.tgz", - "integrity": "sha512-KNTIZcnj/zprG5LW0Sao7zw+yG3O35pviHzejMdcSGCdWbiO8qzRgOYL8JAxAsWBKOKYwVZxXtHWaB5T2Kvxew==", + "version": "4.11.5", + "resolved": "https://registry.npmjs.org/@material-ui/styles/-/styles-4.11.5.tgz", + "integrity": "sha512-o/41ot5JJiUsIETME9wVLAJrmIWL3j0R0Bj2kCOLbSfqEkKf0fmaPt+5vtblUh5eXr2S+J/8J3DaCb10+CzPGA==", "dependencies": { "@babel/runtime": "^7.4.4", "@emotion/hash": "^0.8.0", "@material-ui/types": "5.1.0", - "@material-ui/utils": "^4.11.2", + "@material-ui/utils": "^4.11.3", "clsx": "^1.0.4", "csstype": "^2.5.2", "hoist-non-react-statics": "^3.3.2", @@ -2882,12 +2884,12 @@ } }, "node_modules/@material-ui/system": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@material-ui/system/-/system-4.12.1.tgz", - "integrity": "sha512-lUdzs4q9kEXZGhbN7BptyiS1rLNHe6kG9o8Y307HCvF4sQxbCgpL2qi+gUk+yI8a2DNk48gISEQxoxpgph0xIw==", + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/@material-ui/system/-/system-4.12.2.tgz", + "integrity": "sha512-6CSKu2MtmiJgcCGf6nBQpM8fLkuB9F55EKfbdTC80NND5wpTmKzwdhLYLH3zL4cLlK0gVaaltW7/wMuyTnN0Lw==", "dependencies": { "@babel/runtime": "^7.4.4", - "@material-ui/utils": "^4.11.2", + "@material-ui/utils": "^4.11.3", "csstype": "^2.5.2", "prop-types": "^15.7.2" }, @@ -2923,9 +2925,9 @@ } }, "node_modules/@material-ui/utils": { - "version": "4.11.2", - "resolved": "https://registry.npmjs.org/@material-ui/utils/-/utils-4.11.2.tgz", - "integrity": "sha512-Uul8w38u+PICe2Fg2pDKCaIG7kOyhowZ9vjiC1FsVwPABTW8vPPKfF6OvxRq3IiBaI1faOJmgdvMG7rMJARBhA==", + "version": "4.11.3", + "resolved": "https://registry.npmjs.org/@material-ui/utils/-/utils-4.11.3.tgz", + "integrity": "sha512-ZuQPV4rBK/V1j2dIkSSEcH5uT6AaHuKWFfotADHsC0wVL1NLd2WkFCm4ZZbX33iO4ydl6V0GPngKm8HZQ2oujg==", "dependencies": { "@babel/runtime": "^7.4.4", "prop-types": "^15.7.2", @@ -2939,30 +2941,10 @@ "react-dom": "^16.8.0 || ^17.0.0" } }, - "node_modules/@mrmlnc/readdir-enhanced": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", - "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", - "dev": true, - "dependencies": { - "call-me-maybe": "^1.0.1", - "glob-to-regexp": "^0.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@mrmlnc/readdir-enhanced/node_modules/glob-to-regexp": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", - "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=", - "dev": true - }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -2975,7 +2957,6 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, "engines": { "node": ">= 8" } @@ -2984,7 +2965,6 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -2993,6 +2973,12 @@ "node": ">= 8" } }, + "node_modules/@polka/url": { + "version": "1.0.0-next.21", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz", + "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==", + "dev": true + }, "node_modules/@redux-saga/core": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/@redux-saga/core/-/core-1.1.3.tgz", @@ -3041,9 +3027,9 @@ "integrity": "sha512-afmTuJrylUU/0OtqzaRkbyYFFNgCF73Bvel/sw90pvGrWIZ+vyoIJqA6eMSoA6+nb443kTmulmBtC9NerXboNg==" }, "node_modules/@rooks/use-interval": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@rooks/use-interval/-/use-interval-3.6.0.tgz", - "integrity": "sha512-FH5lbrX6UksajF9jPymlUTAG2VEYRrpmGbAXJyR/DUci/XQxXtPapXKA74w5jLVZfZnDXxxPAUFHoykGMNz+1A==", + "version": "4.11.2", + "resolved": "https://registry.npmjs.org/@rooks/use-interval/-/use-interval-4.11.2.tgz", + "integrity": "sha512-55ViHnhMStQaldSQMurITNgheYplR2a4pq2viVLni73ikiEEk1spl15/jNW1YdtCyCWOgRBPSAtAh6bkBteU/Q==", "peerDependencies": { "react": ">=16.8.0" } @@ -3075,24 +3061,15 @@ "@sinonjs/commons": "^1.7.0" } }, - "node_modules/@sinonjs/formatio": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-2.0.0.tgz", - "integrity": "sha512-ls6CAMA6/5gG+O/IdsBcblvnd8qcO/l1TYoNeAzp3wcISOxlPXQEus0mLcdwazEkWjaBdaJ3TaxmNgCLWwvWzg==", - "dev": true, - "dependencies": { - "samsam": "1.3.0" - } - }, "node_modules/@sinonjs/samsam": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-3.3.3.tgz", - "integrity": "sha512-bKCMKZvWIjYD0BLGnNrxVuw4dkWCYsLqFOUWw8VgKF/+5Y+mE7LfHWPIYoDXowH+3a9LsWDMo0uAP8YDosPvHQ==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-6.1.1.tgz", + "integrity": "sha512-cZ7rKJTLiE7u7Wi/v9Hc2fs3Ucc3jrWeMgPHbbTCeVAB2S0wOBbYlkJVeNSL04i7fdhT8wIbDq1zhC/PXTD2SA==", "dev": true, "dependencies": { - "@sinonjs/commons": "^1.3.0", - "array-from": "^2.1.1", - "lodash": "^4.17.15" + "@sinonjs/commons": "^1.6.0", + "lodash.get": "^4.4.2", + "type-detect": "^4.0.8" } }, "node_modules/@sinonjs/text-encoding": { @@ -3377,16 +3354,16 @@ } }, "node_modules/@tinymce/tinymce-react": { - "version": "3.12.6", - "resolved": "https://registry.npmjs.org/@tinymce/tinymce-react/-/tinymce-react-3.12.6.tgz", - "integrity": "sha512-a7/Ns7uVsSr2N0fCxn+OhDx8f9JqfywTlHbXsgcwlWB6vIBMIjjRBJ6PGo/5H0y2vfzO6fBzd4gc6h05Cm5R7A==", + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/@tinymce/tinymce-react/-/tinymce-react-3.14.0.tgz", + "integrity": "sha512-1X3Kl4DNVG/XNttlniQHvb9awX2MrD7XaFO2nWZ9SJrionIqWqKMLVl5GnJ8Br6KehNl97amxO8t3+5eLvfgxg==", "dependencies": { "prop-types": "^15.6.2", "tinymce": "^5.5.1" }, "peerDependencies": { - "react": "^17.0.1 || ^16.7.0", - "react-dom": "^17.0.1 || ^16.7.0" + "react": "^18.0.0 || ^17.0.1 || ^16.7.0", + "react-dom": "^18.0.0 || ^17.0.1 || ^16.7.0" } }, "node_modules/@tootallnate/once": { @@ -3556,6 +3533,7 @@ "version": "7.1.4", "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.4.tgz", "integrity": "sha512-w+LsMxKyYQm347Otw+IfBXOv9UWVjpHpCDdbBMt8Kz/xbvCYNjP+0qPh91Km3iKfSRLBB0P7fAMf0KHrPu+MyA==", + "dev": true, "dependencies": { "@types/minimatch": "*", "@types/node": "*" @@ -3627,7 +3605,8 @@ "node_modules/@types/minimatch": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", - "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==" + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", + "dev": true }, "node_modules/@types/minimist": { "version": "1.2.2", @@ -3638,7 +3617,8 @@ "node_modules/@types/node": { "version": "16.4.3", "resolved": "https://registry.npmjs.org/@types/node/-/node-16.4.3.tgz", - "integrity": "sha512-GKM4FLMkWDc0sfx7tXqPWkM6NBow1kge0fgQh0bOnlqo4iT1kvTvMEKE0c1RtUGnbLlGRXiAA8SumE//90uKAg==" + "integrity": "sha512-GKM4FLMkWDc0sfx7tXqPWkM6NBow1kge0fgQh0bOnlqo4iT1kvTvMEKE0c1RtUGnbLlGRXiAA8SumE//90uKAg==", + "dev": true }, "node_modules/@types/normalize-package-data": { "version": "2.4.1", @@ -3685,9 +3665,9 @@ } }, "node_modules/@types/react-redux": { - "version": "7.1.18", - "resolved": "https://registry.npmjs.org/@types/react-redux/-/react-redux-7.1.18.tgz", - "integrity": "sha512-9iwAsPyJ9DLTRH+OFeIrm9cAbIj1i2ANL3sKQFATqnPWRbg+jEFXyZOKHiQK/N86pNRXbb4HRxAxo0SIX1XwzQ==", + "version": "7.1.24", + "resolved": "https://registry.npmjs.org/@types/react-redux/-/react-redux-7.1.24.tgz", + "integrity": "sha512-7FkurKcS1k0FHZEtdbbgN8Oc6b+stGSfZYjQGicofJ0j4U0qIn/jaSvnP2pLwZKiai3/17xqqxkkrxTgN8UNbQ==", "dependencies": { "@types/hoist-non-react-statics": "^3.3.0", "@types/react": "*", @@ -3992,13 +3972,13 @@ "dev": true }, "node_modules/accepts": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", - "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", "dev": true, "dependencies": { - "mime-types": "~2.1.24", - "negotiator": "0.6.2" + "mime-types": "~2.1.34", + "negotiator": "0.6.3" }, "engines": { "node": ">= 0.6" @@ -4081,7 +4061,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, "dependencies": { "clean-stack": "^2.0.0", "indent-string": "^4.0.0" @@ -4135,15 +4114,6 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/ajv-errors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", - "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", - "dev": true, - "peerDependencies": { - "ajv": ">=5.0.0" - } - }, "node_modules/ajv-formats": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", @@ -4319,43 +4289,10 @@ "sprintf-js": "~1.0.2" } }, - "node_modules/arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", - "dev": true - }, - "node_modules/array-from": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/array-from/-/array-from-2.1.1.tgz", - "integrity": "sha1-z+nYwmYoudxa7MYqn12PHzUsEZU=", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", "dev": true }, "node_modules/array-includes": { @@ -4455,31 +4392,11 @@ } }, "node_modules/array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "dependencies": { - "array-uniq": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true, + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, "node_modules/array.prototype.filter": { @@ -4639,48 +4556,21 @@ "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" }, - "node_modules/assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "dev": true, "dependencies": { "lodash": "^4.17.14" } }, - "node_modules/async-limiter": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", - "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", - "dev": true - }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", "dev": true }, - "node_modules/atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true, - "bin": { - "atob": "bin/atob.js" - }, - "engines": { - "node": ">= 4.5.0" - } - }, "node_modules/babel-jest": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz", @@ -4774,13 +4664,13 @@ } }, "node_modules/babel-loader": { - "version": "8.2.2", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.2.tgz", - "integrity": "sha512-JvTd0/D889PQBtUXJ2PXaKU/pjZDMtHA9V2ecm+eNRmmBCMR09a+fmpGTNwnJtFmFl5Ei7Vy47LjBb+L0wQ99g==", + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.4.tgz", + "integrity": "sha512-8dytA3gcvPPPv4Grjhnt8b5IIiTcq/zeXOPk4iTYI0SVXcsmuGg7JtBRDp8S9X+gJfhQ8ektjXZlDu1Bb33U8A==", "dev": true, "dependencies": { "find-cache-dir": "^3.3.1", - "loader-utils": "^1.4.0", + "loader-utils": "^2.0.0", "make-dir": "^3.1.0", "schema-utils": "^2.6.5" }, @@ -4792,6 +4682,20 @@ "webpack": ">=2" } }, + "node_modules/babel-loader/node_modules/loader-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", + "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, "node_modules/babel-plugin-dynamic-import-node": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", @@ -4932,128 +4836,36 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, - "node_modules/base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", "dev": true, - "dependencies": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "engines": { - "node": ">=0.10.0" - } + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, - "node_modules/base/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", - "dev": true - }, - "node_modules/bfj": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/bfj/-/bfj-6.1.2.tgz", - "integrity": "sha512-BmBJa4Lip6BPRINSZ0BPEIfB1wUY/9rwbwvIHQA1KjX9om29B6id0wnWXq7m3bn5JrUVjeOTnVuhPT1FiHwPGw==", - "dev": true, - "dependencies": { - "bluebird": "^3.5.5", - "check-types": "^8.0.3", - "hoopy": "^0.1.4", - "tryer": "^1.0.1" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "dev": true + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", "dev": true, "engines": { "node": "*" @@ -5084,28 +4896,22 @@ "node": ">= 6" } }, - "node_modules/bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "dev": true - }, "node_modules/body-parser": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw==", "dev": true, "dependencies": { - "bytes": "3.1.0", + "bytes": "3.1.2", "content-type": "~1.0.4", "debug": "2.6.9", "depd": "~1.1.2", - "http-errors": "1.7.2", + "http-errors": "1.8.1", "iconv-lite": "0.4.24", "on-finished": "~2.3.0", - "qs": "6.7.0", - "raw-body": "2.4.0", - "type-is": "~1.6.17" + "qs": "6.9.7", + "raw-body": "2.4.3", + "type-is": "~1.6.18" }, "engines": { "node": ">= 0.8" @@ -5126,35 +4932,18 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, - "node_modules/body-parser/node_modules/qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", - "dev": true, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/bonjour": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", - "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "node_modules/bonjour-service": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.0.11.tgz", + "integrity": "sha512-drMprzr2rDTCtgEE3VgdA9uUFaUHF+jXduwYSThHJnKMYM+FhI9Z3ph+TX3xy0LtgYHae6CHYPJ/2UnK8nQHcA==", "dev": true, "dependencies": { - "array-flatten": "^2.1.0", - "deep-equal": "^1.0.1", + "array-flatten": "^2.1.2", "dns-equal": "^1.0.0", - "dns-txt": "^2.0.2", - "multicast-dns": "^6.0.1", - "multicast-dns-service-types": "^1.1.0" + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.4" } }, - "node_modules/bonjour/node_modules/array-flatten": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", - "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", - "dev": true - }, "node_modules/boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", @@ -5273,39 +5062,6 @@ "concat-map": "0.0.1" } }, - "node_modules/braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/braces/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/browser-process-hrtime": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", @@ -5382,41 +5138,15 @@ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", "dev": true }, - "node_modules/buffer-indexof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", - "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", - "dev": true - }, "node_modules/bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "dev": true, "engines": { "node": ">= 0.8" } }, - "node_modules/cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dev": true, - "dependencies": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/cacheable-request": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", @@ -5481,12 +5211,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/call-me-maybe": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", - "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=", - "dev": true - }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -5552,12 +5276,6 @@ "node": ">=10" } }, - "node_modules/check-types": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/check-types/-/check-types-8.0.3.tgz", - "integrity": "sha512-YpeKZngUmG65rLudJ4taU7VLkOCTMhNl/u4ctNC56LQS/zJTyNH0Lrtwm1tfTsbLlwvlfsA2d1c8vCf/Kh2KwQ==", - "dev": true - }, "node_modules/cheerio": { "version": "1.0.0-rc.10", "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.10.tgz", @@ -5621,33 +5339,6 @@ "resolved": "https://registry.npmjs.org/class-autobind/-/class-autobind-0.1.4.tgz", "integrity": "sha1-NFFsSRZ8+NP2Od3Bhrz6Imiv/zQ=" }, - "node_modules/class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dev": true, - "dependencies": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/classnames": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.1.tgz", @@ -5657,7 +5348,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true, "engines": { "node": ">=6" } @@ -5774,19 +5464,6 @@ "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", "dev": true }, - "node_modules/collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "dev": true, - "dependencies": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", @@ -5830,12 +5507,6 @@ "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", "dev": true }, - "node_modules/component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true - }, "node_modules/compress-commons": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.1.tgz", @@ -5925,9 +5596,9 @@ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, "node_modules/concurrently": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-7.0.0.tgz", - "integrity": "sha512-WKM7PUsI8wyXpF80H+zjHP32fsgsHNQfPLw/e70Z5dYkV7hF+rf8q3D+ScWJIEr57CpkO3OWBko6hwhQLPR8Pw==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-7.1.0.tgz", + "integrity": "sha512-Bz0tMlYKZRUDqJlNiF/OImojMB9ruKUz6GCfmhFnSapXgPe+3xzY4byqoKG9tUZ7L2PGEUjfLPOLfIX3labnmw==", "dev": true, "dependencies": { "chalk": "^4.1.0", @@ -6058,15 +5729,15 @@ } }, "node_modules/connected-react-router": { - "version": "6.9.1", - "resolved": "https://registry.npmjs.org/connected-react-router/-/connected-react-router-6.9.1.tgz", - "integrity": "sha512-BbtB6t0iqAwGwygDenJl9zmlk7vpKWIRSycULmkAOn2RUaF6+bqETprl0qcIqQmY5CTqSwKanaxkLXYWiffAfQ==", + "version": "6.9.2", + "resolved": "https://registry.npmjs.org/connected-react-router/-/connected-react-router-6.9.2.tgz", + "integrity": "sha512-bE8kNBiZv9Mivp7pYn9JvLH5ItTjLl45kk1/Vha0rmAK9I/ETb5JPJrAm0h2KCG9qLfv7vqU3Jo4UUDo0oJnQg==", "dependencies": { "lodash.isequalwith": "^4.4.0", "prop-types": "^15.7.2" }, "optionalDependencies": { - "immutable": "^3.8.1 || ^4.0.0-rc.1", + "immutable": "^3.8.1 || ^4.0.0", "seamless-immutable": "^7.1.3" }, "peerDependencies": { @@ -6078,17 +5749,37 @@ } }, "node_modules/content-disposition": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", - "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", "dev": true, "dependencies": { - "safe-buffer": "5.1.2" + "safe-buffer": "5.2.1" }, "engines": { "node": ">= 0.6" } }, + "node_modules/content-disposition/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "node_modules/content-type": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", @@ -6107,9 +5798,9 @@ } }, "node_modules/cookie": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", - "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", "dev": true, "engines": { "node": ">= 0.6" @@ -6121,19 +5812,10 @@ "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", "dev": true }, - "node_modules/copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/core-js": { - "version": "3.15.2", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.15.2.tgz", - "integrity": "sha512-tKs41J7NJVuaya8DxIOCnl8QuPHx5/ZVbFo1oKgVl1qHFBBrDctzQGtuLjPpRdNTWmKPH6oEvgN/MUID+l485Q==", + "version": "3.21.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.21.1.tgz", + "integrity": "sha512-FRq5b/VMrWlrmCzwRrpDYNxyHP9BcAZC+xHJaqTgIE5091ZV1NTmyh0sGOg5XqpnHvR0svdy0sv1gWA1zmhxig==", "hasInstallScript": true, "funding": { "type": "opencollective", @@ -6190,319 +5872,143 @@ "node": ">=8" } }, - "node_modules/cp-file": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/cp-file/-/cp-file-7.0.0.tgz", - "integrity": "sha512-0Cbj7gyvFVApzpK/uhCtQ/9kE9UnYpxMzaq5nQQC/Dh4iaj5fxp7iEFIullrYwzj8nf0qnsI1Qsx34hAeAebvw==", + "node_modules/crc-32": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.1.tgz", + "integrity": "sha512-Dn/xm/1vFFgs3nfrpEVScHoIslO9NZRITWGz/1E/St6u4xw99vfZzVkW0OSnzx2h9egej9xwMCEut6sqwokM/w==", "dev": true, "dependencies": { - "graceful-fs": "^4.1.2", - "make-dir": "^3.0.0", - "nested-error-stacks": "^2.0.0", - "p-event": "^4.1.0" + "exit-on-epipe": "~1.0.1", + "printj": "~1.3.1" + }, + "bin": { + "crc32": "bin/crc32.njs" }, "engines": { - "node": ">=8" + "node": ">=0.8" } }, - "node_modules/cpy": { - "version": "8.1.2", - "resolved": "https://registry.npmjs.org/cpy/-/cpy-8.1.2.tgz", - "integrity": "sha512-dmC4mUesv0OYH2kNFEidtf/skUwv4zePmGeepjyyJ0qTo5+8KhA1o99oIAwVVLzQMAeDJml74d6wPPKb6EZUTg==", + "node_modules/crc32-stream": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-4.0.2.tgz", + "integrity": "sha512-DxFZ/Hk473b/muq1VJ///PMNLj0ZMnzye9thBpmjpJKCc5eMgB95aK8zCGrGfQ90cWo561Te6HK9D+j4KPdM6w==", "dev": true, "dependencies": { - "arrify": "^2.0.1", - "cp-file": "^7.0.0", - "globby": "^9.2.0", - "has-glob": "^1.0.0", - "junk": "^3.1.0", - "nested-error-stacks": "^2.1.0", - "p-all": "^2.1.0", - "p-filter": "^2.1.0", - "p-map": "^3.0.0" + "crc-32": "^1.2.0", + "readable-stream": "^3.4.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 10" } }, - "node_modules/cpy/node_modules/@nodelib/fs.stat": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", - "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", + "node_modules/crc32-stream/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, "engines": { "node": ">= 6" } }, - "node_modules/cpy/node_modules/arrify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", - "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", - "dev": true, - "engines": { - "node": ">=8" + "node_modules/cross-fetch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", + "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", + "dependencies": { + "node-fetch": "2.6.7" } }, - "node_modules/cpy/node_modules/dir-glob": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", - "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, "dependencies": { - "path-type": "^3.0.0" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" }, "engines": { - "node": ">=4" + "node": ">= 8" } }, - "node_modules/cpy/node_modules/fast-glob": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", - "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", + "node_modules/cross-spawn/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "dependencies": { - "@mrmlnc/readdir-enhanced": "^2.2.1", - "@nodelib/fs.stat": "^1.1.2", - "glob-parent": "^3.1.0", - "is-glob": "^4.0.0", - "merge2": "^1.2.3", - "micromatch": "^3.1.10" + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" }, "engines": { - "node": ">=4.0.0" + "node": ">= 8" } }, - "node_modules/cpy/node_modules/globby": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-9.2.0.tgz", - "integrity": "sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==", + "node_modules/crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", "dev": true, - "dependencies": { - "@types/glob": "^7.1.1", - "array-union": "^1.0.2", - "dir-glob": "^2.2.2", - "fast-glob": "^2.2.6", - "glob": "^7.1.3", - "ignore": "^4.0.3", - "pify": "^4.0.1", - "slash": "^2.0.0" - }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/cpy/node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "node_modules/css-functions-list": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.0.1.tgz", + "integrity": "sha512-PriDuifDt4u4rkDgnqRCLnjfMatufLmWNfQnGCq34xZwpY3oabwhB9SqRBmuvWUgndbemCFlKqg+nO7C2q0SBw==", "dev": true, "engines": { - "node": ">= 4" + "node": ">=12.22" } }, - "node_modules/cpy/node_modules/p-map": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", - "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "node_modules/css-loader": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.7.1.tgz", + "integrity": "sha512-yB5CNFa14MbPJcomwNh3wLThtkZgcNyI2bNMRt8iE5Z8Vwl7f8vQXFAzn2HDOJvtDq2NTZBUGMSUNNyrv3/+cw==", "dev": true, "dependencies": { - "aggregate-error": "^3.0.0" + "icss-utils": "^5.1.0", + "postcss": "^8.4.7", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.0", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.3.5" }, "engines": { - "node": ">=8" - } - }, - "node_modules/cpy/node_modules/path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, - "dependencies": { - "pify": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/cpy/node_modules/path-type/node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/cpy/node_modules/slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/crc-32": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.1.tgz", - "integrity": "sha512-Dn/xm/1vFFgs3nfrpEVScHoIslO9NZRITWGz/1E/St6u4xw99vfZzVkW0OSnzx2h9egej9xwMCEut6sqwokM/w==", - "dev": true, - "dependencies": { - "exit-on-epipe": "~1.0.1", - "printj": "~1.3.1" - }, - "bin": { - "crc32": "bin/crc32.njs" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/crc32-stream": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-4.0.2.tgz", - "integrity": "sha512-DxFZ/Hk473b/muq1VJ///PMNLj0ZMnzye9thBpmjpJKCc5eMgB95aK8zCGrGfQ90cWo561Te6HK9D+j4KPdM6w==", - "dev": true, - "dependencies": { - "crc-32": "^1.2.0", - "readable-stream": "^3.4.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/crc32-stream/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/cross-fetch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", - "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", - "dependencies": { - "node-fetch": "2.6.7" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/cross-spawn/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/crypto-random-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", - "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/css-loader": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-2.1.1.tgz", - "integrity": "sha512-OcKJU/lt232vl1P9EEDamhoO9iKY3tIjY5GU+XDLblAykTdgs6Ux9P1hTHve8nFKy5KPpOXOsVI/hIwi3841+w==", - "dev": true, - "dependencies": { - "camelcase": "^5.2.0", - "icss-utils": "^4.1.0", - "loader-utils": "^1.2.3", - "normalize-path": "^3.0.0", - "postcss": "^7.0.14", - "postcss-modules-extract-imports": "^2.0.0", - "postcss-modules-local-by-default": "^2.0.6", - "postcss-modules-scope": "^2.1.0", - "postcss-modules-values": "^2.0.0", - "postcss-value-parser": "^3.3.0", - "schema-utils": "^1.0.0" + "node": ">= 12.13.0" }, - "engines": { - "node": ">= 6.9.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "webpack": "^4.0.0" + "webpack": "^5.0.0" } }, - "node_modules/css-loader/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/css-loader/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "node_modules/css-loader/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" + "lru-cache": "^6.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/css-loader/node_modules/schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "dependencies": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": ">= 4" - } - }, - "node_modules/css-loader/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, "node_modules/css-select": { @@ -6608,9 +6114,9 @@ "dev": true }, "node_modules/csstype": { - "version": "2.6.17", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.17.tgz", - "integrity": "sha512-u1wmTI1jJGzCJzWndZo8mk4wnPTZd1eOIYTYvuEyOQGfmDl3TrabCCfKnOC86FZwW/9djqTl933UF/cS425i9A==" + "version": "2.6.20", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.20.tgz", + "integrity": "sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA==" }, "node_modules/data-urls": { "version": "3.0.1", @@ -6627,9 +6133,9 @@ } }, "node_modules/date-fns": { - "version": "2.23.0", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.23.0.tgz", - "integrity": "sha512-5ycpauovVyAk0kXNZz6ZoB9AYMZB4DObse7P3BPWmyEjXNORTI8EJ6X0uaSAq4sCHzM1uajzrkr6HnsLQpxGXA==", + "version": "2.28.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.28.0.tgz", + "integrity": "sha512-8d35hViGYx/QH0icHYCeLmsLmMUheMmTyV9Fcm6gvNwdw31yXXH+O85sOBJ+OLnLQMKZowvpKb6FgMIQjcpvQw==", "engines": { "node": ">=0.11" }, @@ -6639,9 +6145,9 @@ } }, "node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dependencies": { "ms": "2.1.2" }, @@ -6691,15 +6197,6 @@ "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==", "dev": true }, - "node_modules/decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "dev": true, - "engines": { - "node": ">=0.10" - } - }, "node_modules/decompress-response": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", @@ -6723,23 +6220,6 @@ "resolved": "https://registry.npmjs.org/deep-diff/-/deep-diff-0.3.8.tgz", "integrity": "sha1-wB3mPvsO7JeYgB1Ax+Da4ltYLIQ=" }, - "node_modules/deep-equal": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", - "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", - "dev": true, - "dependencies": { - "is-arguments": "^1.0.4", - "is-date-object": "^1.0.1", - "is-regex": "^1.0.4", - "object-is": "^1.0.1", - "object-keys": "^1.1.1", - "regexp.prototype.flags": "^1.2.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/deep-extend": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", @@ -6801,81 +6281,25 @@ "node": ">= 0.4" } }, - "node_modules/define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/define-property/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/define-property/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/define-property/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/define-property/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/del": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", - "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/del/-/del-6.0.0.tgz", + "integrity": "sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ==", "dependencies": { - "@types/glob": "^7.1.1", - "globby": "^6.1.0", - "is-path-cwd": "^2.0.0", - "is-path-in-cwd": "^2.0.0", - "p-map": "^2.0.0", - "pify": "^4.0.1", - "rimraf": "^2.6.3" + "globby": "^11.0.1", + "graceful-fs": "^4.2.4", + "is-glob": "^4.0.1", + "is-path-cwd": "^2.2.0", + "is-path-inside": "^3.0.2", + "p-map": "^4.0.0", + "rimraf": "^3.0.2", + "slash": "^3.0.0" }, "engines": { - "node": ">=6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/delayed-stream": { @@ -6908,9 +6332,9 @@ "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==" }, "node_modules/diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", "dev": true, "engines": { "node": ">=0.3.1" @@ -6929,7 +6353,6 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, "dependencies": { "path-type": "^4.0.0" }, @@ -6941,7 +6364,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, "engines": { "node": ">=8" } @@ -6959,22 +6381,15 @@ "dev": true }, "node_modules/dns-packet": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz", - "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==", - "dev": true, - "dependencies": { - "ip": "^1.1.0", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/dns-txt": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", - "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.3.1.tgz", + "integrity": "sha512-spBwIj0TK0Ey3666GwIdWVfUpLyubpU53BTCu8iPn4r4oXd9O14Hjg3EHw3ts2oed77/SeckunUYCyRlSngqHw==", "dev": true, "dependencies": { - "buffer-indexof": "^1.0.0" + "@leichtgewicht/ip-codec": "^2.0.1" + }, + "engines": { + "node": ">=6" } }, "node_modules/doctrine": { @@ -7195,16 +6610,6 @@ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", "dev": true }, - "node_modules/ejs": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.7.4.tgz", - "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==", - "dev": true, - "hasInstallScript": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/electron-to-chromium": { "version": "1.4.76", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.76.tgz", @@ -7255,6 +6660,19 @@ "once": "^1.4.0" } }, + "node_modules/enhanced-resolve": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz", + "integrity": "sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, "node_modules/entities": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", @@ -7554,12 +6972,12 @@ } }, "node_modules/eslint": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.7.0.tgz", - "integrity": "sha512-ifHYzkBGrzS2iDU7KjhCAVMGCvF6M3Xfs8X8b37cgrUlDt6bWRTpRh6T/gtSXv1HJ/BUGgmjvNvOEGu85Iif7w==", + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.13.0.tgz", + "integrity": "sha512-D+Xei61eInqauAyTJ6C0q6x9mx7kTUC1KZ0m0LSEexR0V+e94K12LmWX076ZIsldwfQ2RONdaJe0re0TRGQbRQ==", "dev": true, "dependencies": { - "@eslint/eslintrc": "^1.0.5", + "@eslint/eslintrc": "^1.2.1", "@humanwhocodes/config-array": "^0.9.2", "ajv": "^6.10.0", "chalk": "^4.0.0", @@ -7567,10 +6985,10 @@ "debug": "^4.3.2", "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.0", + "eslint-scope": "^7.1.1", "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.2.0", - "espree": "^9.3.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.1", "esquery": "^1.4.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -7606,9 +7024,9 @@ } }, "node_modules/eslint-plugin-react": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.28.0.tgz", - "integrity": "sha512-IOlFIRHzWfEQQKcAD4iyYDndHwTQiCMcJVJjxempf203jnNLUnW34AXLrV33+nEXoifJE2ZEGmcjKPL8957eSw==", + "version": "7.29.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.29.4.tgz", + "integrity": "sha512-CVCXajliVh509PcZYRFyu/BoUEz452+jtQJq2b3Bae4v3xBUWPLCmtmBM+ZinG4MzwmxJgJ2M5rMqhqLVn7MtQ==", "dev": true, "dependencies": { "array-includes": "^3.1.4", @@ -7616,12 +7034,12 @@ "doctrine": "^2.1.0", "estraverse": "^5.3.0", "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "minimatch": "^3.0.4", + "minimatch": "^3.1.2", "object.entries": "^1.1.5", "object.fromentries": "^2.0.5", "object.hasown": "^1.1.0", "object.values": "^1.1.5", - "prop-types": "^15.7.2", + "prop-types": "^15.8.1", "resolve": "^2.0.0-next.3", "semver": "^6.3.0", "string.prototype.matchall": "^4.0.6" @@ -7821,29 +7239,28 @@ } }, "node_modules/eslint-visitor-keys": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.2.0.tgz", - "integrity": "sha512-IOzT0X126zn7ALX0dwFiUQEdsfzrm4+ISsQS8nukaJXwEyYKRSnEIIDULYg1mCtGp7UUXgfGl7BIolXREQK+XQ==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/eslint-webpack-plugin": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/eslint-webpack-plugin/-/eslint-webpack-plugin-2.6.0.tgz", - "integrity": "sha512-V+LPY/T3kur5QO3u+1s34VDTcRxjXWPUGM4hlmTb5DwVD0OQz631yGTxJZf4SpAqAjdbBVe978S8BJeHpAdOhQ==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/eslint-webpack-plugin/-/eslint-webpack-plugin-3.1.1.tgz", + "integrity": "sha512-xSucskTN9tOkfW7so4EaiFIkulWLXwCB/15H917lR6pTv0Zot6/fetFucmENRb7J5whVSFKIvwnrnsa78SG2yg==", "dev": true, "dependencies": { "@types/eslint": "^7.28.2", - "arrify": "^2.0.1", "jest-worker": "^27.3.1", "micromatch": "^4.0.4", "normalize-path": "^3.0.0", "schema-utils": "^3.1.1" }, "engines": { - "node": ">= 10.13.0" + "node": ">= 12.13.0" }, "funding": { "type": "opencollective", @@ -7851,16 +7268,7 @@ }, "peerDependencies": { "eslint": "^7.0.0 || ^8.0.0", - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/eslint-webpack-plugin/node_modules/arrify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", - "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", - "dev": true, - "engines": { - "node": ">=8" + "webpack": "^5.0.0" } }, "node_modules/eslint-webpack-plugin/node_modules/braces": { @@ -8028,9 +7436,9 @@ } }, "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.0.tgz", - "integrity": "sha512-aWwkhnS0qAXqNOgKOK0dJ2nvzEbhEvpy8OlJ9kZ0FeZnA6zpjv1/Vei+puGFFX7zkPCkHHXb7IDX3A+7yPrRWg==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", "dev": true, "dependencies": { "esrecurse": "^4.3.0", @@ -8067,18 +7475,6 @@ "node": ">=10.13.0" } }, - "node_modules/eslint/node_modules/glob-parent/node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/eslint/node_modules/globals": { "version": "13.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz", @@ -8191,14 +7587,14 @@ } }, "node_modules/espree": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.0.tgz", - "integrity": "sha512-d/5nCsb0JcqsSEeQzFZ8DH1RmxPcglRWh24EFTlUEmCKoehXGdpsx0RkHDubqUI8LSAIKMQp4r9SzQ3n+sm4HQ==", + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.1.tgz", + "integrity": "sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ==", "dev": true, "dependencies": { "acorn": "^8.7.0", "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^3.1.0" + "eslint-visitor-keys": "^3.3.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -8358,63 +7754,6 @@ "node": ">=0.8" } }, - "node_modules/expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "dependencies": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/expand-brackets/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, "node_modules/expect": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", @@ -8431,17 +7770,17 @@ } }, "node_modules/express": { - "version": "4.17.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", - "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "version": "4.17.3", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.3.tgz", + "integrity": "sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg==", "dev": true, "dependencies": { - "accepts": "~1.3.7", + "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.19.0", - "content-disposition": "0.5.3", + "body-parser": "1.19.2", + "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.4.0", + "cookie": "0.4.2", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "~1.1.2", @@ -8455,13 +7794,13 @@ "on-finished": "~2.3.0", "parseurl": "~1.3.3", "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.5", - "qs": "6.7.0", + "proxy-addr": "~2.0.7", + "qs": "6.9.7", "range-parser": "~1.2.1", - "safe-buffer": "5.1.2", - "send": "0.17.1", - "serve-static": "1.14.1", - "setprototypeof": "1.1.1", + "safe-buffer": "5.2.1", + "send": "0.17.2", + "serve-static": "1.14.2", + "setprototypeof": "1.2.0", "statuses": "~1.5.0", "type-is": "~1.6.18", "utils-merge": "1.0.1", @@ -8471,6 +7810,12 @@ "node": ">= 0.10.0" } }, + "node_modules/express/node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true + }, "node_modules/express/node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -8492,129 +7837,25 @@ "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", "dev": true }, - "node_modules/express/node_modules/qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", - "dev": true, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extend-shallow/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "dependencies": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "node_modules/express/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "dev": true, - "engines": { - "node": ">=0.10.0" - } + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, "node_modules/extra-watch-webpack-plugin": { "version": "1.0.3", @@ -8651,7 +7892,6 @@ "version": "3.2.11", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", - "dev": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -8667,7 +7907,6 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, "dependencies": { "fill-range": "^7.0.1" }, @@ -8679,7 +7918,6 @@ "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, "dependencies": { "to-regex-range": "^5.0.1" }, @@ -8691,7 +7929,6 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, "dependencies": { "is-glob": "^4.0.1" }, @@ -8703,7 +7940,6 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, "engines": { "node": ">=0.12.0" } @@ -8712,7 +7948,6 @@ "version": "4.0.4", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", - "dev": true, "dependencies": { "braces": "^3.0.1", "picomatch": "^2.2.3" @@ -8725,7 +7960,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, "dependencies": { "is-number": "^7.0.0" }, @@ -8749,7 +7983,6 @@ "version": "1.13.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", - "dev": true, "dependencies": { "reusify": "^1.0.4" } @@ -8808,18 +8041,19 @@ } }, "node_modules/filemanager-webpack-plugin": { - "version": "6.1.7", - "resolved": "https://registry.npmjs.org/filemanager-webpack-plugin/-/filemanager-webpack-plugin-6.1.7.tgz", - "integrity": "sha512-0hhPpmod5t0xy1hBSA9gXi0WlOHL3+x56IBt0b/VMhvbZ5/z6jakXvNOTuVmn4wOZwAORvAeH5qQ5Qs6NdPyiw==", + "version": "7.0.0-beta.0", + "resolved": "https://registry.npmjs.org/filemanager-webpack-plugin/-/filemanager-webpack-plugin-7.0.0-beta.0.tgz", + "integrity": "sha512-L6jbUBUDgsMTEopXJsB3OX8mFx/4JQ8Vu0ks7vIgtNBqwYFDjWOW/DRoon+iM4zUhRwacv9kxmh+fgx7yxcOXw==", "dev": true, "dependencies": { - "@types/archiver": "^5.1.1", + "@types/archiver": "^5.3.1", "archiver": "^5.3.0", - "cpy": "^8.1.2", "del": "^6.0.0", - "fs-extra": "^10.0.0", - "is-glob": "^4.0.1", - "schema-utils": "^3.1.1" + "fast-glob": "^3.2.11", + "fs-extra": "^10.0.1", + "is-glob": "^4.0.3", + "normalize-path": "^3.0.0", + "schema-utils": "^4.0.0" }, "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" @@ -8828,154 +8062,63 @@ "webpack": "^5.0.0" } }, - "node_modules/filemanager-webpack-plugin/node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/filemanager-webpack-plugin/node_modules/del": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/del/-/del-6.0.0.tgz", - "integrity": "sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ==", + "node_modules/filemanager-webpack-plugin/node_modules/ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", "dev": true, "dependencies": { - "globby": "^11.0.1", - "graceful-fs": "^4.2.4", - "is-glob": "^4.0.1", - "is-path-cwd": "^2.2.0", - "is-path-inside": "^3.0.2", - "p-map": "^4.0.0", - "rimraf": "^3.0.2", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/filemanager-webpack-plugin/node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "node_modules/filemanager-webpack-plugin/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", "dev": true, "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" + "fast-deep-equal": "^3.1.3" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "ajv": "^8.8.2" } }, - "node_modules/filemanager-webpack-plugin/node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "engines": { - "node": ">=8" - } + "node_modules/filemanager-webpack-plugin/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true }, - "node_modules/filemanager-webpack-plugin/node_modules/p-map": { + "node_modules/filemanager-webpack-plugin/node_modules/schema-utils": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", "dev": true, "dependencies": { - "aggregate-error": "^3.0.0" + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" }, "engines": { - "node": ">=10" + "node": ">= 12.13.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, - "node_modules/filemanager-webpack-plugin/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/filemanager-webpack-plugin/node_modules/schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/filesize": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz", - "integrity": "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==", - "dev": true, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fill-range/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "node_modules/finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", "dev": true, "dependencies": { "debug": "2.6.9", @@ -9035,21 +8178,6 @@ "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/flat-cache/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/flatted": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.4.tgz", @@ -9076,15 +8204,6 @@ } } }, - "node_modules/for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/form-data": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", @@ -9108,18 +8227,6 @@ "node": ">= 0.6" } }, - "node_modules/fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "dev": true, - "dependencies": { - "map-cache": "^0.2.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", @@ -9286,15 +8393,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/glob": { "version": "7.1.7", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", @@ -9314,28 +8412,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "dependencies": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - } - }, - "node_modules/glob-parent/node_modules/is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/glob-to-regexp": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", @@ -9385,26 +8461,22 @@ } }, "node_modules/globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dependencies": { - "array-union": "^1.0.1", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/globby/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/globjoin": { @@ -9460,8 +8532,22 @@ "node_modules/graceful-fs": { "version": "4.2.9", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", - "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==", - "dev": true + "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==" + }, + "node_modules/gzip-size": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", + "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", + "dev": true, + "dependencies": { + "duplexer": "^0.1.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "node_modules/handle-thing": { "version": "2.0.1", @@ -9512,30 +8598,6 @@ "node": ">=4" } }, - "node_modules/has-glob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-glob/-/has-glob-1.0.0.tgz", - "integrity": "sha1-mqqe7b/7G6OZCnsAEPtnjuAIEgc=", - "dev": true, - "dependencies": { - "is-glob": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-glob/node_modules/is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/has-symbols": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", @@ -9562,45 +8624,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "dev": true, - "dependencies": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "dev": true, - "dependencies": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values/node_modules/kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/has-yarn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", @@ -9636,15 +8659,6 @@ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, - "node_modules/hoopy": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz", - "integrity": "sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==", - "dev": true, - "engines": { - "node": ">= 6.0.0" - } - }, "node_modules/hpack.js": { "version": "2.1.6", "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", @@ -9735,27 +8749,21 @@ "dev": true }, "node_modules/http-errors": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", - "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", "dev": true, "dependencies": { "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.1", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" + "toidentifier": "1.0.1" }, "engines": { "node": ">= 0.6" } }, - "node_modules/http-errors/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, "node_modules/http-parser-js": { "version": "0.5.5", "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.5.tgz", @@ -9928,54 +8936,16 @@ "node": ">=0.10.0" } }, - "node_modules/icss-replace-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", - "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=", - "dev": true - }, "node_modules/icss-utils": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz", - "integrity": "sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==", - "dev": true, - "dependencies": { - "postcss": "^7.0.14" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/icss-utils/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/icss-utils/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, "engines": { - "node": ">=6.0.0" + "node": "^10 || ^12 || >= 14" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/icss-utils/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "peerDependencies": { + "postcss": "^8.1.0" } }, "node_modules/identity-obj-proxy": { @@ -10014,7 +8984,6 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true, "engines": { "node": ">= 4" } @@ -10094,7 +9063,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true, "engines": { "node": ">=8" } @@ -10150,12 +9118,6 @@ "loose-envify": "^1.0.0" } }, - "node_modules/ip": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", - "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", - "dev": true - }, "node_modules/ipaddr.js": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", @@ -10165,34 +9127,6 @@ "node": ">= 0.10" } }, - "node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-arguments": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", - "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -10222,12 +9156,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, "node_modules/is-callable": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", @@ -10269,18 +9197,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-date-object": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.4.tgz", @@ -10293,33 +9209,10 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-descriptor/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", "dev": true, "bin": { "is-docker": "cli.js" @@ -10331,15 +9224,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -10367,9 +9251,9 @@ } }, "node_modules/is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dependencies": { "is-extglob": "^2.1.1" }, @@ -10398,15 +9282,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-installed-globally/node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/is-negative-zero": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", @@ -10431,18 +9306,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-number-object": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.5.tgz", @@ -10472,26 +9335,12 @@ "node": ">=6" } }, - "node_modules/is-path-in-cwd": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", - "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", - "dependencies": { - "is-path-inside": "^2.1.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/is-path-inside": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", - "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", - "dependencies": { - "path-is-inside": "^1.0.2" - }, + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "engines": { - "node": ">=6" + "node": ">=8" } }, "node_modules/is-plain-obj": { @@ -10618,15 +9467,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-yarn-global": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", @@ -13000,12 +11840,9 @@ "dev": true }, "node_modules/json5": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", - "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", - "dependencies": { - "minimist": "^1.2.5" - }, + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", "bin": { "json5": "lib/cli.js" }, @@ -13035,9 +11872,9 @@ } }, "node_modules/jss": { - "version": "10.7.1", - "resolved": "https://registry.npmjs.org/jss/-/jss-10.7.1.tgz", - "integrity": "sha512-5QN8JSVZR6cxpZNeGfzIjqPEP+ZJwJJfZbXmeABNdxiExyO+eJJDy6WDtqTf8SDKnbL5kZllEpAP71E/Lt7PXg==", + "version": "10.9.0", + "resolved": "https://registry.npmjs.org/jss/-/jss-10.9.0.tgz", + "integrity": "sha512-YpzpreB6kUunQBbrlArlsMpXYyndt9JATbt95tajx0t4MTJJcCJdd4hdNpHmOIDiUJrF/oX5wtVFrS3uofWfGw==", "dependencies": { "@babel/runtime": "^7.3.1", "csstype": "^3.0.2", @@ -13050,76 +11887,76 @@ } }, "node_modules/jss-plugin-camel-case": { - "version": "10.7.1", - "resolved": "https://registry.npmjs.org/jss-plugin-camel-case/-/jss-plugin-camel-case-10.7.1.tgz", - "integrity": "sha512-+ioIyWvmAfgDCWXsQcW1NMnLBvRinOVFkSYJUgewQ6TynOcSj5F1bSU23B7z0p1iqK0PPHIU62xY1iNJD33WGA==", + "version": "10.9.0", + "resolved": "https://registry.npmjs.org/jss-plugin-camel-case/-/jss-plugin-camel-case-10.9.0.tgz", + "integrity": "sha512-UH6uPpnDk413/r/2Olmw4+y54yEF2lRIV8XIZyuYpgPYTITLlPOsq6XB9qeqv+75SQSg3KLocq5jUBXW8qWWww==", "dependencies": { "@babel/runtime": "^7.3.1", "hyphenate-style-name": "^1.0.3", - "jss": "10.7.1" + "jss": "10.9.0" } }, "node_modules/jss-plugin-default-unit": { - "version": "10.7.1", - "resolved": "https://registry.npmjs.org/jss-plugin-default-unit/-/jss-plugin-default-unit-10.7.1.tgz", - "integrity": "sha512-tW+dfYVNARBQb/ONzBwd8uyImigyzMiAEDai+AbH5rcHg5h3TtqhAkxx06iuZiT/dZUiFdSKlbe3q9jZGAPIwA==", + "version": "10.9.0", + "resolved": "https://registry.npmjs.org/jss-plugin-default-unit/-/jss-plugin-default-unit-10.9.0.tgz", + "integrity": "sha512-7Ju4Q9wJ/MZPsxfu4T84mzdn7pLHWeqoGd/D8O3eDNNJ93Xc8PxnLmV8s8ZPNRYkLdxZqKtm1nPQ0BM4JRlq2w==", "dependencies": { "@babel/runtime": "^7.3.1", - "jss": "10.7.1" + "jss": "10.9.0" } }, "node_modules/jss-plugin-global": { - "version": "10.7.1", - "resolved": "https://registry.npmjs.org/jss-plugin-global/-/jss-plugin-global-10.7.1.tgz", - "integrity": "sha512-FbxCnu44IkK/bw8X3CwZKmcAnJqjAb9LujlAc/aP0bMSdVa3/MugKQRyeQSu00uGL44feJJDoeXXiHOakBr/Zw==", + "version": "10.9.0", + "resolved": "https://registry.npmjs.org/jss-plugin-global/-/jss-plugin-global-10.9.0.tgz", + "integrity": "sha512-4G8PHNJ0x6nwAFsEzcuVDiBlyMsj2y3VjmFAx/uHk/R/gzJV+yRHICjT4MKGGu1cJq2hfowFWCyrr/Gg37FbgQ==", "dependencies": { "@babel/runtime": "^7.3.1", - "jss": "10.7.1" + "jss": "10.9.0" } }, "node_modules/jss-plugin-nested": { - "version": "10.7.1", - "resolved": "https://registry.npmjs.org/jss-plugin-nested/-/jss-plugin-nested-10.7.1.tgz", - "integrity": "sha512-RNbICk7FlYKaJyv9tkMl7s6FFfeLA3ubNIFKvPqaWtADK0KUaPsPXVYBkAu4x1ItgsWx67xvReMrkcKA0jSXfA==", + "version": "10.9.0", + "resolved": "https://registry.npmjs.org/jss-plugin-nested/-/jss-plugin-nested-10.9.0.tgz", + "integrity": "sha512-2UJnDrfCZpMYcpPYR16oZB7VAC6b/1QLsRiAutOt7wJaaqwCBvNsosLEu/fUyKNQNGdvg2PPJFDO5AX7dwxtoA==", "dependencies": { "@babel/runtime": "^7.3.1", - "jss": "10.7.1", + "jss": "10.9.0", "tiny-warning": "^1.0.2" } }, "node_modules/jss-plugin-props-sort": { - "version": "10.7.1", - "resolved": "https://registry.npmjs.org/jss-plugin-props-sort/-/jss-plugin-props-sort-10.7.1.tgz", - "integrity": "sha512-eyd5FhA+J0QrpqXxO7YNF/HMSXXl4pB0EmUdY4vSJI4QG22F59vQ6AHtP6fSwhmBdQ98Qd9gjfO+RMxcE39P1A==", + "version": "10.9.0", + "resolved": "https://registry.npmjs.org/jss-plugin-props-sort/-/jss-plugin-props-sort-10.9.0.tgz", + "integrity": "sha512-7A76HI8bzwqrsMOJTWKx/uD5v+U8piLnp5bvru7g/3ZEQOu1+PjHvv7bFdNO3DwNPC9oM0a//KwIJsIcDCjDzw==", "dependencies": { "@babel/runtime": "^7.3.1", - "jss": "10.7.1" + "jss": "10.9.0" } }, "node_modules/jss-plugin-rule-value-function": { - "version": "10.7.1", - "resolved": "https://registry.npmjs.org/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.7.1.tgz", - "integrity": "sha512-fGAAImlbaHD3fXAHI3ooX6aRESOl5iBt3LjpVjxs9II5u9tzam7pqFUmgTcrip9VpRqYHn8J3gA7kCtm8xKwHg==", + "version": "10.9.0", + "resolved": "https://registry.npmjs.org/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.9.0.tgz", + "integrity": "sha512-IHJv6YrEf8pRzkY207cPmdbBstBaE+z8pazhPShfz0tZSDtRdQua5jjg6NMz3IbTasVx9FdnmptxPqSWL5tyJg==", "dependencies": { "@babel/runtime": "^7.3.1", - "jss": "10.7.1", + "jss": "10.9.0", "tiny-warning": "^1.0.2" } }, "node_modules/jss-plugin-vendor-prefixer": { - "version": "10.7.1", - "resolved": "https://registry.npmjs.org/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.7.1.tgz", - "integrity": "sha512-1UHFmBn7hZNsHXTkLLOL8abRl8vi+D1EVzWD4WmLFj55vawHZfnH1oEz6TUf5Y61XHv0smdHabdXds6BgOXe3A==", + "version": "10.9.0", + "resolved": "https://registry.npmjs.org/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.9.0.tgz", + "integrity": "sha512-MbvsaXP7iiVdYVSEoi+blrW+AYnTDvHTW6I6zqi7JcwXdc6I9Kbm234nEblayhF38EftoenbM+5218pidmC5gA==", "dependencies": { "@babel/runtime": "^7.3.1", "css-vendor": "^2.0.8", - "jss": "10.7.1" + "jss": "10.9.0" } }, "node_modules/jss/node_modules/csstype": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.8.tgz", - "integrity": "sha512-jXKhWqXPmlUeoQnF/EhTtTl4C9SnrxSH/jZUih3jmO6lBKr99rP3/+FmrMj4EFpOXzMtXHAZkd3x0E6h6Fgflw==" + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.11.tgz", + "integrity": "sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw==" }, "node_modules/jsx-ast-utils": { "version": "3.2.1", @@ -13134,15 +11971,6 @@ "node": ">=4.0" } }, - "node_modules/junk": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/junk/-/junk-3.1.0.tgz", - "integrity": "sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/just-extend": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.2.1.tgz", @@ -13158,18 +11986,6 @@ "json-buffer": "3.0.0" } }, - "node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/kleur": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", @@ -13179,6 +11995,15 @@ "node": ">=6" } }, + "node_modules/klona": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", + "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, "node_modules/known-css-properties": { "version": "0.24.0", "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.24.0.tgz", @@ -13379,12 +12204,6 @@ "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", "dev": true }, - "node_modules/lolex": { - "version": "2.7.5", - "resolved": "https://registry.npmjs.org/lolex/-/lolex-2.7.5.tgz", - "integrity": "sha512-l9x0+1offnKKIzYVjyXU2SiwhXDLekRzKyhnbyldPHvC7BvLPVpdNUNR2KeMAiCN2D/kLNttZgQD5WjSxuBx3Q==", - "dev": true - }, "node_modules/loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", @@ -13441,15 +12260,6 @@ "tmpl": "1.0.5" } }, - "node_modules/map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/map-obj": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", @@ -13462,18 +12272,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "dev": true, - "dependencies": { - "object-visit": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/math-random": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.4.tgz", @@ -13758,7 +12556,6 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, "engines": { "node": ">= 8" } @@ -13772,39 +12569,6 @@ "node": ">= 0.6" } }, - "node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/micromatch/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/mime": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", @@ -13818,21 +12582,21 @@ } }, "node_modules/mime-db": { - "version": "1.48.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.48.0.tgz", - "integrity": "sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ==", + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true, "engines": { "node": ">= 0.6" } }, "node_modules/mime-types": { - "version": "2.1.31", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.31.tgz", - "integrity": "sha512-XGZnNzm3QvgKxa8dpzyhFTHmpP3l5YNusmne07VUOXxou9CqUqYa/HBy124RqtVh/O2pECas/MOcsDgpilPOPg==", + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, "dependencies": { - "mime-db": "1.48.0" + "mime-db": "1.52.0" }, "engines": { "node": ">= 0.6" @@ -13894,9 +12658,9 @@ "dev": true }, "node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -13907,7 +12671,8 @@ "node_modules/minimist": { "version": "1.2.6", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true }, "node_modules/minimist-options": { "version": "4.1.0", @@ -13932,31 +12697,6 @@ "node": ">=0.10.0" } }, - "node_modules/mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "dev": true, - "dependencies": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/mixin-deep/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/mkdirp": { "version": "0.5.5", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", @@ -13975,34 +12715,37 @@ "integrity": "sha512-I1mnb5xn4fO80BH9BLcF0yLypy2UKl+Cb01Fu0hJRkJjlCRtxZMWkTdAtDd5ZqCOxtCkhmRwyI57vWT+1iZ67w==", "dev": true }, + "node_modules/mrmime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.0.tgz", + "integrity": "sha512-a70zx7zFfVO7XpnQ2IX1Myh9yY4UYvfld/dikWRnsXxbyvMcfz+u6UfgNAtH+k2QqtJuzVpv6eLTx1G2+WKZbQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/multicast-dns": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", - "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "version": "7.2.4", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.4.tgz", + "integrity": "sha512-XkCYOU+rr2Ft3LI6w4ye51M3VK31qJXFIxu0XLw169PtKG0Zx47OrXeVW/GCYOfpC9s1yyyf1S+L8/4LY0J9Zw==", "dev": true, "dependencies": { - "dns-packet": "^1.3.1", + "dns-packet": "^5.2.2", "thunky": "^1.0.2" }, "bin": { "multicast-dns": "cli.js" } }, - "node_modules/multicast-dns-service-types": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", - "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", - "dev": true - }, "node_modules/nanoid": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.2.0.tgz", - "integrity": "sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.2.tgz", + "integrity": "sha512-CuHBogktKwpm5g2sRgv83jEy2ijFzBwMoYA60orPDR7ynsLijJDqgsi4RDGj3OJpy3Ieb+LYwiRmIOGyytgITA==", "dev": true, "bin": { "nanoid": "bin/nanoid.cjs" @@ -14011,37 +12754,6 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, - "node_modules/nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dev": true, - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nanomatch/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -14071,9 +12783,9 @@ } }, "node_modules/negotiator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", "dev": true, "engines": { "node": ">= 0.6" @@ -14085,44 +12797,19 @@ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true }, - "node_modules/nested-error-stacks": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.1.0.tgz", - "integrity": "sha512-AO81vsIO1k1sM4Zrd6Hu7regmJN1NSiAja10gc4bX3F0wd+9rQmcuHQaHVQCYIEC8iFXnE+mavh23GOt7wBgug==", - "dev": true - }, "node_modules/nise": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/nise/-/nise-1.5.3.tgz", - "integrity": "sha512-Ymbac/94xeIrMf59REBPOv0thr+CJVFMhrlAkW/gjCIE58BGQdCj0x7KRCb3yz+Ga2Rz3E9XXSvUyyxqqhjQAQ==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.1.tgz", + "integrity": "sha512-yr5kW2THW1AkxVmCnKEh4nbYkJdB3I7LUkiUgOvEkOp414mc2UMaHMA7pjq1nYowhdoJZGwEKGaQVbxfpWj10A==", "dev": true, "dependencies": { - "@sinonjs/formatio": "^3.2.1", + "@sinonjs/commons": "^1.8.3", + "@sinonjs/fake-timers": ">=5", "@sinonjs/text-encoding": "^0.7.1", "just-extend": "^4.0.2", - "lolex": "^5.0.1", "path-to-regexp": "^1.7.0" } }, - "node_modules/nise/node_modules/@sinonjs/formatio": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-3.2.2.tgz", - "integrity": "sha512-B8SEsgd8gArBLMD6zpRw3juQ2FVSsmdd7qlevyDqzS9WTCtvF55/gAL+h6gue8ZvPYcdiPdvueM/qm//9XzyTQ==", - "dev": true, - "dependencies": { - "@sinonjs/commons": "^1", - "@sinonjs/samsam": "^3.1.0" - } - }, - "node_modules/nise/node_modules/lolex": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/lolex/-/lolex-5.1.2.tgz", - "integrity": "sha512-h4hmjAvHTmd+25JSwrtTIuwbKdwg5NzZVRMLn9saij4SZaepCrTCxPr35H/3bjwfMJtN+t3CX8672UIkglz28A==", - "dev": true, - "dependencies": { - "@sinonjs/commons": "^1.7.0" - } - }, "node_modules/node-fetch": { "version": "2.6.7", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", @@ -14162,9 +12849,9 @@ } }, "node_modules/node-forge": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.0.tgz", - "integrity": "sha512-08ARB91bUi6zNKzVmaj3QO7cr397uiDT2nJ63cHjyNtCTWIgvS47j3eT0WfzUwS9+6Z5YshRaoasFkXCKrIYbA==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", "dev": true, "engines": { "node": ">= 6.13.0" @@ -14447,32 +13134,6 @@ "node": ">=0.10.0" } }, - "node_modules/object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "dev": true, - "dependencies": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/object-inspect": { "version": "1.11.0", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", @@ -14506,18 +13167,6 @@ "node": ">= 0.4" } }, - "node_modules/object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "dev": true, - "dependencies": { - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/object.assign": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", @@ -14657,19 +13306,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "dev": true, - "license": "MIT", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/object.values": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.4.tgz", @@ -14798,18 +13434,6 @@ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", "dev": true }, - "node_modules/p-all": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-all/-/p-all-2.1.0.tgz", - "integrity": "sha512-HbZxz5FONzz/z2gJfk6bFca0BCiSRF8jU3yCsWOen/vR6lZjfPOu/e7L3uFzTW1i0H8TlC3vqQstEJPQL4/uLA==", - "dev": true, - "dependencies": { - "p-map": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/p-cancelable": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", @@ -14819,50 +13443,20 @@ "node": ">=6" } }, - "node_modules/p-event": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/p-event/-/p-event-4.2.0.tgz", - "integrity": "sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ==", - "dev": true, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", "dependencies": { - "p-timeout": "^3.1.0" + "aggregate-error": "^3.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-filter": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-filter/-/p-filter-2.1.0.tgz", - "integrity": "sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==", - "dev": true, - "dependencies": { - "p-map": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/p-map": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", - "engines": { - "node": ">=6" - } - }, "node_modules/p-retry": { "version": "4.6.1", "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.1.tgz", @@ -14876,18 +13470,6 @@ "node": ">=8" } }, - "node_modules/p-timeout": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", - "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", - "dev": true, - "dependencies": { - "p-finally": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/package-json": { "version": "6.5.0", "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", @@ -14955,21 +13537,6 @@ "node": ">= 0.8" } }, - "node_modules/pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", - "dev": true - }, "node_modules/path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", @@ -14978,11 +13545,6 @@ "node": ">=0.10.0" } }, - "node_modules/path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=" - }, "node_modules/path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", @@ -15032,33 +13594,6 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "engines": { - "node": ">=6" - } - }, - "node_modules/pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dependencies": { - "pinkie": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/pirates": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", @@ -15178,31 +13713,28 @@ "ms": "^2.1.1" } }, - "node_modules/posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/postcss": { - "version": "8.4.5", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.5.tgz", - "integrity": "sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==", + "version": "8.4.12", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.12.tgz", + "integrity": "sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + } + ], "dependencies": { - "nanoid": "^3.1.30", + "nanoid": "^3.3.1", "picocolors": "^1.0.0", - "source-map-js": "^1.0.1" + "source-map-js": "^1.0.2" }, "engines": { "node": "^10 || ^12 || >=14" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" } }, "node_modules/postcss-media-query-parser": { @@ -15212,180 +13744,62 @@ "dev": true }, "node_modules/postcss-modules-extract-imports": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz", - "integrity": "sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==", - "dev": true, - "dependencies": { - "postcss": "^7.0.5" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/postcss-modules-extract-imports/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-modules-extract-imports/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, "engines": { - "node": ">=6.0.0" + "node": "^10 || ^12 || >= 14" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-modules-extract-imports/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "peerDependencies": { + "postcss": "^8.1.0" } }, "node_modules/postcss-modules-local-by-default": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-2.0.6.tgz", - "integrity": "sha512-oLUV5YNkeIBa0yQl7EYnxMgy4N6noxmiwZStaEJUSe2xPMcdNc8WmBQuQCx18H5psYbVxz8zoHk0RAAYZXP9gA==", - "dev": true, - "dependencies": { - "postcss": "^7.0.6", - "postcss-selector-parser": "^6.0.0", - "postcss-value-parser": "^3.3.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/postcss-modules-local-by-default/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-modules-local-by-default/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", + "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", "dev": true, "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" }, "engines": { - "node": ">=6.0.0" + "node": "^10 || ^12 || >= 14" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-modules-local-by-default/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "peerDependencies": { + "postcss": "^8.1.0" } }, "node_modules/postcss-modules-scope": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz", - "integrity": "sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ==", - "dev": true, - "dependencies": { - "postcss": "^7.0.6", - "postcss-selector-parser": "^6.0.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/postcss-modules-scope/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-modules-scope/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", + "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", "dev": true, "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "postcss-selector-parser": "^6.0.4" }, "engines": { - "node": ">=6.0.0" + "node": "^10 || ^12 || >= 14" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-modules-scope/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "peerDependencies": { + "postcss": "^8.1.0" } }, "node_modules/postcss-modules-values": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-2.0.0.tgz", - "integrity": "sha512-Ki7JZa7ff1N3EIMlPnGTZfUMe69FFwiQPnVSXC9mnn3jozCRBYIxiZd44yJOV2AmabOo4qFf8s0dC/+lweG7+w==", - "dev": true, - "dependencies": { - "icss-replace-symbols": "^1.1.0", - "postcss": "^7.0.6" - } - }, - "node_modules/postcss-modules-values/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-modules-values/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", "dev": true, "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "icss-utils": "^5.0.0" }, "engines": { - "node": ">=6.0.0" + "node": "^10 || ^12 || >= 14" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-modules-values/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "peerDependencies": { + "postcss": "^8.1.0" } }, "node_modules/postcss-resolve-nested-selector": { @@ -15440,9 +13854,9 @@ } }, "node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", "dev": true }, "node_modules/prelude-ls": { @@ -15547,13 +13961,13 @@ } }, "node_modules/prop-types": { - "version": "15.7.2", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", - "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", - "react-is": "^16.8.1" + "react-is": "^16.13.1" } }, "node_modules/prop-types-exact": { @@ -15618,11 +14032,22 @@ "node": ">=8" } }, + "node_modules/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==", + "dev": true, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, "funding": [ { "type": "github", @@ -15723,13 +14148,13 @@ } }, "node_modules/raw-body": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", - "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.3.tgz", + "integrity": "sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g==", "dev": true, "dependencies": { - "bytes": "3.1.0", - "http-errors": "1.7.2", + "bytes": "3.1.2", + "http-errors": "1.8.1", "iconv-lite": "0.4.24", "unpipe": "1.0.0" }, @@ -15843,9 +14268,9 @@ "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" }, "node_modules/react-modal": { - "version": "3.14.3", - "resolved": "https://registry.npmjs.org/react-modal/-/react-modal-3.14.3.tgz", - "integrity": "sha512-+C2KODVKyu20zHXPJxfOOcf571L1u/EpFlH+oS/3YDn8rgVE51QZuxuuIwabJ8ZFnOEHaD+r6XNjqwtxZnXO0g==", + "version": "3.14.4", + "resolved": "https://registry.npmjs.org/react-modal/-/react-modal-3.14.4.tgz", + "integrity": "sha512-8surmulejafYCH9wfUmFyj4UfbSJwjcgbS9gf3oOItu4Hwd6ivJyVBETI0yHRhpJKCLZMUtnhzk76wXTsNL6Qg==", "dependencies": { "exenv": "^1.2.0", "prop-types": "^15.7.2", @@ -15861,19 +14286,19 @@ } }, "node_modules/react-redux": { - "version": "7.2.4", - "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-7.2.4.tgz", - "integrity": "sha512-hOQ5eOSkEJEXdpIKbnRyl04LhaWabkDPV+Ix97wqQX3T3d2NQ8DUblNXXtNMavc7DpswyQM6xfaN4HQDKNY2JA==", + "version": "7.2.8", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-7.2.8.tgz", + "integrity": "sha512-6+uDjhs3PSIclqoCk0kd6iX74gzrGc3W5zcAjbrFgEdIjRSQObdIwfx80unTkVUYvbQ95Y8Av3OvFHq1w5EOUw==", "dependencies": { - "@babel/runtime": "^7.12.1", - "@types/react-redux": "^7.1.16", + "@babel/runtime": "^7.15.4", + "@types/react-redux": "^7.1.20", "hoist-non-react-statics": "^3.3.2", "loose-envify": "^1.4.0", "prop-types": "^15.7.2", - "react-is": "^16.13.1" + "react-is": "^17.0.2" }, "peerDependencies": { - "react": "^16.8.3 || ^17" + "react": "^16.8.3 || ^17 || ^18" }, "peerDependenciesMeta": { "react-dom": { @@ -15884,17 +14309,12 @@ } } }, - "node_modules/react-redux/node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - }, "node_modules/react-router": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.2.0.tgz", - "integrity": "sha512-smz1DUuFHRKdcJC0jobGo8cVbhO3x50tCL4icacOlcwDOEQPq4TMqwx3sY1TP+DvtTgz4nm3thuo7A+BK2U0Dw==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.2.1.tgz", + "integrity": "sha512-lIboRiOtDLFdg1VTemMwud9vRVuOCZmUIT/7lUoZiSpPODiiH1UQlfXy+vPLC/7IWdFYnhRwAyNqA/+I7wnvKQ==", "dependencies": { - "@babel/runtime": "^7.1.2", + "@babel/runtime": "^7.12.13", "history": "^4.9.0", "hoist-non-react-statics": "^3.1.0", "loose-envify": "^1.3.1", @@ -15910,15 +14330,15 @@ } }, "node_modules/react-router-dom": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.2.0.tgz", - "integrity": "sha512-gxAmfylo2QUjcwxI63RhQ5G85Qqt4voZpUXSEqCwykV0baaOTQDR1f0PmY8AELqIyVc0NEZUj0Gov5lNGcXgsA==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.3.0.tgz", + "integrity": "sha512-ObVBLjUZsphUUMVycibxgMdh5jJ1e3o+KpAZBVeHcNQZ4W+uUGGWsokurzlF4YOldQYRQL4y6yFRWM4m3svmuQ==", "dependencies": { - "@babel/runtime": "^7.1.2", + "@babel/runtime": "^7.12.13", "history": "^4.9.0", "loose-envify": "^1.3.1", "prop-types": "^15.6.2", - "react-router": "5.2.0", + "react-router": "5.2.1", "tiny-invariant": "^1.0.2", "tiny-warning": "^1.0.0" }, @@ -15932,9 +14352,9 @@ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, "node_modules/react-rte": { - "version": "0.16.3", - "resolved": "https://registry.npmjs.org/react-rte/-/react-rte-0.16.3.tgz", - "integrity": "sha512-IDZtdd+jjtd8zqrlEeO+DdujANdM9cy7o5AAKKzcSoW77r7U5PVicpkuWu5as3rzWRqlfQqPpjXq/PEFTRTmNA==", + "version": "0.16.5", + "resolved": "https://registry.npmjs.org/react-rte/-/react-rte-0.16.5.tgz", + "integrity": "sha512-KoUBbl8jgAaxQIRpAfnDYjcx7Xlc/4EsgASxYKPIj/HzPuSgBxOlkPAK73V5fe7aHVhq0IfvNvhmNNpoDLQX4A==", "dependencies": { "babel-runtime": "^6.23.0", "class-autobind": "^0.1.4", @@ -15948,8 +14368,8 @@ "immutable": "^3.8.1" }, "peerDependencies": { - "react": "0.14.x || 15.x.x || 16.x.x", - "react-dom": "0.14.x || 15.x.x || 16.x.x" + "react": "0.14.x || 15.x.x || 16.x.x || 17.x.x", + "react-dom": "0.14.x || 15.x.x || 16.x.x || 17.x.x" } }, "node_modules/react-rte/node_modules/immutable": { @@ -16068,9 +14488,9 @@ } }, "node_modules/redux": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/redux/-/redux-4.1.0.tgz", - "integrity": "sha512-uI2dQN43zqLWCt6B/BMGRMY6db7TTY4qeHHfGeKb3EOhmOKjU3KdWvNLJyqaHRksv/ErdNH7cFZWg9jXtewy4g==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/redux/-/redux-4.1.2.tgz", + "integrity": "sha512-SH8PglcebESbd/shgf6mii6EIoRM0zrQyjcuQ+ojmfxjTtE0z9Y8pa62iA/OJ58qjP6j27uyW4kUF4jl/jd6sw==", "dependencies": { "@babel/runtime": "^7.9.2" } @@ -16110,9 +14530,12 @@ } }, "node_modules/redux-thunk": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.3.0.tgz", - "integrity": "sha512-km6dclyFnmcvxhAcrQV2AkZmPQjzPDjgVlQtR0EQjxZPyJ0BnMf3in1ryuR8A2qU0HldVRfxYXbFSKlI3N7Slw==" + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.4.1.tgz", + "integrity": "sha512-OOYGNY5Jy2TWvTL1KgAlVy6dcx3siPJ1wTq741EPyUKfn6W6nChdICjZwCd0p8AZBs5kWpZlbkXW2nE/zjUa+Q==", + "peerDependencies": { + "redux": "^4" + } }, "node_modules/reflect.ownkeys": { "version": "0.2.0", @@ -16149,19 +14572,6 @@ "@babel/runtime": "^7.8.4" } }, - "node_modules/regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dev": true, - "dependencies": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/regexp.prototype.flags": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz", @@ -16254,24 +14664,6 @@ "jsesc": "bin/jsesc" } }, - "node_modules/repeat-element": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", - "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true, - "engines": { - "node": ">=0.10" - } - }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -16297,9 +14689,9 @@ "dev": true }, "node_modules/reselect": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/reselect/-/reselect-4.0.0.tgz", - "integrity": "sha512-qUgANli03jjAyGlnbYVAV5vvnOmJnODyABz51RdBN7M4WaVu8mecZWgyQNkG8Yqe3KRGRt0l4K4B3XVEULC4CA==" + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/reselect/-/reselect-4.1.5.tgz", + "integrity": "sha512-uVdlz8J7OO+ASpBYoz1Zypgx0KasCY20H+N8JD13oUMtPvSHQuscrHop4KbXrbsBcdB9Ds7lVK7eRkBIfO43vQ==" }, "node_modules/resolve": { "version": "1.20.0", @@ -16337,13 +14729,6 @@ "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz", "integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==" }, - "node_modules/resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", - "deprecated": "https://github.com/lydell/resolve-url#deprecated", - "dev": true - }, "node_modules/resolve.exports": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz", @@ -16384,7 +14769,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" @@ -16402,14 +14786,17 @@ } }, "node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dependencies": { "glob": "^7.1.3" }, "bin": { "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/rst-selector-parser": { @@ -16426,7 +14813,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, "funding": [ { "type": "github", @@ -16468,32 +14854,16 @@ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, - "node_modules/safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "dev": true, - "dependencies": { - "ret": "~0.1.10" - } - }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true }, - "node_modules/samsam": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/samsam/-/samsam-1.3.0.tgz", - "integrity": "sha512-1HwIYD/8UlOtFS3QO3w7ey+SdSDFE4HRNLZoZRYVQefrOY3l17epswImeB1ijgJFQJodIaHcwkp3r/myBjFVbg==", - "deprecated": "This package has been deprecated in favour of @sinonjs/samsam", - "dev": true - }, "node_modules/sass": { - "version": "1.49.9", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.49.9.tgz", - "integrity": "sha512-YlYWkkHP9fbwaFRZQRXgDi3mXZShslVmmo+FVK3kHLUELHHEYrCmL1x6IUjC7wLS6VuJSAFXRQS/DxdsC4xL1A==", + "version": "1.50.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.50.0.tgz", + "integrity": "sha512-cLsD6MEZ5URXHStxApajEh7gW189kkjn4Rc8DQweMyF+o5HF5nfEz8QYLMlPsTOD88DknatTmBWkOcw5/LnJLQ==", "dependencies": { "chokidar": ">=3.0.0 <4.0.0", "immutable": "^4.0.0", @@ -16507,22 +14877,41 @@ } }, "node_modules/sass-loader": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-7.3.1.tgz", - "integrity": "sha512-tuU7+zm0pTCynKYHpdqaPpe+MMTQ76I9TPZ7i4/5dZsigE350shQWe5EZNl5dBidM49TPET75tNqRbcsUZWeNA==", + "version": "12.6.0", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.6.0.tgz", + "integrity": "sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA==", "dev": true, "dependencies": { - "clone-deep": "^4.0.1", - "loader-utils": "^1.0.1", - "neo-async": "^2.5.0", - "pify": "^4.0.1", - "semver": "^6.3.0" + "klona": "^2.0.4", + "neo-async": "^2.6.2" }, "engines": { - "node": ">= 6.9.0" + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "webpack": "^3.0.0 || ^4.0.0" + "fibers": ">= 3.1.0", + "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0", + "sass": "^1.3.0", + "sass-embedded": "*", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "fibers": { + "optional": true + }, + "node-sass": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + } } }, "node_modules/sass/node_modules/anymatch": { @@ -16709,12 +15098,12 @@ "dev": true }, "node_modules/selfsigned": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.0.tgz", - "integrity": "sha512-cUdFiCbKoa1mZ6osuJs2uDHrs0k0oprsKveFiiaBKCNq3SYyb5gs2HxhQyDNLCmL51ZZThqi4YNDpCK6GOP1iQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.1.tgz", + "integrity": "sha512-LmME957M1zOsUhG+67rAjKfiWFox3SBxE/yymatMZsAx+oMrJ0YQ8AToOnyCm7xbeg2ep37IHLxdu0o2MavQOQ==", "dev": true, "dependencies": { - "node-forge": "^1.2.0" + "node-forge": "^1" }, "engines": { "node": ">=10" @@ -16741,9 +15130,9 @@ } }, "node_modules/send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", - "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "version": "0.17.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz", + "integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==", "dev": true, "dependencies": { "debug": "2.6.9", @@ -16753,9 +15142,9 @@ "escape-html": "~1.0.3", "etag": "~1.8.1", "fresh": "0.5.2", - "http-errors": "~1.7.2", + "http-errors": "1.8.1", "mime": "1.6.0", - "ms": "2.1.1", + "ms": "2.1.3", "on-finished": "~2.3.0", "range-parser": "~1.2.1", "statuses": "~1.5.0" @@ -16780,9 +15169,9 @@ "dev": true }, "node_modules/send/node_modules/ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true }, "node_modules/serialize-javascript": { @@ -16855,56 +15244,29 @@ "dev": true }, "node_modules/serve-static": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", - "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz", + "integrity": "sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==", "dev": true, "dependencies": { "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.17.1" + "send": "0.17.2" }, "engines": { "node": ">= 0.8.0" } }, - "node_modules/set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "dev": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/set-value/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" }, "node_modules/setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", "dev": true }, "node_modules/shallow-clone": { @@ -16970,24 +15332,71 @@ } }, "node_modules/signal-exit": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", - "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, "node_modules/sinon": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-5.1.1.tgz", - "integrity": "sha512-h/3uHscbt5pQNxkf7Y/Lb9/OM44YNCicHakcq73ncbrIS8lXg+ZGOZbtuU+/km4YnyiCYfQQEwANaReJz7KDfw==", + "version": "13.0.2", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-13.0.2.tgz", + "integrity": "sha512-KvOrztAVqzSJWMDoxM4vM+GPys1df2VBoXm+YciyB/OLMamfS3VXh3oGh5WtrAGSzrgczNWFFY22oKb7Fi5eeA==", "dev": true, "dependencies": { - "@sinonjs/formatio": "^2.0.0", - "diff": "^3.5.0", - "lodash.get": "^4.4.2", - "lolex": "^2.4.2", - "nise": "^1.3.3", - "supports-color": "^5.4.0", - "type-detect": "^4.0.8" + "@sinonjs/commons": "^1.8.3", + "@sinonjs/fake-timers": "^9.1.2", + "@sinonjs/samsam": "^6.1.1", + "diff": "^5.0.0", + "nise": "^5.1.1", + "supports-color": "^7.2.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/sinon" + } + }, + "node_modules/sinon/node_modules/@sinonjs/fake-timers": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz", + "integrity": "sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^1.7.0" + } + }, + "node_modules/sinon/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/sinon/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/sirv": { + "version": "1.0.19", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-1.0.19.tgz", + "integrity": "sha512-JuLThK3TnZG1TAKDwNIqNq6QA2afLOCcm+iE8D1Kj3GA40pSPsxQjjJl0J8X3tsR7T+CP1GavpzLwYkgVLWrZQ==", + "dev": true, + "dependencies": { + "@polka/url": "^1.0.0-next.20", + "mrmime": "^1.0.0", + "totalist": "^1.0.0" + }, + "engines": { + "node": ">= 10" } }, "node_modules/sisteransi": { @@ -17000,7 +15409,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, "engines": { "node": ">=8" } @@ -17069,149 +15477,6 @@ "resolved": "https://registry.npmjs.org/smoothscroll-polyfill/-/smoothscroll-polyfill-0.4.4.tgz", "integrity": "sha512-TK5ZA9U5RqCwMpfoMq/l1mrH0JAR7y7KRvOBx0n2869aLxch+gT9GhN3yUfjiw+d/DiF1mKo14+hd62JyMmoBg==" }, - "node_modules/snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dev": true, - "dependencies": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dev": true, - "dependencies": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dev": true, - "dependencies": { - "kind-of": "^3.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/snapdragon/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, "node_modules/sockjs": { "version": "0.3.24", "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", @@ -17223,15 +15488,6 @@ "websocket-driver": "^0.7.4" } }, - "node_modules/sockjs/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "bin": { - "uuid": "dist/bin/uuid" - } - }, "node_modules/source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", @@ -17248,20 +15504,6 @@ "node": ">=0.10.0" } }, - "node_modules/source-map-resolve": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", - "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", - "dev": true, - "dependencies": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, "node_modules/source-map-support": { "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", @@ -17281,13 +15523,6 @@ "node": ">=0.10.0" } }, - "node_modules/source-map-url": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", - "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", - "deprecated": "See https://github.com/lydell/source-map-url#deprecated", - "dev": true - }, "node_modules/spawn-command": { "version": "0.0.2-1", "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz", @@ -17379,18 +15614,6 @@ "specificity": "bin/specificity" } }, - "node_modules/split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dev": true, - "dependencies": { - "extend-shallow": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -17423,31 +15646,6 @@ "node": ">=8" } }, - "node_modules/static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "dev": true, - "dependencies": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", @@ -17708,30 +15906,19 @@ } }, "node_modules/style-loader": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.23.1.tgz", - "integrity": "sha512-XK+uv9kWwhZMZ1y7mysB+zoihsEj4wneFWAS5qoiLwzW0WzSqMrrsIy+a3zkQJq0ipFtBpX5W3MqyRIBF/WFGg==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.1.tgz", + "integrity": "sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ==", "dev": true, - "dependencies": { - "loader-utils": "^1.1.0", - "schema-utils": "^1.0.0" - }, "engines": { - "node": ">= 0.12.0" - } - }, - "node_modules/style-loader/node_modules/schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "dependencies": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" + "node": ">= 12.13.0" }, - "engines": { - "node": ">= 4" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" } }, "node_modules/style-search": { @@ -17741,15 +15928,16 @@ "dev": true }, "node_modules/stylelint": { - "version": "14.3.0", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-14.3.0.tgz", - "integrity": "sha512-PZXSwtJe4f4qBPWBwAbHL0M0Qjrv8iHN+cLpUNsffaVMS3YzpDDRI73+2lsqLAYfQEzxRwpll6BDKImREbpHWA==", + "version": "14.6.1", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-14.6.1.tgz", + "integrity": "sha512-FfNdvZUZdzh9KDQxDnO7Opp+prKh8OQVuSW8S13cBtxrooCbm6J6royhUeb++53WPMt04VB+ZbOz/QmzAijs6Q==", "dev": true, "dependencies": { "balanced-match": "^2.0.0", "colord": "^2.9.2", "cosmiconfig": "^7.0.1", - "debug": "^4.3.3", + "css-functions-list": "^3.0.1", + "debug": "^4.3.4", "execall": "^2.0.0", "fast-glob": "^3.2.11", "fastest-levenshtein": "^1.0.12", @@ -17770,7 +15958,7 @@ "normalize-path": "^3.0.0", "normalize-selector": "^0.2.0", "picocolors": "^1.0.0", - "postcss": "^8.4.5", + "postcss": "^8.4.12", "postcss-media-query-parser": "^0.2.3", "postcss-resolve-nested-selector": "^0.1.1", "postcss-safe-parser": "^6.0.0", @@ -17785,7 +15973,7 @@ "svg-tags": "^1.0.0", "table": "^6.8.0", "v8-compile-cache": "^2.3.0", - "write-file-atomic": "^4.0.0" + "write-file-atomic": "^4.0.1" }, "bin": { "stylelint": "bin/stylelint.js" @@ -17847,9 +16035,9 @@ } }, "node_modules/stylelint-scss": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-4.1.0.tgz", - "integrity": "sha512-BNYTo7MMamhFOlcaAWp2dMpjg6hPyM/FFqfDIYzmYVLMmQJqc8lWRIiTqP4UX5bresj9Vo0dKC6odSh43VP2NA==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-4.2.0.tgz", + "integrity": "sha512-HHHMVKJJ5RM9pPIbgJ/XA67h9H0407G68Rm69H4fzFbFkyDMcTV1Byep3qdze5+fJ3c0U7mJrbj6S0Fg072uZA==", "dev": true, "dependencies": { "lodash": "^4.17.21", @@ -17859,15 +16047,9 @@ "postcss-value-parser": "^4.1.0" }, "peerDependencies": { - "stylelint": "^14.0.0" + "stylelint": "^14.5.1" } }, - "node_modules/stylelint-scss/node_modules/postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true - }, "node_modules/stylelint/node_modules/ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", @@ -17877,15 +16059,6 @@ "node": ">=8" } }, - "node_modules/stylelint/node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/stylelint/node_modules/balanced-match": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz", @@ -17904,23 +16077,6 @@ "node": ">=8" } }, - "node_modules/stylelint/node_modules/debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, "node_modules/stylelint/node_modules/fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -17959,26 +16115,6 @@ "node": ">=6" } }, - "node_modules/stylelint/node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/stylelint/node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -18032,12 +16168,6 @@ "node": ">=4" } }, - "node_modules/stylelint/node_modules/postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true - }, "node_modules/stylelint/node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -18063,15 +16193,13 @@ } }, "node_modules/stylelint/node_modules/write-file-atomic": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.0.tgz", - "integrity": "sha512-JhcWoKffJNF7ivO9yflBhc7tn3wKnokMUfWpBriM9yCXj4ePQnRPcWglBkkg1AHC8nsW/EfxwwhqsLtOy59djA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.1.tgz", + "integrity": "sha512-nSKUxgAbyioruk6hU87QzVbY279oYT6uiwgDoujth2ju4mJ+TZau7SQBhtbTmUyuNYTuXnSyRn66FV0+eCgcrQ==", "dev": true, "dependencies": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^4.0.0" + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" }, "engines": { "node": "^12.13.0 || ^14.15.0 || >=16" @@ -18231,6 +16359,15 @@ "node": ">=8" } }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/tar-stream": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", @@ -18426,18 +16563,6 @@ "node": ">=4" } }, - "node_modules/to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/to-readable-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", @@ -18447,41 +16572,22 @@ "node": ">=6" } }, - "node_modules/to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dev": true, - "dependencies": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", "dev": true, - "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - }, "engines": { - "node": ">=0.10.0" + "node": ">=0.6" } }, - "node_modules/toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "node_modules/totalist": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-1.1.0.tgz", + "integrity": "sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g==", "dev": true, "engines": { - "node": ">=0.6" + "node": ">=6" } }, "node_modules/touch": { @@ -18540,12 +16646,6 @@ "node": ">=8" } }, - "node_modules/tryer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz", - "integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==", - "dev": true - }, "node_modules/tslib": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", @@ -18598,26 +16698,6 @@ "node": ">= 0.6" } }, - "node_modules/typedarray-to-buffer": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-4.0.0.tgz", - "integrity": "sha512-6dOYeZfS3O9RtRD1caom0sMxgK59b27+IwoNy8RDPsmslSGOyU+mpTamlaIW7aNKi90ZQZ9DFaZL3YRoiSCULQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, "node_modules/typescript-compare": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/typescript-compare/-/typescript-compare-0.0.2.tgz", @@ -18679,9 +16759,9 @@ "dev": true }, "node_modules/underscore": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.1.tgz", - "integrity": "sha512-hzSoAVtJF+3ZtiFX0VgfFPHEDRm7Y/QPjGyNo4TVdnDTdft3tr8hEkD25a1jC+TjTuE7tkHGKkhwCgs9dgBB2g==" + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.2.tgz", + "integrity": "sha512-ekY1NhRzq0B08g4bGuX4wd2jZx5GnKz6mKSqFL4nqBlfyMGiG10gDFhDTMEfYmDL6Jy0FUIZp7wiRB+0BP7J2g==" }, "node_modules/unicode-canonical-property-names-ecmascript": { "version": "2.0.0", @@ -18719,21 +16799,6 @@ "node": ">=4" } }, - "node_modules/union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "dev": true, - "dependencies": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/unique-string": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", @@ -18764,54 +16829,6 @@ "node": ">= 0.8" } }, - "node_modules/unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "dev": true, - "dependencies": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "dev": true, - "dependencies": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "dependencies": { - "isarray": "1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/update-notifier": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz", @@ -18943,13 +16960,6 @@ "punycode": "^2.1.0" } }, - "node_modules/urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "deprecated": "Please see https://github.com/lydell/urix#deprecated", - "dev": true - }, "node_modules/url-parse-lax": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", @@ -18962,15 +16972,6 @@ "node": ">=4" } }, - "node_modules/use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -18987,12 +16988,11 @@ } }, "node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "bin": { - "uuid": "bin/uuid" + "uuid": "dist/bin/uuid" } }, "node_modules/v8-compile-cache": { @@ -19123,9 +17123,9 @@ } }, "node_modules/webpack": { - "version": "5.69.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.69.1.tgz", - "integrity": "sha512-+VyvOSJXZMT2V5vLzOnDuMz5GxEqLk7hKWQ56YxPW/PQRUuKimPqmEIJOx8jHYeyo65pKbapbW464mvsKbaj4A==", + "version": "5.72.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.72.0.tgz", + "integrity": "sha512-qmSmbspI0Qo5ld49htys8GY9XhS9CGqFoHTsOVAnjBdg0Zn79y135R+k4IR4rKK6+eKaabMhJwiVB7xw0SJu5w==", "dev": true, "dependencies": { "@types/eslint-scope": "^3.7.3", @@ -19137,7 +17137,7 @@ "acorn-import-assertions": "^1.7.6", "browserslist": "^4.14.5", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.8.3", + "enhanced-resolve": "^5.9.2", "es-module-lexer": "^0.9.0", "eslint-scope": "5.1.1", "events": "^3.2.0", @@ -19170,70 +17170,141 @@ } }, "node_modules/webpack-bundle-analyzer": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.9.0.tgz", - "integrity": "sha512-Ob8amZfCm3rMB1ScjQVlbYYUEJyEjdEtQ92jqiFUYt5VkEeO2v5UMbv49P/gnmCZm3A6yaFQzCBvpZqN4MUsdA==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.5.0.tgz", + "integrity": "sha512-GUMZlM3SKwS8Z+CKeIFx7CVoHn3dXFcUAjT/dcZQQmfSZGvitPfMob2ipjai7ovFFqPvTqkEZ/leL4O0YOdAYQ==", "dev": true, "dependencies": { - "acorn": "^7.1.1", - "acorn-walk": "^7.1.1", - "bfj": "^6.1.1", - "chalk": "^2.4.1", - "commander": "^2.18.0", - "ejs": "^2.6.1", - "express": "^4.16.3", - "filesize": "^3.6.1", - "gzip-size": "^5.0.0", - "lodash": "^4.17.19", - "mkdirp": "^0.5.1", - "opener": "^1.5.1", - "ws": "^6.0.0" + "acorn": "^8.0.4", + "acorn-walk": "^8.0.0", + "chalk": "^4.1.0", + "commander": "^7.2.0", + "gzip-size": "^6.0.0", + "lodash": "^4.17.20", + "opener": "^1.5.2", + "sirv": "^1.0.7", + "ws": "^7.3.1" }, "bin": { "webpack-bundle-analyzer": "lib/bin/analyzer.js" }, "engines": { - "node": ">= 6.14.4" + "node": ">= 10.13.0" } }, - "node_modules/webpack-bundle-analyzer/node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "node_modules/webpack-bundle-analyzer/node_modules/acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", "dev": true, - "bin": { - "acorn": "bin/acorn" - }, "engines": { "node": ">=0.4.0" } }, - "node_modules/webpack-bundle-analyzer/node_modules/gzip-size": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-5.1.1.tgz", - "integrity": "sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==", + "node_modules/webpack-bundle-analyzer/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "duplexer": "^0.1.1", - "pify": "^4.0.1" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=6" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/webpack-bundle-analyzer/node_modules/ws": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", - "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", + "node_modules/webpack-bundle-analyzer/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/webpack-bundle-analyzer/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "async-limiter": "~1.0.0" + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/ws": { + "version": "7.5.7", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz", + "integrity": "sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==", + "dev": true, + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } } }, "node_modules/webpack-bundle-tracker": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/webpack-bundle-tracker/-/webpack-bundle-tracker-1.4.0.tgz", - "integrity": "sha512-5dbAdtS+DbvJfXIXfCytRv5D4I2EWBdBBVOzDMpSa52goTroryWcH4lm3h2qwVqSQEgTTWCkgLGGlZYZmYRM9g==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/webpack-bundle-tracker/-/webpack-bundle-tracker-1.5.0.tgz", + "integrity": "sha512-p7Oil+O5XzzwaoWi/FKfgn6HXGRpLnKuppWRficzTSHx9LdgmooVll+uYvU6DZPvKQkwJl0AyFpsBB/WTbEMMQ==", "dev": true, "dependencies": { "lodash.assign": "^4.2.0", @@ -19265,15 +17336,15 @@ } }, "node_modules/webpack-cli": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.9.0.tgz", - "integrity": "sha512-n/jZZBMzVEl4PYIBs+auy2WI0WTQ74EnJDiyD98O2JZY6IVIHJNitkYp/uTXOviIOMfgzrNvC9foKv/8o8KSZw==", + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.9.2.tgz", + "integrity": "sha512-m3/AACnBBzK/kMTcxWHcZFPrw/eQuY4Df1TxvIWfWM2x7mRqBQCqKEd96oCUa9jkapLBaFfRce33eGDb4Pr7YQ==", "dev": true, "dependencies": { "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^1.1.0", - "@webpack-cli/info": "^1.4.0", - "@webpack-cli/serve": "^1.6.0", + "@webpack-cli/configtest": "^1.1.1", + "@webpack-cli/info": "^1.4.1", + "@webpack-cli/serve": "^1.6.1", "colorette": "^2.0.14", "commander": "^7.0.0", "execa": "^5.0.0", @@ -19281,7 +17352,6 @@ "import-local": "^3.0.2", "interpret": "^2.2.0", "rechoir": "^0.7.0", - "v8-compile-cache": "^2.2.0", "webpack-merge": "^5.7.3" }, "bin": { @@ -19406,9 +17476,9 @@ } }, "node_modules/webpack-dev-server": { - "version": "4.7.4", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.7.4.tgz", - "integrity": "sha512-nfdsb02Zi2qzkNmgtZjkrMOcXnYZ6FLKcQwpxT7MvmHKc+oTtDsBju8j+NMyAygZ9GW1jMEUpy3itHtqgEhe1A==", + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.8.1.tgz", + "integrity": "sha512-dwld70gkgNJa33czmcj/PlKY/nOy/BimbrgZRaR9vDATBQAYgLzggR0nxDtPLJiLrMgZwbE6RRfJ5vnBBasTyg==", "dev": true, "dependencies": { "@types/bonjour": "^3.5.9", @@ -19416,29 +17486,28 @@ "@types/express": "^4.17.13", "@types/serve-index": "^1.9.1", "@types/sockjs": "^0.3.33", - "@types/ws": "^8.2.2", + "@types/ws": "^8.5.1", "ansi-html-community": "^0.0.8", - "bonjour": "^3.5.0", + "bonjour-service": "^1.0.11", "chokidar": "^3.5.3", "colorette": "^2.0.10", "compression": "^1.7.4", "connect-history-api-fallback": "^1.6.0", "default-gateway": "^6.0.3", - "del": "^6.0.0", - "express": "^4.17.1", + "express": "^4.17.3", "graceful-fs": "^4.2.6", "html-entities": "^2.3.2", - "http-proxy-middleware": "^2.0.0", + "http-proxy-middleware": "^2.0.3", "ipaddr.js": "^2.0.1", "open": "^8.0.9", "p-retry": "^4.5.0", "portfinder": "^1.0.28", + "rimraf": "^3.0.2", "schema-utils": "^4.0.0", - "selfsigned": "^2.0.0", + "selfsigned": "^2.0.1", "serve-index": "^1.9.1", "sockjs": "^0.3.21", "spdy": "^4.0.2", - "strip-ansi": "^7.0.0", "webpack-dev-middleware": "^5.3.1", "ws": "^8.4.2" }, @@ -19485,18 +17554,6 @@ "ajv": "^8.8.2" } }, - "node_modules/webpack-dev-server/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, "node_modules/webpack-dev-server/node_modules/anymatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", @@ -19510,15 +17567,6 @@ "node": ">= 8" } }, - "node_modules/webpack-dev-server/node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/webpack-dev-server/node_modules/binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -19562,39 +17610,17 @@ }, "engines": { "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/webpack-dev-server/node_modules/colorette": { - "version": "2.0.16", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", - "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", - "dev": true - }, - "node_modules/webpack-dev-server/node_modules/del": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/del/-/del-6.0.0.tgz", - "integrity": "sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ==", - "dev": true, - "dependencies": { - "globby": "^11.0.1", - "graceful-fs": "^4.2.4", - "is-glob": "^4.0.1", - "is-path-cwd": "^2.2.0", - "is-path-inside": "^3.0.2", - "p-map": "^4.0.0", - "rimraf": "^3.0.2", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" } }, + "node_modules/webpack-dev-server/node_modules/colorette": { + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", + "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", + "dev": true + }, "node_modules/webpack-dev-server/node_modules/fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -19633,26 +17659,6 @@ "node": ">= 6" } }, - "node_modules/webpack-dev-server/node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/webpack-dev-server/node_modules/ipaddr.js": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", @@ -19683,36 +17689,12 @@ "node": ">=0.12.0" } }, - "node_modules/webpack-dev-server/node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/webpack-dev-server/node_modules/json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true }, - "node_modules/webpack-dev-server/node_modules/p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/webpack-dev-server/node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", @@ -19725,21 +17707,6 @@ "node": ">=8.10.0" } }, - "node_modules/webpack-dev-server/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/webpack-dev-server/node_modules/schema-utils": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", @@ -19759,21 +17726,6 @@ "url": "https://opencollective.com/webpack" } }, - "node_modules/webpack-dev-server/node_modules/strip-ansi": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", - "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", - "dev": true, - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, "node_modules/webpack-dev-server/node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -19808,19 +17760,6 @@ "node": ">=10.13.0" } }, - "node_modules/webpack/node_modules/enhanced-resolve": { - "version": "5.9.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.1.tgz", - "integrity": "sha512-jdyZMwCQ5Oj4c5+BTnkxPgDZO/BJzh/ADDmKebayyzNwjVX1AFCeGkOfxNx0mHi2+8BKC5VxUYiw3TIvoT7vhw==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, "node_modules/webpack/node_modules/schema-utils": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", @@ -19839,15 +17778,6 @@ "url": "https://opencollective.com/webpack" } }, - "node_modules/webpack/node_modules/tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/websocket-driver": { "version": "0.7.4", "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", @@ -20194,6 +18124,14 @@ } }, "dependencies": { + "@ampproject/remapping": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.1.2.tgz", + "integrity": "sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg==", + "requires": { + "@jridgewell/trace-mapping": "^0.3.0" + } + }, "@babel/code-frame": { "version": "7.16.7", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", @@ -20203,36 +18141,36 @@ } }, "@babel/compat-data": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.0.tgz", - "integrity": "sha512-392byTlpGWXMv4FbyWw3sAZ/FrW/DrwqLGXpy0mbyNe9Taqv1mg9yON5/o0cnr8XYCkFTZbC1eV+c+LAROgrng==" + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.7.tgz", + "integrity": "sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==" }, "@babel/core": { - "version": "7.16.12", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.12.tgz", - "integrity": "sha512-dK5PtG1uiN2ikk++5OzSYsitZKny4wOCD0nrO4TqnW4BVBTQ2NGS3NgilvT/TEyxTST7LNyWV/T4tXDoD3fOgg==", + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.9.tgz", + "integrity": "sha512-5ug+SfZCpDAkVp9SFIZAzlW18rlzsOcJGaetCjkySnrXXDUw9AR8cDUm1iByTmdWM6yxX6/zycaV76w3YTF2gw==", "requires": { + "@ampproject/remapping": "^2.1.0", "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.16.8", - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-module-transforms": "^7.16.7", - "@babel/helpers": "^7.16.7", - "@babel/parser": "^7.16.12", + "@babel/generator": "^7.17.9", + "@babel/helper-compilation-targets": "^7.17.7", + "@babel/helper-module-transforms": "^7.17.7", + "@babel/helpers": "^7.17.9", + "@babel/parser": "^7.17.9", "@babel/template": "^7.16.7", - "@babel/traverse": "^7.16.10", - "@babel/types": "^7.16.8", + "@babel/traverse": "^7.17.9", + "@babel/types": "^7.17.0", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", - "json5": "^2.1.2", - "semver": "^6.3.0", - "source-map": "^0.5.0" + "json5": "^2.2.1", + "semver": "^6.3.0" } }, "@babel/eslint-parser": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.16.5.tgz", - "integrity": "sha512-mUqYa46lgWqHKQ33Q6LNCGp/wPR3eqOYTUixHFsfrSQqRxH0+WOzca75iEjFr5RDGH1dDz622LaHhLOzOuQRUA==", + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.17.0.tgz", + "integrity": "sha512-PUEJ7ZBXbRkbq3qqM/jZ2nIuakUBqCYc7Qf52Lj7dlZ6zERnqisdHioL0l4wwQZnmskMeasqUNzLBFKs3nylXA==", "dev": true, "requires": { "eslint-scope": "^5.1.1", @@ -20249,9 +18187,9 @@ } }, "@babel/generator": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.3.tgz", - "integrity": "sha512-+R6Dctil/MgUsZsZAkYgK+ADNSZzJRRy0TvY65T71z/CR854xHQ1EweBYXdfT+HNeN7w0cSJJEzgxZMv40pxsg==", + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.9.tgz", + "integrity": "sha512-rAdDousTwxbIxbz5I7GEQ3lUip+xVCXooZNbsydCWs3xA7ZsYOv+CFRdzGxRX78BmQHu9B1Eso59AOZQOJDEdQ==", "requires": { "@babel/types": "^7.17.0", "jsesc": "^2.5.1", @@ -20276,11 +18214,11 @@ } }, "@babel/helper-compilation-targets": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz", - "integrity": "sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA==", + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz", + "integrity": "sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==", "requires": { - "@babel/compat-data": "^7.16.4", + "@babel/compat-data": "^7.17.7", "@babel/helper-validator-option": "^7.16.7", "browserslist": "^4.17.5", "semver": "^6.3.0" @@ -20341,21 +18279,12 @@ } }, "@babel/helper-function-name": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz", - "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==", + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz", + "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==", "requires": { - "@babel/helper-get-function-arity": "^7.16.7", "@babel/template": "^7.16.7", - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz", - "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==", - "requires": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.17.0" } }, "@babel/helper-hoist-variables": { @@ -20383,13 +18312,13 @@ } }, "@babel/helper-module-transforms": { - "version": "7.17.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.6.tgz", - "integrity": "sha512-2ULmRdqoOMpdvkbT8jONrZML/XALfzxlb052bldftkicAUy8AxSCkD5trDPQcwHNmolcl7wP6ehNqMlyUw6AaA==", + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz", + "integrity": "sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==", "requires": { "@babel/helper-environment-visitor": "^7.16.7", "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-simple-access": "^7.16.7", + "@babel/helper-simple-access": "^7.17.7", "@babel/helper-split-export-declaration": "^7.16.7", "@babel/helper-validator-identifier": "^7.16.7", "@babel/template": "^7.16.7", @@ -20433,11 +18362,11 @@ } }, "@babel/helper-simple-access": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz", - "integrity": "sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g==", + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz", + "integrity": "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==", "requires": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.17.0" } }, "@babel/helper-skip-transparent-expression-wrappers": { @@ -20478,13 +18407,13 @@ } }, "@babel/helpers": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.7.tgz", - "integrity": "sha512-9ZDoqtfY7AuEOt3cxchfii6C7GDyyMBffktR5B2jvWv8u2+efwvpnVKXMWzNehqy68tKgAfSwfdw/lWpthS2bw==", + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.9.tgz", + "integrity": "sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==", "requires": { "@babel/template": "^7.16.7", - "@babel/traverse": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/traverse": "^7.17.9", + "@babel/types": "^7.17.0" } }, "@babel/highlight": { @@ -20498,9 +18427,9 @@ } }, "@babel/parser": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.3.tgz", - "integrity": "sha512-7yJPvPV+ESz2IUTPbOL+YkIGyCqOyNIzdguKQuJGnH7bg1WTIifuM21YqokFt/THWh1AkCRn9IgoykTRCBVpzA==" + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.9.tgz", + "integrity": "sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg==" }, "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { "version": "7.16.7", @@ -20730,11 +18659,11 @@ } }, "@babel/plugin-syntax-jsx": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.14.5.tgz", - "integrity": "sha512-ohuFIsOMXJnbOMRfX7/w7LocdR6R7whhuRD4ax8IipLcLPlZGJKkBxgHp++U4N/vKyU16/YDQr2f5seajD3jIw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.7.tgz", + "integrity": "sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q==", "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-syntax-logical-assignment-operators": { @@ -21026,40 +18955,40 @@ } }, "@babel/plugin-transform-react-display-name": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.14.5.tgz", - "integrity": "sha512-07aqY1ChoPgIxsuDviptRpVkWCSbXWmzQqcgy65C6YSFOfPFvb/DX3bBRHh7pCd/PMEEYHYWUTSVkCbkVainYQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.16.7.tgz", + "integrity": "sha512-qgIg8BcZgd0G/Cz916D5+9kqX0c7nPZyXaP8R2tLNN5tkyIZdG5fEwBrxwplzSnjC1jvQmyMNVwUCZPcbGY7Pg==", "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-react-jsx": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.14.5.tgz", - "integrity": "sha512-7RylxNeDnxc1OleDm0F5Q/BSL+whYRbOAR+bwgCxIr0L32v7UFh/pz1DLMZideAUxKT6eMoS2zQH6fyODLEi8Q==", + "version": "7.17.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.17.3.tgz", + "integrity": "sha512-9tjBm4O07f7mzKSIlEmPdiE6ub7kfIe6Cd+w+oQebpATfTQMAgW+YOuWxogbKVTulA+MEO7byMeIUtQ1z+z+ZQ==", "requires": { - "@babel/helper-annotate-as-pure": "^7.14.5", - "@babel/helper-module-imports": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-jsx": "^7.14.5", - "@babel/types": "^7.14.5" + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-jsx": "^7.16.7", + "@babel/types": "^7.17.0" } }, "@babel/plugin-transform-react-jsx-development": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.14.5.tgz", - "integrity": "sha512-rdwG/9jC6QybWxVe2UVOa7q6cnTpw8JRRHOxntG/h6g/guAOe6AhtQHJuJh5FwmnXIT1bdm5vC2/5huV8ZOorQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.16.7.tgz", + "integrity": "sha512-RMvQWvpla+xy6MlBpPlrKZCMRs2AGiHOGHY3xRwl0pEeim348dDyxeH4xBsMPbIMhujeq7ihE702eM2Ew0Wo+A==", "requires": { - "@babel/plugin-transform-react-jsx": "^7.14.5" + "@babel/plugin-transform-react-jsx": "^7.16.7" } }, "@babel/plugin-transform-react-pure-annotations": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.14.5.tgz", - "integrity": "sha512-3X4HpBJimNxW4rhUy/SONPyNQHp5YRr0HhJdT2OH1BRp0of7u3Dkirc7x9FRJMKMqTBI079VZ1hzv7Ouuz///g==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.16.7.tgz", + "integrity": "sha512-hs71ToC97k3QWxswh2ElzMFABXHvGiJ01IB1TbYQDGeWRKWz/MPUTh5jGExdHvosYKpnJW5Pm3S4+TA3FyX+GA==", "requires": { - "@babel/helper-annotate-as-pure": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-regenerator": { @@ -21240,16 +19169,16 @@ } }, "@babel/preset-react": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.14.5.tgz", - "integrity": "sha512-XFxBkjyObLvBaAvkx1Ie95Iaq4S/GUEIrejyrntQ/VCMKUYvKLoyKxOBzJ2kjA3b6rC9/KL6KXfDC2GqvLiNqQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.16.7.tgz", + "integrity": "sha512-fWpyI8UM/HE6DfPBzD8LnhQ/OcH8AgTaqcqP2nGOXEUV+VKBR5JRN9hCk9ai+zQQ57vtm9oWeXguBCPNUjytgA==", "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-validator-option": "^7.14.5", - "@babel/plugin-transform-react-display-name": "^7.14.5", - "@babel/plugin-transform-react-jsx": "^7.14.5", - "@babel/plugin-transform-react-jsx-development": "^7.14.5", - "@babel/plugin-transform-react-pure-annotations": "^7.14.5" + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-option": "^7.16.7", + "@babel/plugin-transform-react-display-name": "^7.16.7", + "@babel/plugin-transform-react-jsx": "^7.16.7", + "@babel/plugin-transform-react-jsx-development": "^7.16.7", + "@babel/plugin-transform-react-pure-annotations": "^7.16.7" } }, "@babel/preset-typescript": { @@ -21263,9 +19192,9 @@ } }, "@babel/runtime": { - "version": "7.14.8", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.8.tgz", - "integrity": "sha512-twj3L8Og5SaCRCErB4x4ajbvBIVV77CGeFglHpeg5WC5FF8TZzBWXtTJ4MqaD9QszLYTtr+IsaAL2rEUevb+eg==", + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.9.tgz", + "integrity": "sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg==", "requires": { "regenerator-runtime": "^0.13.4" } @@ -21281,17 +19210,17 @@ } }, "@babel/traverse": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.3.tgz", - "integrity": "sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==", + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.9.tgz", + "integrity": "sha512-PQO8sDIJ8SIwipTPiR71kJQCKQYB5NGImbOviK8K+kg5xkNSYXLBupuX9QhatFowrsvo9Hj8WgArg3W7ijNAQw==", "requires": { "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.3", + "@babel/generator": "^7.17.9", "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", + "@babel/helper-function-name": "^7.17.9", "@babel/helper-hoist-variables": "^7.16.7", "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.17.3", + "@babel/parser": "^7.17.9", "@babel/types": "^7.17.0", "debug": "^4.1.0", "globals": "^11.1.0" @@ -21337,16 +19266,16 @@ "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==" }, "@eslint/eslintrc": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.5.tgz", - "integrity": "sha512-BLxsnmK3KyPunz5wmCCpqy0YelEoxxGmH73Is+Z74oOTMtExcjkr3dDR6quwrjh1YspA8DH9gnX1o069KiS9AQ==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.1.tgz", + "integrity": "sha512-bxvbYnBPN1Gibwyp6NrpnFzA3YtRL3BBAyEAFVIpNTm2Rn4Vy87GA5M4aSn3InRrlsbX5N0GW7XIx+U4SAEKdQ==", "dev": true, "requires": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.2.0", + "espree": "^9.3.1", "globals": "^13.9.0", - "ignore": "^4.0.6", + "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", "minimatch": "^3.0.4", @@ -21360,20 +19289,14 @@ "dev": true }, "globals": { - "version": "13.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz", - "integrity": "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==", + "version": "13.13.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.13.0.tgz", + "integrity": "sha512-EQ7Q18AJlPwp3vUDL4mKA0KXrXyNIQyWon6T6XQiBQF0XHvRsiCSrWmmeATpUzdJN2HhWZU6Pdl0a9zdep5p6A==", "dev": true, "requires": { "type-fest": "^0.20.2" } }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true - }, "js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -21653,15 +19576,6 @@ "picomatch": "^2.2.3" } }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, "strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -22048,16 +19962,41 @@ } } }, + "@jridgewell/resolve-uri": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz", + "integrity": "sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==" + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.11", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz", + "integrity": "sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==" + }, + "@jridgewell/trace-mapping": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz", + "integrity": "sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ==", + "requires": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "@leichtgewicht/ip-codec": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.3.tgz", + "integrity": "sha512-nkalE/f1RvRGChwBnEIoBfSEYOXnCRdleKuv6+lePbMDrMZXeDQnqak5XDOeBgrPPyPfAdcCu/B5z+v3VhplGg==", + "dev": true + }, "@material-ui/core": { - "version": "4.12.2", - "resolved": "https://registry.npmjs.org/@material-ui/core/-/core-4.12.2.tgz", - "integrity": "sha512-Q1npB8V73IC+eV2X6as+g71MpEGQwqKHUI2iujY62npk35V8nMx/bUXAHjv5kKG1BZ8s8XUWoG6s/VkjYPjjQA==", + "version": "4.12.4", + "resolved": "https://registry.npmjs.org/@material-ui/core/-/core-4.12.4.tgz", + "integrity": "sha512-tr7xekNlM9LjA6pagJmL8QCgZXaubWUwkJnoYcMKd4gw/t4XiyvnTkjdGrUVicyB2BsdaAv1tvow45bPM4sSwQ==", "requires": { "@babel/runtime": "^7.4.4", - "@material-ui/styles": "^4.11.4", - "@material-ui/system": "^4.12.1", + "@material-ui/styles": "^4.11.5", + "@material-ui/system": "^4.12.2", "@material-ui/types": "5.1.0", - "@material-ui/utils": "^4.11.2", + "@material-ui/utils": "^4.11.3", "@types/react-transition-group": "^4.2.0", "clsx": "^1.0.4", "hoist-non-react-statics": "^3.3.2", @@ -22068,20 +20007,20 @@ } }, "@material-ui/icons": { - "version": "4.11.2", - "resolved": "https://registry.npmjs.org/@material-ui/icons/-/icons-4.11.2.tgz", - "integrity": "sha512-fQNsKX2TxBmqIGJCSi3tGTO/gZ+eJgWmMJkgDiOfyNaunNaxcklJQFaFogYcFl0qFuaEz1qaXYXboa/bUXVSOQ==", + "version": "4.11.3", + "resolved": "https://registry.npmjs.org/@material-ui/icons/-/icons-4.11.3.tgz", + "integrity": "sha512-IKHlyx6LDh8n19vzwH5RtHIOHl9Tu90aAAxcbWME6kp4dmvODM3UvOHJeMIDzUbd4muuJKHmlNoBN+mDY4XkBA==", "requires": { "@babel/runtime": "^7.4.4" } }, "@material-ui/lab": { - "version": "4.0.0-alpha.60", - "resolved": "https://registry.npmjs.org/@material-ui/lab/-/lab-4.0.0-alpha.60.tgz", - "integrity": "sha512-fadlYsPJF+0fx2lRuyqAuJj7hAS1tLDdIEEdov5jlrpb5pp4b+mRDUqQTUxi4inRZHS1bEXpU8QWUhO6xX88aA==", + "version": "4.0.0-alpha.61", + "resolved": "https://registry.npmjs.org/@material-ui/lab/-/lab-4.0.0-alpha.61.tgz", + "integrity": "sha512-rSzm+XKiNUjKegj8bzt5+pygZeckNLOr+IjykH8sYdVk7dE9y2ZuUSofiMV2bJk3qU+JHwexmw+q0RyNZB9ugg==", "requires": { "@babel/runtime": "^7.4.4", - "@material-ui/utils": "^4.11.2", + "@material-ui/utils": "^4.11.3", "clsx": "^1.0.4", "prop-types": "^15.7.2", "react-is": "^16.8.0 || ^17.0.0" @@ -22101,14 +20040,14 @@ } }, "@material-ui/styles": { - "version": "4.11.4", - "resolved": "https://registry.npmjs.org/@material-ui/styles/-/styles-4.11.4.tgz", - "integrity": "sha512-KNTIZcnj/zprG5LW0Sao7zw+yG3O35pviHzejMdcSGCdWbiO8qzRgOYL8JAxAsWBKOKYwVZxXtHWaB5T2Kvxew==", + "version": "4.11.5", + "resolved": "https://registry.npmjs.org/@material-ui/styles/-/styles-4.11.5.tgz", + "integrity": "sha512-o/41ot5JJiUsIETME9wVLAJrmIWL3j0R0Bj2kCOLbSfqEkKf0fmaPt+5vtblUh5eXr2S+J/8J3DaCb10+CzPGA==", "requires": { "@babel/runtime": "^7.4.4", "@emotion/hash": "^0.8.0", "@material-ui/types": "5.1.0", - "@material-ui/utils": "^4.11.2", + "@material-ui/utils": "^4.11.3", "clsx": "^1.0.4", "csstype": "^2.5.2", "hoist-non-react-statics": "^3.3.2", @@ -22124,12 +20063,12 @@ } }, "@material-ui/system": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@material-ui/system/-/system-4.12.1.tgz", - "integrity": "sha512-lUdzs4q9kEXZGhbN7BptyiS1rLNHe6kG9o8Y307HCvF4sQxbCgpL2qi+gUk+yI8a2DNk48gISEQxoxpgph0xIw==", + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/@material-ui/system/-/system-4.12.2.tgz", + "integrity": "sha512-6CSKu2MtmiJgcCGf6nBQpM8fLkuB9F55EKfbdTC80NND5wpTmKzwdhLYLH3zL4cLlK0gVaaltW7/wMuyTnN0Lw==", "requires": { "@babel/runtime": "^7.4.4", - "@material-ui/utils": "^4.11.2", + "@material-ui/utils": "^4.11.3", "csstype": "^2.5.2", "prop-types": "^15.7.2" } @@ -22141,38 +20080,19 @@ "requires": {} }, "@material-ui/utils": { - "version": "4.11.2", - "resolved": "https://registry.npmjs.org/@material-ui/utils/-/utils-4.11.2.tgz", - "integrity": "sha512-Uul8w38u+PICe2Fg2pDKCaIG7kOyhowZ9vjiC1FsVwPABTW8vPPKfF6OvxRq3IiBaI1faOJmgdvMG7rMJARBhA==", + "version": "4.11.3", + "resolved": "https://registry.npmjs.org/@material-ui/utils/-/utils-4.11.3.tgz", + "integrity": "sha512-ZuQPV4rBK/V1j2dIkSSEcH5uT6AaHuKWFfotADHsC0wVL1NLd2WkFCm4ZZbX33iO4ydl6V0GPngKm8HZQ2oujg==", "requires": { "@babel/runtime": "^7.4.4", "prop-types": "^15.7.2", "react-is": "^16.8.0 || ^17.0.0" } }, - "@mrmlnc/readdir-enhanced": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", - "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", - "dev": true, - "requires": { - "call-me-maybe": "^1.0.1", - "glob-to-regexp": "^0.3.0" - }, - "dependencies": { - "glob-to-regexp": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", - "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=", - "dev": true - } - } - }, "@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, "requires": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -22181,19 +20101,23 @@ "@nodelib/fs.stat": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" }, "@nodelib/fs.walk": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, "requires": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" } }, + "@polka/url": { + "version": "1.0.0-next.21", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz", + "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==", + "dev": true + }, "@redux-saga/core": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/@redux-saga/core/-/core-1.1.3.tgz", @@ -22242,9 +20166,9 @@ "integrity": "sha512-afmTuJrylUU/0OtqzaRkbyYFFNgCF73Bvel/sw90pvGrWIZ+vyoIJqA6eMSoA6+nb443kTmulmBtC9NerXboNg==" }, "@rooks/use-interval": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@rooks/use-interval/-/use-interval-3.6.0.tgz", - "integrity": "sha512-FH5lbrX6UksajF9jPymlUTAG2VEYRrpmGbAXJyR/DUci/XQxXtPapXKA74w5jLVZfZnDXxxPAUFHoykGMNz+1A==", + "version": "4.11.2", + "resolved": "https://registry.npmjs.org/@rooks/use-interval/-/use-interval-4.11.2.tgz", + "integrity": "sha512-55ViHnhMStQaldSQMurITNgheYplR2a4pq2viVLni73ikiEEk1spl15/jNW1YdtCyCWOgRBPSAtAh6bkBteU/Q==", "requires": {} }, "@sindresorhus/is": { @@ -22271,24 +20195,15 @@ "@sinonjs/commons": "^1.7.0" } }, - "@sinonjs/formatio": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-2.0.0.tgz", - "integrity": "sha512-ls6CAMA6/5gG+O/IdsBcblvnd8qcO/l1TYoNeAzp3wcISOxlPXQEus0mLcdwazEkWjaBdaJ3TaxmNgCLWwvWzg==", - "dev": true, - "requires": { - "samsam": "1.3.0" - } - }, "@sinonjs/samsam": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-3.3.3.tgz", - "integrity": "sha512-bKCMKZvWIjYD0BLGnNrxVuw4dkWCYsLqFOUWw8VgKF/+5Y+mE7LfHWPIYoDXowH+3a9LsWDMo0uAP8YDosPvHQ==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-6.1.1.tgz", + "integrity": "sha512-cZ7rKJTLiE7u7Wi/v9Hc2fs3Ucc3jrWeMgPHbbTCeVAB2S0wOBbYlkJVeNSL04i7fdhT8wIbDq1zhC/PXTD2SA==", "dev": true, "requires": { - "@sinonjs/commons": "^1.3.0", - "array-from": "^2.1.1", - "lodash": "^4.17.15" + "@sinonjs/commons": "^1.6.0", + "lodash.get": "^4.4.2", + "type-detect": "^4.0.8" } }, "@sinonjs/text-encoding": { @@ -22439,9 +20354,9 @@ } }, "@tinymce/tinymce-react": { - "version": "3.12.6", - "resolved": "https://registry.npmjs.org/@tinymce/tinymce-react/-/tinymce-react-3.12.6.tgz", - "integrity": "sha512-a7/Ns7uVsSr2N0fCxn+OhDx8f9JqfywTlHbXsgcwlWB6vIBMIjjRBJ6PGo/5H0y2vfzO6fBzd4gc6h05Cm5R7A==", + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/@tinymce/tinymce-react/-/tinymce-react-3.14.0.tgz", + "integrity": "sha512-1X3Kl4DNVG/XNttlniQHvb9awX2MrD7XaFO2nWZ9SJrionIqWqKMLVl5GnJ8Br6KehNl97amxO8t3+5eLvfgxg==", "requires": { "prop-types": "^15.6.2", "tinymce": "^5.5.1" @@ -22608,6 +20523,7 @@ "version": "7.1.4", "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.4.tgz", "integrity": "sha512-w+LsMxKyYQm347Otw+IfBXOv9UWVjpHpCDdbBMt8Kz/xbvCYNjP+0qPh91Km3iKfSRLBB0P7fAMf0KHrPu+MyA==", + "dev": true, "requires": { "@types/minimatch": "*", "@types/node": "*" @@ -22679,7 +20595,8 @@ "@types/minimatch": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", - "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==" + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", + "dev": true }, "@types/minimist": { "version": "1.2.2", @@ -22690,7 +20607,8 @@ "@types/node": { "version": "16.4.3", "resolved": "https://registry.npmjs.org/@types/node/-/node-16.4.3.tgz", - "integrity": "sha512-GKM4FLMkWDc0sfx7tXqPWkM6NBow1kge0fgQh0bOnlqo4iT1kvTvMEKE0c1RtUGnbLlGRXiAA8SumE//90uKAg==" + "integrity": "sha512-GKM4FLMkWDc0sfx7tXqPWkM6NBow1kge0fgQh0bOnlqo4iT1kvTvMEKE0c1RtUGnbLlGRXiAA8SumE//90uKAg==", + "dev": true }, "@types/normalize-package-data": { "version": "2.4.1", @@ -22744,9 +20662,9 @@ } }, "@types/react-redux": { - "version": "7.1.18", - "resolved": "https://registry.npmjs.org/@types/react-redux/-/react-redux-7.1.18.tgz", - "integrity": "sha512-9iwAsPyJ9DLTRH+OFeIrm9cAbIj1i2ANL3sKQFATqnPWRbg+jEFXyZOKHiQK/N86pNRXbb4HRxAxo0SIX1XwzQ==", + "version": "7.1.24", + "resolved": "https://registry.npmjs.org/@types/react-redux/-/react-redux-7.1.24.tgz", + "integrity": "sha512-7FkurKcS1k0FHZEtdbbgN8Oc6b+stGSfZYjQGicofJ0j4U0qIn/jaSvnP2pLwZKiai3/17xqqxkkrxTgN8UNbQ==", "requires": { "@types/hoist-non-react-statics": "^3.3.0", "@types/react": "*", @@ -23033,13 +20951,13 @@ "dev": true }, "accepts": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", - "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", "dev": true, "requires": { - "mime-types": "~2.1.24", - "negotiator": "0.6.2" + "mime-types": "~2.1.34", + "negotiator": "0.6.3" } }, "acorn": { @@ -23099,7 +21017,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, "requires": { "clean-stack": "^2.0.0", "indent-string": "^4.0.0" @@ -23142,13 +21059,6 @@ "uri-js": "^4.2.2" } }, - "ajv-errors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", - "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", - "dev": true, - "requires": {} - }, "ajv-formats": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", @@ -23286,34 +21196,10 @@ "sprintf-js": "~1.0.2" } }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true - }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "dev": true - }, "array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", - "dev": true - }, - "array-from": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/array-from/-/array-from-2.1.1.tgz", - "integrity": "sha1-z+nYwmYoudxa7MYqn12PHzUsEZU=", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", "dev": true }, "array-includes": { @@ -23385,23 +21271,9 @@ } }, "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "requires": { - "array-uniq": "^1.0.1" - } - }, - "array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=" - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==" }, "array.prototype.filter": { "version": "1.0.0", @@ -23514,39 +21386,21 @@ "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "dev": true - }, "async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "dev": true, "requires": { "lodash": "^4.17.14" } }, - "async-limiter": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", - "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", - "dev": true - }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", "dev": true }, - "atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true - }, "babel-jest": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz", @@ -23615,15 +21469,28 @@ } }, "babel-loader": { - "version": "8.2.2", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.2.tgz", - "integrity": "sha512-JvTd0/D889PQBtUXJ2PXaKU/pjZDMtHA9V2ecm+eNRmmBCMR09a+fmpGTNwnJtFmFl5Ei7Vy47LjBb+L0wQ99g==", + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.4.tgz", + "integrity": "sha512-8dytA3gcvPPPv4Grjhnt8b5IIiTcq/zeXOPk4iTYI0SVXcsmuGg7JtBRDp8S9X+gJfhQ8ektjXZlDu1Bb33U8A==", "dev": true, "requires": { "find-cache-dir": "^3.3.1", - "loader-utils": "^1.4.0", + "loader-utils": "^2.0.0", "make-dir": "^3.1.0", "schema-utils": "^2.6.5" + }, + "dependencies": { + "loader-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", + "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + } } }, "babel-plugin-dynamic-import-node": { @@ -23742,67 +21609,6 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dev": true, - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - } - } - }, "base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", @@ -23815,18 +21621,6 @@ "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", "dev": true }, - "bfj": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/bfj/-/bfj-6.1.2.tgz", - "integrity": "sha512-BmBJa4Lip6BPRINSZ0BPEIfB1wUY/9rwbwvIHQA1KjX9om29B6id0wnWXq7m3bn5JrUVjeOTnVuhPT1FiHwPGw==", - "dev": true, - "requires": { - "bluebird": "^3.5.5", - "check-types": "^8.0.3", - "hoopy": "^0.1.4", - "tryer": "^1.0.1" - } - }, "big.js": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", @@ -23857,28 +21651,22 @@ } } }, - "bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "dev": true - }, "body-parser": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw==", "dev": true, "requires": { - "bytes": "3.1.0", + "bytes": "3.1.2", "content-type": "~1.0.4", "debug": "2.6.9", "depd": "~1.1.2", - "http-errors": "1.7.2", + "http-errors": "1.8.1", "iconv-lite": "0.4.24", "on-finished": "~2.3.0", - "qs": "6.7.0", - "raw-body": "2.4.0", - "type-is": "~1.6.17" + "qs": "6.9.7", + "raw-body": "2.4.3", + "type-is": "~1.6.18" }, "dependencies": { "debug": { @@ -23895,35 +21683,19 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true - }, - "qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", - "dev": true } } }, - "bonjour": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", - "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "bonjour-service": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.0.11.tgz", + "integrity": "sha512-drMprzr2rDTCtgEE3VgdA9uUFaUHF+jXduwYSThHJnKMYM+FhI9Z3ph+TX3xy0LtgYHae6CHYPJ/2UnK8nQHcA==", "dev": true, "requires": { - "array-flatten": "^2.1.0", - "deep-equal": "^1.0.1", + "array-flatten": "^2.1.2", "dns-equal": "^1.0.0", - "dns-txt": "^2.0.2", - "multicast-dns": "^6.0.1", - "multicast-dns-service-types": "^1.1.0" - }, - "dependencies": { - "array-flatten": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", - "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", - "dev": true - } + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.4" } }, "boolbase": { @@ -24013,35 +21785,6 @@ "concat-map": "0.0.1" } }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, "browser-process-hrtime": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", @@ -24091,35 +21834,12 @@ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", "dev": true }, - "buffer-indexof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", - "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", - "dev": true - }, "bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "dev": true }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dev": true, - "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - } - }, "cacheable-request": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", @@ -24171,12 +21891,6 @@ "get-intrinsic": "^1.0.2" } }, - "call-me-maybe": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", - "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=", - "dev": true - }, "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -24220,12 +21934,6 @@ "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", "dev": true }, - "check-types": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/check-types/-/check-types-8.0.3.tgz", - "integrity": "sha512-YpeKZngUmG65rLudJ4taU7VLkOCTMhNl/u4ctNC56LQS/zJTyNH0Lrtwm1tfTsbLlwvlfsA2d1c8vCf/Kh2KwQ==", - "dev": true - }, "cheerio": { "version": "1.0.0-rc.10", "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.10.tgz", @@ -24277,29 +21985,6 @@ "resolved": "https://registry.npmjs.org/class-autobind/-/class-autobind-0.1.4.tgz", "integrity": "sha1-NFFsSRZ8+NP2Od3Bhrz6Imiv/zQ=" }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, "classnames": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.1.tgz", @@ -24308,8 +21993,7 @@ "clean-stack": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==" }, "cli-boxes": { "version": "2.2.1", @@ -24399,16 +22083,6 @@ "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", "dev": true }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "dev": true, - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - } - }, "color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", @@ -24449,12 +22123,6 @@ "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", "dev": true }, - "component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true - }, "compress-commons": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.1.tgz", @@ -24533,9 +22201,9 @@ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, "concurrently": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-7.0.0.tgz", - "integrity": "sha512-WKM7PUsI8wyXpF80H+zjHP32fsgsHNQfPLw/e70Z5dYkV7hF+rf8q3D+ScWJIEr57CpkO3OWBko6hwhQLPR8Pw==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-7.1.0.tgz", + "integrity": "sha512-Bz0tMlYKZRUDqJlNiF/OImojMB9ruKUz6GCfmhFnSapXgPe+3xzY4byqoKG9tUZ7L2PGEUjfLPOLfIX3labnmw==", "dev": true, "requires": { "chalk": "^4.1.0", @@ -24631,23 +22299,31 @@ "dev": true }, "connected-react-router": { - "version": "6.9.1", - "resolved": "https://registry.npmjs.org/connected-react-router/-/connected-react-router-6.9.1.tgz", - "integrity": "sha512-BbtB6t0iqAwGwygDenJl9zmlk7vpKWIRSycULmkAOn2RUaF6+bqETprl0qcIqQmY5CTqSwKanaxkLXYWiffAfQ==", + "version": "6.9.2", + "resolved": "https://registry.npmjs.org/connected-react-router/-/connected-react-router-6.9.2.tgz", + "integrity": "sha512-bE8kNBiZv9Mivp7pYn9JvLH5ItTjLl45kk1/Vha0rmAK9I/ETb5JPJrAm0h2KCG9qLfv7vqU3Jo4UUDo0oJnQg==", "requires": { - "immutable": "^3.8.1 || ^4.0.0-rc.1", + "immutable": "^3.8.1 || ^4.0.0", "lodash.isequalwith": "^4.4.0", "prop-types": "^15.7.2", "seamless-immutable": "^7.1.3" } }, "content-disposition": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", - "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", "dev": true, "requires": { - "safe-buffer": "5.1.2" + "safe-buffer": "5.2.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } } }, "content-type": { @@ -24665,9 +22341,9 @@ } }, "cookie": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", - "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", "dev": true }, "cookie-signature": { @@ -24676,16 +22352,10 @@ "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", "dev": true }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "dev": true - }, "core-js": { - "version": "3.15.2", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.15.2.tgz", - "integrity": "sha512-tKs41J7NJVuaya8DxIOCnl8QuPHx5/ZVbFo1oKgVl1qHFBBrDctzQGtuLjPpRdNTWmKPH6oEvgN/MUID+l485Q==" + "version": "3.21.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.21.1.tgz", + "integrity": "sha512-FRq5b/VMrWlrmCzwRrpDYNxyHP9BcAZC+xHJaqTgIE5091ZV1NTmyh0sGOg5XqpnHvR0svdy0sv1gWA1zmhxig==" }, "core-js-compat": { "version": "3.21.1", @@ -24728,126 +22398,6 @@ } } }, - "cp-file": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/cp-file/-/cp-file-7.0.0.tgz", - "integrity": "sha512-0Cbj7gyvFVApzpK/uhCtQ/9kE9UnYpxMzaq5nQQC/Dh4iaj5fxp7iEFIullrYwzj8nf0qnsI1Qsx34hAeAebvw==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "make-dir": "^3.0.0", - "nested-error-stacks": "^2.0.0", - "p-event": "^4.1.0" - } - }, - "cpy": { - "version": "8.1.2", - "resolved": "https://registry.npmjs.org/cpy/-/cpy-8.1.2.tgz", - "integrity": "sha512-dmC4mUesv0OYH2kNFEidtf/skUwv4zePmGeepjyyJ0qTo5+8KhA1o99oIAwVVLzQMAeDJml74d6wPPKb6EZUTg==", - "dev": true, - "requires": { - "arrify": "^2.0.1", - "cp-file": "^7.0.0", - "globby": "^9.2.0", - "has-glob": "^1.0.0", - "junk": "^3.1.0", - "nested-error-stacks": "^2.1.0", - "p-all": "^2.1.0", - "p-filter": "^2.1.0", - "p-map": "^3.0.0" - }, - "dependencies": { - "@nodelib/fs.stat": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", - "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", - "dev": true - }, - "arrify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", - "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", - "dev": true - }, - "dir-glob": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", - "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", - "dev": true, - "requires": { - "path-type": "^3.0.0" - } - }, - "fast-glob": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", - "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", - "dev": true, - "requires": { - "@mrmlnc/readdir-enhanced": "^2.2.1", - "@nodelib/fs.stat": "^1.1.2", - "glob-parent": "^3.1.0", - "is-glob": "^4.0.0", - "merge2": "^1.2.3", - "micromatch": "^3.1.10" - } - }, - "globby": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-9.2.0.tgz", - "integrity": "sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==", - "dev": true, - "requires": { - "@types/glob": "^7.1.1", - "array-union": "^1.0.2", - "dir-glob": "^2.2.2", - "fast-glob": "^2.2.6", - "glob": "^7.1.3", - "ignore": "^4.0.3", - "pify": "^4.0.1", - "slash": "^2.0.0" - } - }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true - }, - "p-map": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", - "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", - "dev": true, - "requires": { - "aggregate-error": "^3.0.0" - } - }, - "path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, - "requires": { - "pify": "^3.0.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - } - } - }, - "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", - "dev": true - } - } - }, "crc-32": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.1.tgz", @@ -24917,57 +22467,36 @@ "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", "dev": true }, + "css-functions-list": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.0.1.tgz", + "integrity": "sha512-PriDuifDt4u4rkDgnqRCLnjfMatufLmWNfQnGCq34xZwpY3oabwhB9SqRBmuvWUgndbemCFlKqg+nO7C2q0SBw==", + "dev": true + }, "css-loader": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-2.1.1.tgz", - "integrity": "sha512-OcKJU/lt232vl1P9EEDamhoO9iKY3tIjY5GU+XDLblAykTdgs6Ux9P1hTHve8nFKy5KPpOXOsVI/hIwi3841+w==", + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.7.1.tgz", + "integrity": "sha512-yB5CNFa14MbPJcomwNh3wLThtkZgcNyI2bNMRt8iE5Z8Vwl7f8vQXFAzn2HDOJvtDq2NTZBUGMSUNNyrv3/+cw==", "dev": true, "requires": { - "camelcase": "^5.2.0", - "icss-utils": "^4.1.0", - "loader-utils": "^1.2.3", - "normalize-path": "^3.0.0", - "postcss": "^7.0.14", - "postcss-modules-extract-imports": "^2.0.0", - "postcss-modules-local-by-default": "^2.0.6", - "postcss-modules-scope": "^2.1.0", - "postcss-modules-values": "^2.0.0", - "postcss-value-parser": "^3.3.0", - "schema-utils": "^1.0.0" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - }, - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "icss-utils": "^5.1.0", + "postcss": "^8.4.7", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.0", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.3.5" + }, + "dependencies": { + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" + "lru-cache": "^6.0.0" } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true } } }, @@ -25051,9 +22580,9 @@ } }, "csstype": { - "version": "2.6.17", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.17.tgz", - "integrity": "sha512-u1wmTI1jJGzCJzWndZo8mk4wnPTZd1eOIYTYvuEyOQGfmDl3TrabCCfKnOC86FZwW/9djqTl933UF/cS425i9A==" + "version": "2.6.20", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.20.tgz", + "integrity": "sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA==" }, "data-urls": { "version": "3.0.1", @@ -25067,14 +22596,14 @@ } }, "date-fns": { - "version": "2.23.0", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.23.0.tgz", - "integrity": "sha512-5ycpauovVyAk0kXNZz6ZoB9AYMZB4DObse7P3BPWmyEjXNORTI8EJ6X0uaSAq4sCHzM1uajzrkr6HnsLQpxGXA==" + "version": "2.28.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.28.0.tgz", + "integrity": "sha512-8d35hViGYx/QH0icHYCeLmsLmMUheMmTyV9Fcm6gvNwdw31yXXH+O85sOBJ+OLnLQMKZowvpKb6FgMIQjcpvQw==" }, "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "requires": { "ms": "2.1.2" } @@ -25109,12 +22638,6 @@ "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==", "dev": true }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "dev": true - }, "decompress-response": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", @@ -25135,20 +22658,6 @@ "resolved": "https://registry.npmjs.org/deep-diff/-/deep-diff-0.3.8.tgz", "integrity": "sha1-wB3mPvsO7JeYgB1Ax+Da4ltYLIQ=" }, - "deep-equal": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", - "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", - "dev": true, - "requires": { - "is-arguments": "^1.0.4", - "is-date-object": "^1.0.1", - "is-regex": "^1.0.4", - "object-is": "^1.0.1", - "object-keys": "^1.1.1", - "regexp.prototype.flags": "^1.2.0" - } - }, "deep-extend": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", @@ -25195,65 +22704,19 @@ "object-keys": "^1.0.12" } }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - } - } - }, "del": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", - "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/del/-/del-6.0.0.tgz", + "integrity": "sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ==", "requires": { - "@types/glob": "^7.1.1", - "globby": "^6.1.0", - "is-path-cwd": "^2.0.0", - "is-path-in-cwd": "^2.0.0", - "p-map": "^2.0.0", - "pify": "^4.0.1", - "rimraf": "^2.6.3" + "globby": "^11.0.1", + "graceful-fs": "^4.2.4", + "is-glob": "^4.0.1", + "is-path-cwd": "^2.2.0", + "is-path-inside": "^3.0.2", + "p-map": "^4.0.0", + "rimraf": "^3.0.2", + "slash": "^3.0.0" } }, "delayed-stream": { @@ -25280,9 +22743,9 @@ "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==" }, "diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", "dev": true }, "diff-sequences": { @@ -25295,7 +22758,6 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, "requires": { "path-type": "^4.0.0" }, @@ -25303,8 +22765,7 @@ "path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" } } }, @@ -25321,22 +22782,12 @@ "dev": true }, "dns-packet": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz", - "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==", - "dev": true, - "requires": { - "ip": "^1.1.0", - "safe-buffer": "^5.0.1" - } - }, - "dns-txt": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", - "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.3.1.tgz", + "integrity": "sha512-spBwIj0TK0Ey3666GwIdWVfUpLyubpU53BTCu8iPn4r4oXd9O14Hjg3EHw3ts2oed77/SeckunUYCyRlSngqHw==", "dev": true, "requires": { - "buffer-indexof": "^1.0.0" + "@leichtgewicht/ip-codec": "^2.0.1" } }, "doctrine": { @@ -25504,12 +22955,6 @@ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", "dev": true }, - "ejs": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.7.4.tgz", - "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==", - "dev": true - }, "electron-to-chromium": { "version": "1.4.76", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.76.tgz", @@ -25548,6 +22993,16 @@ "once": "^1.4.0" } }, + "enhanced-resolve": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz", + "integrity": "sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + } + }, "entities": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", @@ -25778,12 +23233,12 @@ } }, "eslint": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.7.0.tgz", - "integrity": "sha512-ifHYzkBGrzS2iDU7KjhCAVMGCvF6M3Xfs8X8b37cgrUlDt6bWRTpRh6T/gtSXv1HJ/BUGgmjvNvOEGu85Iif7w==", + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.13.0.tgz", + "integrity": "sha512-D+Xei61eInqauAyTJ6C0q6x9mx7kTUC1KZ0m0LSEexR0V+e94K12LmWX076ZIsldwfQ2RONdaJe0re0TRGQbRQ==", "dev": true, "requires": { - "@eslint/eslintrc": "^1.0.5", + "@eslint/eslintrc": "^1.2.1", "@humanwhocodes/config-array": "^0.9.2", "ajv": "^6.10.0", "chalk": "^4.0.0", @@ -25791,10 +23246,10 @@ "debug": "^4.3.2", "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.0", + "eslint-scope": "^7.1.1", "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.2.0", - "espree": "^9.3.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.1", "esquery": "^1.4.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -25882,9 +23337,9 @@ "dev": true }, "eslint-scope": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.0.tgz", - "integrity": "sha512-aWwkhnS0qAXqNOgKOK0dJ2nvzEbhEvpy8OlJ9kZ0FeZnA6zpjv1/Vei+puGFFX7zkPCkHHXb7IDX3A+7yPrRWg==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", "dev": true, "requires": { "esrecurse": "^4.3.0", @@ -25910,17 +23365,6 @@ "dev": true, "requires": { "is-glob": "^4.0.3" - }, - "dependencies": { - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - } } }, "globals": { @@ -26007,9 +23451,9 @@ } }, "eslint-plugin-react": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.28.0.tgz", - "integrity": "sha512-IOlFIRHzWfEQQKcAD4iyYDndHwTQiCMcJVJjxempf203jnNLUnW34AXLrV33+nEXoifJE2ZEGmcjKPL8957eSw==", + "version": "7.29.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.29.4.tgz", + "integrity": "sha512-CVCXajliVh509PcZYRFyu/BoUEz452+jtQJq2b3Bae4v3xBUWPLCmtmBM+ZinG4MzwmxJgJ2M5rMqhqLVn7MtQ==", "dev": true, "requires": { "array-includes": "^3.1.4", @@ -26017,12 +23461,12 @@ "doctrine": "^2.1.0", "estraverse": "^5.3.0", "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "minimatch": "^3.0.4", + "minimatch": "^3.1.2", "object.entries": "^1.1.5", "object.fromentries": "^2.0.5", "object.hasown": "^1.1.0", "object.values": "^1.1.5", - "prop-types": "^15.7.2", + "prop-types": "^15.8.1", "resolve": "^2.0.0-next.3", "semver": "^6.3.0", "string.prototype.matchall": "^4.0.6" @@ -26160,31 +23604,24 @@ } }, "eslint-visitor-keys": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.2.0.tgz", - "integrity": "sha512-IOzT0X126zn7ALX0dwFiUQEdsfzrm4+ISsQS8nukaJXwEyYKRSnEIIDULYg1mCtGp7UUXgfGl7BIolXREQK+XQ==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", "dev": true }, "eslint-webpack-plugin": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/eslint-webpack-plugin/-/eslint-webpack-plugin-2.6.0.tgz", - "integrity": "sha512-V+LPY/T3kur5QO3u+1s34VDTcRxjXWPUGM4hlmTb5DwVD0OQz631yGTxJZf4SpAqAjdbBVe978S8BJeHpAdOhQ==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/eslint-webpack-plugin/-/eslint-webpack-plugin-3.1.1.tgz", + "integrity": "sha512-xSucskTN9tOkfW7so4EaiFIkulWLXwCB/15H917lR6pTv0Zot6/fetFucmENRb7J5whVSFKIvwnrnsa78SG2yg==", "dev": true, "requires": { "@types/eslint": "^7.28.2", - "arrify": "^2.0.1", "jest-worker": "^27.3.1", "micromatch": "^4.0.4", "normalize-path": "^3.0.0", "schema-utils": "^3.1.1" }, "dependencies": { - "arrify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", - "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", - "dev": true - }, "braces": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", @@ -26242,14 +23679,14 @@ } }, "espree": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.0.tgz", - "integrity": "sha512-d/5nCsb0JcqsSEeQzFZ8DH1RmxPcglRWh24EFTlUEmCKoehXGdpsx0RkHDubqUI8LSAIKMQp4r9SzQ3n+sm4HQ==", + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.1.tgz", + "integrity": "sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ==", "dev": true, "requires": { "acorn": "^8.7.0", "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^3.1.0" + "eslint-visitor-keys": "^3.3.0" } }, "esprima": { @@ -26364,56 +23801,6 @@ "integrity": "sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw==", "dev": true }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, "expect": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", @@ -26427,17 +23814,17 @@ } }, "express": { - "version": "4.17.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", - "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "version": "4.17.3", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.3.tgz", + "integrity": "sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg==", "dev": true, "requires": { - "accepts": "~1.3.7", + "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.19.0", - "content-disposition": "0.5.3", + "body-parser": "1.19.2", + "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.4.0", + "cookie": "0.4.2", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "~1.1.2", @@ -26451,19 +23838,25 @@ "on-finished": "~2.3.0", "parseurl": "~1.3.3", "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.5", - "qs": "6.7.0", + "proxy-addr": "~2.0.7", + "qs": "6.9.7", "range-parser": "~1.2.1", - "safe-buffer": "5.1.2", - "send": "0.17.1", - "serve-static": "1.14.1", - "setprototypeof": "1.1.1", + "safe-buffer": "5.2.1", + "send": "0.17.2", + "serve-static": "1.14.2", + "setprototypeof": "1.2.0", "statuses": "~1.5.0", "type-is": "~1.6.18", "utils-merge": "1.0.1", "vary": "~1.1.2" }, "dependencies": { + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true + }, "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -26485,102 +23878,10 @@ "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", "dev": true }, - "qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", - "dev": true - } - } - }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "dev": true } } @@ -26619,7 +23920,6 @@ "version": "3.2.11", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", - "dev": true, "requires": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -26632,7 +23932,6 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, "requires": { "fill-range": "^7.0.1" } @@ -26641,7 +23940,6 @@ "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, "requires": { "to-regex-range": "^5.0.1" } @@ -26650,7 +23948,6 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, "requires": { "is-glob": "^4.0.1" } @@ -26658,14 +23955,12 @@ "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" }, "micromatch": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", - "dev": true, "requires": { "braces": "^3.0.1", "picomatch": "^2.2.3" @@ -26675,7 +23970,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, "requires": { "is-number": "^7.0.0" } @@ -26698,7 +23992,6 @@ "version": "1.13.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", - "dev": true, "requires": { "reusify": "^1.0.4" } @@ -26751,118 +24044,58 @@ } }, "filemanager-webpack-plugin": { - "version": "6.1.7", - "resolved": "https://registry.npmjs.org/filemanager-webpack-plugin/-/filemanager-webpack-plugin-6.1.7.tgz", - "integrity": "sha512-0hhPpmod5t0xy1hBSA9gXi0WlOHL3+x56IBt0b/VMhvbZ5/z6jakXvNOTuVmn4wOZwAORvAeH5qQ5Qs6NdPyiw==", + "version": "7.0.0-beta.0", + "resolved": "https://registry.npmjs.org/filemanager-webpack-plugin/-/filemanager-webpack-plugin-7.0.0-beta.0.tgz", + "integrity": "sha512-L6jbUBUDgsMTEopXJsB3OX8mFx/4JQ8Vu0ks7vIgtNBqwYFDjWOW/DRoon+iM4zUhRwacv9kxmh+fgx7yxcOXw==", "dev": true, "requires": { - "@types/archiver": "^5.1.1", + "@types/archiver": "^5.3.1", "archiver": "^5.3.0", - "cpy": "^8.1.2", "del": "^6.0.0", - "fs-extra": "^10.0.0", - "is-glob": "^4.0.1", - "schema-utils": "^3.1.1" + "fast-glob": "^3.2.11", + "fs-extra": "^10.0.1", + "is-glob": "^4.0.3", + "normalize-path": "^3.0.0", + "schema-utils": "^4.0.0" }, "dependencies": { - "array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true - }, - "del": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/del/-/del-6.0.0.tgz", - "integrity": "sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ==", + "ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", "dev": true, "requires": { - "globby": "^11.0.1", - "graceful-fs": "^4.2.4", - "is-glob": "^4.0.1", - "is-path-cwd": "^2.2.0", - "is-path-inside": "^3.0.2", - "p-map": "^4.0.0", - "rimraf": "^3.0.2", - "slash": "^3.0.0" + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" } }, - "globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", "dev": true, "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" + "fast-deep-equal": "^3.1.3" } }, - "is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true }, - "p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "requires": { - "aggregate-error": "^3.0.0" - } - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } - } - }, - "filesize": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz", - "integrity": "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==", - "dev": true - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", "dev": true, "requires": { - "is-extendable": "^0.1.0" + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" } } } @@ -26918,17 +24151,6 @@ "requires": { "flatted": "^3.1.0", "rimraf": "^3.0.2" - }, - "dependencies": { - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } } }, "flatted": { @@ -26943,12 +24165,6 @@ "integrity": "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==", "dev": true }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true - }, "form-data": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", @@ -26966,15 +24182,6 @@ "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", "dev": true }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "dev": true, - "requires": { - "map-cache": "^0.2.2" - } - }, "fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", @@ -27095,12 +24302,6 @@ "get-intrinsic": "^1.1.1" } }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "dev": true - }, "glob": { "version": "7.1.7", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", @@ -27114,27 +24315,6 @@ "path-is-absolute": "^1.0.0" } }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, "glob-to-regexp": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", @@ -27174,22 +24354,16 @@ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" }, "globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "requires": { - "array-union": "^1.0.1", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" - } + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" } }, "globjoin": { @@ -27241,8 +24415,16 @@ "graceful-fs": { "version": "4.2.9", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", - "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==", - "dev": true + "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==" + }, + "gzip-size": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", + "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", + "dev": true, + "requires": { + "duplexer": "^0.1.2" + } }, "handle-thing": { "version": "2.0.1", @@ -27281,26 +24463,6 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" }, - "has-glob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-glob/-/has-glob-1.0.0.tgz", - "integrity": "sha1-mqqe7b/7G6OZCnsAEPtnjuAIEgc=", - "dev": true, - "requires": { - "is-glob": "^3.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, "has-symbols": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", @@ -27315,38 +24477,6 @@ "has-symbols": "^1.0.2" } }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "dev": true, - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, "has-yarn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", @@ -27381,12 +24511,6 @@ } } }, - "hoopy": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz", - "integrity": "sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==", - "dev": true - }, "hpack.js": { "version": "2.1.6", "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", @@ -27461,24 +24585,16 @@ "dev": true }, "http-errors": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", - "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", "dev": true, - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - }, - "dependencies": { - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - } + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" } }, "http-parser-js": { @@ -27608,44 +24724,12 @@ "safer-buffer": ">= 2.1.2 < 3" } }, - "icss-replace-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", - "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=", - "dev": true - }, "icss-utils": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz", - "integrity": "sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", "dev": true, - "requires": { - "postcss": "^7.0.14" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } + "requires": {} }, "identity-obj-proxy": { "version": "3.0.0", @@ -27665,8 +24749,7 @@ "ignore": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==" }, "ignore-by-default": { "version": "1.0.1", @@ -27720,8 +24803,7 @@ "indent-string": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" }, "inflight": { "version": "1.0.6", @@ -27768,37 +24850,12 @@ "loose-envify": "^1.0.0" } }, - "ip": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", - "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", - "dev": true - }, "ipaddr.js": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", "dev": true }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-arguments": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", - "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -27819,12 +24876,6 @@ "call-bind": "^1.0.2" } }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, "is-callable": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", @@ -27856,52 +24907,18 @@ "has": "^1.0.3" } }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, "is-date-object": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.4.tgz", "integrity": "sha512-/b4ZVsG7Z5XVtIxs/h9W8nvfLgSAyKYdtGWQLbqy6jA1icmgjf8WCoTKgeS4wy5tYaPePouzFMANbnj94c2Z+A==", "dev": true }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, "is-docker": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", "dev": true }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true - }, "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -27920,9 +24937,9 @@ "dev": true }, "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "requires": { "is-extglob": "^2.1.1" } @@ -27940,14 +24957,6 @@ "requires": { "global-dirs": "^3.0.0", "is-path-inside": "^3.0.2" - }, - "dependencies": { - "is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true - } } }, "is-negative-zero": { @@ -27962,15 +24971,6 @@ "integrity": "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==", "dev": true }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, "is-number-object": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.5.tgz", @@ -27988,21 +24988,10 @@ "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==" }, - "is-path-in-cwd": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", - "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", - "requires": { - "is-path-inside": "^2.1.0" - } - }, "is-path-inside": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", - "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", - "requires": { - "path-is-inside": "^1.0.2" - } + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==" }, "is-plain-obj": { "version": "1.1.0", @@ -28089,12 +25078,6 @@ "call-bind": "^1.0.2" } }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true - }, "is-yarn-global": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", @@ -29882,12 +26865,9 @@ "dev": true }, "json5": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", - "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", - "requires": { - "minimist": "^1.2.5" - } + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==" }, "jsonfile": { "version": "6.1.0", @@ -29908,9 +26888,9 @@ } }, "jss": { - "version": "10.7.1", - "resolved": "https://registry.npmjs.org/jss/-/jss-10.7.1.tgz", - "integrity": "sha512-5QN8JSVZR6cxpZNeGfzIjqPEP+ZJwJJfZbXmeABNdxiExyO+eJJDy6WDtqTf8SDKnbL5kZllEpAP71E/Lt7PXg==", + "version": "10.9.0", + "resolved": "https://registry.npmjs.org/jss/-/jss-10.9.0.tgz", + "integrity": "sha512-YpzpreB6kUunQBbrlArlsMpXYyndt9JATbt95tajx0t4MTJJcCJdd4hdNpHmOIDiUJrF/oX5wtVFrS3uofWfGw==", "requires": { "@babel/runtime": "^7.3.1", "csstype": "^3.0.2", @@ -29919,77 +26899,77 @@ }, "dependencies": { "csstype": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.8.tgz", - "integrity": "sha512-jXKhWqXPmlUeoQnF/EhTtTl4C9SnrxSH/jZUih3jmO6lBKr99rP3/+FmrMj4EFpOXzMtXHAZkd3x0E6h6Fgflw==" + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.11.tgz", + "integrity": "sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw==" } } }, "jss-plugin-camel-case": { - "version": "10.7.1", - "resolved": "https://registry.npmjs.org/jss-plugin-camel-case/-/jss-plugin-camel-case-10.7.1.tgz", - "integrity": "sha512-+ioIyWvmAfgDCWXsQcW1NMnLBvRinOVFkSYJUgewQ6TynOcSj5F1bSU23B7z0p1iqK0PPHIU62xY1iNJD33WGA==", + "version": "10.9.0", + "resolved": "https://registry.npmjs.org/jss-plugin-camel-case/-/jss-plugin-camel-case-10.9.0.tgz", + "integrity": "sha512-UH6uPpnDk413/r/2Olmw4+y54yEF2lRIV8XIZyuYpgPYTITLlPOsq6XB9qeqv+75SQSg3KLocq5jUBXW8qWWww==", "requires": { "@babel/runtime": "^7.3.1", "hyphenate-style-name": "^1.0.3", - "jss": "10.7.1" + "jss": "10.9.0" } }, "jss-plugin-default-unit": { - "version": "10.7.1", - "resolved": "https://registry.npmjs.org/jss-plugin-default-unit/-/jss-plugin-default-unit-10.7.1.tgz", - "integrity": "sha512-tW+dfYVNARBQb/ONzBwd8uyImigyzMiAEDai+AbH5rcHg5h3TtqhAkxx06iuZiT/dZUiFdSKlbe3q9jZGAPIwA==", + "version": "10.9.0", + "resolved": "https://registry.npmjs.org/jss-plugin-default-unit/-/jss-plugin-default-unit-10.9.0.tgz", + "integrity": "sha512-7Ju4Q9wJ/MZPsxfu4T84mzdn7pLHWeqoGd/D8O3eDNNJ93Xc8PxnLmV8s8ZPNRYkLdxZqKtm1nPQ0BM4JRlq2w==", "requires": { "@babel/runtime": "^7.3.1", - "jss": "10.7.1" + "jss": "10.9.0" } }, "jss-plugin-global": { - "version": "10.7.1", - "resolved": "https://registry.npmjs.org/jss-plugin-global/-/jss-plugin-global-10.7.1.tgz", - "integrity": "sha512-FbxCnu44IkK/bw8X3CwZKmcAnJqjAb9LujlAc/aP0bMSdVa3/MugKQRyeQSu00uGL44feJJDoeXXiHOakBr/Zw==", + "version": "10.9.0", + "resolved": "https://registry.npmjs.org/jss-plugin-global/-/jss-plugin-global-10.9.0.tgz", + "integrity": "sha512-4G8PHNJ0x6nwAFsEzcuVDiBlyMsj2y3VjmFAx/uHk/R/gzJV+yRHICjT4MKGGu1cJq2hfowFWCyrr/Gg37FbgQ==", "requires": { "@babel/runtime": "^7.3.1", - "jss": "10.7.1" + "jss": "10.9.0" } }, "jss-plugin-nested": { - "version": "10.7.1", - "resolved": "https://registry.npmjs.org/jss-plugin-nested/-/jss-plugin-nested-10.7.1.tgz", - "integrity": "sha512-RNbICk7FlYKaJyv9tkMl7s6FFfeLA3ubNIFKvPqaWtADK0KUaPsPXVYBkAu4x1ItgsWx67xvReMrkcKA0jSXfA==", + "version": "10.9.0", + "resolved": "https://registry.npmjs.org/jss-plugin-nested/-/jss-plugin-nested-10.9.0.tgz", + "integrity": "sha512-2UJnDrfCZpMYcpPYR16oZB7VAC6b/1QLsRiAutOt7wJaaqwCBvNsosLEu/fUyKNQNGdvg2PPJFDO5AX7dwxtoA==", "requires": { "@babel/runtime": "^7.3.1", - "jss": "10.7.1", + "jss": "10.9.0", "tiny-warning": "^1.0.2" } }, "jss-plugin-props-sort": { - "version": "10.7.1", - "resolved": "https://registry.npmjs.org/jss-plugin-props-sort/-/jss-plugin-props-sort-10.7.1.tgz", - "integrity": "sha512-eyd5FhA+J0QrpqXxO7YNF/HMSXXl4pB0EmUdY4vSJI4QG22F59vQ6AHtP6fSwhmBdQ98Qd9gjfO+RMxcE39P1A==", + "version": "10.9.0", + "resolved": "https://registry.npmjs.org/jss-plugin-props-sort/-/jss-plugin-props-sort-10.9.0.tgz", + "integrity": "sha512-7A76HI8bzwqrsMOJTWKx/uD5v+U8piLnp5bvru7g/3ZEQOu1+PjHvv7bFdNO3DwNPC9oM0a//KwIJsIcDCjDzw==", "requires": { "@babel/runtime": "^7.3.1", - "jss": "10.7.1" + "jss": "10.9.0" } }, "jss-plugin-rule-value-function": { - "version": "10.7.1", - "resolved": "https://registry.npmjs.org/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.7.1.tgz", - "integrity": "sha512-fGAAImlbaHD3fXAHI3ooX6aRESOl5iBt3LjpVjxs9II5u9tzam7pqFUmgTcrip9VpRqYHn8J3gA7kCtm8xKwHg==", + "version": "10.9.0", + "resolved": "https://registry.npmjs.org/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.9.0.tgz", + "integrity": "sha512-IHJv6YrEf8pRzkY207cPmdbBstBaE+z8pazhPShfz0tZSDtRdQua5jjg6NMz3IbTasVx9FdnmptxPqSWL5tyJg==", "requires": { "@babel/runtime": "^7.3.1", - "jss": "10.7.1", + "jss": "10.9.0", "tiny-warning": "^1.0.2" } }, "jss-plugin-vendor-prefixer": { - "version": "10.7.1", - "resolved": "https://registry.npmjs.org/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.7.1.tgz", - "integrity": "sha512-1UHFmBn7hZNsHXTkLLOL8abRl8vi+D1EVzWD4WmLFj55vawHZfnH1oEz6TUf5Y61XHv0smdHabdXds6BgOXe3A==", + "version": "10.9.0", + "resolved": "https://registry.npmjs.org/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.9.0.tgz", + "integrity": "sha512-MbvsaXP7iiVdYVSEoi+blrW+AYnTDvHTW6I6zqi7JcwXdc6I9Kbm234nEblayhF38EftoenbM+5218pidmC5gA==", "requires": { "@babel/runtime": "^7.3.1", "css-vendor": "^2.0.8", - "jss": "10.7.1" + "jss": "10.9.0" } }, "jsx-ast-utils": { @@ -30002,12 +26982,6 @@ "object.assign": "^4.1.2" } }, - "junk": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/junk/-/junk-3.1.0.tgz", - "integrity": "sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ==", - "dev": true - }, "just-extend": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.2.1.tgz", @@ -30023,21 +26997,18 @@ "json-buffer": "3.0.0" } }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - }, "kleur": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", "dev": true }, + "klona": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", + "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", + "dev": true + }, "known-css-properties": { "version": "0.24.0", "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.24.0.tgz", @@ -30219,12 +27190,6 @@ "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", "dev": true }, - "lolex": { - "version": "2.7.5", - "resolved": "https://registry.npmjs.org/lolex/-/lolex-2.7.5.tgz", - "integrity": "sha512-l9x0+1offnKKIzYVjyXU2SiwhXDLekRzKyhnbyldPHvC7BvLPVpdNUNR2KeMAiCN2D/kLNttZgQD5WjSxuBx3Q==", - "dev": true - }, "loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", @@ -30266,27 +27231,12 @@ "tmpl": "1.0.5" } }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "dev": true - }, "map-obj": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", "dev": true }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "dev": true, - "requires": { - "object-visit": "^1.0.0" - } - }, "math-random": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.4.tgz", @@ -30503,8 +27453,7 @@ "merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" }, "methods": { "version": "1.1.2", @@ -30512,35 +27461,6 @@ "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", "dev": true }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - } - } - }, "mime": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", @@ -30548,18 +27468,18 @@ "dev": true }, "mime-db": { - "version": "1.48.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.48.0.tgz", - "integrity": "sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ==", + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true }, "mime-types": { - "version": "2.1.31", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.31.tgz", - "integrity": "sha512-XGZnNzm3QvgKxa8dpzyhFTHmpP3l5YNusmne07VUOXxou9CqUqYa/HBy124RqtVh/O2pECas/MOcsDgpilPOPg==", + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, "requires": { - "mime-db": "1.48.0" + "mime-db": "1.52.0" } }, "mimic-fn": { @@ -30605,9 +27525,9 @@ "dev": true }, "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "requires": { "brace-expansion": "^1.1.7" } @@ -30615,7 +27535,8 @@ "minimist": { "version": "1.2.6", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true }, "minimist-options": { "version": "4.1.0", @@ -30636,27 +27557,6 @@ } } }, - "mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "dev": true, - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, "mkdirp": { "version": "0.5.5", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", @@ -30672,60 +27572,33 @@ "integrity": "sha512-I1mnb5xn4fO80BH9BLcF0yLypy2UKl+Cb01Fu0hJRkJjlCRtxZMWkTdAtDd5ZqCOxtCkhmRwyI57vWT+1iZ67w==", "dev": true }, + "mrmime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.0.tgz", + "integrity": "sha512-a70zx7zFfVO7XpnQ2IX1Myh9yY4UYvfld/dikWRnsXxbyvMcfz+u6UfgNAtH+k2QqtJuzVpv6eLTx1G2+WKZbQ==", + "dev": true + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "multicast-dns": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", - "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "version": "7.2.4", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.4.tgz", + "integrity": "sha512-XkCYOU+rr2Ft3LI6w4ye51M3VK31qJXFIxu0XLw169PtKG0Zx47OrXeVW/GCYOfpC9s1yyyf1S+L8/4LY0J9Zw==", "dev": true, "requires": { - "dns-packet": "^1.3.1", + "dns-packet": "^5.2.2", "thunky": "^1.0.2" } }, - "multicast-dns-service-types": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", - "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", - "dev": true - }, "nanoid": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.2.0.tgz", - "integrity": "sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.2.tgz", + "integrity": "sha512-CuHBogktKwpm5g2sRgv83jEy2ijFzBwMoYA60orPDR7ynsLijJDqgsi4RDGj3OJpy3Ieb+LYwiRmIOGyytgITA==", "dev": true }, - "nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - } - } - }, "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -30745,9 +27618,9 @@ } }, "negotiator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", "dev": true }, "neo-async": { @@ -30756,44 +27629,17 @@ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true }, - "nested-error-stacks": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.1.0.tgz", - "integrity": "sha512-AO81vsIO1k1sM4Zrd6Hu7regmJN1NSiAja10gc4bX3F0wd+9rQmcuHQaHVQCYIEC8iFXnE+mavh23GOt7wBgug==", - "dev": true - }, "nise": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/nise/-/nise-1.5.3.tgz", - "integrity": "sha512-Ymbac/94xeIrMf59REBPOv0thr+CJVFMhrlAkW/gjCIE58BGQdCj0x7KRCb3yz+Ga2Rz3E9XXSvUyyxqqhjQAQ==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.1.tgz", + "integrity": "sha512-yr5kW2THW1AkxVmCnKEh4nbYkJdB3I7LUkiUgOvEkOp414mc2UMaHMA7pjq1nYowhdoJZGwEKGaQVbxfpWj10A==", "dev": true, "requires": { - "@sinonjs/formatio": "^3.2.1", + "@sinonjs/commons": "^1.8.3", + "@sinonjs/fake-timers": ">=5", "@sinonjs/text-encoding": "^0.7.1", "just-extend": "^4.0.2", - "lolex": "^5.0.1", "path-to-regexp": "^1.7.0" - }, - "dependencies": { - "@sinonjs/formatio": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-3.2.2.tgz", - "integrity": "sha512-B8SEsgd8gArBLMD6zpRw3juQ2FVSsmdd7qlevyDqzS9WTCtvF55/gAL+h6gue8ZvPYcdiPdvueM/qm//9XzyTQ==", - "dev": true, - "requires": { - "@sinonjs/commons": "^1", - "@sinonjs/samsam": "^3.1.0" - } - }, - "lolex": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/lolex/-/lolex-5.1.2.tgz", - "integrity": "sha512-h4hmjAvHTmd+25JSwrtTIuwbKdwg5NzZVRMLn9saij4SZaepCrTCxPr35H/3bjwfMJtN+t3CX8672UIkglz28A==", - "dev": true, - "requires": { - "@sinonjs/commons": "^1.7.0" - } - } } }, "node-fetch": { @@ -30826,9 +27672,9 @@ } }, "node-forge": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.0.tgz", - "integrity": "sha512-08ARB91bUi6zNKzVmaj3QO7cr397uiDT2nJ63cHjyNtCTWIgvS47j3eT0WfzUwS9+6Z5YshRaoasFkXCKrIYbA==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", "dev": true }, "node-int64": { @@ -31030,28 +27876,6 @@ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "dev": true, - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, "object-inspect": { "version": "1.11.0", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", @@ -31073,15 +27897,6 @@ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" }, - "object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "dev": true, - "requires": { - "isobject": "^3.0.0" - } - }, "object.assign": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", @@ -31181,15 +27996,6 @@ } } }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, "object.values": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.4.tgz", @@ -31289,50 +28095,20 @@ } } }, - "p-all": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-all/-/p-all-2.1.0.tgz", - "integrity": "sha512-HbZxz5FONzz/z2gJfk6bFca0BCiSRF8jU3yCsWOen/vR6lZjfPOu/e7L3uFzTW1i0H8TlC3vqQstEJPQL4/uLA==", - "dev": true, - "requires": { - "p-map": "^2.0.0" - } - }, "p-cancelable": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", "dev": true }, - "p-event": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/p-event/-/p-event-4.2.0.tgz", - "integrity": "sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ==", - "dev": true, - "requires": { - "p-timeout": "^3.1.0" - } - }, - "p-filter": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-filter/-/p-filter-2.1.0.tgz", - "integrity": "sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==", - "dev": true, + "p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", "requires": { - "p-map": "^2.0.0" + "aggregate-error": "^3.0.0" } }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true - }, - "p-map": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==" - }, "p-retry": { "version": "4.6.1", "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.1.tgz", @@ -31343,15 +28119,6 @@ "retry": "^0.13.1" } }, - "p-timeout": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", - "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", - "dev": true, - "requires": { - "p-finally": "^1.0.0" - } - }, "package-json": { "version": "6.5.0", "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", @@ -31404,28 +28171,11 @@ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", "dev": true }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "dev": true - }, - "path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", - "dev": true - }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" }, - "path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=" - }, "path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", @@ -31468,24 +28218,6 @@ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==" }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "requires": { - "pinkie": "^2.0.0" - } - }, "pirates": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", @@ -31577,23 +28309,17 @@ "ms": "^2.1.1" } } - } - }, - "posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", - "dev": true + } }, "postcss": { - "version": "8.4.5", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.5.tgz", - "integrity": "sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==", + "version": "8.4.12", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.12.tgz", + "integrity": "sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg==", "dev": true, "requires": { - "nanoid": "^3.1.30", + "nanoid": "^3.3.1", "picocolors": "^1.0.0", - "source-map-js": "^1.0.1" + "source-map-js": "^1.0.2" } }, "postcss-media-query-parser": { @@ -31603,139 +28329,39 @@ "dev": true }, "postcss-modules-extract-imports": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz", - "integrity": "sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", "dev": true, - "requires": { - "postcss": "^7.0.5" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } + "requires": {} }, "postcss-modules-local-by-default": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-2.0.6.tgz", - "integrity": "sha512-oLUV5YNkeIBa0yQl7EYnxMgy4N6noxmiwZStaEJUSe2xPMcdNc8WmBQuQCx18H5psYbVxz8zoHk0RAAYZXP9gA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", + "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", "dev": true, "requires": { - "postcss": "^7.0.6", - "postcss-selector-parser": "^6.0.0", - "postcss-value-parser": "^3.3.1" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" } }, "postcss-modules-scope": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz", - "integrity": "sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", + "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", "dev": true, "requires": { - "postcss": "^7.0.6", - "postcss-selector-parser": "^6.0.0" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } + "postcss-selector-parser": "^6.0.4" } }, "postcss-modules-values": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-2.0.0.tgz", - "integrity": "sha512-Ki7JZa7ff1N3EIMlPnGTZfUMe69FFwiQPnVSXC9mnn3jozCRBYIxiZd44yJOV2AmabOo4qFf8s0dC/+lweG7+w==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", "dev": true, "requires": { - "icss-replace-symbols": "^1.1.0", - "postcss": "^7.0.6" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } + "icss-utils": "^5.0.0" } }, "postcss-resolve-nested-selector": { @@ -31769,9 +28395,9 @@ } }, "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", "dev": true }, "prelude-ls": { @@ -31848,13 +28474,13 @@ } }, "prop-types": { - "version": "15.7.2", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", - "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", "requires": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", - "react-is": "^16.8.1" + "react-is": "^16.13.1" }, "dependencies": { "react-is": { @@ -31912,11 +28538,16 @@ "escape-goat": "^2.0.0" } }, + "qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==", + "dev": true + }, "queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" }, "quick-lru": { "version": "4.0.1", @@ -31987,13 +28618,13 @@ "dev": true }, "raw-body": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", - "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.3.tgz", + "integrity": "sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g==", "dev": true, "requires": { - "bytes": "3.1.0", - "http-errors": "1.7.2", + "bytes": "3.1.2", + "http-errors": "1.8.1", "iconv-lite": "0.4.24", "unpipe": "1.0.0" } @@ -32080,9 +28711,9 @@ "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" }, "react-modal": { - "version": "3.14.3", - "resolved": "https://registry.npmjs.org/react-modal/-/react-modal-3.14.3.tgz", - "integrity": "sha512-+C2KODVKyu20zHXPJxfOOcf571L1u/EpFlH+oS/3YDn8rgVE51QZuxuuIwabJ8ZFnOEHaD+r6XNjqwtxZnXO0g==", + "version": "3.14.4", + "resolved": "https://registry.npmjs.org/react-modal/-/react-modal-3.14.4.tgz", + "integrity": "sha512-8surmulejafYCH9wfUmFyj4UfbSJwjcgbS9gf3oOItu4Hwd6ivJyVBETI0yHRhpJKCLZMUtnhzk76wXTsNL6Qg==", "requires": { "exenv": "^1.2.0", "prop-types": "^15.7.2", @@ -32091,31 +28722,24 @@ } }, "react-redux": { - "version": "7.2.4", - "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-7.2.4.tgz", - "integrity": "sha512-hOQ5eOSkEJEXdpIKbnRyl04LhaWabkDPV+Ix97wqQX3T3d2NQ8DUblNXXtNMavc7DpswyQM6xfaN4HQDKNY2JA==", + "version": "7.2.8", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-7.2.8.tgz", + "integrity": "sha512-6+uDjhs3PSIclqoCk0kd6iX74gzrGc3W5zcAjbrFgEdIjRSQObdIwfx80unTkVUYvbQ95Y8Av3OvFHq1w5EOUw==", "requires": { - "@babel/runtime": "^7.12.1", - "@types/react-redux": "^7.1.16", + "@babel/runtime": "^7.15.4", + "@types/react-redux": "^7.1.20", "hoist-non-react-statics": "^3.3.2", "loose-envify": "^1.4.0", "prop-types": "^15.7.2", - "react-is": "^16.13.1" - }, - "dependencies": { - "react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - } + "react-is": "^17.0.2" } }, "react-router": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.2.0.tgz", - "integrity": "sha512-smz1DUuFHRKdcJC0jobGo8cVbhO3x50tCL4icacOlcwDOEQPq4TMqwx3sY1TP+DvtTgz4nm3thuo7A+BK2U0Dw==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.2.1.tgz", + "integrity": "sha512-lIboRiOtDLFdg1VTemMwud9vRVuOCZmUIT/7lUoZiSpPODiiH1UQlfXy+vPLC/7IWdFYnhRwAyNqA/+I7wnvKQ==", "requires": { - "@babel/runtime": "^7.1.2", + "@babel/runtime": "^7.12.13", "history": "^4.9.0", "hoist-non-react-statics": "^3.1.0", "loose-envify": "^1.3.1", @@ -32135,23 +28759,23 @@ } }, "react-router-dom": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.2.0.tgz", - "integrity": "sha512-gxAmfylo2QUjcwxI63RhQ5G85Qqt4voZpUXSEqCwykV0baaOTQDR1f0PmY8AELqIyVc0NEZUj0Gov5lNGcXgsA==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.3.0.tgz", + "integrity": "sha512-ObVBLjUZsphUUMVycibxgMdh5jJ1e3o+KpAZBVeHcNQZ4W+uUGGWsokurzlF4YOldQYRQL4y6yFRWM4m3svmuQ==", "requires": { - "@babel/runtime": "^7.1.2", + "@babel/runtime": "^7.12.13", "history": "^4.9.0", "loose-envify": "^1.3.1", "prop-types": "^15.6.2", - "react-router": "5.2.0", + "react-router": "5.2.1", "tiny-invariant": "^1.0.2", "tiny-warning": "^1.0.0" } }, "react-rte": { - "version": "0.16.3", - "resolved": "https://registry.npmjs.org/react-rte/-/react-rte-0.16.3.tgz", - "integrity": "sha512-IDZtdd+jjtd8zqrlEeO+DdujANdM9cy7o5AAKKzcSoW77r7U5PVicpkuWu5as3rzWRqlfQqPpjXq/PEFTRTmNA==", + "version": "0.16.5", + "resolved": "https://registry.npmjs.org/react-rte/-/react-rte-0.16.5.tgz", + "integrity": "sha512-KoUBbl8jgAaxQIRpAfnDYjcx7Xlc/4EsgASxYKPIj/HzPuSgBxOlkPAK73V5fe7aHVhq0IfvNvhmNNpoDLQX4A==", "requires": { "babel-runtime": "^6.23.0", "class-autobind": "^0.1.4", @@ -32267,9 +28891,9 @@ } }, "redux": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/redux/-/redux-4.1.0.tgz", - "integrity": "sha512-uI2dQN43zqLWCt6B/BMGRMY6db7TTY4qeHHfGeKb3EOhmOKjU3KdWvNLJyqaHRksv/ErdNH7cFZWg9jXtewy4g==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/redux/-/redux-4.1.2.tgz", + "integrity": "sha512-SH8PglcebESbd/shgf6mii6EIoRM0zrQyjcuQ+ojmfxjTtE0z9Y8pa62iA/OJ58qjP6j27uyW4kUF4jl/jd6sw==", "requires": { "@babel/runtime": "^7.9.2" } @@ -32306,9 +28930,10 @@ } }, "redux-thunk": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.3.0.tgz", - "integrity": "sha512-km6dclyFnmcvxhAcrQV2AkZmPQjzPDjgVlQtR0EQjxZPyJ0BnMf3in1ryuR8A2qU0HldVRfxYXbFSKlI3N7Slw==" + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.4.1.tgz", + "integrity": "sha512-OOYGNY5Jy2TWvTL1KgAlVy6dcx3siPJ1wTq741EPyUKfn6W6nChdICjZwCd0p8AZBs5kWpZlbkXW2nE/zjUa+Q==", + "requires": {} }, "reflect.ownkeys": { "version": "0.2.0", @@ -32342,16 +28967,6 @@ "@babel/runtime": "^7.8.4" } }, - "regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - } - }, "regexp.prototype.flags": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz", @@ -32419,18 +29034,6 @@ } } }, - "repeat-element": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", - "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", - "dev": true - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true - }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -32450,9 +29053,9 @@ "dev": true }, "reselect": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/reselect/-/reselect-4.0.0.tgz", - "integrity": "sha512-qUgANli03jjAyGlnbYVAV5vvnOmJnODyABz51RdBN7M4WaVu8mecZWgyQNkG8Yqe3KRGRt0l4K4B3XVEULC4CA==" + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/reselect/-/reselect-4.1.5.tgz", + "integrity": "sha512-uVdlz8J7OO+ASpBYoz1Zypgx0KasCY20H+N8JD13oUMtPvSHQuscrHop4KbXrbsBcdB9Ds7lVK7eRkBIfO43vQ==" }, "resolve": { "version": "1.20.0", @@ -32481,12 +29084,6 @@ "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz", "integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==" }, - "resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", - "dev": true - }, "resolve.exports": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz", @@ -32517,8 +29114,7 @@ "reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" }, "rifm": { "version": "0.7.0", @@ -32529,9 +29125,9 @@ } }, "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "requires": { "glob": "^7.1.3" } @@ -32550,7 +29146,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, "requires": { "queue-microtask": "^1.2.2" } @@ -32577,31 +29172,16 @@ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, - "safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "dev": true, - "requires": { - "ret": "~0.1.10" - } - }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true }, - "samsam": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/samsam/-/samsam-1.3.0.tgz", - "integrity": "sha512-1HwIYD/8UlOtFS3QO3w7ey+SdSDFE4HRNLZoZRYVQefrOY3l17epswImeB1ijgJFQJodIaHcwkp3r/myBjFVbg==", - "dev": true - }, "sass": { - "version": "1.49.9", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.49.9.tgz", - "integrity": "sha512-YlYWkkHP9fbwaFRZQRXgDi3mXZShslVmmo+FVK3kHLUELHHEYrCmL1x6IUjC7wLS6VuJSAFXRQS/DxdsC4xL1A==", + "version": "1.50.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.50.0.tgz", + "integrity": "sha512-cLsD6MEZ5URXHStxApajEh7gW189kkjn4Rc8DQweMyF+o5HF5nfEz8QYLMlPsTOD88DknatTmBWkOcw5/LnJLQ==", "requires": { "chokidar": ">=3.0.0 <4.0.0", "immutable": "^4.0.0", @@ -32699,16 +29279,13 @@ } }, "sass-loader": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-7.3.1.tgz", - "integrity": "sha512-tuU7+zm0pTCynKYHpdqaPpe+MMTQ76I9TPZ7i4/5dZsigE350shQWe5EZNl5dBidM49TPET75tNqRbcsUZWeNA==", + "version": "12.6.0", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.6.0.tgz", + "integrity": "sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA==", "dev": true, "requires": { - "clone-deep": "^4.0.1", - "loader-utils": "^1.0.1", - "neo-async": "^2.5.0", - "pify": "^4.0.1", - "semver": "^6.3.0" + "klona": "^2.0.4", + "neo-async": "^2.6.2" } }, "saxes": { @@ -32752,12 +29329,12 @@ "dev": true }, "selfsigned": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.0.tgz", - "integrity": "sha512-cUdFiCbKoa1mZ6osuJs2uDHrs0k0oprsKveFiiaBKCNq3SYyb5gs2HxhQyDNLCmL51ZZThqi4YNDpCK6GOP1iQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.1.tgz", + "integrity": "sha512-LmME957M1zOsUhG+67rAjKfiWFox3SBxE/yymatMZsAx+oMrJ0YQ8AToOnyCm7xbeg2ep37IHLxdu0o2MavQOQ==", "dev": true, "requires": { - "node-forge": "^1.2.0" + "node-forge": "^1" } }, "semver": { @@ -32775,9 +29352,9 @@ } }, "send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", - "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "version": "0.17.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz", + "integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==", "dev": true, "requires": { "debug": "2.6.9", @@ -32787,9 +29364,9 @@ "escape-html": "~1.0.3", "etag": "~1.8.1", "fresh": "0.5.2", - "http-errors": "~1.7.2", + "http-errors": "1.8.1", "mime": "1.6.0", - "ms": "2.1.1", + "ms": "2.1.3", "on-finished": "~2.3.0", "range-parser": "~1.2.1", "statuses": "~1.5.0" @@ -32813,9 +29390,9 @@ } }, "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true } } @@ -32886,38 +29463,15 @@ } }, "serve-static": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", - "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz", + "integrity": "sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==", "dev": true, "requires": { "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.17.1" - } - }, - "set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } + "send": "0.17.2" } }, "setimmediate": { @@ -32926,9 +29480,9 @@ "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" }, "setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", "dev": true }, "shallow-clone": { @@ -32981,24 +29535,60 @@ } }, "signal-exit": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", - "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, "sinon": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-5.1.1.tgz", - "integrity": "sha512-h/3uHscbt5pQNxkf7Y/Lb9/OM44YNCicHakcq73ncbrIS8lXg+ZGOZbtuU+/km4YnyiCYfQQEwANaReJz7KDfw==", + "version": "13.0.2", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-13.0.2.tgz", + "integrity": "sha512-KvOrztAVqzSJWMDoxM4vM+GPys1df2VBoXm+YciyB/OLMamfS3VXh3oGh5WtrAGSzrgczNWFFY22oKb7Fi5eeA==", "dev": true, "requires": { - "@sinonjs/formatio": "^2.0.0", - "diff": "^3.5.0", - "lodash.get": "^4.4.2", - "lolex": "^2.4.2", - "nise": "^1.3.3", - "supports-color": "^5.4.0", - "type-detect": "^4.0.8" + "@sinonjs/commons": "^1.8.3", + "@sinonjs/fake-timers": "^9.1.2", + "@sinonjs/samsam": "^6.1.1", + "diff": "^5.0.0", + "nise": "^5.1.1", + "supports-color": "^7.2.0" + }, + "dependencies": { + "@sinonjs/fake-timers": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz", + "integrity": "sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.7.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "sirv": { + "version": "1.0.19", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-1.0.19.tgz", + "integrity": "sha512-JuLThK3TnZG1TAKDwNIqNq6QA2afLOCcm+iE8D1Kj3GA40pSPsxQjjJl0J8X3tsR7T+CP1GavpzLwYkgVLWrZQ==", + "dev": true, + "requires": { + "@polka/url": "^1.0.0-next.20", + "mrmime": "^1.0.0", + "totalist": "^1.0.0" } }, "sisteransi": { @@ -33010,8 +29600,7 @@ "slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" }, "slice-ansi": { "version": "4.0.0", @@ -33037,146 +29626,29 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - } - } - }, - "smoothscroll-polyfill": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/smoothscroll-polyfill/-/smoothscroll-polyfill-0.4.4.tgz", - "integrity": "sha512-TK5ZA9U5RqCwMpfoMq/l1mrH0JAR7y7KRvOBx0n2869aLxch+gT9GhN3yUfjiw+d/DiF1mKo14+hd62JyMmoBg==" - }, - "snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dev": true, - "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dev": true, - "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } + "dev": true }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "color-name": "~1.1.4" } }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true } } }, - "snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dev": true, - "requires": { - "kind-of": "^3.2.0" - } + "smoothscroll-polyfill": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/smoothscroll-polyfill/-/smoothscroll-polyfill-0.4.4.tgz", + "integrity": "sha512-TK5ZA9U5RqCwMpfoMq/l1mrH0JAR7y7KRvOBx0n2869aLxch+gT9GhN3yUfjiw+d/DiF1mKo14+hd62JyMmoBg==" }, "sockjs": { "version": "0.3.24", @@ -33187,14 +29659,6 @@ "faye-websocket": "^0.11.3", "uuid": "^8.3.2", "websocket-driver": "^0.7.4" - }, - "dependencies": { - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true - } } }, "source-map": { @@ -33207,19 +29671,6 @@ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" }, - "source-map-resolve": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", - "dev": true, - "requires": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, "source-map-support": { "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", @@ -33238,12 +29689,6 @@ } } }, - "source-map-url": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", - "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", - "dev": true - }, "spawn-command": { "version": "0.0.2-1", "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz", @@ -33328,15 +29773,6 @@ "integrity": "sha512-1klA3Gi5PD1Wv9Q0wUoOQN1IWAuPu0D1U03ThXTr0cJ20+/iq2tHSDnK7Kk/0LXJ1ztUB2/1Os0wKmfyNgUQfg==", "dev": true }, - "split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.0" - } - }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -33365,27 +29801,6 @@ } } }, - "static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "dev": true, - "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, "statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", @@ -33580,27 +29995,11 @@ "dev": true }, "style-loader": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.23.1.tgz", - "integrity": "sha512-XK+uv9kWwhZMZ1y7mysB+zoihsEj4wneFWAS5qoiLwzW0WzSqMrrsIy+a3zkQJq0ipFtBpX5W3MqyRIBF/WFGg==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.1.tgz", + "integrity": "sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ==", "dev": true, - "requires": { - "loader-utils": "^1.1.0", - "schema-utils": "^1.0.0" - }, - "dependencies": { - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - } - } + "requires": {} }, "style-search": { "version": "0.1.0", @@ -33609,15 +30008,16 @@ "dev": true }, "stylelint": { - "version": "14.3.0", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-14.3.0.tgz", - "integrity": "sha512-PZXSwtJe4f4qBPWBwAbHL0M0Qjrv8iHN+cLpUNsffaVMS3YzpDDRI73+2lsqLAYfQEzxRwpll6BDKImREbpHWA==", + "version": "14.6.1", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-14.6.1.tgz", + "integrity": "sha512-FfNdvZUZdzh9KDQxDnO7Opp+prKh8OQVuSW8S13cBtxrooCbm6J6royhUeb++53WPMt04VB+ZbOz/QmzAijs6Q==", "dev": true, "requires": { "balanced-match": "^2.0.0", "colord": "^2.9.2", "cosmiconfig": "^7.0.1", - "debug": "^4.3.3", + "css-functions-list": "^3.0.1", + "debug": "^4.3.4", "execall": "^2.0.0", "fast-glob": "^3.2.11", "fastest-levenshtein": "^1.0.12", @@ -33638,7 +30038,7 @@ "normalize-path": "^3.0.0", "normalize-selector": "^0.2.0", "picocolors": "^1.0.0", - "postcss": "^8.4.5", + "postcss": "^8.4.12", "postcss-media-query-parser": "^0.2.3", "postcss-resolve-nested-selector": "^0.1.1", "postcss-safe-parser": "^6.0.0", @@ -33653,7 +30053,7 @@ "svg-tags": "^1.0.0", "table": "^6.8.0", "v8-compile-cache": "^2.3.0", - "write-file-atomic": "^4.0.0" + "write-file-atomic": "^4.0.1" }, "dependencies": { "ansi-regex": { @@ -33662,12 +30062,6 @@ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true }, - "array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true - }, "balanced-match": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz", @@ -33683,15 +30077,6 @@ "fill-range": "^7.0.1" } }, - "debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, "fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -33721,20 +30106,6 @@ "which": "^1.3.1" } }, - "globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - } - }, "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -33773,12 +30144,6 @@ "util-deprecate": "^1.0.2" } }, - "postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true - }, "strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -33798,15 +30163,13 @@ } }, "write-file-atomic": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.0.tgz", - "integrity": "sha512-JhcWoKffJNF7ivO9yflBhc7tn3wKnokMUfWpBriM9yCXj4ePQnRPcWglBkkg1AHC8nsW/EfxwwhqsLtOy59djA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.1.tgz", + "integrity": "sha512-nSKUxgAbyioruk6hU87QzVbY279oYT6uiwgDoujth2ju4mJ+TZau7SQBhtbTmUyuNYTuXnSyRn66FV0+eCgcrQ==", "dev": true, "requires": { "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^4.0.0" + "signal-exit": "^3.0.7" } } } @@ -33849,9 +30212,9 @@ } }, "stylelint-scss": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-4.1.0.tgz", - "integrity": "sha512-BNYTo7MMamhFOlcaAWp2dMpjg6hPyM/FFqfDIYzmYVLMmQJqc8lWRIiTqP4UX5bresj9Vo0dKC6odSh43VP2NA==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-4.2.0.tgz", + "integrity": "sha512-HHHMVKJJ5RM9pPIbgJ/XA67h9H0407G68Rm69H4fzFbFkyDMcTV1Byep3qdze5+fJ3c0U7mJrbj6S0Fg072uZA==", "dev": true, "requires": { "lodash": "^4.17.21", @@ -33859,14 +30222,6 @@ "postcss-resolve-nested-selector": "^0.1.1", "postcss-selector-parser": "^6.0.6", "postcss-value-parser": "^4.1.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true - } } }, "supports-color": { @@ -33995,6 +30350,12 @@ } } }, + "tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true + }, "tar-stream": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", @@ -34138,47 +30499,22 @@ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" }, - "to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, "to-readable-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", "dev": true }, - "to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dev": true, - "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - }, "toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true + }, + "totalist": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-1.1.0.tgz", + "integrity": "sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g==", "dev": true }, "touch": { @@ -34222,12 +30558,6 @@ "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", "dev": true }, - "tryer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz", - "integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==", - "dev": true - }, "tslib": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", @@ -34265,12 +30595,6 @@ "mime-types": "~2.1.24" } }, - "typedarray-to-buffer": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-4.0.0.tgz", - "integrity": "sha512-6dOYeZfS3O9RtRD1caom0sMxgK59b27+IwoNy8RDPsmslSGOyU+mpTamlaIW7aNKi90ZQZ9DFaZL3YRoiSCULQ==", - "dev": true - }, "typescript-compare": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/typescript-compare/-/typescript-compare-0.0.2.tgz", @@ -34316,9 +30640,9 @@ "dev": true }, "underscore": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.1.tgz", - "integrity": "sha512-hzSoAVtJF+3ZtiFX0VgfFPHEDRm7Y/QPjGyNo4TVdnDTdft3tr8hEkD25a1jC+TjTuE7tkHGKkhwCgs9dgBB2g==" + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.2.tgz", + "integrity": "sha512-ekY1NhRzq0B08g4bGuX4wd2jZx5GnKz6mKSqFL4nqBlfyMGiG10gDFhDTMEfYmDL6Jy0FUIZp7wiRB+0BP7J2g==" }, "unicode-canonical-property-names-ecmascript": { "version": "2.0.0", @@ -34344,18 +30668,6 @@ "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==" }, - "union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - } - }, "unique-string": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", @@ -34377,46 +30689,6 @@ "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", "dev": true }, - "unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "dev": true, - "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "dev": true, - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", - "dev": true - } - } - }, "update-notifier": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz", @@ -34514,12 +30786,6 @@ "punycode": "^2.1.0" } }, - "urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "dev": true - }, "url-parse-lax": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", @@ -34529,12 +30795,6 @@ "prepend-http": "^2.0.0" } }, - "use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "dev": true - }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -34548,9 +30808,9 @@ "dev": true }, "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" }, "v8-compile-cache": { "version": "2.3.0", @@ -34664,9 +30924,9 @@ "dev": true }, "webpack": { - "version": "5.69.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.69.1.tgz", - "integrity": "sha512-+VyvOSJXZMT2V5vLzOnDuMz5GxEqLk7hKWQ56YxPW/PQRUuKimPqmEIJOx8jHYeyo65pKbapbW464mvsKbaj4A==", + "version": "5.72.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.72.0.tgz", + "integrity": "sha512-qmSmbspI0Qo5ld49htys8GY9XhS9CGqFoHTsOVAnjBdg0Zn79y135R+k4IR4rKK6+eKaabMhJwiVB7xw0SJu5w==", "dev": true, "requires": { "@types/eslint-scope": "^3.7.3", @@ -34678,7 +30938,7 @@ "acorn-import-assertions": "^1.7.6", "browserslist": "^4.14.5", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.8.3", + "enhanced-resolve": "^5.9.2", "es-module-lexer": "^0.9.0", "eslint-scope": "5.1.1", "events": "^3.2.0", @@ -34695,16 +30955,6 @@ "webpack-sources": "^3.2.3" }, "dependencies": { - "enhanced-resolve": { - "version": "5.9.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.1.tgz", - "integrity": "sha512-jdyZMwCQ5Oj4c5+BTnkxPgDZO/BJzh/ADDmKebayyzNwjVX1AFCeGkOfxNx0mHi2+8BKC5VxUYiw3TIvoT7vhw==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - } - }, "schema-utils": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", @@ -34715,67 +30965,100 @@ "ajv": "^6.12.5", "ajv-keywords": "^3.5.2" } - }, - "tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true } } }, "webpack-bundle-analyzer": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.9.0.tgz", - "integrity": "sha512-Ob8amZfCm3rMB1ScjQVlbYYUEJyEjdEtQ92jqiFUYt5VkEeO2v5UMbv49P/gnmCZm3A6yaFQzCBvpZqN4MUsdA==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.5.0.tgz", + "integrity": "sha512-GUMZlM3SKwS8Z+CKeIFx7CVoHn3dXFcUAjT/dcZQQmfSZGvitPfMob2ipjai7ovFFqPvTqkEZ/leL4O0YOdAYQ==", "dev": true, "requires": { - "acorn": "^7.1.1", - "acorn-walk": "^7.1.1", - "bfj": "^6.1.1", - "chalk": "^2.4.1", - "commander": "^2.18.0", - "ejs": "^2.6.1", - "express": "^4.16.3", - "filesize": "^3.6.1", - "gzip-size": "^5.0.0", - "lodash": "^4.17.19", - "mkdirp": "^0.5.1", - "opener": "^1.5.1", - "ws": "^6.0.0" + "acorn": "^8.0.4", + "acorn-walk": "^8.0.0", + "chalk": "^4.1.0", + "commander": "^7.2.0", + "gzip-size": "^6.0.0", + "lodash": "^4.17.20", + "opener": "^1.5.2", + "sirv": "^1.0.7", + "ws": "^7.3.1" }, "dependencies": { - "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", "dev": true }, - "gzip-size": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-5.1.1.tgz", - "integrity": "sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==", + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { - "duplexer": "^0.1.1", - "pify": "^4.0.1" + "color-convert": "^2.0.1" } }, - "ws": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", - "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { - "async-limiter": "~1.0.0" + "has-flag": "^4.0.0" } + }, + "ws": { + "version": "7.5.7", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz", + "integrity": "sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==", + "dev": true, + "requires": {} } } }, "webpack-bundle-tracker": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/webpack-bundle-tracker/-/webpack-bundle-tracker-1.4.0.tgz", - "integrity": "sha512-5dbAdtS+DbvJfXIXfCytRv5D4I2EWBdBBVOzDMpSa52goTroryWcH4lm3h2qwVqSQEgTTWCkgLGGlZYZmYRM9g==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/webpack-bundle-tracker/-/webpack-bundle-tracker-1.5.0.tgz", + "integrity": "sha512-p7Oil+O5XzzwaoWi/FKfgn6HXGRpLnKuppWRficzTSHx9LdgmooVll+uYvU6DZPvKQkwJl0AyFpsBB/WTbEMMQ==", "dev": true, "requires": { "lodash.assign": "^4.2.0", @@ -34803,15 +31086,15 @@ } }, "webpack-cli": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.9.0.tgz", - "integrity": "sha512-n/jZZBMzVEl4PYIBs+auy2WI0WTQ74EnJDiyD98O2JZY6IVIHJNitkYp/uTXOviIOMfgzrNvC9foKv/8o8KSZw==", + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.9.2.tgz", + "integrity": "sha512-m3/AACnBBzK/kMTcxWHcZFPrw/eQuY4Df1TxvIWfWM2x7mRqBQCqKEd96oCUa9jkapLBaFfRce33eGDb4Pr7YQ==", "dev": true, "requires": { "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^1.1.0", - "@webpack-cli/info": "^1.4.0", - "@webpack-cli/serve": "^1.6.0", + "@webpack-cli/configtest": "^1.1.1", + "@webpack-cli/info": "^1.4.1", + "@webpack-cli/serve": "^1.6.1", "colorette": "^2.0.14", "commander": "^7.0.0", "execa": "^5.0.0", @@ -34819,7 +31102,6 @@ "import-local": "^3.0.2", "interpret": "^2.2.0", "rechoir": "^0.7.0", - "v8-compile-cache": "^2.2.0", "webpack-merge": "^5.7.3" }, "dependencies": { @@ -34898,9 +31180,9 @@ } }, "webpack-dev-server": { - "version": "4.7.4", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.7.4.tgz", - "integrity": "sha512-nfdsb02Zi2qzkNmgtZjkrMOcXnYZ6FLKcQwpxT7MvmHKc+oTtDsBju8j+NMyAygZ9GW1jMEUpy3itHtqgEhe1A==", + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.8.1.tgz", + "integrity": "sha512-dwld70gkgNJa33czmcj/PlKY/nOy/BimbrgZRaR9vDATBQAYgLzggR0nxDtPLJiLrMgZwbE6RRfJ5vnBBasTyg==", "dev": true, "requires": { "@types/bonjour": "^3.5.9", @@ -34908,29 +31190,28 @@ "@types/express": "^4.17.13", "@types/serve-index": "^1.9.1", "@types/sockjs": "^0.3.33", - "@types/ws": "^8.2.2", + "@types/ws": "^8.5.1", "ansi-html-community": "^0.0.8", - "bonjour": "^3.5.0", + "bonjour-service": "^1.0.11", "chokidar": "^3.5.3", "colorette": "^2.0.10", "compression": "^1.7.4", "connect-history-api-fallback": "^1.6.0", "default-gateway": "^6.0.3", - "del": "^6.0.0", - "express": "^4.17.1", + "express": "^4.17.3", "graceful-fs": "^4.2.6", "html-entities": "^2.3.2", - "http-proxy-middleware": "^2.0.0", + "http-proxy-middleware": "^2.0.3", "ipaddr.js": "^2.0.1", "open": "^8.0.9", "p-retry": "^4.5.0", "portfinder": "^1.0.28", + "rimraf": "^3.0.2", "schema-utils": "^4.0.0", - "selfsigned": "^2.0.0", + "selfsigned": "^2.0.1", "serve-index": "^1.9.1", "sockjs": "^0.3.21", "spdy": "^4.0.2", - "strip-ansi": "^7.0.0", "webpack-dev-middleware": "^5.3.1", "ws": "^8.4.2" }, @@ -34956,12 +31237,6 @@ "fast-deep-equal": "^3.1.3" } }, - "ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true - }, "anymatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", @@ -34972,12 +31247,6 @@ "picomatch": "^2.0.4" } }, - "array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true - }, "binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -35015,22 +31284,6 @@ "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", "dev": true }, - "del": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/del/-/del-6.0.0.tgz", - "integrity": "sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ==", - "dev": true, - "requires": { - "globby": "^11.0.1", - "graceful-fs": "^4.2.4", - "is-glob": "^4.0.1", - "is-path-cwd": "^2.2.0", - "is-path-inside": "^3.0.2", - "p-map": "^4.0.0", - "rimraf": "^3.0.2", - "slash": "^3.0.0" - } - }, "fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -35056,20 +31309,6 @@ "is-glob": "^4.0.1" } }, - "globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - } - }, "ipaddr.js": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", @@ -35091,27 +31330,12 @@ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true }, - "is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true - }, "json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true }, - "p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "requires": { - "aggregate-error": "^3.0.0" - } - }, "readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", @@ -35121,15 +31345,6 @@ "picomatch": "^2.2.1" } }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, "schema-utils": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", @@ -35142,15 +31357,6 @@ "ajv-keywords": "^5.0.0" } }, - "strip-ansi": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", - "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", - "dev": true, - "requires": { - "ansi-regex": "^6.0.1" - } - }, "to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", diff --git a/package.json b/package.json index aed2dc262189ab4cdda7b52dbfe39e19197e48dc..d7aa061fe3dda9e7e60fb57f91cae650d0056f09 100644 --- a/package.json +++ b/package.json @@ -11,84 +11,84 @@ ], "dependencies": { "@date-io/date-fns": "^1.3.13", - "@material-ui/core": "^4.11.4", - "@material-ui/icons": "^4.9.1", - "@material-ui/lab": "^4.0.0-alpha.58", + "@material-ui/core": "^4.12.4", + "@material-ui/icons": "^4.11.3", + "@material-ui/lab": "^4.0.0-alpha.61", "@material-ui/pickers": "^3.3.10", - "@rooks/use-interval": "^3.0.1", + "@rooks/use-interval": "^4.11.2", "@svgr/webpack": "^6.2.1", - "@tinymce/tinymce-react": "^3.12.6", - "connected-react-router": "^6.9.1", - "core-js": "^3.15.2", - "date-fns": "^2.22.1", - "del": "^4.1.1", + "@tinymce/tinymce-react": "^3.14.0", + "connected-react-router": "^6.9.2", + "core-js": "^3.21.1", + "date-fns": "^2.28.0", + "del": "^6.0.0", "detect-node": "^2.1.0", "humps": "^2.0.1", "invariant": "^2.2.4", - "js-cookie": "^2.2.0", + "js-cookie": "^2.2.1", "lodash.isequal": "^4.5.0", "lodash.pick": "^4.4.0", "prop-types": "^15.7.2", "react": "^16.14.0", "react-dom": "^16.14.0", - "react-modal": "^3.14.3", - "react-redux": "^7.2.4", - "react-router-dom": "^5.2.0", - "react-rte": "^0.16.3", + "react-modal": "^3.14.4", + "react-redux": "^7.2.8", + "react-router-dom": "^5.3.0", + "react-rte": "^0.16.5", "react-transition-group": "^4.4.2", "react-window-size-listener": "^1.2.3", - "redux": "^4.1.0", + "redux": "^4.1.2", "redux-logger": "^3.0.6", "redux-mock-store": "^1.5.4", "redux-saga": "^1.1.3", - "redux-thunk": "^2.3.0", - "reselect": "^4.0.0", + "redux-thunk": "^2.4.1", + "reselect": "^4.1.5", "resolve-cwd": "^3.0.0", - "sass": "^1.49.9", + "sass": "^1.50.0", "seamless-immutable": "^7.1.4", "smoothscroll-polyfill": "^0.4.4", - "underscore": "^1.13.1", - "uuid": "^3.3.2", + "underscore": "^1.13.2", + "uuid": "^8.3.2", "validate.js": "^0.13.1" }, "devDependencies": { - "@babel/core": "^7.16.12", - "@babel/eslint-parser": "^7.16.5", + "@babel/core": "^7.17.9", + "@babel/eslint-parser": "^7.17.0", "@babel/plugin-proposal-class-properties": "^7.14.5", "@babel/preset-env": "^7.14.7", - "@babel/preset-react": "^7.14.5", + "@babel/preset-react": "^7.16.7", "babel-jest": "^27.5.1", - "babel-loader": "^8.2.2", - "concurrently": "^7.0.0", - "css-loader": "^2.1.1", + "babel-loader": "^8.2.4", + "concurrently": "^7.1.0", + "css-loader": "^6.7.1", "enzyme": "^3.3.0", "enzyme-adapter-react-16": "^1.1.1", "enzyme-to-json": "^3.6.2", - "eslint": "^8.7.0", - "eslint-plugin-react": "^7.28.0", - "eslint-webpack-plugin": "^2.5.4", + "eslint": "^8.13.0", + "eslint-plugin-react": "^7.29.4", + "eslint-webpack-plugin": "^3.1.1", "extra-watch-webpack-plugin": "^1.0.3", - "filemanager-webpack-plugin": "^6.1.7", + "filemanager-webpack-plugin": "^7.0.0-beta.0", "identity-obj-proxy": "^3.0.0", "istanbul-reports": "^3.0.2", "jest": "^27.5.1", "jsdom": "19.0.0", "jsdom-global": "3.0.2", "nodemon": "^2.0.15", - "postcss": "^8.4.5", + "postcss": "^8.4.12", "react-hot-loader": "^4.8.4", "redux-devtools-extension": "^2.13.9", - "sass-loader": "^7.1.0", - "sinon": "^5.0.7", - "style-loader": "^0.23.1", - "stylelint": "^14.3.0", + "sass-loader": "^12.6.0", + "sinon": "^13.0.2", + "style-loader": "^3.3.1", + "stylelint": "^14.6.1", "stylelint-config-standard-scss": "^3.0.0", - "stylelint-scss": "^4.1.0", - "webpack": "^5.69.1", - "webpack-bundle-analyzer": "^3.9.0", - "webpack-bundle-tracker": "^1.4.0", - "webpack-cli": "4.9.0", - "webpack-dev-server": "4.7.4" + "stylelint-scss": "^4.2.0", + "webpack": "^5.72.0", + "webpack-bundle-analyzer": "^4.5.0", + "webpack-bundle-tracker": "^1.5.0", + "webpack-cli": "4.9.2", + "webpack-dev-server": "4.8.1" }, "scripts": { "heroku-postbuild": "npm run build", diff --git a/public/sandbox_db.dump b/public/sandbox_db.dump index 8b24fd9194e60996e843bb56a057f7297acde19d..06edaee350b1ae254fff6de5f7f35cb88cddb11c 100644 Binary files a/public/sandbox_db.dump and b/public/sandbox_db.dump differ diff --git a/requirements.txt b/requirements.txt index e8a75a81f768a8f9611f51c05d08c5cfe67656db..bad1dafa298265c3a425c49f12fa95efe39a375b 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,6 +4,7 @@ sentry-sdk==1.5.0 # Production dependencies Babel==2.9.1 +bleach==4.1.0 boto3==1.20.22 celery==5.2.2 dj-database-url==0.5.0 @@ -23,12 +24,13 @@ django-redis==5.1.0 django-referrer-policy==1.0 django-salesforce==4.0 django-select2==7.9.0 +django-slack==5.17.7 django-storages==1.12.3 django-tables2==2.4.1 django-tinymce==3.4.0 -django-two-factor-auth==1.13.1 +django-two-factor-auth==1.14.0 django-webpack-loader==1.0.0 -django==3.2.12 +django==3.2.13 djangorestframework-api-key==2.1.0 djangorestframework==3.12.4 drf-nested-routers==0.93.4