From b7ce7e062daf2dabafe4e2f5f5aa11e0d0d4b701 Mon Sep 17 00:00:00 2001 From: Till Prochaska <1512805+tillprochaska@users.noreply.github.com> Date: Fri, 24 May 2024 12:44:23 +0200 Subject: [PATCH 1/3] Initial commit v2 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit In the run-up of the European elections in June 2024, we have completely overhauled HowTheyVote.eu. We have significantly improved data quality and completeness, and vote results will generally be available on HowTheyVote.eu much faster – usually within 30-60 minutes after a vote took place. This initially started out as a separate experiment that slowly turned into a mostly feature-complete replacement of the existing HowTheyVote.eu website. Unfortunately, we weren’t able to completely transfer the commit history. Co-Authored-By: linusha --- .editorconfig | 3 + .env.template | 4 + .gitattributes | 3 +- .github/dependabot.yml | 31 - .github/workflows/backend.yml | 55 + .github/workflows/ci.yml | 185 - .github/workflows/frontend.yml | 34 + .github/workflows/release.yml | 50 + .gitignore | 2 + .vscode/snippets.code-snippets | 25 - LICENSE | 149 +- README.md | 79 +- ansible/.gitignore | 1 - ansible/dump.yml | 6 - ansible/host_vars/epvprod.yml | 46 - ansible/hosts | 1 - ansible/meilisearch.yml | 7 - ansible/requirements.yml | 5 - ansible/roles/deployment/handlers/main.yml | 10 - ansible/roles/deployment/tasks/main.yml | 100 - .../deployment/templates/epvotes/app/.env.j2 | 35 - .../templates/epvotes/scrapers/.env.j2 | 3 - .../etc/services.d/epvotes-scrapers.ini.j2 | 5 - ansible/roles/dump/tasks/main.yml | 16 - ansible/roles/meilisearch/handlers/main.yml | 10 - .../roles/meilisearch/tasks/configuration.yml | 10 - .../roles/meilisearch/tasks/installation.yml | 41 - ansible/roles/meilisearch/tasks/main.yml | 3 - .../etc/services.d/meilisearch.ini.j2 | 10 - ansible/roles/setup/tasks/main.yml | 38 - ansible/site.yml | 12 - ansible/vars/general.yml | 25 - ansible/vars/search.yml | 38 - app/.env.example | 21 - app/.gitattributes | 5 - app/.gitignore | 18 - app/.php-cs-fixer.php | 20 - app/.prettierrc | 12 - app/.styleci.yml | 13 - app/Dockerfile | 40 - app/app/Actions/Action.php | 14 - app/app/Actions/CompileStatsAction.php | 142 - app/app/Actions/CreateMemberImageAction.php | 38 - .../Actions/GenerateVoteSharePicAction.php | 38 - .../MatchVotesAndVotingListsAction.php | 74 - app/app/Actions/ScrapeAction.php | 48 - app/app/Actions/ScrapeMemberGroupsAction.php | 68 - app/app/Actions/ScrapeMemberInfoAction.php | 36 - app/app/Actions/ScrapeMembersAction.php | 43 - app/app/Actions/ScrapeSessionsAction.php | 55 - app/app/Actions/ScrapeSummaryAction.php | 45 - .../Actions/ScrapeVoteCollectionsAction.php | 103 - app/app/Actions/ScrapeVotingListsAction.php | 167 - app/app/Console/Kernel.php | 43 - app/app/Enums/CountryEnum.php | 115 - app/app/Enums/LocationEnum.php | 31 - app/app/Enums/VotePositionEnum.php | 24 - app/app/Enums/VoteResultEnum.php | 28 - app/app/Enums/VoteTypeEnum.php | 22 - .../Exceptions/CouldNotMatchVoteException.php | 25 - app/app/Exceptions/Handler.php | 59 - app/app/Exceptions/ScrapingException.php | 27 - app/app/Group.php | 27 - app/app/GroupMembership.php | 68 - app/app/Http/Controllers/Controller.php | 13 - app/app/Http/Controllers/HomeController.php | 17 - .../Http/Controllers/MembersController.php | 23 - .../Http/Controllers/MonitoringController.php | 38 - app/app/Http/Controllers/PagesController.php | 19 - .../Controllers/VotingListsController.php | 181 - app/app/Http/Kernel.php | 68 - app/app/Http/Middleware/Authenticate.php | 21 - app/app/Http/Middleware/CacheResponse.php | 23 - .../Middleware/CheckForMaintenanceMode.php | 17 - app/app/Http/Middleware/EncryptCookies.php | 17 - .../Middleware/RedirectIfAuthenticated.php | 27 - app/app/Http/Middleware/TrimStrings.php | 18 - app/app/Http/Middleware/TrustHosts.php | 20 - app/app/Http/Middleware/TrustProxies.php | 23 - app/app/Http/Middleware/VerifyCsrfToken.php | 17 - app/app/Member.php | 152 - app/app/Mixins/AbstractRenderedMixin.php | 92 - app/app/Mixins/CollectionMixin.php | 20 - app/app/Mixins/ComponentAttributeBagMixin.php | 37 - app/app/Mixins/StrMixin.php | 18 - app/app/Mixins/TestResponseMixin.php | 13 - app/app/Mixins/TestViewMixin.php | 13 - app/app/Providers/AppServiceProvider.php | 64 - app/app/Providers/AuthServiceProvider.php | 29 - .../Providers/BroadcastServiceProvider.php | 21 - app/app/Providers/EventServiceProvider.php | 34 - app/app/Providers/RouteServiceProvider.php | 80 - app/app/Session.php | 80 - app/app/Summary.php | 47 - app/app/Term.php | 28 - app/app/Vote.php | 154 - app/app/VoteCollection.php | 51 - app/app/Voting.php | 18 - app/app/VotingList.php | 170 - app/artisan | 53 - app/bootstrap/app.php | 55 - app/composer.json | 93 - app/composer.lock | 11767 -- app/config/app.php | 236 - app/config/auth.php | 117 - app/config/broadcasting.php | 59 - app/config/browserless.php | 7 - app/config/cache.php | 104 - app/config/cors.php | 34 - app/config/database.php | 147 - app/config/filesystems.php | 80 - app/config/hashids.php | 47 - app/config/hashing.php | 52 - app/config/image.php | 20 - app/config/logging.php | 104 - app/config/mail.php | 110 - app/config/pings.php | 5 - app/config/queue.php | 89 - app/config/scout.php | 139 - app/config/scrapers.php | 8 - app/config/sentry.php | 37 - app/config/services.php | 33 - app/config/session.php | 201 - app/config/sheets.php | 7 - app/config/view.php | 36 - app/database/.gitignore | 2 - app/database/factories/GroupFactory.php | 30 - .../factories/GroupMembershipFactory.php | 55 - app/database/factories/MemberFactory.php | 50 - app/database/factories/SessionFactory.php | 31 - app/database/factories/SummaryFactory.php | 30 - app/database/factories/TermFactory.php | 28 - app/database/factories/UserFactory.php | 28 - .../factories/VoteCollectionFactory.php | 32 - app/database/factories/VoteFactory.php | 35 - app/database/factories/VotingListFactory.php | 73 - .../2014_10_12_000000_create_users_table.php | 36 - ...12_100000_create_password_resets_table.php | 32 - ..._08_19_000000_create_failed_jobs_table.php | 35 - ...2020_09_01_132835_create_members_table.php | 36 - ...0_09_13_153314_rename_ep_web_id_column.php | 32 - .../2020_09_14_110846_create_terms_table.php | 31 - ..._09_14_114019_create_member_term_table.php | 32 - ...211905_add_unique_constraint_to_web_id.php | 32 - .../2020_09_14_213200_create_groups_table.php | 32 - ...09_14_214212_create_group_member_table.php | 38 - ...20_09_15_143245_create_documents_table.php | 38 - .../2020_09_15_213145_create_votes_table.php | 36 - ..._09_16_084515_create_member_vote_table.php | 34 - ...0_09_17_000103_normalize_members_table.php | 40 - ...5_rename_name_columns_in_members_table.php | 40 - ...111948_add_stats_column_to_votes_table.php | 32 - .../2020_09_19_211621_fix_column_types.php | 39 - .../2020_09_20_080952_add_indexes.php | 48 - ...14_update_title_column_documents_table.php | 30 - ...1_02_07_094738_create_procedures_table.php | 36 - ...procedure_id_column_to_documents_table.php | 32 - ...vote_description_column_to_votes_table.php | 32 - ...36_add_vote_type_column_to_votes_table.php | 32 - ...e_column_to_type_column_in_votes_table.php | 32 - ...to_vote_id_column_on_member_vote_table.php | 33 - ...7_drop_documents_and_procedures_tables.php | 34 - ...name_votes_table_to_voting_lists_table.php | 35 - ...ame_member_vote_table_to_votings_table.php | 30 - ...column_in_votings_table_to_voting_list.php | 35 - ...reference_column_to_voting_lists_table.php | 32 - ...1_163059_create_vote_collections_table.php | 35 - ...16_add_index_on_vote_collections_table.php | 30 - ...2021_05_08_084645_recreate_votes_table.php | 41 - ..._add_vote_collection_id_on_votes_table.php | 30 - ...59_add_formatted_column_to_votes_table.php | 32 - ...t_and_formatted_on_votes_table_to_text.php | 31 - ...umn_on_vote_collections_table_nullable.php | 30 - ...2214_add_remarks_column_to_votes_table.php | 30 - ...ng_list_table_to_null_on_vote_deletion.php | 31 - ..._and_subheading_columns_to_votes_table.php | 33 - ..._abbreviation_and_name_on_groups_table.php | 31 - ...21_08_11_085327_create_summaries_table.php | 36 - ...021_08_11_105645_create_sessions_table.php | 34 - ..._11_131657_add_index_on_sessions_table.php | 30 - ...1_add_session_id_column_to_votes_table.php | 32 - ..._135808_add_oeil_id_to_summaries_table.php | 32 - ...to_512_chars_in_vote_collections_table.php | 44 - ..._17_161712_make_doceo_vote_id_nullable.php | 30 - ...t_in_collection_collumn_on_votes_table.php | 32 - ...1310_fill_final_collumn_on_votes_table.php | 37 - ...545_add_contact_field_to_members_table.php | 34 - ...tched_and_notes_collumn_on_votes_table.php | 31 - ...2632_add_notes_column_on_session_table.php | 30 - ..._voting_lists_column_on_sessions_table.php | 30 - app/database/seeds/DatabaseSeeder.php | 16 - app/database/seeds/GroupSeeder.php | 84 - app/database/seeds/TermSeeder.php | 25 - app/package-lock.json | 17937 --- app/package.json | 27 - app/pages/about.md | 31 - app/pages/imprint.md | 12 - app/phpunit.xml | 36 - app/public/.htaccess | 57 - app/public/assets/groups/gue.svg | 1 - app/public/assets/logos/logo-bmbf.svg | 1 - app/public/assets/logos/logo-ptf.svg | 1 - app/public/assets/placeholder.svg | 1 - .../fonts/ibm-plex-sans-condensed-medium.woff | Bin 29540 -> 0 bytes .../ibm-plex-sans-condensed-medium.woff2 | Bin 22508 -> 0 bytes app/public/index.php | 60 - app/public/robots.txt | 2 - app/resources/css/app.css | 43 - app/resources/css/components/action-panel.css | 26 - app/resources/css/components/avatar.css | 38 - app/resources/css/components/base-layout.css | 30 - app/resources/css/components/button.css | 51 - app/resources/css/components/callout.css | 24 - app/resources/css/components/empty-state.css | 6 - app/resources/css/components/error-page.css | 34 - app/resources/css/components/footer.css | 27 - app/resources/css/components/header.css | 51 - app/resources/css/components/hero.css | 23 - app/resources/css/components/home.css | 56 - app/resources/css/components/input.css | 26 - app/resources/css/components/list-item.css | 26 - app/resources/css/components/list.css | 61 - .../css/components/loading-spinner.css | 18 - app/resources/css/components/logos.css | 10 - app/resources/css/components/markdown.css | 21 - .../css/components/member-header.css | 66 - .../css/components/position-select.css | 71 - app/resources/css/components/search-form.css | 17 - .../css/components/search-results-page.css | 5 - .../css/components/session-display.css | 7 - app/resources/css/components/stack.css | 26 - app/resources/css/components/tab-button.css | 21 - app/resources/css/components/tabs.css | 27 - app/resources/css/components/thumb.css | 66 - app/resources/css/components/vote-card.css | 24 - .../css/components/vote-result-chart.css | 57 - .../css/components/voting-list-header.css | 8 - app/resources/css/components/wrapper.css | 6 - app/resources/css/global/alpine.css | 3 - app/resources/css/global/base.css | 46 - app/resources/css/global/fonts.css | 26 - app/resources/css/global/typography.css | 58 - app/resources/css/global/utils.css | 18 - app/resources/css/variables.css | 119 - app/resources/js/app.js | 19 - app/resources/js/components/eye.js | 54 - app/resources/js/components/list-item.js | 36 - .../js/components/search-results-page.js | 193 - app/resources/lang/en/auth.php | 19 - app/resources/lang/en/components.php | 54 - app/resources/lang/en/enums.php | 10 - app/resources/lang/en/errors.php | 16 - app/resources/lang/en/members.php | 9 - app/resources/lang/en/pagination.php | 19 - app/resources/lang/en/passwords.php | 22 - app/resources/lang/en/session.php | 5 - app/resources/lang/en/share.php | 7 - app/resources/lang/en/validation.php | 151 - app/resources/lang/en/votes.php | 16 - app/resources/lang/en/voting-lists.php | 58 - .../views/components/action-panel.blade.php | 14 - app/resources/views/components/app.blade.php | 48 - .../views/components/avatar.blade.php | 8 - .../views/components/base-layout.blade.php | 25 - .../views/components/button.blade.php | 20 - .../views/components/callout.blade.php | 15 - .../views/components/cc-logo.blade.php | 15 - .../components/country-list-item.blade.php | 16 - .../views/components/empty-state.blade.php | 6 - .../views/components/error-page.blade.php | 13 - app/resources/views/components/eyes.blade.php | 71 - .../views/components/footer.blade.php | 31 - .../components/group-list-item.blade.php | 16 - .../views/components/header.blade.php | 23 - app/resources/views/components/hero.blade.php | 25 - .../views/components/input.blade.php | 7 - .../views/components/list-item.blade.php | 58 - app/resources/views/components/list.blade.php | 54 - .../components/loading-spinner.blade.php | 5 - .../views/components/logos.blade.php | 3 - .../views/components/markdown.blade.php | 5 - .../components/member-list-item.blade.php | 16 - .../views/components/member/header.blade.php | 46 - .../components/position-select.blade.php | 65 - .../views/components/search-form.blade.php | 11 - .../views/components/search-input.blade.php | 11 - .../components/search-results-page.blade.php | 48 - .../search-results-page/empty-state.blade.php | 9 - .../load-more-button.blade.php | 10 - .../noscript-fallback.blade.php | 3 - .../search-results-page/result.blade.php | 50 - .../results-count.blade.php | 5 - .../search-results-page/results.blade.php | 25 - .../components/session-display.blade.php | 51 - .../views/components/share-button.blade.php | 19 - .../views/components/share-picture.blade.php | 12 - .../views/components/stack.blade.php | 5 - .../views/components/tab-button.blade.php | 15 - .../views/components/tab-panel.blade.php | 12 - app/resources/views/components/tabs.blade.php | 7 - .../views/components/thumb.blade.php | 23 - .../views/components/vote-card.blade.php | 24 - .../vote-result-chart-bar.blade.php | 24 - .../components/vote-result-chart.blade.php | 47 - .../components/voting-list/callout.blade.php | 27 - .../voting-list/countries-list.blade.php | 15 - .../voting-list/download-panel.blade.php | 22 - .../voting-list/groups-list.blade.php | 7 - .../components/voting-list/header.blade.php | 45 - .../voting-list/members-list.blade.php | 19 - .../voting-list/related-panel.blade.php | 13 - .../views/components/wrapper.blade.php | 3 - app/resources/views/errors/404.blade.php | 6 - app/resources/views/errors/500.blade.php | 6 - app/resources/views/errors/503.blade.php | 6 - app/resources/views/home.blade.php | 24 - app/resources/views/members/show.blade.php | 20 - .../views/monitoring/index.blade.php | 28 - app/resources/views/monitoring/show.blade.php | 5 - app/resources/views/pages/show.blade.php | 17 - .../views/voting-lists/index.blade.php | 29 - .../views/voting-lists/related.blade.php | 32 - .../voting-lists/share-picture.blade.php | 28 - .../views/voting-lists/show.blade.php | 67 - .../views/voting-lists/summary.blade.php | 31 - app/routes/api.php | 19 - app/routes/channels.php | 18 - app/routes/console.php | 171 - app/routes/web.php | 40 - app/server.php | 21 - app/storage/app/.gitignore | 3 - app/storage/framework/.gitignore | 8 - app/storage/framework/cache/.gitignore | 3 - app/storage/framework/cache/data/.gitignore | 2 - app/storage/framework/sessions/.gitignore | 2 - app/storage/framework/testing/.gitignore | 2 - app/storage/framework/views/.gitignore | 2 - app/storage/logs/.gitignore | 2 - app/tests/CreatesApplication.php | 22 - app/tests/Feature/.gitkeep | 0 app/tests/Feature/Http/Members/ShowTest.php | 77 - .../Feature/Http/Monitoring/IndexTest.php | 18 - app/tests/Feature/Http/Pages/ShowTest.php | 17 - .../Feature/Http/VotingLists/CsvTest.php | 56 - .../Feature/Http/VotingLists/IndexTest.php | 28 - .../Feature/Http/VotingLists/JsonTest.php | 77 - .../Feature/Http/VotingLists/RelatedTest.php | 75 - .../Http/VotingLists/SharePicturesTest.php | 27 - .../Feature/Http/VotingLists/ShowTest.php | 300 - .../Feature/Http/VotingLists/SummaryTest.php | 49 - app/tests/Pest.php | 37 - app/tests/TestCase.php | 10 - .../Unit/Actions/CompileStatsActionTest.php | 160 - .../GenerateVoteSharePicActionTest.php | 34 - .../MatchVotesAndVotingListsActionTest.php | 202 - app/tests/Unit/Actions/ScrapeActionTest.php | 22 - .../Actions/ScrapeMemberGroupsActionTest.php | 52 - .../Actions/ScrapeMemberInfoActionTest.php | 38 - .../Unit/Actions/ScrapeMembersActionTest.php | 45 - .../Unit/Actions/ScrapeSessionsActionTest.php | 59 - .../Unit/Actions/ScrapeSummaryActionTest.php | 27 - .../ScrapeVoteCollectionsActionTest.php | 112 - .../Actions/ScrapeVotingListsActionTest.php | 214 - app/tests/Unit/Components/ButtonTest.php | 13 - .../Unit/Components/PositionSelectTest.php | 53 - .../Unit/Components/SessionDisplayTest.php | 82 - app/tests/Unit/Components/ThumbTest.php | 49 - .../Components/VoteResultChartBarTest.php | 36 - .../Unit/Components/VoteResultChartTest.php | 24 - app/tests/Unit/Enums/CountryEnumTest.php | 13 - app/tests/Unit/GroupMembershipTest.php | 41 - app/tests/Unit/MemberTest.php | 130 - app/tests/Unit/Mixins/CollectionMixinTest.php | 18 - .../Mixins/ComponentAttributeBagMixinTest.php | 40 - app/tests/Unit/Mixins/StrMixinTest.php | 9 - app/tests/Unit/SessionTest.php | 97 - app/tests/Unit/SummaryTest.php | 38 - app/tests/Unit/TermTest.php | 14 - app/tests/Unit/VoteTest.php | 143 - app/tests/Unit/VotingListTest.php | 115 - app/tests/data/hello.json | 1 - app/tests/data/member_groups-2.json | 7 - app/tests/data/member_groups.json | 7 - app/tests/data/member_info.json | 9 - app/tests/data/members.json | 6 - app/tests/data/sessions_obs.json | 12 - app/tests/data/sessions_parl.json | 5 - app/tests/data/summary.json | 1 - app/tests/data/summary_id.json | 1 - .../data/vote_collections-no-reference.json | 1139 - app/tests/data/vote_collections.json | 372 - app/tests/data/voting_lists-2.json | 10 - app/tests/data/voting_lists-3.json | 11 - app/tests/data/voting_lists-4.json | 10 - app/tests/data/voting_lists-5.json | 8 - app/tests/data/voting_lists-6.json | 8 - app/tests/data/voting_lists-7.json | 20 - app/tests/data/voting_lists.json | 8 - app/webpack.mix.js | 8 - {scrapers => backend}/.coveragerc | 0 backend/.dockerignore | 152 + {scrapers => backend}/.editorconfig | 0 {scrapers => backend}/.gitignore | 8 +- backend/Dockerfile | 38 + backend/Makefile | 25 + backend/howtheyvote/__init__.py | 23 + backend/howtheyvote/alembic/alembic.ini | 103 + backend/howtheyvote/alembic/env.py | 17 + backend/howtheyvote/alembic/script.py.mako | 24 + ...eec8050f4d5_add_eurovoc_concepts_column.py | 23 + ...3_create_timestamp_index_on_votes_table.py | 22 + .../alembic/versions/9a4972f3a768_init.py | 108 + backend/howtheyvote/analysis/__init__.py | 15 + backend/howtheyvote/analysis/votes.py | 241 + backend/howtheyvote/api/__init__.py | 24 + backend/howtheyvote/api/openapi_helpers.py | 209 + backend/howtheyvote/api/openapi_spec.py | 73 + backend/howtheyvote/api/query.py | 256 + backend/howtheyvote/api/serializers.py | 346 + backend/howtheyvote/api/sessions_api.py | 97 + backend/howtheyvote/api/static_api.py | 26 + backend/howtheyvote/api/stats_api.py | 56 + backend/howtheyvote/api/votes_api.py | 490 + backend/howtheyvote/cli/__init__.py | 30 + backend/howtheyvote/cli/aggregate.py | 63 + backend/howtheyvote/cli/dev.py | 372 + backend/howtheyvote/cli/pipeline.py | 101 + backend/howtheyvote/cli/system.py | 36 + backend/howtheyvote/cli/temp.py | 165 + backend/howtheyvote/config.py | 31 + backend/howtheyvote/data.py | 58 + backend/howtheyvote/data/countries.json | 1796 + backend/howtheyvote/data/eurovoc.json | 101674 +++++++++++++++ backend/howtheyvote/data/groups.json | 438 + backend/howtheyvote/db.py | 47 + backend/howtheyvote/files.py | 71 + backend/howtheyvote/helpers.py | 113 + backend/howtheyvote/json.py | 42 + backend/howtheyvote/meili.py | 88 + backend/howtheyvote/metrics.py | 98 + backend/howtheyvote/models/__init__.py | 48 + backend/howtheyvote/models/common.py | 52 + backend/howtheyvote/models/country.py | 88 + backend/howtheyvote/models/eurovoc.py | 80 + backend/howtheyvote/models/group.py | 83 + backend/howtheyvote/models/member.py | 109 + backend/howtheyvote/models/press_release.py | 18 + backend/howtheyvote/models/session.py | 46 + backend/howtheyvote/models/types.py | 80 + backend/howtheyvote/models/vote.py | 118 + backend/howtheyvote/pipelines/__init__.py | 14 + backend/howtheyvote/pipelines/common.py | 6 + backend/howtheyvote/pipelines/members.py | 114 + backend/howtheyvote/pipelines/press.py | 178 + backend/howtheyvote/pipelines/rcv_list.py | 311 + backend/howtheyvote/pipelines/sessions.py | 70 + backend/howtheyvote/query.py | 77 + backend/howtheyvote/scrapers/__init__.py | 36 + backend/howtheyvote/scrapers/common.py | 191 + backend/howtheyvote/scrapers/helpers.py | 149 + backend/howtheyvote/scrapers/members.py | 231 + .../howtheyvote/scrapers/press_releases.py | 261 + backend/howtheyvote/scrapers/sessions.py | 124 + backend/howtheyvote/scrapers/votes.py | 616 + backend/howtheyvote/sharepics/__init__.py | 40 + backend/howtheyvote/sharepics/cdp.py | 157 + backend/howtheyvote/store/__init__.py | 23 + backend/howtheyvote/store/aggregator.py | 125 + backend/howtheyvote/store/index.py | 123 + backend/howtheyvote/store/mappings.py | 110 + backend/howtheyvote/store/writer.py | 97 + backend/howtheyvote/worker/__init__.py | 113 + backend/howtheyvote/worker/worker.py | 186 + backend/howtheyvote/wsgi.py | 57 + backend/poetry.lock | 1565 + backend/poetry.toml | 2 + backend/pyproject.toml | 74 + backend/tests/api/test_openapi_helpers.py | 224 + backend/tests/api/test_query.py | 218 + backend/tests/api/test_sessions_api.py | 128 + backend/tests/api/test_votes_api.py | 458 + backend/tests/conftest.py | 62 + backend/tests/models/test_country.py | 68 + backend/tests/models/test_eurovoc.py | 25 + backend/tests/models/test_group.py | 42 + backend/tests/models/test_member.py | 44 + backend/tests/models/test_types.py | 182 + backend/tests/models/test_vote.py | 32 + backend/tests/pipelines/test_rcv_list.py | 11 + .../tests/scrapers}/__init__.py | 0 .../member_groups_adinolfi_term_8.html | 7520 +- .../member_groups_adinolfi_term_9.html | 0 .../member_groups_sonneborn_term_8.html | 0 .../member_groups_sonneborn_term_9.html | 0 .../members}/member_info_adinolfi_home.html | 0 .../members}/member_info_sonneborn_home.html | 0 .../data/members}/member_info_weber_home.html | 0 .../members}/members_directory_term_8.xml | 0 .../members}/members_directory_term_9.xml | 0 .../votes/eurlex-document_p9-a-2021-0270.html | 3446 + .../votes/eurlex-document_p9-a-2023-0369.html | 3464 + .../data/votes/eurlex-procedure_2021-106.html | 3219 + .../data/votes/eurlex-procedure_2023-102.html | 2940 + ...rocedure_ficheprocedure-2022-2201-ini.html | 1053 +- ...rocedure_ficheprocedure-2022-2852-rsp.html | 1617 +- ...rocedure_ficheprocedure-2023-2019-ini.html | 3452 + ..._list_incorrect_pv-9-2020-07-23-rcv-fr.xml | 7 +- .../rcv_list_p9-pv(2020)07-23(rcv)_xc.xml | 24 + .../votes/rcv_list_pv-9-2019-07-15-rcv-fr.xml | 9 + .../votes/rcv_list_pv-9-2020-07-23-rcv-fr.xml | 23 + .../votes/rcv_list_pv-9-2020-09-15-rcv-fr.xml | 20 + .../votes/rcv_list_pv-9-2023-12-12-rcv-fr.xml | 17 + backend/tests/scrapers/helpers.py | 14 + backend/tests/scrapers/test_common.py | 46 + backend/tests/scrapers/test_helpers.py | 171 + backend/tests/scrapers/test_members.py | 132 + backend/tests/scrapers/test_votes.py | 358 + backend/tests/store/test_aggregator.py | 185 + backend/tests/store/test_mappings.py | 53 + backend/tests/store/test_writer.py | 129 + backend/tests/test_data.py | 61 + backend/tests/test_helpers.py | 99 + backend/tests/test_query.py | 237 + backend/tests/worker/test_worker.py | 176 + caddy/Caddyfile | 79 + docker-compose.override.yml | 44 + docker-compose.yml | 153 +- docs/architecture.md | 54 + docs/data-sources.md | 30 + docs/design-premises.md | 39 + docs/er-diagram.svg | 1 - docs/fragments.md | 53 + docs/logo-bmbf.svg | 26 - docs/logo-ptf.svg | 31 - docs/pipelines.md | 39 + frontend/.dockerignore | 2 + frontend/.editorconfig | 6 + frontend/.gitignore | 2 + frontend/Dockerfile | 17 + frontend/Makefile | 57 + frontend/biome.json | 21 + frontend/package-lock.json | 3329 + frontend/package.json | 28 + frontend/scripts/manifest | 13 + frontend/scripts/watch | 8 + frontend/src/api/generated/ApiClient.ts | 41 + frontend/src/api/generated/core/ApiError.ts | 21 + .../api/generated/core/ApiRequestOptions.ts | 13 + frontend/src/api/generated/core/ApiResult.ts | 7 + .../src/api/generated/core/BaseHttpRequest.ts | 10 + .../api/generated/core/CancelablePromise.ts | 126 + .../api/generated/core/FetchHttpRequest.ts | 22 + frontend/src/api/generated/core/OpenAPI.ts | 58 + frontend/src/api/generated/core/request.ts | 340 + frontend/src/api/generated/core/types.ts | 12 + frontend/src/api/generated/index.ts | 10 + frontend/src/api/generated/models.ts | 372 + .../services/MiscellaneousService.ts | 23 + .../services/PlenarySessionsService.ts | 47 + .../api/generated/services/VotesService.ts | 127 + frontend/src/api/generated/services/index.ts | 3 + frontend/src/api/index.ts | 6 + frontend/src/client.entry.ts | 16 + frontend/src/components/App.tsx | 63 + frontend/src/components/Avatar.css | 38 + frontend/src/components/Avatar.tsx | 15 + frontend/src/components/BaseLayout.css | 26 + frontend/src/components/BaseLayout.tsx | 32 + frontend/src/components/Button.css | 51 + frontend/src/components/Button.tsx | 31 + .../src/components/CCLogo.css | 9 +- frontend/src/components/CCLogo.tsx | 24 + .../src/components/CountriesFilterSelect.tsx | 30 + frontend/src/components/CountryFlag.tsx | 44 + frontend/src/components/CountryStatsList.tsx | 49 + frontend/src/components/Disclosure.css | 39 + frontend/src/components/Disclosure.tsx | 29 + frontend/src/components/EmptyState.css | 13 + frontend/src/components/EmptyState.tsx | 17 + frontend/src/components/Eyes.tsx | 149 + frontend/src/components/FilterSelect.css | 30 + frontend/src/components/FilterSelect.tsx | 49 + frontend/src/components/Footer.css | 29 + frontend/src/components/Footer.tsx | 43 + frontend/src/components/GroupStatsList.tsx | 44 + .../src/components/GroupsFilterSelect.tsx | 30 + frontend/src/components/Header.css | 64 + frontend/src/components/Header.tsx | 30 + frontend/src/components/Hero.css | 26 + frontend/src/components/Hero.tsx | 29 + frontend/src/components/Input.css | 20 + frontend/src/components/Input.tsx | 24 + frontend/src/components/List.css | 49 + frontend/src/components/List.tsx | 33 + frontend/src/components/ListItem.css | 26 + frontend/src/components/ListItem.tsx | 40 + frontend/src/components/MemberVotesList.css | 10 + .../src/components/MemberVotesList.test.tsx | 296 + frontend/src/components/MemberVotesList.tsx | 162 + frontend/src/components/Pagination.css | 24 + frontend/src/components/Pagination.tsx | 30 + .../src/components/PositionFilterSelect.tsx | 22 + frontend/src/components/SearchForm.css | 38 + frontend/src/components/SearchForm.tsx | 33 + .../src/components/ShareButton.css | 0 frontend/src/components/ShareButton.tsx | 28 + frontend/src/components/Sources.tsx | 29 + frontend/src/components/Stack.css | 26 + frontend/src/components/Stack.tsx | 12 + frontend/src/components/Stats.css | 12 + frontend/src/components/Stats.tsx | 11 + frontend/src/components/StatsCard.css | 13 + frontend/src/components/StatsCard.tsx | 15 + frontend/src/components/Tabs.css | 49 + frontend/src/components/Tabs.tsx | 101 + frontend/src/components/Tag.css | 14 + frontend/src/components/Tag.tsx | 15 + frontend/src/components/Thumb.css | 66 + frontend/src/components/Thumb.tsx | 28 + frontend/src/components/VoteCard.css | 25 + frontend/src/components/VoteCard.tsx | 25 + frontend/src/components/VoteCards.css | 5 + frontend/src/components/VoteCards.tsx | 59 + frontend/src/components/VoteHeader.css | 19 + frontend/src/components/VoteHeader.tsx | 52 + frontend/src/components/VoteResultChart.css | 65 + frontend/src/components/VoteResultChart.tsx | 88 + .../src/components/VoteSharepic.css | 23 +- frontend/src/components/VoteSharepic.tsx | 36 + frontend/src/components/VoteTabs.tsx | 39 + frontend/src/components/Wrapper.css | 6 + frontend/src/components/Wrapper.tsx | 12 + frontend/src/config.ts | 4 + frontend/src/css/base.css | 45 + frontend/src/css/fonts.css | 35 + frontend/src/css/typography.css | 134 + frontend/src/css/utils.css | 19 + frontend/src/css/variables.css | 104 + frontend/src/cssLoader.js | 12 + frontend/src/lib/bem.ts | 45 + frontend/src/lib/bots.test.ts | 67 + frontend/src/lib/bots.ts | 50 + frontend/src/lib/caching.ts | 25 + frontend/src/lib/dates.ts | 56 + frontend/src/lib/http.ts | 40 + frontend/src/lib/islands.test.tsx | 61 + frontend/src/lib/islands.tsx | 58 + frontend/src/lib/links.ts | 37 + frontend/src/lib/logging.ts | 7 + frontend/src/lib/normalization.test.ts | 18 + frontend/src/lib/normalization.ts | 26 + frontend/src/lib/serialization.ts | 84 + frontend/src/lib/server.ts | 134 + frontend/src/pages/AboutPage.tsx | 383 + frontend/src/pages/DevelopersPage.tsx | 38 + frontend/src/pages/ErrorPage.css | 34 + frontend/src/pages/ErrorPage.tsx | 59 + frontend/src/pages/HomePage.css | 62 + frontend/src/pages/HomePage.tsx | 161 + frontend/src/pages/ImprintPage.tsx | 167 + frontend/src/pages/SearchPage.tsx | 85 + frontend/src/pages/ShowVotePage.tsx | 182 + frontend/src/pages/VoteSharepicPage.tsx | 17 + frontend/src/server.entry.ts | 44 + frontend/src/setupTests.js | 15 + .../home.jpg => frontend/static/bg-dark.jpg | Bin .../static/favicon-32px.png | Bin .../ibm-plex-sans-condensed-semibold.woff | Bin 0 -> 30348 bytes .../ibm-plex-sans-condensed-semibold.woff2 | Bin 0 -> 23216 bytes .../static/fonts/ibm-plex-sans-medium.woff | Bin 0 -> 36792 bytes .../static/fonts/ibm-plex-sans-medium.woff2 | Bin 0 -> 28540 bytes .../static}/fonts/ibm-plex-sans-regular.woff | Bin .../static}/fonts/ibm-plex-sans-regular.woff2 | Bin .../static}/fonts/ibm-plex-sans-semibold.woff | Bin .../fonts/ibm-plex-sans-semibold.woff2 | Bin .../static}/groups/alde.svg | 0 .../assets => frontend/static}/groups/ecr.svg | 0 .../static/groups/efd.svg | 0 .../assets => frontend/static}/groups/enf.svg | 0 .../assets => frontend/static}/groups/epp.svg | 0 .../static/groups/green_efa.svg | 0 .../static/groups/gue_ngl.svg | 0 .../assets => frontend/static}/groups/id.svg | 0 .../assets => frontend/static}/groups/ni.svg | 0 .../static}/groups/renew.svg | 0 .../assets => frontend/static}/groups/sd.svg | 0 .../assets => frontend/static}/icons.svg | 2 +- frontend/static/manifest.json | 8 + frontend/static/notifications-icon.png | Bin 0 -> 9257 bytes .../static/sharepic-default.png | Bin .../static/spotlight/8.1.0/styles.min.css | 1 + .../spotlight/8.1.0/web-components.min.js | 2 + .../8.1.0/web-components.min.js.LICENSE.txt | 177 + .../static/touch-icon-180px.png | Bin frontend/tsconfig.json | 10 + mariadb/.gitignore | 1 - mariadb/Dockerfile | 2 - mariadb/docker-entrypoint-initdb.d/init.sql | 3 - mariadb/dump/dump-development.sql | 487 - mariadb/dump/export_database.sh | 6 - mariadb/dump/import_database.sh | 6 - scrapers/.env.example | 3 - scrapers/.flake8 | 6 - scrapers/Dockerfile | 25 - scrapers/Makefile | 18 - scrapers/README.md | 0 scrapers/ep_votes/api.py | 184 - scrapers/ep_votes/helpers.py | 85 - scrapers/ep_votes/models.py | 317 - scrapers/ep_votes/scrapers.py | 659 - scrapers/mypy.ini | 5 - scrapers/poetry.lock | 914 - scrapers/pyproject.toml | 30 - scrapers/tests/__init__.py | 0 ...observatory_sessions_calendar-2021-11.json | 132 - .../parliament_sessions_calendar-term9.json | 1 - scrapers/tests/data/summary_1651118.html | 772 - ...ummary_id_ficheprocedure_a9-0149-2021.html | 3861 - ...ummary_id_ficheprocedure_b9-0116-2021.html | 2445 - ...e_collections_p8_pv(2019)03-26(vot)_en.xml | 2 - ...ote_collections_pv-9-2021-09-03-vot-en.xml | 17704 --- .../voting_lists_p8_pv(2019)03-26(rcv)_xc.xml | 2 - .../voting_lists_pv-9-2019-10-22-rcv-fr.xml | 30 - .../voting_lists_pv-9-2021-09-03-rcv-fr.xml | 96634 -------------- scrapers/tests/test_api.py | 71 - scrapers/tests/test_helpers.py | 240 - scrapers/tests/test_models.py | 306 - scrapers/tests/test_scrapers.py | 835 - scripts/scrape-votes.sh | 9 - .../cache => storage/database}/.gitignore | 0 .../app/public => storage/files}/.gitignore | 0 731 files changed, 148251 insertions(+), 177714 deletions(-) create mode 100644 .env.template delete mode 100644 .github/dependabot.yml create mode 100644 .github/workflows/backend.yml delete mode 100644 .github/workflows/ci.yml create mode 100644 .github/workflows/frontend.yml create mode 100644 .github/workflows/release.yml create mode 100644 .gitignore delete mode 100644 .vscode/snippets.code-snippets delete mode 100644 ansible/.gitignore delete mode 100644 ansible/dump.yml delete mode 100644 ansible/host_vars/epvprod.yml delete mode 100644 ansible/hosts delete mode 100644 ansible/meilisearch.yml delete mode 100644 ansible/requirements.yml delete mode 100644 ansible/roles/deployment/handlers/main.yml delete mode 100644 ansible/roles/deployment/tasks/main.yml delete mode 100644 ansible/roles/deployment/templates/epvotes/app/.env.j2 delete mode 100644 ansible/roles/deployment/templates/epvotes/scrapers/.env.j2 delete mode 100644 ansible/roles/deployment/templates/etc/services.d/epvotes-scrapers.ini.j2 delete mode 100644 ansible/roles/dump/tasks/main.yml delete mode 100644 ansible/roles/meilisearch/handlers/main.yml delete mode 100644 ansible/roles/meilisearch/tasks/configuration.yml delete mode 100644 ansible/roles/meilisearch/tasks/installation.yml delete mode 100644 ansible/roles/meilisearch/tasks/main.yml delete mode 100644 ansible/roles/meilisearch/templates/etc/services.d/meilisearch.ini.j2 delete mode 100644 ansible/roles/setup/tasks/main.yml delete mode 100644 ansible/site.yml delete mode 100644 ansible/vars/general.yml delete mode 100644 ansible/vars/search.yml delete mode 100644 app/.env.example delete mode 100644 app/.gitattributes delete mode 100644 app/.gitignore delete mode 100644 app/.php-cs-fixer.php delete mode 100644 app/.prettierrc delete mode 100644 app/.styleci.yml delete mode 100644 app/Dockerfile delete mode 100644 app/app/Actions/Action.php delete mode 100644 app/app/Actions/CompileStatsAction.php delete mode 100644 app/app/Actions/CreateMemberImageAction.php delete mode 100644 app/app/Actions/GenerateVoteSharePicAction.php delete mode 100644 app/app/Actions/MatchVotesAndVotingListsAction.php delete mode 100644 app/app/Actions/ScrapeAction.php delete mode 100644 app/app/Actions/ScrapeMemberGroupsAction.php delete mode 100644 app/app/Actions/ScrapeMemberInfoAction.php delete mode 100644 app/app/Actions/ScrapeMembersAction.php delete mode 100644 app/app/Actions/ScrapeSessionsAction.php delete mode 100644 app/app/Actions/ScrapeSummaryAction.php delete mode 100644 app/app/Actions/ScrapeVoteCollectionsAction.php delete mode 100644 app/app/Actions/ScrapeVotingListsAction.php delete mode 100644 app/app/Console/Kernel.php delete mode 100644 app/app/Enums/CountryEnum.php delete mode 100644 app/app/Enums/LocationEnum.php delete mode 100644 app/app/Enums/VotePositionEnum.php delete mode 100644 app/app/Enums/VoteResultEnum.php delete mode 100644 app/app/Enums/VoteTypeEnum.php delete mode 100644 app/app/Exceptions/CouldNotMatchVoteException.php delete mode 100644 app/app/Exceptions/Handler.php delete mode 100644 app/app/Exceptions/ScrapingException.php delete mode 100644 app/app/Group.php delete mode 100644 app/app/GroupMembership.php delete mode 100644 app/app/Http/Controllers/Controller.php delete mode 100644 app/app/Http/Controllers/HomeController.php delete mode 100644 app/app/Http/Controllers/MembersController.php delete mode 100644 app/app/Http/Controllers/MonitoringController.php delete mode 100644 app/app/Http/Controllers/PagesController.php delete mode 100644 app/app/Http/Controllers/VotingListsController.php delete mode 100644 app/app/Http/Kernel.php delete mode 100644 app/app/Http/Middleware/Authenticate.php delete mode 100644 app/app/Http/Middleware/CacheResponse.php delete mode 100644 app/app/Http/Middleware/CheckForMaintenanceMode.php delete mode 100644 app/app/Http/Middleware/EncryptCookies.php delete mode 100644 app/app/Http/Middleware/RedirectIfAuthenticated.php delete mode 100644 app/app/Http/Middleware/TrimStrings.php delete mode 100644 app/app/Http/Middleware/TrustHosts.php delete mode 100644 app/app/Http/Middleware/TrustProxies.php delete mode 100644 app/app/Http/Middleware/VerifyCsrfToken.php delete mode 100644 app/app/Member.php delete mode 100644 app/app/Mixins/AbstractRenderedMixin.php delete mode 100644 app/app/Mixins/CollectionMixin.php delete mode 100644 app/app/Mixins/ComponentAttributeBagMixin.php delete mode 100644 app/app/Mixins/StrMixin.php delete mode 100644 app/app/Mixins/TestResponseMixin.php delete mode 100644 app/app/Mixins/TestViewMixin.php delete mode 100644 app/app/Providers/AppServiceProvider.php delete mode 100644 app/app/Providers/AuthServiceProvider.php delete mode 100644 app/app/Providers/BroadcastServiceProvider.php delete mode 100644 app/app/Providers/EventServiceProvider.php delete mode 100644 app/app/Providers/RouteServiceProvider.php delete mode 100644 app/app/Session.php delete mode 100644 app/app/Summary.php delete mode 100644 app/app/Term.php delete mode 100644 app/app/Vote.php delete mode 100644 app/app/VoteCollection.php delete mode 100644 app/app/Voting.php delete mode 100644 app/app/VotingList.php delete mode 100755 app/artisan delete mode 100644 app/bootstrap/app.php delete mode 100644 app/composer.json delete mode 100644 app/composer.lock delete mode 100644 app/config/app.php delete mode 100644 app/config/auth.php delete mode 100644 app/config/broadcasting.php delete mode 100644 app/config/browserless.php delete mode 100644 app/config/cache.php delete mode 100644 app/config/cors.php delete mode 100644 app/config/database.php delete mode 100644 app/config/filesystems.php delete mode 100644 app/config/hashids.php delete mode 100644 app/config/hashing.php delete mode 100644 app/config/image.php delete mode 100644 app/config/logging.php delete mode 100644 app/config/mail.php delete mode 100644 app/config/pings.php delete mode 100644 app/config/queue.php delete mode 100644 app/config/scout.php delete mode 100644 app/config/scrapers.php delete mode 100644 app/config/sentry.php delete mode 100644 app/config/services.php delete mode 100644 app/config/session.php delete mode 100644 app/config/sheets.php delete mode 100644 app/config/view.php delete mode 100644 app/database/.gitignore delete mode 100644 app/database/factories/GroupFactory.php delete mode 100644 app/database/factories/GroupMembershipFactory.php delete mode 100644 app/database/factories/MemberFactory.php delete mode 100644 app/database/factories/SessionFactory.php delete mode 100644 app/database/factories/SummaryFactory.php delete mode 100644 app/database/factories/TermFactory.php delete mode 100644 app/database/factories/UserFactory.php delete mode 100644 app/database/factories/VoteCollectionFactory.php delete mode 100644 app/database/factories/VoteFactory.php delete mode 100644 app/database/factories/VotingListFactory.php delete mode 100644 app/database/migrations/2014_10_12_000000_create_users_table.php delete mode 100644 app/database/migrations/2014_10_12_100000_create_password_resets_table.php delete mode 100644 app/database/migrations/2019_08_19_000000_create_failed_jobs_table.php delete mode 100644 app/database/migrations/2020_09_01_132835_create_members_table.php delete mode 100644 app/database/migrations/2020_09_13_153314_rename_ep_web_id_column.php delete mode 100644 app/database/migrations/2020_09_14_110846_create_terms_table.php delete mode 100644 app/database/migrations/2020_09_14_114019_create_member_term_table.php delete mode 100644 app/database/migrations/2020_09_14_211905_add_unique_constraint_to_web_id.php delete mode 100644 app/database/migrations/2020_09_14_213200_create_groups_table.php delete mode 100644 app/database/migrations/2020_09_14_214212_create_group_member_table.php delete mode 100644 app/database/migrations/2020_09_15_143245_create_documents_table.php delete mode 100644 app/database/migrations/2020_09_15_213145_create_votes_table.php delete mode 100644 app/database/migrations/2020_09_16_084515_create_member_vote_table.php delete mode 100644 app/database/migrations/2020_09_17_000103_normalize_members_table.php delete mode 100644 app/database/migrations/2020_09_17_160515_rename_name_columns_in_members_table.php delete mode 100644 app/database/migrations/2020_09_18_111948_add_stats_column_to_votes_table.php delete mode 100644 app/database/migrations/2020_09_19_211621_fix_column_types.php delete mode 100644 app/database/migrations/2020_09_20_080952_add_indexes.php delete mode 100644 app/database/migrations/2021_01_23_174314_update_title_column_documents_table.php delete mode 100644 app/database/migrations/2021_02_07_094738_create_procedures_table.php delete mode 100644 app/database/migrations/2021_02_07_102027_add_procedure_id_column_to_documents_table.php delete mode 100644 app/database/migrations/2021_04_04_104512_add_subvote_description_column_to_votes_table.php delete mode 100644 app/database/migrations/2021_04_04_104536_add_vote_type_column_to_votes_table.php delete mode 100644 app/database/migrations/2021_04_04_132954_rename_vote_type_column_to_type_column_in_votes_table.php delete mode 100644 app/database/migrations/2021_04_04_143826_add_delete_cascade_to_vote_id_column_on_member_vote_table.php delete mode 100644 app/database/migrations/2021_05_01_124247_drop_documents_and_procedures_tables.php delete mode 100644 app/database/migrations/2021_05_01_131041_rename_votes_table_to_voting_lists_table.php delete mode 100644 app/database/migrations/2021_05_01_134929_rename_member_vote_table_to_votings_table.php delete mode 100644 app/database/migrations/2021_05_01_135657_rename_vote_id_column_in_votings_table_to_voting_list.php delete mode 100644 app/database/migrations/2021_05_01_145756_add_reference_column_to_voting_lists_table.php delete mode 100644 app/database/migrations/2021_05_01_163059_create_vote_collections_table.php delete mode 100644 app/database/migrations/2021_05_01_165716_add_index_on_vote_collections_table.php delete mode 100644 app/database/migrations/2021_05_08_084645_recreate_votes_table.php delete mode 100644 app/database/migrations/2021_05_08_091915_add_vote_collection_id_on_votes_table.php delete mode 100644 app/database/migrations/2021_05_08_142059_add_formatted_column_to_votes_table.php delete mode 100644 app/database/migrations/2021_05_08_184611_change_column_amendment_and_formatted_on_votes_table_to_text.php delete mode 100644 app/database/migrations/2021_05_08_185600_make_reference_column_on_vote_collections_table_nullable.php delete mode 100644 app/database/migrations/2021_05_15_092214_add_remarks_column_to_votes_table.php delete mode 100644 app/database/migrations/2021_05_15_130607_set_vote_id_on_voting_list_table_to_null_on_vote_deletion.php delete mode 100644 app/database/migrations/2021_05_15_152701_add_reference_and_subheading_columns_to_votes_table.php delete mode 100644 app/database/migrations/2021_05_29_091941_add_abbreviation_and_name_on_groups_table.php delete mode 100644 app/database/migrations/2021_08_11_085327_create_summaries_table.php delete mode 100644 app/database/migrations/2021_08_11_105645_create_sessions_table.php delete mode 100644 app/database/migrations/2021_08_11_131657_add_index_on_sessions_table.php delete mode 100644 app/database/migrations/2021_08_11_132021_add_session_id_column_to_votes_table.php delete mode 100644 app/database/migrations/2021_08_11_135808_add_oeil_id_to_summaries_table.php delete mode 100644 app/database/migrations/2021_08_16_082550_increase_title_length_to_512_chars_in_vote_collections_table.php delete mode 100644 app/database/migrations/2021_08_17_161712_make_doceo_vote_id_nullable.php delete mode 100644 app/database/migrations/2021_08_20_084406_add_last_in_collection_collumn_on_votes_table.php delete mode 100644 app/database/migrations/2021_08_20_151310_fill_final_collumn_on_votes_table.php delete mode 100644 app/database/migrations/2021_08_23_162545_add_contact_field_to_members_table.php delete mode 100644 app/database/migrations/2021_08_27_095918_add_unmatched_and_notes_collumn_on_votes_table.php delete mode 100644 app/database/migrations/2022_08_04_142632_add_notes_column_on_session_table.php delete mode 100644 app/database/migrations/2022_09_20_134047_add_ignore_when_scraping_voting_lists_column_on_sessions_table.php delete mode 100644 app/database/seeds/DatabaseSeeder.php delete mode 100644 app/database/seeds/GroupSeeder.php delete mode 100644 app/database/seeds/TermSeeder.php delete mode 100644 app/package-lock.json delete mode 100644 app/package.json delete mode 100644 app/pages/about.md delete mode 100644 app/pages/imprint.md delete mode 100644 app/phpunit.xml delete mode 100644 app/public/.htaccess delete mode 100644 app/public/assets/groups/gue.svg delete mode 100644 app/public/assets/logos/logo-bmbf.svg delete mode 100644 app/public/assets/logos/logo-ptf.svg delete mode 100644 app/public/assets/placeholder.svg delete mode 100644 app/public/fonts/ibm-plex-sans-condensed-medium.woff delete mode 100644 app/public/fonts/ibm-plex-sans-condensed-medium.woff2 delete mode 100644 app/public/index.php delete mode 100644 app/public/robots.txt delete mode 100644 app/resources/css/app.css delete mode 100644 app/resources/css/components/action-panel.css delete mode 100644 app/resources/css/components/avatar.css delete mode 100644 app/resources/css/components/base-layout.css delete mode 100644 app/resources/css/components/button.css delete mode 100644 app/resources/css/components/callout.css delete mode 100644 app/resources/css/components/empty-state.css delete mode 100644 app/resources/css/components/error-page.css delete mode 100644 app/resources/css/components/footer.css delete mode 100644 app/resources/css/components/header.css delete mode 100644 app/resources/css/components/hero.css delete mode 100644 app/resources/css/components/home.css delete mode 100644 app/resources/css/components/input.css delete mode 100644 app/resources/css/components/list-item.css delete mode 100644 app/resources/css/components/list.css delete mode 100644 app/resources/css/components/loading-spinner.css delete mode 100644 app/resources/css/components/logos.css delete mode 100644 app/resources/css/components/markdown.css delete mode 100644 app/resources/css/components/member-header.css delete mode 100644 app/resources/css/components/position-select.css delete mode 100644 app/resources/css/components/search-form.css delete mode 100644 app/resources/css/components/search-results-page.css delete mode 100644 app/resources/css/components/session-display.css delete mode 100644 app/resources/css/components/stack.css delete mode 100644 app/resources/css/components/tab-button.css delete mode 100644 app/resources/css/components/tabs.css delete mode 100644 app/resources/css/components/thumb.css delete mode 100644 app/resources/css/components/vote-card.css delete mode 100644 app/resources/css/components/vote-result-chart.css delete mode 100644 app/resources/css/components/voting-list-header.css delete mode 100644 app/resources/css/components/wrapper.css delete mode 100644 app/resources/css/global/alpine.css delete mode 100644 app/resources/css/global/base.css delete mode 100644 app/resources/css/global/fonts.css delete mode 100644 app/resources/css/global/typography.css delete mode 100644 app/resources/css/global/utils.css delete mode 100644 app/resources/css/variables.css delete mode 100644 app/resources/js/app.js delete mode 100644 app/resources/js/components/eye.js delete mode 100644 app/resources/js/components/list-item.js delete mode 100644 app/resources/js/components/search-results-page.js delete mode 100644 app/resources/lang/en/auth.php delete mode 100644 app/resources/lang/en/components.php delete mode 100644 app/resources/lang/en/enums.php delete mode 100644 app/resources/lang/en/errors.php delete mode 100644 app/resources/lang/en/members.php delete mode 100644 app/resources/lang/en/pagination.php delete mode 100644 app/resources/lang/en/passwords.php delete mode 100644 app/resources/lang/en/session.php delete mode 100644 app/resources/lang/en/share.php delete mode 100644 app/resources/lang/en/validation.php delete mode 100644 app/resources/lang/en/votes.php delete mode 100644 app/resources/lang/en/voting-lists.php delete mode 100644 app/resources/views/components/action-panel.blade.php delete mode 100644 app/resources/views/components/app.blade.php delete mode 100644 app/resources/views/components/avatar.blade.php delete mode 100644 app/resources/views/components/base-layout.blade.php delete mode 100644 app/resources/views/components/button.blade.php delete mode 100644 app/resources/views/components/callout.blade.php delete mode 100644 app/resources/views/components/cc-logo.blade.php delete mode 100644 app/resources/views/components/country-list-item.blade.php delete mode 100644 app/resources/views/components/empty-state.blade.php delete mode 100644 app/resources/views/components/error-page.blade.php delete mode 100644 app/resources/views/components/eyes.blade.php delete mode 100644 app/resources/views/components/footer.blade.php delete mode 100644 app/resources/views/components/group-list-item.blade.php delete mode 100644 app/resources/views/components/header.blade.php delete mode 100644 app/resources/views/components/hero.blade.php delete mode 100644 app/resources/views/components/input.blade.php delete mode 100644 app/resources/views/components/list-item.blade.php delete mode 100644 app/resources/views/components/list.blade.php delete mode 100644 app/resources/views/components/loading-spinner.blade.php delete mode 100644 app/resources/views/components/logos.blade.php delete mode 100644 app/resources/views/components/markdown.blade.php delete mode 100644 app/resources/views/components/member-list-item.blade.php delete mode 100644 app/resources/views/components/member/header.blade.php delete mode 100644 app/resources/views/components/position-select.blade.php delete mode 100644 app/resources/views/components/search-form.blade.php delete mode 100644 app/resources/views/components/search-input.blade.php delete mode 100644 app/resources/views/components/search-results-page.blade.php delete mode 100644 app/resources/views/components/search-results-page/empty-state.blade.php delete mode 100644 app/resources/views/components/search-results-page/load-more-button.blade.php delete mode 100644 app/resources/views/components/search-results-page/noscript-fallback.blade.php delete mode 100644 app/resources/views/components/search-results-page/result.blade.php delete mode 100644 app/resources/views/components/search-results-page/results-count.blade.php delete mode 100644 app/resources/views/components/search-results-page/results.blade.php delete mode 100644 app/resources/views/components/session-display.blade.php delete mode 100644 app/resources/views/components/share-button.blade.php delete mode 100644 app/resources/views/components/share-picture.blade.php delete mode 100644 app/resources/views/components/stack.blade.php delete mode 100644 app/resources/views/components/tab-button.blade.php delete mode 100644 app/resources/views/components/tab-panel.blade.php delete mode 100644 app/resources/views/components/tabs.blade.php delete mode 100644 app/resources/views/components/thumb.blade.php delete mode 100644 app/resources/views/components/vote-card.blade.php delete mode 100644 app/resources/views/components/vote-result-chart-bar.blade.php delete mode 100644 app/resources/views/components/vote-result-chart.blade.php delete mode 100644 app/resources/views/components/voting-list/callout.blade.php delete mode 100644 app/resources/views/components/voting-list/countries-list.blade.php delete mode 100644 app/resources/views/components/voting-list/download-panel.blade.php delete mode 100644 app/resources/views/components/voting-list/groups-list.blade.php delete mode 100644 app/resources/views/components/voting-list/header.blade.php delete mode 100644 app/resources/views/components/voting-list/members-list.blade.php delete mode 100644 app/resources/views/components/voting-list/related-panel.blade.php delete mode 100644 app/resources/views/components/wrapper.blade.php delete mode 100644 app/resources/views/errors/404.blade.php delete mode 100644 app/resources/views/errors/500.blade.php delete mode 100644 app/resources/views/errors/503.blade.php delete mode 100644 app/resources/views/home.blade.php delete mode 100644 app/resources/views/members/show.blade.php delete mode 100644 app/resources/views/monitoring/index.blade.php delete mode 100644 app/resources/views/monitoring/show.blade.php delete mode 100644 app/resources/views/pages/show.blade.php delete mode 100644 app/resources/views/voting-lists/index.blade.php delete mode 100644 app/resources/views/voting-lists/related.blade.php delete mode 100644 app/resources/views/voting-lists/share-picture.blade.php delete mode 100644 app/resources/views/voting-lists/show.blade.php delete mode 100644 app/resources/views/voting-lists/summary.blade.php delete mode 100644 app/routes/api.php delete mode 100644 app/routes/channels.php delete mode 100644 app/routes/console.php delete mode 100644 app/routes/web.php delete mode 100644 app/server.php delete mode 100644 app/storage/app/.gitignore delete mode 100644 app/storage/framework/.gitignore delete mode 100644 app/storage/framework/cache/.gitignore delete mode 100644 app/storage/framework/cache/data/.gitignore delete mode 100644 app/storage/framework/sessions/.gitignore delete mode 100644 app/storage/framework/testing/.gitignore delete mode 100644 app/storage/framework/views/.gitignore delete mode 100644 app/storage/logs/.gitignore delete mode 100644 app/tests/CreatesApplication.php delete mode 100644 app/tests/Feature/.gitkeep delete mode 100644 app/tests/Feature/Http/Members/ShowTest.php delete mode 100644 app/tests/Feature/Http/Monitoring/IndexTest.php delete mode 100644 app/tests/Feature/Http/Pages/ShowTest.php delete mode 100644 app/tests/Feature/Http/VotingLists/CsvTest.php delete mode 100644 app/tests/Feature/Http/VotingLists/IndexTest.php delete mode 100644 app/tests/Feature/Http/VotingLists/JsonTest.php delete mode 100644 app/tests/Feature/Http/VotingLists/RelatedTest.php delete mode 100644 app/tests/Feature/Http/VotingLists/SharePicturesTest.php delete mode 100644 app/tests/Feature/Http/VotingLists/ShowTest.php delete mode 100644 app/tests/Feature/Http/VotingLists/SummaryTest.php delete mode 100644 app/tests/Pest.php delete mode 100644 app/tests/TestCase.php delete mode 100644 app/tests/Unit/Actions/CompileStatsActionTest.php delete mode 100644 app/tests/Unit/Actions/GenerateVoteSharePicActionTest.php delete mode 100644 app/tests/Unit/Actions/MatchVotesAndVotingListsActionTest.php delete mode 100644 app/tests/Unit/Actions/ScrapeActionTest.php delete mode 100644 app/tests/Unit/Actions/ScrapeMemberGroupsActionTest.php delete mode 100644 app/tests/Unit/Actions/ScrapeMemberInfoActionTest.php delete mode 100644 app/tests/Unit/Actions/ScrapeMembersActionTest.php delete mode 100644 app/tests/Unit/Actions/ScrapeSessionsActionTest.php delete mode 100644 app/tests/Unit/Actions/ScrapeSummaryActionTest.php delete mode 100644 app/tests/Unit/Actions/ScrapeVoteCollectionsActionTest.php delete mode 100644 app/tests/Unit/Actions/ScrapeVotingListsActionTest.php delete mode 100644 app/tests/Unit/Components/ButtonTest.php delete mode 100644 app/tests/Unit/Components/PositionSelectTest.php delete mode 100644 app/tests/Unit/Components/SessionDisplayTest.php delete mode 100644 app/tests/Unit/Components/ThumbTest.php delete mode 100644 app/tests/Unit/Components/VoteResultChartBarTest.php delete mode 100644 app/tests/Unit/Components/VoteResultChartTest.php delete mode 100644 app/tests/Unit/Enums/CountryEnumTest.php delete mode 100644 app/tests/Unit/GroupMembershipTest.php delete mode 100644 app/tests/Unit/MemberTest.php delete mode 100644 app/tests/Unit/Mixins/CollectionMixinTest.php delete mode 100644 app/tests/Unit/Mixins/ComponentAttributeBagMixinTest.php delete mode 100644 app/tests/Unit/Mixins/StrMixinTest.php delete mode 100644 app/tests/Unit/SessionTest.php delete mode 100644 app/tests/Unit/SummaryTest.php delete mode 100644 app/tests/Unit/TermTest.php delete mode 100644 app/tests/Unit/VoteTest.php delete mode 100644 app/tests/Unit/VotingListTest.php delete mode 100644 app/tests/data/hello.json delete mode 100644 app/tests/data/member_groups-2.json delete mode 100644 app/tests/data/member_groups.json delete mode 100644 app/tests/data/member_info.json delete mode 100644 app/tests/data/members.json delete mode 100644 app/tests/data/sessions_obs.json delete mode 100644 app/tests/data/sessions_parl.json delete mode 100644 app/tests/data/summary.json delete mode 100644 app/tests/data/summary_id.json delete mode 100644 app/tests/data/vote_collections-no-reference.json delete mode 100644 app/tests/data/vote_collections.json delete mode 100644 app/tests/data/voting_lists-2.json delete mode 100644 app/tests/data/voting_lists-3.json delete mode 100644 app/tests/data/voting_lists-4.json delete mode 100644 app/tests/data/voting_lists-5.json delete mode 100644 app/tests/data/voting_lists-6.json delete mode 100644 app/tests/data/voting_lists-7.json delete mode 100644 app/tests/data/voting_lists.json delete mode 100644 app/webpack.mix.js rename {scrapers => backend}/.coveragerc (100%) create mode 100644 backend/.dockerignore rename {scrapers => backend}/.editorconfig (100%) rename {scrapers => backend}/.gitignore (96%) create mode 100644 backend/Dockerfile create mode 100644 backend/Makefile create mode 100644 backend/howtheyvote/__init__.py create mode 100644 backend/howtheyvote/alembic/alembic.ini create mode 100644 backend/howtheyvote/alembic/env.py create mode 100644 backend/howtheyvote/alembic/script.py.mako create mode 100644 backend/howtheyvote/alembic/versions/3eec8050f4d5_add_eurovoc_concepts_column.py create mode 100644 backend/howtheyvote/alembic/versions/9200b9028b93_create_timestamp_index_on_votes_table.py create mode 100644 backend/howtheyvote/alembic/versions/9a4972f3a768_init.py create mode 100644 backend/howtheyvote/analysis/__init__.py create mode 100644 backend/howtheyvote/analysis/votes.py create mode 100644 backend/howtheyvote/api/__init__.py create mode 100644 backend/howtheyvote/api/openapi_helpers.py create mode 100644 backend/howtheyvote/api/openapi_spec.py create mode 100644 backend/howtheyvote/api/query.py create mode 100644 backend/howtheyvote/api/serializers.py create mode 100644 backend/howtheyvote/api/sessions_api.py create mode 100644 backend/howtheyvote/api/static_api.py create mode 100644 backend/howtheyvote/api/stats_api.py create mode 100644 backend/howtheyvote/api/votes_api.py create mode 100644 backend/howtheyvote/cli/__init__.py create mode 100644 backend/howtheyvote/cli/aggregate.py create mode 100644 backend/howtheyvote/cli/dev.py create mode 100644 backend/howtheyvote/cli/pipeline.py create mode 100644 backend/howtheyvote/cli/system.py create mode 100644 backend/howtheyvote/cli/temp.py create mode 100644 backend/howtheyvote/config.py create mode 100644 backend/howtheyvote/data.py create mode 100644 backend/howtheyvote/data/countries.json create mode 100644 backend/howtheyvote/data/eurovoc.json create mode 100644 backend/howtheyvote/data/groups.json create mode 100644 backend/howtheyvote/db.py create mode 100644 backend/howtheyvote/files.py create mode 100644 backend/howtheyvote/helpers.py create mode 100644 backend/howtheyvote/json.py create mode 100644 backend/howtheyvote/meili.py create mode 100644 backend/howtheyvote/metrics.py create mode 100644 backend/howtheyvote/models/__init__.py create mode 100644 backend/howtheyvote/models/common.py create mode 100644 backend/howtheyvote/models/country.py create mode 100644 backend/howtheyvote/models/eurovoc.py create mode 100644 backend/howtheyvote/models/group.py create mode 100644 backend/howtheyvote/models/member.py create mode 100644 backend/howtheyvote/models/press_release.py create mode 100644 backend/howtheyvote/models/session.py create mode 100644 backend/howtheyvote/models/types.py create mode 100644 backend/howtheyvote/models/vote.py create mode 100644 backend/howtheyvote/pipelines/__init__.py create mode 100644 backend/howtheyvote/pipelines/common.py create mode 100644 backend/howtheyvote/pipelines/members.py create mode 100644 backend/howtheyvote/pipelines/press.py create mode 100644 backend/howtheyvote/pipelines/rcv_list.py create mode 100644 backend/howtheyvote/pipelines/sessions.py create mode 100644 backend/howtheyvote/query.py create mode 100644 backend/howtheyvote/scrapers/__init__.py create mode 100644 backend/howtheyvote/scrapers/common.py create mode 100644 backend/howtheyvote/scrapers/helpers.py create mode 100644 backend/howtheyvote/scrapers/members.py create mode 100644 backend/howtheyvote/scrapers/press_releases.py create mode 100644 backend/howtheyvote/scrapers/sessions.py create mode 100644 backend/howtheyvote/scrapers/votes.py create mode 100644 backend/howtheyvote/sharepics/__init__.py create mode 100644 backend/howtheyvote/sharepics/cdp.py create mode 100644 backend/howtheyvote/store/__init__.py create mode 100644 backend/howtheyvote/store/aggregator.py create mode 100644 backend/howtheyvote/store/index.py create mode 100644 backend/howtheyvote/store/mappings.py create mode 100644 backend/howtheyvote/store/writer.py create mode 100644 backend/howtheyvote/worker/__init__.py create mode 100644 backend/howtheyvote/worker/worker.py create mode 100644 backend/howtheyvote/wsgi.py create mode 100644 backend/poetry.lock create mode 100644 backend/poetry.toml create mode 100644 backend/pyproject.toml create mode 100644 backend/tests/api/test_openapi_helpers.py create mode 100644 backend/tests/api/test_query.py create mode 100644 backend/tests/api/test_sessions_api.py create mode 100644 backend/tests/api/test_votes_api.py create mode 100644 backend/tests/conftest.py create mode 100644 backend/tests/models/test_country.py create mode 100644 backend/tests/models/test_eurovoc.py create mode 100644 backend/tests/models/test_group.py create mode 100644 backend/tests/models/test_member.py create mode 100644 backend/tests/models/test_types.py create mode 100644 backend/tests/models/test_vote.py create mode 100644 backend/tests/pipelines/test_rcv_list.py rename {scrapers/ep_votes => backend/tests/scrapers}/__init__.py (100%) rename scrapers/tests/data/member_groups_adinolfi_term_9.html => backend/tests/scrapers/data/members/member_groups_adinolfi_term_8.html (80%) rename scrapers/tests/data/member_groups_adinolfi_term_8.html => backend/tests/scrapers/data/members/member_groups_adinolfi_term_9.html (100%) rename {scrapers/tests/data => backend/tests/scrapers/data/members}/member_groups_sonneborn_term_8.html (100%) rename {scrapers/tests/data => backend/tests/scrapers/data/members}/member_groups_sonneborn_term_9.html (100%) rename {scrapers/tests/data => backend/tests/scrapers/data/members}/member_info_adinolfi_home.html (100%) rename {scrapers/tests/data => backend/tests/scrapers/data/members}/member_info_sonneborn_home.html (100%) rename {scrapers/tests/data => backend/tests/scrapers/data/members}/member_info_weber_home.html (100%) rename {scrapers/tests/data => backend/tests/scrapers/data/members}/members_directory_term_8.xml (100%) rename {scrapers/tests/data => backend/tests/scrapers/data/members}/members_directory_term_9.xml (100%) create mode 100644 backend/tests/scrapers/data/votes/eurlex-document_p9-a-2021-0270.html create mode 100644 backend/tests/scrapers/data/votes/eurlex-document_p9-a-2023-0369.html create mode 100644 backend/tests/scrapers/data/votes/eurlex-procedure_2021-106.html create mode 100644 backend/tests/scrapers/data/votes/eurlex-procedure_2023-102.html rename scrapers/tests/data/summary_id_ficheprocedure_a9-0115-2021.html => backend/tests/scrapers/data/votes/procedure_ficheprocedure-2022-2201-ini.html (79%) rename scrapers/tests/data/summary_id_ficheprocedure_a9-0141-2019.html => backend/tests/scrapers/data/votes/procedure_ficheprocedure-2022-2852-rsp.html (65%) create mode 100644 backend/tests/scrapers/data/votes/procedure_ficheprocedure-2023-2019-ini.html rename scrapers/tests/data/voting_lists_pv-9-2020-07-23-rcv-fr.xml => backend/tests/scrapers/data/votes/rcv_list_incorrect_pv-9-2020-07-23-rcv-fr.xml (85%) create mode 100644 backend/tests/scrapers/data/votes/rcv_list_p9-pv(2020)07-23(rcv)_xc.xml create mode 100644 backend/tests/scrapers/data/votes/rcv_list_pv-9-2019-07-15-rcv-fr.xml create mode 100644 backend/tests/scrapers/data/votes/rcv_list_pv-9-2020-07-23-rcv-fr.xml create mode 100644 backend/tests/scrapers/data/votes/rcv_list_pv-9-2020-09-15-rcv-fr.xml create mode 100644 backend/tests/scrapers/data/votes/rcv_list_pv-9-2023-12-12-rcv-fr.xml create mode 100644 backend/tests/scrapers/helpers.py create mode 100644 backend/tests/scrapers/test_common.py create mode 100644 backend/tests/scrapers/test_helpers.py create mode 100644 backend/tests/scrapers/test_members.py create mode 100644 backend/tests/scrapers/test_votes.py create mode 100644 backend/tests/store/test_aggregator.py create mode 100644 backend/tests/store/test_mappings.py create mode 100644 backend/tests/store/test_writer.py create mode 100644 backend/tests/test_data.py create mode 100644 backend/tests/test_helpers.py create mode 100644 backend/tests/test_query.py create mode 100644 backend/tests/worker/test_worker.py create mode 100644 caddy/Caddyfile create mode 100644 docker-compose.override.yml create mode 100644 docs/architecture.md create mode 100644 docs/data-sources.md create mode 100644 docs/design-premises.md delete mode 100644 docs/er-diagram.svg create mode 100644 docs/fragments.md delete mode 100644 docs/logo-bmbf.svg delete mode 100644 docs/logo-ptf.svg create mode 100644 docs/pipelines.md create mode 100644 frontend/.dockerignore create mode 100644 frontend/.editorconfig create mode 100644 frontend/.gitignore create mode 100644 frontend/Dockerfile create mode 100644 frontend/Makefile create mode 100644 frontend/biome.json create mode 100644 frontend/package-lock.json create mode 100644 frontend/package.json create mode 100755 frontend/scripts/manifest create mode 100755 frontend/scripts/watch create mode 100644 frontend/src/api/generated/ApiClient.ts create mode 100644 frontend/src/api/generated/core/ApiError.ts create mode 100644 frontend/src/api/generated/core/ApiRequestOptions.ts create mode 100644 frontend/src/api/generated/core/ApiResult.ts create mode 100644 frontend/src/api/generated/core/BaseHttpRequest.ts create mode 100644 frontend/src/api/generated/core/CancelablePromise.ts create mode 100644 frontend/src/api/generated/core/FetchHttpRequest.ts create mode 100644 frontend/src/api/generated/core/OpenAPI.ts create mode 100644 frontend/src/api/generated/core/request.ts create mode 100644 frontend/src/api/generated/core/types.ts create mode 100644 frontend/src/api/generated/index.ts create mode 100644 frontend/src/api/generated/models.ts create mode 100644 frontend/src/api/generated/services/MiscellaneousService.ts create mode 100644 frontend/src/api/generated/services/PlenarySessionsService.ts create mode 100644 frontend/src/api/generated/services/VotesService.ts create mode 100644 frontend/src/api/generated/services/index.ts create mode 100644 frontend/src/api/index.ts create mode 100644 frontend/src/client.entry.ts create mode 100644 frontend/src/components/App.tsx create mode 100644 frontend/src/components/Avatar.css create mode 100644 frontend/src/components/Avatar.tsx create mode 100644 frontend/src/components/BaseLayout.css create mode 100644 frontend/src/components/BaseLayout.tsx create mode 100644 frontend/src/components/Button.css create mode 100644 frontend/src/components/Button.tsx rename app/resources/css/components/cc-logo.css => frontend/src/components/CCLogo.css (70%) create mode 100644 frontend/src/components/CCLogo.tsx create mode 100644 frontend/src/components/CountriesFilterSelect.tsx create mode 100644 frontend/src/components/CountryFlag.tsx create mode 100644 frontend/src/components/CountryStatsList.tsx create mode 100644 frontend/src/components/Disclosure.css create mode 100644 frontend/src/components/Disclosure.tsx create mode 100644 frontend/src/components/EmptyState.css create mode 100644 frontend/src/components/EmptyState.tsx create mode 100644 frontend/src/components/Eyes.tsx create mode 100644 frontend/src/components/FilterSelect.css create mode 100644 frontend/src/components/FilterSelect.tsx create mode 100644 frontend/src/components/Footer.css create mode 100644 frontend/src/components/Footer.tsx create mode 100644 frontend/src/components/GroupStatsList.tsx create mode 100644 frontend/src/components/GroupsFilterSelect.tsx create mode 100644 frontend/src/components/Header.css create mode 100644 frontend/src/components/Header.tsx create mode 100644 frontend/src/components/Hero.css create mode 100644 frontend/src/components/Hero.tsx create mode 100644 frontend/src/components/Input.css create mode 100644 frontend/src/components/Input.tsx create mode 100644 frontend/src/components/List.css create mode 100644 frontend/src/components/List.tsx create mode 100644 frontend/src/components/ListItem.css create mode 100644 frontend/src/components/ListItem.tsx create mode 100644 frontend/src/components/MemberVotesList.css create mode 100644 frontend/src/components/MemberVotesList.test.tsx create mode 100644 frontend/src/components/MemberVotesList.tsx create mode 100644 frontend/src/components/Pagination.css create mode 100644 frontend/src/components/Pagination.tsx create mode 100644 frontend/src/components/PositionFilterSelect.tsx create mode 100644 frontend/src/components/SearchForm.css create mode 100644 frontend/src/components/SearchForm.tsx rename app/resources/css/components/share-button.css => frontend/src/components/ShareButton.css (100%) create mode 100644 frontend/src/components/ShareButton.tsx create mode 100644 frontend/src/components/Sources.tsx create mode 100644 frontend/src/components/Stack.css create mode 100644 frontend/src/components/Stack.tsx create mode 100644 frontend/src/components/Stats.css create mode 100644 frontend/src/components/Stats.tsx create mode 100644 frontend/src/components/StatsCard.css create mode 100644 frontend/src/components/StatsCard.tsx create mode 100644 frontend/src/components/Tabs.css create mode 100644 frontend/src/components/Tabs.tsx create mode 100644 frontend/src/components/Tag.css create mode 100644 frontend/src/components/Tag.tsx create mode 100644 frontend/src/components/Thumb.css create mode 100644 frontend/src/components/Thumb.tsx create mode 100644 frontend/src/components/VoteCard.css create mode 100644 frontend/src/components/VoteCard.tsx create mode 100644 frontend/src/components/VoteCards.css create mode 100644 frontend/src/components/VoteCards.tsx create mode 100644 frontend/src/components/VoteHeader.css create mode 100644 frontend/src/components/VoteHeader.tsx create mode 100644 frontend/src/components/VoteResultChart.css create mode 100644 frontend/src/components/VoteResultChart.tsx rename app/resources/css/components/share-picture.css => frontend/src/components/VoteSharepic.css (80%) create mode 100644 frontend/src/components/VoteSharepic.tsx create mode 100644 frontend/src/components/VoteTabs.tsx create mode 100644 frontend/src/components/Wrapper.css create mode 100644 frontend/src/components/Wrapper.tsx create mode 100644 frontend/src/config.ts create mode 100644 frontend/src/css/base.css create mode 100644 frontend/src/css/fonts.css create mode 100644 frontend/src/css/typography.css create mode 100644 frontend/src/css/utils.css create mode 100644 frontend/src/css/variables.css create mode 100644 frontend/src/cssLoader.js create mode 100644 frontend/src/lib/bem.ts create mode 100644 frontend/src/lib/bots.test.ts create mode 100644 frontend/src/lib/bots.ts create mode 100644 frontend/src/lib/caching.ts create mode 100644 frontend/src/lib/dates.ts create mode 100644 frontend/src/lib/http.ts create mode 100644 frontend/src/lib/islands.test.tsx create mode 100644 frontend/src/lib/islands.tsx create mode 100644 frontend/src/lib/links.ts create mode 100644 frontend/src/lib/logging.ts create mode 100644 frontend/src/lib/normalization.test.ts create mode 100644 frontend/src/lib/normalization.ts create mode 100644 frontend/src/lib/serialization.ts create mode 100644 frontend/src/lib/server.ts create mode 100644 frontend/src/pages/AboutPage.tsx create mode 100644 frontend/src/pages/DevelopersPage.tsx create mode 100644 frontend/src/pages/ErrorPage.css create mode 100644 frontend/src/pages/ErrorPage.tsx create mode 100644 frontend/src/pages/HomePage.css create mode 100644 frontend/src/pages/HomePage.tsx create mode 100644 frontend/src/pages/ImprintPage.tsx create mode 100644 frontend/src/pages/SearchPage.tsx create mode 100644 frontend/src/pages/ShowVotePage.tsx create mode 100644 frontend/src/pages/VoteSharepicPage.tsx create mode 100644 frontend/src/server.entry.ts create mode 100644 frontend/src/setupTests.js rename app/public/assets/home.jpg => frontend/static/bg-dark.jpg (100%) rename app/public/assets/icon-32px.png => frontend/static/favicon-32px.png (100%) create mode 100644 frontend/static/fonts/ibm-plex-sans-condensed-semibold.woff create mode 100644 frontend/static/fonts/ibm-plex-sans-condensed-semibold.woff2 create mode 100644 frontend/static/fonts/ibm-plex-sans-medium.woff create mode 100644 frontend/static/fonts/ibm-plex-sans-medium.woff2 rename {app/public => frontend/static}/fonts/ibm-plex-sans-regular.woff (100%) rename {app/public => frontend/static}/fonts/ibm-plex-sans-regular.woff2 (100%) rename {app/public => frontend/static}/fonts/ibm-plex-sans-semibold.woff (100%) rename {app/public => frontend/static}/fonts/ibm-plex-sans-semibold.woff2 (100%) rename {app/public/assets => frontend/static}/groups/alde.svg (100%) rename {app/public/assets => frontend/static}/groups/ecr.svg (100%) rename app/public/assets/groups/efdd.svg => frontend/static/groups/efd.svg (100%) rename {app/public/assets => frontend/static}/groups/enf.svg (100%) rename {app/public/assets => frontend/static}/groups/epp.svg (100%) rename app/public/assets/groups/greens.svg => frontend/static/groups/green_efa.svg (100%) rename app/public/assets/groups/left.svg => frontend/static/groups/gue_ngl.svg (100%) rename {app/public/assets => frontend/static}/groups/id.svg (100%) rename {app/public/assets => frontend/static}/groups/ni.svg (100%) rename {app/public/assets => frontend/static}/groups/renew.svg (100%) rename {app/public/assets => frontend/static}/groups/sd.svg (100%) rename {app/public/assets => frontend/static}/icons.svg (98%) create mode 100644 frontend/static/manifest.json create mode 100644 frontend/static/notifications-icon.png rename app/public/assets/default-share-picture.png => frontend/static/sharepic-default.png (100%) create mode 100644 frontend/static/spotlight/8.1.0/styles.min.css create mode 100644 frontend/static/spotlight/8.1.0/web-components.min.js create mode 100644 frontend/static/spotlight/8.1.0/web-components.min.js.LICENSE.txt rename app/public/assets/icon-180px.png => frontend/static/touch-icon-180px.png (100%) create mode 100644 frontend/tsconfig.json delete mode 100644 mariadb/.gitignore delete mode 100644 mariadb/Dockerfile delete mode 100644 mariadb/docker-entrypoint-initdb.d/init.sql delete mode 100644 mariadb/dump/dump-development.sql delete mode 100755 mariadb/dump/export_database.sh delete mode 100755 mariadb/dump/import_database.sh delete mode 100644 scrapers/.env.example delete mode 100644 scrapers/.flake8 delete mode 100644 scrapers/Dockerfile delete mode 100644 scrapers/Makefile delete mode 100644 scrapers/README.md delete mode 100644 scrapers/ep_votes/api.py delete mode 100644 scrapers/ep_votes/helpers.py delete mode 100644 scrapers/ep_votes/models.py delete mode 100644 scrapers/ep_votes/scrapers.py delete mode 100644 scrapers/mypy.ini delete mode 100644 scrapers/poetry.lock delete mode 100644 scrapers/pyproject.toml delete mode 100644 scrapers/tests/__init__.py delete mode 100644 scrapers/tests/data/observatory_sessions_calendar-2021-11.json delete mode 100644 scrapers/tests/data/parliament_sessions_calendar-term9.json delete mode 100644 scrapers/tests/data/summary_1651118.html delete mode 100644 scrapers/tests/data/summary_id_ficheprocedure_a9-0149-2021.html delete mode 100644 scrapers/tests/data/summary_id_ficheprocedure_b9-0116-2021.html delete mode 100644 scrapers/tests/data/vote_collections_p8_pv(2019)03-26(vot)_en.xml delete mode 100644 scrapers/tests/data/vote_collections_pv-9-2021-09-03-vot-en.xml delete mode 100644 scrapers/tests/data/voting_lists_p8_pv(2019)03-26(rcv)_xc.xml delete mode 100644 scrapers/tests/data/voting_lists_pv-9-2019-10-22-rcv-fr.xml delete mode 100644 scrapers/tests/data/voting_lists_pv-9-2021-09-03-rcv-fr.xml delete mode 100644 scrapers/tests/test_api.py delete mode 100644 scrapers/tests/test_helpers.py delete mode 100644 scrapers/tests/test_models.py delete mode 100644 scrapers/tests/test_scrapers.py delete mode 100755 scripts/scrape-votes.sh rename {app/bootstrap/cache => storage/database}/.gitignore (100%) rename {app/storage/app/public => storage/files}/.gitignore (100%) diff --git a/.editorconfig b/.editorconfig index 5000f80fb..930ad8469 100644 --- a/.editorconfig +++ b/.editorconfig @@ -16,3 +16,6 @@ indent_size = 2 [*.js] indent_size = 2 + +[*.{html,html.j2}] +indent_size = 2 diff --git a/.env.template b/.env.template new file mode 100644 index 000000000..dc7184336 --- /dev/null +++ b/.env.template @@ -0,0 +1,4 @@ +HTV_BACKEND_PUBLIC_URL=https://localhost/api +HTV_FRONTEND_PUBLIC_URL=https://localhost +CADDY_SITE_ADDRESS=localhost +MEILI_MASTER_KEY= diff --git a/.gitattributes b/.gitattributes index bf5ad3aff..d6acb2af0 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,2 +1 @@ -app/tests/data/* linguist-vendored -scrapers/tests/data/* linguist-vendored +backend/tests/scrapers/data/* linguist-vendored diff --git a/.github/dependabot.yml b/.github/dependabot.yml deleted file mode 100644 index 0bfb36132..000000000 --- a/.github/dependabot.yml +++ /dev/null @@ -1,31 +0,0 @@ -version: 2 -updates: - - package-ecosystem: "pip" - directory: "/scrapers" - ignore: - - dependency-name: "*" - update-types: ["version-update:semver-patch"] - schedule: - interval: "monthly" - - package-ecosystem: "docker" - directory: "/scrapers" - schedule: - interval: "monthly" - - package-ecosystem: "composer" - directory: "/app" - ignore: - - dependency-name: "*" - update-types: ["version-update:semver-patch"] - schedule: - interval: "monthly" - - package-ecosystem: "npm" - directory: "/app" - ignore: - - dependency-name: "*" - update-types: ["version-update:semver-patch"] - schedule: - interval: "monthly" - - package-ecosystem: "docker" - directory: "/app" - schedule: - interval: "monthly" diff --git a/.github/workflows/backend.yml b/.github/workflows/backend.yml new file mode 100644 index 000000000..9b92f4e9c --- /dev/null +++ b/.github/workflows/backend.yml @@ -0,0 +1,55 @@ +name: Backend CI + +on: + push: + branches: ["main"] + pull_request: {} + +jobs: + build: + runs-on: ubuntu-latest + + defaults: + run: + working-directory: ./backend + + services: + meilisearch: + image: "getmeili/meilisearch:v1.3.1" + ports: ["7700:7700"] + env: + MEILI_MASTER_KEY: "1234567890" + + steps: + - name: Checkout repo + uses: actions/checkout@v4 + + - name: Install poetry + run: pipx install poetry + + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: "3.12" + cache: "poetry" + cache-dependency-path: "./backend/poetry.lock" + + - name: Install dependencies + run: poetry install + + - name: Check formatting + run: make format-check + + - name: Run linter + run: make lint + + - name: Run types + run: make typecheck + + - name: Run tests + run: make test + env: + HTV_BACKEND_DATABASE_URI: "sqlite:///${{ github.workspace }}/storage/database/database.sqlite3" + HTV_BACKEND_USERS_DATABASE_URI: "sqlite:///${{ github.workspace }}/storage/database/users.sqlite3" + MEILI_MASTER_KEY: "1234567890" + MEILI_URL: "http://localhost:7700" diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml deleted file mode 100644 index 4e2f5b5e6..000000000 --- a/.github/workflows/ci.yml +++ /dev/null @@ -1,185 +0,0 @@ -name: CI -on: - - push - - workflow_dispatch - -jobs: - scrapers: - runs-on: ubuntu-latest - - defaults: - run: - working-directory: scrapers - - steps: - - name: Set up Python - uses: actions/setup-python@v4 - with: - python-version: '3.10' - - - uses: actions/checkout@v2 - - - name: Cache python packages - uses: actions/cache@v2 - env: - cache-name: cache-python-packages - with: - path: ${{ env.HOME }}/.cache/pypoetry - key: ${{ runner.os }}-${{ env.cache-name }}-${{ hashFiles('**/poetry.lock') }} - restore-keys: | - ${{ runner.os }}-${{ env.cache-name }}- - ${{ runner.os }}- - - - name: Install poetry - run: pip install poetry - - - name: Install dependencies - run: poetry install - - - name: Lint with flake8 - run: make lint - - - name: Check types with mypy - run: make types - - - name: Test with pytest - run: make tests - - - name: Convert coverage report to XML - run: make coverage - - - name: Upload coverage report to codecov.io - uses: codecov/codecov-action@v1 - with: - token: ${{ secrets.CODECOV_TOKEN }} - files: ./scrapers/coverage.xml - flags: scrapers - - app: - runs-on: ubuntu-latest - - defaults: - run: - working-directory: app - - services: - mariadb: - image: mariadb:10.5.5 - ports: - - '3306:3306' - env: - MYSQL_DATABASE: tests - MYSQL_USER: laravel - MYSQL_PASSWORD: laravel - MYSQL_ROOT_PASSWORD: laravel - options: >- - --health-cmd="mariadb-admin ping" - --health-interval=10s - --health-timeout=5s - --health-retries=5 - - env: - APP_ENV: testing - # Use this key for testing purposes only - APP_KEY: base64:aZ+X6o+vmxSZD8RtLYTpQ5NlQ7SXOgmz5CYjG9faFdU= - DB_USERNAME: laravel - DB_PASSWORD: laravel - DB_HOST: '127.0.0.1' - - steps: - - name: Setup PHP - uses: shivammathur/setup-php@v2 - with: - php-version: '8.1' - coverage: pcov - - - uses: actions/checkout@v2 - - - name: Cache php packages - uses: actions/cache@v2 - env: - cache-name: cache-php-packages - with: - path: ./vendor - key: ${{ runner.os }}-${{ env.cache-name }}-${{ hashFiles('**/composer.lock') }} - restore-keys: | - ${{ runner.os }}-${{ env.cache-name }}- - ${{ runner.os }}- - - - name: Install PHP dependencies - run: composer install --no-interaction - - - name: Install Node.js dependencies - run: npm ci - - - name: Build frontend assets - run: npm run prod - - - name: Check code style with PHP CS Fixer - run: composer cs - - - name: Test with pest - run: composer test-with-coverage - - - name: Upload coverage report to codecov.io - uses: codecov/codecov-action@v1 - with: - token: ${{ secrets.CODECOV_TOKEN }} - files: ./app/coverage.xml - flags: app - - frontend: - runs-on: ubuntu-latest - - defaults: - run: - working-directory: app - - steps: - - uses: actions/checkout@v2 - - - name: Install dependencies - run: npm ci - - - name: Check formatting with Prettier - run: npm run prettier - - deploy: - needs: [app, scrapers, frontend] - if: github.ref == 'refs/heads/main' && github.event_name == 'workflow_dispatch' - runs-on: ubuntu-latest - concurrency: deployment - - defaults: - run: - working-directory: ansible - - steps: - - uses: actions/checkout@v2 - - - run: | - mkdir ~/.ssh - echo "${{ secrets.EPVPROD_PUBLIC}}" >> ~/.ssh/known_hosts - echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_rsa - chmod 600 ~/.ssh/id_rsa - - - name: Cache Ansible installation - uses: actions/cache@v2 - with: - path: ~/.cache/pip - key: ${{ runner.os }}-pip-ansible - - - name: Install Ansible - run: pip3 install ansible - - - name: Install Ansible collection - run: ansible-galaxy collection install community.general - - - name: Create Ansible Vault password file - run: echo "${{ secrets.ANSIBLE_VAULT_PASSWORD }}" > ansible-vault.pass - - - name: Run Ansible playbook - run: ansible-playbook site.yml -i ./hosts --vault-password-file ansible-vault.pass - - - name: Delete secret files - run: rm ansible-vault.pass && rm ~/.ssh/id_rsa diff --git a/.github/workflows/frontend.yml b/.github/workflows/frontend.yml new file mode 100644 index 000000000..040cc3f2b --- /dev/null +++ b/.github/workflows/frontend.yml @@ -0,0 +1,34 @@ +name: Frontend CI + +on: + push: + branches: ["main"] + pull_request: {} + +jobs: + build: + runs-on: ubuntu-latest + + defaults: + run: + working-directory: ./frontend + + steps: + - name: Checkout repo + uses: actions/checkout@v4 + + - name: Set up Node.js + uses: actions/setup-node@v4 + with: + node-version: "20" + cache: "npm" + cache-dependency-path: "./frontend/package-lock.json" + + - name: Install dependencies + run: npm install + + - name: Run linter + run: make lint + + - name: Run types + run: make typecheck diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 000000000..f383e2597 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,50 @@ +name: Release + +on: + workflow_dispatch: {} + +permissions: + contents: read + packages: write + +jobs: + docker: + runs-on: ubuntu-latest + + strategy: + matrix: + image: + - frontend + - backend + + steps: + - name: Checkout repo + uses: actions/checkout@v4 + + - name: Log in to the Container registry + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + # Required to build multi-platform images + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + # Automatically tags Docker images based on Git tags, branches etc. + - name: Extract metadata + id: meta + uses: docker/metadata-action@v5 + with: + images: ghcr.io/${{ github.repository }}-${{ matrix.image }} + + - name: Build and push + uses: docker/build-push-action@v5 + with: + context: ./${{ matrix.image }} + platforms: linux/arm64 + push: true + tags: ${{ steps.meta.outputs.tags }} + cache-from: type=gha + cache-to: type=gha,mode=max diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000..c17aa77ee --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.DS_STORE +.env diff --git a/.vscode/snippets.code-snippets b/.vscode/snippets.code-snippets deleted file mode 100644 index 341ae5959..000000000 --- a/.vscode/snippets.code-snippets +++ /dev/null @@ -1,25 +0,0 @@ -{ - // Place your epvotes workspace snippets here. Each snippet is defined under a snippet name and has a scope, prefix, body and - // description. Add comma separated ids of the languages where the snippet is applicable in the scope field. If scope - // is left empty or omitted, the snippet gets applied to all languages. The prefix is what is - // used to trigger the snippet and the body will be expanded and inserted. Possible variables are: - // $1, $2 for tab stops, $0 for the final cursor position, and ${1:label}, ${2:another} for placeholders. - // Placeholders with the same ids are connected. - // Example: - // "Print to console": { - // "scope": "javascript,typescript", - // "prefix": "log", - // "body": [ - // "console.log('$1');", - // "$2" - // ], - // "description": "Log output to console" - // } - "set a breakpoint": { - "scope": "php", - "prefix": "debugger", - "body": [ - "eval(\\Psy\\sh());", - ] - } -} \ No newline at end of file diff --git a/LICENSE b/LICENSE index f288702d2..0ad25db4b 100644 --- a/LICENSE +++ b/LICENSE @@ -1,5 +1,5 @@ - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 + GNU AFFERO GENERAL PUBLIC LICENSE + Version 3, 19 November 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies @@ -7,17 +7,15 @@ Preamble - The GNU General Public License is a free, copyleft license for -software and other kinds of works. + The GNU Affero General Public License is a free, copyleft license for +software and other kinds of works, specifically designed to ensure +cooperation with the community in the case of network server software. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to +our General Public Licenses are intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. +software for all its users. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you @@ -26,44 +24,34 @@ them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. + Developers that use our General Public Licenses protect your rights +with two steps: (1) assert copyright on the software, and (2) offer +you this License which gives you legal permission to copy, distribute +and/or modify the software. + + A secondary benefit of defending all users' freedom is that +improvements made in alternate versions of the program, if they +receive widespread use, become available for other developers to +incorporate. Many developers of free software are heartened and +encouraged by the resulting cooperation. However, in the case of +software used on network servers, this result may fail to come about. +The GNU General Public License permits making a modified version and +letting the public access it on a server without ever releasing its +source code to the public. + + The GNU Affero General Public License is designed specifically to +ensure that, in such cases, the modified source code becomes available +to the community. It requires the operator of a network server to +provide the source code of the modified version running there to the +users of that server. Therefore, public use of a modified version, on +a publicly accessible server, gives the public access to the source +code of the modified version. + + An older license, called the Affero General Public License and +published by Affero, was designed to accomplish similar goals. This is +a different license, not a version of the Affero GPL, but Affero has +released a new version of the Affero GPL which permits relicensing under +this license. The precise terms and conditions for copying, distribution and modification follow. @@ -72,7 +60,7 @@ modification follow. 0. Definitions. - "This License" refers to version 3 of the GNU General Public License. + "This License" refers to version 3 of the GNU Affero General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. @@ -549,35 +537,45 @@ to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. - 13. Use with the GNU Affero General Public License. + 13. Remote Network Interaction; Use with the GNU General Public License. + + Notwithstanding any other provision of this License, if you modify the +Program, your modified version must prominently offer all users +interacting with it remotely through a computer network (if your version +supports such interaction) an opportunity to receive the Corresponding +Source of your version by providing access to the Corresponding Source +from a network server at no charge, through some standard or customary +means of facilitating copying of software. This Corresponding Source +shall include the Corresponding Source for any work covered by version 3 +of the GNU General Public License that is incorporated pursuant to the +following paragraph. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single +under version 3 of the GNU General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. +but the work with which it is combined will remain governed by version +3 of the GNU General Public License. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to +the GNU Affero General Public License from time to time. Such new versions +will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General +Program specifies that a certain numbered version of the GNU Affero General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published +GNU Affero General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's +versions of the GNU Affero General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. @@ -635,40 +633,29 @@ the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or + it under the terms of the GNU Affero General Public License as published + by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU Affero General Public License for more details. - You should have received a copy of the GNU General Public License + You should have received a copy of the GNU Affero General Public License along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. - If the program does terminal interaction, make it output a short -notice like this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, your program's commands -might be different; for a GUI interface, you would use an "about box". + If your software can interact with users remotely through a computer +network, you should also make sure that it provides a way for users to +get its source. For example, if your program is a web application, its +interface could display a "Source" link that leads users to an archive +of the code. There are many ways you could offer source, and different +solutions will be better for different programs; see section 13 for the +specific requirements. You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU GPL, see +For more information on this, and how to apply and follow the GNU AGPL, see . - - The GNU General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications with -the library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. But first, please read -. diff --git a/README.md b/README.md index 795f2c734..da254d607 100644 --- a/README.md +++ b/README.md @@ -1,64 +1,59 @@ # HowTheyVote.eu -[HowTheyVote.eu](https://howtheyvote.eu) allows anyone to easily find out how Members of the European Parliament vote in plenary. +**[HowTheyVote.eu](https://howtheyvote.eu)** makes vote results of the European Parliament transparent and accessible – for citizens, journalists, and activists. -Although the results of roll-call votes are generally available on the website of the European Parliament, it is rather difficult to find out what MEPs voted on or how a particular vote turned out. This is because the necessary information has to be gathered from various websites of the Parliament. HowTheyVote.eu automatically scrapes information from multiple official sources and presents them in a simple UI. +The European Union is one of the largest democracies in the world. The European Parliament, with its 705 members from the EU’s 27 member states, represents just over 440 million Europeans. Although the Parliament publishes information such as agendas, minutes, and vote results on its website, it can be quite difficult to find out what MEPs voted on or how a particular vote turned out. HowTheyVote.eu compiles voting data from various official sources and allows anyone to search for votes and view the results. -## Development Setup +**[Read more about HowTheyVote.eu →](https://howtheyvote.eu/about)** -We use Docker for our development setup. This setup is intended for development purposes only! +## Development environment -1. Make sure ports 3306, 5000 and 8000 are free. -2. Install `docker` and `docker-compose`. You can find instruction on how to install Docker on the [Docker website](https://docs.docker.com/get-docker/). -3. Run `docker-compose run app composer install` to install PHP dependencies. -4. Run `docker-compose run app npm install` to install Node.js dependencies. -5. Run `docker-compose run app npm run dev` to build the frontend assets. Alternatively, you can run `docker-compose run app npm run watch`, to rebuild the assets automatically on file changes. -5. Run `docker-compose up`. -6. Create `.env` files based on `scrapers/.env.example` and `app/.env.example`. Afterwards, run `php artisan key:generate` inside the `app` container. -7. When creating a fresh development environment with a clean DB, execute `php artisan migrate`, `php artisan db:seed --class=GroupSeeder`, and `php artisan db:seed --class=TermSeeder` inside the `app` container (e.g. with `docker-compose exec`). Alternatively, you can also import e.g. the [HowTheyVote.eu](https://howtheyvote.eu) database dump that can be found [here](https://github.com/HowTheyVote/data). Run `mariadb/import_database.sh` to import a database and change the `.sql` file's path inside of the script if necessary. -8. Run `php artisan scout:import '\App\VotingList'` to initialize the search index. +In order to set up a development environment on your computer please make sure you have [Docker and Docker Compose](https://docs.docker.com/engine/install/) installed on your computer. -### Database Dumps +Before you run HowTheyVote.eu locally for the first time, you will need to install dependencies for the frontend and backend: -We provide a (small) dump in the `mariadb/dump` directory that can be imported using `mariadb/dump/import_database.sh`. -The latest production database can be retrieved from our [data repository](https://github.com/HowTheyVote/data). -If you have scraped data the `mariadb/dump/export_database.sh` script can be used to create a new dump. +``` +docker compose run frontend npm install +docker compose run backend poetry install +``` -To familiarize yourself with the schema of the database, the models in `app/app/*.php` are a good starting point. +Create an `.env` file according to `.env.template`. -### FAQ/Help +Upgrade the system to run database migration and configure the search index: -- To run the tests for the Laravel application, run `composer test`. Do **not** run `php artisan test`, as that will clear your local database. -- After running the tests you will need to execute `php artisan config:cache` to be able to access the database from your local application instance again. When troubleshooting local problems with accessing the database, this is in general a good first step. -- To run the tests for the python scrapers, execute `make test`. -- Before submitting a PR, remember to run `make` inside of `/scrapers` and `composer cs-fix`, as well as `composer test` in `/app`. Non-linted code as well as failing tests will be rejected by our CI. +``` +docker compose run backend htv system upgrade +``` -## Production Deployment +Finally, you can start all required containers: -We’re using [Ansible](https://ansible.org) to manage server provisioning and deployment to production environments. Currently, the Ansible playbook `ansible/site.yml` supports deploying EP-Votes to a fresh [Uberspace 7](https://uberspace.de) account. +``` +docker compose up -d +``` -1. Install Ansible 2.10 or later. Update `ansible/hosts` and the respective host variables. -2. Run `ansible-playbook -i ansible/hosts --ask-vault-pass ansible/site.yml` to set up the Uberspace and deploy the application. -3. Run `ansible-playbook -i ansible/hosts --ask-vault-pass ansible/meilisearch.yml` to compile and configure the MeiliSearch search server. This may take some time and it’s *not* necessary to run this playbook on every deployment. +You can now access the application at `https://localhost`. Note that we use self-signed TLS certificates during development. Your browser will most likely display a certificate warning when you open the application for the first time. -## Related Work +At this point, there isn’t yet any data in your local database. You can use the [CLI](#cli) to run data pipelines. -* [**Parltrack**](https://github.com/parltrack/parltrack) is an open source project that improves access to information about legislative processes, including (but not limited to) vote results. +## CLI -* [**abgeordnetenwatch.eu**](https://www.abgeordnetenwatch.de/eu/abstimmungen) is a German NGO that allows citizen to publicly ask questions elected representatives in the federal and state parliaments as well as the European Parliament questions. abgeordnetenwatch.eu also includes voting records for editorially selected votes in the European Parliament. Those are however limited to German MEPs. +The `htv` CLI is installed in the `backend` container and provides a few commands that can be helpful during development. In order to run CLI commands make sure to first create a shell in the `backend` container: -* [**VoteWatch Europe**](https://votewatch.eu) maintains a database of vote results for the current and many past legislatures. However, not all vote results are publicly accessible. +``` +docker compose exec backend bash +``` -## Licenses +While we use a background worker to run data pipelines on a regular schedule in production, you can also run them manually using the CLI: -This software is licensed under [GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html). Data exports accessible via the web interface on and database dumps are made available under the [Creative Commons Attribution License 4.0](https://creativecommons.org/licenses/by/4.0/). +``` +htv pipeline members --term=9 +htv pipeline sessions --term=9 +htv pipeline rcv-list --term=9 --date=2024-04-10 +htv pipeline press --date=2024-04-10 +``` -The contents of the database are sourced from the [plenary minutes](https://www.europarl.europa.eu/plenary/en/minutes.html) of the European Parliament, [MEP profiles](http://europarl.europa.eu/meps/en/home) on the Parliament’s website, and the [Legislative Observatory](https://oeil.secure.europarl.europa.eu/oeil/home/home.do). +In order to run all data pipelines for an entire term, run the following command. Please note that this command may take multiple hours to complete. -We use adapted emojis designed originally by [OpenMoji – the open-source emoji and icon project](https://openmoji.org). License: CC BY-SA 4.0 - ---- - -This work is sponsored by the [Federal Ministry of Education and Research](https://bmbf.de) in the 9th round of the [Prototype Fund](https://prototypefund.de/) (Reference: 01IS21818). - -Federal Ministry of Education and Research +``` +htv pipeline all --term=9 +``` diff --git a/ansible/.gitignore b/ansible/.gitignore deleted file mode 100644 index a8b42eb6e..000000000 --- a/ansible/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.retry diff --git a/ansible/dump.yml b/ansible/dump.yml deleted file mode 100644 index 6539dc760..000000000 --- a/ansible/dump.yml +++ /dev/null @@ -1,6 +0,0 @@ ---- -- hosts: all - vars_files: - - vars/general.yml - roles: - - dump diff --git a/ansible/host_vars/epvprod.yml b/ansible/host_vars/epvprod.yml deleted file mode 100644 index 17151e286..000000000 --- a/ansible/host_vars/epvprod.yml +++ /dev/null @@ -1,46 +0,0 @@ -$ANSIBLE_VAULT;1.1;AES256 -66313162616436313737336239393338363761373337313563353932393331626532313934333633 -6530323462396233363161313738623931353631303131300a303464303137666436666662343331 -61653639626635313362343362363965653762653533393139633430343466343731353136623832 -3262316437643232390a343437613838343364313739623266323334343732393530616534313736 -36623364613636613832306335326363316430646337373266366534313232346235393034393662 -62326632313635303633643630356335383038393530646362326261306538353038613436363338 -36316636633466373162353938383935356139663362323066646532303263363062343839666437 -63613565336638336538303738633861336262623837633334653066393761646437303363373937 -32636230643934656462313234383066383032373761656438656262623461393536646232306337 -30656633333133383466373362353639306332396365383564363462383836343232363435396439 -35303838653162653132383234626238323130343437636166333436633539373765383265366361 -31376637303935383461316237376265326233623563666338376662326662613161343133393139 -30393762363631656464383837613861623137376534343739626464653839336438616162643133 -31303639643339353431653161356337323666306162366436633932633561313736366363633962 -31666435616365313965336262316139363838393162306236306431383934633838333462666662 -34373035383963383365653331356439613132366437663566343861303962653336383030323262 -66623763393161666163636362386563396266666562653164613563346439383235653861323932 -34643165333338313133636166613535353738333337616630313739386264623836303066323436 -34373939646333613334623039333738306136643937666662313530633662626432363137313938 -38303664303933613231346535376563386439343931383231616532346364383830633137303263 -37303339313834303461336637343139666338353763336530363263376661663465313163343165 -39316437323438616462623932303533643634613038393139666463346537363834623235653365 -34663731396361613865323439613263646634623064383764306362373634313532376636393134 -31653363343834303230646234336463633830656565623934376535663561383633376533346365 -66366361306661666435383031333361383264643433613430303530643663623464643638623537 -63663634646364353763376230323664373466346531313237326335343330613632386365353833 -30393363666530663866316231646563656132626132393835316539666539383439346165386333 -37323966303965616133336363386434313430646133663265336266633666363666633537363836 -39303737323432383065393039353234613435366432336235653236396438316161643031626434 -37353634373336633636636230616664306237306636663335363537366138373432383663366131 -66633766666264623335306134343032313137633464626565653636363333343238373263396135 -30396530636430363532396238306335613139336461313734663637363033616261623238316236 -33323031376463653463653264353335323264363631336132646364666135383964663133343364 -39313836376536356135396436353133323365613264333132393662383030393063393339633664 -36393936376665626264323335613531363061643530663934646236373365623731376430363835 -32366664633931353063363632623939323862396166366264306562373464376461623438653739 -31656435303934643635393266383265653162336234323164643339616465333437373233626233 -36326235313464313265363136666631326265666434656664383930613563356632303961666434 -62366461653035386232393862323561306232643362643461363462343136653064626261613161 -39316239316265306338633861646132306434646533323132643161343834326634663831363061 -39633538346265373639666530633233316431656633633036643035343231393564323034336437 -64353039613662613964353832363935643632356630303762643336363237646665653462373036 -39656332383636616466373039376562386264346131633265366430396665313236323566323034 -32353032323035363064336338656134376364656537353764356563613335643864363265326262 -3739 diff --git a/ansible/hosts b/ansible/hosts deleted file mode 100644 index 01dd405f5..000000000 --- a/ansible/hosts +++ /dev/null @@ -1 +0,0 @@ -epvprod diff --git a/ansible/meilisearch.yml b/ansible/meilisearch.yml deleted file mode 100644 index edf06b8d2..000000000 --- a/ansible/meilisearch.yml +++ /dev/null @@ -1,7 +0,0 @@ ---- -- hosts: all - vars_files: - - vars/general.yml - - vars/search.yml - roles: - - meilisearch diff --git a/ansible/requirements.yml b/ansible/requirements.yml deleted file mode 100644 index 1fd915206..000000000 --- a/ansible/requirements.yml +++ /dev/null @@ -1,5 +0,0 @@ ---- -roles: [] - -collections: - - community.general diff --git a/ansible/roles/deployment/handlers/main.yml b/ansible/roles/deployment/handlers/main.yml deleted file mode 100644 index 3598b8f71..000000000 --- a/ansible/roles/deployment/handlers/main.yml +++ /dev/null @@ -1,10 +0,0 @@ ---- -- name: Reread scrapers service - community.general.supervisorctl: - name: epvotes-scrapers - state: present - -- name: Restart scrapers service - community.general.supervisorctl: - name: epvotes-scrapers - state: restarted diff --git a/ansible/roles/deployment/tasks/main.yml b/ansible/roles/deployment/tasks/main.yml deleted file mode 100644 index 82367f405..000000000 --- a/ansible/roles/deployment/tasks/main.yml +++ /dev/null @@ -1,100 +0,0 @@ ---- - -- name: Check if this is the first install - stat: - path: "{{ epvotes_install_dir }}/app/artisan" - register: artisan_command - -- name: Enable Laravel maintenance mode - shell: - cmd: php artisan down --render="errors::503" - chdir: "{{ epvotes_install_dir }}/app" - when: artisan_command.stat.exists - -- name: Clone Repository - git: - repo: https://github.com/ep-votes/epvotes.git - dest: "{{ epvotes_install_dir }}" - version: "{{ epvotes_version }}" - notify: - - Restart scrapers service - -- name: Set Python version - shell: - cmd: "poetry env use python{{ python_version }}" - chdir: "{{ epvotes_install_dir }}/scrapers" - -- name: Install poetry dependencies - shell: - cmd: "poetry install" - chdir: "{{ epvotes_install_dir }}/scrapers" - -- name: Create env file for scrapers - template: - src: epvotes/scrapers/.env.j2 - dest: "{{ epvotes_install_dir }}/scrapers/.env" - -- name: Copy scrapers service configuration - notify: - - Reread scrapers service - template: - src: etc/services.d/epvotes-scrapers.ini.j2 - dest: "{{ ansible_facts.env.HOME }}/etc/services.d/epvotes-scrapers.ini" - -- name: Install composer dependencies - shell: - cmd: "composer install --no-interaction" - chdir: "{{ epvotes_install_dir }}/app" - -- name: Create env file for app - template: - src: epvotes/app/.env.j2 - dest: "{{ epvotes_install_dir }}/app/.env" - -- name: Cache Laravel config - shell: - cmd: php artisan config:cache - chdir: "{{ epvotes_install_dir }}/app" - -- name: Run migrations - shell: - cmd: "php artisan migrate --force" - chdir: "{{ epvotes_install_dir }}/app" - -- name: Install node dependencies - shell: - cmd: "npm ci" - chdir: "{{ epvotes_install_dir }}/app" - -- name: Build CSS and JS - shell: - cmd: "npm run prod --scripts-prepend-node-path" - chdir: "{{ epvotes_install_dir }}/app" - -- name: Setup webserver document root - file: - state: link - dest: "/var/www/virtual/{{ uberspace_user }}/html" - src: "{{ epvotes_install_dir }}/app/public" - -- name: Setup symlink for public storage disk - file: - state: link - dest: "{{ epvotes_install_dir }}/app/public/storage" - src: "{{ epvotes_install_dir }}/app/storage/app/public" - -- name: Enable Laravel Scheduler - cron: - name: Laravel Scheduler - minute: "*" - job: "cd {{ epvotes_install_dir }}/app && php artisan schedule:run >> /dev/null 2>&1" - -- name: Clear static page cache - shell: - cmd: php artisan page-cache:clear - chdir: "{{ epvotes_install_dir }}/app" - -- name: Disable Laravel maintenance mode - shell: - cmd: php artisan up - chdir: "{{ epvotes_install_dir }}/app" diff --git a/ansible/roles/deployment/templates/epvotes/app/.env.j2 b/ansible/roles/deployment/templates/epvotes/app/.env.j2 deleted file mode 100644 index abac221b0..000000000 --- a/ansible/roles/deployment/templates/epvotes/app/.env.j2 +++ /dev/null @@ -1,35 +0,0 @@ -APP_NAME=EP-Votes -APP_ENV=production -APP_KEY={{ app_key }} -APP_DEBUG=false -APP_URL={{ app_url }} - -LOG_CHANNEL=stack - -DB_CONNECTION=mysql -DB_HOST={{ database_host }} -DB_PORT={{ database_port }} -DB_DATABASE={{ database_name }} -DB_USERNAME={{ database_user }} -DB_PASSWORD={{ database_password }} - -CACHE_DRIVER=file -QUEUE_CONNECTION=sync -SESSION_DRIVER=file -SESSION_LIFETIME=120 - -SENTRY_ENVIRONMENT={{ sentry_environment }} -SENTRY_LARAVEL_DSN={{ sentry_dsn }} -SENTRY_TRACES_SAMPLE_RATE=1 - -SCRAPERS_HOST=localhost -SCRAPERS_PORT=5000 - -BROWSERLESS_TOKEN={{ browserless_key }} - -PINGS_SCRAPERS={{ pings_scrapers }} - -SCOUT_DRIVER=meilisearch -MEILISEARCH_KEY={{ meilisearch_private_key }} -MEILISEARCH_PUBLIC_KEY={{ meilisearch_public_key }} -MEILISEARCH_PUBLIC_ENDPOINT=https://{{ meilisearch_domain }}/ diff --git a/ansible/roles/deployment/templates/epvotes/scrapers/.env.j2 b/ansible/roles/deployment/templates/epvotes/scrapers/.env.j2 deleted file mode 100644 index e71409270..000000000 --- a/ansible/roles/deployment/templates/epvotes/scrapers/.env.j2 +++ /dev/null @@ -1,3 +0,0 @@ -SENTRY_DSN={{ sentry_dsn }} -SENTRY_ENVIRONMENT={{ sentry_environment }} -SENTRY_TRACES_SAMPLE_RATE=1 diff --git a/ansible/roles/deployment/templates/etc/services.d/epvotes-scrapers.ini.j2 b/ansible/roles/deployment/templates/etc/services.d/epvotes-scrapers.ini.j2 deleted file mode 100644 index da063c92a..000000000 --- a/ansible/roles/deployment/templates/etc/services.d/epvotes-scrapers.ini.j2 +++ /dev/null @@ -1,5 +0,0 @@ -[program:epvotes-scrapers] -directory={{ epvotes_install_dir }}/scrapers -command=poetry run gunicorn ep_votes.api:app -b :5000 -startsecs=30 -stderr_logfile={{ ansible_facts.env.HOME }}/logs/epvotes-scrapers.log diff --git a/ansible/roles/dump/tasks/main.yml b/ansible/roles/dump/tasks/main.yml deleted file mode 100644 index c5f4d66b2..000000000 --- a/ansible/roles/dump/tasks/main.yml +++ /dev/null @@ -1,16 +0,0 @@ ---- - -- name: Create temporary file - tempfile: - state: file - register: tempfile - -- name: Create database dump - shell: - cmd: "mysqldump {{ database_name }} > {{ tempfile.path }}" - -- name: Copy dump from remote host - fetch: - src: "{{ tempfile.path }}" - dest: ../mariadb/dump/dump-production.sql - flat: yes diff --git a/ansible/roles/meilisearch/handlers/main.yml b/ansible/roles/meilisearch/handlers/main.yml deleted file mode 100644 index 22bb927f1..000000000 --- a/ansible/roles/meilisearch/handlers/main.yml +++ /dev/null @@ -1,10 +0,0 @@ ---- -- name: Reread meilisearch service - community.general.supervisorctl: - name: meilisearch - state: present - -- name: Restart meilisearch service - community.general.supervisorctl: - name: meilisearch - state: restarted diff --git a/ansible/roles/meilisearch/tasks/configuration.yml b/ansible/roles/meilisearch/tasks/configuration.yml deleted file mode 100644 index 729c232ba..000000000 --- a/ansible/roles/meilisearch/tasks/configuration.yml +++ /dev/null @@ -1,10 +0,0 @@ ---- -- name: Update displayed attributes - uri: - url: "http://localhost:7700/indexes/voting_lists/settings" - method: PATCH - headers: - Authorization: "Bearer {{ meilisearch_master_key }}" - body_format: json - body: "{{ meilisearch_index_settings }}" - status_code: [202] diff --git a/ansible/roles/meilisearch/tasks/installation.yml b/ansible/roles/meilisearch/tasks/installation.yml deleted file mode 100644 index 43e229fbe..000000000 --- a/ansible/roles/meilisearch/tasks/installation.yml +++ /dev/null @@ -1,41 +0,0 @@ ---- -- name: Check if meilisearch executable exists - stat: - path: "{{ ansible_facts.env.HOME }}/bin/meilisearch-{{ meilisearch_version }}" - register: exec_stats - -- name: Download prebuilt binary - notify: - - Reread meilisearch service - - Restart meilisearch service - get_url: - url: "https://github.com/HowTheyVote/meilisearch-centos7/releases/download/{{ meilisearch_version }}/meilisearch-{{ meilisearch_version }}" - dest: "{{ ansible_facts.env.HOME }}/bin/meilisearch-{{ meilisearch_version }}" - mode: "u+x" - when: not exec_stats.stat.exists - -- name: Copy service configuration - notify: - - Reread meilisearch service - - Restart meilisearch service - template: - src: etc/services.d/meilisearch.ini.j2 - dest: "{{ ansible_facts.env.HOME }}/etc/services.d/meilisearch.ini" - -- meta: flush_handlers - -- name: Get private meilisearch keys - uri: - url: "http://localhost:7700/keys" - method: GET - headers: - Authorization: "Bearer {{ meilisearch_master_key }}" - return_content: yes - register: keys - -- name: Route traffic on subdomain to Meilisearch - command: "uberspace web backend set {{ meilisearch_domain }} --http --port 7700" - -- name: Print keys - debug: - msg: "{{ keys.json }}" diff --git a/ansible/roles/meilisearch/tasks/main.yml b/ansible/roles/meilisearch/tasks/main.yml deleted file mode 100644 index 121014d7c..000000000 --- a/ansible/roles/meilisearch/tasks/main.yml +++ /dev/null @@ -1,3 +0,0 @@ ---- -- import_tasks: installation.yml -- import_tasks: configuration.yml diff --git a/ansible/roles/meilisearch/templates/etc/services.d/meilisearch.ini.j2 b/ansible/roles/meilisearch/templates/etc/services.d/meilisearch.ini.j2 deleted file mode 100644 index 61429adc7..000000000 --- a/ansible/roles/meilisearch/templates/etc/services.d/meilisearch.ini.j2 +++ /dev/null @@ -1,10 +0,0 @@ -[program:meilisearch] -directory={{ ansible_facts.env.HOME }} -command=meilisearch-{{ meilisearch_version }} - --env production - --master-key {{ meilisearch_master_key }} - --no-analytics - --db-path {{ meilisearch_db_dir }} - --http-addr 0.0.0.0:7700 -startsecs=30 -stderr_logfile={{ ansible_facts.env.HOME }}/logs/meilisearch.log diff --git a/ansible/roles/setup/tasks/main.yml b/ansible/roles/setup/tasks/main.yml deleted file mode 100644 index 488595db9..000000000 --- a/ansible/roles/setup/tasks/main.yml +++ /dev/null @@ -1,38 +0,0 @@ ---- -- name: Setup PHP version - command: "uberspace tools version use php {{ php_version }}" - -- name: Setup node version - command: "uberspace tools version use node {{ node_version }}" - -- name: Install Poetry - pip: - name: "poetry=={{ poetry_version }}" - executable: "pip{{ python_version }}" - extra_args: --user - state: present - -- name: Setup Google FLoC opt out header - command: "uberspace web header set / Permissions-Policy \"interest-cohort=()\"" - -- name: Get configured domains - command: "uberspace web domain list" - register: current_domains - -- name: Add new domains - command: "uberspace web domain add {{ item }}" - with_items: "{{ epvotes_domains }}" - when: "item not in current_domains.stdout_lines" - -- name: Remove outdated domains - command: "uberspace web domain del {{ item }}" - with_items: "{{ current_domains.stdout_lines }}" - when: "item not in epvotes_domains and not item.endswith('uber.space')" - -- name: Route traffic to Apache - command: "uberspace web backend set / --apache" - -- name: Disable web server logs - shell: | - uberspace web log access disable - uberspace web log apache_error disable diff --git a/ansible/site.yml b/ansible/site.yml deleted file mode 100644 index c9ab45bd2..000000000 --- a/ansible/site.yml +++ /dev/null @@ -1,12 +0,0 @@ ---- -- hosts: all - vars_files: - - vars/general.yml - collections: - - community.general - roles: - - setup - - deployment - environment: - # Pip user packages are installed here - PATH: "~/.local/bin:{{ ansible_env.PATH }}" diff --git a/ansible/vars/general.yml b/ansible/vars/general.yml deleted file mode 100644 index f313cb7ec..000000000 --- a/ansible/vars/general.yml +++ /dev/null @@ -1,25 +0,0 @@ ---- -php_version: '8.1' -node_version: '14' -epvotes_version: main -python_version: '3.11' -poetry_version: '1.4.2' -epvotes_install_dir: "/var/www/virtual/{{ uberspace_user }}/epvotes" -epvotes_domains: - - howtheyvote.eu - - www.howtheyvote.eu - - how-they-vote.eu - - www.how-they-vote.eu - - abstimmungen.eu - - www.abstimmungen.eu - - howtheyvoted.eu - - www.howtheyvoted.eu - - how-they-voted.eu - - www.how-they-voted.eu - - ep-votes.eu - - www.ep-votes.eu - - search.howtheyvote.eu -meilisearch_domain: search.howtheyvote.eu -meilisearch_install_dir: "~/meilisearch-source" -meilisearch_version: 0.28.1 -meilisearch_db_dir: "~/meilisearch-database" diff --git a/ansible/vars/search.yml b/ansible/vars/search.yml deleted file mode 100644 index 13fc275d2..000000000 --- a/ansible/vars/search.yml +++ /dev/null @@ -1,38 +0,0 @@ -meilisearch_index_settings: - displayedAttributes: - - "*" - sortableAttributes: - - date - filterableAttributes: - - members - searchableAttributes: - - display_title - - summary - stopWords: - - adopted - - votes - - abstentions - - resolution - synonyms: - corona: - - covid - human: - - humanitarian - EU: - - European Union - USA: - - United States - UK: - - United Kingdom - - Great Britian - rankingRules: - # This is based on the default ranking rules, the only addition being - # that votes are by default sorted in inverse chronological order. - # https://docs.meilisearch.com/learn/core_concepts/relevancy.html#built-in-rules - - words - - typo - - proximity - - attribute - - sort - - exactness - - date:desc diff --git a/app/.env.example b/app/.env.example deleted file mode 100644 index 713506256..000000000 --- a/app/.env.example +++ /dev/null @@ -1,21 +0,0 @@ -APP_NAME=EP-Votes -APP_ENV=local -APP_KEY= -APP_DEBUG=true -APP_URL= - -LOG_CHANNEL=stack - -CACHE_DRIVER=file -QUEUE_CONNECTION=sync -SESSION_DRIVER=file -SESSION_LIFETIME=120 - -SENTRY_ENVIRONMENT=local -SENTRY_LARAVEL_DSN= -SENTRY_TRACES_SAMPLE_RATE=1 - -SCRAPERS_HOST=localhost -SCRAPERS_PORT=5000 - -BROWSERLESS_TOKEN= diff --git a/app/.gitattributes b/app/.gitattributes deleted file mode 100644 index 967315dd3..000000000 --- a/app/.gitattributes +++ /dev/null @@ -1,5 +0,0 @@ -* text=auto -*.css linguist-vendored -*.scss linguist-vendored -*.js linguist-vendored -CHANGELOG.md export-ignore diff --git a/app/.gitignore b/app/.gitignore deleted file mode 100644 index e16815610..000000000 --- a/app/.gitignore +++ /dev/null @@ -1,18 +0,0 @@ -/node_modules -/public/hot -/public/storage -/public/css -/public/js -/public/mix-manifest.json -/public/page-cache -/storage/*.key -/vendor -.env -.env.backup -.phpunit.result.cache -Homestead.json -Homestead.yaml -npm-debug.log -yarn-error.log -.php-cs-fixer.cache -ray.php diff --git a/app/.php-cs-fixer.php b/app/.php-cs-fixer.php deleted file mode 100644 index c5ba3a970..000000000 --- a/app/.php-cs-fixer.php +++ /dev/null @@ -1,20 +0,0 @@ -setFinder( - PhpCsFixer\Finder::create() - ->in(app_path()) - ->in(config_path()) - ->in(database_path('factories')) - ->in(database_path('migrations')) - ->in(database_path('seeds')) - ->in(resource_path('lang')) - ->in(base_path('routes')) - ->in(base_path('tests')) - ) - ->setRules([ - '@Laravel' => true, - ]); diff --git a/app/.prettierrc b/app/.prettierrc deleted file mode 100644 index be7c1a229..000000000 --- a/app/.prettierrc +++ /dev/null @@ -1,12 +0,0 @@ -{ - "singleQuote": true, - "arrowParens": "avoid", - "overrides": [ - { - "files": "*.css", - "options": { - "tabWidth": 4 - } - } - ] -} diff --git a/app/.styleci.yml b/app/.styleci.yml deleted file mode 100644 index 1db61d96e..000000000 --- a/app/.styleci.yml +++ /dev/null @@ -1,13 +0,0 @@ -php: - preset: laravel - disabled: - - unused_use - finder: - not-name: - - index.php - - server.php -js: - finder: - not-name: - - webpack.mix.js -css: true diff --git a/app/Dockerfile b/app/Dockerfile deleted file mode 100644 index c600c6f8f..000000000 --- a/app/Dockerfile +++ /dev/null @@ -1,40 +0,0 @@ -FROM php:8-alpine3.14 - -RUN apk --update add \ - build-base \ - autoconf \ - libressl-dev \ - libzip-dev \ - libpng-dev \ - libjpeg-turbo-dev \ - libwebp-dev \ - bash \ - less \ - make \ - composer - -RUN pecl install pcov && docker-php-ext-enable pcov -RUN docker-php-ext-enable pcov - -RUN docker-php-ext-configure gd \ - --enable-gd \ - --with-jpeg \ - --with-webp - -RUN docker-php-ext-install \ - bcmath \ - ctype \ - zip \ - mysqli \ - pdo_mysql \ - gd - -RUN apk add nodejs npm - -RUN composer global require laravel/installer -RUN echo "PATH=$PATH:~/.composer/vendor/bin" >> ~/.bashrc - -RUN mkdir -p /app -WORKDIR /app - -COPY . . diff --git a/app/app/Actions/Action.php b/app/app/Actions/Action.php deleted file mode 100644 index 6d17bac48..000000000 --- a/app/app/Actions/Action.php +++ /dev/null @@ -1,14 +0,0 @@ -members()->count(); - $byPosition = $this->byPosition($votingList); - - $stats = [ - 'voted' => $active - $byPosition['NOVOTE'], - 'active' => $active, - 'by_position' => $byPosition, - 'by_country' => $this->byCountry($votingList), - 'by_group' => $this->byGroup($votingList), - ]; - - $votingList->update(['stats' => $stats]); - } - - protected function byCountry(VotingList $votingList): array - { - $this->log("Compiling country stats for vote {$votingList->id}"); - - // We're using `getQuery` to get the underlying query builder - // for the relation. For some reason, Eloquent always selects - // the pivot columns for a relation query. This will however - // cause an SQL syntax error, as they aren't included in the - // group by statement. - $active = $votingList->members() - ->getQuery() - ->select('country', DB::raw('count(*) as count')) - ->groupBy('country') - ->get() - ->map(fn ($row) => [$row->country->value, $row->count]) - ->toAssoc(); - - $byPosition = $votingList->members() - ->getQuery() - ->select('position', 'country', DB::raw('count(*) as count')) - ->groupBy('country', 'position') - ->get() - ->groupBy(fn ($row) => $row->country->value) - ->map(fn ($rows) => $this->formatPositions($rows)); - - $voted = $byPosition->map(function ($counts, $country) use ($active) { - return $active[$country] - $counts['NOVOTE']; - }); - - $stats = $this->mergeStats([ - 'active' => $active, - 'voted' => $voted, - 'by_position' => $byPosition, - ]); - - return $stats; - } - - protected function byGroup(VotingList $votingList): array - { - $this->log("Compiling group stats for vote {$votingList->id}"); - - // See comment in `byCountry` for an explanation why we're - // using `getQuery`. - $active = $votingList->members() - ->getQuery() - ->withGroupMembershipAt($votingList->date) - ->select('group_id', DB::raw('count(*) as count')) - ->groupBy('group_id') - ->get() - ->map(fn ($row) => [$row->group_id, $row->count]) - ->toAssoc(); - - $byPosition = $votingList->members() - ->getQuery() - ->withGroupMembershipAt($votingList->date) - ->select('position', 'group_id', DB::raw('count(*) as count')) - ->groupBy('position', 'group_id') - ->get() - ->groupBy('group_id') - ->map(fn ($rows) => $this->formatPositions($rows)); - - $voted = $byPosition->map(function ($counts, $country) use ($active) { - return $active[$country] - $counts['NOVOTE']; - }); - - return $this->mergeStats([ - 'active' => $active, - 'by_position' => $byPosition, - 'voted' => $voted, - ]); - } - - protected function byPosition(VotingList $votingList): array - { - $this->log("Compiling general stats for vote {$votingList->id}"); - - // See comment in `byCountry` for an explanation why we're - // using `getQuery`. - $rows = $votingList->members() - ->getQuery() - ->groupBy('position') - ->select('position', DB::raw('count(*) as count')) - ->get(); - - return $this->formatPositions($rows)->toArray(); - } - - protected function formatPositions(Collection $rows): Collection - { - $defaults = collect(VotePositionEnum::toArray()) - ->map(fn ($position) => [$position, 0]) - ->toAssoc(); - - $positions = $rows - ->map(function ($row) { - return [ - VotePositionEnum::make($row->position)->label, - $row->count, - ]; - }) - ->toAssoc(); - - return $defaults->merge($positions); - } - - protected function mergeStats(array $stats): array - { - $stats = collect($stats)->map(function ($stat, $key) { - return $stat->map(fn ($item) => [$key => $item]); - }); - - return array_replace_recursive(...$stats->values()->toArray()); - } -} diff --git a/app/app/Actions/CreateMemberImageAction.php b/app/app/Actions/CreateMemberImageAction.php deleted file mode 100644 index e7f7667aa..000000000 --- a/app/app/Actions/CreateMemberImageAction.php +++ /dev/null @@ -1,38 +0,0 @@ -web_id}.jpg"; - - $width = 104; - $quality = 50; - - $pathSmall = "members/{$member->id}-{$width}px.jpg"; - $pathOrig = "members/{$member->id}.jpg"; - - try { - $thumbSmall = Image::make($url) - ->widen($width) - ->crop($width, $width) - ->encode('jpg', $quality); - - $original = Image::make($url) - ->encode('jpg', 65); - - Storage::disk('public')->put($pathSmall, $thumbSmall); - Storage::disk('public')->put($pathOrig, $original); - } catch (NotReadableException $exception) { - // It’s most likely that the parliament website returned a - // 404 error code when requesting the original image. - } - } -} diff --git a/app/app/Actions/GenerateVoteSharePicAction.php b/app/app/Actions/GenerateVoteSharePicAction.php deleted file mode 100644 index 86220c0f6..000000000 --- a/app/app/Actions/GenerateVoteSharePicAction.php +++ /dev/null @@ -1,38 +0,0 @@ -exists("share-pictures/vote-sharepic-{$votingList->id}.png"); - - if ($exists) { - return; - } - - $token = config('browserless.token'); - $response = Http::post("https://chrome.browserless.io/screenshot?token={$token}", [ - 'url' => route('voting-list.share-picture', ['votingList' => $votingList->id]), - 'options' => [ - 'type' => 'png', - 'fullPage' => true, - ], - 'gotoOptions' => [ - 'waitUntil' => 'networkidle0', - ], - 'viewport' => [ - 'width' => 600, - 'height' => 315, - 'deviceScaleFactor' => 2, - ], - ]); - - Storage::disk('public')->put("share-pictures/vote-sharepic-{$votingList->id}.png", $response->getBody()); - } -} diff --git a/app/app/Actions/MatchVotesAndVotingListsAction.php b/app/app/Actions/MatchVotesAndVotingListsAction.php deleted file mode 100644 index 51dcdf3d0..000000000 --- a/app/app/Actions/MatchVotesAndVotingListsAction.php +++ /dev/null @@ -1,74 +0,0 @@ -where('unmatched', false) - ->get(); - - $sharePicAction = new GenerateVoteSharePicAction(); - - $totalUnmatched = $votesToMatch->count(); - - foreach ($votesToMatch as $vote) { - $votingLists = null; - - if ($vote->reference) { - $votingLists = VotingList::where('vote_id', null) - ->where('description', 'like', "%{$vote->reference}%{$vote->formatted}"); - } - - if (! $votingLists || $votingLists->count() === 0) { - $votingLists = VotingList::where('vote_id', null) - ->where('description', 'like', "%{$vote->voteCollection->reference}%{$vote->formatted}"); - } - - $count = $votingLists->count(); - - if ($count > 1) { - report(CouldNotMatchVoteException::multipleMatchingVotingLists($vote)); - continue; - } - - if ($count === 0) { - report(CouldNotMatchVoteException::noMatchingVotingList($vote)); - continue; - } - - $votingList = $votingLists->first(); - - $stats = $votingList->stats['by_position']; - $resultString = $stats['FOR'].$stats['AGAINST'].$stats['ABSTENTION']; - - if ($resultString !== $vote->remarks) { - report(CouldNotMatchVoteException::resultsDoNotMatch($vote, $votingList)); - continue; - } - - $votingList->update([ - 'vote_id' => $vote->id, - ]); - - if ($vote->isFinalVote()) { - $sharePicAction->execute($votingList); - } - } - - $remainingUnmatched = Vote::query() - ->whereDoesntHave('votingList') - ->where('unmatched', false) - ->count(); - - $recentlyMatched = $totalUnmatched - $remainingUnmatched; - - $this->log("Matched {$recentlyMatched} votes. {$remainingUnmatched} votes are still unmatched."); - } -} diff --git a/app/app/Actions/ScrapeAction.php b/app/app/Actions/ScrapeAction.php deleted file mode 100644 index c97108e17..000000000 --- a/app/app/Actions/ScrapeAction.php +++ /dev/null @@ -1,48 +0,0 @@ -host = $host; - $this->port = $port; - } - - public function execute(string $route, array $params): mixed - { - $url = $this->url($route, $params); - $this->log("Fetching {$url}"); - $response = Http::get($url); - - if ($response->status() !== 200) { - throw new ScrapingException($route, $params); - } - - return $response->json(); - } - - protected function url(string $route, array $params = []): string - { - $url = new Url; - $url = $url - ->withScheme('http') - ->withHost(config('scrapers.host')) - ->withPort(config('scrapers.port')) - ->withPath($route); - - foreach ($params as $key => $value) { - $url = $url->withQueryParameter($key, $value); - } - - return (string) $url; - } -} diff --git a/app/app/Actions/ScrapeMemberGroupsAction.php b/app/app/Actions/ScrapeMemberGroupsAction.php deleted file mode 100644 index ffd7acac6..000000000 --- a/app/app/Actions/ScrapeMemberGroupsAction.php +++ /dev/null @@ -1,68 +0,0 @@ -scrapeAction = $scrapeAction; - } - - public function execute(Member $member, Term $term): void - { - try { - $response = $this->scrapeAction->execute('member_groups', [ - 'web_id' => $member->web_id, - 'term' => $term->number, - ]); - } catch (ScrapingException $exception) { - report($exception); - - return; - } - - $total = count($response); - - foreach ($response as $key => $data) { - $current = $key + 1; - $this->log("Importing group membership {$key} of {$total}", $data); - - $this->createOrUpdateMembership($member, $term, $data); - } - } - - public function createOrUpdateMembership(Member $member, Term $term, array $data): GroupMembership - { - $group = Group::whereCode($data['group'])->first(); - - $data = [ - 'member_id' => $member->id, - 'group_id' => $group->id, - 'term_id' => $term->id, - 'start_date' => $data['start_date'], - 'end_date' => $data['end_date'], - ]; - - $membership = GroupMembership::where([ - 'member_id' => $data['member_id'], - 'start_date' => $data['start_date'], - ])->first(); - - if (! $membership) { - return GroupMembership::create($data); - } - - $membership->update($data); - - return $membership; - } -} diff --git a/app/app/Actions/ScrapeMemberInfoAction.php b/app/app/Actions/ScrapeMemberInfoAction.php deleted file mode 100644 index 447dbc444..000000000 --- a/app/app/Actions/ScrapeMemberInfoAction.php +++ /dev/null @@ -1,36 +0,0 @@ -scrapeAction = $scrapeAction; - } - - public function execute(Member $member): void - { - try { - $data = $this->scrapeAction->execute('member_info', [ - 'web_id' => $member->web_id, - ]); - } catch (ScrapingException $exception) { - report($exception); - - return; - } - - $this->log('Importing member info', $data); - - $data['country'] = CountryEnum::make($data['country']); - - $member->update($data); - } -} diff --git a/app/app/Actions/ScrapeMembersAction.php b/app/app/Actions/ScrapeMembersAction.php deleted file mode 100644 index f8ee65e8c..000000000 --- a/app/app/Actions/ScrapeMembersAction.php +++ /dev/null @@ -1,43 +0,0 @@ -scrapeAction = $scrapeAction; - } - - public function execute(Term $term): void - { - try { - $response = $this->scrapeAction->execute('members', [ - 'term' => $term->number, - ]); - } catch (ScrapingException $exception) { - report($exception); - - return; - } - - $total = count($response); - - foreach ($response as $key => $data) { - $current = $key + 1; - $this->log("Importing member {$current} of {$total}", $data); - - $member = Member::firstOrCreate([ - 'web_id' => $data['web_id'], - ]); - - $member->terms()->syncWithoutDetaching($term); - } - } -} diff --git a/app/app/Actions/ScrapeSessionsAction.php b/app/app/Actions/ScrapeSessionsAction.php deleted file mode 100644 index ab0775544..000000000 --- a/app/app/Actions/ScrapeSessionsAction.php +++ /dev/null @@ -1,55 +0,0 @@ -scrapeAction = $scrapeAction; - } - - public function execute(int $term, int $year, int $month): void - { - try { - $parlData = $this->scrapeAction->execute('sessions_parl', [ - 'term' => $term, - 'year' => $year, - 'month' => $month, - ]); - - $obsData = $this->scrapeAction->execute('sessions_obs', [ - 'year' => $year, - 'month' => $month, - ]); - } catch (ScrapingException $exception) { - report($exception); - - return; - } - - foreach ($parlData as $session) { - Session::updateOrCreate([ - 'start_date' => $session['start_date'], - 'end_date' => $session['end_date'], - ], - ['location' => LocationEnum::NONE(), - ]); - } - - foreach ($obsData as $session) { - Session::updateOrCreate([ - 'start_date' => $session['start_date'], - 'end_date' => $session['end_date'], - ], - ['location' => LocationEnum::make($session['location']), - ]); - } - } -} diff --git a/app/app/Actions/ScrapeSummaryAction.php b/app/app/Actions/ScrapeSummaryAction.php deleted file mode 100644 index 72473a63b..000000000 --- a/app/app/Actions/ScrapeSummaryAction.php +++ /dev/null @@ -1,45 +0,0 @@ -scrapeAction = $scrapeAction; - } - - public function execute(VoteCollection $voteCollection): void - { - try { - $summaryId = $this->scrapeAction->execute('summary_id', [ - 'reference' => $voteCollection->reference, - 'week_of_year' => $voteCollection->date->isoWeek(), - ]); - - $text = $this->scrapeAction->execute('summary', [ - 'summary_id' => $summaryId, - ]); - } catch (ScrapingException $exception) { - report($exception); - - return; - } - - $summary = Summary::query() - ->where('reference', $voteCollection->reference) - ->firstOrNew(); - - $summary->reference = $voteCollection->reference; - $summary->oeil_id = $summaryId; - $summary->text = $text; - - $summary->save(); - } -} diff --git a/app/app/Actions/ScrapeVoteCollectionsAction.php b/app/app/Actions/ScrapeVoteCollectionsAction.php deleted file mode 100644 index c16235651..000000000 --- a/app/app/Actions/ScrapeVoteCollectionsAction.php +++ /dev/null @@ -1,103 +0,0 @@ -scrapeAction = $scrapeAction; - $this->summaryAction = $summaryAction; - } - - public function execute(Term $term, Carbon $date): void - { - try { - $response = $this->scrapeAction->execute('vote_collections', [ - 'term' => $term->number, - 'date' => $date->toDateString(), - ]); - } catch (ScrapingException $exception) { - report($exception); - - return; - } - - $total = count($response); - - foreach ($response as $key => $data) { - $current = $key + 1; - - $this->log("Importing vote collection {$current} of {$total}", [ - 'title' => $data['title'], - ]); - - $voteCollection = $this->createOrUpdateVoteCollection($term, $date, $data); - } - - $this->log("Imported {$total} vote collections for {$date}"); - } - - private function createOrUpdateVoteCollection(Term $term, Carbon $date, array $data): VoteCollection - { - $voteCollection = VoteCollection::firstOrNew([ - 'title' => $data['title'], - 'date' => $date, - 'term_id' => $term->id, - ]); - - $voteCollection->fill([ - 'reference' => $data['reference'], - ]); - - $voteCollection->save(); - - $this->createSummary($voteCollection); - - if (! $voteCollection->wasRecentlyCreated) { - $voteCollection->votes()->delete(); - } - - $session = Session::where('start_date', '<=', $date) - ->where('end_date', '>=', $date)->first(); - - foreach ($data['votes'] as $vote) { - Vote::create([ - 'author' => $vote['author'], - 'subject' => $vote['subject'], - 'type' => VoteTypeEnum::make($vote['type']), - 'result' => VoteResultEnum::make($vote['result']), - 'split_part' => $vote['split_part'], - 'amendment' => $vote['amendment'], - 'vote_collection_id' => $voteCollection->id, - 'formatted' => $vote['formatted'], - 'remarks' => $vote['remarks'], - 'reference' => $vote['reference'], - 'subheading' => $vote['subheading'], - 'session_id' => $session?->id, - 'final' => $vote['final'], - ]); - } - - return $voteCollection; - } - - private function createSummary(VoteCollection $voteCollection): void - { - if (! $voteCollection->summary && $voteCollection->reference) { - $this->summaryAction->execute($voteCollection); - } - } -} diff --git a/app/app/Actions/ScrapeVotingListsAction.php b/app/app/Actions/ScrapeVotingListsAction.php deleted file mode 100644 index 4a71d4f04..000000000 --- a/app/app/Actions/ScrapeVotingListsAction.php +++ /dev/null @@ -1,167 +0,0 @@ -scrapeAction = $scrapeAction; - $this->compileAction = $compileAction; - } - - public function execute(Term $term, Carbon $date): void - { - try { - $response = $this->scrapeAction->execute('voting_lists', [ - 'term' => $term->number, - 'date' => $date->toDateString(), - ]); - } catch (ScrapingException $exception) { - report($exception); - - return; - } - - // Preload a list of all active members on the day - $members = $this->buildMembersLookup($date); - - $total = count($response); - - foreach ($response as $key => $data) { - $current = $key + 1; - - $this->log("Importing vote {$current} of {$total}", [ - 'doceo_vote_id' => $data['doceo_vote_id'], - ]); - - $votingList = $this->createOrUpdateVotingList($members, $term, $date, $data); - $this->createOrUpdateVotings($members, $date, $votingList, $data['votings']); - $this->compileAction->execute($votingList); - } - - $this->log("Imported {$total} votes for {$date}"); - } - - protected function createOrUpdateVotingList( - Collection $members, - Term $term, - Carbon $date, - array $data - ): VotingList { - // Try to find an existing voting list based on the - // doceo_vote_id first, as it uniquely identifies a vote. - // However, some older sources do not include the id, - // so we fallback to the description and reference in - // those cases. - if ($data['doceo_vote_id']) { - $votingList = VotingList::firstOrNew([ - 'doceo_vote_id' => $data['doceo_vote_id'], - 'term_id' => $term->id, - 'date' => $date, - ]); - } else { - $votingList = VotingList::firstOrNew([ - 'term_id' => $term->id, - 'date' => $date, - 'description' => $data['description'], - 'reference' => $data['reference'], - ]); - } - - $votingList->fill([ - 'doceo_vote_id' => $data['doceo_vote_id'], - 'term_id' => $term->id, - 'date' => $date, - 'description' => $data['description'], - 'reference' => $data['reference'], - ]); - - $votingList->save(); - - return $votingList; - } - - protected function createOrUpdateVotings( - Collection $members, - Carbon $date, - VotingList $votingList, - array $votings - ): void { - $membersMapping = []; - - foreach ($votings as $voting) { - // To reduce response size, votings are encoded - // as two-element arrays - $name = $voting[0]; - $position = VotePositionEnum::make($voting[1]); - - $member = $this->findMember($members, $date, $name); - - $membersMapping[$member->id] = [ - 'position' => $position, - ]; - } - - $membersWhoVoted = array_keys($membersMapping); - - // All members who did not participate in a vote need to be stored as well - // indicating they did not vote. - foreach ($members as $member) { - if (! in_array($member->id, $membersWhoVoted)) { - $membersMapping[$member->id] = [ - 'position' => VotePositionEnum::NOVOTE(), - ]; - } - } - - $votingList->members()->detach(); - $votingList->members()->attach($membersMapping); - } - - protected function findMember(Collection $members, Carbon $date, string $name): Member - { - $name = Member::normalizeName($name); - - // The official vote results provided by the parliament - // only contain member's last names. Only if the last name - // is ambiguous (i.e. there are two members with the same - // last name active in parliament at the same time), the - // respective first and last names are listed. - $member = $members->first(function ($member) use ($name) { - return $member->last_name_normalized == $name; - }); - - if ($member) { - return $member; - } - - return $members->first(function ($member) use ($name) { - $fullName = "{$member->last_name_normalized} {$member->first_name_normalized}"; - - return $fullName == $name; - }); - } - - protected function buildMembersLookup(Carbon $date): Collection - { - $this->log('Building members lookup'); - - return Member::activeAt($date) - ->select('id', 'first_name_normalized', 'last_name_normalized') - ->get(); - } -} diff --git a/app/app/Console/Kernel.php b/app/app/Console/Kernel.php deleted file mode 100644 index 5bd0f1b79..000000000 --- a/app/app/Console/Kernel.php +++ /dev/null @@ -1,43 +0,0 @@ -command('scrape:all --term=9') - ->weeklyOn(0, '18:00') - ->pingOnSuccess(config('pings.scrapers')); - } - - /** - * Register the commands for the application. - * - * @return void - */ - protected function commands() - { - $this->load(__DIR__.'/Commands'); - - require base_path('routes/console.php'); - } -} diff --git a/app/app/Enums/CountryEnum.php b/app/app/Enums/CountryEnum.php deleted file mode 100644 index 7da6f40ac..000000000 --- a/app/app/Enums/CountryEnum.php +++ /dev/null @@ -1,115 +0,0 @@ - 'Austria', - 'BE' => 'Belgium', - 'BG' => 'Bulgaria', - 'CY' => 'Cyprus', - 'CZ' => 'Czech Republic', - 'DE' => 'Germany', - 'DK' => 'Denmark', - 'EE' => 'Estonia', - 'ES' => 'Spain', - 'FI' => 'Finland', - 'FR' => 'France', - 'GB' => 'United Kingdom', - 'GR' => 'Greece', - 'HR' => 'Croatia', - 'HU' => 'Hungary', - 'IE' => 'Ireland', - 'IT' => 'Italy', - 'LT' => 'Lithuania', - 'LU' => 'Luxembourg', - 'LV' => 'Latvia', - 'MT' => 'Malta', - 'NL' => 'Netherlands', - 'PL' => 'Poland', - 'PT' => 'Portugal', - 'RO' => 'Romania', - 'SE' => 'Sweden', - 'SI' => 'Slovenia', - 'SK' => 'Slovakia', - ]; - } - - protected static function emojis(): array - { - return [ - 'AT' => '🇦🇹', - 'BE' => '🇧🇪', - 'BG' => '🇧🇬', - 'CY' => '🇨🇾', - 'CZ' => '🇨🇿', - 'DE' => '🇩🇪', - 'DK' => '🇩🇰', - 'EE' => '🇪🇪', - 'ES' => '🇪🇸', - 'FI' => '🇫🇮', - 'FR' => '🇫🇷', - 'GB' => '🇬🇧', - 'GR' => '🇬🇷', - 'HR' => '🇭🇷', - 'HU' => '🇭🇺', - 'IE' => '🇮🇪', - 'IT' => '🇮🇹', - 'LT' => '🇱🇹', - 'LU' => '🇱🇺', - 'LV' => '🇱🇻', - 'MT' => '🇲🇹', - 'NL' => '🇳🇱', - 'PL' => '🇵🇱', - 'PT' => '🇵🇹', - 'RO' => '🇷🇴', - 'SE' => '🇸🇪', - 'SI' => '🇸🇮', - 'SK' => '🇸🇰', - ]; - } - - public function __get(string $name) - { - if ($name === 'emoji') { - return self::emojis()[$this->value]; - } - - return parent::__get($name); - } -} diff --git a/app/app/Enums/LocationEnum.php b/app/app/Enums/LocationEnum.php deleted file mode 100644 index 06739513e..000000000 --- a/app/app/Enums/LocationEnum.php +++ /dev/null @@ -1,31 +0,0 @@ - 0, - 'STRASBOURG' => 1, - 'NONE' => 2, - ]; - } - - protected static function labels(): array - { - return [ - 'BRUSSELS' => 'Brussels', - 'STRASBOURG' => 'Strasbourg', - 'NONE' => 'None', - ]; - } -} diff --git a/app/app/Enums/VotePositionEnum.php b/app/app/Enums/VotePositionEnum.php deleted file mode 100644 index 41adb3a41..000000000 --- a/app/app/Enums/VotePositionEnum.php +++ /dev/null @@ -1,24 +0,0 @@ - 0, - 'AGAINST' => 1, - 'ABSTENTION' => 2, - 'NOVOTE' => 3, - ]; - } -} diff --git a/app/app/Enums/VoteResultEnum.php b/app/app/Enums/VoteResultEnum.php deleted file mode 100644 index 518c1465b..000000000 --- a/app/app/Enums/VoteResultEnum.php +++ /dev/null @@ -1,28 +0,0 @@ - 0, - 'REJECTED' => 1, - ]; - } - - protected static function labels(): array - { - return [ - 'ADOPTED' => 'adopted', - 'REJECTED' => 'rejected', - ]; - } -} diff --git a/app/app/Enums/VoteTypeEnum.php b/app/app/Enums/VoteTypeEnum.php deleted file mode 100644 index ade995dbe..000000000 --- a/app/app/Enums/VoteTypeEnum.php +++ /dev/null @@ -1,22 +0,0 @@ - 0, - 'AMENDMENT' => 1, - 'SEPARATE' => 2, - ]; - } -} diff --git a/app/app/Exceptions/CouldNotMatchVoteException.php b/app/app/Exceptions/CouldNotMatchVoteException.php deleted file mode 100644 index b760e76a0..000000000 --- a/app/app/Exceptions/CouldNotMatchVoteException.php +++ /dev/null @@ -1,25 +0,0 @@ -id} found."); - } - - public static function multipleMatchingVotingLists(Vote $vote): self - { - return new static("Multiple voting lists for vote {$vote->id} found."); - } - - public static function resultsDoNotMatch(Vote $vote, VotingList $votingList): self - { - return new static("Result for matched voting list {$votingList->id} and vote {$vote->id} are not equal."); - } -} diff --git a/app/app/Exceptions/Handler.php b/app/app/Exceptions/Handler.php deleted file mode 100644 index ff35bfdf4..000000000 --- a/app/app/Exceptions/Handler.php +++ /dev/null @@ -1,59 +0,0 @@ -bound('sentry') && $this->shouldReport($exception)) { - app('sentry')->captureException($exception); - } - - parent::report($exception); - } - - /** - * Render an exception into an HTTP response. - * - * @param \Illuminate\Http\Request $request - * @param \Throwable $exception - * @return \Symfony\Component\HttpFoundation\Response - * - * @throws \Throwable - */ - public function render($request, Throwable $exception) - { - return parent::render($request, $exception); - } -} diff --git a/app/app/Exceptions/ScrapingException.php b/app/app/Exceptions/ScrapingException.php deleted file mode 100644 index fa89187cc..000000000 --- a/app/app/Exceptions/ScrapingException.php +++ /dev/null @@ -1,27 +0,0 @@ -route = $route; - $this->params = $params; - - parent::__construct("Failed executing {$route} scraper."); - } - - public function context() - { - return [ - 'route' => $this->route, - 'params' => $this->params, - ]; - } -} diff --git a/app/app/Group.php b/app/app/Group.php deleted file mode 100644 index 176775b82..000000000 --- a/app/app/Group.php +++ /dev/null @@ -1,27 +0,0 @@ -hasMany(GroupMembership::class); - } -} diff --git a/app/app/GroupMembership.php b/app/app/GroupMembership.php deleted file mode 100644 index bd848081b..000000000 --- a/app/app/GroupMembership.php +++ /dev/null @@ -1,68 +0,0 @@ -belongsTo(Member::class); - } - - public function group() - { - return $this->belongsTo(Group::class); - } - - public function term() - { - return $this->belongsTo(Term::class); - } - - public function scopeActiveAt(Builder $query, \DateTime $date) - { - // Wrapping the where conditions in a closure logically groups - // them using parentheses. It’s not strictly necessary in this - // case, but makes the query a little more robust. - // https://laravel.com/docs/8.x/queries#logical-grouping - $query->where(function ($query) use ($date) { - $query - ->where(function ($query) use ($date) { - $query - ->whereDate('start_date', '<=', $date) - ->whereDate('end_date', '>=', $date); - }) - ->orWhere(function ($query) use ($date) { - $query - ->whereDate('start_date', '<=', $date) - ->whereNull('end_date'); - }); - }); - - return $query; - } -} diff --git a/app/app/Http/Controllers/Controller.php b/app/app/Http/Controllers/Controller.php deleted file mode 100644 index a0a2a8a34..000000000 --- a/app/app/Http/Controllers/Controller.php +++ /dev/null @@ -1,13 +0,0 @@ - Session::current(), - 'lastSession' => Session::last(), - 'nextSession' => Session::next(), - ]); - } -} diff --git a/app/app/Http/Controllers/MembersController.php b/app/app/Http/Controllers/MembersController.php deleted file mode 100644 index 986482db0..000000000 --- a/app/app/Http/Controllers/MembersController.php +++ /dev/null @@ -1,23 +0,0 @@ - $member, - 'group' => GroupMembership::query() - ->with('group') - ->where('member_id', $member->id) - ->activeAt(Carbon::now()) - ->first() - ->group ?? null, - ]); - } -} diff --git a/app/app/Http/Controllers/MonitoringController.php b/app/app/Http/Controllers/MonitoringController.php deleted file mode 100644 index 83c79300a..000000000 --- a/app/app/Http/Controllers/MonitoringController.php +++ /dev/null @@ -1,38 +0,0 @@ -get(); - $votingLists = VotingList::whereDoesntHave('vote')->get(); - - return view('monitoring.index', [ - 'votingLists' => $votingLists, - 'votes' => $votes, - ]); - } - - public function showLists($list) - { - $list = VotingList::find($list); - - return view('monitoring.show', [ - 'record' => $list, - ]); - } - - public function showVotes($vote) - { - $vote = Vote::find($vote); - - return view('monitoring.show', [ - 'record' => $vote, - ]); - } -} diff --git a/app/app/Http/Controllers/PagesController.php b/app/app/Http/Controllers/PagesController.php deleted file mode 100644 index 5e5b32ef0..000000000 --- a/app/app/Http/Controllers/PagesController.php +++ /dev/null @@ -1,19 +0,0 @@ -get($slug); - - if (! $page) { - return abort(404); - } - - return view('pages.show', ['page' => $page]); - } -} diff --git a/app/app/Http/Controllers/VotingListsController.php b/app/app/Http/Controllers/VotingListsController.php deleted file mode 100644 index aa017a7a2..000000000 --- a/app/app/Http/Controllers/VotingListsController.php +++ /dev/null @@ -1,181 +0,0 @@ -stats; - - $groups = Group::all() - ->map(function ($group) use ($stats) { - $group->stats = $stats['by_group'][$group->id] ?? null; - - return $group; - }) - ->filter(function ($group) { - return $group->stats && $group->stats['active'] > 0; - }) - ->sortByDesc(function ($group) { - return $group->stats['active']; - }); - - $countries = collect(CountryEnum::toValues()) - ->map(function ($country) use ($stats) { - $countryStats = $stats['by_country'][$country] ?? null; - - return [$country, $countryStats]; - }) - ->toAssoc() - ->filter(function ($countryStats) { - return $countryStats && $countryStats['active'] > 0; - }) - ->sortByDesc(function ($countryStats) { - return $countryStats['active']; - }); - - return view('voting-lists.show', [ - 'votingList' => $votingList, - 'members' => $this->members($votingList), - 'groups' => $groups, - 'countries' => $countries, - ]); - } - - public function summary(VotingList $votingList) - { - if (! $votingList->vote->summary) { - return abort(404); - } - - if (! $votingList->vote->isFinalVote()) { - return abort(404); - } - - return view('voting-lists.summary', [ - 'votingList' => $votingList, - 'summary' => $votingList->vote->summary, - ]); - } - - public function related(VotingList $votingList) - { - if (! $votingList->vote) { - return abort(404); - } - - if (! $votingList->vote->isFinalVote()) { - return abort(404); - } - - $relatedVotes = $votingList->vote - ->relatedVotes() - ->with('votingList') - ->get(); - - return view('voting-lists.related', [ - 'votingList' => $votingList, - 'relatedVotes' => $relatedVotes, - ]); - } - - public function sharePicture(VotingList $votingList) - { - $shortUrl = Url::fromString(route('voting-list.short', ['hashId' => $votingList->hashId])); - $shortDisplayUrl = $shortUrl->getHost().$shortUrl->getPath(); - - return view('voting-lists.share-picture', [ - 'votingList' => $votingList, - 'shortDisplayUrl' => $shortDisplayUrl, - ]); - } - - public function csv(VotingList $votingList) - { - $rows = $this->members($votingList)->map(function ($member) { - return [ - 'member_id' => $member->id, - 'last_name' => $member->last_name, - 'first_name' => $member->first_name, - 'group.abbreviation' => $member->group->abbreviation, - 'group.name' => $member->group->name, - 'country.code' => $member->country->value, - 'country.name' => $member->country->label, - 'position' => $member->pivot->position->label, - ]; - })->toArray(); - - ob_start(); - $writer = SimpleExcelWriter::createWithoutBom('php://output', 'csv'); - $writer->addRows($rows)->close(); - $csv = ob_get_clean(); - - return response($csv, 200, ['Content-Type' => 'text/csv']); - } - - public function json(VotingList $votingList) - { - $members = $this->members($votingList)->map(function ($member) { - return [ - 'member_id' => $member->id, - 'last_name' => $member->last_name, - 'first_name' => $member->first_name, - 'group' => [ - 'abbreviation' => $member->group->abbreviation, - 'name' => $member->group->name, - ], - 'country' => [ - 'code' => $member->country->value, - 'name' => $member->country->label, - ], - 'position' => $member->pivot->position->label, - ]; - })->toArray(); - - $vote = [ - 'title' => $votingList->display_title, - 'date' => $votingList->date, - 'result' => $votingList->result->label, - 'members' => $members, - ]; - - return response()->json($vote); - } - - private function members(VotingList $votingList) - { - return $votingList - ->members() - ->withGroupMembershipAt($votingList->date) - ->with('group') - // Select only specific attributes of joined tables - // as otherwise e.g. `group_memberships.id` would overwrite - // `members.id`. - ->select('members.*', 'votings.position', 'group_memberships.group_id') - ->get(); - } - - public function short(string $hashId) - { - $votingList = VotingList::find(Hashids::decode($hashId))->first(); - - if (! $votingList) { - abort(404); - } - - return redirect()->route('voting-list.show', ['votingList' => $votingList->id]); - } -} diff --git a/app/app/Http/Kernel.php b/app/app/Http/Kernel.php deleted file mode 100644 index 5102dbfd9..000000000 --- a/app/app/Http/Kernel.php +++ /dev/null @@ -1,68 +0,0 @@ - [ - \App\Http\Middleware\EncryptCookies::class, - \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, - // \Illuminate\Session\Middleware\StartSession::class, - // \Illuminate\Session\Middleware\AuthenticateSession::class, - // \Illuminate\View\Middleware\ShareErrorsFromSession::class, - // \App\Http\Middleware\VerifyCsrfToken::class, - \Illuminate\Routing\Middleware\SubstituteBindings::class, - \App\Http\Middleware\CacheResponse::class, - ], - - 'api' => [ - 'throttle:60,1', - \Illuminate\Routing\Middleware\SubstituteBindings::class, - ], - ]; - - /** - * The application's route middleware. - * - * These middleware may be assigned to groups or used individually. - * - * @var array - */ - protected $routeMiddleware = [ - 'auth' => \App\Http\Middleware\Authenticate::class, - 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, - 'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class, - 'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class, - 'can' => \Illuminate\Auth\Middleware\Authorize::class, - 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, - 'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class, - 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, - 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, - 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, - ]; -} diff --git a/app/app/Http/Middleware/Authenticate.php b/app/app/Http/Middleware/Authenticate.php deleted file mode 100644 index 704089a7f..000000000 --- a/app/app/Http/Middleware/Authenticate.php +++ /dev/null @@ -1,21 +0,0 @@ -expectsJson()) { - return route('login'); - } - } -} diff --git a/app/app/Http/Middleware/CacheResponse.php b/app/app/Http/Middleware/CacheResponse.php deleted file mode 100644 index ba5a0870b..000000000 --- a/app/app/Http/Middleware/CacheResponse.php +++ /dev/null @@ -1,23 +0,0 @@ -route()->named('monitoring', 'monitoring\..*')) { - return false; - } - - if ($request->route()->named('home')) { - return false; - } - - return parent::shouldCache($request, $response); - } -} diff --git a/app/app/Http/Middleware/CheckForMaintenanceMode.php b/app/app/Http/Middleware/CheckForMaintenanceMode.php deleted file mode 100644 index 35b9824ba..000000000 --- a/app/app/Http/Middleware/CheckForMaintenanceMode.php +++ /dev/null @@ -1,17 +0,0 @@ -check()) { - return redirect(RouteServiceProvider::HOME); - } - - return $next($request); - } -} diff --git a/app/app/Http/Middleware/TrimStrings.php b/app/app/Http/Middleware/TrimStrings.php deleted file mode 100644 index 5a50e7b5c..000000000 --- a/app/app/Http/Middleware/TrimStrings.php +++ /dev/null @@ -1,18 +0,0 @@ -allSubdomainsOfApplicationUrl(), - ]; - } -} diff --git a/app/app/Http/Middleware/TrustProxies.php b/app/app/Http/Middleware/TrustProxies.php deleted file mode 100644 index 14befceb0..000000000 --- a/app/app/Http/Middleware/TrustProxies.php +++ /dev/null @@ -1,23 +0,0 @@ -orderBy('last_name_normalized'); - }); - } - - protected $fillable = [ - 'web_id', - 'first_name', - 'last_name', - 'first_name_normalized', - 'last_name_normalized', - 'date_of_birth', - 'country', - 'email', - 'twitter', - 'facebook', - ]; - - protected $dates = [ - 'date_of_birth', - ]; - - protected $casts = [ - 'country' => CountryEnum::class.':nullable', - ]; - - public function terms() - { - return $this->belongsToMany(Term::class); - } - - public function groupMemberships() - { - return $this->hasMany(GroupMembership::class); - } - - public function group() - { - return $this->belongsTo(Group::class); - } - - public function votingLists() - { - return $this->belongsToMany(VotingList::class, 'votings') - ->using(Voting::class) - ->withPivot('position'); - } - - public function getFullNameAttribute(): string - { - return "{$this->first_name} {$this->last_name}"; - } - - public static function normalizeName(string $name): string - { - $name = Str::lower($name); - - $replacements = [ - '-' => ' ', - 'ß' => 'ss', - ]; - - return strtr($name, $replacements); - } - - public function setFirstNameAttribute($name) - { - $this->attributes['first_name'] = $name; - - return $this->first_name_normalized = static::normalizeName($name); - } - - public function setLastNameAttribute($name) - { - $this->attributes['last_name'] = $name; - - return $this->last_name_normalized = static::normalizeName($name); - } - - public function scopeActiveAt(Builder $query, \DateTime $date, Term $term = null) - { - // While members are active members of parliament, they are - // always a member of at least one group. Even independent members - // are technically a member of the NI (non-incrits) group. - return $query->whereHas('groupMemberships', function (Builder $query) use ($date, $term) { - return $query->activeAt($date, $term); - }); - } - - public function scopeWithGroupMembershipAt(Builder $query, \DateTime $date) - { - $groups = GroupMembership::activeAt($date); - - return $query->leftJoinSub($groups, 'group_memberships', function ($join) { - $join->on('group_memberships.member_id', '=', 'members.id'); - }); - } - - public function getThumbnailUrlAttribute(): ?string - { - $thumbnailExists = Storage::disk('public')->exists("members/{$this->id}.jpg"); - - return $thumbnailExists ? Storage::disk('public')->url("members/{$this->id}-104px.jpg") : null; - } - - public function getProfilePictureUrlAttribute(): ?string - { - $profilePictureExists = $this->hasProfilePicture(); - - return $profilePictureExists ? Storage::disk('public')->url("members/{$this->id}.jpg") : null; - } - - public function hasProfilePicture(): bool - { - return Storage::disk('public')->exists("members/{$this->id}.jpg"); - } - - public function getLinksAttribute(): Collection - { - return collect([ - 'email' => $this->email - ? Str::obfuscate("mailto:{$this->email}") - : null, - 'twitter' => $this->twitter, - 'facebook' => $this->facebook, - ])->filter(); - } -} diff --git a/app/app/Mixins/AbstractRenderedMixin.php b/app/app/Mixins/AbstractRenderedMixin.php deleted file mode 100644 index 13543f021..000000000 --- a/app/app/Mixins/AbstractRenderedMixin.php +++ /dev/null @@ -1,92 +0,0 @@ -loadHTML($this->getRenderedHTML()); - - $converter = new CssSelectorConverter(); - $xPathSelector = $converter->toXPath($selector); - - $xPath = new DOMXPath($document); - $elements = $xPath->query($xPathSelector); - - return collect($elements); - }; - } - - public function assertSelector() - { - return function (string $selector, ?int $count = null): self { - $elements = $this->select($selector); - $actualCount = $elements->count(); - - Assert::assertTrue( - $elements->isNotEmpty(), - "Did not find '{$selector}'." - ); - - if ($count !== null) { - Assert::assertEquals( - $count, - $actualCount, - "Expected to find '{$selector}' ${count} times, but found only {$actualCount} matching elements." - ); - } - - return $this; - }; - } - - public function assertSelectorText() - { - return function (string $selector, string $text, ?int $count = null): self { - // Replace multiple whitespace chars with a single space. In HTML, multiple - // whitespace characters will usually be rendered as a single space. - $normalizeText = fn (string $text) => preg_replace('/\s+/', ' ', $text); - - $elements = $this - ->select($selector) - ->filter(function ($element) use ($normalizeText, $text) { - return Str::contains( - $normalizeText($element->textContent), - $normalizeText($text), - ); - }); - - $actualCount = $elements->count(); - - Assert::assertTrue( - $elements->isNotEmpty(), - "Did not find '{$selector}' with text '{$text}'." - ); - - if ($count !== null) { - Assert::assertEquals( - $count, - $actualCount, - "Expected to find '{$selector}' with text '{$text}' {$count} times, but found only {$actualCount} matching elements." - ); - } - - return $this; - }; - } -} diff --git a/app/app/Mixins/CollectionMixin.php b/app/app/Mixins/CollectionMixin.php deleted file mode 100644 index 8327a9b9c..000000000 --- a/app/app/Mixins/CollectionMixin.php +++ /dev/null @@ -1,20 +0,0 @@ -reduce(function ($assoc, $keyValuePair) { - [$key, $value] = $keyValuePair; - $assoc[$key] = $value; - - return $assoc; - }, new static); - }; - } -} diff --git a/app/app/Mixins/ComponentAttributeBagMixin.php b/app/app/Mixins/ComponentAttributeBagMixin.php deleted file mode 100644 index 8d72b9512..000000000 --- a/app/app/Mixins/ComponentAttributeBagMixin.php +++ /dev/null @@ -1,37 +0,0 @@ -class($base); - } - - if (is_string($modifiers)) { - $modifiers = explode(' ', $modifiers); - } - - $classes = []; - - // Optionally support constrained modifiers using associative arrays - foreach ($modifiers as $modifier => $constraint) { - if (is_numeric($modifier)) { - $classes[] = $constraint; - } elseif ($constraint) { - $classes[] = $modifier; - } - } - - $classes = array_filter($classes); - $classes = array_map(fn ($class) => "{$base}--{$class}", $classes); - - return $this->class([$base, ...$classes]); - }; - } -} diff --git a/app/app/Mixins/StrMixin.php b/app/app/Mixins/StrMixin.php deleted file mode 100644 index 1a2492e7b..000000000 --- a/app/app/Mixins/StrMixin.php +++ /dev/null @@ -1,18 +0,0 @@ -split(1) - ->map(fn ($char) => '&#x'.dechex(ord($char)).';') - ->join(''); - }; - } -} diff --git a/app/app/Mixins/TestResponseMixin.php b/app/app/Mixins/TestResponseMixin.php deleted file mode 100644 index 7353d1004..000000000 --- a/app/app/Mixins/TestResponseMixin.php +++ /dev/null @@ -1,13 +0,0 @@ -getContent(); - }; - } -} diff --git a/app/app/Mixins/TestViewMixin.php b/app/app/Mixins/TestViewMixin.php deleted file mode 100644 index bf2418513..000000000 --- a/app/app/Mixins/TestViewMixin.php +++ /dev/null @@ -1,13 +0,0 @@ -rendered; - }; - } -} diff --git a/app/app/Providers/AppServiceProvider.php b/app/app/Providers/AppServiceProvider.php deleted file mode 100644 index eada11693..000000000 --- a/app/app/Providers/AppServiceProvider.php +++ /dev/null @@ -1,64 +0,0 @@ -app->bind(ScrapeAction::class, function () { - return new ScrapeAction( - config('scrapers.host'), - config('scrapers.port') - ); - }); - } - - /** - * Bootstrap any application services. - * - * @return void - */ - public function boot() - { - Http::macro('jsonResponseFromFile', function (string $path) { - $body = File::get(base_path("tests/data/{$path}")); - - return Http::response($body, 200, [ - 'content-type' => 'application/json', - ]); - }); - - Http::macro('fakeJsonFromFile', function (string $url, string $fixture) { - return Http::fake([ - $url => Http::jsonResponseFromFile($fixture), - ]); - }); - - Collection::mixin(new CollectionMixin); - ComponentAttributeBag::mixin(new ComponentAttributeBagMixin); - Str::mixin(new StrMixin); - TestView::mixin(new TestViewMixin); - TestResponse::mixin(new TestResponseMixin); - } -} diff --git a/app/app/Providers/AuthServiceProvider.php b/app/app/Providers/AuthServiceProvider.php deleted file mode 100644 index b14e58988..000000000 --- a/app/app/Providers/AuthServiceProvider.php +++ /dev/null @@ -1,29 +0,0 @@ - 'App\Policies\ModelPolicy', - ]; - - /** - * Register any authentication / authorization services. - * - * @return void - */ - public function boot() - { - $this->registerPolicies(); - - // - } -} diff --git a/app/app/Providers/BroadcastServiceProvider.php b/app/app/Providers/BroadcastServiceProvider.php deleted file mode 100644 index 395c518bc..000000000 --- a/app/app/Providers/BroadcastServiceProvider.php +++ /dev/null @@ -1,21 +0,0 @@ - [ - SendEmailVerificationNotification::class, - ], - ]; - - /** - * Register any events for your application. - * - * @return void - */ - public function boot() - { - parent::boot(); - - // - } -} diff --git a/app/app/Providers/RouteServiceProvider.php b/app/app/Providers/RouteServiceProvider.php deleted file mode 100644 index 540d17b43..000000000 --- a/app/app/Providers/RouteServiceProvider.php +++ /dev/null @@ -1,80 +0,0 @@ -mapApiRoutes(); - - $this->mapWebRoutes(); - - // - } - - /** - * Define the "web" routes for the application. - * - * These routes all receive session state, CSRF protection, etc. - * - * @return void - */ - protected function mapWebRoutes() - { - Route::middleware('web') - ->namespace($this->namespace) - ->group(base_path('routes/web.php')); - } - - /** - * Define the "api" routes for the application. - * - * These routes are typically stateless. - * - * @return void - */ - protected function mapApiRoutes() - { - Route::prefix('api') - ->middleware('api') - ->namespace($this->namespace) - ->group(base_path('routes/api.php')); - } -} diff --git a/app/app/Session.php b/app/app/Session.php deleted file mode 100644 index f68e2befe..000000000 --- a/app/app/Session.php +++ /dev/null @@ -1,80 +0,0 @@ - LocationEnum::class, - ]; - - protected $dates = [ - 'start_date', - 'end_date', - ]; - - public static function next() - { - return static::query() - ->where('start_date', '>', Carbon::now()) - ->orderBy('start_date') - ->first(); - } - - public static function last() - { - return static::query() - ->where('end_date', '<', Carbon::now()) - ->orderByDesc('start_date') - ->first(); - } - - public static function current() - { - return static::query() - ->where('start_date', '<=', Carbon::now()) - ->where('end_date', '>=', Carbon::now()) - ->first(); - } - - public function getDisplayTitleAttribute() - { - return __('session.title', [ - 'date' => $this->start_date->format('F Y'), - 'location' => $this->location->label, - ]); - } - - public function votes() - { - return $this->hasMany(Vote::class); - } - - public function getAgendaUrlAttribute() - { - return "https://www.europarl.europa.eu/doceo/document/OJ-9-{$this->start_date->format('Y-m-d')}-SYN_EN.html"; - } -} diff --git a/app/app/Summary.php b/app/app/Summary.php deleted file mode 100644 index 346535616..000000000 --- a/app/app/Summary.php +++ /dev/null @@ -1,47 +0,0 @@ -text) - ->explode("\n\n") - // Remove the first paragraph as it almost always only contains - // the title and the vote result, which is redundant information. - ->splice(1) - // Remove headings from excerpt - ->filter(fn ($block) => ! Str::startsWith($block, '## ')) - ->join("\n\n"); - - return Str::words($text, 50); - } - - public function getExternalUrlAttribute(): string - { - $baseUrl = 'https://oeil.secure.europarl.europa.eu/oeil/popups'; - - return "{$baseUrl}/summary.do?id={$this->oeil_id}&t=e&l=en"; - } -} diff --git a/app/app/Term.php b/app/app/Term.php deleted file mode 100644 index 4b1e93d29..000000000 --- a/app/app/Term.php +++ /dev/null @@ -1,28 +0,0 @@ -belongsToMany(Member::class); - } -} diff --git a/app/app/Vote.php b/app/app/Vote.php deleted file mode 100644 index cc4d0b863..000000000 --- a/app/app/Vote.php +++ /dev/null @@ -1,154 +0,0 @@ - VoteResultEnum::class, - 'type' => VoteTypeEnum::class, - ]; - - public function voteCollection() - { - return $this->belongsTo(VoteCollection::class); - } - - public function session() - { - return $this->belongsTo(Session::class); - } - - public function votingList() - { - return $this->hasOne(VotingList::class); - } - - public function summary() - { - return $this->voteCollection->summary(); - } - - public function getDisplayTitleAttribute() - { - return $this->voteCollection->title; - } - - public function getSubtitleAttribute() - { - if ($this->isAmendmentVote()) { - return __('votes.subtitle.amendment', [ - 'amendment' => $this->amendment, - 'author' => $this->author, - ]); - } - - if ($this->isSeparateVote()) { - $subject = $this->split_part - ? "{$this->subject}/{$this->split_part}" - : $this->subject; - - return __('votes.subtitle.separate', ['subject' => $subject]); - } - - if ($this->isFinalVote()) { - return __('votes.subtitle.final'); - } - } - - public function relatedVotes() - { - return $this - ->hasMany(self::class, 'vote_collection_id', 'vote_collection_id') - ->where('id', '!=', $this->id); - } - - public function finalVote() - { - return $this - ->hasOne(self::class, 'vote_collection_id', 'vote_collection_id') - ->ofMany(['id' => 'max'], function ($query) { - return $query->final(); - }); - } - - public function scopeFinal($query) - { - return $query->where('final', 1); - } - - public function scopeMatched($query) - { - return $query->whereHas('votingList'); - } - - public function isFinalVote() - { - return $this->final; - } - - public function isPrimaryVote() - { - return VoteTypeEnum::PRIMARY()->equals($this->type); - } - - public function isSeparateVote() - { - return VoteTypeEnum::SEPARATE()->equals($this->type); - } - - public function isAmendmentVote() - { - return VoteTypeEnum::AMENDMENT()->equals($this->type); - } - - public function hasRelatedVotes() - { - return $this->relatedVotes()->exists(); - } - - public function getUrlAttribute(): ?string - { - if (! $this->votingList) { - return null; - } - - return $this->votingList->url; - } -} diff --git a/app/app/VoteCollection.php b/app/app/VoteCollection.php deleted file mode 100644 index 7cb2bfad3..000000000 --- a/app/app/VoteCollection.php +++ /dev/null @@ -1,51 +0,0 @@ -belongsTo(Term::class); - } - - public function votes() - { - return $this->hasMany(Vote::class); - } - - public function summary() - { - return $this->belongsTo(Summary::class, 'reference', 'reference'); - } -} diff --git a/app/app/Voting.php b/app/app/Voting.php deleted file mode 100644 index eb2157355..000000000 --- a/app/app/Voting.php +++ /dev/null @@ -1,18 +0,0 @@ - VotePositionEnum::class, - ]; -} diff --git a/app/app/VotingList.php b/app/app/VotingList.php deleted file mode 100644 index f45bc4988..000000000 --- a/app/app/VotingList.php +++ /dev/null @@ -1,170 +0,0 @@ - 'array', - ]; - - public function shouldBeSearchable() - { - return $this->vote && $this->vote->isFinalVote(); - } - - public function makeAllSearchableUsing($query) - { - return $query->with([ - 'vote', - 'vote.voteCollection', - 'vote.voteCollection.summary', - 'vote.session', - ]); - } - - public function toSearchableArray() - { - return [ - 'id' => $this->id, - 'display_title' => $this->display_title, - 'date' => $this->date->timestamp, - 'result' => $this->vote->result->label, - 'summary' => $this->vote->voteCollection->summary?->text, - 'session_id' => $this->vote->session?->id, - 'session_display_title' => $this->vote->session?->display_title, - 'members' => $this->members->map(fn ($member) => $member->id), - 'votings' => $this->members->mapWithKeys(fn ($member) => [$member->id => $member->pivot->position->label]), - ]; - } - - public function term() - { - return $this->belongsTo(Term::class); - } - - public function members() - { - return $this->belongsToMany(Member::class, 'votings') - ->using(Voting::class) - ->withPivot('position'); - } - - public function vote() - { - return $this->belongsTo(Vote::class); - } - - public function scopeMatched($query) - { - return $query->whereHas('vote'); - } - - public function scopeFinal($query) - { - return $query->whereHas('vote', function ($query) { - return $query->where('final', true); - }); - } - - public function getDisplayTitleAttribute(): string - { - return $this->vote?->display_title ?: $this->description; - } - - public function getHashIdAttribute(): string - { - return Hashids::encode($this->id); - } - - public function getFormattedDateAttribute(): string - { - return $this->date->isoFormat('dddd, MMMM D, YYYY'); - } - - public function getSharePictureUrlAttribute(): ?string - { - if (! $this->vote?->isFinalVote()) { - return null; - } - - $path = "share-pictures/vote-sharepic-{$this->id}.png"; - $disk = Storage::disk('public'); - - if (! $disk->exists($path)) { - return null; - } - - return $disk->url($path); - } - - public function getSharePictureDescriptionAttribute(): ?string - { - if (! $this->vote?->isFinalVote()) { - return null; - } - - return __('voting-lists.share-picture.alt-text', [ - 'title' => $this->display_title, - 'date' => $this->date->formatLocalized('%b%e, %Y'), - 'for' => $this->stats['by_position']['FOR'], - 'forpercent' => round(($this->stats['by_position']['FOR'] / $this->stats['voted'] * 100)), - 'against' => $this->stats['by_position']['AGAINST'], - 'againstpercent' => round(($this->stats['by_position']['AGAINST'] / $this->stats['voted'] * 100)), - 'abstention' => $this->stats['by_position']['ABSTENTION'], - 'abstentionpercent' => round(($this->stats['by_position']['ABSTENTION'] / $this->stats['voted'] * 100)), - 'voted' => $this->stats['voted'], - 'novote' => $this->stats['by_position']['NOVOTE'], - ]); - } - - public function getUrlAttribute(): ?string - { - return route('voting-list.show', ['votingList' => $this->id]); - } - - public function getResultAttribute(): ?VoteResultEnum - { - return $this->vote?->result; - } -} diff --git a/app/artisan b/app/artisan deleted file mode 100755 index 5c23e2e24..000000000 --- a/app/artisan +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/env php -make(Illuminate\Contracts\Console\Kernel::class); - -$status = $kernel->handle( - $input = new Symfony\Component\Console\Input\ArgvInput, - new Symfony\Component\Console\Output\ConsoleOutput -); - -/* -|-------------------------------------------------------------------------- -| Shutdown The Application -|-------------------------------------------------------------------------- -| -| Once Artisan has finished running, we will fire off the shutdown events -| so that any final work may be done by the application before we shut -| down the process. This is the last thing to happen to the request. -| -*/ - -$kernel->terminate($input, $status); - -exit($status); diff --git a/app/bootstrap/app.php b/app/bootstrap/app.php deleted file mode 100644 index 037e17df0..000000000 --- a/app/bootstrap/app.php +++ /dev/null @@ -1,55 +0,0 @@ -singleton( - Illuminate\Contracts\Http\Kernel::class, - App\Http\Kernel::class -); - -$app->singleton( - Illuminate\Contracts\Console\Kernel::class, - App\Console\Kernel::class -); - -$app->singleton( - Illuminate\Contracts\Debug\ExceptionHandler::class, - App\Exceptions\Handler::class -); - -/* -|-------------------------------------------------------------------------- -| Return The Application -|-------------------------------------------------------------------------- -| -| This script returns the application instance. The instance is given to -| the calling script so we can separate the building of the instances -| from the actual running of the application and sending responses. -| -*/ - -return $app; diff --git a/app/composer.json b/app/composer.json deleted file mode 100644 index 94f539be5..000000000 --- a/app/composer.json +++ /dev/null @@ -1,93 +0,0 @@ -{ - "name": "laravel/laravel", - "type": "project", - "description": "The Laravel Framework.", - "keywords": [ - "framework", - "laravel" - ], - "license": "MIT", - "repositories": [ - { - "type": "vcs", - "url": "https://github.com/HowTheyVote/page-cache" - } - ], - "require": { - "php": "^8", - "doctrine/dbal": "^3.0", - "fideloper/proxy": "^4.2", - "fruitcake/laravel-cors": "^3.0", - "guzzlehttp/guzzle": "^7.0.1", - "http-interop/http-factory-guzzle": "^1.2", - "intervention/image": "^2.6", - "jubeki/laravel-code-style": "^1.1", - "laravel/framework": "^8.0", - "laravel/scout": "^9.2", - "laravel/tinker": "^2.0", - "meilisearch/meilisearch-php": "0.24.2", - "sentry/sentry-laravel": "^2.4", - "silber/page-cache": "dev-csv-support", - "spatie/laravel-enum": "^3", - "spatie/laravel-ray": "^1.24", - "spatie/sheets": "^1.7", - "spatie/simple-excel": "^2.1", - "spatie/url": "^2.0", - "symfony/css-selector": "^6.0", - "vinkla/hashids": "^9.1" - }, - "require-dev": { - "facade/ignition": "^2.3.6", - "fzaninotto/faker": "^1.9.1", - "mockery/mockery": "^1.3.1", - "nunomaduro/collision": "^5.0", - "pestphp/pest": "^1.21", - "pestphp/pest-plugin-laravel": "^1.3", - "phpunit/phpunit": "^9.0" - }, - "config": { - "optimize-autoloader": true, - "preferred-install": "dist", - "sort-packages": true, - "allow-plugins": { - "pestphp/pest-plugin": true - } - }, - "extra": { - "laravel": { - "dont-discover": [] - } - }, - "autoload": { - "psr-4": { - "App\\": "app/" - }, - "classmap": [ - "database/seeds", - "database/factories" - ] - }, - "autoload-dev": { - "psr-4": { - "Tests\\": "tests/" - } - }, - "minimum-stability": "dev", - "prefer-stable": true, - "scripts": { - "post-autoload-dump": [ - "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", - "@php artisan package:discover --ansi" - ], - "post-root-package-install": [ - "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" - ], - "post-create-project-cmd": [ - "@php artisan key:generate --ansi" - ], - "test": "@php artisan config:clear && pest --no-interaction --coverage", - "test-with-coverage": "pest --no-interaction --coverage-clover ./coverage.xml", - "cs": "php-cs-fixer fix --dry-run", - "cs-fix": "php-cs-fixer fix" - } -} diff --git a/app/composer.lock b/app/composer.lock deleted file mode 100644 index 911bc2195..000000000 --- a/app/composer.lock +++ /dev/null @@ -1,11767 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "4fb0b0634dbeb378be86b30156268447", - "packages": [ - { - "name": "brick/math", - "version": "0.10.2", - "source": { - "type": "git", - "url": "https://github.com/brick/math.git", - "reference": "459f2781e1a08d52ee56b0b1444086e038561e3f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/459f2781e1a08d52ee56b0b1444086e038561e3f", - "reference": "459f2781e1a08d52ee56b0b1444086e038561e3f", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.4 || ^8.0" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^9.0", - "vimeo/psalm": "4.25.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Brick\\Math\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Arbitrary-precision arithmetic library", - "keywords": [ - "Arbitrary-precision", - "BigInteger", - "BigRational", - "arithmetic", - "bigdecimal", - "bignum", - "brick", - "math" - ], - "support": { - "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.10.2" - }, - "funding": [ - { - "url": "https://github.com/BenMorel", - "type": "github" - } - ], - "time": "2022-08-10T22:54:19+00:00" - }, - { - "name": "clue/stream-filter", - "version": "v1.6.0", - "source": { - "type": "git", - "url": "https://github.com/clue/stream-filter.git", - "reference": "d6169430c7731d8509da7aecd0af756a5747b78e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/clue/stream-filter/zipball/d6169430c7731d8509da7aecd0af756a5747b78e", - "reference": "d6169430c7731d8509da7aecd0af756a5747b78e", - "shasum": "" - }, - "require": { - "php": ">=5.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3 || ^5.7 || ^4.8.36" - }, - "type": "library", - "autoload": { - "files": [ - "src/functions_include.php" - ], - "psr-4": { - "Clue\\StreamFilter\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Christian Lück", - "email": "christian@clue.engineering" - } - ], - "description": "A simple and modern approach to stream filtering in PHP", - "homepage": "https://github.com/clue/php-stream-filter", - "keywords": [ - "bucket brigade", - "callback", - "filter", - "php_user_filter", - "stream", - "stream_filter_append", - "stream_filter_register" - ], - "support": { - "issues": "https://github.com/clue/stream-filter/issues", - "source": "https://github.com/clue/stream-filter/tree/v1.6.0" - }, - "funding": [ - { - "url": "https://clue.engineering/support", - "type": "custom" - }, - { - "url": "https://github.com/clue", - "type": "github" - } - ], - "time": "2022-02-21T13:15:14+00:00" - }, - { - "name": "composer/pcre", - "version": "3.0.0", - "source": { - "type": "git", - "url": "https://github.com/composer/pcre.git", - "reference": "e300eb6c535192decd27a85bc72a9290f0d6b3bd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/pcre/zipball/e300eb6c535192decd27a85bc72a9290f0d6b3bd", - "reference": "e300eb6c535192decd27a85bc72a9290f0d6b3bd", - "shasum": "" - }, - "require": { - "php": "^7.4 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^1.3", - "phpstan/phpstan-strict-rules": "^1.1", - "symfony/phpunit-bridge": "^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.x-dev" - } - }, - "autoload": { - "psr-4": { - "Composer\\Pcre\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - } - ], - "description": "PCRE wrapping library that offers type-safe preg_* replacements.", - "keywords": [ - "PCRE", - "preg", - "regex", - "regular expression" - ], - "support": { - "issues": "https://github.com/composer/pcre/issues", - "source": "https://github.com/composer/pcre/tree/3.0.0" - }, - "funding": [ - { - "url": "https://packagist.com", - "type": "custom" - }, - { - "url": "https://github.com/composer", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", - "type": "tidelift" - } - ], - "time": "2022-02-25T20:21:48+00:00" - }, - { - "name": "composer/semver", - "version": "3.3.2", - "source": { - "type": "git", - "url": "https://github.com/composer/semver.git", - "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/3953f23262f2bff1919fc82183ad9acb13ff62c9", - "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9", - "shasum": "" - }, - "require": { - "php": "^5.3.2 || ^7.0 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^1.4", - "symfony/phpunit-bridge": "^4.2 || ^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.x-dev" - } - }, - "autoload": { - "psr-4": { - "Composer\\Semver\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nils Adermann", - "email": "naderman@naderman.de", - "homepage": "http://www.naderman.de" - }, - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - }, - { - "name": "Rob Bast", - "email": "rob.bast@gmail.com", - "homepage": "http://robbast.nl" - } - ], - "description": "Semver library that offers utilities, version constraint parsing and validation.", - "keywords": [ - "semantic", - "semver", - "validation", - "versioning" - ], - "support": { - "irc": "irc://irc.freenode.org/composer", - "issues": "https://github.com/composer/semver/issues", - "source": "https://github.com/composer/semver/tree/3.3.2" - }, - "funding": [ - { - "url": "https://packagist.com", - "type": "custom" - }, - { - "url": "https://github.com/composer", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", - "type": "tidelift" - } - ], - "time": "2022-04-01T19:23:25+00:00" - }, - { - "name": "composer/xdebug-handler", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/composer/xdebug-handler.git", - "reference": "ced299686f41dce890debac69273b47ffe98a40c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/ced299686f41dce890debac69273b47ffe98a40c", - "reference": "ced299686f41dce890debac69273b47ffe98a40c", - "shasum": "" - }, - "require": { - "composer/pcre": "^1 || ^2 || ^3", - "php": "^7.2.5 || ^8.0", - "psr/log": "^1 || ^2 || ^3" - }, - "require-dev": { - "phpstan/phpstan": "^1.0", - "phpstan/phpstan-strict-rules": "^1.1", - "symfony/phpunit-bridge": "^6.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Composer\\XdebugHandler\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "John Stevenson", - "email": "john-stevenson@blueyonder.co.uk" - } - ], - "description": "Restarts a process without Xdebug.", - "keywords": [ - "Xdebug", - "performance" - ], - "support": { - "irc": "irc://irc.freenode.org/composer", - "issues": "https://github.com/composer/xdebug-handler/issues", - "source": "https://github.com/composer/xdebug-handler/tree/3.0.3" - }, - "funding": [ - { - "url": "https://packagist.com", - "type": "custom" - }, - { - "url": "https://github.com/composer", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", - "type": "tidelift" - } - ], - "time": "2022-02-25T21:32:43+00:00" - }, - { - "name": "dflydev/dot-access-data", - "version": "v3.0.1", - "source": { - "type": "git", - "url": "https://github.com/dflydev/dflydev-dot-access-data.git", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/0992cc19268b259a39e86f296da5f0677841f42c", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^0.12.42", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.3", - "scrutinizer/ocular": "1.6.0", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^3.14" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.x-dev" - } - }, - "autoload": { - "psr-4": { - "Dflydev\\DotAccessData\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Dragonfly Development Inc.", - "email": "info@dflydev.com", - "homepage": "http://dflydev.com" - }, - { - "name": "Beau Simensen", - "email": "beau@dflydev.com", - "homepage": "http://beausimensen.com" - }, - { - "name": "Carlos Frutos", - "email": "carlos@kiwing.it", - "homepage": "https://github.com/cfrutos" - }, - { - "name": "Colin O'Dell", - "email": "colinodell@gmail.com", - "homepage": "https://www.colinodell.com" - } - ], - "description": "Given a deep data structure, access data by dot notation.", - "homepage": "https://github.com/dflydev/dflydev-dot-access-data", - "keywords": [ - "access", - "data", - "dot", - "notation" - ], - "support": { - "issues": "https://github.com/dflydev/dflydev-dot-access-data/issues", - "source": "https://github.com/dflydev/dflydev-dot-access-data/tree/v3.0.1" - }, - "time": "2021-08-13T13:06:58+00:00" - }, - { - "name": "doctrine/annotations", - "version": "1.13.3", - "source": { - "type": "git", - "url": "https://github.com/doctrine/annotations.git", - "reference": "648b0343343565c4a056bfc8392201385e8d89f0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/annotations/zipball/648b0343343565c4a056bfc8392201385e8d89f0", - "reference": "648b0343343565c4a056bfc8392201385e8d89f0", - "shasum": "" - }, - "require": { - "doctrine/lexer": "1.*", - "ext-tokenizer": "*", - "php": "^7.1 || ^8.0", - "psr/cache": "^1 || ^2 || ^3" - }, - "require-dev": { - "doctrine/cache": "^1.11 || ^2.0", - "doctrine/coding-standard": "^6.0 || ^8.1", - "phpstan/phpstan": "^1.4.10 || ^1.8.0", - "phpunit/phpunit": "^7.5 || ^8.0 || ^9.1.5", - "symfony/cache": "^4.4 || ^5.2", - "vimeo/psalm": "^4.10" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "Docblock Annotations Parser", - "homepage": "https://www.doctrine-project.org/projects/annotations.html", - "keywords": [ - "annotations", - "docblock", - "parser" - ], - "support": { - "issues": "https://github.com/doctrine/annotations/issues", - "source": "https://github.com/doctrine/annotations/tree/1.13.3" - }, - "time": "2022-07-02T10:48:51+00:00" - }, - { - "name": "doctrine/cache", - "version": "2.2.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/cache.git", - "reference": "1ca8f21980e770095a31456042471a57bc4c68fb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/cache/zipball/1ca8f21980e770095a31456042471a57bc4c68fb", - "reference": "1ca8f21980e770095a31456042471a57bc4c68fb", - "shasum": "" - }, - "require": { - "php": "~7.1 || ^8.0" - }, - "conflict": { - "doctrine/common": ">2.2,<2.4" - }, - "require-dev": { - "cache/integration-tests": "dev-master", - "doctrine/coding-standard": "^9", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "psr/cache": "^1.0 || ^2.0 || ^3.0", - "symfony/cache": "^4.4 || ^5.4 || ^6", - "symfony/var-exporter": "^4.4 || ^5.4 || ^6" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "PHP Doctrine Cache library is a popular cache implementation that supports many different drivers such as redis, memcache, apc, mongodb and others.", - "homepage": "https://www.doctrine-project.org/projects/cache.html", - "keywords": [ - "abstraction", - "apcu", - "cache", - "caching", - "couchdb", - "memcached", - "php", - "redis", - "xcache" - ], - "support": { - "issues": "https://github.com/doctrine/cache/issues", - "source": "https://github.com/doctrine/cache/tree/2.2.0" - }, - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fcache", - "type": "tidelift" - } - ], - "time": "2022-05-20T20:07:39+00:00" - }, - { - "name": "doctrine/dbal", - "version": "3.6.1", - "source": { - "type": "git", - "url": "https://github.com/doctrine/dbal.git", - "reference": "57815c7bbcda3cd18871d253c1dd8cbe56f8526e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/57815c7bbcda3cd18871d253c1dd8cbe56f8526e", - "reference": "57815c7bbcda3cd18871d253c1dd8cbe56f8526e", - "shasum": "" - }, - "require": { - "composer-runtime-api": "^2", - "doctrine/cache": "^1.11|^2.0", - "doctrine/deprecations": "^0.5.3|^1", - "doctrine/event-manager": "^1|^2", - "php": "^7.4 || ^8.0", - "psr/cache": "^1|^2|^3", - "psr/log": "^1|^2|^3" - }, - "require-dev": { - "doctrine/coding-standard": "11.1.0", - "fig/log-test": "^1", - "jetbrains/phpstorm-stubs": "2022.3", - "phpstan/phpstan": "1.10.3", - "phpstan/phpstan-strict-rules": "^1.5", - "phpunit/phpunit": "9.6.4", - "psalm/plugin-phpunit": "0.18.4", - "squizlabs/php_codesniffer": "3.7.2", - "symfony/cache": "^5.4|^6.0", - "symfony/console": "^4.4|^5.4|^6.0", - "vimeo/psalm": "4.30.0" - }, - "suggest": { - "symfony/console": "For helpful console commands such as SQL execution and import of files." - }, - "bin": [ - "bin/doctrine-dbal" - ], - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\DBAL\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - } - ], - "description": "Powerful PHP database abstraction layer (DBAL) with many features for database schema introspection and management.", - "homepage": "https://www.doctrine-project.org/projects/dbal.html", - "keywords": [ - "abstraction", - "database", - "db2", - "dbal", - "mariadb", - "mssql", - "mysql", - "oci8", - "oracle", - "pdo", - "pgsql", - "postgresql", - "queryobject", - "sasql", - "sql", - "sqlite", - "sqlserver", - "sqlsrv" - ], - "support": { - "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/3.6.1" - }, - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fdbal", - "type": "tidelift" - } - ], - "time": "2023-03-02T19:26:24+00:00" - }, - { - "name": "doctrine/deprecations", - "version": "v1.0.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/deprecations.git", - "reference": "0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/deprecations/zipball/0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de", - "reference": "0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de", - "shasum": "" - }, - "require": { - "php": "^7.1|^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^9", - "phpunit/phpunit": "^7.5|^8.5|^9.5", - "psr/log": "^1|^2|^3" - }, - "suggest": { - "psr/log": "Allows logging deprecations via PSR-3 logger implementation" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Deprecations\\": "lib/Doctrine/Deprecations" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.", - "homepage": "https://www.doctrine-project.org/", - "support": { - "issues": "https://github.com/doctrine/deprecations/issues", - "source": "https://github.com/doctrine/deprecations/tree/v1.0.0" - }, - "time": "2022-05-02T15:47:09+00:00" - }, - { - "name": "doctrine/event-manager", - "version": "1.2.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/event-manager.git", - "reference": "95aa4cb529f1e96576f3fda9f5705ada4056a520" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/event-manager/zipball/95aa4cb529f1e96576f3fda9f5705ada4056a520", - "reference": "95aa4cb529f1e96576f3fda9f5705ada4056a520", - "shasum": "" - }, - "require": { - "doctrine/deprecations": "^0.5.3 || ^1", - "php": "^7.1 || ^8.0" - }, - "conflict": { - "doctrine/common": "<2.9" - }, - "require-dev": { - "doctrine/coding-standard": "^9 || ^10", - "phpstan/phpstan": "~1.4.10 || ^1.8.8", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.24" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - }, - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com" - } - ], - "description": "The Doctrine Event Manager is a simple PHP event system that was built to be used with the various Doctrine projects.", - "homepage": "https://www.doctrine-project.org/projects/event-manager.html", - "keywords": [ - "event", - "event dispatcher", - "event manager", - "event system", - "events" - ], - "support": { - "issues": "https://github.com/doctrine/event-manager/issues", - "source": "https://github.com/doctrine/event-manager/tree/1.2.0" - }, - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fevent-manager", - "type": "tidelift" - } - ], - "time": "2022-10-12T20:51:15+00:00" - }, - { - "name": "doctrine/inflector", - "version": "2.0.5", - "source": { - "type": "git", - "url": "https://github.com/doctrine/inflector.git", - "reference": "ade2b3bbfb776f27f0558e26eed43b5d9fe1b392" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/ade2b3bbfb776f27f0558e26eed43b5d9fe1b392", - "reference": "ade2b3bbfb776f27f0558e26eed43b5d9fe1b392", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^9", - "phpstan/phpstan": "^1.8", - "phpstan/phpstan-phpunit": "^1.1", - "phpstan/phpstan-strict-rules": "^1.3", - "phpunit/phpunit": "^8.5 || ^9.5", - "vimeo/psalm": "^4.25" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Inflector\\": "lib/Doctrine/Inflector" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "PHP Doctrine Inflector is a small library that can perform string manipulations with regard to upper/lowercase and singular/plural forms of words.", - "homepage": "https://www.doctrine-project.org/projects/inflector.html", - "keywords": [ - "inflection", - "inflector", - "lowercase", - "manipulation", - "php", - "plural", - "singular", - "strings", - "uppercase", - "words" - ], - "support": { - "issues": "https://github.com/doctrine/inflector/issues", - "source": "https://github.com/doctrine/inflector/tree/2.0.5" - }, - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finflector", - "type": "tidelift" - } - ], - "time": "2022-09-07T09:01:28+00:00" - }, - { - "name": "doctrine/lexer", - "version": "1.2.3", - "source": { - "type": "git", - "url": "https://github.com/doctrine/lexer.git", - "reference": "c268e882d4dbdd85e36e4ad69e02dc284f89d229" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/c268e882d4dbdd85e36e4ad69e02dc284f89d229", - "reference": "c268e882d4dbdd85e36e4ad69e02dc284f89d229", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^9.0", - "phpstan/phpstan": "^1.3", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.11" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.", - "homepage": "https://www.doctrine-project.org/projects/lexer.html", - "keywords": [ - "annotations", - "docblock", - "lexer", - "parser", - "php" - ], - "support": { - "issues": "https://github.com/doctrine/lexer/issues", - "source": "https://github.com/doctrine/lexer/tree/1.2.3" - }, - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Flexer", - "type": "tidelift" - } - ], - "time": "2022-02-28T11:07:21+00:00" - }, - { - "name": "dragonmantank/cron-expression", - "version": "v3.3.2", - "source": { - "type": "git", - "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "782ca5968ab8b954773518e9e49a6f892a34b2a8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/782ca5968ab8b954773518e9e49a6f892a34b2a8", - "reference": "782ca5968ab8b954773518e9e49a6f892a34b2a8", - "shasum": "" - }, - "require": { - "php": "^7.2|^8.0", - "webmozart/assert": "^1.0" - }, - "replace": { - "mtdowling/cron-expression": "^1.0" - }, - "require-dev": { - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^1.0", - "phpstan/phpstan-webmozart-assert": "^1.0", - "phpunit/phpunit": "^7.0|^8.0|^9.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Cron\\": "src/Cron/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Chris Tankersley", - "email": "chris@ctankersley.com", - "homepage": "https://github.com/dragonmantank" - } - ], - "description": "CRON for PHP: Calculate the next or previous run date and determine if a CRON expression is due", - "keywords": [ - "cron", - "schedule" - ], - "support": { - "issues": "https://github.com/dragonmantank/cron-expression/issues", - "source": "https://github.com/dragonmantank/cron-expression/tree/v3.3.2" - }, - "funding": [ - { - "url": "https://github.com/dragonmantank", - "type": "github" - } - ], - "time": "2022-09-10T18:51:20+00:00" - }, - { - "name": "egulias/email-validator", - "version": "2.1.25", - "source": { - "type": "git", - "url": "https://github.com/egulias/EmailValidator.git", - "reference": "0dbf5d78455d4d6a41d186da50adc1122ec066f4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/0dbf5d78455d4d6a41d186da50adc1122ec066f4", - "reference": "0dbf5d78455d4d6a41d186da50adc1122ec066f4", - "shasum": "" - }, - "require": { - "doctrine/lexer": "^1.0.1", - "php": ">=5.5", - "symfony/polyfill-intl-idn": "^1.10" - }, - "require-dev": { - "dominicsayers/isemail": "^3.0.7", - "phpunit/phpunit": "^4.8.36|^7.5.15", - "satooshi/php-coveralls": "^1.0.1" - }, - "suggest": { - "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Egulias\\EmailValidator\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Eduardo Gulias Davis" - } - ], - "description": "A library for validating emails against several RFCs", - "homepage": "https://github.com/egulias/EmailValidator", - "keywords": [ - "email", - "emailvalidation", - "emailvalidator", - "validation", - "validator" - ], - "support": { - "issues": "https://github.com/egulias/EmailValidator/issues", - "source": "https://github.com/egulias/EmailValidator/tree/2.1.25" - }, - "funding": [ - { - "url": "https://github.com/egulias", - "type": "github" - } - ], - "time": "2020-12-29T14:50:06+00:00" - }, - { - "name": "fideloper/proxy", - "version": "4.4.2", - "source": { - "type": "git", - "url": "https://github.com/fideloper/TrustedProxy.git", - "reference": "a751f2bc86dd8e6cfef12dc0cbdada82f5a18750" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/fideloper/TrustedProxy/zipball/a751f2bc86dd8e6cfef12dc0cbdada82f5a18750", - "reference": "a751f2bc86dd8e6cfef12dc0cbdada82f5a18750", - "shasum": "" - }, - "require": { - "illuminate/contracts": "^5.0|^6.0|^7.0|^8.0|^9.0", - "php": ">=5.4.0" - }, - "require-dev": { - "illuminate/http": "^5.0|^6.0|^7.0|^8.0|^9.0", - "mockery/mockery": "^1.0", - "phpunit/phpunit": "^8.5.8|^9.3.3" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Fideloper\\Proxy\\TrustedProxyServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Fideloper\\Proxy\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Chris Fidao", - "email": "fideloper@gmail.com" - } - ], - "description": "Set trusted proxies for Laravel", - "keywords": [ - "load balancing", - "proxy", - "trusted proxy" - ], - "support": { - "issues": "https://github.com/fideloper/TrustedProxy/issues", - "source": "https://github.com/fideloper/TrustedProxy/tree/4.4.2" - }, - "time": "2022-02-09T13:33:34+00:00" - }, - { - "name": "friendsofphp/php-cs-fixer", - "version": "v3.11.0", - "source": { - "type": "git", - "url": "https://github.com/FriendsOfPHP/PHP-CS-Fixer.git", - "reference": "7dcdea3f2f5f473464e835be9be55283ff8cfdc3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/7dcdea3f2f5f473464e835be9be55283ff8cfdc3", - "reference": "7dcdea3f2f5f473464e835be9be55283ff8cfdc3", - "shasum": "" - }, - "require": { - "composer/semver": "^3.2", - "composer/xdebug-handler": "^3.0.3", - "doctrine/annotations": "^1.13", - "ext-json": "*", - "ext-tokenizer": "*", - "php": "^7.4 || ^8.0", - "sebastian/diff": "^4.0", - "symfony/console": "^5.4 || ^6.0", - "symfony/event-dispatcher": "^5.4 || ^6.0", - "symfony/filesystem": "^5.4 || ^6.0", - "symfony/finder": "^5.4 || ^6.0", - "symfony/options-resolver": "^5.4 || ^6.0", - "symfony/polyfill-mbstring": "^1.23", - "symfony/polyfill-php80": "^1.25", - "symfony/polyfill-php81": "^1.25", - "symfony/process": "^5.4 || ^6.0", - "symfony/stopwatch": "^5.4 || ^6.0" - }, - "require-dev": { - "justinrainbow/json-schema": "^5.2", - "keradus/cli-executor": "^1.5", - "mikey179/vfsstream": "^1.6.10", - "php-coveralls/php-coveralls": "^2.5.2", - "php-cs-fixer/accessible-object": "^1.1", - "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.2", - "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.2.1", - "phpspec/prophecy": "^1.15", - "phpspec/prophecy-phpunit": "^2.0", - "phpunit/phpunit": "^9.5", - "phpunitgoodpractices/polyfill": "^1.5", - "phpunitgoodpractices/traits": "^1.9.1", - "symfony/phpunit-bridge": "^6.0", - "symfony/yaml": "^5.4 || ^6.0" - }, - "suggest": { - "ext-dom": "For handling output formats in XML", - "ext-mbstring": "For handling non-UTF8 characters." - }, - "bin": [ - "php-cs-fixer" - ], - "type": "application", - "autoload": { - "psr-4": { - "PhpCsFixer\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Dariusz Rumiński", - "email": "dariusz.ruminski@gmail.com" - } - ], - "description": "A tool to automatically fix PHP code style", - "support": { - "issues": "https://github.com/FriendsOfPHP/PHP-CS-Fixer/issues", - "source": "https://github.com/FriendsOfPHP/PHP-CS-Fixer/tree/v3.11.0" - }, - "funding": [ - { - "url": "https://github.com/keradus", - "type": "github" - } - ], - "time": "2022-09-01T18:24:51+00:00" - }, - { - "name": "fruitcake/laravel-cors", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/fruitcake/laravel-cors.git", - "reference": "7c036ec08972d8d5d9db637e772af6887828faf5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/7c036ec08972d8d5d9db637e772af6887828faf5", - "reference": "7c036ec08972d8d5d9db637e772af6887828faf5", - "shasum": "" - }, - "require": { - "fruitcake/php-cors": "^1.2", - "illuminate/contracts": "^6|^7|^8|^9", - "illuminate/support": "^6|^7|^8|^9", - "php": "^7.4|^8.0" - }, - "require-dev": { - "laravel/framework": "^6|^7.24|^8", - "orchestra/testbench-dusk": "^4|^5|^6|^7", - "phpunit/phpunit": "^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - }, - "laravel": { - "providers": [ - "Fruitcake\\Cors\\CorsServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Fruitcake\\Cors\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fruitcake", - "homepage": "https://fruitcake.nl" - }, - { - "name": "Barry vd. Heuvel", - "email": "barryvdh@gmail.com" - } - ], - "description": "Adds CORS (Cross-Origin Resource Sharing) headers support in your Laravel application", - "keywords": [ - "api", - "cors", - "crossdomain", - "laravel" - ], - "support": { - "issues": "https://github.com/fruitcake/laravel-cors/issues", - "source": "https://github.com/fruitcake/laravel-cors/tree/v3.0.0" - }, - "funding": [ - { - "url": "https://fruitcake.nl", - "type": "custom" - }, - { - "url": "https://github.com/barryvdh", - "type": "github" - } - ], - "time": "2022-02-23T14:53:22+00:00" - }, - { - "name": "fruitcake/php-cors", - "version": "v1.2.0", - "source": { - "type": "git", - "url": "https://github.com/fruitcake/php-cors.git", - "reference": "58571acbaa5f9f462c9c77e911700ac66f446d4e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/fruitcake/php-cors/zipball/58571acbaa5f9f462c9c77e911700ac66f446d4e", - "reference": "58571acbaa5f9f462c9c77e911700ac66f446d4e", - "shasum": "" - }, - "require": { - "php": "^7.4|^8.0", - "symfony/http-foundation": "^4.4|^5.4|^6" - }, - "require-dev": { - "phpstan/phpstan": "^1.4", - "phpunit/phpunit": "^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.1-dev" - } - }, - "autoload": { - "psr-4": { - "Fruitcake\\Cors\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fruitcake", - "homepage": "https://fruitcake.nl" - }, - { - "name": "Barryvdh", - "email": "barryvdh@gmail.com" - } - ], - "description": "Cross-origin resource sharing library for the Symfony HttpFoundation", - "homepage": "https://github.com/fruitcake/php-cors", - "keywords": [ - "cors", - "laravel", - "symfony" - ], - "support": { - "issues": "https://github.com/fruitcake/php-cors/issues", - "source": "https://github.com/fruitcake/php-cors/tree/v1.2.0" - }, - "funding": [ - { - "url": "https://fruitcake.nl", - "type": "custom" - }, - { - "url": "https://github.com/barryvdh", - "type": "github" - } - ], - "time": "2022-02-20T15:07:15+00:00" - }, - { - "name": "graham-campbell/manager", - "version": "v4.6.0", - "source": { - "type": "git", - "url": "https://github.com/GrahamCampbell/Laravel-Manager.git", - "reference": "e18c29f98adb770bd890b6d66b27ba4730272599" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Laravel-Manager/zipball/e18c29f98adb770bd890b6d66b27ba4730272599", - "reference": "e18c29f98adb770bd890b6d66b27ba4730272599", - "shasum": "" - }, - "require": { - "illuminate/contracts": "^5.5 || ^6.0 || ^7.0 || ^8.0", - "illuminate/support": "^5.5 || ^6.0 || ^7.0 || ^8.0", - "php": "^7.1.3 || ^8.0" - }, - "require-dev": { - "graham-campbell/analyzer": "^2.4 || ^3.0", - "graham-campbell/testbench-core": "^3.2", - "mockery/mockery": "^1.3.1", - "phpunit/phpunit": "^6.5 || ^7.5 || ^8.4 || ^9.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "GrahamCampbell\\Manager\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Graham Campbell", - "email": "graham@alt-three.com" - } - ], - "description": "Manager Provides Some Manager Functionality For Laravel", - "keywords": [ - "Graham Campbell", - "GrahamCampbell", - "Laravel Manager", - "Laravel-Manager", - "connector", - "framework", - "interface", - "laravel", - "manager" - ], - "support": { - "issues": "https://github.com/GrahamCampbell/Laravel-Manager/issues", - "source": "https://github.com/GrahamCampbell/Laravel-Manager/tree/4.6" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/graham-campbell/manager", - "type": "tidelift" - } - ], - "time": "2020-07-25T18:02:52+00:00" - }, - { - "name": "graham-campbell/result-type", - "version": "v1.1.0", - "source": { - "type": "git", - "url": "https://github.com/GrahamCampbell/Result-Type.git", - "reference": "a878d45c1914464426dc94da61c9e1d36ae262a8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/a878d45c1914464426dc94da61c9e1d36ae262a8", - "reference": "a878d45c1914464426dc94da61c9e1d36ae262a8", - "shasum": "" - }, - "require": { - "php": "^7.2.5 || ^8.0", - "phpoption/phpoption": "^1.9" - }, - "require-dev": { - "phpunit/phpunit": "^8.5.28 || ^9.5.21" - }, - "type": "library", - "autoload": { - "psr-4": { - "GrahamCampbell\\ResultType\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" - } - ], - "description": "An Implementation Of The Result Type", - "keywords": [ - "Graham Campbell", - "GrahamCampbell", - "Result Type", - "Result-Type", - "result" - ], - "support": { - "issues": "https://github.com/GrahamCampbell/Result-Type/issues", - "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.0" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", - "type": "tidelift" - } - ], - "time": "2022-07-30T15:56:11+00:00" - }, - { - "name": "guzzlehttp/guzzle", - "version": "7.5.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "b50a2a1251152e43f6a37f0fa053e730a67d25ba" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/b50a2a1251152e43f6a37f0fa053e730a67d25ba", - "reference": "b50a2a1251152e43f6a37f0fa053e730a67d25ba", - "shasum": "" - }, - "require": { - "ext-json": "*", - "guzzlehttp/promises": "^1.5", - "guzzlehttp/psr7": "^1.9 || ^2.4", - "php": "^7.2.5 || ^8.0", - "psr/http-client": "^1.0", - "symfony/deprecation-contracts": "^2.2 || ^3.0" - }, - "provide": { - "psr/http-client-implementation": "1.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.1", - "ext-curl": "*", - "php-http/client-integration-tests": "^3.0", - "phpunit/phpunit": "^8.5.29 || ^9.5.23", - "psr/log": "^1.1 || ^2.0 || ^3.0" - }, - "suggest": { - "ext-curl": "Required for CURL handler support", - "ext-intl": "Required for Internationalized Domain Name (IDN) support", - "psr/log": "Required for using the Log middleware" - }, - "type": "library", - "extra": { - "bamarni-bin": { - "bin-links": true, - "forward-command": false - }, - "branch-alias": { - "dev-master": "7.5-dev" - } - }, - "autoload": { - "files": [ - "src/functions_include.php" - ], - "psr-4": { - "GuzzleHttp\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" - }, - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, - { - "name": "Jeremy Lindblom", - "email": "jeremeamia@gmail.com", - "homepage": "https://github.com/jeremeamia" - }, - { - "name": "George Mponos", - "email": "gmponos@gmail.com", - "homepage": "https://github.com/gmponos" - }, - { - "name": "Tobias Nyholm", - "email": "tobias.nyholm@gmail.com", - "homepage": "https://github.com/Nyholm" - }, - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com", - "homepage": "https://github.com/sagikazarmark" - }, - { - "name": "Tobias Schultze", - "email": "webmaster@tubo-world.de", - "homepage": "https://github.com/Tobion" - } - ], - "description": "Guzzle is a PHP HTTP client library", - "keywords": [ - "client", - "curl", - "framework", - "http", - "http client", - "psr-18", - "psr-7", - "rest", - "web service" - ], - "support": { - "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/7.5.0" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/guzzle", - "type": "tidelift" - } - ], - "time": "2022-08-28T15:39:27+00:00" - }, - { - "name": "guzzlehttp/promises", - "version": "1.5.2", - "source": { - "type": "git", - "url": "https://github.com/guzzle/promises.git", - "reference": "b94b2807d85443f9719887892882d0329d1e2598" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/b94b2807d85443f9719887892882d0329d1e2598", - "reference": "b94b2807d85443f9719887892882d0329d1e2598", - "shasum": "" - }, - "require": { - "php": ">=5.5" - }, - "require-dev": { - "symfony/phpunit-bridge": "^4.4 || ^5.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.5-dev" - } - }, - "autoload": { - "files": [ - "src/functions_include.php" - ], - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" - }, - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, - { - "name": "Tobias Nyholm", - "email": "tobias.nyholm@gmail.com", - "homepage": "https://github.com/Nyholm" - }, - { - "name": "Tobias Schultze", - "email": "webmaster@tubo-world.de", - "homepage": "https://github.com/Tobion" - } - ], - "description": "Guzzle promises library", - "keywords": [ - "promise" - ], - "support": { - "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/1.5.2" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", - "type": "tidelift" - } - ], - "time": "2022-08-28T14:55:35+00:00" - }, - { - "name": "guzzlehttp/psr7", - "version": "2.5.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "b635f279edd83fc275f822a1188157ffea568ff6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/b635f279edd83fc275f822a1188157ffea568ff6", - "reference": "b635f279edd83fc275f822a1188157ffea568ff6", - "shasum": "" - }, - "require": { - "php": "^7.2.5 || ^8.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.1 || ^2.0", - "ralouphie/getallheaders": "^3.0" - }, - "provide": { - "psr/http-factory-implementation": "1.0", - "psr/http-message-implementation": "1.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.1", - "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.29 || ^9.5.23" - }, - "suggest": { - "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" - }, - "type": "library", - "extra": { - "bamarni-bin": { - "bin-links": true, - "forward-command": false - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Psr7\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" - }, - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, - { - "name": "George Mponos", - "email": "gmponos@gmail.com", - "homepage": "https://github.com/gmponos" - }, - { - "name": "Tobias Nyholm", - "email": "tobias.nyholm@gmail.com", - "homepage": "https://github.com/Nyholm" - }, - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com", - "homepage": "https://github.com/sagikazarmark" - }, - { - "name": "Tobias Schultze", - "email": "webmaster@tubo-world.de", - "homepage": "https://github.com/Tobion" - }, - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com", - "homepage": "https://sagikazarmark.hu" - } - ], - "description": "PSR-7 message implementation that also provides common utility methods", - "keywords": [ - "http", - "message", - "psr-7", - "request", - "response", - "stream", - "uri", - "url" - ], - "support": { - "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/2.5.0" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7", - "type": "tidelift" - } - ], - "time": "2023-04-17T16:11:26+00:00" - }, - { - "name": "hashids/hashids", - "version": "4.1.0", - "source": { - "type": "git", - "url": "https://github.com/vinkla/hashids.git", - "reference": "8cab111f78e0bd9c76953b082919fc9e251761be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/vinkla/hashids/zipball/8cab111f78e0bd9c76953b082919fc9e251761be", - "reference": "8cab111f78e0bd9c76953b082919fc9e251761be", - "shasum": "" - }, - "require": { - "ext-mbstring": "*", - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "phpunit/phpunit": "^8.0 || ^9.4", - "squizlabs/php_codesniffer": "^3.5" - }, - "suggest": { - "ext-bcmath": "Required to use BC Math arbitrary precision mathematics (*).", - "ext-gmp": "Required to use GNU multiple precision mathematics (*)." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.1-dev" - } - }, - "autoload": { - "psr-4": { - "Hashids\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ivan Akimov", - "email": "ivan@barreleye.com" - }, - { - "name": "Vincent Klaiber", - "email": "hello@doubledip.se" - } - ], - "description": "Generate short, unique, non-sequential ids (like YouTube and Bitly) from numbers", - "homepage": "https://hashids.org/php", - "keywords": [ - "bitly", - "decode", - "encode", - "hash", - "hashid", - "hashids", - "ids", - "obfuscate", - "youtube" - ], - "support": { - "issues": "https://github.com/vinkla/hashids/issues", - "source": "https://github.com/vinkla/hashids/tree/4.1.0" - }, - "time": "2020-11-26T19:24:33+00:00" - }, - { - "name": "http-interop/http-factory-guzzle", - "version": "1.2.0", - "source": { - "type": "git", - "url": "https://github.com/http-interop/http-factory-guzzle.git", - "reference": "8f06e92b95405216b237521cc64c804dd44c4a81" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/http-interop/http-factory-guzzle/zipball/8f06e92b95405216b237521cc64c804dd44c4a81", - "reference": "8f06e92b95405216b237521cc64c804dd44c4a81", - "shasum": "" - }, - "require": { - "guzzlehttp/psr7": "^1.7||^2.0", - "php": ">=7.3", - "psr/http-factory": "^1.0" - }, - "provide": { - "psr/http-factory-implementation": "^1.0" - }, - "require-dev": { - "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^9.5" - }, - "suggest": { - "guzzlehttp/psr7": "Includes an HTTP factory starting in version 2.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Http\\Factory\\Guzzle\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "An HTTP Factory using Guzzle PSR7", - "keywords": [ - "factory", - "http", - "psr-17", - "psr-7" - ], - "support": { - "issues": "https://github.com/http-interop/http-factory-guzzle/issues", - "source": "https://github.com/http-interop/http-factory-guzzle/tree/1.2.0" - }, - "time": "2021-07-21T13:50:14+00:00" - }, - { - "name": "intervention/image", - "version": "2.7.2", - "source": { - "type": "git", - "url": "https://github.com/Intervention/image.git", - "reference": "04be355f8d6734c826045d02a1079ad658322dad" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Intervention/image/zipball/04be355f8d6734c826045d02a1079ad658322dad", - "reference": "04be355f8d6734c826045d02a1079ad658322dad", - "shasum": "" - }, - "require": { - "ext-fileinfo": "*", - "guzzlehttp/psr7": "~1.1 || ^2.0", - "php": ">=5.4.0" - }, - "require-dev": { - "mockery/mockery": "~0.9.2", - "phpunit/phpunit": "^4.8 || ^5.7 || ^7.5.15" - }, - "suggest": { - "ext-gd": "to use GD library based image processing.", - "ext-imagick": "to use Imagick based image processing.", - "intervention/imagecache": "Caching extension for the Intervention Image library" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.4-dev" - }, - "laravel": { - "providers": [ - "Intervention\\Image\\ImageServiceProvider" - ], - "aliases": { - "Image": "Intervention\\Image\\Facades\\Image" - } - } - }, - "autoload": { - "psr-4": { - "Intervention\\Image\\": "src/Intervention/Image" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Oliver Vogel", - "email": "oliver@intervention.io", - "homepage": "https://intervention.io/" - } - ], - "description": "Image handling and manipulation library with support for Laravel integration", - "homepage": "http://image.intervention.io/", - "keywords": [ - "gd", - "image", - "imagick", - "laravel", - "thumbnail", - "watermark" - ], - "support": { - "issues": "https://github.com/Intervention/image/issues", - "source": "https://github.com/Intervention/image/tree/2.7.2" - }, - "funding": [ - { - "url": "https://paypal.me/interventionio", - "type": "custom" - }, - { - "url": "https://github.com/Intervention", - "type": "github" - } - ], - "time": "2022-05-21T17:30:32+00:00" - }, - { - "name": "jean85/pretty-package-versions", - "version": "2.0.5", - "source": { - "type": "git", - "url": "https://github.com/Jean85/pretty-package-versions.git", - "reference": "ae547e455a3d8babd07b96966b17d7fd21d9c6af" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/ae547e455a3d8babd07b96966b17d7fd21d9c6af", - "reference": "ae547e455a3d8babd07b96966b17d7fd21d9c6af", - "shasum": "" - }, - "require": { - "composer-runtime-api": "^2.0.0", - "php": "^7.1|^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^2.17", - "jean85/composer-provided-replaced-stub-package": "^1.0", - "phpstan/phpstan": "^0.12.66", - "phpunit/phpunit": "^7.5|^8.5|^9.4", - "vimeo/psalm": "^4.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Jean85\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Alessandro Lai", - "email": "alessandro.lai85@gmail.com" - } - ], - "description": "A library to get pretty versions strings of installed dependencies", - "keywords": [ - "composer", - "package", - "release", - "versions" - ], - "support": { - "issues": "https://github.com/Jean85/pretty-package-versions/issues", - "source": "https://github.com/Jean85/pretty-package-versions/tree/2.0.5" - }, - "time": "2021-10-08T21:21:46+00:00" - }, - { - "name": "jubeki/laravel-code-style", - "version": "1.1.0", - "source": { - "type": "git", - "url": "https://github.com/Jubeki/laravel-code-style.git", - "reference": "92c0dcdf97045d504b47cff3315ceb436bcd2beb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Jubeki/laravel-code-style/zipball/92c0dcdf97045d504b47cff3315ceb436bcd2beb", - "reference": "92c0dcdf97045d504b47cff3315ceb436bcd2beb", - "shasum": "" - }, - "require": { - "friendsofphp/php-cs-fixer": "^3.11", - "illuminate/support": "^8.0|^9.0", - "php": "^7.4|^8.0" - }, - "require-dev": { - "brick/varexporter": "^0.3.2", - "laravel/framework": "^8.64|^9.0", - "orchestra/testbench": "^6.24|^7.0", - "phpunit/phpunit": "^9.5.10", - "styleci/sdk": "^1.3" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Jubeki\\LaravelCodeStyle\\ServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Jubeki\\LaravelCodeStyle\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Julius Kiekbusch", - "email": "contact@julius-kiekbusch.de" - }, - { - "name": "Matt Allan", - "email": "matt@mattallan.me" - } - ], - "description": "Code formatting for Laravel projects", - "homepage": "https://github.com/Jubeki/laravel-code-style", - "keywords": [ - "PSR-2", - "code-style", - "laravel", - "php-cs-fixer" - ], - "support": { - "issues": "https://github.com/Jubeki/laravel-code-style/issues", - "source": "https://github.com/Jubeki/laravel-code-style/tree/1.1.0" - }, - "time": "2022-09-02T08:01:39+00:00" - }, - { - "name": "laravel/framework", - "version": "v8.83.25", - "source": { - "type": "git", - "url": "https://github.com/laravel/framework.git", - "reference": "b77b908a9426efa41d6286a2ef4c3adbf5398ca1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/b77b908a9426efa41d6286a2ef4c3adbf5398ca1", - "reference": "b77b908a9426efa41d6286a2ef4c3adbf5398ca1", - "shasum": "" - }, - "require": { - "doctrine/inflector": "^1.4|^2.0", - "dragonmantank/cron-expression": "^3.0.2", - "egulias/email-validator": "^2.1.10", - "ext-json": "*", - "ext-mbstring": "*", - "ext-openssl": "*", - "laravel/serializable-closure": "^1.0", - "league/commonmark": "^1.3|^2.0.2", - "league/flysystem": "^1.1", - "monolog/monolog": "^2.0", - "nesbot/carbon": "^2.53.1", - "opis/closure": "^3.6", - "php": "^7.3|^8.0", - "psr/container": "^1.0", - "psr/log": "^1.0|^2.0", - "psr/simple-cache": "^1.0", - "ramsey/uuid": "^4.2.2", - "swiftmailer/swiftmailer": "^6.3", - "symfony/console": "^5.4", - "symfony/error-handler": "^5.4", - "symfony/finder": "^5.4", - "symfony/http-foundation": "^5.4", - "symfony/http-kernel": "^5.4", - "symfony/mime": "^5.4", - "symfony/process": "^5.4", - "symfony/routing": "^5.4", - "symfony/var-dumper": "^5.4", - "tijsverkoyen/css-to-inline-styles": "^2.2.2", - "vlucas/phpdotenv": "^5.4.1", - "voku/portable-ascii": "^1.6.1" - }, - "conflict": { - "tightenco/collect": "<5.5.33" - }, - "provide": { - "psr/container-implementation": "1.0", - "psr/simple-cache-implementation": "1.0" - }, - "replace": { - "illuminate/auth": "self.version", - "illuminate/broadcasting": "self.version", - "illuminate/bus": "self.version", - "illuminate/cache": "self.version", - "illuminate/collections": "self.version", - "illuminate/config": "self.version", - "illuminate/console": "self.version", - "illuminate/container": "self.version", - "illuminate/contracts": "self.version", - "illuminate/cookie": "self.version", - "illuminate/database": "self.version", - "illuminate/encryption": "self.version", - "illuminate/events": "self.version", - "illuminate/filesystem": "self.version", - "illuminate/hashing": "self.version", - "illuminate/http": "self.version", - "illuminate/log": "self.version", - "illuminate/macroable": "self.version", - "illuminate/mail": "self.version", - "illuminate/notifications": "self.version", - "illuminate/pagination": "self.version", - "illuminate/pipeline": "self.version", - "illuminate/queue": "self.version", - "illuminate/redis": "self.version", - "illuminate/routing": "self.version", - "illuminate/session": "self.version", - "illuminate/support": "self.version", - "illuminate/testing": "self.version", - "illuminate/translation": "self.version", - "illuminate/validation": "self.version", - "illuminate/view": "self.version" - }, - "require-dev": { - "aws/aws-sdk-php": "^3.198.1", - "doctrine/dbal": "^2.13.3|^3.1.4", - "filp/whoops": "^2.14.3", - "guzzlehttp/guzzle": "^6.5.5|^7.0.1", - "league/flysystem-cached-adapter": "^1.0", - "mockery/mockery": "^1.4.4", - "orchestra/testbench-core": "^6.27", - "pda/pheanstalk": "^4.0", - "phpunit/phpunit": "^8.5.19|^9.5.8", - "predis/predis": "^1.1.9", - "symfony/cache": "^5.4" - }, - "suggest": { - "ably/ably-php": "Required to use the Ably broadcast driver (^1.0).", - "aws/aws-sdk-php": "Required to use the SQS queue driver, DynamoDb failed job storage and SES mail driver (^3.198.1).", - "brianium/paratest": "Required to run tests in parallel (^6.0).", - "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.13.3|^3.1.4).", - "ext-bcmath": "Required to use the multiple_of validation rule.", - "ext-ftp": "Required to use the Flysystem FTP driver.", - "ext-gd": "Required to use Illuminate\\Http\\Testing\\FileFactory::image().", - "ext-memcached": "Required to use the memcache cache driver.", - "ext-pcntl": "Required to use all features of the queue worker.", - "ext-posix": "Required to use all features of the queue worker.", - "ext-redis": "Required to use the Redis cache and queue drivers (^4.0|^5.0).", - "fakerphp/faker": "Required to use the eloquent factory builder (^1.9.1).", - "filp/whoops": "Required for friendly error pages in development (^2.14.3).", - "guzzlehttp/guzzle": "Required to use the HTTP Client, Mailgun mail driver and the ping methods on schedules (^6.5.5|^7.0.1).", - "laravel/tinker": "Required to use the tinker console command (^2.0).", - "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (^1.0).", - "league/flysystem-cached-adapter": "Required to use the Flysystem cache (^1.0).", - "league/flysystem-sftp": "Required to use the Flysystem SFTP driver (^1.0).", - "mockery/mockery": "Required to use mocking (^1.4.4).", - "nyholm/psr7": "Required to use PSR-7 bridging features (^1.2).", - "pda/pheanstalk": "Required to use the beanstalk queue driver (^4.0).", - "phpunit/phpunit": "Required to use assertions and run tests (^8.5.19|^9.5.8).", - "predis/predis": "Required to use the predis connector (^1.1.9).", - "psr/http-message": "Required to allow Storage::put to accept a StreamInterface (^1.0).", - "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^4.0|^5.0|^6.0|^7.0).", - "symfony/cache": "Required to PSR-6 cache bridge (^5.4).", - "symfony/filesystem": "Required to enable support for relative symbolic links (^5.4).", - "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0).", - "wildbit/swiftmailer-postmark": "Required to use Postmark mail driver (^3.0)." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "8.x-dev" - } - }, - "autoload": { - "files": [ - "src/Illuminate/Collections/helpers.php", - "src/Illuminate/Events/functions.php", - "src/Illuminate/Foundation/helpers.php", - "src/Illuminate/Support/helpers.php" - ], - "psr-4": { - "Illuminate\\": "src/Illuminate/", - "Illuminate\\Support\\": [ - "src/Illuminate/Macroable/", - "src/Illuminate/Collections/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "The Laravel Framework.", - "homepage": "https://laravel.com", - "keywords": [ - "framework", - "laravel" - ], - "support": { - "issues": "https://github.com/laravel/framework/issues", - "source": "https://github.com/laravel/framework" - }, - "time": "2022-09-30T13:00:40+00:00" - }, - { - "name": "laravel/scout", - "version": "v9.4.11", - "source": { - "type": "git", - "url": "https://github.com/laravel/scout.git", - "reference": "24ed5c0724078f52b04227121b26e9f15fdb04c9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/scout/zipball/24ed5c0724078f52b04227121b26e9f15fdb04c9", - "reference": "24ed5c0724078f52b04227121b26e9f15fdb04c9", - "shasum": "" - }, - "require": { - "illuminate/bus": "^8.0|^9.0", - "illuminate/contracts": "^8.0|^9.0", - "illuminate/database": "^8.0|^9.0", - "illuminate/http": "^8.0|^9.0", - "illuminate/pagination": "^8.0|^9.0", - "illuminate/queue": "^8.0|^9.0", - "illuminate/support": "^8.0|^9.0", - "php": "^7.3|^8.0" - }, - "require-dev": { - "meilisearch/meilisearch-php": "^0.19", - "mockery/mockery": "^1.0", - "orchestra/testbench": "^6.17|^7.0", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "algolia/algoliasearch-client-php": "Required to use the Algolia engine (^3.2).", - "meilisearch/meilisearch-php": "Required to use the MeiliSearch engine (^0.23)." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.x-dev" - }, - "laravel": { - "providers": [ - "Laravel\\Scout\\ScoutServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Laravel\\Scout\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "Laravel Scout provides a driver based solution to searching your Eloquent models.", - "keywords": [ - "algolia", - "laravel", - "search" - ], - "support": { - "issues": "https://github.com/laravel/scout/issues", - "source": "https://github.com/laravel/scout" - }, - "time": "2022-09-27T15:42:14+00:00" - }, - { - "name": "laravel/serializable-closure", - "version": "v1.2.2", - "source": { - "type": "git", - "url": "https://github.com/laravel/serializable-closure.git", - "reference": "47afb7fae28ed29057fdca37e16a84f90cc62fae" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/47afb7fae28ed29057fdca37e16a84f90cc62fae", - "reference": "47afb7fae28ed29057fdca37e16a84f90cc62fae", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "nesbot/carbon": "^2.61", - "pestphp/pest": "^1.21.3", - "phpstan/phpstan": "^1.8.2", - "symfony/var-dumper": "^5.4.11" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Laravel\\SerializableClosure\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - }, - { - "name": "Nuno Maduro", - "email": "nuno@laravel.com" - } - ], - "description": "Laravel Serializable Closure provides an easy and secure way to serialize closures in PHP.", - "keywords": [ - "closure", - "laravel", - "serializable" - ], - "support": { - "issues": "https://github.com/laravel/serializable-closure/issues", - "source": "https://github.com/laravel/serializable-closure" - }, - "time": "2022-09-08T13:45:54+00:00" - }, - { - "name": "laravel/tinker", - "version": "v2.7.2", - "source": { - "type": "git", - "url": "https://github.com/laravel/tinker.git", - "reference": "dff39b661e827dae6e092412f976658df82dbac5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/dff39b661e827dae6e092412f976658df82dbac5", - "reference": "dff39b661e827dae6e092412f976658df82dbac5", - "shasum": "" - }, - "require": { - "illuminate/console": "^6.0|^7.0|^8.0|^9.0", - "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0", - "illuminate/support": "^6.0|^7.0|^8.0|^9.0", - "php": "^7.2.5|^8.0", - "psy/psysh": "^0.10.4|^0.11.1", - "symfony/var-dumper": "^4.3.4|^5.0|^6.0" - }, - "require-dev": { - "mockery/mockery": "~1.3.3|^1.4.2", - "phpunit/phpunit": "^8.5.8|^9.3.3" - }, - "suggest": { - "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.0)." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.x-dev" - }, - "laravel": { - "providers": [ - "Laravel\\Tinker\\TinkerServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Laravel\\Tinker\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "Powerful REPL for the Laravel framework.", - "keywords": [ - "REPL", - "Tinker", - "laravel", - "psysh" - ], - "support": { - "issues": "https://github.com/laravel/tinker/issues", - "source": "https://github.com/laravel/tinker/tree/v2.7.2" - }, - "time": "2022-03-23T12:38:24+00:00" - }, - { - "name": "league/commonmark", - "version": "2.3.5", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/commonmark.git", - "reference": "84d74485fdb7074f4f9dd6f02ab957b1de513257" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/84d74485fdb7074f4f9dd6f02ab957b1de513257", - "reference": "84d74485fdb7074f4f9dd6f02ab957b1de513257", - "shasum": "" - }, - "require": { - "ext-mbstring": "*", - "league/config": "^1.1.1", - "php": "^7.4 || ^8.0", - "psr/event-dispatcher": "^1.0", - "symfony/deprecation-contracts": "^2.1 || ^3.0", - "symfony/polyfill-php80": "^1.16" - }, - "require-dev": { - "cebe/markdown": "^1.0", - "commonmark/cmark": "0.30.0", - "commonmark/commonmark.js": "0.30.0", - "composer/package-versions-deprecated": "^1.8", - "embed/embed": "^4.4", - "erusev/parsedown": "^1.0", - "ext-json": "*", - "github/gfm": "0.29.0", - "michelf/php-markdown": "^1.4", - "nyholm/psr7": "^1.5", - "phpstan/phpstan": "^1.8.2", - "phpunit/phpunit": "^9.5.21", - "scrutinizer/ocular": "^1.8.1", - "symfony/finder": "^5.3 | ^6.0", - "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0", - "unleashedtech/php-coding-standard": "^3.1.1", - "vimeo/psalm": "^4.24.0" - }, - "suggest": { - "symfony/yaml": "v2.3+ required if using the Front Matter extension" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.4-dev" - } - }, - "autoload": { - "psr-4": { - "League\\CommonMark\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Colin O'Dell", - "email": "colinodell@gmail.com", - "homepage": "https://www.colinodell.com", - "role": "Lead Developer" - } - ], - "description": "Highly-extensible PHP Markdown parser which fully supports the CommonMark spec and GitHub-Flavored Markdown (GFM)", - "homepage": "https://commonmark.thephpleague.com", - "keywords": [ - "commonmark", - "flavored", - "gfm", - "github", - "github-flavored", - "markdown", - "md", - "parser" - ], - "support": { - "docs": "https://commonmark.thephpleague.com/", - "forum": "https://github.com/thephpleague/commonmark/discussions", - "issues": "https://github.com/thephpleague/commonmark/issues", - "rss": "https://github.com/thephpleague/commonmark/releases.atom", - "source": "https://github.com/thephpleague/commonmark" - }, - "funding": [ - { - "url": "https://www.colinodell.com/sponsor", - "type": "custom" - }, - { - "url": "https://www.paypal.me/colinpodell/10.00", - "type": "custom" - }, - { - "url": "https://github.com/colinodell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/commonmark", - "type": "tidelift" - } - ], - "time": "2022-07-29T10:59:45+00:00" - }, - { - "name": "league/config", - "version": "v1.1.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/config.git", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/config/zipball/a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "shasum": "" - }, - "require": { - "dflydev/dot-access-data": "^3.0.1", - "nette/schema": "^1.2", - "php": "^7.4 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^0.12.90", - "phpunit/phpunit": "^9.5.5", - "scrutinizer/ocular": "^1.8.1", - "unleashedtech/php-coding-standard": "^3.1", - "vimeo/psalm": "^4.7.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.2-dev" - } - }, - "autoload": { - "psr-4": { - "League\\Config\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Colin O'Dell", - "email": "colinodell@gmail.com", - "homepage": "https://www.colinodell.com", - "role": "Lead Developer" - } - ], - "description": "Define configuration arrays with strict schemas and access values with dot notation", - "homepage": "https://config.thephpleague.com", - "keywords": [ - "array", - "config", - "configuration", - "dot", - "dot-access", - "nested", - "schema" - ], - "support": { - "docs": "https://config.thephpleague.com/", - "issues": "https://github.com/thephpleague/config/issues", - "rss": "https://github.com/thephpleague/config/releases.atom", - "source": "https://github.com/thephpleague/config" - }, - "funding": [ - { - "url": "https://www.colinodell.com/sponsor", - "type": "custom" - }, - { - "url": "https://www.paypal.me/colinpodell/10.00", - "type": "custom" - }, - { - "url": "https://github.com/colinodell", - "type": "github" - } - ], - "time": "2021-08-14T12:15:32+00:00" - }, - { - "name": "league/flysystem", - "version": "1.1.9", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/flysystem.git", - "reference": "094defdb4a7001845300334e7c1ee2335925ef99" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/094defdb4a7001845300334e7c1ee2335925ef99", - "reference": "094defdb4a7001845300334e7c1ee2335925ef99", - "shasum": "" - }, - "require": { - "ext-fileinfo": "*", - "league/mime-type-detection": "^1.3", - "php": "^7.2.5 || ^8.0" - }, - "conflict": { - "league/flysystem-sftp": "<1.0.6" - }, - "require-dev": { - "phpspec/prophecy": "^1.11.1", - "phpunit/phpunit": "^8.5.8" - }, - "suggest": { - "ext-ftp": "Allows you to use FTP server storage", - "ext-openssl": "Allows you to use FTPS server storage", - "league/flysystem-aws-s3-v2": "Allows you to use S3 storage with AWS SDK v2", - "league/flysystem-aws-s3-v3": "Allows you to use S3 storage with AWS SDK v3", - "league/flysystem-azure": "Allows you to use Windows Azure Blob storage", - "league/flysystem-cached-adapter": "Flysystem adapter decorator for metadata caching", - "league/flysystem-eventable-filesystem": "Allows you to use EventableFilesystem", - "league/flysystem-rackspace": "Allows you to use Rackspace Cloud Files", - "league/flysystem-sftp": "Allows you to use SFTP server storage via phpseclib", - "league/flysystem-webdav": "Allows you to use WebDAV storage", - "league/flysystem-ziparchive": "Allows you to use ZipArchive adapter", - "spatie/flysystem-dropbox": "Allows you to use Dropbox storage", - "srmklive/flysystem-dropbox-v2": "Allows you to use Dropbox storage for PHP 5 applications" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1-dev" - } - }, - "autoload": { - "psr-4": { - "League\\Flysystem\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Frank de Jonge", - "email": "info@frenky.net" - } - ], - "description": "Filesystem abstraction: Many filesystems, one API.", - "keywords": [ - "Cloud Files", - "WebDAV", - "abstraction", - "aws", - "cloud", - "copy.com", - "dropbox", - "file systems", - "files", - "filesystem", - "filesystems", - "ftp", - "rackspace", - "remote", - "s3", - "sftp", - "storage" - ], - "support": { - "issues": "https://github.com/thephpleague/flysystem/issues", - "source": "https://github.com/thephpleague/flysystem/tree/1.1.9" - }, - "funding": [ - { - "url": "https://offset.earth/frankdejonge", - "type": "other" - } - ], - "time": "2021-12-09T09:40:50+00:00" - }, - { - "name": "league/mime-type-detection", - "version": "1.11.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "ff6248ea87a9f116e78edd6002e39e5128a0d4dd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/ff6248ea87a9f116e78edd6002e39e5128a0d4dd", - "reference": "ff6248ea87a9f116e78edd6002e39e5128a0d4dd", - "shasum": "" - }, - "require": { - "ext-fileinfo": "*", - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3.2", - "phpstan/phpstan": "^0.12.68", - "phpunit/phpunit": "^8.5.8 || ^9.3" - }, - "type": "library", - "autoload": { - "psr-4": { - "League\\MimeTypeDetection\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Frank de Jonge", - "email": "info@frankdejonge.nl" - } - ], - "description": "Mime-type detection for Flysystem", - "support": { - "issues": "https://github.com/thephpleague/mime-type-detection/issues", - "source": "https://github.com/thephpleague/mime-type-detection/tree/1.11.0" - }, - "funding": [ - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2022-04-17T13:12:02+00:00" - }, - { - "name": "meilisearch/meilisearch-php", - "version": "v0.24.2", - "source": { - "type": "git", - "url": "https://github.com/meilisearch/meilisearch-php.git", - "reference": "7f7b350480bce4bc80efc9a613a820261a96ef8b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/meilisearch/meilisearch-php/zipball/7f7b350480bce4bc80efc9a613a820261a96ef8b", - "reference": "7f7b350480bce4bc80efc9a613a820261a96ef8b", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.4 || ^8.0", - "php-http/client-common": "^2.0", - "php-http/discovery": "^1.7", - "php-http/httplug": "^2.1" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3.0", - "guzzlehttp/guzzle": "^7.1", - "http-interop/http-factory-guzzle": "^1.0", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan": "^1.4", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "phpstan/phpstan-strict-rules": "^1.1", - "phpunit/phpunit": "^9.5" - }, - "suggest": { - "guzzlehttp/guzzle": "Use Guzzle ^7 as HTTP client", - "http-interop/http-factory-guzzle": "Factory for guzzlehttp/guzzle" - }, - "type": "library", - "autoload": { - "psr-4": { - "MeiliSearch\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Clementine Urquizar", - "email": "clementine@meilisearch.com" - } - ], - "description": "PHP wrapper for the Meilisearch API", - "keywords": [ - "api", - "client", - "instant", - "meilisearch", - "php", - "search" - ], - "support": { - "issues": "https://github.com/meilisearch/meilisearch-php/issues", - "source": "https://github.com/meilisearch/meilisearch-php/tree/v0.24.2" - }, - "time": "2022-08-16T15:18:17+00:00" - }, - { - "name": "monolog/monolog", - "version": "2.8.0", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/monolog.git", - "reference": "720488632c590286b88b80e62aa3d3d551ad4a50" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/720488632c590286b88b80e62aa3d3d551ad4a50", - "reference": "720488632c590286b88b80e62aa3d3d551ad4a50", - "shasum": "" - }, - "require": { - "php": ">=7.2", - "psr/log": "^1.0.1 || ^2.0 || ^3.0" - }, - "provide": { - "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0" - }, - "require-dev": { - "aws/aws-sdk-php": "^2.4.9 || ^3.0", - "doctrine/couchdb": "~1.0@dev", - "elasticsearch/elasticsearch": "^7 || ^8", - "ext-json": "*", - "graylog2/gelf-php": "^1.4.2", - "guzzlehttp/guzzle": "^7.4", - "guzzlehttp/psr7": "^2.2", - "mongodb/mongodb": "^1.8", - "php-amqplib/php-amqplib": "~2.4 || ^3", - "phpspec/prophecy": "^1.15", - "phpstan/phpstan": "^0.12.91", - "phpunit/phpunit": "^8.5.14", - "predis/predis": "^1.1 || ^2.0", - "rollbar/rollbar": "^1.3 || ^2 || ^3", - "ruflin/elastica": "^7", - "swiftmailer/swiftmailer": "^5.3|^6.0", - "symfony/mailer": "^5.4 || ^6", - "symfony/mime": "^5.4 || ^6" - }, - "suggest": { - "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", - "doctrine/couchdb": "Allow sending log messages to a CouchDB server", - "elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client", - "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", - "ext-curl": "Required to send log messages using the IFTTTHandler, the LogglyHandler, the SendGridHandler, the SlackWebhookHandler or the TelegramBotHandler", - "ext-mbstring": "Allow to work properly with unicode symbols", - "ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)", - "ext-openssl": "Required to send log messages using SSL", - "ext-sockets": "Allow sending log messages to a Syslog server (via UDP driver)", - "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", - "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)", - "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", - "rollbar/rollbar": "Allow sending log messages to Rollbar", - "ruflin/elastica": "Allow sending log messages to an Elastic Search server" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.x-dev" - } - }, - "autoload": { - "psr-4": { - "Monolog\\": "src/Monolog" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "https://seld.be" - } - ], - "description": "Sends your logs to files, sockets, inboxes, databases and various web services", - "homepage": "https://github.com/Seldaek/monolog", - "keywords": [ - "log", - "logging", - "psr-3" - ], - "support": { - "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/2.8.0" - }, - "funding": [ - { - "url": "https://github.com/Seldaek", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", - "type": "tidelift" - } - ], - "time": "2022-07-24T11:55:47+00:00" - }, - { - "name": "nesbot/carbon", - "version": "2.62.1", - "source": { - "type": "git", - "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "01bc4cdefe98ef58d1f9cb31bdbbddddf2a88f7a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/01bc4cdefe98ef58d1f9cb31bdbbddddf2a88f7a", - "reference": "01bc4cdefe98ef58d1f9cb31bdbbddddf2a88f7a", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1.8 || ^8.0", - "symfony/polyfill-mbstring": "^1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "doctrine/dbal": "^2.0 || ^3.0", - "doctrine/orm": "^2.7", - "friendsofphp/php-cs-fixer": "^3.0", - "kylekatarnls/multi-tester": "^2.0", - "ondrejmirtes/better-reflection": "*", - "phpmd/phpmd": "^2.9", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12.99 || ^1.7.14", - "phpunit/php-file-iterator": "^2.0.5 || ^3.0.6", - "phpunit/phpunit": "^7.5.20 || ^8.5.26 || ^9.5.20", - "squizlabs/php_codesniffer": "^3.4" - }, - "bin": [ - "bin/carbon" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-3.x": "3.x-dev", - "dev-master": "2.x-dev" - }, - "laravel": { - "providers": [ - "Carbon\\Laravel\\ServiceProvider" - ] - }, - "phpstan": { - "includes": [ - "extension.neon" - ] - } - }, - "autoload": { - "psr-4": { - "Carbon\\": "src/Carbon/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Brian Nesbitt", - "email": "brian@nesbot.com", - "homepage": "https://markido.com" - }, - { - "name": "kylekatarnls", - "homepage": "https://github.com/kylekatarnls" - } - ], - "description": "An API extension for DateTime that supports 281 different languages.", - "homepage": "https://carbon.nesbot.com", - "keywords": [ - "date", - "datetime", - "time" - ], - "support": { - "docs": "https://carbon.nesbot.com/docs", - "issues": "https://github.com/briannesbitt/Carbon/issues", - "source": "https://github.com/briannesbitt/Carbon" - }, - "funding": [ - { - "url": "https://github.com/sponsors/kylekatarnls", - "type": "github" - }, - { - "url": "https://opencollective.com/Carbon#sponsor", - "type": "opencollective" - }, - { - "url": "https://tidelift.com/subscription/pkg/packagist-nesbot-carbon?utm_source=packagist-nesbot-carbon&utm_medium=referral&utm_campaign=readme", - "type": "tidelift" - } - ], - "time": "2022-09-02T07:48:13+00:00" - }, - { - "name": "nette/schema", - "version": "v1.2.2", - "source": { - "type": "git", - "url": "https://github.com/nette/schema.git", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/schema/zipball/9a39cef03a5b34c7de64f551538cbba05c2be5df", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df", - "shasum": "" - }, - "require": { - "nette/utils": "^2.5.7 || ^3.1.5 || ^4.0", - "php": ">=7.1 <8.2" - }, - "require-dev": { - "nette/tester": "^2.3 || ^2.4", - "phpstan/phpstan-nette": "^0.12", - "tracy/tracy": "^2.7" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause", - "GPL-2.0-only", - "GPL-3.0-only" - ], - "authors": [ - { - "name": "David Grudl", - "homepage": "https://davidgrudl.com" - }, - { - "name": "Nette Community", - "homepage": "https://nette.org/contributors" - } - ], - "description": "📐 Nette Schema: validating data structures against a given Schema.", - "homepage": "https://nette.org", - "keywords": [ - "config", - "nette" - ], - "support": { - "issues": "https://github.com/nette/schema/issues", - "source": "https://github.com/nette/schema/tree/v1.2.2" - }, - "time": "2021-10-15T11:40:02+00:00" - }, - { - "name": "nette/utils", - "version": "v3.2.8", - "source": { - "type": "git", - "url": "https://github.com/nette/utils.git", - "reference": "02a54c4c872b99e4ec05c4aec54b5a06eb0f6368" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/02a54c4c872b99e4ec05c4aec54b5a06eb0f6368", - "reference": "02a54c4c872b99e4ec05c4aec54b5a06eb0f6368", - "shasum": "" - }, - "require": { - "php": ">=7.2 <8.3" - }, - "conflict": { - "nette/di": "<3.0.6" - }, - "require-dev": { - "nette/tester": "~2.0", - "phpstan/phpstan": "^1.0", - "tracy/tracy": "^2.3" - }, - "suggest": { - "ext-gd": "to use Image", - "ext-iconv": "to use Strings::webalize(), toAscii(), chr() and reverse()", - "ext-intl": "to use Strings::webalize(), toAscii(), normalize() and compare()", - "ext-json": "to use Nette\\Utils\\Json", - "ext-mbstring": "to use Strings::lower() etc...", - "ext-tokenizer": "to use Nette\\Utils\\Reflection::getUseStatements()", - "ext-xml": "to use Strings::length() etc. when mbstring is not available" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.2-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause", - "GPL-2.0-only", - "GPL-3.0-only" - ], - "authors": [ - { - "name": "David Grudl", - "homepage": "https://davidgrudl.com" - }, - { - "name": "Nette Community", - "homepage": "https://nette.org/contributors" - } - ], - "description": "🛠 Nette Utils: lightweight utilities for string & array manipulation, image handling, safe JSON encoding/decoding, validation, slug or strong password generating etc.", - "homepage": "https://nette.org", - "keywords": [ - "array", - "core", - "datetime", - "images", - "json", - "nette", - "paginator", - "password", - "slugify", - "string", - "unicode", - "utf-8", - "utility", - "validation" - ], - "support": { - "issues": "https://github.com/nette/utils/issues", - "source": "https://github.com/nette/utils/tree/v3.2.8" - }, - "time": "2022-09-12T23:36:20+00:00" - }, - { - "name": "nikic/php-parser", - "version": "v4.15.4", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "6bb5176bc4af8bcb7d926f88718db9b96a2d4290" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/6bb5176bc4af8bcb7d926f88718db9b96a2d4290", - "reference": "6bb5176bc4af8bcb7d926f88718db9b96a2d4290", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "php": ">=7.0" - }, - "require-dev": { - "ircmaxell/php-yacc": "^0.0.7", - "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" - }, - "bin": [ - "bin/php-parse" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.9-dev" - } - }, - "autoload": { - "psr-4": { - "PhpParser\\": "lib/PhpParser" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Nikita Popov" - } - ], - "description": "A PHP parser written in PHP", - "keywords": [ - "parser", - "php" - ], - "support": { - "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.15.4" - }, - "time": "2023-03-05T19:49:14+00:00" - }, - { - "name": "nyholm/psr7", - "version": "1.7.0", - "source": { - "type": "git", - "url": "https://github.com/Nyholm/psr7.git", - "reference": "ed7cf98f6562831dbc3c962406b5e49dc8179c8c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Nyholm/psr7/zipball/ed7cf98f6562831dbc3c962406b5e49dc8179c8c", - "reference": "ed7cf98f6562831dbc3c962406b5e49dc8179c8c", - "shasum": "" - }, - "require": { - "php": ">=7.2", - "php-http/message-factory": "^1.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.1 || ^2.0" - }, - "provide": { - "php-http/message-factory-implementation": "1.0", - "psr/http-factory-implementation": "1.0", - "psr/http-message-implementation": "1.0" - }, - "require-dev": { - "http-interop/http-factory-tests": "^0.9", - "php-http/psr7-integration-tests": "^1.0@dev", - "phpunit/phpunit": "^7.5 || 8.5 || 9.4", - "symfony/error-handler": "^4.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.7-dev" - } - }, - "autoload": { - "psr-4": { - "Nyholm\\Psr7\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Tobias Nyholm", - "email": "tobias.nyholm@gmail.com" - }, - { - "name": "Martijn van der Ven", - "email": "martijn@vanderven.se" - } - ], - "description": "A fast PHP7 implementation of PSR-7", - "homepage": "https://tnyholm.se", - "keywords": [ - "psr-17", - "psr-7" - ], - "support": { - "issues": "https://github.com/Nyholm/psr7/issues", - "source": "https://github.com/Nyholm/psr7/tree/1.7.0" - }, - "funding": [ - { - "url": "https://github.com/Zegnat", - "type": "github" - }, - { - "url": "https://github.com/nyholm", - "type": "github" - } - ], - "time": "2023-04-20T08:38:48+00:00" - }, - { - "name": "openspout/openspout", - "version": "v3.7.4", - "source": { - "type": "git", - "url": "https://github.com/openspout/openspout.git", - "reference": "dfbbd53b5edcd486b45a37f6a04fac33073c70f3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/openspout/openspout/zipball/dfbbd53b5edcd486b45a37f6a04fac33073c70f3", - "reference": "dfbbd53b5edcd486b45a37f6a04fac33073c70f3", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-filter": "*", - "ext-libxml": "*", - "ext-xmlreader": "*", - "ext-zip": "*", - "php": "~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0" - }, - "require-dev": { - "ext-zlib": "*", - "friendsofphp/php-cs-fixer": "^3.4", - "phpstan/phpstan": "^1.4", - "phpstan/phpstan-phpunit": "^1.0", - "phpunit/phpunit": "^9.5" - }, - "suggest": { - "ext-iconv": "To handle non UTF-8 CSV files (if \"php-intl\" is not already installed or is too limited)", - "ext-intl": "To handle non UTF-8 CSV files (if \"iconv\" is not already installed)" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.3.x-dev" - } - }, - "autoload": { - "psr-4": { - "OpenSpout\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Adrien Loison", - "email": "adrien@box.com" - } - ], - "description": "PHP Library to read and write spreadsheet files (CSV, XLSX and ODS), in a fast and scalable way", - "homepage": "https://github.com/openspout/openspout", - "keywords": [ - "OOXML", - "csv", - "excel", - "memory", - "odf", - "ods", - "office", - "open", - "php", - "read", - "scale", - "spreadsheet", - "stream", - "write", - "xlsx" - ], - "support": { - "issues": "https://github.com/openspout/openspout/issues", - "source": "https://github.com/openspout/openspout/tree/v3.7.4" - }, - "funding": [ - { - "url": "https://paypal.me/filippotessarotto", - "type": "custom" - }, - { - "url": "https://github.com/Slamdunk", - "type": "github" - } - ], - "time": "2022-03-31T06:15:15+00:00" - }, - { - "name": "opis/closure", - "version": "3.6.3", - "source": { - "type": "git", - "url": "https://github.com/opis/closure.git", - "reference": "3d81e4309d2a927abbe66df935f4bb60082805ad" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/opis/closure/zipball/3d81e4309d2a927abbe66df935f4bb60082805ad", - "reference": "3d81e4309d2a927abbe66df935f4bb60082805ad", - "shasum": "" - }, - "require": { - "php": "^5.4 || ^7.0 || ^8.0" - }, - "require-dev": { - "jeremeamia/superclosure": "^2.0", - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.6.x-dev" - } - }, - "autoload": { - "files": [ - "functions.php" - ], - "psr-4": { - "Opis\\Closure\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marius Sarca", - "email": "marius.sarca@gmail.com" - }, - { - "name": "Sorin Sarca", - "email": "sarca_sorin@hotmail.com" - } - ], - "description": "A library that can be used to serialize closures (anonymous functions) and arbitrary objects.", - "homepage": "https://opis.io/closure", - "keywords": [ - "anonymous functions", - "closure", - "function", - "serializable", - "serialization", - "serialize" - ], - "support": { - "issues": "https://github.com/opis/closure/issues", - "source": "https://github.com/opis/closure/tree/3.6.3" - }, - "time": "2022-01-27T09:35:39+00:00" - }, - { - "name": "php-http/client-common", - "version": "2.6.0", - "source": { - "type": "git", - "url": "https://github.com/php-http/client-common.git", - "reference": "45db684cd4e186dcdc2b9c06b22970fe123796c0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-http/client-common/zipball/45db684cd4e186dcdc2b9c06b22970fe123796c0", - "reference": "45db684cd4e186dcdc2b9c06b22970fe123796c0", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0", - "php-http/httplug": "^2.0", - "php-http/message": "^1.6", - "php-http/message-factory": "^1.0", - "psr/http-client": "^1.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.0", - "symfony/options-resolver": "~4.0.15 || ~4.1.9 || ^4.2.1 || ^5.0 || ^6.0", - "symfony/polyfill-php80": "^1.17" - }, - "require-dev": { - "doctrine/instantiator": "^1.1", - "guzzlehttp/psr7": "^1.4", - "nyholm/psr7": "^1.2", - "phpspec/phpspec": "^5.1 || ^6.3 || ^7.1", - "phpspec/prophecy": "^1.10.2", - "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.3" - }, - "suggest": { - "ext-json": "To detect JSON responses with the ContentTypePlugin", - "ext-libxml": "To detect XML responses with the ContentTypePlugin", - "php-http/cache-plugin": "PSR-6 Cache plugin", - "php-http/logger-plugin": "PSR-3 Logger plugin", - "php-http/stopwatch-plugin": "Symfony Stopwatch plugin" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3.x-dev" - } - }, - "autoload": { - "psr-4": { - "Http\\Client\\Common\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" - } - ], - "description": "Common HTTP Client implementations and tools for HTTPlug", - "homepage": "http://httplug.io", - "keywords": [ - "client", - "common", - "http", - "httplug" - ], - "support": { - "issues": "https://github.com/php-http/client-common/issues", - "source": "https://github.com/php-http/client-common/tree/2.6.0" - }, - "time": "2022-09-29T09:59:43+00:00" - }, - { - "name": "php-http/discovery", - "version": "1.14.3", - "source": { - "type": "git", - "url": "https://github.com/php-http/discovery.git", - "reference": "31d8ee46d0215108df16a8527c7438e96a4d7735" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-http/discovery/zipball/31d8ee46d0215108df16a8527c7438e96a4d7735", - "reference": "31d8ee46d0215108df16a8527c7438e96a4d7735", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "conflict": { - "nyholm/psr7": "<1.0" - }, - "require-dev": { - "graham-campbell/phpspec-skip-example-extension": "^5.0", - "php-http/httplug": "^1.0 || ^2.0", - "php-http/message-factory": "^1.0", - "phpspec/phpspec": "^5.1 || ^6.1" - }, - "suggest": { - "php-http/message": "Allow to use Guzzle, Diactoros or Slim Framework factories" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.9-dev" - } - }, - "autoload": { - "psr-4": { - "Http\\Discovery\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" - } - ], - "description": "Finds installed HTTPlug implementations and PSR-7 message factories", - "homepage": "http://php-http.org", - "keywords": [ - "adapter", - "client", - "discovery", - "factory", - "http", - "message", - "psr7" - ], - "support": { - "issues": "https://github.com/php-http/discovery/issues", - "source": "https://github.com/php-http/discovery/tree/1.14.3" - }, - "time": "2022-07-11T14:04:40+00:00" - }, - { - "name": "php-http/httplug", - "version": "2.3.0", - "source": { - "type": "git", - "url": "https://github.com/php-http/httplug.git", - "reference": "f640739f80dfa1152533976e3c112477f69274eb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-http/httplug/zipball/f640739f80dfa1152533976e3c112477f69274eb", - "reference": "f640739f80dfa1152533976e3c112477f69274eb", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0", - "php-http/promise": "^1.1", - "psr/http-client": "^1.0", - "psr/http-message": "^1.0" - }, - "require-dev": { - "friends-of-phpspec/phpspec-code-coverage": "^4.1", - "phpspec/phpspec": "^5.1 || ^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.x-dev" - } - }, - "autoload": { - "psr-4": { - "Http\\Client\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Eric GELOEN", - "email": "geloen.eric@gmail.com" - }, - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com", - "homepage": "https://sagikazarmark.hu" - } - ], - "description": "HTTPlug, the HTTP client abstraction for PHP", - "homepage": "http://httplug.io", - "keywords": [ - "client", - "http" - ], - "support": { - "issues": "https://github.com/php-http/httplug/issues", - "source": "https://github.com/php-http/httplug/tree/2.3.0" - }, - "time": "2022-02-21T09:52:22+00:00" - }, - { - "name": "php-http/message", - "version": "1.13.0", - "source": { - "type": "git", - "url": "https://github.com/php-http/message.git", - "reference": "7886e647a30a966a1a8d1dad1845b71ca8678361" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-http/message/zipball/7886e647a30a966a1a8d1dad1845b71ca8678361", - "reference": "7886e647a30a966a1a8d1dad1845b71ca8678361", - "shasum": "" - }, - "require": { - "clue/stream-filter": "^1.5", - "php": "^7.1 || ^8.0", - "php-http/message-factory": "^1.0.2", - "psr/http-message": "^1.0" - }, - "provide": { - "php-http/message-factory-implementation": "1.0" - }, - "require-dev": { - "ergebnis/composer-normalize": "^2.6", - "ext-zlib": "*", - "guzzlehttp/psr7": "^1.0", - "laminas/laminas-diactoros": "^2.0", - "phpspec/phpspec": "^5.1 || ^6.3 || ^7.1", - "slim/slim": "^3.0" - }, - "suggest": { - "ext-zlib": "Used with compressor/decompressor streams", - "guzzlehttp/psr7": "Used with Guzzle PSR-7 Factories", - "laminas/laminas-diactoros": "Used with Diactoros Factories", - "slim/slim": "Used with Slim Framework PSR-7 implementation" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.10-dev" - } - }, - "autoload": { - "files": [ - "src/filters.php" - ], - "psr-4": { - "Http\\Message\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" - } - ], - "description": "HTTP Message related tools", - "homepage": "http://php-http.org", - "keywords": [ - "http", - "message", - "psr-7" - ], - "support": { - "issues": "https://github.com/php-http/message/issues", - "source": "https://github.com/php-http/message/tree/1.13.0" - }, - "time": "2022-02-11T13:41:14+00:00" - }, - { - "name": "php-http/message-factory", - "version": "1.1.0", - "source": { - "type": "git", - "url": "https://github.com/php-http/message-factory.git", - "reference": "4d8778e1c7d405cbb471574821c1ff5b68cc8f57" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-http/message-factory/zipball/4d8778e1c7d405cbb471574821c1ff5b68cc8f57", - "reference": "4d8778e1c7d405cbb471574821c1ff5b68cc8f57", - "shasum": "" - }, - "require": { - "php": ">=5.4", - "psr/http-message": "^1.0 || ^2.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Http\\Message\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" - } - ], - "description": "Factory interfaces for PSR-7 HTTP Message", - "homepage": "http://php-http.org", - "keywords": [ - "factory", - "http", - "message", - "stream", - "uri" - ], - "support": { - "issues": "https://github.com/php-http/message-factory/issues", - "source": "https://github.com/php-http/message-factory/tree/1.1.0" - }, - "time": "2023-04-14T14:16:17+00:00" - }, - { - "name": "php-http/promise", - "version": "1.1.0", - "source": { - "type": "git", - "url": "https://github.com/php-http/promise.git", - "reference": "4c4c1f9b7289a2ec57cde7f1e9762a5789506f88" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-http/promise/zipball/4c4c1f9b7289a2ec57cde7f1e9762a5789506f88", - "reference": "4c4c1f9b7289a2ec57cde7f1e9762a5789506f88", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "friends-of-phpspec/phpspec-code-coverage": "^4.3.2", - "phpspec/phpspec": "^5.1.2 || ^6.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1-dev" - } - }, - "autoload": { - "psr-4": { - "Http\\Promise\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Joel Wurtz", - "email": "joel.wurtz@gmail.com" - }, - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" - } - ], - "description": "Promise used for asynchronous HTTP requests", - "homepage": "http://httplug.io", - "keywords": [ - "promise" - ], - "support": { - "issues": "https://github.com/php-http/promise/issues", - "source": "https://github.com/php-http/promise/tree/1.1.0" - }, - "time": "2020-07-07T09:29:14+00:00" - }, - { - "name": "phpoption/phpoption", - "version": "1.9.0", - "source": { - "type": "git", - "url": "https://github.com/schmittjoh/php-option.git", - "reference": "dc5ff11e274a90cc1c743f66c9ad700ce50db9ab" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/dc5ff11e274a90cc1c743f66c9ad700ce50db9ab", - "reference": "dc5ff11e274a90cc1c743f66c9ad700ce50db9ab", - "shasum": "" - }, - "require": { - "php": "^7.2.5 || ^8.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.8", - "phpunit/phpunit": "^8.5.28 || ^9.5.21" - }, - "type": "library", - "extra": { - "bamarni-bin": { - "bin-links": true, - "forward-command": true - }, - "branch-alias": { - "dev-master": "1.9-dev" - } - }, - "autoload": { - "psr-4": { - "PhpOption\\": "src/PhpOption/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0" - ], - "authors": [ - { - "name": "Johannes M. Schmitt", - "email": "schmittjoh@gmail.com", - "homepage": "https://github.com/schmittjoh" - }, - { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" - } - ], - "description": "Option Type for PHP", - "keywords": [ - "language", - "option", - "php", - "type" - ], - "support": { - "issues": "https://github.com/schmittjoh/php-option/issues", - "source": "https://github.com/schmittjoh/php-option/tree/1.9.0" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", - "type": "tidelift" - } - ], - "time": "2022-07-30T15:51:26+00:00" - }, - { - "name": "pimple/pimple", - "version": "v3.5.0", - "source": { - "type": "git", - "url": "https://github.com/silexphp/Pimple.git", - "reference": "a94b3a4db7fb774b3d78dad2315ddc07629e1bed" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/silexphp/Pimple/zipball/a94b3a4db7fb774b3d78dad2315ddc07629e1bed", - "reference": "a94b3a4db7fb774b3d78dad2315ddc07629e1bed", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "psr/container": "^1.1 || ^2.0" - }, - "require-dev": { - "symfony/phpunit-bridge": "^5.4@dev" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4.x-dev" - } - }, - "autoload": { - "psr-0": { - "Pimple": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - } - ], - "description": "Pimple, a simple Dependency Injection Container", - "homepage": "https://pimple.symfony.com", - "keywords": [ - "container", - "dependency injection" - ], - "support": { - "source": "https://github.com/silexphp/Pimple/tree/v3.5.0" - }, - "time": "2021-10-28T11:13:42+00:00" - }, - { - "name": "psr/cache", - "version": "3.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/cache.git", - "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/cache/zipball/aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", - "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", - "shasum": "" - }, - "require": { - "php": ">=8.0.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Cache\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common interface for caching libraries", - "keywords": [ - "cache", - "psr", - "psr-6" - ], - "support": { - "source": "https://github.com/php-fig/cache/tree/3.0.0" - }, - "time": "2021-02-03T23:26:27+00:00" - }, - { - "name": "psr/container", - "version": "1.1.2", - "source": { - "type": "git", - "url": "https://github.com/php-fig/container.git", - "reference": "513e0666f7216c7459170d56df27dfcefe1689ea" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/513e0666f7216c7459170d56df27dfcefe1689ea", - "reference": "513e0666f7216c7459170d56df27dfcefe1689ea", - "shasum": "" - }, - "require": { - "php": ">=7.4.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Psr\\Container\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common Container Interface (PHP FIG PSR-11)", - "homepage": "https://github.com/php-fig/container", - "keywords": [ - "PSR-11", - "container", - "container-interface", - "container-interop", - "psr" - ], - "support": { - "issues": "https://github.com/php-fig/container/issues", - "source": "https://github.com/php-fig/container/tree/1.1.2" - }, - "time": "2021-11-05T16:50:12+00:00" - }, - { - "name": "psr/event-dispatcher", - "version": "1.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/event-dispatcher.git", - "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", - "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", - "shasum": "" - }, - "require": { - "php": ">=7.2.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\EventDispatcher\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Standard interfaces for event handling.", - "keywords": [ - "events", - "psr", - "psr-14" - ], - "support": { - "issues": "https://github.com/php-fig/event-dispatcher/issues", - "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" - }, - "time": "2019-01-08T18:20:26+00:00" - }, - { - "name": "psr/http-client", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-client.git", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "psr/http-message": "^1.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Http\\Client\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interface for HTTP clients", - "homepage": "https://github.com/php-fig/http-client", - "keywords": [ - "http", - "http-client", - "psr", - "psr-18" - ], - "support": { - "source": "https://github.com/php-fig/http-client/tree/master" - }, - "time": "2020-06-29T06:28:15+00:00" - }, - { - "name": "psr/http-factory", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-factory.git", - "reference": "e616d01114759c4c489f93b099585439f795fe35" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/e616d01114759c4c489f93b099585439f795fe35", - "reference": "e616d01114759c4c489f93b099585439f795fe35", - "shasum": "" - }, - "require": { - "php": ">=7.0.0", - "psr/http-message": "^1.0 || ^2.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Http\\Message\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common interfaces for PSR-7 HTTP message factories", - "keywords": [ - "factory", - "http", - "message", - "psr", - "psr-17", - "psr-7", - "request", - "response" - ], - "support": { - "source": "https://github.com/php-fig/http-factory/tree/1.0.2" - }, - "time": "2023-04-10T20:10:41+00:00" - }, - { - "name": "psr/http-message", - "version": "1.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "cb6ce4845ce34a8ad9e68117c10ee90a29919eba" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/cb6ce4845ce34a8ad9e68117c10ee90a29919eba", - "reference": "cb6ce4845ce34a8ad9e68117c10ee90a29919eba", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Http\\Message\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interface for HTTP messages", - "homepage": "https://github.com/php-fig/http-message", - "keywords": [ - "http", - "http-message", - "psr", - "psr-7", - "request", - "response" - ], - "support": { - "source": "https://github.com/php-fig/http-message/tree/1.1" - }, - "time": "2023-04-04T09:50:52+00:00" - }, - { - "name": "psr/log", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/log.git", - "reference": "ef29f6d262798707a9edd554e2b82517ef3a9376" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/ef29f6d262798707a9edd554e2b82517ef3a9376", - "reference": "ef29f6d262798707a9edd554e2b82517ef3a9376", - "shasum": "" - }, - "require": { - "php": ">=8.0.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Log\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common interface for logging libraries", - "homepage": "https://github.com/php-fig/log", - "keywords": [ - "log", - "psr", - "psr-3" - ], - "support": { - "source": "https://github.com/php-fig/log/tree/2.0.0" - }, - "time": "2021-07-14T16:41:46+00:00" - }, - { - "name": "psr/simple-cache", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/simple-cache.git", - "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", - "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\SimpleCache\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interfaces for simple caching", - "keywords": [ - "cache", - "caching", - "psr", - "psr-16", - "simple-cache" - ], - "support": { - "source": "https://github.com/php-fig/simple-cache/tree/master" - }, - "time": "2017-10-23T01:57:42+00:00" - }, - { - "name": "psy/psysh", - "version": "v0.11.8", - "source": { - "type": "git", - "url": "https://github.com/bobthecow/psysh.git", - "reference": "f455acf3645262ae389b10e9beba0c358aa6994e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/f455acf3645262ae389b10e9beba0c358aa6994e", - "reference": "f455acf3645262ae389b10e9beba0c358aa6994e", - "shasum": "" - }, - "require": { - "ext-json": "*", - "ext-tokenizer": "*", - "nikic/php-parser": "^4.0 || ^3.1", - "php": "^8.0 || ^7.0.8", - "symfony/console": "^6.0 || ^5.0 || ^4.0 || ^3.4", - "symfony/var-dumper": "^6.0 || ^5.0 || ^4.0 || ^3.4" - }, - "conflict": { - "symfony/console": "4.4.37 || 5.3.14 || 5.3.15 || 5.4.3 || 5.4.4 || 6.0.3 || 6.0.4" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.2" - }, - "suggest": { - "ext-pcntl": "Enabling the PCNTL extension makes PsySH a lot happier :)", - "ext-pdo-sqlite": "The doc command requires SQLite to work.", - "ext-posix": "If you have PCNTL, you'll want the POSIX extension as well.", - "ext-readline": "Enables support for arrow-key history navigation, and showing and manipulating command history." - }, - "bin": [ - "bin/psysh" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "0.11.x-dev" - } - }, - "autoload": { - "files": [ - "src/functions.php" - ], - "psr-4": { - "Psy\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Justin Hileman", - "email": "justin@justinhileman.info", - "homepage": "http://justinhileman.com" - } - ], - "description": "An interactive shell for modern PHP.", - "homepage": "http://psysh.org", - "keywords": [ - "REPL", - "console", - "interactive", - "shell" - ], - "support": { - "issues": "https://github.com/bobthecow/psysh/issues", - "source": "https://github.com/bobthecow/psysh/tree/v0.11.8" - }, - "time": "2022-07-28T14:25:11+00:00" - }, - { - "name": "ralouphie/getallheaders", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/ralouphie/getallheaders.git", - "reference": "120b605dfeb996808c31b6477290a714d356e822" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", - "reference": "120b605dfeb996808c31b6477290a714d356e822", - "shasum": "" - }, - "require": { - "php": ">=5.6" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.1", - "phpunit/phpunit": "^5 || ^6.5" - }, - "type": "library", - "autoload": { - "files": [ - "src/getallheaders.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ralph Khattar", - "email": "ralph.khattar@gmail.com" - } - ], - "description": "A polyfill for getallheaders.", - "support": { - "issues": "https://github.com/ralouphie/getallheaders/issues", - "source": "https://github.com/ralouphie/getallheaders/tree/develop" - }, - "time": "2019-03-08T08:55:37+00:00" - }, - { - "name": "ramsey/collection", - "version": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/ramsey/collection.git", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/collection/zipball/cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "shasum": "" - }, - "require": { - "php": "^7.3 || ^8", - "symfony/polyfill-php81": "^1.23" - }, - "require-dev": { - "captainhook/captainhook": "^5.3", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", - "ergebnis/composer-normalize": "^2.6", - "fakerphp/faker": "^1.5", - "hamcrest/hamcrest-php": "^2", - "jangregor/phpstan-prophecy": "^0.8", - "mockery/mockery": "^1.3", - "phpspec/prophecy-phpunit": "^2.0", - "phpstan/extension-installer": "^1", - "phpstan/phpstan": "^0.12.32", - "phpstan/phpstan-mockery": "^0.12.5", - "phpstan/phpstan-phpunit": "^0.12.11", - "phpunit/phpunit": "^8.5 || ^9", - "psy/psysh": "^0.10.4", - "slevomat/coding-standard": "^6.3", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.4" - }, - "type": "library", - "autoload": { - "psr-4": { - "Ramsey\\Collection\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ben Ramsey", - "email": "ben@benramsey.com", - "homepage": "https://benramsey.com" - } - ], - "description": "A PHP library for representing and manipulating collections.", - "keywords": [ - "array", - "collection", - "hash", - "map", - "queue", - "set" - ], - "support": { - "issues": "https://github.com/ramsey/collection/issues", - "source": "https://github.com/ramsey/collection/tree/1.2.2" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", - "type": "tidelift" - } - ], - "time": "2021-10-10T03:01:02+00:00" - }, - { - "name": "ramsey/uuid", - "version": "4.5.1", - "source": { - "type": "git", - "url": "https://github.com/ramsey/uuid.git", - "reference": "a161a26d917604dc6d3aa25100fddf2556e9f35d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/a161a26d917604dc6d3aa25100fddf2556e9f35d", - "reference": "a161a26d917604dc6d3aa25100fddf2556e9f35d", - "shasum": "" - }, - "require": { - "brick/math": "^0.8.8 || ^0.9 || ^0.10", - "ext-ctype": "*", - "ext-json": "*", - "php": "^8.0", - "ramsey/collection": "^1.0" - }, - "replace": { - "rhumsaa/uuid": "self.version" - }, - "require-dev": { - "captainhook/captainhook": "^5.10", - "captainhook/plugin-composer": "^5.3", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", - "doctrine/annotations": "^1.8", - "ergebnis/composer-normalize": "^2.15", - "mockery/mockery": "^1.3", - "paragonie/random-lib": "^2", - "php-mock/php-mock": "^2.2", - "php-mock/php-mock-mockery": "^1.3", - "php-parallel-lint/php-parallel-lint": "^1.1", - "phpbench/phpbench": "^1.0", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan": "^1.8", - "phpstan/phpstan-mockery": "^1.1", - "phpstan/phpstan-phpunit": "^1.1", - "phpunit/phpunit": "^8.5 || ^9", - "ramsey/composer-repl": "^1.4", - "slevomat/coding-standard": "^8.4", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.9" - }, - "suggest": { - "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", - "ext-ctype": "Enables faster processing of character classification using ctype functions.", - "ext-gmp": "Enables faster math with arbitrary-precision integers using GMP.", - "ext-uuid": "Enables the use of PeclUuidTimeGenerator and PeclUuidRandomGenerator.", - "paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter", - "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type." - }, - "type": "library", - "extra": { - "captainhook": { - "force-install": true - } - }, - "autoload": { - "files": [ - "src/functions.php" - ], - "psr-4": { - "Ramsey\\Uuid\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "A PHP library for generating and working with universally unique identifiers (UUIDs).", - "keywords": [ - "guid", - "identifier", - "uuid" - ], - "support": { - "issues": "https://github.com/ramsey/uuid/issues", - "source": "https://github.com/ramsey/uuid/tree/4.5.1" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", - "type": "tidelift" - } - ], - "time": "2022-09-16T03:22:46+00:00" - }, - { - "name": "sebastian/diff", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3", - "symfony/process": "^4.2 || ^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:10:38+00:00" - }, - { - "name": "sentry/sdk", - "version": "3.2.0", - "source": { - "type": "git", - "url": "https://github.com/getsentry/sentry-php-sdk.git", - "reference": "6d78bd83b43efbb52f81d6824f4af344fa9ba292" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/getsentry/sentry-php-sdk/zipball/6d78bd83b43efbb52f81d6824f4af344fa9ba292", - "reference": "6d78bd83b43efbb52f81d6824f4af344fa9ba292", - "shasum": "" - }, - "require": { - "http-interop/http-factory-guzzle": "^1.0", - "sentry/sentry": "^3.5", - "symfony/http-client": "^4.3|^5.0|^6.0" - }, - "type": "metapackage", - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Sentry", - "email": "accounts@sentry.io" - } - ], - "description": "This is a metapackage shipping sentry/sentry with a recommended HTTP client.", - "homepage": "http://sentry.io", - "keywords": [ - "crash-reporting", - "crash-reports", - "error-handler", - "error-monitoring", - "log", - "logging", - "sentry" - ], - "support": { - "issues": "https://github.com/getsentry/sentry-php-sdk/issues", - "source": "https://github.com/getsentry/sentry-php-sdk/tree/3.2.0" - }, - "funding": [ - { - "url": "https://sentry.io/", - "type": "custom" - }, - { - "url": "https://sentry.io/pricing/", - "type": "custom" - } - ], - "time": "2022-05-21T11:10:11+00:00" - }, - { - "name": "sentry/sentry", - "version": "3.7.0", - "source": { - "type": "git", - "url": "https://github.com/getsentry/sentry-php.git", - "reference": "877bca3f0f0ac0fc8ec0a218c6070cccea266795" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/getsentry/sentry-php/zipball/877bca3f0f0ac0fc8ec0a218c6070cccea266795", - "reference": "877bca3f0f0ac0fc8ec0a218c6070cccea266795", - "shasum": "" - }, - "require": { - "ext-json": "*", - "ext-mbstring": "*", - "guzzlehttp/promises": "^1.4", - "guzzlehttp/psr7": "^1.8.4|^2.1.1", - "jean85/pretty-package-versions": "^1.5|^2.0.4", - "php": "^7.2|^8.0", - "php-http/async-client-implementation": "^1.0", - "php-http/client-common": "^1.5|^2.0", - "php-http/discovery": "^1.11", - "php-http/httplug": "^1.1|^2.0", - "php-http/message": "^1.5", - "psr/http-factory": "^1.0", - "psr/http-message-implementation": "^1.0", - "psr/log": "^1.0|^2.0|^3.0", - "symfony/options-resolver": "^3.4.43|^4.4.30|^5.0.11|^6.0", - "symfony/polyfill-php80": "^1.17", - "symfony/polyfill-uuid": "^1.13.1" - }, - "conflict": { - "php-http/client-common": "1.8.0", - "raven/raven": "*" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^2.19|3.4.*", - "http-interop/http-factory-guzzle": "^1.0", - "monolog/monolog": "^1.6|^2.0|^3.0", - "nikic/php-parser": "^4.10.3", - "php-http/mock-client": "^1.3", - "phpbench/phpbench": "^1.0", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^1.3", - "phpstan/phpstan-phpunit": "^1.0", - "phpunit/phpunit": "^8.5.14|^9.4", - "symfony/phpunit-bridge": "^5.2|^6.0", - "vimeo/psalm": "^4.17" - }, - "suggest": { - "monolog/monolog": "Allow sending log messages to Sentry by using the included Monolog handler." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.7.x-dev" - } - }, - "autoload": { - "files": [ - "src/functions.php" - ], - "psr-4": { - "Sentry\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sentry", - "email": "accounts@sentry.io" - } - ], - "description": "A PHP SDK for Sentry (http://sentry.io)", - "homepage": "http://sentry.io", - "keywords": [ - "crash-reporting", - "crash-reports", - "error-handler", - "error-monitoring", - "log", - "logging", - "sentry" - ], - "support": { - "issues": "https://github.com/getsentry/sentry-php/issues", - "source": "https://github.com/getsentry/sentry-php/tree/3.7.0" - }, - "funding": [ - { - "url": "https://sentry.io/", - "type": "custom" - }, - { - "url": "https://sentry.io/pricing/", - "type": "custom" - } - ], - "time": "2022-07-18T07:55:36+00:00" - }, - { - "name": "sentry/sentry-laravel", - "version": "2.13.0", - "source": { - "type": "git", - "url": "https://github.com/getsentry/sentry-laravel.git", - "reference": "c5e74e5fff18014780361fb33a883af9a9fbd900" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/getsentry/sentry-laravel/zipball/c5e74e5fff18014780361fb33a883af9a9fbd900", - "reference": "c5e74e5fff18014780361fb33a883af9a9fbd900", - "shasum": "" - }, - "require": { - "illuminate/support": "5.0 - 5.8 | ^6.0 | ^7.0 | ^8.0 | ^9.0", - "nyholm/psr7": "^1.0", - "php": "^7.2 | ^8.0", - "sentry/sdk": "^3.1", - "sentry/sentry": "^3.3", - "symfony/psr-http-message-bridge": "^1.0 | ^2.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "2.18.*", - "laravel/framework": "5.0 - 5.8 | ^6.0 | ^7.0 | ^8.0 | ^9.0", - "mockery/mockery": "^1.3", - "orchestra/testbench": "3.1 - 3.8 | ^4.7 | ^5.1 | ^6.0 | ^7.0", - "phpunit/phpunit": "^5.7 | ^6.5 | ^7.5 | ^8.4 | ^9.3" - }, - "suggest": { - "zendframework/zend-diactoros": "When using Laravel >=5.1 - <=6.9 this package can help get more accurate request info, not used on Laravel >=6.10 anymore (https://laravel.com/docs/5.8/requests#psr7-requests)" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.x-dev", - "dev-0.x": "0.x-dev" - }, - "laravel": { - "providers": [ - "Sentry\\Laravel\\ServiceProvider", - "Sentry\\Laravel\\Tracing\\ServiceProvider" - ], - "aliases": { - "Sentry": "Sentry\\Laravel\\Facade" - } - } - }, - "autoload": { - "psr-0": { - "Sentry\\Laravel\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0" - ], - "authors": [ - { - "name": "Sentry", - "email": "accounts@sentry.io" - } - ], - "description": "Laravel SDK for Sentry (https://sentry.io)", - "homepage": "https://sentry.io", - "keywords": [ - "crash-reporting", - "crash-reports", - "error-handler", - "error-monitoring", - "laravel", - "log", - "logging", - "sentry" - ], - "support": { - "issues": "https://github.com/getsentry/sentry-laravel/issues", - "source": "https://github.com/getsentry/sentry-laravel/tree/2.13.0" - }, - "funding": [ - { - "url": "https://sentry.io/", - "type": "custom" - }, - { - "url": "https://sentry.io/pricing/", - "type": "custom" - } - ], - "time": "2022-07-15T11:36:23+00:00" - }, - { - "name": "silber/page-cache", - "version": "dev-csv-support", - "source": { - "type": "git", - "url": "https://github.com/HowTheyVote/page-cache.git", - "reference": "e2e265fa0d100896eacd1e9108399545a9a5893f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/HowTheyVote/page-cache/zipball/e2e265fa0d100896eacd1e9108399545a9a5893f", - "reference": "e2e265fa0d100896eacd1e9108399545a9a5893f", - "shasum": "" - }, - "require": { - "illuminate/contracts": "5.0 - 5.8|^6.0|^7.0|^8.0", - "illuminate/filesystem": "5.0 - 5.8|^6.0|^7.0|^8.0", - "php": ">=5.5.9", - "symfony/http-foundation": "2.6 - 4|^5.0" - }, - "require-dev": { - "illuminate/container": "5.0 - 5.8|^6.0|^7.0|^8.0", - "mockery/mockery": "^0.9.5", - "phpunit/phpunit": "^4.8", - "symfony/var-dumper": "^4.4|^5.0" - }, - "suggest": { - "illuminate/console": "Allows clearing the cache via artisan" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Silber\\PageCache\\LaravelServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Silber\\PageCache\\": "src/" - } - }, - "autoload-dev": { - "psr-4": { - "Silber\\PageCache\\Tests\\": "tests" - } - }, - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Joseph Silber", - "email": "contact@josephsilber.com" - } - ], - "description": "Caches responses as static files on disk for lightning fast page loads.", - "keywords": [ - "cache", - "laravel" - ], - "support": { - "source": "https://github.com/HowTheyVote/page-cache/tree/csv-support" - }, - "time": "2021-08-18T10:09:28+00:00" - }, - { - "name": "spatie/backtrace", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/backtrace.git", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/backtrace/zipball/4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "ext-json": "*", - "phpunit/phpunit": "^9.3", - "symfony/var-dumper": "^5.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Spatie\\Backtrace\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van de Herten", - "email": "freek@spatie.be", - "homepage": "https://spatie.be", - "role": "Developer" - } - ], - "description": "A better backtrace", - "homepage": "https://github.com/spatie/backtrace", - "keywords": [ - "Backtrace", - "spatie" - ], - "support": { - "issues": "https://github.com/spatie/backtrace/issues", - "source": "https://github.com/spatie/backtrace/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/sponsors/spatie", - "type": "github" - }, - { - "url": "https://spatie.be/open-source/support-us", - "type": "other" - } - ], - "time": "2021-11-09T10:57:15+00:00" - }, - { - "name": "spatie/enum", - "version": "3.13.0", - "source": { - "type": "git", - "url": "https://github.com/spatie/enum.git", - "reference": "f1a0f464ba909491a53e60a955ce84ad7cd93a2c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/enum/zipball/f1a0f464ba909491a53e60a955ce84ad7cd93a2c", - "reference": "f1a0f464ba909491a53e60a955ce84ad7cd93a2c", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^8.0" - }, - "require-dev": { - "fakerphp/faker": "^1.9.1", - "larapack/dd": "^1.1", - "phpunit/phpunit": "^9.0", - "vimeo/psalm": "^4.3" - }, - "suggest": { - "fakerphp/faker": "To use the enum faker provider", - "phpunit/phpunit": "To use the enum assertions" - }, - "type": "library", - "autoload": { - "psr-4": { - "Spatie\\Enum\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Brent Roose", - "email": "brent@spatie.be", - "homepage": "https://spatie.be", - "role": "Developer" - }, - { - "name": "Tom Witkowski", - "email": "dev@gummibeer.de", - "homepage": "https://gummibeer.de", - "role": "Developer" - } - ], - "description": "PHP Enums", - "homepage": "https://github.com/spatie/enum", - "keywords": [ - "enum", - "enumerable", - "spatie" - ], - "support": { - "docs": "https://docs.spatie.be/enum", - "issues": "https://github.com/spatie/enum/issues", - "source": "https://github.com/spatie/enum" - }, - "funding": [ - { - "url": "https://spatie.be/open-source/support-us", - "type": "custom" - }, - { - "url": "https://github.com/spatie", - "type": "github" - } - ], - "time": "2022-04-22T08:51:55+00:00" - }, - { - "name": "spatie/laravel-enum", - "version": "3.0.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/laravel-enum.git", - "reference": "b1bd1c1be50dfdccdefdd5a988d95b292d031d48" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-enum/zipball/b1bd1c1be50dfdccdefdd5a988d95b292d031d48", - "reference": "b1bd1c1be50dfdccdefdd5a988d95b292d031d48", - "shasum": "" - }, - "require": { - "ext-json": "*", - "illuminate/console": "^8.0 || ^9.0", - "illuminate/contracts": "^8.0 || ^9.0", - "illuminate/database": "^8.0 || ^9.0", - "illuminate/http": "^8.0 || ^9.0", - "illuminate/support": "^8.0 || ^9.0", - "php": "^7.4 || ^8.0", - "spatie/enum": "^3.9" - }, - "conflict": { - "bensampo/laravel-enum": "*" - }, - "require-dev": { - "fakerphp/faker": "^1.16", - "mockery/mockery": "^1.4.0", - "orchestra/testbench": "^6.0 || ^7.0", - "phpunit/phpunit": "^9.5", - "vimeo/psalm": "^4.0" - }, - "suggest": { - "fzaninotto/faker": "^1.9.1" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Spatie\\Enum\\Laravel\\EnumServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Spatie\\Enum\\Laravel\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Brent Roose", - "email": "brent@spatie.be", - "homepage": "https://spatie.be", - "role": "Developer" - }, - { - "name": "Tom Witkowski", - "email": "dev@gummibeer.de", - "homepage": "https://gummibeer.de", - "role": "Developer" - } - ], - "description": "Laravel Enum support", - "homepage": "https://github.com/spatie/laravel-enum", - "keywords": [ - "enum", - "laravel", - "laravel-enum", - "spatie" - ], - "support": { - "issues": "https://github.com/spatie/laravel-enum/issues", - "source": "https://github.com/spatie/laravel-enum/tree/3.0.1" - }, - "funding": [ - { - "url": "https://spatie.be/open-source/support-us", - "type": "custom" - }, - { - "url": "https://github.com/spatie", - "type": "github" - } - ], - "time": "2022-02-05T09:53:41+00:00" - }, - { - "name": "spatie/laravel-ray", - "version": "1.31.0", - "source": { - "type": "git", - "url": "https://github.com/spatie/laravel-ray.git", - "reference": "7394694afd89d05879e7a69c54abab73c1199acd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-ray/zipball/7394694afd89d05879e7a69c54abab73c1199acd", - "reference": "7394694afd89d05879e7a69c54abab73c1199acd", - "shasum": "" - }, - "require": { - "ext-json": "*", - "illuminate/contracts": "^7.20|^8.19|^9.0", - "illuminate/database": "^7.20|^8.19|^9.0", - "illuminate/queue": "^7.20|^8.19|^9.0", - "illuminate/support": "^7.20|^8.19|^9.0", - "php": "^7.3|^8.0", - "spatie/backtrace": "^1.0", - "spatie/ray": "^1.33", - "symfony/stopwatch": "4.2|^5.1|^6.0", - "zbateson/mail-mime-parser": "^1.3.1|^2.0" - }, - "require-dev": { - "guzzlehttp/guzzle": "^7.3", - "laravel/framework": "^7.20|^8.19|^9.0", - "orchestra/testbench-core": "^5.0|^6.0|^7.0", - "phpstan/phpstan": "^0.12.93", - "phpunit/phpunit": "^9.3", - "spatie/phpunit-snapshot-assertions": "^4.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.29.x-dev" - }, - "laravel": { - "providers": [ - "Spatie\\LaravelRay\\RayServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Spatie\\LaravelRay\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "homepage": "https://spatie.be", - "role": "Developer" - } - ], - "description": "Easily debug Laravel apps", - "homepage": "https://github.com/spatie/laravel-ray", - "keywords": [ - "laravel-ray", - "spatie" - ], - "support": { - "issues": "https://github.com/spatie/laravel-ray/issues", - "source": "https://github.com/spatie/laravel-ray/tree/1.31.0" - }, - "funding": [ - { - "url": "https://github.com/sponsors/spatie", - "type": "github" - }, - { - "url": "https://spatie.be/open-source/support-us", - "type": "other" - } - ], - "time": "2022-09-20T13:13:22+00:00" - }, - { - "name": "spatie/macroable", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/spatie/macroable.git", - "reference": "ec2c320f932e730607aff8052c44183cf3ecb072" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/macroable/zipball/ec2c320f932e730607aff8052c44183cf3ecb072", - "reference": "ec2c320f932e730607aff8052c44183cf3ecb072", - "shasum": "" - }, - "require": { - "php": "^8.0" - }, - "require-dev": { - "phpunit/phpunit": "^8.0|^9.3" - }, - "type": "library", - "autoload": { - "psr-4": { - "Spatie\\Macroable\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "homepage": "https://spatie.be", - "role": "Developer" - } - ], - "description": "A trait to dynamically add methods to a class", - "homepage": "https://github.com/spatie/macroable", - "keywords": [ - "macroable", - "spatie" - ], - "support": { - "issues": "https://github.com/spatie/macroable/issues", - "source": "https://github.com/spatie/macroable/tree/2.0.0" - }, - "time": "2021-03-26T22:39:02+00:00" - }, - { - "name": "spatie/ray", - "version": "1.36.0", - "source": { - "type": "git", - "url": "https://github.com/spatie/ray.git", - "reference": "4a4def8cda4806218341b8204c98375aa8c34323" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/ray/zipball/4a4def8cda4806218341b8204c98375aa8c34323", - "reference": "4a4def8cda4806218341b8204c98375aa8c34323", - "shasum": "" - }, - "require": { - "ext-curl": "*", - "ext-json": "*", - "php": "^7.3|^8.0", - "ramsey/uuid": "^3.0|^4.1", - "spatie/backtrace": "^1.1", - "spatie/macroable": "^1.0|^2.0", - "symfony/stopwatch": "^4.0|^5.1|^6.0", - "symfony/var-dumper": "^4.2|^5.1|^6.0" - }, - "require-dev": { - "illuminate/support": "6.x|^8.18|^9.0", - "nesbot/carbon": "^2.43", - "phpstan/phpstan": "^0.12.92", - "phpunit/phpunit": "^9.5", - "spatie/phpunit-snapshot-assertions": "^4.2", - "spatie/test-time": "^1.2" - }, - "type": "library", - "autoload": { - "files": [ - "src/helpers.php" - ], - "psr-4": { - "Spatie\\Ray\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "homepage": "https://spatie.be", - "role": "Developer" - } - ], - "description": "Debug with Ray to fix problems faster", - "homepage": "https://github.com/spatie/ray", - "keywords": [ - "ray", - "spatie" - ], - "support": { - "issues": "https://github.com/spatie/ray/issues", - "source": "https://github.com/spatie/ray/tree/1.36.0" - }, - "funding": [ - { - "url": "https://github.com/sponsors/spatie", - "type": "github" - }, - { - "url": "https://spatie.be/open-source/support-us", - "type": "other" - } - ], - "time": "2022-08-11T14:04:18+00:00" - }, - { - "name": "spatie/sheets", - "version": "1.9.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/sheets.git", - "reference": "01880ae4ed0b6797c8ab4c41f61d5be4632c71da" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/sheets/zipball/01880ae4ed0b6797c8ab4c41f61d5be4632c71da", - "reference": "01880ae4ed0b6797c8ab4c41f61d5be4632c71da", - "shasum": "" - }, - "require": { - "ext-json": "*", - "illuminate/contracts": "^8.71|^9.0", - "illuminate/filesystem": "^8.71|^9.0", - "illuminate/support": "^8.71|^9.0", - "league/commonmark": "^1.0|^2.0", - "php": "^8.0", - "spatie/yaml-front-matter": "^2.0", - "symfony/yaml": "^4.0|^5.0|^6.0" - }, - "require-dev": { - "league/flysystem": "^1.0.8|^3.0", - "orchestra/testbench": "^6.23|^7.0", - "phpunit/phpunit": "^9.4" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Spatie\\Sheets\\SheetsServiceProvider" - ], - "aliases": { - "Sheets": "Spatie\\Sheets\\Facades\\Sheets" - } - } - }, - "autoload": { - "files": [ - "src/helpers.php" - ], - "psr-4": { - "Spatie\\Sheets\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Sebastian De Deyne", - "email": "sebastian@spatie.be", - "homepage": "https://spatie.be", - "role": "Developer" - } - ], - "description": "Store & retrieve your static content in plain text files", - "homepage": "https://github.com/spatie/sheets", - "keywords": [ - "laravel", - "sheets", - "spatie" - ], - "support": { - "issues": "https://github.com/spatie/sheets/issues", - "source": "https://github.com/spatie/sheets/tree/1.9.1" - }, - "funding": [ - { - "url": "https://spatie.be/open-source/support-us", - "type": "custom" - } - ], - "time": "2022-02-09T08:02:31+00:00" - }, - { - "name": "spatie/simple-excel", - "version": "2.2.0", - "source": { - "type": "git", - "url": "https://github.com/spatie/simple-excel.git", - "reference": "c5048f5025606cd3bd10ae824cd73613161e9fc9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/simple-excel/zipball/c5048f5025606cd3bd10ae824cd73613161e9fc9", - "reference": "c5048f5025606cd3bd10ae824cd73613161e9fc9", - "shasum": "" - }, - "require": { - "illuminate/support": "^8.71|^9.0", - "openspout/openspout": "^3.0", - "php": "^8.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.4", - "spatie/phpunit-snapshot-assertions": "^4.0", - "spatie/temporary-directory": "^1.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "Spatie\\SimpleExcel\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "homepage": "https://spatie.be", - "role": "Developer" - } - ], - "description": "Read and write simple Excel and CSV files", - "homepage": "https://github.com/spatie/simple-excel", - "keywords": [ - "simple-excel", - "spatie" - ], - "support": { - "issues": "https://github.com/spatie/simple-excel/issues", - "source": "https://github.com/spatie/simple-excel/tree/2.2.0" - }, - "funding": [ - { - "url": "https://github.com/spatie", - "type": "github" - } - ], - "time": "2022-09-02T13:31:43+00:00" - }, - { - "name": "spatie/url", - "version": "2.2.0", - "source": { - "type": "git", - "url": "https://github.com/spatie/url.git", - "reference": "8a52d669b7ada3bd8ba4a3cdba885056a35a978d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/url/zipball/8a52d669b7ada3bd8ba4a3cdba885056a35a978d", - "reference": "8a52d669b7ada3bd8ba4a3cdba885056a35a978d", - "shasum": "" - }, - "require": { - "php": "^8.0", - "psr/http-message": "^1.0", - "spatie/macroable": "^2.0" - }, - "require-dev": { - "pestphp/pest": "^1.21" - }, - "type": "library", - "autoload": { - "psr-4": { - "Spatie\\Url\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Sebastian De Deyne", - "email": "sebastian@spatie.be", - "homepage": "https://spatie.be", - "role": "Developer" - } - ], - "description": "Parse, build and manipulate URL's", - "homepage": "https://github.com/spatie/url", - "keywords": [ - "spatie", - "url" - ], - "support": { - "issues": "https://github.com/spatie/url/issues", - "source": "https://github.com/spatie/url/tree/2.2.0" - }, - "funding": [ - { - "url": "https://spatie.be/open-source/support-us", - "type": "custom" - }, - { - "url": "https://github.com/spatie", - "type": "github" - } - ], - "time": "2022-12-14T09:57:56+00:00" - }, - { - "name": "spatie/yaml-front-matter", - "version": "2.0.7", - "source": { - "type": "git", - "url": "https://github.com/spatie/yaml-front-matter.git", - "reference": "f49f228994de70827ca857efffdd3bd7703aea34" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/yaml-front-matter/zipball/f49f228994de70827ca857efffdd3bd7703aea34", - "reference": "f49f228994de70827ca857efffdd3bd7703aea34", - "shasum": "" - }, - "require": { - "php": "^7.0|^8.0", - "symfony/yaml": "^3.0|^4.0|^5.0|^6.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Spatie\\YamlFrontMatter\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Sebastian De Deyne", - "email": "sebastian@spatie.be", - "homepage": "https://spatie.be", - "role": "Developer" - } - ], - "description": "A to the point yaml front matter parser", - "homepage": "https://github.com/sebastiandedeyne/yaml-front-matter", - "keywords": [ - "front matter", - "jekyll", - "spatie", - "yaml" - ], - "support": { - "source": "https://github.com/spatie/yaml-front-matter/tree/2.0.7" - }, - "funding": [ - { - "url": "https://spatie.be/open-source/support-us", - "type": "custom" - }, - { - "url": "https://github.com/spatie", - "type": "github" - } - ], - "time": "2022-04-06T12:03:55+00:00" - }, - { - "name": "swiftmailer/swiftmailer", - "version": "v6.3.0", - "source": { - "type": "git", - "url": "https://github.com/swiftmailer/swiftmailer.git", - "reference": "8a5d5072dca8f48460fce2f4131fcc495eec654c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/8a5d5072dca8f48460fce2f4131fcc495eec654c", - "reference": "8a5d5072dca8f48460fce2f4131fcc495eec654c", - "shasum": "" - }, - "require": { - "egulias/email-validator": "^2.0|^3.1", - "php": ">=7.0.0", - "symfony/polyfill-iconv": "^1.0", - "symfony/polyfill-intl-idn": "^1.10", - "symfony/polyfill-mbstring": "^1.0" - }, - "require-dev": { - "mockery/mockery": "^1.0", - "symfony/phpunit-bridge": "^4.4|^5.4" - }, - "suggest": { - "ext-intl": "Needed to support internationalized email addresses" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "6.2-dev" - } - }, - "autoload": { - "files": [ - "lib/swift_required.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Chris Corbyn" - }, - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - } - ], - "description": "Swiftmailer, free feature-rich PHP mailer", - "homepage": "https://swiftmailer.symfony.com", - "keywords": [ - "email", - "mail", - "mailer" - ], - "support": { - "issues": "https://github.com/swiftmailer/swiftmailer/issues", - "source": "https://github.com/swiftmailer/swiftmailer/tree/v6.3.0" - }, - "funding": [ - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/swiftmailer/swiftmailer", - "type": "tidelift" - } - ], - "abandoned": "symfony/mailer", - "time": "2021-10-18T15:26:12+00:00" - }, - { - "name": "symfony/console", - "version": "v5.4.13", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "3f97f6c7b7e26848a90c0c0cfb91eeb2bb8618be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/3f97f6c7b7e26848a90c0c0cfb91eeb2bb8618be", - "reference": "3f97f6c7b7e26848a90c0c0cfb91eeb2bb8618be", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php73": "^1.9", - "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/string": "^5.1|^6.0" - }, - "conflict": { - "psr/log": ">=3", - "symfony/dependency-injection": "<4.4", - "symfony/dotenv": "<5.1", - "symfony/event-dispatcher": "<4.4", - "symfony/lock": "<4.4", - "symfony/process": "<4.4" - }, - "provide": { - "psr/log-implementation": "1.0|2.0" - }, - "require-dev": { - "psr/log": "^1|^2", - "symfony/config": "^4.4|^5.0|^6.0", - "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/event-dispatcher": "^4.4|^5.0|^6.0", - "symfony/lock": "^4.4|^5.0|^6.0", - "symfony/process": "^4.4|^5.0|^6.0", - "symfony/var-dumper": "^4.4|^5.0|^6.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Console\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Eases the creation of beautiful and testable command line interfaces", - "homepage": "https://symfony.com", - "keywords": [ - "cli", - "command line", - "console", - "terminal" - ], - "support": { - "source": "https://github.com/symfony/console/tree/v5.4.13" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-08-26T13:50:20+00:00" - }, - { - "name": "symfony/css-selector", - "version": "v6.0.11", - "source": { - "type": "git", - "url": "https://github.com/symfony/css-selector.git", - "reference": "ab2746acddc4f03a7234c8441822ac5d5c63efe9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/ab2746acddc4f03a7234c8441822ac5d5c63efe9", - "reference": "ab2746acddc4f03a7234c8441822ac5d5c63efe9", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\CssSelector\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Jean-François Simon", - "email": "jeanfrancois.simon@sensiolabs.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Converts CSS selectors to XPath expressions", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/css-selector/tree/v6.0.11" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-06-27T17:10:44+00:00" - }, - { - "name": "symfony/deprecation-contracts", - "version": "v3.0.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "26954b3d62a6c5fd0ea8a2a00c0353a14978d05c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/26954b3d62a6c5fd0ea8a2a00c0353a14978d05c", - "reference": "26954b3d62a6c5fd0ea8a2a00c0353a14978d05c", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "files": [ - "function.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "A generic function and convention to trigger deprecation notices", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.0.2" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/error-handler", - "version": "v5.4.19", - "source": { - "type": "git", - "url": "https://github.com/symfony/error-handler.git", - "reference": "438ef3e5e6481244785da3ce8cf8f4e74e7f2822" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/438ef3e5e6481244785da3ce8cf8f4e74e7f2822", - "reference": "438ef3e5e6481244785da3ce8cf8f4e74e7f2822", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^4.4|^5.0|^6.0" - }, - "require-dev": { - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/http-kernel": "^4.4|^5.0|^6.0", - "symfony/serializer": "^4.4|^5.0|^6.0" - }, - "bin": [ - "Resources/bin/patch-type-declarations" - ], - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\ErrorHandler\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools to manage errors and ease debugging PHP code", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/error-handler/tree/v5.4.19" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2023-01-01T08:32:19+00:00" - }, - { - "name": "symfony/event-dispatcher", - "version": "v6.0.19", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "2eaf8e63bc5b8cefabd4a800157f0d0c094f677a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/2eaf8e63bc5b8cefabd4a800157f0d0c094f677a", - "reference": "2eaf8e63bc5b8cefabd4a800157f0d0c094f677a", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/event-dispatcher-contracts": "^2|^3" - }, - "conflict": { - "symfony/dependency-injection": "<5.4" - }, - "provide": { - "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/error-handler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/stopwatch": "^5.4|^6.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.0.19" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2023-01-01T08:36:10+00:00" - }, - { - "name": "symfony/event-dispatcher-contracts", - "version": "v3.0.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "7bc61cc2db649b4637d331240c5346dcc7708051" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/7bc61cc2db649b4637d331240c5346dcc7708051", - "reference": "7bc61cc2db649b4637d331240c5346dcc7708051", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/event-dispatcher": "^1" - }, - "suggest": { - "symfony/event-dispatcher-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\EventDispatcher\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Generic abstractions related to dispatching event", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.0.2" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/filesystem", - "version": "v6.0.12", - "source": { - "type": "git", - "url": "https://github.com/symfony/filesystem.git", - "reference": "a36b782dc19dce3ab7e47d4b92b13cefb3511da3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/a36b782dc19dce3ab7e47d4b92b13cefb3511da3", - "reference": "a36b782dc19dce3ab7e47d4b92b13cefb3511da3", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-mbstring": "~1.8" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Filesystem\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides basic utilities for the filesystem", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/filesystem/tree/v6.0.12" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-08-02T16:01:06+00:00" - }, - { - "name": "symfony/finder", - "version": "v5.4.11", - "source": { - "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "7872a66f57caffa2916a584db1aa7f12adc76f8c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/7872a66f57caffa2916a584db1aa7f12adc76f8c", - "reference": "7872a66f57caffa2916a584db1aa7f12adc76f8c", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-php80": "^1.16" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Finder\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Finds files and directories via an intuitive fluent interface", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/finder/tree/v5.4.11" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-07-29T07:37:50+00:00" - }, - { - "name": "symfony/http-client", - "version": "v5.4.11", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-client.git", - "reference": "5c5c37eb2a276d8d7d669dd76688aa1606ee78fb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/5c5c37eb2a276d8d7d669dd76688aa1606ee78fb", - "reference": "5c5c37eb2a276d8d7d669dd76688aa1606ee78fb", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "psr/log": "^1|^2|^3", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/http-client-contracts": "^2.4", - "symfony/polyfill-php73": "^1.11", - "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.0|^2|^3" - }, - "provide": { - "php-http/async-client-implementation": "*", - "php-http/client-implementation": "*", - "psr/http-client-implementation": "1.0", - "symfony/http-client-implementation": "2.4" - }, - "require-dev": { - "amphp/amp": "^2.5", - "amphp/http-client": "^4.2.1", - "amphp/http-tunnel": "^1.0", - "amphp/socket": "^1.1", - "guzzlehttp/promises": "^1.4", - "nyholm/psr7": "^1.0", - "php-http/httplug": "^1.0|^2.0", - "psr/http-client": "^1.0", - "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/http-kernel": "^4.4.13|^5.1.5|^6.0", - "symfony/process": "^4.4|^5.0|^6.0", - "symfony/stopwatch": "^4.4|^5.0|^6.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\HttpClient\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides powerful methods to fetch HTTP resources synchronously or asynchronously", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/http-client/tree/v5.4.11" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-07-28T13:33:28+00:00" - }, - { - "name": "symfony/http-client-contracts", - "version": "v2.5.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-client-contracts.git", - "reference": "ba6a9f0e8f3edd190520ee3b9a958596b6ca2e70" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/ba6a9f0e8f3edd190520ee3b9a958596b6ca2e70", - "reference": "ba6a9f0e8f3edd190520ee3b9a958596b6ca2e70", - "shasum": "" - }, - "require": { - "php": ">=7.2.5" - }, - "suggest": { - "symfony/http-client-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.5-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\HttpClient\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Generic abstractions related to HTTP clients", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "support": { - "source": "https://github.com/symfony/http-client-contracts/tree/v2.5.2" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-04-12T15:48:08+00:00" - }, - { - "name": "symfony/http-foundation", - "version": "v5.4.20", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "d0435363362a47c14e9cf50663cb8ffbf491875a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/d0435363362a47c14e9cf50663cb8ffbf491875a", - "reference": "d0435363362a47c14e9cf50663cb8ffbf491875a", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-mbstring": "~1.1", - "symfony/polyfill-php80": "^1.16" - }, - "require-dev": { - "predis/predis": "~1.0", - "symfony/cache": "^4.4|^5.0|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/expression-language": "^4.4|^5.0|^6.0", - "symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4", - "symfony/mime": "^4.4|^5.0|^6.0", - "symfony/rate-limiter": "^5.2|^6.0" - }, - "suggest": { - "symfony/mime": "To use the file extension guesser" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\HttpFoundation\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Defines an object-oriented layer for the HTTP specification", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/http-foundation/tree/v5.4.20" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2023-01-29T11:11:52+00:00" - }, - { - "name": "symfony/http-kernel", - "version": "v5.4.20", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-kernel.git", - "reference": "aaeec341582d3c160cc9ecfa8b2419ba6c69954e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/aaeec341582d3c160cc9ecfa8b2419ba6c69954e", - "reference": "aaeec341582d3c160cc9ecfa8b2419ba6c69954e", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "psr/log": "^1|^2", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/error-handler": "^4.4|^5.0|^6.0", - "symfony/event-dispatcher": "^5.0|^6.0", - "symfony/http-foundation": "^5.3.7|^6.0", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-php73": "^1.9", - "symfony/polyfill-php80": "^1.16" - }, - "conflict": { - "symfony/browser-kit": "<5.4", - "symfony/cache": "<5.0", - "symfony/config": "<5.0", - "symfony/console": "<4.4", - "symfony/dependency-injection": "<5.3", - "symfony/doctrine-bridge": "<5.0", - "symfony/form": "<5.0", - "symfony/http-client": "<5.0", - "symfony/mailer": "<5.0", - "symfony/messenger": "<5.0", - "symfony/translation": "<5.0", - "symfony/twig-bridge": "<5.0", - "symfony/validator": "<5.0", - "twig/twig": "<2.13" - }, - "provide": { - "psr/log-implementation": "1.0|2.0" - }, - "require-dev": { - "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^5.4|^6.0", - "symfony/config": "^5.0|^6.0", - "symfony/console": "^4.4|^5.0|^6.0", - "symfony/css-selector": "^4.4|^5.0|^6.0", - "symfony/dependency-injection": "^5.3|^6.0", - "symfony/dom-crawler": "^4.4|^5.0|^6.0", - "symfony/expression-language": "^4.4|^5.0|^6.0", - "symfony/finder": "^4.4|^5.0|^6.0", - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/process": "^4.4|^5.0|^6.0", - "symfony/routing": "^4.4|^5.0|^6.0", - "symfony/stopwatch": "^4.4|^5.0|^6.0", - "symfony/translation": "^4.4|^5.0|^6.0", - "symfony/translation-contracts": "^1.1|^2|^3", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "symfony/browser-kit": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\HttpKernel\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides a structured process for converting a Request into a Response", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/http-kernel/tree/v5.4.20" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2023-02-01T08:18:48+00:00" - }, - { - "name": "symfony/mime", - "version": "v5.4.19", - "source": { - "type": "git", - "url": "https://github.com/symfony/mime.git", - "reference": "a858429a9c704edc53fe057228cf9ca282ba48eb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/a858429a9c704edc53fe057228cf9ca282ba48eb", - "reference": "a858429a9c704edc53fe057228cf9ca282ba48eb", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-intl-idn": "^1.10", - "symfony/polyfill-mbstring": "^1.0", - "symfony/polyfill-php80": "^1.16" - }, - "conflict": { - "egulias/email-validator": "~3.0.0", - "phpdocumentor/reflection-docblock": "<3.2.2", - "phpdocumentor/type-resolver": "<1.4.0", - "symfony/mailer": "<4.4", - "symfony/serializer": "<5.4.14|>=6.0,<6.0.14|>=6.1,<6.1.6" - }, - "require-dev": { - "egulias/email-validator": "^2.1.10|^3.1|^4", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/property-access": "^4.4|^5.1|^6.0", - "symfony/property-info": "^4.4|^5.1|^6.0", - "symfony/serializer": "^5.4.14|~6.0.14|^6.1.6" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Mime\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Allows manipulating MIME messages", - "homepage": "https://symfony.com", - "keywords": [ - "mime", - "mime-type" - ], - "support": { - "source": "https://github.com/symfony/mime/tree/v5.4.19" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2023-01-09T05:43:46+00:00" - }, - { - "name": "symfony/options-resolver", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/options-resolver.git", - "reference": "51f7006670febe4cbcbae177cbffe93ff833250d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/51f7006670febe4cbcbae177cbffe93ff833250d", - "reference": "51f7006670febe4cbcbae177cbffe93ff833250d", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/deprecation-contracts": "^2.1|^3" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\OptionsResolver\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides an improved replacement for the array_replace PHP function", - "homepage": "https://symfony.com", - "keywords": [ - "config", - "configuration", - "options" - ], - "support": { - "source": "https://github.com/symfony/options-resolver/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:55:41+00:00" - }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.27.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "5bbc823adecdae860bb64756d639ecfec17b050a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/5bbc823adecdae860bb64756d639ecfec17b050a", - "reference": "5bbc823adecdae860bb64756d639ecfec17b050a", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-ctype": "*" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Gert de Pagter", - "email": "BackEndTea@gmail.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for ctype functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "ctype", - "polyfill", - "portable" - ], - "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.27.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-11-03T14:55:06+00:00" - }, - { - "name": "symfony/polyfill-iconv", - "version": "v1.26.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-iconv.git", - "reference": "143f1881e655bebca1312722af8068de235ae5dc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/143f1881e655bebca1312722af8068de235ae5dc", - "reference": "143f1881e655bebca1312722af8068de235ae5dc", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-iconv": "*" - }, - "suggest": { - "ext-iconv": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.26-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Iconv\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for the Iconv extension", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "iconv", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-iconv/tree/v1.26.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-05-24T11:49:31+00:00" - }, - { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.27.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "511a08c03c1960e08a883f4cffcacd219b758354" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/511a08c03c1960e08a883f4cffcacd219b758354", - "reference": "511a08c03c1960e08a883f4cffcacd219b758354", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Intl\\Grapheme\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for intl's grapheme_* functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "grapheme", - "intl", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.27.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-11-03T14:55:06+00:00" - }, - { - "name": "symfony/polyfill-intl-idn", - "version": "v1.27.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "639084e360537a19f9ee352433b84ce831f3d2da" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/639084e360537a19f9ee352433b84ce831f3d2da", - "reference": "639084e360537a19f9ee352433b84ce831f3d2da", - "shasum": "" - }, - "require": { - "php": ">=7.1", - "symfony/polyfill-intl-normalizer": "^1.10", - "symfony/polyfill-php72": "^1.10" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Intl\\Idn\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Laurent Bassin", - "email": "laurent@bassin.info" - }, - { - "name": "Trevor Rowbotham", - "email": "trevor.rowbotham@pm.me" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "idn", - "intl", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.27.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-11-03T14:55:06+00:00" - }, - { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.27.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/19bd1e4fcd5b91116f14d8533c57831ed00571b6", - "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Intl\\Normalizer\\": "" - }, - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for intl's Normalizer class and related functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "intl", - "normalizer", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.27.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-11-03T14:55:06+00:00" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.27.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/8ad114f6b39e2c98a8b0e3bd907732c207c2b534", - "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-mbstring": "*" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for the Mbstring extension", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "mbstring", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.27.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-11-03T14:55:06+00:00" - }, - { - "name": "symfony/polyfill-php72", - "version": "v1.27.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "869329b1e9894268a8a61dabb69153029b7a8c97" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/869329b1e9894268a8a61dabb69153029b7a8c97", - "reference": "869329b1e9894268a8a61dabb69153029b7a8c97", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Php72\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php72/tree/v1.27.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-11-03T14:55:06+00:00" - }, - { - "name": "symfony/polyfill-php73", - "version": "v1.27.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "9e8ecb5f92152187c4799efd3c96b78ccab18ff9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/9e8ecb5f92152187c4799efd3c96b78ccab18ff9", - "reference": "9e8ecb5f92152187c4799efd3c96b78ccab18ff9", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Php73\\": "" - }, - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php73/tree/v1.27.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-11-03T14:55:06+00:00" - }, - { - "name": "symfony/polyfill-php80", - "version": "v1.27.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", - "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Php80\\": "" - }, - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ion Bazan", - "email": "ion.bazan@gmail.com" - }, - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.27.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-11-03T14:55:06+00:00" - }, - { - "name": "symfony/polyfill-php81", - "version": "v1.26.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "13f6d1271c663dc5ae9fb843a8f16521db7687a1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/13f6d1271c663dc5ae9fb843a8f16521db7687a1", - "reference": "13f6d1271c663dc5ae9fb843a8f16521db7687a1", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.26-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Php81\\": "" - }, - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php81/tree/v1.26.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-05-24T11:49:31+00:00" - }, - { - "name": "symfony/polyfill-uuid", - "version": "v1.26.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-uuid.git", - "reference": "a41886c1c81dc075a09c71fe6db5b9d68c79de23" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/a41886c1c81dc075a09c71fe6db5b9d68c79de23", - "reference": "a41886c1c81dc075a09c71fe6db5b9d68c79de23", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-uuid": "*" - }, - "suggest": { - "ext-uuid": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.26-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Uuid\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Grégoire Pineau", - "email": "lyrixx@lyrixx.info" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for uuid functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "uuid" - ], - "support": { - "source": "https://github.com/symfony/polyfill-uuid/tree/v1.26.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-05-24T11:49:31+00:00" - }, - { - "name": "symfony/process", - "version": "v5.4.11", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "6e75fe6874cbc7e4773d049616ab450eff537bf1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/6e75fe6874cbc7e4773d049616ab450eff537bf1", - "reference": "6e75fe6874cbc7e4773d049616ab450eff537bf1", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/polyfill-php80": "^1.16" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Process\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Executes commands in sub-processes", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/process/tree/v5.4.11" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-06-27T16:58:25+00:00" - }, - { - "name": "symfony/psr-http-message-bridge", - "version": "v2.1.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/psr-http-message-bridge.git", - "reference": "22b37c8a3f6b5d94e9cdbd88e1270d96e2f97b34" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/22b37c8a3f6b5d94e9cdbd88e1270d96e2f97b34", - "reference": "22b37c8a3f6b5d94e9cdbd88e1270d96e2f97b34", - "shasum": "" - }, - "require": { - "php": ">=7.1", - "psr/http-message": "^1.0", - "symfony/http-foundation": "^4.4 || ^5.0 || ^6.0" - }, - "require-dev": { - "nyholm/psr7": "^1.1", - "psr/log": "^1.1 || ^2 || ^3", - "symfony/browser-kit": "^4.4 || ^5.0 || ^6.0", - "symfony/config": "^4.4 || ^5.0 || ^6.0", - "symfony/event-dispatcher": "^4.4 || ^5.0 || ^6.0", - "symfony/framework-bundle": "^4.4 || ^5.0 || ^6.0", - "symfony/http-kernel": "^4.4 || ^5.0 || ^6.0", - "symfony/phpunit-bridge": "^5.4@dev || ^6.0" - }, - "suggest": { - "nyholm/psr7": "For a super lightweight PSR-7/17 implementation" - }, - "type": "symfony-bridge", - "extra": { - "branch-alias": { - "dev-main": "2.1-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Bridge\\PsrHttpMessage\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" - } - ], - "description": "PSR HTTP message bridge", - "homepage": "http://symfony.com", - "keywords": [ - "http", - "http-message", - "psr-17", - "psr-7" - ], - "support": { - "issues": "https://github.com/symfony/psr-http-message-bridge/issues", - "source": "https://github.com/symfony/psr-http-message-bridge/tree/v2.1.2" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-11-05T13:13:39+00:00" - }, - { - "name": "symfony/routing", - "version": "v5.4.11", - "source": { - "type": "git", - "url": "https://github.com/symfony/routing.git", - "reference": "3e01ccd9b2a3a4167ba2b3c53612762300300226" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/3e01ccd9b2a3a4167ba2b3c53612762300300226", - "reference": "3e01ccd9b2a3a4167ba2b3c53612762300300226", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-php80": "^1.16" - }, - "conflict": { - "doctrine/annotations": "<1.12", - "symfony/config": "<5.3", - "symfony/dependency-injection": "<4.4", - "symfony/yaml": "<4.4" - }, - "require-dev": { - "doctrine/annotations": "^1.12", - "psr/log": "^1|^2|^3", - "symfony/config": "^5.3|^6.0", - "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/expression-language": "^4.4|^5.0|^6.0", - "symfony/http-foundation": "^4.4|^5.0|^6.0", - "symfony/yaml": "^4.4|^5.0|^6.0" - }, - "suggest": { - "symfony/config": "For using the all-in-one router or any loader", - "symfony/expression-language": "For using expression matching", - "symfony/http-foundation": "For using a Symfony Request object", - "symfony/yaml": "For using the YAML loader" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Routing\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Maps an HTTP request to a set of configuration variables", - "homepage": "https://symfony.com", - "keywords": [ - "router", - "routing", - "uri", - "url" - ], - "support": { - "source": "https://github.com/symfony/routing/tree/v5.4.11" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-07-20T13:00:38+00:00" - }, - { - "name": "symfony/service-contracts", - "version": "v2.5.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/4b426aac47d6427cc1a1d0f7e2ac724627f5966c", - "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "psr/container": "^1.1", - "symfony/deprecation-contracts": "^2.1|^3" - }, - "conflict": { - "ext-psr": "<1.1|>=2" - }, - "suggest": { - "symfony/service-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.5-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Service\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Generic abstractions related to writing services", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "support": { - "source": "https://github.com/symfony/service-contracts/tree/v2.5.2" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-05-30T19:17:29+00:00" - }, - { - "name": "symfony/stopwatch", - "version": "v6.0.5", - "source": { - "type": "git", - "url": "https://github.com/symfony/stopwatch.git", - "reference": "f2c1780607ec6502f2121d9729fd8150a655d337" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/f2c1780607ec6502f2121d9729fd8150a655d337", - "reference": "f2c1780607ec6502f2121d9729fd8150a655d337", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/service-contracts": "^1|^2|^3" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Stopwatch\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides a way to profile code", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/stopwatch/tree/v6.0.5" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-02-21T17:15:17+00:00" - }, - { - "name": "symfony/string", - "version": "v6.0.19", - "source": { - "type": "git", - "url": "https://github.com/symfony/string.git", - "reference": "d9e72497367c23e08bf94176d2be45b00a9d232a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/d9e72497367c23e08bf94176d2be45b00a9d232a", - "reference": "d9e72497367c23e08bf94176d2be45b00a9d232a", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/translation-contracts": "<2.0" - }, - "require-dev": { - "symfony/error-handler": "^5.4|^6.0", - "symfony/http-client": "^5.4|^6.0", - "symfony/translation-contracts": "^2.0|^3.0", - "symfony/var-exporter": "^5.4|^6.0" - }, - "type": "library", - "autoload": { - "files": [ - "Resources/functions.php" - ], - "psr-4": { - "Symfony\\Component\\String\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", - "homepage": "https://symfony.com", - "keywords": [ - "grapheme", - "i18n", - "string", - "unicode", - "utf-8", - "utf8" - ], - "support": { - "source": "https://github.com/symfony/string/tree/v6.0.19" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2023-01-01T08:36:10+00:00" - }, - { - "name": "symfony/translation", - "version": "v6.0.12", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "5e71973b4991e141271465dacf4bf9e719941424" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/5e71973b4991e141271465dacf4bf9e719941424", - "reference": "5e71973b4991e141271465dacf4bf9e719941424", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^2.3|^3.0" - }, - "conflict": { - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/http-kernel": "<5.4", - "symfony/twig-bundle": "<5.4", - "symfony/yaml": "<5.4" - }, - "provide": { - "symfony/translation-implementation": "2.3|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2.0|^3.0", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/intl": "^5.4|^6.0", - "symfony/polyfill-intl-icu": "^1.21", - "symfony/service-contracts": "^1.1.2|^2|^3", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "psr/log-implementation": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" - }, - "type": "library", - "autoload": { - "files": [ - "Resources/functions.php" - ], - "psr-4": { - "Symfony\\Component\\Translation\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools to internationalize your application", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/translation/tree/v6.0.12" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-08-02T16:01:06+00:00" - }, - { - "name": "symfony/translation-contracts", - "version": "v3.0.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation-contracts.git", - "reference": "acbfbb274e730e5a0236f619b6168d9dedb3e282" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/acbfbb274e730e5a0236f619b6168d9dedb3e282", - "reference": "acbfbb274e730e5a0236f619b6168d9dedb3e282", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "suggest": { - "symfony/translation-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Translation\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Generic abstractions related to translation", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v3.0.2" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-06-27T17:10:44+00:00" - }, - { - "name": "symfony/var-dumper", - "version": "v5.4.19", - "source": { - "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "2944bbc23f5f8da2b962fbcbf7c4a6109b2f4b7b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/2944bbc23f5f8da2b962fbcbf7c4a6109b2f4b7b", - "reference": "2944bbc23f5f8da2b962fbcbf7c4a6109b2f4b7b", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "^1.16" - }, - "conflict": { - "phpunit/phpunit": "<5.4.3", - "symfony/console": "<4.4" - }, - "require-dev": { - "ext-iconv": "*", - "symfony/console": "^4.4|^5.0|^6.0", - "symfony/process": "^4.4|^5.0|^6.0", - "symfony/uid": "^5.1|^6.0", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-intl": "To show region name in time zone dump", - "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" - }, - "bin": [ - "Resources/bin/var-dump-server" - ], - "type": "library", - "autoload": { - "files": [ - "Resources/functions/dump.php" - ], - "psr-4": { - "Symfony\\Component\\VarDumper\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides mechanisms for walking through any arbitrary PHP variable", - "homepage": "https://symfony.com", - "keywords": [ - "debug", - "dump" - ], - "support": { - "source": "https://github.com/symfony/var-dumper/tree/v5.4.19" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2023-01-16T10:52:33+00:00" - }, - { - "name": "symfony/yaml", - "version": "v5.4.11", - "source": { - "type": "git", - "url": "https://github.com/symfony/yaml.git", - "reference": "05d4ea560f3402c6c116afd99fdc66e60eda227e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/05d4ea560f3402c6c116afd99fdc66e60eda227e", - "reference": "05d4ea560f3402c6c116afd99fdc66e60eda227e", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "symfony/console": "<5.3" - }, - "require-dev": { - "symfony/console": "^5.3|^6.0" - }, - "suggest": { - "symfony/console": "For validating YAML files using the lint command" - }, - "bin": [ - "Resources/bin/yaml-lint" - ], - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Yaml\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Loads and dumps YAML files", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/yaml/tree/v5.4.11" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-06-27T16:58:25+00:00" - }, - { - "name": "tijsverkoyen/css-to-inline-styles", - "version": "2.2.5", - "source": { - "type": "git", - "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", - "reference": "4348a3a06651827a27d989ad1d13efec6bb49b19" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/4348a3a06651827a27d989ad1d13efec6bb49b19", - "reference": "4348a3a06651827a27d989ad1d13efec6bb49b19", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "php": "^5.5 || ^7.0 || ^8.0", - "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.2.x-dev" - } - }, - "autoload": { - "psr-4": { - "TijsVerkoyen\\CssToInlineStyles\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Tijs Verkoyen", - "email": "css_to_inline_styles@verkoyen.eu", - "role": "Developer" - } - ], - "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", - "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", - "support": { - "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", - "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.5" - }, - "time": "2022-09-12T13:28:28+00:00" - }, - { - "name": "vinkla/hashids", - "version": "9.1.0", - "source": { - "type": "git", - "url": "https://github.com/vinkla/laravel-hashids.git", - "reference": "cb0086db96cdb49816465adc97e3a024c8ee9767" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/vinkla/laravel-hashids/zipball/cb0086db96cdb49816465adc97e3a024c8ee9767", - "reference": "cb0086db96cdb49816465adc97e3a024c8ee9767", - "shasum": "" - }, - "require": { - "graham-campbell/manager": "^4.4", - "hashids/hashids": "^4.1", - "illuminate/contracts": "^8.0", - "illuminate/support": "^8.0", - "php": "^7.3 || ^8.0" - }, - "require-dev": { - "graham-campbell/analyzer": "^3.0", - "graham-campbell/testbench": "^5.4", - "mockery/mockery": "^1.3", - "phpunit/phpunit": "^9.3", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.1-dev" - }, - "laravel": { - "providers": [ - "Vinkla\\Hashids\\HashidsServiceProvider" - ], - "aliases": { - "Hashids": "Vinkla\\Hashids\\Facades\\Hashids" - } - } - }, - "autoload": { - "psr-4": { - "Vinkla\\Hashids\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Vincent Klaiber", - "email": "hello@doubledip.se" - } - ], - "description": "A Hashids bridge for Laravel", - "keywords": [ - "hashids", - "laravel" - ], - "support": { - "issues": "https://github.com/vinkla/laravel-hashids/issues", - "source": "https://github.com/vinkla/laravel-hashids/tree/9.1.0" - }, - "time": "2020-11-26T19:38:22+00:00" - }, - { - "name": "vlucas/phpdotenv", - "version": "v5.4.1", - "source": { - "type": "git", - "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/264dce589e7ce37a7ba99cb901eed8249fbec92f", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f", - "shasum": "" - }, - "require": { - "ext-pcre": "*", - "graham-campbell/result-type": "^1.0.2", - "php": "^7.1.3 || ^8.0", - "phpoption/phpoption": "^1.8", - "symfony/polyfill-ctype": "^1.23", - "symfony/polyfill-mbstring": "^1.23.1", - "symfony/polyfill-php80": "^1.23.1" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "ext-filter": "*", - "phpunit/phpunit": "^7.5.20 || ^8.5.21 || ^9.5.10" - }, - "suggest": { - "ext-filter": "Required to use the boolean validator." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.4-dev" - } - }, - "autoload": { - "psr-4": { - "Dotenv\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" - }, - { - "name": "Vance Lucas", - "email": "vance@vancelucas.com", - "homepage": "https://github.com/vlucas" - } - ], - "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.", - "keywords": [ - "dotenv", - "env", - "environment" - ], - "support": { - "issues": "https://github.com/vlucas/phpdotenv/issues", - "source": "https://github.com/vlucas/phpdotenv/tree/v5.4.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", - "type": "tidelift" - } - ], - "time": "2021-12-12T23:22:04+00:00" - }, - { - "name": "voku/portable-ascii", - "version": "1.6.1", - "source": { - "type": "git", - "url": "https://github.com/voku/portable-ascii.git", - "reference": "87337c91b9dfacee02452244ee14ab3c43bc485a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/voku/portable-ascii/zipball/87337c91b9dfacee02452244ee14ab3c43bc485a", - "reference": "87337c91b9dfacee02452244ee14ab3c43bc485a", - "shasum": "" - }, - "require": { - "php": ">=7.0.0" - }, - "require-dev": { - "phpunit/phpunit": "~6.0 || ~7.0 || ~9.0" - }, - "suggest": { - "ext-intl": "Use Intl for transliterator_transliterate() support" - }, - "type": "library", - "autoload": { - "psr-4": { - "voku\\": "src/voku/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Lars Moelleken", - "homepage": "http://www.moelleken.org/" - } - ], - "description": "Portable ASCII library - performance optimized (ascii) string functions for php.", - "homepage": "https://github.com/voku/portable-ascii", - "keywords": [ - "ascii", - "clean", - "php" - ], - "support": { - "issues": "https://github.com/voku/portable-ascii/issues", - "source": "https://github.com/voku/portable-ascii/tree/1.6.1" - }, - "funding": [ - { - "url": "https://www.paypal.me/moelleken", - "type": "custom" - }, - { - "url": "https://github.com/voku", - "type": "github" - }, - { - "url": "https://opencollective.com/portable-ascii", - "type": "open_collective" - }, - { - "url": "https://www.patreon.com/voku", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/voku/portable-ascii", - "type": "tidelift" - } - ], - "time": "2022-01-24T18:55:24+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.11.0", - "source": { - "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991", - "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991", - "shasum": "" - }, - "require": { - "ext-ctype": "*", - "php": "^7.2 || ^8.0" - }, - "conflict": { - "phpstan/phpstan": "<0.12.20", - "vimeo/psalm": "<4.6.1 || 4.6.2" - }, - "require-dev": { - "phpunit/phpunit": "^8.5.13" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.10-dev" - } - }, - "autoload": { - "psr-4": { - "Webmozart\\Assert\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - } - ], - "description": "Assertions to validate method input/output with nice error messages.", - "keywords": [ - "assert", - "check", - "validate" - ], - "support": { - "issues": "https://github.com/webmozarts/assert/issues", - "source": "https://github.com/webmozarts/assert/tree/1.11.0" - }, - "time": "2022-06-03T18:03:27+00:00" - }, - { - "name": "zbateson/mail-mime-parser", - "version": "2.2.2", - "source": { - "type": "git", - "url": "https://github.com/zbateson/mail-mime-parser.git", - "reference": "318cd809afebe48e8fb41625b05b25470fb3fa86" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/zbateson/mail-mime-parser/zipball/318cd809afebe48e8fb41625b05b25470fb3fa86", - "reference": "318cd809afebe48e8fb41625b05b25470fb3fa86", - "shasum": "" - }, - "require": { - "guzzlehttp/psr7": "^1.7.0|^2.0", - "php": ">=5.4", - "pimple/pimple": "^3.0", - "zbateson/mb-wrapper": "^1.0.1", - "zbateson/stream-decorators": "^1.0.6" - }, - "require-dev": { - "mikey179/vfsstream": "^1.6.0", - "sanmai/phpunit-legacy-adapter": "^6.3 || ^8.2" - }, - "suggest": { - "ext-iconv": "For best support/performance", - "ext-mbstring": "For best support/performance" - }, - "type": "library", - "autoload": { - "psr-4": { - "ZBateson\\MailMimeParser\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-2-Clause" - ], - "authors": [ - { - "name": "Zaahid Bateson" - }, - { - "name": "Contributors", - "homepage": "https://github.com/zbateson/mail-mime-parser/graphs/contributors" - } - ], - "description": "MIME email message parser", - "homepage": "https://mail-mime-parser.org", - "keywords": [ - "MimeMailParser", - "email", - "mail", - "mailparse", - "mime", - "mimeparse", - "parser", - "php-imap" - ], - "support": { - "docs": "https://mail-mime-parser.org/#usage-guide", - "issues": "https://github.com/zbateson/mail-mime-parser/issues", - "source": "https://github.com/zbateson/mail-mime-parser" - }, - "funding": [ - { - "url": "https://github.com/zbateson", - "type": "github" - } - ], - "time": "2022-09-01T15:59:13+00:00" - }, - { - "name": "zbateson/mb-wrapper", - "version": "1.1.2", - "source": { - "type": "git", - "url": "https://github.com/zbateson/mb-wrapper.git", - "reference": "5d9d190ef18ce6d424e3ac6f5ebe13901f92b74a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/zbateson/mb-wrapper/zipball/5d9d190ef18ce6d424e3ac6f5ebe13901f92b74a", - "reference": "5d9d190ef18ce6d424e3ac6f5ebe13901f92b74a", - "shasum": "" - }, - "require": { - "php": ">=5.4", - "symfony/polyfill-iconv": "^1.9", - "symfony/polyfill-mbstring": "^1.9" - }, - "require-dev": { - "sanmai/phpunit-legacy-adapter": "^6.3 || ^8" - }, - "suggest": { - "ext-iconv": "For best support/performance", - "ext-mbstring": "For best support/performance" - }, - "type": "library", - "autoload": { - "psr-4": { - "ZBateson\\MbWrapper\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-2-Clause" - ], - "authors": [ - { - "name": "Zaahid Bateson" - } - ], - "description": "Wrapper for mbstring with fallback to iconv for encoding conversion and string manipulation", - "keywords": [ - "charset", - "encoding", - "http", - "iconv", - "mail", - "mb", - "mb_convert_encoding", - "mbstring", - "mime", - "multibyte", - "string" - ], - "support": { - "issues": "https://github.com/zbateson/mb-wrapper/issues", - "source": "https://github.com/zbateson/mb-wrapper/tree/1.1.2" - }, - "funding": [ - { - "url": "https://github.com/zbateson", - "type": "github" - } - ], - "time": "2022-05-26T15:55:05+00:00" - }, - { - "name": "zbateson/stream-decorators", - "version": "1.0.7", - "source": { - "type": "git", - "url": "https://github.com/zbateson/stream-decorators.git", - "reference": "8f8ca208572963258b7e6d91106181706deacd10" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/zbateson/stream-decorators/zipball/8f8ca208572963258b7e6d91106181706deacd10", - "reference": "8f8ca208572963258b7e6d91106181706deacd10", - "shasum": "" - }, - "require": { - "guzzlehttp/psr7": "^1.7.0|^2.0", - "php": ">=5.4", - "zbateson/mb-wrapper": "^1.0.0" - }, - "require-dev": { - "sanmai/phpunit-legacy-adapter": "^6.3 || ^8" - }, - "type": "library", - "autoload": { - "psr-4": { - "ZBateson\\StreamDecorators\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-2-Clause" - ], - "authors": [ - { - "name": "Zaahid Bateson" - } - ], - "description": "PHP psr7 stream decorators for mime message part streams", - "keywords": [ - "base64", - "charset", - "decorators", - "mail", - "mime", - "psr7", - "quoted-printable", - "stream", - "uuencode" - ], - "support": { - "issues": "https://github.com/zbateson/stream-decorators/issues", - "source": "https://github.com/zbateson/stream-decorators/tree/1.0.7" - }, - "funding": [ - { - "url": "https://github.com/zbateson", - "type": "github" - } - ], - "time": "2022-09-08T15:44:55+00:00" - } - ], - "packages-dev": [ - { - "name": "doctrine/instantiator", - "version": "1.5.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "0a0fa9780f5d4e507415a065172d26a98d02047b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/0a0fa9780f5d4e507415a065172d26a98d02047b", - "reference": "0a0fa9780f5d4e507415a065172d26a98d02047b", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^9 || ^11", - "ext-pdo": "*", - "ext-phar": "*", - "phpbench/phpbench": "^0.16 || ^1", - "phpstan/phpstan": "^1.4", - "phpstan/phpstan-phpunit": "^1", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.30 || ^5.4" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "https://ocramius.github.io/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://www.doctrine-project.org/projects/instantiator.html", - "keywords": [ - "constructor", - "instantiate" - ], - "support": { - "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.5.0" - }, - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator", - "type": "tidelift" - } - ], - "time": "2022-12-30T00:15:36+00:00" - }, - { - "name": "facade/flare-client-php", - "version": "1.10.0", - "source": { - "type": "git", - "url": "https://github.com/facade/flare-client-php.git", - "reference": "213fa2c69e120bca4c51ba3e82ed1834ef3f41b8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/facade/flare-client-php/zipball/213fa2c69e120bca4c51ba3e82ed1834ef3f41b8", - "reference": "213fa2c69e120bca4c51ba3e82ed1834ef3f41b8", - "shasum": "" - }, - "require": { - "facade/ignition-contracts": "~1.0", - "illuminate/pipeline": "^5.5|^6.0|^7.0|^8.0", - "php": "^7.1|^8.0", - "symfony/http-foundation": "^3.3|^4.1|^5.0", - "symfony/mime": "^3.4|^4.0|^5.1", - "symfony/var-dumper": "^3.4|^4.0|^5.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^2.14", - "phpunit/phpunit": "^7.5", - "spatie/phpunit-snapshot-assertions": "^2.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "files": [ - "src/helpers.php" - ], - "psr-4": { - "Facade\\FlareClient\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Send PHP errors to Flare", - "homepage": "https://github.com/facade/flare-client-php", - "keywords": [ - "exception", - "facade", - "flare", - "reporting" - ], - "support": { - "issues": "https://github.com/facade/flare-client-php/issues", - "source": "https://github.com/facade/flare-client-php/tree/1.10.0" - }, - "funding": [ - { - "url": "https://github.com/spatie", - "type": "github" - } - ], - "time": "2022-08-09T11:23:57+00:00" - }, - { - "name": "facade/ignition", - "version": "2.17.6", - "source": { - "type": "git", - "url": "https://github.com/facade/ignition.git", - "reference": "6acd82e986a2ecee89e2e68adfc30a1936d1ab7c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/facade/ignition/zipball/6acd82e986a2ecee89e2e68adfc30a1936d1ab7c", - "reference": "6acd82e986a2ecee89e2e68adfc30a1936d1ab7c", - "shasum": "" - }, - "require": { - "ext-curl": "*", - "ext-json": "*", - "ext-mbstring": "*", - "facade/flare-client-php": "^1.9.1", - "facade/ignition-contracts": "^1.0.2", - "illuminate/support": "^7.0|^8.0", - "monolog/monolog": "^2.0", - "php": "^7.2.5|^8.0", - "symfony/console": "^5.0", - "symfony/var-dumper": "^5.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^2.14", - "livewire/livewire": "^2.4", - "mockery/mockery": "^1.3", - "orchestra/testbench": "^5.0|^6.0", - "psalm/plugin-laravel": "^1.2" - }, - "suggest": { - "laravel/telescope": "^3.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.x-dev" - }, - "laravel": { - "providers": [ - "Facade\\Ignition\\IgnitionServiceProvider" - ], - "aliases": { - "Flare": "Facade\\Ignition\\Facades\\Flare" - } - } - }, - "autoload": { - "files": [ - "src/helpers.php" - ], - "psr-4": { - "Facade\\Ignition\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "A beautiful error page for Laravel applications.", - "homepage": "https://github.com/facade/ignition", - "keywords": [ - "error", - "flare", - "laravel", - "page" - ], - "support": { - "docs": "https://flareapp.io/docs/ignition-for-laravel/introduction", - "forum": "https://twitter.com/flareappio", - "issues": "https://github.com/facade/ignition/issues", - "source": "https://github.com/facade/ignition" - }, - "time": "2022-06-30T18:26:59+00:00" - }, - { - "name": "facade/ignition-contracts", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/facade/ignition-contracts.git", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/facade/ignition-contracts/zipball/3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^v2.15.8", - "phpunit/phpunit": "^9.3.11", - "vimeo/psalm": "^3.17.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Facade\\IgnitionContracts\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "homepage": "https://flareapp.io", - "role": "Developer" - } - ], - "description": "Solution contracts for Ignition", - "homepage": "https://github.com/facade/ignition-contracts", - "keywords": [ - "contracts", - "flare", - "ignition" - ], - "support": { - "issues": "https://github.com/facade/ignition-contracts/issues", - "source": "https://github.com/facade/ignition-contracts/tree/1.0.2" - }, - "time": "2020-10-16T08:27:54+00:00" - }, - { - "name": "filp/whoops", - "version": "2.14.5", - "source": { - "type": "git", - "url": "https://github.com/filp/whoops.git", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "shasum": "" - }, - "require": { - "php": "^5.5.9 || ^7.0 || ^8.0", - "psr/log": "^1.0.1 || ^2.0 || ^3.0" - }, - "require-dev": { - "mockery/mockery": "^0.9 || ^1.0", - "phpunit/phpunit": "^4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.3", - "symfony/var-dumper": "^2.6 || ^3.0 || ^4.0 || ^5.0" - }, - "suggest": { - "symfony/var-dumper": "Pretty print complex values better with var-dumper available", - "whoops/soap": "Formats errors as SOAP responses" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.7-dev" - } - }, - "autoload": { - "psr-4": { - "Whoops\\": "src/Whoops/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Filipe Dobreira", - "homepage": "https://github.com/filp", - "role": "Developer" - } - ], - "description": "php error handling for cool kids", - "homepage": "https://filp.github.io/whoops/", - "keywords": [ - "error", - "exception", - "handling", - "library", - "throwable", - "whoops" - ], - "support": { - "issues": "https://github.com/filp/whoops/issues", - "source": "https://github.com/filp/whoops/tree/2.14.5" - }, - "funding": [ - { - "url": "https://github.com/denis-sokolov", - "type": "github" - } - ], - "time": "2022-01-07T12:00:00+00:00" - }, - { - "name": "fzaninotto/faker", - "version": "dev-master", - "source": { - "type": "git", - "url": "https://github.com/fzaninotto/Faker.git", - "reference": "5ffe7db6c80f441f150fc88008d64e64af66634b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/fzaninotto/Faker/zipball/5ffe7db6c80f441f150fc88008d64e64af66634b", - "reference": "5ffe7db6c80f441f150fc88008d64e64af66634b", - "shasum": "" - }, - "require": { - "php": "^5.3.3 || ^7.0 || ^8.0" - }, - "require-dev": { - "ext-intl": "*", - "phpunit/phpunit": "^4.8.35 || ^5.7", - "squizlabs/php_codesniffer": "^2.9.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.9-dev" - } - }, - "autoload": { - "psr-4": { - "Faker\\": "src/Faker/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "François Zaninotto" - } - ], - "description": "Faker is a PHP library that generates fake data for you.", - "keywords": [ - "data", - "faker", - "fixtures" - ], - "abandoned": true, - "time": "2020-12-11T09:59:14+00:00" - }, - { - "name": "hamcrest/hamcrest-php", - "version": "v2.0.1", - "source": { - "type": "git", - "url": "https://github.com/hamcrest/hamcrest-php.git", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "shasum": "" - }, - "require": { - "php": "^5.3|^7.0|^8.0" - }, - "replace": { - "cordoval/hamcrest-php": "*", - "davedevelopment/hamcrest-php": "*", - "kodova/hamcrest-php": "*" - }, - "require-dev": { - "phpunit/php-file-iterator": "^1.4 || ^2.0", - "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "classmap": [ - "hamcrest" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "This is the PHP port of Hamcrest Matchers", - "keywords": [ - "test" - ], - "support": { - "issues": "https://github.com/hamcrest/hamcrest-php/issues", - "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" - }, - "time": "2020-07-09T08:09:16+00:00" - }, - { - "name": "mockery/mockery", - "version": "1.5.1", - "source": { - "type": "git", - "url": "https://github.com/mockery/mockery.git", - "reference": "e92dcc83d5a51851baf5f5591d32cb2b16e3684e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/e92dcc83d5a51851baf5f5591d32cb2b16e3684e", - "reference": "e92dcc83d5a51851baf5f5591d32cb2b16e3684e", - "shasum": "" - }, - "require": { - "hamcrest/hamcrest-php": "^2.0.1", - "lib-pcre": ">=7.0", - "php": "^7.3 || ^8.0" - }, - "conflict": { - "phpunit/phpunit": "<8.0" - }, - "require-dev": { - "phpunit/phpunit": "^8.5 || ^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, - "autoload": { - "psr-0": { - "Mockery": "library/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Pádraic Brady", - "email": "padraic.brady@gmail.com", - "homepage": "http://blog.astrumfutura.com" - }, - { - "name": "Dave Marshall", - "email": "dave.marshall@atstsolutions.co.uk", - "homepage": "http://davedevelopment.co.uk" - } - ], - "description": "Mockery is a simple yet flexible PHP mock object framework", - "homepage": "https://github.com/mockery/mockery", - "keywords": [ - "BDD", - "TDD", - "library", - "mock", - "mock objects", - "mockery", - "stub", - "test", - "test double", - "testing" - ], - "support": { - "issues": "https://github.com/mockery/mockery/issues", - "source": "https://github.com/mockery/mockery/tree/1.5.1" - }, - "time": "2022-09-07T15:32:08+00:00" - }, - { - "name": "myclabs/deep-copy", - "version": "1.11.1", - "source": { - "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", - "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "conflict": { - "doctrine/collections": "<1.6.8", - "doctrine/common": "<2.13.3 || >=3,<3.2.2" - }, - "require-dev": { - "doctrine/collections": "^1.6.8", - "doctrine/common": "^2.13.3 || ^3.2.2", - "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" - }, - "type": "library", - "autoload": { - "files": [ - "src/DeepCopy/deep_copy.php" - ], - "psr-4": { - "DeepCopy\\": "src/DeepCopy/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Create deep copies (clones) of your objects", - "keywords": [ - "clone", - "copy", - "duplicate", - "object", - "object graph" - ], - "support": { - "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.11.1" - }, - "funding": [ - { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", - "type": "tidelift" - } - ], - "time": "2023-03-08T13:26:56+00:00" - }, - { - "name": "nunomaduro/collision", - "version": "v5.11.0", - "source": { - "type": "git", - "url": "https://github.com/nunomaduro/collision.git", - "reference": "8b610eef8582ccdc05d8f2ab23305e2d37049461" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/8b610eef8582ccdc05d8f2ab23305e2d37049461", - "reference": "8b610eef8582ccdc05d8f2ab23305e2d37049461", - "shasum": "" - }, - "require": { - "facade/ignition-contracts": "^1.0", - "filp/whoops": "^2.14.3", - "php": "^7.3 || ^8.0", - "symfony/console": "^5.0" - }, - "require-dev": { - "brianium/paratest": "^6.1", - "fideloper/proxy": "^4.4.1", - "fruitcake/laravel-cors": "^2.0.3", - "laravel/framework": "8.x-dev", - "nunomaduro/larastan": "^0.6.2", - "nunomaduro/mock-final-classes": "^1.0", - "orchestra/testbench": "^6.0", - "phpstan/phpstan": "^0.12.64", - "phpunit/phpunit": "^9.5.0" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "NunoMaduro\\Collision\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nuno Maduro", - "email": "enunomaduro@gmail.com" - } - ], - "description": "Cli error handling for console/command-line PHP applications.", - "keywords": [ - "artisan", - "cli", - "command-line", - "console", - "error", - "handling", - "laravel", - "laravel-zero", - "php", - "symfony" - ], - "support": { - "issues": "https://github.com/nunomaduro/collision/issues", - "source": "https://github.com/nunomaduro/collision" - }, - "funding": [ - { - "url": "https://www.paypal.com/paypalme/enunomaduro", - "type": "custom" - }, - { - "url": "https://github.com/nunomaduro", - "type": "github" - }, - { - "url": "https://www.patreon.com/nunomaduro", - "type": "patreon" - } - ], - "time": "2022-01-10T16:22:52+00:00" - }, - { - "name": "pestphp/pest", - "version": "v1.22.1", - "source": { - "type": "git", - "url": "https://github.com/pestphp/pest.git", - "reference": "af6240b4eed8b049ac43c91184141ee337305df7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/pestphp/pest/zipball/af6240b4eed8b049ac43c91184141ee337305df7", - "reference": "af6240b4eed8b049ac43c91184141ee337305df7", - "shasum": "" - }, - "require": { - "nunomaduro/collision": "^5.10.0|^6.0", - "pestphp/pest-plugin": "^1.0.0", - "php": "^7.3 || ^8.0", - "phpunit/phpunit": "^9.5.5" - }, - "require-dev": { - "illuminate/console": "^8.47.0", - "illuminate/support": "^8.47.0", - "laravel/dusk": "^6.15.0", - "pestphp/pest-dev-tools": "dev-master", - "pestphp/pest-plugin-parallel": "^1.0" - }, - "bin": [ - "bin/pest" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-1.x": "1.x-dev" - }, - "pest": { - "plugins": [ - "Pest\\Plugins\\Coverage", - "Pest\\Plugins\\Init", - "Pest\\Plugins\\Version", - "Pest\\Plugins\\Environment" - ] - }, - "laravel": { - "providers": [ - "Pest\\Laravel\\PestServiceProvider" - ] - } - }, - "autoload": { - "files": [ - "src/Functions.php", - "src/Pest.php" - ], - "psr-4": { - "Pest\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nuno Maduro", - "email": "enunomaduro@gmail.com" - } - ], - "description": "An elegant PHP Testing Framework.", - "keywords": [ - "framework", - "pest", - "php", - "test", - "testing", - "unit" - ], - "support": { - "issues": "https://github.com/pestphp/pest/issues", - "source": "https://github.com/pestphp/pest/tree/v1.22.1" - }, - "funding": [ - { - "url": "https://www.paypal.com/paypalme/enunomaduro", - "type": "custom" - }, - { - "url": "https://github.com/lukeraymonddowning", - "type": "github" - }, - { - "url": "https://github.com/nunomaduro", - "type": "github" - }, - { - "url": "https://github.com/octoper", - "type": "github" - }, - { - "url": "https://github.com/olivernybroe", - "type": "github" - }, - { - "url": "https://github.com/owenvoke", - "type": "github" - }, - { - "url": "https://www.patreon.com/nunomaduro", - "type": "patreon" - } - ], - "time": "2022-08-29T10:42:13+00:00" - }, - { - "name": "pestphp/pest-plugin", - "version": "v1.1.0", - "source": { - "type": "git", - "url": "https://github.com/pestphp/pest-plugin.git", - "reference": "606c5f79c6a339b49838ffbee0151ca519efe378" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/pestphp/pest-plugin/zipball/606c5f79c6a339b49838ffbee0151ca519efe378", - "reference": "606c5f79c6a339b49838ffbee0151ca519efe378", - "shasum": "" - }, - "require": { - "composer-plugin-api": "^1.1.0 || ^2.0.0", - "php": "^7.3 || ^8.0" - }, - "conflict": { - "pestphp/pest": "<1.0" - }, - "require-dev": { - "composer/composer": "^2.4.2", - "pestphp/pest": "^1.22.1", - "pestphp/pest-dev-tools": "^1.0.0" - }, - "type": "composer-plugin", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - }, - "class": "Pest\\Plugin\\Manager" - }, - "autoload": { - "psr-4": { - "Pest\\Plugin\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "The Pest plugin manager", - "keywords": [ - "framework", - "manager", - "pest", - "php", - "plugin", - "test", - "testing", - "unit" - ], - "support": { - "source": "https://github.com/pestphp/pest-plugin/tree/v1.1.0" - }, - "funding": [ - { - "url": "https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=66BYDWAT92N6L", - "type": "custom" - }, - { - "url": "https://github.com/nunomaduro", - "type": "github" - }, - { - "url": "https://www.patreon.com/nunomaduro", - "type": "patreon" - } - ], - "time": "2022-09-18T13:18:17+00:00" - }, - { - "name": "pestphp/pest-plugin-laravel", - "version": "dev-master", - "source": { - "type": "git", - "url": "https://github.com/pestphp/pest-plugin-laravel.git", - "reference": "cc9862a13c99f7a4f1e1d2fb6d91fdc517c629bf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/pestphp/pest-plugin-laravel/zipball/cc9862a13c99f7a4f1e1d2fb6d91fdc517c629bf", - "reference": "cc9862a13c99f7a4f1e1d2fb6d91fdc517c629bf", - "shasum": "" - }, - "require": { - "laravel/framework": "^7.0 || ^8.0 || ^9.0", - "pestphp/pest": "^1.7", - "php": "^7.3 || ^8.0" - }, - "require-dev": { - "orchestra/testbench": "^5.12.1 || ^6.7.2 || ^7.0", - "pestphp/pest-dev-tools": "dev-master" - }, - "default-branch": true, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "files": [ - "src/Autoload.php" - ], - "psr-4": { - "Pest\\Laravel\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "The Pest Laravel Plugin", - "keywords": [ - "framework", - "laravel", - "pest", - "php", - "test", - "testing", - "unit" - ], - "support": { - "source": "https://github.com/pestphp/pest-plugin-laravel/tree/master" - }, - "funding": [ - { - "url": "https://www.paypal.com/paypalme/enunomaduro", - "type": "custom" - }, - { - "url": "https://github.com/nunomaduro", - "type": "github" - }, - { - "url": "https://www.patreon.com/nunomaduro", - "type": "patreon" - } - ], - "time": "2022-09-18T13:00:23+00:00" - }, - { - "name": "phar-io/manifest", - "version": "2.0.3", - "source": { - "type": "git", - "url": "https://github.com/phar-io/manifest.git", - "reference": "97803eca37d319dfa7826cc2437fc020857acb53" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53", - "reference": "97803eca37d319dfa7826cc2437fc020857acb53", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-phar": "*", - "ext-xmlwriter": "*", - "phar-io/version": "^3.0.1", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - }, - { - "name": "Sebastian Heuer", - "email": "sebastian@phpeople.de", - "role": "Developer" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "Developer" - } - ], - "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", - "support": { - "issues": "https://github.com/phar-io/manifest/issues", - "source": "https://github.com/phar-io/manifest/tree/2.0.3" - }, - "time": "2021-07-20T11:28:43+00:00" - }, - { - "name": "phar-io/version", - "version": "3.2.1", - "source": { - "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", - "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - }, - { - "name": "Sebastian Heuer", - "email": "sebastian@phpeople.de", - "role": "Developer" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "Developer" - } - ], - "description": "Library for handling version information and constraints", - "support": { - "issues": "https://github.com/phar-io/version/issues", - "source": "https://github.com/phar-io/version/tree/3.2.1" - }, - "time": "2022-02-21T01:04:05+00:00" - }, - { - "name": "phpunit/php-code-coverage", - "version": "9.2.26", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "443bc6912c9bd5b409254a40f4b0f4ced7c80ea1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/443bc6912c9bd5b409254a40f4b0f4ced7c80ea1", - "reference": "443bc6912c9bd5b409254a40f4b0f4ced7c80ea1", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-xmlwriter": "*", - "nikic/php-parser": "^4.15", - "php": ">=7.3", - "phpunit/php-file-iterator": "^3.0.3", - "phpunit/php-text-template": "^2.0.2", - "sebastian/code-unit-reverse-lookup": "^2.0.2", - "sebastian/complexity": "^2.0", - "sebastian/environment": "^5.1.2", - "sebastian/lines-of-code": "^1.0.3", - "sebastian/version": "^3.0.1", - "theseer/tokenizer": "^1.2.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcov": "PHP extension that provides line coverage", - "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.2-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", - "homepage": "https://github.com/sebastianbergmann/php-code-coverage", - "keywords": [ - "coverage", - "testing", - "xunit" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.26" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-03-06T12:58:08+00:00" - }, - { - "name": "phpunit/php-file-iterator", - "version": "3.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "FilterIterator implementation that filters files based on a list of suffixes.", - "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", - "keywords": [ - "filesystem", - "iterator" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-02T12:48:52+00:00" - }, - { - "name": "phpunit/php-invoker", - "version": "3.1.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "ext-pcntl": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcntl": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Invoke callables with a timeout", - "homepage": "https://github.com/sebastianbergmann/php-invoker/", - "keywords": [ - "process" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-invoker/issues", - "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:58:55+00:00" - }, - { - "name": "phpunit/php-text-template", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T05:33:50+00:00" - }, - { - "name": "phpunit/php-timer", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Utility class for timing", - "homepage": "https://github.com/sebastianbergmann/php-timer/", - "keywords": [ - "timer" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-timer/issues", - "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:16:10+00:00" - }, - { - "name": "phpunit/phpunit", - "version": "9.6.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "b65d59a059d3004a040c16a82e07bbdf6cfdd115" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/b65d59a059d3004a040c16a82e07bbdf6cfdd115", - "reference": "b65d59a059d3004a040c16a82e07bbdf6cfdd115", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.3.1 || ^2", - "ext-dom": "*", - "ext-json": "*", - "ext-libxml": "*", - "ext-mbstring": "*", - "ext-xml": "*", - "ext-xmlwriter": "*", - "myclabs/deep-copy": "^1.10.1", - "phar-io/manifest": "^2.0.3", - "phar-io/version": "^3.0.2", - "php": ">=7.3", - "phpunit/php-code-coverage": "^9.2.13", - "phpunit/php-file-iterator": "^3.0.5", - "phpunit/php-invoker": "^3.1.1", - "phpunit/php-text-template": "^2.0.3", - "phpunit/php-timer": "^5.0.2", - "sebastian/cli-parser": "^1.0.1", - "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.8", - "sebastian/diff": "^4.0.3", - "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.5", - "sebastian/global-state": "^5.0.1", - "sebastian/object-enumerator": "^4.0.3", - "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^3.2", - "sebastian/version": "^3.0.2" - }, - "suggest": { - "ext-soap": "To be able to generate mocks based on WSDL files", - "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" - }, - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.6-dev" - } - }, - "autoload": { - "files": [ - "src/Framework/Assert/Functions.php" - ], - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "The PHP Unit Testing framework.", - "homepage": "https://phpunit.de/", - "keywords": [ - "phpunit", - "testing", - "xunit" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.6" - }, - "funding": [ - { - "url": "https://phpunit.de/sponsors.html", - "type": "custom" - }, - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", - "type": "tidelift" - } - ], - "time": "2023-03-27T11:43:46+00:00" - }, - { - "name": "sebastian/cli-parser", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library for parsing CLI options", - "homepage": "https://github.com/sebastianbergmann/cli-parser", - "support": { - "issues": "https://github.com/sebastianbergmann/cli-parser/issues", - "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:08:49+00:00" - }, - { - "name": "sebastian/code-unit", - "version": "1.0.8", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Collection of value objects that represent the PHP code units", - "homepage": "https://github.com/sebastianbergmann/code-unit", - "support": { - "issues": "https://github.com/sebastianbergmann/code-unit/issues", - "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:08:54+00:00" - }, - { - "name": "sebastian/code-unit-reverse-lookup", - "version": "2.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Looks up which function or method a line of code belongs to", - "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", - "support": { - "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", - "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:30:19+00:00" - }, - { - "name": "sebastian/comparator", - "version": "4.0.8", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "fa0f136dd2334583309d32b62544682ee972b51a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/fa0f136dd2334583309d32b62544682ee972b51a", - "reference": "fa0f136dd2334583309d32b62544682ee972b51a", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/diff": "^4.0", - "sebastian/exporter": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" - } - ], - "description": "Provides the functionality to compare PHP values for equality", - "homepage": "https://github.com/sebastianbergmann/comparator", - "keywords": [ - "comparator", - "compare", - "equality" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/comparator/issues", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.8" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2022-09-14T12:41:17+00:00" - }, - { - "name": "sebastian/complexity", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.7", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library for calculating the complexity of PHP code units", - "homepage": "https://github.com/sebastianbergmann/complexity", - "support": { - "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:52:27+00:00" - }, - { - "name": "sebastian/environment", - "version": "5.1.5", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", - "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-posix": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides functionality to handle HHVM/PHP environments", - "homepage": "http://www.github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.5" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-02-03T06:03:51+00:00" - }, - { - "name": "sebastian/exporter", - "version": "4.0.5", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d", - "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - } - ], - "description": "Provides the functionality to export PHP variables for visualization", - "homepage": "https://www.github.com/sebastianbergmann/exporter", - "keywords": [ - "export", - "exporter" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.5" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2022-09-14T06:03:37+00:00" - }, - { - "name": "sebastian/global-state", - "version": "5.0.5", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/0ca8db5a5fc9c8646244e629625ac486fa286bf2", - "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-dom": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-uopz": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.5" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2022-02-14T08:28:10+00:00" - }, - { - "name": "sebastian/lines-of-code", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.6", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library for counting the lines of code in PHP source code", - "homepage": "https://github.com/sebastianbergmann/lines-of-code", - "support": { - "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-11-28T06:42:11+00:00" - }, - { - "name": "sebastian/object-enumerator", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Traverses array structures and object graphs to enumerate all referenced objects", - "homepage": "https://github.com/sebastianbergmann/object-enumerator/", - "support": { - "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", - "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:12:34+00:00" - }, - { - "name": "sebastian/object-reflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Allows reflection of object attributes, including inherited and non-public ones", - "homepage": "https://github.com/sebastianbergmann/object-reflector/", - "support": { - "issues": "https://github.com/sebastianbergmann/object-reflector/issues", - "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:14:26+00:00" - }, - { - "name": "sebastian/recursion-context", - "version": "4.0.5", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", - "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" - } - ], - "description": "Provides functionality to recursively process PHP variables", - "homepage": "https://github.com/sebastianbergmann/recursion-context", - "support": { - "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.5" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-02-03T06:07:39+00:00" - }, - { - "name": "sebastian/resource-operations", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "support": { - "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:45:17+00:00" - }, - { - "name": "sebastian/type", - "version": "3.2.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", - "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.2-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Collection of value objects that represent the types of the PHP type system", - "homepage": "https://github.com/sebastianbergmann/type", - "support": { - "issues": "https://github.com/sebastianbergmann/type/issues", - "source": "https://github.com/sebastianbergmann/type/tree/3.2.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-02-03T06:13:03+00:00" - }, - { - "name": "sebastian/version", - "version": "3.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c6c1022351a901512170118436c764e473f6de8c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", - "reference": "c6c1022351a901512170118436c764e473f6de8c", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library that helps with managing the version number of Git-hosted PHP projects", - "homepage": "https://github.com/sebastianbergmann/version", - "support": { - "issues": "https://github.com/sebastianbergmann/version/issues", - "source": "https://github.com/sebastianbergmann/version/tree/3.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:39:44+00:00" - }, - { - "name": "theseer/tokenizer", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - } - ], - "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "support": { - "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/theseer", - "type": "github" - } - ], - "time": "2021-07-28T10:34:58+00:00" - } - ], - "aliases": [], - "minimum-stability": "dev", - "stability-flags": { - "silber/page-cache": 20 - }, - "prefer-stable": true, - "prefer-lowest": false, - "platform": { - "php": "^8" - }, - "platform-dev": [], - "plugin-api-version": "2.3.0" -} diff --git a/app/config/app.php b/app/config/app.php deleted file mode 100644 index cd08a90cd..000000000 --- a/app/config/app.php +++ /dev/null @@ -1,236 +0,0 @@ - env('APP_NAME', 'Laravel'), - - /* - |-------------------------------------------------------------------------- - | Application Environment - |-------------------------------------------------------------------------- - | - | This value determines the "environment" your application is currently - | running in. This may determine how you prefer to configure various - | services the application utilizes. Set this in your ".env" file. - | - */ - - 'env' => env('APP_ENV', 'production'), - - /* - |-------------------------------------------------------------------------- - | Application Debug Mode - |-------------------------------------------------------------------------- - | - | When your application is in debug mode, detailed error messages with - | stack traces will be shown on every error that occurs within your - | application. If disabled, a simple generic error page is shown. - | - */ - - 'debug' => (bool) env('APP_DEBUG', false), - - /* - |-------------------------------------------------------------------------- - | Application URL - |-------------------------------------------------------------------------- - | - | This URL is used by the console to properly generate URLs when using - | the Artisan command line tool. You should set this to the root of - | your application so that it is used when running Artisan tasks. - | - */ - - 'url' => env('APP_URL', 'http://localhost'), - - 'asset_url' => env('ASSET_URL', null), - - /* - |-------------------------------------------------------------------------- - | Application Timezone - |-------------------------------------------------------------------------- - | - | Here you may specify the default timezone for your application, which - | will be used by the PHP date and date-time functions. We have gone - | ahead and set this to a sensible default for you out of the box. - | - */ - - 'timezone' => 'UTC', - - /* - |-------------------------------------------------------------------------- - | Application Locale Configuration - |-------------------------------------------------------------------------- - | - | The application locale determines the default locale that will be used - | by the translation service provider. You are free to set this value - | to any of the locales which will be supported by the application. - | - */ - - 'locale' => 'en', - - /* - |-------------------------------------------------------------------------- - | Application Fallback Locale - |-------------------------------------------------------------------------- - | - | The fallback locale determines the locale to use when the current one - | is not available. You may change the value to correspond to any of - | the language folders that are provided through your application. - | - */ - - 'fallback_locale' => 'en', - - /* - |-------------------------------------------------------------------------- - | Faker Locale - |-------------------------------------------------------------------------- - | - | This locale will be used by the Faker PHP library when generating fake - | data for your database seeds. For example, this will be used to get - | localized telephone numbers, street address information and more. - | - */ - - 'faker_locale' => 'en_US', - - /* - |-------------------------------------------------------------------------- - | Encryption Key - |-------------------------------------------------------------------------- - | - | This key is used by the Illuminate encrypter service and should be set - | to a random, 32 character string, otherwise these encrypted strings - | will not be safe. Please do this before deploying an application! - | - */ - - 'key' => env('APP_KEY'), - - 'cipher' => 'AES-256-CBC', - - /* - |-------------------------------------------------------------------------- - | Autoloaded Service Providers - |-------------------------------------------------------------------------- - | - | The service providers listed here will be automatically loaded on the - | request to your application. Feel free to add your own services to - | this array to grant expanded functionality to your applications. - | - */ - - 'providers' => [ - - /* - * Laravel Framework Service Providers... - */ - Illuminate\Auth\AuthServiceProvider::class, - Illuminate\Broadcasting\BroadcastServiceProvider::class, - Illuminate\Bus\BusServiceProvider::class, - Illuminate\Cache\CacheServiceProvider::class, - Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class, - Illuminate\Cookie\CookieServiceProvider::class, - Illuminate\Database\DatabaseServiceProvider::class, - Illuminate\Encryption\EncryptionServiceProvider::class, - Illuminate\Filesystem\FilesystemServiceProvider::class, - Illuminate\Foundation\Providers\FoundationServiceProvider::class, - Illuminate\Hashing\HashServiceProvider::class, - Illuminate\Mail\MailServiceProvider::class, - Illuminate\Notifications\NotificationServiceProvider::class, - Illuminate\Pagination\PaginationServiceProvider::class, - Illuminate\Pipeline\PipelineServiceProvider::class, - Illuminate\Queue\QueueServiceProvider::class, - Illuminate\Redis\RedisServiceProvider::class, - Illuminate\Auth\Passwords\PasswordResetServiceProvider::class, - Illuminate\Session\SessionServiceProvider::class, - Illuminate\Translation\TranslationServiceProvider::class, - Illuminate\Validation\ValidationServiceProvider::class, - Illuminate\View\ViewServiceProvider::class, - - /* - * Package Service Providers... - */ - Silber\PageCache\LaravelServiceProvider::class, - Intervention\Image\ImageServiceProvider::class, - - /* - * Application Service Providers... - */ - App\Providers\AppServiceProvider::class, - App\Providers\AuthServiceProvider::class, - // App\Providers\BroadcastServiceProvider::class, - App\Providers\EventServiceProvider::class, - App\Providers\RouteServiceProvider::class, - - ], - - /* - |-------------------------------------------------------------------------- - | Class Aliases - |-------------------------------------------------------------------------- - | - | This array of class aliases will be registered when this application - | is started. However, feel free to register as many as you wish as - | the aliases are "lazy" loaded so they don't hinder performance. - | - */ - - 'aliases' => [ - - 'App' => Illuminate\Support\Facades\App::class, - 'Arr' => Illuminate\Support\Arr::class, - 'Artisan' => Illuminate\Support\Facades\Artisan::class, - 'Auth' => Illuminate\Support\Facades\Auth::class, - 'Blade' => Illuminate\Support\Facades\Blade::class, - 'Broadcast' => Illuminate\Support\Facades\Broadcast::class, - 'Bus' => Illuminate\Support\Facades\Bus::class, - 'Cache' => Illuminate\Support\Facades\Cache::class, - 'Config' => Illuminate\Support\Facades\Config::class, - 'Cookie' => Illuminate\Support\Facades\Cookie::class, - 'Crypt' => Illuminate\Support\Facades\Crypt::class, - 'DB' => Illuminate\Support\Facades\DB::class, - 'Eloquent' => Illuminate\Database\Eloquent\Model::class, - 'Event' => Illuminate\Support\Facades\Event::class, - 'File' => Illuminate\Support\Facades\File::class, - 'Gate' => Illuminate\Support\Facades\Gate::class, - 'Hash' => Illuminate\Support\Facades\Hash::class, - 'Http' => Illuminate\Support\Facades\Http::class, - 'Lang' => Illuminate\Support\Facades\Lang::class, - 'Log' => Illuminate\Support\Facades\Log::class, - 'Mail' => Illuminate\Support\Facades\Mail::class, - 'Notification' => Illuminate\Support\Facades\Notification::class, - 'Password' => Illuminate\Support\Facades\Password::class, - 'Queue' => Illuminate\Support\Facades\Queue::class, - 'Redirect' => Illuminate\Support\Facades\Redirect::class, - 'Redis' => Illuminate\Support\Facades\Redis::class, - 'Request' => Illuminate\Support\Facades\Request::class, - 'Response' => Illuminate\Support\Facades\Response::class, - 'Route' => Illuminate\Support\Facades\Route::class, - 'Schema' => Illuminate\Support\Facades\Schema::class, - 'Session' => Illuminate\Support\Facades\Session::class, - 'Storage' => Illuminate\Support\Facades\Storage::class, - 'Str' => Illuminate\Support\Str::class, - 'URL' => Illuminate\Support\Facades\URL::class, - 'Validator' => Illuminate\Support\Facades\Validator::class, - 'View' => Illuminate\Support\Facades\View::class, - - 'Image' => Intervention\Image\Facades\Image::class, - - ], - -]; diff --git a/app/config/auth.php b/app/config/auth.php deleted file mode 100644 index aaf982bcd..000000000 --- a/app/config/auth.php +++ /dev/null @@ -1,117 +0,0 @@ - [ - 'guard' => 'web', - 'passwords' => 'users', - ], - - /* - |-------------------------------------------------------------------------- - | Authentication Guards - |-------------------------------------------------------------------------- - | - | Next, you may define every authentication guard for your application. - | Of course, a great default configuration has been defined for you - | here which uses session storage and the Eloquent user provider. - | - | All authentication drivers have a user provider. This defines how the - | users are actually retrieved out of your database or other storage - | mechanisms used by this application to persist your user's data. - | - | Supported: "session", "token" - | - */ - - 'guards' => [ - 'web' => [ - 'driver' => 'session', - 'provider' => 'users', - ], - - 'api' => [ - 'driver' => 'token', - 'provider' => 'users', - 'hash' => false, - ], - ], - - /* - |-------------------------------------------------------------------------- - | User Providers - |-------------------------------------------------------------------------- - | - | All authentication drivers have a user provider. This defines how the - | users are actually retrieved out of your database or other storage - | mechanisms used by this application to persist your user's data. - | - | If you have multiple user tables or models you may configure multiple - | sources which represent each model / table. These sources may then - | be assigned to any extra authentication guards you have defined. - | - | Supported: "database", "eloquent" - | - */ - - 'providers' => [ - 'users' => [ - 'driver' => 'eloquent', - 'model' => App\User::class, - ], - - // 'users' => [ - // 'driver' => 'database', - // 'table' => 'users', - // ], - ], - - /* - |-------------------------------------------------------------------------- - | Resetting Passwords - |-------------------------------------------------------------------------- - | - | You may specify multiple password reset configurations if you have more - | than one user table or model in the application and you want to have - | separate password reset settings based on the specific user types. - | - | The expire time is the number of minutes that the reset token should be - | considered valid. This security feature keeps tokens short-lived so - | they have less time to be guessed. You may change this as needed. - | - */ - - 'passwords' => [ - 'users' => [ - 'provider' => 'users', - 'table' => 'password_resets', - 'expire' => 60, - 'throttle' => 60, - ], - ], - - /* - |-------------------------------------------------------------------------- - | Password Confirmation Timeout - |-------------------------------------------------------------------------- - | - | Here you may define the amount of seconds before a password confirmation - | times out and the user is prompted to re-enter their password via the - | confirmation screen. By default, the timeout lasts for three hours. - | - */ - - 'password_timeout' => 10800, - -]; diff --git a/app/config/broadcasting.php b/app/config/broadcasting.php deleted file mode 100644 index 3bba1103e..000000000 --- a/app/config/broadcasting.php +++ /dev/null @@ -1,59 +0,0 @@ - env('BROADCAST_DRIVER', 'null'), - - /* - |-------------------------------------------------------------------------- - | Broadcast Connections - |-------------------------------------------------------------------------- - | - | Here you may define all of the broadcast connections that will be used - | to broadcast events to other systems or over websockets. Samples of - | each available type of connection are provided inside this array. - | - */ - - 'connections' => [ - - 'pusher' => [ - 'driver' => 'pusher', - 'key' => env('PUSHER_APP_KEY'), - 'secret' => env('PUSHER_APP_SECRET'), - 'app_id' => env('PUSHER_APP_ID'), - 'options' => [ - 'cluster' => env('PUSHER_APP_CLUSTER'), - 'useTLS' => true, - ], - ], - - 'redis' => [ - 'driver' => 'redis', - 'connection' => 'default', - ], - - 'log' => [ - 'driver' => 'log', - ], - - 'null' => [ - 'driver' => 'null', - ], - - ], - -]; diff --git a/app/config/browserless.php b/app/config/browserless.php deleted file mode 100644 index a01bfb594..000000000 --- a/app/config/browserless.php +++ /dev/null @@ -1,7 +0,0 @@ - env('BROWSERLESS_TOKEN'), - -]; diff --git a/app/config/cache.php b/app/config/cache.php deleted file mode 100644 index 4f41fdf96..000000000 --- a/app/config/cache.php +++ /dev/null @@ -1,104 +0,0 @@ - env('CACHE_DRIVER', 'file'), - - /* - |-------------------------------------------------------------------------- - | Cache Stores - |-------------------------------------------------------------------------- - | - | Here you may define all of the cache "stores" for your application as - | well as their drivers. You may even define multiple stores for the - | same cache driver to group types of items stored in your caches. - | - */ - - 'stores' => [ - - 'apc' => [ - 'driver' => 'apc', - ], - - 'array' => [ - 'driver' => 'array', - 'serialize' => false, - ], - - 'database' => [ - 'driver' => 'database', - 'table' => 'cache', - 'connection' => null, - ], - - 'file' => [ - 'driver' => 'file', - 'path' => storage_path('framework/cache/data'), - ], - - 'memcached' => [ - 'driver' => 'memcached', - 'persistent_id' => env('MEMCACHED_PERSISTENT_ID'), - 'sasl' => [ - env('MEMCACHED_USERNAME'), - env('MEMCACHED_PASSWORD'), - ], - 'options' => [ - // Memcached::OPT_CONNECT_TIMEOUT => 2000, - ], - 'servers' => [ - [ - 'host' => env('MEMCACHED_HOST', '127.0.0.1'), - 'port' => env('MEMCACHED_PORT', 11211), - 'weight' => 100, - ], - ], - ], - - 'redis' => [ - 'driver' => 'redis', - 'connection' => 'cache', - ], - - 'dynamodb' => [ - 'driver' => 'dynamodb', - 'key' => env('AWS_ACCESS_KEY_ID'), - 'secret' => env('AWS_SECRET_ACCESS_KEY'), - 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), - 'table' => env('DYNAMODB_CACHE_TABLE', 'cache'), - 'endpoint' => env('DYNAMODB_ENDPOINT'), - ], - - ], - - /* - |-------------------------------------------------------------------------- - | Cache Key Prefix - |-------------------------------------------------------------------------- - | - | When utilizing a RAM based store such as APC or Memcached, there might - | be other applications utilizing the same cache. So, we'll specify a - | value to get prefixed to all our keys so we can avoid collisions. - | - */ - - 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache'), - -]; diff --git a/app/config/cors.php b/app/config/cors.php deleted file mode 100644 index 558369dca..000000000 --- a/app/config/cors.php +++ /dev/null @@ -1,34 +0,0 @@ - ['api/*'], - - 'allowed_methods' => ['*'], - - 'allowed_origins' => ['*'], - - 'allowed_origins_patterns' => [], - - 'allowed_headers' => ['*'], - - 'exposed_headers' => [], - - 'max_age' => 0, - - 'supports_credentials' => false, - -]; diff --git a/app/config/database.php b/app/config/database.php deleted file mode 100644 index b42d9b30a..000000000 --- a/app/config/database.php +++ /dev/null @@ -1,147 +0,0 @@ - env('DB_CONNECTION', 'mysql'), - - /* - |-------------------------------------------------------------------------- - | Database Connections - |-------------------------------------------------------------------------- - | - | Here are each of the database connections setup for your application. - | Of course, examples of configuring each database platform that is - | supported by Laravel is shown below to make development simple. - | - | - | All database work in Laravel is done through the PHP PDO facilities - | so make sure you have the driver for your particular database of - | choice installed on your machine before you begin development. - | - */ - - 'connections' => [ - - 'sqlite' => [ - 'driver' => 'sqlite', - 'url' => env('DATABASE_URL'), - 'database' => env('DB_DATABASE', database_path('database.sqlite')), - 'prefix' => '', - 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), - ], - - 'mysql' => [ - 'driver' => 'mysql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '3306'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'unix_socket' => env('DB_SOCKET', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), - ]) : [], - ], - - 'pgsql' => [ - 'driver' => 'pgsql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '5432'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - 'schema' => 'public', - 'sslmode' => 'prefer', - ], - - 'sqlsrv' => [ - 'driver' => 'sqlsrv', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', 'localhost'), - 'port' => env('DB_PORT', '1433'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'prefix_indexes' => true, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | Migration Repository Table - |-------------------------------------------------------------------------- - | - | This table keeps track of all the migrations that have already run for - | your application. Using this information, we can determine which of - | the migrations on disk haven't actually been run in the database. - | - */ - - 'migrations' => 'migrations', - - /* - |-------------------------------------------------------------------------- - | Redis Databases - |-------------------------------------------------------------------------- - | - | Redis is an open source, fast, and advanced key-value store that also - | provides a richer body of commands than a typical key-value system - | such as APC or Memcached. Laravel makes it easy to dig right in. - | - */ - - 'redis' => [ - - 'client' => env('REDIS_CLIENT', 'phpredis'), - - 'options' => [ - 'cluster' => env('REDIS_CLUSTER', 'redis'), - 'prefix' => env('REDIS_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_database_'), - ], - - 'default' => [ - 'url' => env('REDIS_URL'), - 'host' => env('REDIS_HOST', '127.0.0.1'), - 'password' => env('REDIS_PASSWORD', null), - 'port' => env('REDIS_PORT', '6379'), - 'database' => env('REDIS_DB', '0'), - ], - - 'cache' => [ - 'url' => env('REDIS_URL'), - 'host' => env('REDIS_HOST', '127.0.0.1'), - 'password' => env('REDIS_PASSWORD', null), - 'port' => env('REDIS_PORT', '6379'), - 'database' => env('REDIS_CACHE_DB', '1'), - ], - - ], - -]; diff --git a/app/config/filesystems.php b/app/config/filesystems.php deleted file mode 100644 index 41501afca..000000000 --- a/app/config/filesystems.php +++ /dev/null @@ -1,80 +0,0 @@ - env('FILESYSTEM_DRIVER', 'local'), - - /* - |-------------------------------------------------------------------------- - | Default Cloud Filesystem Disk - |-------------------------------------------------------------------------- - | - | Many applications store files both locally and in the cloud. For this - | reason, you may specify a default "cloud" driver here. This driver - | will be bound as the Cloud disk implementation in the container. - | - */ - - 'cloud' => env('FILESYSTEM_CLOUD', 's3'), - - /* - |-------------------------------------------------------------------------- - | Filesystem Disks - |-------------------------------------------------------------------------- - | - | Here you may configure as many filesystem "disks" as you wish, and you - | may even configure multiple disks of the same driver. Defaults have - | been setup for each driver as an example of the required options. - | - | Supported Drivers: "local", "ftp", "sftp", "s3" - | - */ - - 'disks' => [ - - 'local' => [ - 'driver' => 'local', - 'root' => storage_path('app'), - ], - - 'public' => [ - 'driver' => 'local', - 'root' => storage_path('app/public'), - 'url' => env('APP_URL').'/storage', - 'visibility' => 'public', - ], - - 'pages' => [ - 'driver' => 'local', - 'root' => base_path('pages'), - ], - - ], - - /* - |-------------------------------------------------------------------------- - | Symbolic Links - |-------------------------------------------------------------------------- - | - | Here you may configure the symbolic links that will be created when the - | `storage:link` Artisan command is executed. The array keys should be - | the locations of the links and the values should be their targets. - | - */ - - 'links' => [ - public_path('storage') => storage_path('app/public'), - ], - -]; diff --git a/app/config/hashids.php b/app/config/hashids.php deleted file mode 100644 index 7f550b0ca..000000000 --- a/app/config/hashids.php +++ /dev/null @@ -1,47 +0,0 @@ - 'main', - - /* - |-------------------------------------------------------------------------- - | Hashids Connections - |-------------------------------------------------------------------------- - | - | Here are each of the connections setup for your application. Example - | configuration has been included, but you may add as many connections as - | you would like. - | - */ - - 'connections' => [ - - 'main' => [ - 'length' => '5', - 'alphabet' => 'abcdefghijklmnopqrstuvwxyz1234567890', - ], - - ], - -]; diff --git a/app/config/hashing.php b/app/config/hashing.php deleted file mode 100644 index 842577087..000000000 --- a/app/config/hashing.php +++ /dev/null @@ -1,52 +0,0 @@ - 'bcrypt', - - /* - |-------------------------------------------------------------------------- - | Bcrypt Options - |-------------------------------------------------------------------------- - | - | Here you may specify the configuration options that should be used when - | passwords are hashed using the Bcrypt algorithm. This will allow you - | to control the amount of time it takes to hash the given password. - | - */ - - 'bcrypt' => [ - 'rounds' => env('BCRYPT_ROUNDS', 10), - ], - - /* - |-------------------------------------------------------------------------- - | Argon Options - |-------------------------------------------------------------------------- - | - | Here you may specify the configuration options that should be used when - | passwords are hashed using the Argon algorithm. These will allow you - | to control the amount of time it takes to hash the given password. - | - */ - - 'argon' => [ - 'memory' => 1024, - 'threads' => 2, - 'time' => 2, - ], - -]; diff --git a/app/config/image.php b/app/config/image.php deleted file mode 100644 index 67983819d..000000000 --- a/app/config/image.php +++ /dev/null @@ -1,20 +0,0 @@ - 'gd', - -]; diff --git a/app/config/logging.php b/app/config/logging.php deleted file mode 100644 index 088c204e2..000000000 --- a/app/config/logging.php +++ /dev/null @@ -1,104 +0,0 @@ - env('LOG_CHANNEL', 'stack'), - - /* - |-------------------------------------------------------------------------- - | Log Channels - |-------------------------------------------------------------------------- - | - | Here you may configure the log channels for your application. Out of - | the box, Laravel uses the Monolog PHP logging library. This gives - | you a variety of powerful log handlers / formatters to utilize. - | - | Available Drivers: "single", "daily", "slack", "syslog", - | "errorlog", "monolog", - | "custom", "stack" - | - */ - - 'channels' => [ - 'stack' => [ - 'driver' => 'stack', - 'channels' => ['single'], - 'ignore_exceptions' => false, - ], - - 'single' => [ - 'driver' => 'single', - 'path' => storage_path('logs/laravel.log'), - 'level' => 'debug', - ], - - 'daily' => [ - 'driver' => 'daily', - 'path' => storage_path('logs/laravel.log'), - 'level' => 'debug', - 'days' => 14, - ], - - 'slack' => [ - 'driver' => 'slack', - 'url' => env('LOG_SLACK_WEBHOOK_URL'), - 'username' => 'Laravel Log', - 'emoji' => ':boom:', - 'level' => 'critical', - ], - - 'papertrail' => [ - 'driver' => 'monolog', - 'level' => 'debug', - 'handler' => SyslogUdpHandler::class, - 'handler_with' => [ - 'host' => env('PAPERTRAIL_URL'), - 'port' => env('PAPERTRAIL_PORT'), - ], - ], - - 'stderr' => [ - 'driver' => 'monolog', - 'handler' => StreamHandler::class, - 'formatter' => env('LOG_STDERR_FORMATTER'), - 'with' => [ - 'stream' => 'php://stderr', - ], - ], - - 'syslog' => [ - 'driver' => 'syslog', - 'level' => 'debug', - ], - - 'errorlog' => [ - 'driver' => 'errorlog', - 'level' => 'debug', - ], - - 'null' => [ - 'driver' => 'monolog', - 'handler' => NullHandler::class, - ], - - 'emergency' => [ - 'path' => storage_path('logs/laravel.log'), - ], - ], - -]; diff --git a/app/config/mail.php b/app/config/mail.php deleted file mode 100644 index 54299aabf..000000000 --- a/app/config/mail.php +++ /dev/null @@ -1,110 +0,0 @@ - env('MAIL_MAILER', 'smtp'), - - /* - |-------------------------------------------------------------------------- - | Mailer Configurations - |-------------------------------------------------------------------------- - | - | Here you may configure all of the mailers used by your application plus - | their respective settings. Several examples have been configured for - | you and you are free to add your own as your application requires. - | - | Laravel supports a variety of mail "transport" drivers to be used while - | sending an e-mail. You will specify which one you are using for your - | mailers below. You are free to add additional mailers as required. - | - | Supported: "smtp", "sendmail", "mailgun", "ses", - | "postmark", "log", "array" - | - */ - - 'mailers' => [ - 'smtp' => [ - 'transport' => 'smtp', - 'host' => env('MAIL_HOST', 'smtp.mailgun.org'), - 'port' => env('MAIL_PORT', 587), - 'encryption' => env('MAIL_ENCRYPTION', 'tls'), - 'username' => env('MAIL_USERNAME'), - 'password' => env('MAIL_PASSWORD'), - 'timeout' => null, - 'auth_mode' => null, - ], - - 'ses' => [ - 'transport' => 'ses', - ], - - 'mailgun' => [ - 'transport' => 'mailgun', - ], - - 'postmark' => [ - 'transport' => 'postmark', - ], - - 'sendmail' => [ - 'transport' => 'sendmail', - 'path' => '/usr/sbin/sendmail -bs', - ], - - 'log' => [ - 'transport' => 'log', - 'channel' => env('MAIL_LOG_CHANNEL'), - ], - - 'array' => [ - 'transport' => 'array', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Global "From" Address - |-------------------------------------------------------------------------- - | - | You may wish for all e-mails sent by your application to be sent from - | the same address. Here, you may specify a name and address that is - | used globally for all e-mails that are sent by your application. - | - */ - - 'from' => [ - 'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'), - 'name' => env('MAIL_FROM_NAME', 'Example'), - ], - - /* - |-------------------------------------------------------------------------- - | Markdown Mail Settings - |-------------------------------------------------------------------------- - | - | If you are using Markdown based email rendering, you may configure your - | theme and component paths here, allowing you to customize the design - | of the emails. Or, you may simply stick with the Laravel defaults! - | - */ - - 'markdown' => [ - 'theme' => 'default', - - 'paths' => [ - resource_path('views/vendor/mail'), - ], - ], - -]; diff --git a/app/config/pings.php b/app/config/pings.php deleted file mode 100644 index c8b153251..000000000 --- a/app/config/pings.php +++ /dev/null @@ -1,5 +0,0 @@ - env('PINGS_SCRAPERS'), -]; diff --git a/app/config/queue.php b/app/config/queue.php deleted file mode 100644 index 00b76d651..000000000 --- a/app/config/queue.php +++ /dev/null @@ -1,89 +0,0 @@ - env('QUEUE_CONNECTION', 'sync'), - - /* - |-------------------------------------------------------------------------- - | Queue Connections - |-------------------------------------------------------------------------- - | - | Here you may configure the connection information for each server that - | is used by your application. A default configuration has been added - | for each back-end shipped with Laravel. You are free to add more. - | - | Drivers: "sync", "database", "beanstalkd", "sqs", "redis", "null" - | - */ - - 'connections' => [ - - 'sync' => [ - 'driver' => 'sync', - ], - - 'database' => [ - 'driver' => 'database', - 'table' => 'jobs', - 'queue' => 'default', - 'retry_after' => 90, - ], - - 'beanstalkd' => [ - 'driver' => 'beanstalkd', - 'host' => 'localhost', - 'queue' => 'default', - 'retry_after' => 90, - 'block_for' => 0, - ], - - 'sqs' => [ - 'driver' => 'sqs', - 'key' => env('AWS_ACCESS_KEY_ID'), - 'secret' => env('AWS_SECRET_ACCESS_KEY'), - 'prefix' => env('SQS_PREFIX', 'https://sqs.us-east-1.amazonaws.com/your-account-id'), - 'queue' => env('SQS_QUEUE', 'your-queue-name'), - 'suffix' => env('SQS_SUFFIX'), - 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), - ], - - 'redis' => [ - 'driver' => 'redis', - 'connection' => 'default', - 'queue' => env('REDIS_QUEUE', 'default'), - 'retry_after' => 90, - 'block_for' => null, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | Failed Queue Jobs - |-------------------------------------------------------------------------- - | - | These options configure the behavior of failed queue job logging so you - | can control which database and table are used to store the jobs that - | have failed. You may change them to any database / table you wish. - | - */ - - 'failed' => [ - 'driver' => env('QUEUE_FAILED_DRIVER', 'database'), - 'database' => env('DB_CONNECTION', 'mysql'), - 'table' => 'failed_jobs', - ], - -]; diff --git a/app/config/scout.php b/app/config/scout.php deleted file mode 100644 index 2b5429bec..000000000 --- a/app/config/scout.php +++ /dev/null @@ -1,139 +0,0 @@ - env('SCOUT_DRIVER', 'algolia'), - - /* - |-------------------------------------------------------------------------- - | Index Prefix - |-------------------------------------------------------------------------- - | - | Here you may specify a prefix that will be applied to all search index - | names used by Scout. This prefix may be useful if you have multiple - | "tenants" or applications sharing the same search infrastructure. - | - */ - - 'prefix' => env('SCOUT_PREFIX', ''), - - /* - |-------------------------------------------------------------------------- - | Queue Data Syncing - |-------------------------------------------------------------------------- - | - | This option allows you to control if the operations that sync your data - | with your search engines are queued. When this is set to "true" then - | all automatic data syncing will get queued for better performance. - | - */ - - 'queue' => env('SCOUT_QUEUE', false), - - /* - |-------------------------------------------------------------------------- - | Database Transactions - |-------------------------------------------------------------------------- - | - | This configuration option determines if your data will only be synced - | with your search indexes after every open database transaction has - | been committed, thus preventing any discarded data from syncing. - | - */ - - 'after_commit' => false, - - /* - |-------------------------------------------------------------------------- - | Chunk Sizes - |-------------------------------------------------------------------------- - | - | These options allow you to control the maximum chunk size when you are - | mass importing data into the search engine. This allows you to fine - | tune each of these chunk sizes based on the power of the servers. - | - */ - - 'chunk' => [ - 'searchable' => 500, - 'unsearchable' => 500, - ], - - /* - |-------------------------------------------------------------------------- - | Soft Deletes - |-------------------------------------------------------------------------- - | - | This option allows to control whether to keep soft deleted records in - | the search indexes. Maintaining soft deleted records can be useful - | if your application still needs to search for the records later. - | - */ - - 'soft_delete' => false, - - /* - |-------------------------------------------------------------------------- - | Identify User - |-------------------------------------------------------------------------- - | - | This option allows you to control whether to notify the search engine - | of the user performing the search. This is sometimes useful if the - | engine supports any analytics based on this application's users. - | - | Supported engines: "algolia" - | - */ - - 'identify' => env('SCOUT_IDENTIFY', false), - - /* - |-------------------------------------------------------------------------- - | Algolia Configuration - |-------------------------------------------------------------------------- - | - | Here you may configure your Algolia settings. Algolia is a cloud hosted - | search engine which works great with Scout out of the box. Just plug - | in your application ID and admin API key to get started searching. - | - */ - - 'algolia' => [ - 'id' => env('ALGOLIA_APP_ID', ''), - 'secret' => env('ALGOLIA_SECRET', ''), - ], - - /* - |-------------------------------------------------------------------------- - | MeiliSearch Configuration - |-------------------------------------------------------------------------- - | - | Here you may configure your MeiliSearch settings. MeiliSearch is an open - | source search engine with minimal configuration. Below, you can state - | the host and key information for your own MeiliSearch installation. - | - | See: https://docs.meilisearch.com/guides/advanced_guides/configuration.html - | - */ - - 'meilisearch' => [ - 'host' => env('MEILISEARCH_HOST', 'http://localhost:7700'), - 'key' => env('MEILISEARCH_KEY', null), - 'public_key' => env('MEILISEARCH_PUBLIC_KEY', null), - 'public_endpoint' => env('MEILISEARCH_PUBLIC_ENDPOINT', null), - ], - -]; diff --git a/app/config/scrapers.php b/app/config/scrapers.php deleted file mode 100644 index d4dd1eb34..000000000 --- a/app/config/scrapers.php +++ /dev/null @@ -1,8 +0,0 @@ - env('SCRAPERS_HOST', 'localhost'), - 'port' => env('SCRAPERS_PORT', 5000), - -]; diff --git a/app/config/sentry.php b/app/config/sentry.php deleted file mode 100644 index 795c4ad2b..000000000 --- a/app/config/sentry.php +++ /dev/null @@ -1,37 +0,0 @@ - env('SENTRY_LARAVEL_DSN', env('SENTRY_DSN')), - - // capture release as git sha - // 'release' => trim(exec('git --git-dir ' . base_path('.git') . ' log --pretty="%h" -n1 HEAD')), - - // When left empty or `null` the Laravel environment will be used - 'environment' => env('SENTRY_ENVIRONMENT'), - - 'breadcrumbs' => [ - // Capture Laravel logs in breadcrumbs - 'logs' => true, - - // Capture SQL queries in breadcrumbs - 'sql_queries' => true, - - // Capture bindings on SQL queries logged in breadcrumbs - 'sql_bindings' => true, - - // Capture queue job information in breadcrumbs - 'queue_info' => true, - - // Capture command information in breadcrumbs - 'command_info' => true, - ], - - // @see: https://docs.sentry.io/platforms/php/configuration/options/#send-default-pii - 'send_default_pii' => false, - - 'traces_sample_rate' => (float) (env('SENTRY_TRACES_SAMPLE_RATE', 0.0)), - - 'controllers_base_namespace' => env('SENTRY_CONTROLLERS_BASE_NAMESPACE', 'App\\Http\\Controllers'), - -]; diff --git a/app/config/services.php b/app/config/services.php deleted file mode 100644 index 2a1d616c7..000000000 --- a/app/config/services.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - 'domain' => env('MAILGUN_DOMAIN'), - 'secret' => env('MAILGUN_SECRET'), - 'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'), - ], - - 'postmark' => [ - 'token' => env('POSTMARK_TOKEN'), - ], - - 'ses' => [ - 'key' => env('AWS_ACCESS_KEY_ID'), - 'secret' => env('AWS_SECRET_ACCESS_KEY'), - 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), - ], - -]; diff --git a/app/config/session.php b/app/config/session.php deleted file mode 100644 index 4e0f66cda..000000000 --- a/app/config/session.php +++ /dev/null @@ -1,201 +0,0 @@ - env('SESSION_DRIVER', 'file'), - - /* - |-------------------------------------------------------------------------- - | Session Lifetime - |-------------------------------------------------------------------------- - | - | Here you may specify the number of minutes that you wish the session - | to be allowed to remain idle before it expires. If you want them - | to immediately expire on the browser closing, set that option. - | - */ - - 'lifetime' => env('SESSION_LIFETIME', 120), - - 'expire_on_close' => false, - - /* - |-------------------------------------------------------------------------- - | Session Encryption - |-------------------------------------------------------------------------- - | - | This option allows you to easily specify that all of your session data - | should be encrypted before it is stored. All encryption will be run - | automatically by Laravel and you can use the Session like normal. - | - */ - - 'encrypt' => false, - - /* - |-------------------------------------------------------------------------- - | Session File Location - |-------------------------------------------------------------------------- - | - | When using the native session driver, we need a location where session - | files may be stored. A default has been set for you but a different - | location may be specified. This is only needed for file sessions. - | - */ - - 'files' => storage_path('framework/sessions'), - - /* - |-------------------------------------------------------------------------- - | Session Database Connection - |-------------------------------------------------------------------------- - | - | When using the "database" or "redis" session drivers, you may specify a - | connection that should be used to manage these sessions. This should - | correspond to a connection in your database configuration options. - | - */ - - 'connection' => env('SESSION_CONNECTION', null), - - /* - |-------------------------------------------------------------------------- - | Session Database Table - |-------------------------------------------------------------------------- - | - | When using the "database" session driver, you may specify the table we - | should use to manage the sessions. Of course, a sensible default is - | provided for you; however, you are free to change this as needed. - | - */ - - 'table' => 'sessions', - - /* - |-------------------------------------------------------------------------- - | Session Cache Store - |-------------------------------------------------------------------------- - | - | While using one of the framework's cache driven session backends you may - | list a cache store that should be used for these sessions. This value - | must match with one of the application's configured cache "stores". - | - | Affects: "apc", "dynamodb", "memcached", "redis" - | - */ - - 'store' => env('SESSION_STORE', null), - - /* - |-------------------------------------------------------------------------- - | Session Sweeping Lottery - |-------------------------------------------------------------------------- - | - | Some session drivers must manually sweep their storage location to get - | rid of old sessions from storage. Here are the chances that it will - | happen on a given request. By default, the odds are 2 out of 100. - | - */ - - 'lottery' => [2, 100], - - /* - |-------------------------------------------------------------------------- - | Session Cookie Name - |-------------------------------------------------------------------------- - | - | Here you may change the name of the cookie used to identify a session - | instance by ID. The name specified here will get used every time a - | new session cookie is created by the framework for every driver. - | - */ - - 'cookie' => env( - 'SESSION_COOKIE', - Str::slug(env('APP_NAME', 'laravel'), '_').'_session' - ), - - /* - |-------------------------------------------------------------------------- - | Session Cookie Path - |-------------------------------------------------------------------------- - | - | The session cookie path determines the path for which the cookie will - | be regarded as available. Typically, this will be the root path of - | your application but you are free to change this when necessary. - | - */ - - 'path' => '/', - - /* - |-------------------------------------------------------------------------- - | Session Cookie Domain - |-------------------------------------------------------------------------- - | - | Here you may change the domain of the cookie used to identify a session - | in your application. This will determine which domains the cookie is - | available to in your application. A sensible default has been set. - | - */ - - 'domain' => env('SESSION_DOMAIN', null), - - /* - |-------------------------------------------------------------------------- - | HTTPS Only Cookies - |-------------------------------------------------------------------------- - | - | By setting this option to true, session cookies will only be sent back - | to the server if the browser has a HTTPS connection. This will keep - | the cookie from being sent to you if it can not be done securely. - | - */ - - 'secure' => env('SESSION_SECURE_COOKIE'), - - /* - |-------------------------------------------------------------------------- - | HTTP Access Only - |-------------------------------------------------------------------------- - | - | Setting this value to true will prevent JavaScript from accessing the - | value of the cookie and the cookie will only be accessible through - | the HTTP protocol. You are free to modify this option if needed. - | - */ - - 'http_only' => true, - - /* - |-------------------------------------------------------------------------- - | Same-Site Cookies - |-------------------------------------------------------------------------- - | - | This option determines how your cookies behave when cross-site requests - | take place, and can be used to mitigate CSRF attacks. By default, we - | will set this value to "lax" since this is a secure default value. - | - | Supported: "lax", "strict", "none", null - | - */ - - 'same_site' => 'lax', - -]; diff --git a/app/config/sheets.php b/app/config/sheets.php deleted file mode 100644 index 31ae749ce..000000000 --- a/app/config/sheets.php +++ /dev/null @@ -1,7 +0,0 @@ - null, - - 'collections' => ['pages'], -]; diff --git a/app/config/view.php b/app/config/view.php deleted file mode 100644 index 22b8a18d3..000000000 --- a/app/config/view.php +++ /dev/null @@ -1,36 +0,0 @@ - [ - resource_path('views'), - ], - - /* - |-------------------------------------------------------------------------- - | Compiled View Path - |-------------------------------------------------------------------------- - | - | This option determines where all the compiled Blade templates will be - | stored for your application. Typically, this is within the storage - | directory. However, as usual, you are free to change this value. - | - */ - - 'compiled' => env( - 'VIEW_COMPILED_PATH', - realpath(storage_path('framework/views')) - ), - -]; diff --git a/app/database/.gitignore b/app/database/.gitignore deleted file mode 100644 index 97fc97677..000000000 --- a/app/database/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -*.sqlite -*.sqlite-journal diff --git a/app/database/factories/GroupFactory.php b/app/database/factories/GroupFactory.php deleted file mode 100644 index 5dbbc250a..000000000 --- a/app/database/factories/GroupFactory.php +++ /dev/null @@ -1,30 +0,0 @@ - $this->faker->unique()->randomElement($codes), - ]; - } -} diff --git a/app/database/factories/GroupMembershipFactory.php b/app/database/factories/GroupMembershipFactory.php deleted file mode 100644 index bc7341cdc..000000000 --- a/app/database/factories/GroupMembershipFactory.php +++ /dev/null @@ -1,55 +0,0 @@ - Group::first()?->id ?: Group::factory(), - 'member_id' => Member::factory(), - 'term_id' => Term::factory(), - 'start_date' => $this->faker->dateTimeThisDecade(), - 'end_date' => $this->faker->dateTimeThisDecade(), - ]; - } - - public function withDate(Carbon $date) - { - return $this->state([ - 'start_date' => $date, - 'end_date' => $date, - ]); - } - - public function withGroup(?Group $group) - { - if (! $group) { - return $this; - } - - return $this->state([ - 'group_id' => $group->id, - ]); - } -} diff --git a/app/database/factories/MemberFactory.php b/app/database/factories/MemberFactory.php deleted file mode 100644 index 86ae7af18..000000000 --- a/app/database/factories/MemberFactory.php +++ /dev/null @@ -1,50 +0,0 @@ - $this->faker->randomNumber(5), - 'first_name' => $this->faker->firstName(), - 'last_name' => $this->faker->lastName(), - 'date_of_birth' => $this->faker->dateTimeThisCentury(), - 'country' => CountryEnum::GB(), - ]; - } - - public function country(string $code) - { - return $this->state(['country' => $code]); - } - - public function activeAt(Carbon $date, ?Group $group = null) - { - $membership = GroupMembership::factory() - ->withDate($date) - ->withGroup($group); - - return $this->has($membership); - } -} diff --git a/app/database/factories/SessionFactory.php b/app/database/factories/SessionFactory.php deleted file mode 100644 index cd2e67686..000000000 --- a/app/database/factories/SessionFactory.php +++ /dev/null @@ -1,31 +0,0 @@ -'2021-08-08', - 'end_date' =>'2021-08-11', - 'location' => LocationEnum::BRUSSELS(), - ]; - } -} diff --git a/app/database/factories/SummaryFactory.php b/app/database/factories/SummaryFactory.php deleted file mode 100644 index df3fd9080..000000000 --- a/app/database/factories/SummaryFactory.php +++ /dev/null @@ -1,30 +0,0 @@ - 'Reference', - 'text' => 'Summary', - 'oeil_id' => 1234567, - ]; - } -} diff --git a/app/database/factories/TermFactory.php b/app/database/factories/TermFactory.php deleted file mode 100644 index 7a2e804b2..000000000 --- a/app/database/factories/TermFactory.php +++ /dev/null @@ -1,28 +0,0 @@ - Term::max('number') + 1, - ]; - } -} diff --git a/app/database/factories/UserFactory.php b/app/database/factories/UserFactory.php deleted file mode 100644 index 741edead6..000000000 --- a/app/database/factories/UserFactory.php +++ /dev/null @@ -1,28 +0,0 @@ -define(User::class, function (Faker $faker) { - return [ - 'name' => $faker->name, - 'email' => $faker->unique()->safeEmail, - 'email_verified_at' => now(), - 'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password - 'remember_token' => Str::random(10), - ]; -}); diff --git a/app/database/factories/VoteCollectionFactory.php b/app/database/factories/VoteCollectionFactory.php deleted file mode 100644 index 31c7b1c51..000000000 --- a/app/database/factories/VoteCollectionFactory.php +++ /dev/null @@ -1,32 +0,0 @@ - 'Children’s rights', - 'reference' => 'A9-1234/2021', - 'date' => $this->faker->dateTimeThisCentury(), - 'term_id' => Term::factory(), - ]; - } -} diff --git a/app/database/factories/VoteFactory.php b/app/database/factories/VoteFactory.php deleted file mode 100644 index 2daf54453..000000000 --- a/app/database/factories/VoteFactory.php +++ /dev/null @@ -1,35 +0,0 @@ - VoteTypeEnum::PRIMARY(), - 'result' => VoteResultEnum::ADOPTED(), - 'formatted' => 'Proposition de résolution', - 'vote_collection_id' => VoteCollection::factory(), - 'final' => false, - ]; - } -} diff --git a/app/database/factories/VotingListFactory.php b/app/database/factories/VotingListFactory.php deleted file mode 100644 index 1260a5854..000000000 --- a/app/database/factories/VotingListFactory.php +++ /dev/null @@ -1,73 +0,0 @@ - $this->faker->numberBetween(0, 999999), - 'date' => $this->faker->dateTimeThisCentury(), - 'description' => '§ 1/2', - 'term_id' => Term::factory(), - ]; - } - - public function withDate(Carbon $date) - { - return $this->state([ - 'date' => $date, - ]); - } - - public function withMembers(string $position, MemberFactory $factory) - { - $position = VotePositionEnum::make($position); - - return $this->afterCreating(function (VotingList $votingList) use ($position, $factory) { - $members = $factory - ->create() - ->map(function ($member) use ($position) { - return [$member->id, ['position' => $position]]; - }) - ->toAssoc(); - - $votingList->members()->syncWithoutDetaching($members); - }); - } - - public function withStats(int $for = 10, int $against = 20, int $abstention = 30, int $noVote = 40) - { - return $this->state([ - 'stats' => [ - 'voted' => $for + $against + $abstention, - 'active' => $for + $against + $abstention + $noVote, - 'by_position' => [ - 'FOR' => $for, - 'AGAINST' => $against, - 'ABSTENTION' => $abstention, - 'NOVOTE' => $noVote, - ], - ], - ]); - } -} diff --git a/app/database/migrations/2014_10_12_000000_create_users_table.php b/app/database/migrations/2014_10_12_000000_create_users_table.php deleted file mode 100644 index 621a24eb7..000000000 --- a/app/database/migrations/2014_10_12_000000_create_users_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->string('name'); - $table->string('email')->unique(); - $table->timestamp('email_verified_at')->nullable(); - $table->string('password'); - $table->rememberToken(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('users'); - } -} diff --git a/app/database/migrations/2014_10_12_100000_create_password_resets_table.php b/app/database/migrations/2014_10_12_100000_create_password_resets_table.php deleted file mode 100644 index 0ee0a36a4..000000000 --- a/app/database/migrations/2014_10_12_100000_create_password_resets_table.php +++ /dev/null @@ -1,32 +0,0 @@ -string('email')->index(); - $table->string('token'); - $table->timestamp('created_at')->nullable(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('password_resets'); - } -} diff --git a/app/database/migrations/2019_08_19_000000_create_failed_jobs_table.php b/app/database/migrations/2019_08_19_000000_create_failed_jobs_table.php deleted file mode 100644 index 9bddee36c..000000000 --- a/app/database/migrations/2019_08_19_000000_create_failed_jobs_table.php +++ /dev/null @@ -1,35 +0,0 @@ -id(); - $table->text('connection'); - $table->text('queue'); - $table->longText('payload'); - $table->longText('exception'); - $table->timestamp('failed_at')->useCurrent(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('failed_jobs'); - } -} diff --git a/app/database/migrations/2020_09_01_132835_create_members_table.php b/app/database/migrations/2020_09_01_132835_create_members_table.php deleted file mode 100644 index 985d1f1d7..000000000 --- a/app/database/migrations/2020_09_01_132835_create_members_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->integer('ep_web_id'); - $table->string('first_name')->nullable(); - $table->string('last_name')->nullable(); - $table->date('date_of_birth')->nullable(); - $table->char('country', 2)->nullable(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('members'); - } -} diff --git a/app/database/migrations/2020_09_13_153314_rename_ep_web_id_column.php b/app/database/migrations/2020_09_13_153314_rename_ep_web_id_column.php deleted file mode 100644 index 0514f4ca3..000000000 --- a/app/database/migrations/2020_09_13_153314_rename_ep_web_id_column.php +++ /dev/null @@ -1,32 +0,0 @@ -renameColumn('ep_web_id', 'web_id'); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::table('members', function (Blueprint $table) { - $table->renameColumn('web_id', 'ep_web_id'); - }); - } -} diff --git a/app/database/migrations/2020_09_14_110846_create_terms_table.php b/app/database/migrations/2020_09_14_110846_create_terms_table.php deleted file mode 100644 index 90053da22..000000000 --- a/app/database/migrations/2020_09_14_110846_create_terms_table.php +++ /dev/null @@ -1,31 +0,0 @@ -id(); - $table->unsignedSmallInteger('number')->unique(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('terms'); - } -} diff --git a/app/database/migrations/2020_09_14_114019_create_member_term_table.php b/app/database/migrations/2020_09_14_114019_create_member_term_table.php deleted file mode 100644 index a34394e50..000000000 --- a/app/database/migrations/2020_09_14_114019_create_member_term_table.php +++ /dev/null @@ -1,32 +0,0 @@ -primary(['member_id', 'term_id']); - $table->foreignId('member_id')->constrained(); - $table->foreignId('term_id')->constrained(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('member_term'); - } -} diff --git a/app/database/migrations/2020_09_14_211905_add_unique_constraint_to_web_id.php b/app/database/migrations/2020_09_14_211905_add_unique_constraint_to_web_id.php deleted file mode 100644 index 502d16f22..000000000 --- a/app/database/migrations/2020_09_14_211905_add_unique_constraint_to_web_id.php +++ /dev/null @@ -1,32 +0,0 @@ -unique('web_id'); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::table('members', function (Blueprint $table) { - $table->dropUnique('web_id'); - }); - } -} diff --git a/app/database/migrations/2020_09_14_213200_create_groups_table.php b/app/database/migrations/2020_09_14_213200_create_groups_table.php deleted file mode 100644 index e7feeaf15..000000000 --- a/app/database/migrations/2020_09_14_213200_create_groups_table.php +++ /dev/null @@ -1,32 +0,0 @@ -id(); - $table->string('code', 16)->unique(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('groups'); - } -} diff --git a/app/database/migrations/2020_09_14_214212_create_group_member_table.php b/app/database/migrations/2020_09_14_214212_create_group_member_table.php deleted file mode 100644 index 0c6761ea4..000000000 --- a/app/database/migrations/2020_09_14_214212_create_group_member_table.php +++ /dev/null @@ -1,38 +0,0 @@ -id(); - $table->foreignId('group_id')->constrained(); - $table->foreignId('member_id')->constrained(); - $table->foreignId('term_id')->constrained(); - $table->date('start_date'); - $table->date('end_date')->nullable(); - $table->timestamps(); - - $table->unique(['member_id', 'start_date']); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('group_memberships'); - } -} diff --git a/app/database/migrations/2020_09_15_143245_create_documents_table.php b/app/database/migrations/2020_09_15_143245_create_documents_table.php deleted file mode 100644 index 11e897c2c..000000000 --- a/app/database/migrations/2020_09_15_143245_create_documents_table.php +++ /dev/null @@ -1,38 +0,0 @@ -id(); - $table->char('type', 2); - $table->foreignId('term_id')->constrained(); - $table->unsignedSmallInteger('number'); - $table->year('year'); - $table->string('title')->nullable(); - $table->timestamps(); - - $table->unique(['type', 'term_id', 'number', 'year']); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('documents'); - } -} diff --git a/app/database/migrations/2020_09_15_213145_create_votes_table.php b/app/database/migrations/2020_09_15_213145_create_votes_table.php deleted file mode 100644 index 387460fff..000000000 --- a/app/database/migrations/2020_09_15_213145_create_votes_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->foreignId('term_id')->constrained(); - $table->foreignId('document_id')->nullable()->constrained(); - $table->unsignedSmallInteger('doceo_vote_id')->unique(); - $table->date('date'); - $table->string('description')->nullable(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('votes'); - } -} diff --git a/app/database/migrations/2020_09_16_084515_create_member_vote_table.php b/app/database/migrations/2020_09_16_084515_create_member_vote_table.php deleted file mode 100644 index f93c151a2..000000000 --- a/app/database/migrations/2020_09_16_084515_create_member_vote_table.php +++ /dev/null @@ -1,34 +0,0 @@ -foreignId('member_id')->constrained(); - $table->foreignId('vote_id')->constrained(); - $table->string('position', 16); - - $table->unique(['member_id', 'vote_id']); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('member_vote'); - } -} diff --git a/app/database/migrations/2020_09_17_000103_normalize_members_table.php b/app/database/migrations/2020_09_17_000103_normalize_members_table.php deleted file mode 100644 index 4283a8c4e..000000000 --- a/app/database/migrations/2020_09_17_000103_normalize_members_table.php +++ /dev/null @@ -1,40 +0,0 @@ -string('first_name_lower')->nullable(); - $table->string('last_name_lower')->nullable(); - }); - - DB::table('members')->orderBy('id')->each(function ($member) { - DB::table('members')->where('id', $member->id)->update([ - 'first_name_lower' => Str::lower($member->first_name), - 'last_name_lower' => Str::lower($member->last_name), - ]); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - // - } -} diff --git a/app/database/migrations/2020_09_17_160515_rename_name_columns_in_members_table.php b/app/database/migrations/2020_09_17_160515_rename_name_columns_in_members_table.php deleted file mode 100644 index 897a535b4..000000000 --- a/app/database/migrations/2020_09_17_160515_rename_name_columns_in_members_table.php +++ /dev/null @@ -1,40 +0,0 @@ -renameColumn('first_name_lower', 'first_name_normalized'); - }); - - Schema::table('members', function (Blueprint $table) { - $table->renameColumn('last_name_lower', 'last_name_normalized'); - }); - - Schema::enableForeignKeyConstraints(); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::table('members', function (Blueprint $table) { - // - }); - } -} diff --git a/app/database/migrations/2020_09_18_111948_add_stats_column_to_votes_table.php b/app/database/migrations/2020_09_18_111948_add_stats_column_to_votes_table.php deleted file mode 100644 index df140d3ca..000000000 --- a/app/database/migrations/2020_09_18_111948_add_stats_column_to_votes_table.php +++ /dev/null @@ -1,32 +0,0 @@ -jsonb('stats')->default('{}'); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::table('votes', function (Blueprint $table) { - $table->dropColumn('stats'); - }); - } -} diff --git a/app/database/migrations/2020_09_19_211621_fix_column_types.php b/app/database/migrations/2020_09_19_211621_fix_column_types.php deleted file mode 100644 index 4c9a92955..000000000 --- a/app/database/migrations/2020_09_19_211621_fix_column_types.php +++ /dev/null @@ -1,39 +0,0 @@ -integer('number')->change(); - }); - - Schema::table('votes', function (Blueprint $table) { - $table->integer('doceo_vote_id')->change(); - $table->text('description')->change(); - }); - - Schema::table('member_vote', function (Blueprint $table) { - $table->unsignedSmallInteger('position')->change(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - // - } -} diff --git a/app/database/migrations/2020_09_20_080952_add_indexes.php b/app/database/migrations/2020_09_20_080952_add_indexes.php deleted file mode 100644 index 25bc5d5f7..000000000 --- a/app/database/migrations/2020_09_20_080952_add_indexes.php +++ /dev/null @@ -1,48 +0,0 @@ -index(['last_name_normalized', 'first_name_normalized']); - - $table->index('country'); - }); - - Schema::table('votes', function (Blueprint $table) { - $table->index('date'); - }); - - Schema::table('member_vote', function (Blueprint $table) { - $table->primary(['member_id', 'vote_id']); - }); - - Schema::table('group_memberships', function (Blueprint $table) { - // During imports, group memberships are fetched for a known - // term and start/end date - $table->index(['term_id', 'start_date', 'end_date']); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - // - } -} diff --git a/app/database/migrations/2021_01_23_174314_update_title_column_documents_table.php b/app/database/migrations/2021_01_23_174314_update_title_column_documents_table.php deleted file mode 100644 index de29d64ce..000000000 --- a/app/database/migrations/2021_01_23_174314_update_title_column_documents_table.php +++ /dev/null @@ -1,30 +0,0 @@ -text('title')->change(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - // - } -} diff --git a/app/database/migrations/2021_02_07_094738_create_procedures_table.php b/app/database/migrations/2021_02_07_094738_create_procedures_table.php deleted file mode 100644 index b6fa131ea..000000000 --- a/app/database/migrations/2021_02_07_094738_create_procedures_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->char('type', 3); - $table->unsignedSmallInteger('number'); - $table->year('year'); - $table->text('title'); - - $table->unique(['type', 'number', 'year']); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('procedures'); - } -} diff --git a/app/database/migrations/2021_02_07_102027_add_procedure_id_column_to_documents_table.php b/app/database/migrations/2021_02_07_102027_add_procedure_id_column_to_documents_table.php deleted file mode 100644 index 4eaf822f1..000000000 --- a/app/database/migrations/2021_02_07_102027_add_procedure_id_column_to_documents_table.php +++ /dev/null @@ -1,32 +0,0 @@ -foreignId('procedure_id')->nullable()->constrained(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::table('documents', function (Blueprint $table) { - // - }); - } -} diff --git a/app/database/migrations/2021_04_04_104512_add_subvote_description_column_to_votes_table.php b/app/database/migrations/2021_04_04_104512_add_subvote_description_column_to_votes_table.php deleted file mode 100644 index b5e198abc..000000000 --- a/app/database/migrations/2021_04_04_104512_add_subvote_description_column_to_votes_table.php +++ /dev/null @@ -1,32 +0,0 @@ -string('subvote_description')->nullable(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::table('votes', function (Blueprint $table) { - // - }); - } -} diff --git a/app/database/migrations/2021_04_04_104536_add_vote_type_column_to_votes_table.php b/app/database/migrations/2021_04_04_104536_add_vote_type_column_to_votes_table.php deleted file mode 100644 index 89c4e3a06..000000000 --- a/app/database/migrations/2021_04_04_104536_add_vote_type_column_to_votes_table.php +++ /dev/null @@ -1,32 +0,0 @@ -unsignedSmallInteger('vote_type'); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::table('votes', function (Blueprint $table) { - // - }); - } -} diff --git a/app/database/migrations/2021_04_04_132954_rename_vote_type_column_to_type_column_in_votes_table.php b/app/database/migrations/2021_04_04_132954_rename_vote_type_column_to_type_column_in_votes_table.php deleted file mode 100644 index 8214093d7..000000000 --- a/app/database/migrations/2021_04_04_132954_rename_vote_type_column_to_type_column_in_votes_table.php +++ /dev/null @@ -1,32 +0,0 @@ -renameColumn('vote_type', 'type'); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::table('votes', function (Blueprint $table) { - // - }); - } -} diff --git a/app/database/migrations/2021_04_04_143826_add_delete_cascade_to_vote_id_column_on_member_vote_table.php b/app/database/migrations/2021_04_04_143826_add_delete_cascade_to_vote_id_column_on_member_vote_table.php deleted file mode 100644 index a81a1ab52..000000000 --- a/app/database/migrations/2021_04_04_143826_add_delete_cascade_to_vote_id_column_on_member_vote_table.php +++ /dev/null @@ -1,33 +0,0 @@ -dropForeign(['vote_id']); - $table->foreign('vote_id')->references('id')->on('votes')->onDelete('cascade'); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::table('member_vote', function (Blueprint $table) { - // - }); - } -} diff --git a/app/database/migrations/2021_05_01_124247_drop_documents_and_procedures_tables.php b/app/database/migrations/2021_05_01_124247_drop_documents_and_procedures_tables.php deleted file mode 100644 index 282abae3c..000000000 --- a/app/database/migrations/2021_05_01_124247_drop_documents_and_procedures_tables.php +++ /dev/null @@ -1,34 +0,0 @@ -dropForeign(['document_id']); - $table->dropColumn('document_id'); - }); - - Schema::dropIfExists('documents'); - Schema::dropIfExists('procedures'); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - // - } -} diff --git a/app/database/migrations/2021_05_01_131041_rename_votes_table_to_voting_lists_table.php b/app/database/migrations/2021_05_01_131041_rename_votes_table_to_voting_lists_table.php deleted file mode 100644 index 3db4dab7a..000000000 --- a/app/database/migrations/2021_05_01_131041_rename_votes_table_to_voting_lists_table.php +++ /dev/null @@ -1,35 +0,0 @@ -dropColumn('type'); - $table->dropColumn('subvote_description'); - }); - - Schema::rename('votes', 'voting_lists'); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::table('voting_lists', function (Blueprint $table) { - // - }); - } -} diff --git a/app/database/migrations/2021_05_01_134929_rename_member_vote_table_to_votings_table.php b/app/database/migrations/2021_05_01_134929_rename_member_vote_table_to_votings_table.php deleted file mode 100644 index 309910565..000000000 --- a/app/database/migrations/2021_05_01_134929_rename_member_vote_table_to_votings_table.php +++ /dev/null @@ -1,30 +0,0 @@ -primary(['voting_list_id', 'member_id']); - $table->foreignId('voting_list_id')->constrained()->onDelete('cascade'); - $table->foreignId('member_id')->constrained(); - $table->unsignedSmallInteger('position'); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - // - } -} diff --git a/app/database/migrations/2021_05_01_145756_add_reference_column_to_voting_lists_table.php b/app/database/migrations/2021_05_01_145756_add_reference_column_to_voting_lists_table.php deleted file mode 100644 index 44775878b..000000000 --- a/app/database/migrations/2021_05_01_145756_add_reference_column_to_voting_lists_table.php +++ /dev/null @@ -1,32 +0,0 @@ -string('reference')->nullable(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::table('voting_lists', function (Blueprint $table) { - // - }); - } -} diff --git a/app/database/migrations/2021_05_01_163059_create_vote_collections_table.php b/app/database/migrations/2021_05_01_163059_create_vote_collections_table.php deleted file mode 100644 index dea440633..000000000 --- a/app/database/migrations/2021_05_01_163059_create_vote_collections_table.php +++ /dev/null @@ -1,35 +0,0 @@ -string('title'); - $table->string('reference'); - $table->foreignId('term_id')->constrained(); - $table->date('date'); - $table->id(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('vote_collections'); - } -} diff --git a/app/database/migrations/2021_05_01_165716_add_index_on_vote_collections_table.php b/app/database/migrations/2021_05_01_165716_add_index_on_vote_collections_table.php deleted file mode 100644 index 94f804060..000000000 --- a/app/database/migrations/2021_05_01_165716_add_index_on_vote_collections_table.php +++ /dev/null @@ -1,30 +0,0 @@ -unique(['term_id', 'date', 'title']); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - // - } -} diff --git a/app/database/migrations/2021_05_08_084645_recreate_votes_table.php b/app/database/migrations/2021_05_08_084645_recreate_votes_table.php deleted file mode 100644 index 013586fde..000000000 --- a/app/database/migrations/2021_05_08_084645_recreate_votes_table.php +++ /dev/null @@ -1,41 +0,0 @@ -id(); - $table->timestamps(); - $table->string('subject')->nullable(); - $table->string('author')->nullable(); - $table->unsignedSmallInteger('result'); - $table->unsignedSmallInteger('type'); - $table->unsignedSmallInteger('split_part')->nullable(); - $table->string('amendment')->nullable(); - }); - - Schema::table('voting_lists', function (Blueprint $table) { - $table->foreignId('vote_id')->nullable()->constrained(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('votes'); - } -} diff --git a/app/database/migrations/2021_05_08_091915_add_vote_collection_id_on_votes_table.php b/app/database/migrations/2021_05_08_091915_add_vote_collection_id_on_votes_table.php deleted file mode 100644 index 6ce97b354..000000000 --- a/app/database/migrations/2021_05_08_091915_add_vote_collection_id_on_votes_table.php +++ /dev/null @@ -1,30 +0,0 @@ -foreignId('vote_collection_id')->constrained(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - // - } -} diff --git a/app/database/migrations/2021_05_08_142059_add_formatted_column_to_votes_table.php b/app/database/migrations/2021_05_08_142059_add_formatted_column_to_votes_table.php deleted file mode 100644 index 788cc376c..000000000 --- a/app/database/migrations/2021_05_08_142059_add_formatted_column_to_votes_table.php +++ /dev/null @@ -1,32 +0,0 @@ -string('formatted'); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::table('votes', function (Blueprint $table) { - // - }); - } -} diff --git a/app/database/migrations/2021_05_08_184611_change_column_amendment_and_formatted_on_votes_table_to_text.php b/app/database/migrations/2021_05_08_184611_change_column_amendment_and_formatted_on_votes_table_to_text.php deleted file mode 100644 index ba8cf7999..000000000 --- a/app/database/migrations/2021_05_08_184611_change_column_amendment_and_formatted_on_votes_table_to_text.php +++ /dev/null @@ -1,31 +0,0 @@ -text('amendment')->change(); - $table->text('formatted')->change(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - // - } -} diff --git a/app/database/migrations/2021_05_08_185600_make_reference_column_on_vote_collections_table_nullable.php b/app/database/migrations/2021_05_08_185600_make_reference_column_on_vote_collections_table_nullable.php deleted file mode 100644 index c4453acec..000000000 --- a/app/database/migrations/2021_05_08_185600_make_reference_column_on_vote_collections_table_nullable.php +++ /dev/null @@ -1,30 +0,0 @@ -string('reference')->nullable()->change(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - // - } -} diff --git a/app/database/migrations/2021_05_15_092214_add_remarks_column_to_votes_table.php b/app/database/migrations/2021_05_15_092214_add_remarks_column_to_votes_table.php deleted file mode 100644 index e8f954094..000000000 --- a/app/database/migrations/2021_05_15_092214_add_remarks_column_to_votes_table.php +++ /dev/null @@ -1,30 +0,0 @@ -string('remarks')->nullable(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - // - } -} diff --git a/app/database/migrations/2021_05_15_130607_set_vote_id_on_voting_list_table_to_null_on_vote_deletion.php b/app/database/migrations/2021_05_15_130607_set_vote_id_on_voting_list_table_to_null_on_vote_deletion.php deleted file mode 100644 index 8822c0961..000000000 --- a/app/database/migrations/2021_05_15_130607_set_vote_id_on_voting_list_table_to_null_on_vote_deletion.php +++ /dev/null @@ -1,31 +0,0 @@ -dropForeign(['vote_id']); - $table->foreign('vote_id')->references('id')->on('votes')->onDelete('set null'); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - // - } -} diff --git a/app/database/migrations/2021_05_15_152701_add_reference_and_subheading_columns_to_votes_table.php b/app/database/migrations/2021_05_15_152701_add_reference_and_subheading_columns_to_votes_table.php deleted file mode 100644 index 56816f8bc..000000000 --- a/app/database/migrations/2021_05_15_152701_add_reference_and_subheading_columns_to_votes_table.php +++ /dev/null @@ -1,33 +0,0 @@ -string('subheading')->nullable(); - $table->string('reference')->nullable(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::table('votes', function (Blueprint $table) { - // - }); - } -} diff --git a/app/database/migrations/2021_05_29_091941_add_abbreviation_and_name_on_groups_table.php b/app/database/migrations/2021_05_29_091941_add_abbreviation_and_name_on_groups_table.php deleted file mode 100644 index 4eb41f889..000000000 --- a/app/database/migrations/2021_05_29_091941_add_abbreviation_and_name_on_groups_table.php +++ /dev/null @@ -1,31 +0,0 @@ -string('abbreviation')->nullable(); - $table->string('name')->nullable(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - // - } -} diff --git a/app/database/migrations/2021_08_11_085327_create_summaries_table.php b/app/database/migrations/2021_08_11_085327_create_summaries_table.php deleted file mode 100644 index 42249a47f..000000000 --- a/app/database/migrations/2021_08_11_085327_create_summaries_table.php +++ /dev/null @@ -1,36 +0,0 @@ -id(); - $table->timestamps(); - - $table->string('reference'); - $table->text('text'); - - $table->unique(['reference']); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('summaries'); - } -} diff --git a/app/database/migrations/2021_08_11_105645_create_sessions_table.php b/app/database/migrations/2021_08_11_105645_create_sessions_table.php deleted file mode 100644 index a13e66012..000000000 --- a/app/database/migrations/2021_08_11_105645_create_sessions_table.php +++ /dev/null @@ -1,34 +0,0 @@ -date('start_date'); - $table->date('end_date'); - $table->unsignedSmallInteger('location'); - $table->id(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('sessions'); - } -} diff --git a/app/database/migrations/2021_08_11_131657_add_index_on_sessions_table.php b/app/database/migrations/2021_08_11_131657_add_index_on_sessions_table.php deleted file mode 100644 index a8b7db3bd..000000000 --- a/app/database/migrations/2021_08_11_131657_add_index_on_sessions_table.php +++ /dev/null @@ -1,30 +0,0 @@ -unique(['start_date', 'end_date']); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - // - } -} diff --git a/app/database/migrations/2021_08_11_132021_add_session_id_column_to_votes_table.php b/app/database/migrations/2021_08_11_132021_add_session_id_column_to_votes_table.php deleted file mode 100644 index 13e713a49..000000000 --- a/app/database/migrations/2021_08_11_132021_add_session_id_column_to_votes_table.php +++ /dev/null @@ -1,32 +0,0 @@ -foreignId('session_id')->nullable()->constrained(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::table('votes', function (Blueprint $table) { - // - }); - } -} diff --git a/app/database/migrations/2021_08_11_135808_add_oeil_id_to_summaries_table.php b/app/database/migrations/2021_08_11_135808_add_oeil_id_to_summaries_table.php deleted file mode 100644 index 7788d88e3..000000000 --- a/app/database/migrations/2021_08_11_135808_add_oeil_id_to_summaries_table.php +++ /dev/null @@ -1,32 +0,0 @@ -unsignedInteger('oeil_id'); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::table('summaries', function (Blueprint $table) { - // - }); - } -} diff --git a/app/database/migrations/2021_08_16_082550_increase_title_length_to_512_chars_in_vote_collections_table.php b/app/database/migrations/2021_08_16_082550_increase_title_length_to_512_chars_in_vote_collections_table.php deleted file mode 100644 index 3df46c78c..000000000 --- a/app/database/migrations/2021_08_16_082550_increase_title_length_to_512_chars_in_vote_collections_table.php +++ /dev/null @@ -1,44 +0,0 @@ -index('term_id'); - $table->dropUnique('vote_collections_term_id_date_title_unique'); - }); - - Schema::table('vote_collections', function (Blueprint $table) { - $table->string('title', 512)->change(); - - // Recreate the unique index - $table->unique(['term_id', 'date', 'title']); - - // Drop the temporary index - $table->dropUnique('vote_collections_term_id_index'); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - // - } -} diff --git a/app/database/migrations/2021_08_17_161712_make_doceo_vote_id_nullable.php b/app/database/migrations/2021_08_17_161712_make_doceo_vote_id_nullable.php deleted file mode 100644 index 70c52b063..000000000 --- a/app/database/migrations/2021_08_17_161712_make_doceo_vote_id_nullable.php +++ /dev/null @@ -1,30 +0,0 @@ -string('doceo_vote_id')->nullable()->change(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - // - } -} diff --git a/app/database/migrations/2021_08_20_084406_add_last_in_collection_collumn_on_votes_table.php b/app/database/migrations/2021_08_20_084406_add_last_in_collection_collumn_on_votes_table.php deleted file mode 100644 index e0fb2faa2..000000000 --- a/app/database/migrations/2021_08_20_084406_add_last_in_collection_collumn_on_votes_table.php +++ /dev/null @@ -1,32 +0,0 @@ -boolean('final')->default(0); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::table('votes', function (Blueprint $table) { - $table->dropColumn('final'); - }); - } -} diff --git a/app/database/migrations/2021_08_20_151310_fill_final_collumn_on_votes_table.php b/app/database/migrations/2021_08_20_151310_fill_final_collumn_on_votes_table.php deleted file mode 100644 index 8fb67bee1..000000000 --- a/app/database/migrations/2021_08_20_151310_fill_final_collumn_on_votes_table.php +++ /dev/null @@ -1,37 +0,0 @@ -get(); - - foreach ($collections as $collection) { - $finalVote = DB::table('votes') - ->select('id') - ->where('vote_collection_id', $collection->id) - ->orderByDesc('id') - ->first() - ->id; - - DB::update('update votes set final = 1 where id = ?', [$finalVote]); - } - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - // - } -} diff --git a/app/database/migrations/2021_08_23_162545_add_contact_field_to_members_table.php b/app/database/migrations/2021_08_23_162545_add_contact_field_to_members_table.php deleted file mode 100644 index df3f7c96c..000000000 --- a/app/database/migrations/2021_08_23_162545_add_contact_field_to_members_table.php +++ /dev/null @@ -1,34 +0,0 @@ -string('email')->nullable(); - $table->string('facebook')->nullable(); - $table->string('twitter')->nullable(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::table('members', function (Blueprint $table) { - // - }); - } -} diff --git a/app/database/migrations/2021_08_27_095918_add_unmatched_and_notes_collumn_on_votes_table.php b/app/database/migrations/2021_08_27_095918_add_unmatched_and_notes_collumn_on_votes_table.php deleted file mode 100644 index bb8a08d45..000000000 --- a/app/database/migrations/2021_08_27_095918_add_unmatched_and_notes_collumn_on_votes_table.php +++ /dev/null @@ -1,31 +0,0 @@ -string('notes')->nullable(); - $table->boolean('unmatched')->default(0); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - // - } -} diff --git a/app/database/migrations/2022_08_04_142632_add_notes_column_on_session_table.php b/app/database/migrations/2022_08_04_142632_add_notes_column_on_session_table.php deleted file mode 100644 index f0e0687bd..000000000 --- a/app/database/migrations/2022_08_04_142632_add_notes_column_on_session_table.php +++ /dev/null @@ -1,30 +0,0 @@ -string('notes')->nullable(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - // - } -} diff --git a/app/database/migrations/2022_09_20_134047_add_ignore_when_scraping_voting_lists_column_on_sessions_table.php b/app/database/migrations/2022_09_20_134047_add_ignore_when_scraping_voting_lists_column_on_sessions_table.php deleted file mode 100644 index 82e4374bd..000000000 --- a/app/database/migrations/2022_09_20_134047_add_ignore_when_scraping_voting_lists_column_on_sessions_table.php +++ /dev/null @@ -1,30 +0,0 @@ -boolean('ignore_when_scraping_voting_lists')->nullable(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - // - } -} diff --git a/app/database/seeds/DatabaseSeeder.php b/app/database/seeds/DatabaseSeeder.php deleted file mode 100644 index 237dfc5d0..000000000 --- a/app/database/seeds/DatabaseSeeder.php +++ /dev/null @@ -1,16 +0,0 @@ -call(UserSeeder::class); - } -} diff --git a/app/database/seeds/GroupSeeder.php b/app/database/seeds/GroupSeeder.php deleted file mode 100644 index 2150a6ed7..000000000 --- a/app/database/seeds/GroupSeeder.php +++ /dev/null @@ -1,84 +0,0 @@ - 'EPP', - 'name' => 'European People\'s Party', - 'abbreviation' => 'EPP', - ], - [ - 'code' => 'NI', - 'name' => 'Non-attached members', - 'abbreviation' => 'Non-attached', - ], - [ - 'code' => 'ID', - 'name' => 'Identity and Democracy', - 'abbreviation' => 'ID', - ], - [ - 'code' => 'SD', - 'name' => 'Progressive Alliance of Socialists and Democrats', - 'abbreviation' => 'S&D', - ], - [ - 'code' => 'ECR', - 'name' => 'European Conservatives and Reformists', - 'abbreviation' => 'ECR', - ], - [ - 'code' => 'GREENS', - 'name' => 'The Greens/European Free Aliance', - 'abbreviation' => 'Greens/EFA', - ], - [ - 'code' => 'RENEW', - 'name' => 'Renew Europe', - 'abbreviation' => 'Renew', - ], - [ - 'code' => 'LEFT', - 'name' => 'The Left in the European Parliament – GUE/NGL', - 'abbreviation' => 'The Left', - ], - [ - 'code' => 'GUE', - 'name' => 'Group of the European United Left - Nordic Green Left', - 'abbreviation' => 'GUE/NGL', - ], - [ - 'code' => 'EFDD', - 'name' => 'Europe of Freedom and Direct Democracy', - 'abbreviation' => 'EFDD', - ], - [ - 'code' => 'ALDE', - 'name' => 'Alliance of Liberals and Democrats for Europe', - 'abbreviation' => 'ALDE', - ], - [ - 'code' => 'ENF', - 'name' => 'Europe of Nations and Freedom', - 'abbreviation' => 'ENF', - ], - ]; - - /** - * Run the database seeds. - * - * @return void - */ - public function run() - { - foreach (self::GROUPS as $group) { - DB::table('groups')->upsert($group, 'code'); - } - } -} diff --git a/app/database/seeds/TermSeeder.php b/app/database/seeds/TermSeeder.php deleted file mode 100644 index a79071869..000000000 --- a/app/database/seeds/TermSeeder.php +++ /dev/null @@ -1,25 +0,0 @@ -insert([ - 'number' => $number, - ]); - } - } -} diff --git a/app/package-lock.json b/app/package-lock.json deleted file mode 100644 index 23e02f9cc..000000000 --- a/app/package-lock.json +++ /dev/null @@ -1,17937 +0,0 @@ -{ - "name": "app", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "dependencies": { - "@github/details-menu-element": "^1.0.12", - "@github/tab-container-element": "^3.2.0", - "alpinejs": "^3.12.0", - "quicklink": "^2.3.0" - }, - "devDependencies": { - "browser-sync": "^2.29.1", - "browser-sync-webpack-plugin": "^2.3.0", - "laravel-mix": "^6.0.49", - "postcss": "^8.2.13", - "prettier": "^2.8.7" - } - }, - "node_modules/@ampproject/remapping": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", - "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.1.0", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@ampproject/remapping/node_modules/@jridgewell/gen-mapping": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", - "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.0.0", - "@jridgewell/sourcemap-codec": "^1.4.10" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.19.3", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.19.3.tgz", - "integrity": "sha512-prBHMK4JYYK+wDjJF1q99KK4JLL+egWS4nmNqdlMUgCExMZ+iZW0hGhyC3VEbsPjvaN0TBhW//VIFwBrk8sEiw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.19.3", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.19.3.tgz", - "integrity": "sha512-WneDJxdsjEvyKtXKsaBGbDeiyOjR5vYq4HcShxnIbG0qixpoHjI3MqeZM9NDvsojNCEBItQE4juOo/bU6e72gQ==", - "dev": true, - "dependencies": { - "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.19.3", - "@babel/helper-compilation-targets": "^7.19.3", - "@babel/helper-module-transforms": "^7.19.0", - "@babel/helpers": "^7.19.0", - "@babel/parser": "^7.19.3", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.19.3", - "@babel/types": "^7.19.3", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.1", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/generator": { - "version": "7.19.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.19.3.tgz", - "integrity": "sha512-fqVZnmp1ncvZU757UzDheKZpfPgatqY59XtW2/j/18H7u76akb8xqvjw82f+i2UKd/ksYsSick/BCLQUUtJ/qQ==", - "dev": true, - "dependencies": { - "@babel/types": "^7.19.3", - "@jridgewell/gen-mapping": "^0.3.2", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", - "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz", - "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==", - "dev": true, - "dependencies": { - "@babel/helper-explode-assignable-expression": "^7.18.6", - "@babel/types": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.19.3", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.3.tgz", - "integrity": "sha512-65ESqLGyGmLvgR0mst5AdW1FkNlj9rQsCKduzEoEPhBCDFGXvz2jW6bXFG6i0/MrV2s7hhXjjb2yAzcPuQlLwg==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.19.3", - "@babel/helper-validator-option": "^7.18.6", - "browserslist": "^4.21.3", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.19.0.tgz", - "integrity": "sha512-NRz8DwF4jT3UfrmUoZjd0Uph9HQnP30t7Ash+weACcyNkiYTywpIjDBgReJMKgr+n86sn2nPVVmJ28Dm053Kqw==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-member-expression-to-functions": "^7.18.9", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-replace-supers": "^7.18.9", - "@babel/helper-split-export-declaration": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.19.0.tgz", - "integrity": "sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "regexpu-core": "^5.1.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz", - "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==", - "dev": true, - "dependencies": { - "@babel/helper-compilation-targets": "^7.17.7", - "@babel/helper-plugin-utils": "^7.16.7", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2", - "semver": "^6.1.2" - }, - "peerDependencies": { - "@babel/core": "^7.4.0-0" - } - }, - "node_modules/@babel/helper-define-polyfill-provider/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-explode-assignable-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz", - "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", - "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", - "dev": true, - "dependencies": { - "@babel/template": "^7.18.10", - "@babel/types": "^7.19.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", - "dev": true, - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz", - "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", - "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.19.0.tgz", - "integrity": "sha512-3HBZ377Fe14RbLIA+ac3sY4PTgpxHVkFrESaWhoI5PuyXPBBX8+C34qblV9G89ZtycGJCmCI/Ut+VUDK4bltNQ==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.18.6", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.19.0", - "@babel/types": "^7.19.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", - "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.19.0.tgz", - "integrity": "sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz", - "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-wrap-function": "^7.18.9", - "@babel/types": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-replace-supers": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz", - "integrity": "sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-member-expression-to-functions": "^7.18.9", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/traverse": "^7.19.1", - "@babel/types": "^7.19.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz", - "integrity": "sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==", - "dev": true, - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.9.tgz", - "integrity": "sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", - "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz", - "integrity": "sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", - "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-wrap-function": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.19.0.tgz", - "integrity": "sha512-txX8aN8CZyYGTwcLhlk87KRqncAzhh5TpQamZUa0/u3an36NtDpUP6bQgBCBcLeBs09R/OwQu3OjK0k/HwfNDg==", - "dev": true, - "dependencies": { - "@babel/helper-function-name": "^7.19.0", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.19.0", - "@babel/types": "^7.19.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.19.0.tgz", - "integrity": "sha512-DRBCKGwIEdqY3+rPJgG/dKfQy9+08rHIAJx8q2p+HSWP87s2HCrQmaAMMyMll2kIXKCW0cO1RdQskx15Xakftg==", - "dev": true, - "dependencies": { - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.19.0", - "@babel/types": "^7.19.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/parser": { - "version": "7.19.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.19.3.tgz", - "integrity": "sha512-pJ9xOlNWHiy9+FuFP09DEAFbAn4JskgRsVcc169w2xRBC3FRGuQEwjeIMMND9L2zc0iEhO/tGv4Zq+km+hxNpQ==", - "dev": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz", - "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz", - "integrity": "sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", - "@babel/plugin-proposal-optional-chaining": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.13.0" - } - }, - "node_modules/@babel/plugin-proposal-async-generator-functions": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.19.1.tgz", - "integrity": "sha512-0yu8vNATgLy4ivqMNBIwb1HebCelqN7YX8SL3FDXORv/RqT0zEEWUCH4GH44JsSrvCu6GqnAdR5EBFAPeNBB4Q==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-remap-async-to-generator": "^7.18.9", - "@babel/plugin-syntax-async-generators": "^7.8.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-class-properties": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", - "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-class-static-block": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz", - "integrity": "sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-class-static-block": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.12.0" - } - }, - "node_modules/@babel/plugin-proposal-dynamic-import": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", - "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-export-namespace-from": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", - "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-json-strings": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", - "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-json-strings": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz", - "integrity": "sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", - "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-numeric-separator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", - "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.9.tgz", - "integrity": "sha512-kDDHQ5rflIeY5xl69CEqGEZ0KY369ehsCIEbTGb4siHG5BE9sga/T0r0OUwyZNLMmZE79E1kbsqAjwFCW4ds6Q==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.18.8", - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.18.8" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-optional-catch-binding": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", - "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-optional-chaining": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz", - "integrity": "sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-private-methods": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", - "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz", - "integrity": "sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-unicode-property-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", - "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.18.6.tgz", - "integrity": "sha512-/DU3RXad9+bZwrgWJQKbr39gYbJpLJHezqEzRzi/BHRlJ9zsQb4CK2CA/5apllXNomwA1qHwzvHl+AdEmC5krQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz", - "integrity": "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz", - "integrity": "sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==", - "dev": true, - "dependencies": { - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-remap-async-to-generator": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", - "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.9.tgz", - "integrity": "sha512-5sDIJRV1KtQVEbt/EIBwGy4T01uYIo4KRB3VUqzkhrAIOGx7AoctL9+Ux88btY0zXdDyPJ9mW+bg+v+XEkGmtw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-classes": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.19.0.tgz", - "integrity": "sha512-YfeEE9kCjqTS9IitkgfJuxjcEtLUHMqa8yUJ6zdz8vR7hKuo6mOy2C05P0F1tdMmDCeuyidKnlrw/iTppHcr2A==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-compilation-targets": "^7.19.0", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-replace-supers": "^7.18.9", - "@babel/helper-split-export-declaration": "^7.18.6", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz", - "integrity": "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.18.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.13.tgz", - "integrity": "sha512-TodpQ29XekIsex2A+YJPj5ax2plkGa8YYY6mFjCohk/IG9IY42Rtuj1FuDeemfg2ipxIFLzPeA83SIBnlhSIow==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz", - "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz", - "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz", - "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==", - "dev": true, - "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-for-of": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz", - "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-function-name": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", - "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", - "dev": true, - "dependencies": { - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-literals": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", - "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", - "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.6.tgz", - "integrity": "sha512-Pra5aXsmTsOnjM3IajS8rTaLCy++nGM4v3YR4esk5PCsyg9z8NA5oQLwxzMUtDBd8F+UmVza3VxoAaWCbzH1rg==", - "dev": true, - "dependencies": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "babel-plugin-dynamic-import-node": "^2.3.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.6.tgz", - "integrity": "sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q==", - "dev": true, - "dependencies": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-simple-access": "^7.18.6", - "babel-plugin-dynamic-import-node": "^2.3.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.0.tgz", - "integrity": "sha512-x9aiR0WXAWmOWsqcsnrzGR+ieaTMVyGyffPVA7F8cXAGt/UxefYv6uSHZLkAFChN5M5Iy1+wjE+xJuPt22H39A==", - "dev": true, - "dependencies": { - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-module-transforms": "^7.19.0", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-validator-identifier": "^7.18.6", - "babel-plugin-dynamic-import-node": "^2.3.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz", - "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==", - "dev": true, - "dependencies": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.1.tgz", - "integrity": "sha512-oWk9l9WItWBQYS4FgXD4Uyy5kq898lvkXpXQxoJEY1RnvPk4R/Dvu2ebXU9q8lP+rlMwUQTFf2Ok6d78ODa0kw==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.19.0", - "@babel/helper-plugin-utils": "^7.19.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-transform-new-target": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz", - "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-object-super": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", - "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-replace-supers": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-parameters": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.8.tgz", - "integrity": "sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", - "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz", - "integrity": "sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "regenerator-transform": "^0.15.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz", - "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-runtime": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.19.1.tgz", - "integrity": "sha512-2nJjTUFIzBMP/f/miLxEK9vxwW/KUXsdvN4sR//TmuDhe6yU2h57WmIOE12Gng3MDP/xpjUV/ToZRdcf8Yj4fA==", - "dev": true, - "dependencies": { - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-plugin-utils": "^7.19.0", - "babel-plugin-polyfill-corejs2": "^0.3.3", - "babel-plugin-polyfill-corejs3": "^0.6.0", - "babel-plugin-polyfill-regenerator": "^0.4.1", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", - "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-spread": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz", - "integrity": "sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz", - "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", - "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz", - "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz", - "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz", - "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/preset-env": { - "version": "7.19.3", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.19.3.tgz", - "integrity": "sha512-ziye1OTc9dGFOAXSWKUqQblYHNlBOaDl8wzqf2iKXJAltYiR3hKHUKmkt+S9PppW7RQpq4fFCrwwpIDj/f5P4w==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.19.3", - "@babel/helper-compilation-targets": "^7.19.3", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-validator-option": "^7.18.6", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", - "@babel/plugin-proposal-async-generator-functions": "^7.19.1", - "@babel/plugin-proposal-class-properties": "^7.18.6", - "@babel/plugin-proposal-class-static-block": "^7.18.6", - "@babel/plugin-proposal-dynamic-import": "^7.18.6", - "@babel/plugin-proposal-export-namespace-from": "^7.18.9", - "@babel/plugin-proposal-json-strings": "^7.18.6", - "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", - "@babel/plugin-proposal-numeric-separator": "^7.18.6", - "@babel/plugin-proposal-object-rest-spread": "^7.18.9", - "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", - "@babel/plugin-proposal-optional-chaining": "^7.18.9", - "@babel/plugin-proposal-private-methods": "^7.18.6", - "@babel/plugin-proposal-private-property-in-object": "^7.18.6", - "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.18.6", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-transform-arrow-functions": "^7.18.6", - "@babel/plugin-transform-async-to-generator": "^7.18.6", - "@babel/plugin-transform-block-scoped-functions": "^7.18.6", - "@babel/plugin-transform-block-scoping": "^7.18.9", - "@babel/plugin-transform-classes": "^7.19.0", - "@babel/plugin-transform-computed-properties": "^7.18.9", - "@babel/plugin-transform-destructuring": "^7.18.13", - "@babel/plugin-transform-dotall-regex": "^7.18.6", - "@babel/plugin-transform-duplicate-keys": "^7.18.9", - "@babel/plugin-transform-exponentiation-operator": "^7.18.6", - "@babel/plugin-transform-for-of": "^7.18.8", - "@babel/plugin-transform-function-name": "^7.18.9", - "@babel/plugin-transform-literals": "^7.18.9", - "@babel/plugin-transform-member-expression-literals": "^7.18.6", - "@babel/plugin-transform-modules-amd": "^7.18.6", - "@babel/plugin-transform-modules-commonjs": "^7.18.6", - "@babel/plugin-transform-modules-systemjs": "^7.19.0", - "@babel/plugin-transform-modules-umd": "^7.18.6", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.19.1", - "@babel/plugin-transform-new-target": "^7.18.6", - "@babel/plugin-transform-object-super": "^7.18.6", - "@babel/plugin-transform-parameters": "^7.18.8", - "@babel/plugin-transform-property-literals": "^7.18.6", - "@babel/plugin-transform-regenerator": "^7.18.6", - "@babel/plugin-transform-reserved-words": "^7.18.6", - "@babel/plugin-transform-shorthand-properties": "^7.18.6", - "@babel/plugin-transform-spread": "^7.19.0", - "@babel/plugin-transform-sticky-regex": "^7.18.6", - "@babel/plugin-transform-template-literals": "^7.18.9", - "@babel/plugin-transform-typeof-symbol": "^7.18.9", - "@babel/plugin-transform-unicode-escapes": "^7.18.10", - "@babel/plugin-transform-unicode-regex": "^7.18.6", - "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.19.3", - "babel-plugin-polyfill-corejs2": "^0.3.3", - "babel-plugin-polyfill-corejs3": "^0.6.0", - "babel-plugin-polyfill-regenerator": "^0.4.1", - "core-js-compat": "^3.25.1", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/preset-env/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/preset-modules": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", - "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-transform-dotall-regex": "^7.4.4", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/runtime": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.19.0.tgz", - "integrity": "sha512-eR8Lo9hnDS7tqkO7NsV+mKvCmv5boaXFSZ70DnfhcgiEne8hv9oCEd36Klw74EtizEqLsy4YnW8UWwpBVolHZA==", - "dev": true, - "dependencies": { - "regenerator-runtime": "^0.13.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/template": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", - "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.10", - "@babel/types": "^7.18.10" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.19.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.19.3.tgz", - "integrity": "sha512-qh5yf6149zhq2sgIXmwjnsvmnNQC2iw70UFjp4olxucKrWd/dvlUsBI88VSLUsnMNF7/vnOiA+nk1+yLoCqROQ==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.19.3", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.19.3", - "@babel/types": "^7.19.3", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/types": { - "version": "7.19.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.19.3.tgz", - "integrity": "sha512-hGCaQzIY22DJlDh9CH7NOxgKkFjBk0Cw9xDO1Xmh2151ti7wiGfQ3LauXzL4HP1fmFlTX6XjpRETTpUcv7wQLw==", - "dev": true, - "dependencies": { - "@babel/helper-string-parser": "^7.18.10", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@discoveryjs/json-ext": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", - "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", - "dev": true, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/@github/details-menu-element": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/@github/details-menu-element/-/details-menu-element-1.0.12.tgz", - "integrity": "sha512-Icbq+xw7Qjb6byfRtC5cjk/eAxb+Wc4F/WS+L6VTHLYEfi8q/akDtHgViGeu854IMiJ/qDosfOGXGgSrleud2w==" - }, - "node_modules/@github/tab-container-element": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@github/tab-container-element/-/tab-container-element-3.2.0.tgz", - "integrity": "sha512-to5ZJuywKK3KX53X1ifOcWjvUTQcBGdQ6Qkhm8L97xQ3ovICag1048M3YMpc+QSdr8xWeCBMnLeMnENqotB0Og==" - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", - "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.14", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz", - "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "node_modules/@leichtgewicht/ip-codec": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", - "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", - "dev": true - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz", - "integrity": "sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.4", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz", - "integrity": "sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz", - "integrity": "sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow==", - "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.4", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@socket.io/component-emitter": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", - "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==", - "dev": true - }, - "node_modules/@trysound/sax": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", - "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", - "dev": true, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/@types/babel__core": { - "version": "7.1.19", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.19.tgz", - "integrity": "sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "node_modules/@types/babel__generator": { - "version": "7.6.4", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", - "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__template": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", - "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__traverse": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.2.tgz", - "integrity": "sha512-FcFaxOr2V5KZCviw1TnutEMVUVsGt4D2hP1TAfXZAMKuHYW3xQhe3jTxNPWutgCJ3/X1c5yX8ZoGVEItxKbwBg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.3.0" - } - }, - "node_modules/@types/body-parser": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", - "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", - "dev": true, - "dependencies": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "node_modules/@types/bonjour": { - "version": "3.5.10", - "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz", - "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/clean-css": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/@types/clean-css/-/clean-css-4.2.6.tgz", - "integrity": "sha512-Ze1tf+LnGPmG6hBFMi0B4TEB0mhF7EiMM5oyjLDNPE9hxrPU0W+5+bHvO+eFPA+bt0iC1zkQMoU/iGdRVjcRbw==", - "dev": true, - "dependencies": { - "@types/node": "*", - "source-map": "^0.6.0" - } - }, - "node_modules/@types/connect": { - "version": "3.4.35", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", - "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/connect-history-api-fallback": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz", - "integrity": "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==", - "dev": true, - "dependencies": { - "@types/express-serve-static-core": "*", - "@types/node": "*" - } - }, - "node_modules/@types/cookie": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", - "dev": true - }, - "node_modules/@types/cors": { - "version": "2.8.12", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz", - "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==", - "dev": true - }, - "node_modules/@types/eslint": { - "version": "8.4.6", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.6.tgz", - "integrity": "sha512-/fqTbjxyFUaYNO7VcW5g+4npmqVACz1bB7RTHYuLj+PRjw9hrCwrUXVQFpChUS0JsyEFvMZ7U/PfmvWgxJhI9g==", - "dev": true, - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "node_modules/@types/eslint-scope": { - "version": "3.7.4", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", - "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", - "dev": true, - "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "node_modules/@types/estree": { - "version": "0.0.51", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", - "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", - "dev": true - }, - "node_modules/@types/express": { - "version": "4.17.14", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.14.tgz", - "integrity": "sha512-TEbt+vaPFQ+xpxFLFssxUDXj5cWCxZJjIcB7Yg0k0GMHGtgtQgpvx/MUQUeAkNbA9AAGrwkAsoeItdTgS7FMyg==", - "dev": true, - "dependencies": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.18", - "@types/qs": "*", - "@types/serve-static": "*" - } - }, - "node_modules/@types/express-serve-static-core": { - "version": "4.17.31", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.31.tgz", - "integrity": "sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q==", - "dev": true, - "dependencies": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*" - } - }, - "node_modules/@types/glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==", - "dev": true, - "dependencies": { - "@types/minimatch": "*", - "@types/node": "*" - } - }, - "node_modules/@types/http-proxy": { - "version": "1.17.9", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz", - "integrity": "sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/imagemin": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@types/imagemin/-/imagemin-7.0.0.tgz", - "integrity": "sha512-BiNd5FazD5ZmJUYD9txsbrttL0P0welrb9yAPn6ykKK3kWufwFsxYqw5KdggfZQDjiNYwsBrX+Fwei0Xsw4oAw==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/imagemin-gifsicle": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/@types/imagemin-gifsicle/-/imagemin-gifsicle-7.0.1.tgz", - "integrity": "sha512-kUz6sUh0P95JOS0RGEaaemWUrASuw+dLsWIveK2UZJx74id/B9epgblMkCk/r5MjUWbZ83wFvacG5Rb/f97gyA==", - "dev": true, - "dependencies": { - "@types/imagemin": "*" - } - }, - "node_modules/@types/imagemin-mozjpeg": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@types/imagemin-mozjpeg/-/imagemin-mozjpeg-8.0.1.tgz", - "integrity": "sha512-kMQWEoKxxhlnH4POI3qfW9DjXlQfi80ux3l2b3j5R3eudSCoUIzKQLkfMjNJ6eMYnMWBcB+rfQOWqIzdIwFGKw==", - "dev": true, - "dependencies": { - "@types/imagemin": "*" - } - }, - "node_modules/@types/imagemin-optipng": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/@types/imagemin-optipng/-/imagemin-optipng-5.2.1.tgz", - "integrity": "sha512-XCM/3q+HUL7v4zOqMI+dJ5dTxT+MUukY9KU49DSnYb/4yWtSMHJyADP+WHSMVzTR63J2ZvfUOzSilzBNEQW78g==", - "dev": true, - "dependencies": { - "@types/imagemin": "*" - } - }, - "node_modules/@types/imagemin-svgo": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@types/imagemin-svgo/-/imagemin-svgo-8.0.1.tgz", - "integrity": "sha512-YafkdrVAcr38U0Ln1C+L1n4SIZqC47VBHTyxCq7gTUSd1R9MdIvMcrljWlgU1M9O68WZDeQWUrKipKYfEOCOvQ==", - "dev": true, - "dependencies": { - "@types/imagemin": "*", - "@types/svgo": "^1" - } - }, - "node_modules/@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", - "dev": true - }, - "node_modules/@types/mime": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", - "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", - "dev": true - }, - "node_modules/@types/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-1z8k4wzFnNjVK/tlxvrWuK5WMt6mydWWP7+zvH5eFep4oj+UkrfiJTRtjCeBXNpwaA/FYqqtb4/QS4ianFpIRA==", - "dev": true - }, - "node_modules/@types/node": { - "version": "14.14.37", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.37.tgz", - "integrity": "sha512-XYmBiy+ohOR4Lh5jE379fV2IU+6Jn4g5qASinhitfyO71b/sCo6MKsMLF5tc7Zf2CE8hViVQyYSobJNke8OvUw==", - "dev": true - }, - "node_modules/@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", - "dev": true - }, - "node_modules/@types/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", - "dev": true - }, - "node_modules/@types/range-parser": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", - "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", - "dev": true - }, - "node_modules/@types/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", - "dev": true - }, - "node_modules/@types/serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==", - "dev": true, - "dependencies": { - "@types/express": "*" - } - }, - "node_modules/@types/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==", - "dev": true, - "dependencies": { - "@types/mime": "*", - "@types/node": "*" - } - }, - "node_modules/@types/sockjs": { - "version": "0.3.33", - "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", - "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/svgo": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/svgo/-/svgo-1.3.5.tgz", - "integrity": "sha512-y9Pw8IK50OqFRDpdI9Is29KlWiENVW9FDvlTmGHelvTfR2brYFJbsClvulZfeq6YKacFrDsG9a39w0kJZdHLaw==", - "dev": true - }, - "node_modules/@types/ws": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", - "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@vue/reactivity": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.1.5.tgz", - "integrity": "sha512-1tdfLmNjWG6t/CsPldh+foumYFo3cpyCHgBYQ34ylaMsJ+SNHQ1kApMIa8jN+i593zQuaw3AdWH0nJTARzCFhg==", - "dependencies": { - "@vue/shared": "3.1.5" - } - }, - "node_modules/@vue/shared": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.1.5.tgz", - "integrity": "sha512-oJ4F3TnvpXaQwZJNF3ZK+kLPHKarDmJjJ6jyzVNDKH9md1dptjC7lWR//jrGuLdek/U6iltWxqAnYOu8gCiOvA==" - }, - "node_modules/@webassemblyjs/ast": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", - "dev": true, - "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" - } - }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", - "dev": true, - "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" - } - }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", - "dev": true, - "dependencies": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", - "dev": true, - "dependencies": { - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", - "dev": true - }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" - } - }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" - } - }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webpack-cli/configtest": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz", - "integrity": "sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==", - "dev": true, - "peerDependencies": { - "webpack": "4.x.x || 5.x.x", - "webpack-cli": "4.x.x" - } - }, - "node_modules/@webpack-cli/info": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.5.0.tgz", - "integrity": "sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==", - "dev": true, - "dependencies": { - "envinfo": "^7.7.3" - }, - "peerDependencies": { - "webpack-cli": "4.x.x" - } - }, - "node_modules/@webpack-cli/serve": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.7.0.tgz", - "integrity": "sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==", - "dev": true, - "peerDependencies": { - "webpack-cli": "4.x.x" - }, - "peerDependenciesMeta": { - "webpack-dev-server": { - "optional": true - } - } - }, - "node_modules/@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true - }, - "node_modules/@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true - }, - "node_modules/accepts": { - "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.34", - "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/acorn": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", - "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", - "dev": true, - "peerDependencies": { - "acorn": "^8" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "node_modules/ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", - "dev": true, - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, - "node_modules/ajv-formats/node_modules/ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-formats/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/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true - }, - "node_modules/alpinejs": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/alpinejs/-/alpinejs-3.12.0.tgz", - "integrity": "sha512-YENcRBA9dlwR8PsZNFMTHbmdlTNwd1BkCeivPvOzzCKHas6AfwNRsDK9UEFmE5dXTMEZjnnpCTxV8vkdpWiOCw==", - "dependencies": { - "@vue/reactivity": "~3.1.1" - } - }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-html-community": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", - "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", - "dev": true, - "engines": [ - "node >= 0.8.0" - ], - "bin": { - "ansi-html": "bin/ansi-html" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "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/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/asn1.js": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", - "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", - "dev": true, - "dependencies": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "safer-buffer": "^2.1.0" - } - }, - "node_modules/asn1.js/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/assert": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", - "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", - "dev": true, - "dependencies": { - "object-assign": "^4.1.1", - "util": "0.10.3" - } - }, - "node_modules/assert/node_modules/inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", - "dev": true - }, - "node_modules/assert/node_modules/util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", - "dev": true, - "dependencies": { - "inherits": "2.0.1" - } - }, - "node_modules/async": { - "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-each-series": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/async-each-series/-/async-each-series-0.1.1.tgz", - "integrity": "sha512-p4jj6Fws4Iy2m0iCmI2am2ZNZCgbdgE+P8F/8csmn2vx7ixXrO2zGcuNsD46X5uZSVecmkEy/M06X2vG8KD6dQ==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/autoprefixer": { - "version": "10.4.12", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.12.tgz", - "integrity": "sha512-WrCGV9/b97Pa+jtwf5UGaRjgQIg7OK3D06GnoYoZNcG1Xb8Gt3EfuKjlhh9i/VtT16g6PYjZ69jdJ2g8FxSC4Q==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/autoprefixer" - } - ], - "dependencies": { - "browserslist": "^4.21.4", - "caniuse-lite": "^1.0.30001407", - "fraction.js": "^4.2.0", - "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", - "postcss-value-parser": "^4.2.0" - }, - "bin": { - "autoprefixer": "bin/autoprefixer" - }, - "engines": { - "node": "^10 || ^12 || >=14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", - "dev": true, - "dependencies": { - "follow-redirects": "^1.14.0" - } - }, - "node_modules/babel-loader": { - "version": "8.2.5", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.5.tgz", - "integrity": "sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==", - "dev": true, - "dependencies": { - "find-cache-dir": "^3.3.1", - "loader-utils": "^2.0.0", - "make-dir": "^3.1.0", - "schema-utils": "^2.6.5" - }, - "engines": { - "node": ">= 8.9" - }, - "peerDependencies": { - "@babel/core": "^7.0.0", - "webpack": ">=2" - } - }, - "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", - "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", - "dev": true, - "dependencies": { - "object.assign": "^4.1.0" - } - }, - "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz", - "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.17.7", - "@babel/helper-define-polyfill-provider": "^0.3.3", - "semver": "^6.1.1" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz", - "integrity": "sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==", - "dev": true, - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.3.3", - "core-js-compat": "^3.25.1" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz", - "integrity": "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==", - "dev": true, - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.3.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "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 - }, - "node_modules/base64id": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", - "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", - "dev": true, - "engines": { - "node": "^4.5.0 || >= 5.9" - } - }, - "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": "*" - } - }, - "node_modules/bn.js": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", - "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==", - "dev": true - }, - "node_modules/body-parser": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", - "dev": true, - "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.11.0", - "raw-body": "2.5.1", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/body-parser/node_modules/bytes": { - "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/body-parser/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/body-parser/node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/body-parser/node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "dev": true, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/body-parser/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/body-parser/node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dev": true, - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/bonjour-service": { - "version": "1.0.14", - "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.0.14.tgz", - "integrity": "sha512-HIMbgLnk1Vqvs6B4Wq5ep7mxvj9sGz5d1JJyDNSGNIdA/w2MCz6GTjWTdjqOJV1bEPj+6IkxDvWNFKEBxNt4kQ==", - "dev": true, - "dependencies": { - "array-flatten": "^2.1.2", - "dns-equal": "^1.0.0", - "fast-deep-equal": "^3.1.3", - "multicast-dns": "^7.2.5" - } - }, - "node_modules/boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "dev": true - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", - "dev": true - }, - "node_modules/browser-sync": { - "version": "2.29.1", - "resolved": "https://registry.npmjs.org/browser-sync/-/browser-sync-2.29.1.tgz", - "integrity": "sha512-WXy9HMJVQaNUTPjmai330E2fnDA6W84l/vBILGkYu9yHXIpWw1gJYjdQWDfEhLFljYUHNTN9jM3GCej2T55m+g==", - "dev": true, - "dependencies": { - "browser-sync-client": "^2.29.1", - "browser-sync-ui": "^2.29.1", - "bs-recipes": "1.3.4", - "bs-snippet-injector": "^2.0.1", - "chalk": "4.1.2", - "chokidar": "^3.5.1", - "connect": "3.6.6", - "connect-history-api-fallback": "^1", - "dev-ip": "^1.0.1", - "easy-extender": "^2.3.4", - "eazy-logger": "^4.0.1", - "etag": "^1.8.1", - "fresh": "^0.5.2", - "fs-extra": "3.0.1", - "http-proxy": "^1.18.1", - "immutable": "^3", - "localtunnel": "^2.0.1", - "micromatch": "^4.0.2", - "opn": "5.3.0", - "portscanner": "2.2.0", - "qs": "^6.11.0", - "raw-body": "^2.3.2", - "resp-modifier": "6.0.2", - "rx": "4.1.0", - "send": "0.16.2", - "serve-index": "1.9.1", - "serve-static": "1.13.2", - "server-destroy": "1.0.1", - "socket.io": "^4.4.1", - "ua-parser-js": "^1.0.33", - "yargs": "^17.3.1" - }, - "bin": { - "browser-sync": "dist/bin.js" - }, - "engines": { - "node": ">= 8.0.0" - } - }, - "node_modules/browser-sync-client": { - "version": "2.29.1", - "resolved": "https://registry.npmjs.org/browser-sync-client/-/browser-sync-client-2.29.1.tgz", - "integrity": "sha512-aESnjt3rU7CZpzjyqzhIC2UJ3MVhzRis7cPKkGbyYWDf/wnbxyRa3fFenF3Qx9061/guY3HHhD67uiTVV26DVg==", - "dev": true, - "dependencies": { - "etag": "1.8.1", - "fresh": "0.5.2", - "mitt": "^1.1.3" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/browser-sync-ui": { - "version": "2.29.1", - "resolved": "https://registry.npmjs.org/browser-sync-ui/-/browser-sync-ui-2.29.1.tgz", - "integrity": "sha512-MB7SAiUgVUrhipO2xyO1sheC9H0+LKXPQ3L1tQWcZ3AgizBnUNKAqDZPSwe4grNSa8o8ImSAwJp7lMS6XYy1Dw==", - "dev": true, - "dependencies": { - "async-each-series": "0.1.1", - "chalk": "4.1.2", - "connect-history-api-fallback": "^1", - "immutable": "^3", - "server-destroy": "1.0.1", - "socket.io-client": "^4.4.1", - "stream-throttle": "^0.1.3" - } - }, - "node_modules/browser-sync-webpack-plugin": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/browser-sync-webpack-plugin/-/browser-sync-webpack-plugin-2.3.0.tgz", - "integrity": "sha512-MDvuRrTCtoL11dTdwMymo9CNJvYxJoW67gOO61cThfzHNX40S5WcBU+0bVQ86ll7r7aNpNgyzxF7RtnXMTDbyA==", - "dev": true, - "dependencies": { - "lodash": "^4" - }, - "peerDependencies": { - "browser-sync": "^2", - "webpack": "^1 || ^2 || ^3 || ^4 || ^5" - } - }, - "node_modules/browser-sync/node_modules/braces": { - "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" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browser-sync/node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/browser-sync/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/browser-sync/node_modules/fill-range": { - "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" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browser-sync/node_modules/fs-extra": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz", - "integrity": "sha1-N5TzeMWLNC6n27sjCVEJxLO2IpE=", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^3.0.0", - "universalify": "^0.1.0" - } - }, - "node_modules/browser-sync/node_modules/http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", - "dev": true, - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/browser-sync/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/browser-sync/node_modules/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, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/browser-sync/node_modules/jsonfile": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.1.tgz", - "integrity": "sha1-pezG9l9T9mLEQVx2daAzHQmS7GY=", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/browser-sync/node_modules/micromatch": { - "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" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/browser-sync/node_modules/mime": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", - "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", - "dev": true, - "bin": { - "mime": "cli.js" - } - }, - "node_modules/browser-sync/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/browser-sync/node_modules/send": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", - "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", - "dev": true, - "dependencies": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "~1.6.2", - "mime": "1.4.1", - "ms": "2.0.0", - "on-finished": "~2.3.0", - "range-parser": "~1.2.0", - "statuses": "~1.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/browser-sync/node_modules/serve-static": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", - "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", - "dev": true, - "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.2", - "send": "0.16.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/browser-sync/node_modules/setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true - }, - "node_modules/browser-sync/node_modules/statuses": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", - "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/browser-sync/node_modules/to-regex-range": { - "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" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/browser-sync/node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/browser-sync/node_modules/yargs": { - "version": "17.6.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.0.tgz", - "integrity": "sha512-8H/wTDqlSwoSnScvV2N/JHfLWOKuh5MVla9hqLjK3nsfyy6Y4kDSYSvkU5YCUEPOSnRXfIyx3Sq+B/IWudTo4g==", - "dev": true, - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/browser-sync/node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "dev": true, - "dependencies": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", - "dev": true, - "dependencies": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "node_modules/browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", - "dev": true, - "dependencies": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/browserify-rsa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", - "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", - "dev": true, - "dependencies": { - "bn.js": "^5.0.0", - "randombytes": "^2.0.1" - } - }, - "node_modules/browserify-sign": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", - "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", - "dev": true, - "dependencies": { - "bn.js": "^5.1.1", - "browserify-rsa": "^4.0.1", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "elliptic": "^6.5.3", - "inherits": "^2.0.4", - "parse-asn1": "^5.1.5", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - } - }, - "node_modules/browserify-sign/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/browserify-sign/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 - }, - "node_modules/browserify-zlib": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", - "dev": true, - "dependencies": { - "pako": "~1.0.5" - } - }, - "node_modules/browserslist": { - "version": "4.21.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", - "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001400", - "electron-to-chromium": "^1.4.251", - "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.9" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/bs-recipes": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/bs-recipes/-/bs-recipes-1.3.4.tgz", - "integrity": "sha1-DS1NSKcYyMBEdp/cT4lZLci2lYU=", - "dev": true - }, - "node_modules/bs-snippet-injector": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/bs-snippet-injector/-/bs-snippet-injector-2.0.1.tgz", - "integrity": "sha1-YbU5PxH1JVntEgaTEANDtu2wTdU=", - "dev": true - }, - "node_modules/buffer": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", - "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", - "dev": true, - "dependencies": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - } - }, - "node_modules/buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", - "dev": true - }, - "node_modules/buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", - "dev": true - }, - "node_modules/builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", - "dev": true - }, - "node_modules/bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/camel-case": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", - "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", - "dev": true, - "dependencies": { - "pascal-case": "^3.1.2", - "tslib": "^2.0.3" - } - }, - "node_modules/caniuse-api": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", - "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", - "dev": true, - "dependencies": { - "browserslist": "^4.0.0", - "caniuse-lite": "^1.0.0", - "lodash.memoize": "^4.1.2", - "lodash.uniq": "^4.5.0" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001418", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001418.tgz", - "integrity": "sha512-oIs7+JL3K9JRQ3jPZjlH6qyYDp+nBTCais7hjh0s+fuBwufc7uZ7hPYMXrDOJhV360KGMTcczMRObk0/iMqZRg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - } - ] - }, - "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/chalk/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": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/chalk/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/chalk/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/chalk/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/charenc": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", - "integrity": "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/chokidar/node_modules/anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/chokidar/node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/chokidar/node_modules/braces": { - "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" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/chokidar/node_modules/fill-range": { - "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" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/chokidar/node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/chokidar/node_modules/glob-parent": { - "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" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/chokidar/node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/chokidar/node_modules/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, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/chokidar/node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/chokidar/node_modules/to-regex-range": { - "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" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/chrome-trace-event": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", - "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", - "dev": true, - "dependencies": { - "tslib": "^1.9.0" - }, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/chrome-trace-event/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/ci-info": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.1.1.tgz", - "integrity": "sha512-kdRWLBIJwdsYJWYJFtAFFYxybguqeF91qpZaggjG5Nf8QKdizFG2hjqvaTXbxFIcYbSaD74KpAXv6BSm17DHEQ==", - "dev": true - }, - "node_modules/cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/clean-css": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz", - "integrity": "sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==", - "dev": true, - "dependencies": { - "source-map": "~0.6.0" - }, - "engines": { - "node": ">= 4.0" - } - }, - "node_modules/cli-table3": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.0.tgz", - "integrity": "sha512-gnB85c3MGC7Nm9I/FkiasNBOKjOiO1RNuXXarQms37q4QMpWdlbBgD/VnOStA2faG1dpXMv31RFApjX1/QdgWQ==", - "dev": true, - "dependencies": { - "object-assign": "^4.1.0", - "string-width": "^4.2.0" - }, - "engines": { - "node": "10.* || >= 12.*" - }, - "optionalDependencies": { - "colors": "^1.1.2" - } - }, - "node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "node_modules/clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/collect.js": { - "version": "4.28.6", - "resolved": "https://registry.npmjs.org/collect.js/-/collect.js-4.28.6.tgz", - "integrity": "sha512-NAyuk1DnCotRaDZIS5kJ4sptgkwOeYqElird10yziN5JBuwYOGkOTguhNcPn5g344IfylZecxNYZAVXgv19p5Q==", - "dev": true - }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/colord": { - "version": "2.9.3", - "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", - "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", - "dev": true - }, - "node_modules/colorette": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", - "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", - "dev": true - }, - "node_modules/colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.1.90" - } - }, - "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/commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", - "dev": true - }, - "node_modules/compressible": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", - "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", - "dev": true, - "dependencies": { - "mime-db": ">= 1.43.0 < 2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/compression": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", - "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", - "dev": true, - "dependencies": { - "accepts": "~1.3.5", - "bytes": "3.0.0", - "compressible": "~2.0.16", - "debug": "2.6.9", - "on-headers": "~1.0.2", - "safe-buffer": "5.1.2", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/compression/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/compression/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/concat": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/concat/-/concat-1.0.3.tgz", - "integrity": "sha1-QPM1MInWVGdpXLGIa0Xt1jfYzKg=", - "dev": true, - "dependencies": { - "commander": "^2.9.0" - }, - "bin": { - "concat": "bin/concat" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "node_modules/concat/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "node_modules/connect": { - "version": "3.6.6", - "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.6.tgz", - "integrity": "sha1-Ce/2xVr3I24TcTWnJXSFi2eG9SQ=", - "dev": true, - "dependencies": { - "debug": "2.6.9", - "finalhandler": "1.1.0", - "parseurl": "~1.3.2", - "utils-merge": "1.0.1" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/connect-history-api-fallback": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", - "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", - "dev": true, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/connect/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/connect/node_modules/finalhandler": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", - "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=", - "dev": true, - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.1", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.2", - "statuses": "~1.3.1", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/connect/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/connect/node_modules/statuses": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", - "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/consola": { - "version": "2.15.3", - "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz", - "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==", - "dev": true - }, - "node_modules/console-browserify": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", - "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", - "dev": true - }, - "node_modules/constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", - "dev": true - }, - "node_modules/content-disposition": { - "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.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", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.1" - } - }, - "node_modules/cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", - "dev": true - }, - "node_modules/core-js-compat": { - "version": "3.25.5", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.25.5.tgz", - "integrity": "sha512-ovcyhs2DEBUIE0MGEKHP4olCUW/XYte3Vroyxuh38rD1wAO4dHohsovUC4eAOuzFxE6b+RXvBU3UZ9o0YhUTkA==", - "dev": true, - "dependencies": { - "browserslist": "^4.21.4" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true - }, - "node_modules/cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "dev": true, - "dependencies": { - "object-assign": "^4", - "vary": "^1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/cosmiconfig": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", - "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", - "dev": true, - "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/create-ecdh": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", - "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", - "dev": true, - "dependencies": { - "bn.js": "^4.1.0", - "elliptic": "^6.5.3" - } - }, - "node_modules/create-ecdh/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "dev": true, - "dependencies": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "node_modules/create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "dev": true, - "dependencies": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "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/crypt": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", - "integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", - "dev": true, - "dependencies": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" - }, - "engines": { - "node": "*" - } - }, - "node_modules/css-declaration-sorter": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.3.1.tgz", - "integrity": "sha512-fBffmak0bPAnyqc/HO8C3n2sHrp9wcqQz6ES9koRF2/mLOVAx9zIQ3Y7R29sYCteTPqMCwns4WYQoCX91Xl3+w==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >=14" - }, - "peerDependencies": { - "postcss": "^8.0.9" - } - }, - "node_modules/css-loader": { - "version": "5.2.7", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-5.2.7.tgz", - "integrity": "sha512-Q7mOvpBNBG7YrVGMxRxcBJZFL75o+cH2abNASdibkj/fffYD8qWbInZrD0S9ccI6vZclF3DsHE7njGlLtaHbhg==", - "dev": true, - "dependencies": { - "icss-utils": "^5.1.0", - "loader-utils": "^2.0.0", - "postcss": "^8.2.15", - "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.1.0", - "schema-utils": "^3.0.0", - "semver": "^7.3.5" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.27.0 || ^5.0.0" - } - }, - "node_modules/css-loader/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/css-select": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", - "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", - "dev": true, - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.0.1", - "domhandler": "^4.3.1", - "domutils": "^2.8.0", - "nth-check": "^2.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/css-select/node_modules/domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "dev": true, - "dependencies": { - "domelementtype": "^2.2.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/css-tree": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", - "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", - "dev": true, - "dependencies": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/css-what": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", - "dev": true, - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true, - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/cssnano": { - "version": "5.1.13", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.13.tgz", - "integrity": "sha512-S2SL2ekdEz6w6a2epXn4CmMKU4K3KpcyXLKfAYc9UQQqJRkD/2eLUG0vJ3Db/9OvO5GuAdgXw3pFbR6abqghDQ==", - "dev": true, - "dependencies": { - "cssnano-preset-default": "^5.2.12", - "lilconfig": "^2.0.3", - "yaml": "^1.10.2" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/cssnano" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/cssnano-preset-default": { - "version": "5.2.12", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.12.tgz", - "integrity": "sha512-OyCBTZi+PXgylz9HAA5kHyoYhfGcYdwFmyaJzWnzxuGRtnMw/kR6ilW9XzlzlRAtB6PLT/r+prYgkef7hngFew==", - "dev": true, - "dependencies": { - "css-declaration-sorter": "^6.3.0", - "cssnano-utils": "^3.1.0", - "postcss-calc": "^8.2.3", - "postcss-colormin": "^5.3.0", - "postcss-convert-values": "^5.1.2", - "postcss-discard-comments": "^5.1.2", - "postcss-discard-duplicates": "^5.1.0", - "postcss-discard-empty": "^5.1.1", - "postcss-discard-overridden": "^5.1.0", - "postcss-merge-longhand": "^5.1.6", - "postcss-merge-rules": "^5.1.2", - "postcss-minify-font-values": "^5.1.0", - "postcss-minify-gradients": "^5.1.1", - "postcss-minify-params": "^5.1.3", - "postcss-minify-selectors": "^5.2.1", - "postcss-normalize-charset": "^5.1.0", - "postcss-normalize-display-values": "^5.1.0", - "postcss-normalize-positions": "^5.1.1", - "postcss-normalize-repeat-style": "^5.1.1", - "postcss-normalize-string": "^5.1.0", - "postcss-normalize-timing-functions": "^5.1.0", - "postcss-normalize-unicode": "^5.1.0", - "postcss-normalize-url": "^5.1.0", - "postcss-normalize-whitespace": "^5.1.1", - "postcss-ordered-values": "^5.1.3", - "postcss-reduce-initial": "^5.1.0", - "postcss-reduce-transforms": "^5.1.0", - "postcss-svgo": "^5.1.0", - "postcss-unique-selectors": "^5.1.1" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/cssnano-utils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz", - "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/csso": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", - "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", - "dev": true, - "dependencies": { - "css-tree": "^1.1.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "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==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/default-gateway": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", - "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", - "dev": true, - "dependencies": { - "execa": "^5.0.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/define-properties": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", - "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", - "dev": true, - "dependencies": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/des.js": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", - "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "node_modules/destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", - "dev": true - }, - "node_modules/detect-node": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.5.tgz", - "integrity": "sha512-qi86tE6hRcFHy8jI1m2VG+LaPUR1LhqDa5G8tVjuUXmOrpuAgqsA1pN0+ldgr3aKUH+QLI9hCY/OcRYisERejw==", - "dev": true - }, - "node_modules/dev-ip": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dev-ip/-/dev-ip-1.0.1.tgz", - "integrity": "sha1-p2o+0YVb56ASu4rBbLgPPADcKPA=", - "dev": true, - "bin": { - "dev-ip": "lib/dev-ip.js" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "dev": true, - "dependencies": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - } - }, - "node_modules/diffie-hellman/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/dir-glob": { - "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" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/dns-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", - "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==", - "dev": true - }, - "node_modules/dns-packet": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.4.0.tgz", - "integrity": "sha512-EgqGeaBB8hLiHLZtp/IbaDQTL8pZ0+IvwzSHA6d7VyMDM+B9hgddEMa9xjK5oYnw0ci0JQ6g2XCD7/f6cafU6g==", - "dev": true, - "dependencies": { - "@leichtgewicht/ip-codec": "^2.0.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/dom-serializer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "dev": true, - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/dom-serializer/node_modules/domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "dev": true, - "dependencies": { - "domelementtype": "^2.2.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/domain-browser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", - "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", - "dev": true, - "engines": { - "node": ">=0.4", - "npm": ">=1.2" - } - }, - "node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ] - }, - "node_modules/domhandler": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-3.3.0.tgz", - "integrity": "sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA==", - "dev": true, - "dependencies": { - "domelementtype": "^2.0.1" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dev": true, - "dependencies": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/domutils/node_modules/domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "dev": true, - "dependencies": { - "domelementtype": "^2.2.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/dot-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", - "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", - "dev": true, - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/dotenv": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", - "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/dotenv-expand": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", - "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", - "dev": true - }, - "node_modules/easy-extender": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/easy-extender/-/easy-extender-2.3.4.tgz", - "integrity": "sha512-8cAwm6md1YTiPpOvDULYJL4ZS6WfM5/cTeVVh4JsvyYZAoqlRVUpHL9Gr5Fy7HA6xcSZicUia3DeAgO3Us8E+Q==", - "dev": true, - "dependencies": { - "lodash": "^4.17.10" - }, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/eazy-logger": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/eazy-logger/-/eazy-logger-4.0.1.tgz", - "integrity": "sha512-2GSFtnnC6U4IEKhEI7+PvdxrmjJ04mdsj3wHZTFiw0tUtG4HCWzTr13ZYTk8XOGnA1xQMaDljoBOYlk3D/MMSw==", - "dev": true, - "dependencies": { - "chalk": "4.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", - "dev": true - }, - "node_modules/electron-to-chromium": { - "version": "1.4.276", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.276.tgz", - "integrity": "sha512-EpuHPqu8YhonqLBXHoU6hDJCD98FCe6KDoet3/gY1qsQ6usjJoHqBH2YIVs8FXaAtHwVL8Uqa/fsYao/vq9VWQ==", - "dev": true - }, - "node_modules/elliptic": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", - "dev": true, - "dependencies": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/elliptic/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/engine.io": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.2.1.tgz", - "integrity": "sha512-ECceEFcAaNRybd3lsGQKas3ZlMVjN3cyWwMP25D2i0zWfyiytVbTpRPa34qrr+FHddtpBVOmq4H/DCv1O0lZRA==", - "dev": true, - "dependencies": { - "@types/cookie": "^0.4.1", - "@types/cors": "^2.8.12", - "@types/node": ">=10.0.0", - "accepts": "~1.3.4", - "base64id": "2.0.0", - "cookie": "~0.4.1", - "cors": "~2.8.5", - "debug": "~4.3.1", - "engine.io-parser": "~5.0.3", - "ws": "~8.2.3" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/engine.io-client": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.4.0.tgz", - "integrity": "sha512-GyKPDyoEha+XZ7iEqam49vz6auPnNJ9ZBfy89f+rMMas8AuiMWOZ9PVzu8xb9ZC6rafUqiGHSCfu22ih66E+1g==", - "dev": true, - "dependencies": { - "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.1", - "engine.io-parser": "~5.0.3", - "ws": "~8.11.0", - "xmlhttprequest-ssl": "~2.0.0" - } - }, - "node_modules/engine.io-client/node_modules/ws": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", - "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", - "dev": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/engine.io-parser": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.4.tgz", - "integrity": "sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg==", - "dev": true, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/engine.io/node_modules/cookie": { - "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" - } - }, - "node_modules/enhanced-resolve": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz", - "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==", - "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", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dev": true - }, - "node_modules/envinfo": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", - "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", - "dev": true, - "bin": { - "envinfo": "dist/cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/es-module-lexer": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", - "dev": true - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", - "dev": true - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true, - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "dev": true, - "dependencies": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "node_modules/execa": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.0.0.tgz", - "integrity": "sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/express": { - "version": "4.18.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", - "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", - "dev": true, - "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.1", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.5.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.2.0", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.11.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "engines": { - "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": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", - "dev": true - }, - "node_modules/express/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/express/node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/express/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/express/node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dev": true, - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "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, - "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/express/node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/fast-glob": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.5.tgz", - "integrity": "sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.0", - "merge2": "^1.3.0", - "micromatch": "^4.0.2", - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/fast-glob/node_modules/braces": { - "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" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/fast-glob/node_modules/fill-range": { - "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" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/fast-glob/node_modules/glob-parent": { - "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" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fast-glob/node_modules/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, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/fast-glob/node_modules/micromatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", - "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", - "dev": true, - "dependencies": { - "braces": "^3.0.1", - "picomatch": "^2.0.5" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/fast-glob/node_modules/to-regex-range": { - "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" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/fastest-levenshtein": { - "version": "1.0.16", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", - "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", - "dev": true, - "engines": { - "node": ">= 4.9.1" - } - }, - "node_modules/fastq": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.11.0.tgz", - "integrity": "sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/faye-websocket": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", - "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", - "dev": true, - "dependencies": { - "websocket-driver": ">=0.5.1" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^1.0.5" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/file-loader": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", - "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", - "dev": true, - "dependencies": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/file-loader/node_modules/schema-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", - "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.6", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/file-type": { - "version": "12.4.2", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-12.4.2.tgz", - "integrity": "sha512-UssQP5ZgIOKelfsaB5CuGAL+Y+q7EmONuiwF3N5HAH0t27rvrttgi6Ra9k/+DVaY9UF6+ybxu5pOXLUdA8N7Vg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", - "dev": true, - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/finalhandler/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/finalhandler/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/finalhandler/node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dev": true, - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/finalhandler/node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", - "dev": true, - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" - } - }, - "node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/follow-redirects": { - "version": "1.14.8", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.8.tgz", - "integrity": "sha512-1x0S9UVJHsQprFcEC/qnNzBLcIxsjAV905f/UkQxbclCsoTWlacCNOpQa/anodLl2uaEKFhfWOvM2Qg77+15zA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fraction.js": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", - "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", - "dev": true, - "engines": { - "node": "*" - }, - "funding": { - "type": "patreon", - "url": "https://www.patreon.com/infusion" - } - }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/fs-monkey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", - "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==", - "dev": true - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" - } - }, - "node_modules/get-stream": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.0.tgz", - "integrity": "sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true - }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/globby": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz", - "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==", - "dev": true, - "dependencies": { - "@types/glob": "^7.1.1", - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.0.3", - "glob": "^7.1.3", - "ignore": "^5.1.1", - "merge2": "^1.2.3", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", - "dev": true - }, - "node_modules/growly": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", - "integrity": "sha512-+xGQY0YyAWCnqy7Cd++hc2JqMYzlm0dG30Jd0beaA64sROr8C4nt8Yc9V5Ro3avlSUDTN0ulqP/VBKi1/lLygw==", - "dev": true - }, - "node_modules/handle-thing": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", - "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", - "dev": true - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "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/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/hash-base/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/hash-base/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 - }, - "node_modules/hash-sum": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", - "integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==", - "dev": true - }, - "node_modules/hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true, - "bin": { - "he": "bin/he" - } - }, - "node_modules/hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "dev": true, - "dependencies": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/hpack.js": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", - "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "obuf": "^1.0.0", - "readable-stream": "^2.0.1", - "wbuf": "^1.1.0" - } - }, - "node_modules/html-entities": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz", - "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==", - "dev": true - }, - "node_modules/html-loader": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/html-loader/-/html-loader-1.3.2.tgz", - "integrity": "sha512-DEkUwSd0sijK5PF3kRWspYi56XP7bTNkyg5YWSzBdjaSDmvCufep5c4Vpb3PBf6lUL0YPtLwBfy9fL0t5hBAGA==", - "dev": true, - "dependencies": { - "html-minifier-terser": "^5.1.1", - "htmlparser2": "^4.1.0", - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/html-loader/node_modules/schema-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", - "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.6", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/html-minifier-terser": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz", - "integrity": "sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg==", - "dev": true, - "dependencies": { - "camel-case": "^4.1.1", - "clean-css": "^4.2.3", - "commander": "^4.1.1", - "he": "^1.2.0", - "param-case": "^3.0.3", - "relateurl": "^0.2.7", - "terser": "^4.6.3" - }, - "bin": { - "html-minifier-terser": "cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/html-minifier-terser/node_modules/commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/html-minifier-terser/node_modules/terser": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz", - "integrity": "sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==", - "dev": true, - "dependencies": { - "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/html-minifier-terser/node_modules/terser/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "node_modules/htmlparser2": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-4.1.0.tgz", - "integrity": "sha512-4zDq1a1zhE4gQso/c5LP1OtrhYTncXNSpvJYtWJBtXAETPlMfi3IFNjGuQbYLuVY4ZR0QMqRVvo4Pdy9KLyP8Q==", - "dev": true, - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^3.0.0", - "domutils": "^2.0.0", - "entities": "^2.0.0" - } - }, - "node_modules/http-deceiver": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", - "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", - "dev": true - }, - "node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dev": true, - "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/http-errors/node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/http-errors/node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/http-parser-js": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", - "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", - "dev": true - }, - "node_modules/http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", - "dev": true, - "dependencies": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/http-proxy-middleware": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", - "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", - "dev": true, - "dependencies": { - "@types/http-proxy": "^1.17.8", - "http-proxy": "^1.18.1", - "is-glob": "^4.0.1", - "is-plain-obj": "^3.0.0", - "micromatch": "^4.0.2" - }, - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "@types/express": "^4.17.13" - }, - "peerDependenciesMeta": { - "@types/express": { - "optional": true - } - } - }, - "node_modules/http-proxy-middleware/node_modules/braces": { - "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" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/http-proxy-middleware/node_modules/fill-range": { - "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" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/http-proxy-middleware/node_modules/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, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/http-proxy-middleware/node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/http-proxy-middleware/node_modules/to-regex-range": { - "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" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", - "dev": true - }, - "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true, - "engines": { - "node": ">=10.17.0" - } - }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/icss-utils": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", - "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true - }, - "node_modules/ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/imagemin": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/imagemin/-/imagemin-7.0.1.tgz", - "integrity": "sha512-33AmZ+xjZhg2JMCe+vDf6a9mzWukE7l+wAtesjE7KyteqqKjzxv7aVQeWnul1Ve26mWvEQqyPwl0OctNBfSR9w==", - "dev": true, - "dependencies": { - "file-type": "^12.0.0", - "globby": "^10.0.0", - "graceful-fs": "^4.2.2", - "junk": "^3.1.0", - "make-dir": "^3.0.0", - "p-pipe": "^3.0.0", - "replace-ext": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/img-loader": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/img-loader/-/img-loader-4.0.0.tgz", - "integrity": "sha512-UwRcPQdwdOyEHyCxe1V9s9YFwInwEWCpoO+kJGfIqDrBDqA8jZUsEZTxQ0JteNPGw/Gupmwesk2OhLTcnw6tnQ==", - "dev": true, - "dependencies": { - "loader-utils": "^1.1.0" - }, - "engines": { - "node": ">=12" - }, - "peerDependencies": { - "imagemin": "^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/img-loader/node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dev": true, - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/img-loader/node_modules/loader-utils": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", - "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", - "dev": true, - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/immutable": { - "version": "3.8.2", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz", - "integrity": "sha512-15gZoQ38eYjEjxkorfbcgBKBL6R7T459OuK+CpcWt7O3KF4uPCx2tD0uFETlUDIyo+1789crbMhTvQBSR5yBMg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", - "dev": true, - "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "node_modules/interpret": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", - "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/ipaddr.js": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", - "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==", - "dev": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true - }, - "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-core-module": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", - "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-docker": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.1.1.tgz", - "integrity": "sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw==", - "dev": true, - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "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==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number-like": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/is-number-like/-/is-number-like-1.0.8.tgz", - "integrity": "sha512-6rZi3ezCyFcn5L71ywzz2bS5b2Igl1En3eTlZlvKjpz1n3IZLAYMbKYAIQgFmEu0GENg92ziU/faEOA/aixjbA==", - "dev": true, - "dependencies": { - "lodash.isfinite": "^3.3.2" - } - }, - "node_modules/is-plain-obj": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", - "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", - "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dev": true, - "dependencies": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "dev": true, - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "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/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/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/laravel-mix": { - "version": "6.0.49", - "resolved": "https://registry.npmjs.org/laravel-mix/-/laravel-mix-6.0.49.tgz", - "integrity": "sha512-bBMFpFjp26XfijPvY5y9zGKud7VqlyOE0OWUcPo3vTBY5asw8LTjafAbee1dhfLz6PWNqDziz69CP78ELSpfKw==", - "dev": true, - "dependencies": { - "@babel/core": "^7.15.8", - "@babel/plugin-proposal-object-rest-spread": "^7.15.6", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-transform-runtime": "^7.15.8", - "@babel/preset-env": "^7.15.8", - "@babel/runtime": "^7.15.4", - "@types/babel__core": "^7.1.16", - "@types/clean-css": "^4.2.5", - "@types/imagemin-gifsicle": "^7.0.1", - "@types/imagemin-mozjpeg": "^8.0.1", - "@types/imagemin-optipng": "^5.2.1", - "@types/imagemin-svgo": "^8.0.0", - "autoprefixer": "^10.4.0", - "babel-loader": "^8.2.3", - "chalk": "^4.1.2", - "chokidar": "^3.5.2", - "clean-css": "^5.2.4", - "cli-table3": "^0.6.0", - "collect.js": "^4.28.5", - "commander": "^7.2.0", - "concat": "^1.0.3", - "css-loader": "^5.2.6", - "cssnano": "^5.0.8", - "dotenv": "^10.0.0", - "dotenv-expand": "^5.1.0", - "file-loader": "^6.2.0", - "fs-extra": "^10.0.0", - "glob": "^7.2.0", - "html-loader": "^1.3.2", - "imagemin": "^7.0.1", - "img-loader": "^4.0.0", - "lodash": "^4.17.21", - "md5": "^2.3.0", - "mini-css-extract-plugin": "^1.6.2", - "node-libs-browser": "^2.2.1", - "postcss-load-config": "^3.1.0", - "postcss-loader": "^6.2.0", - "semver": "^7.3.5", - "strip-ansi": "^6.0.0", - "style-loader": "^2.0.0", - "terser": "^5.9.0", - "terser-webpack-plugin": "^5.2.4", - "vue-style-loader": "^4.1.3", - "webpack": "^5.60.0", - "webpack-cli": "^4.9.1", - "webpack-dev-server": "^4.7.3", - "webpack-merge": "^5.8.0", - "webpack-notifier": "^1.14.1", - "webpackbar": "^5.0.0-3", - "yargs": "^17.2.1" - }, - "bin": { - "laravel-mix": "bin/cli.js", - "mix": "bin/cli.js" - }, - "engines": { - "node": ">=12.14.0" - }, - "peerDependencies": { - "@babel/core": "^7.15.8", - "@babel/plugin-proposal-object-rest-spread": "^7.15.6", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-transform-runtime": "^7.15.8", - "@babel/preset-env": "^7.15.8", - "postcss": "^8.3.11", - "webpack": "^5.60.0", - "webpack-cli": "^4.9.1" - } - }, - "node_modules/laravel-mix/node_modules/clean-css": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.1.tgz", - "integrity": "sha512-lCr8OHhiWCTw4v8POJovCoh4T7I9U11yVsPjMWWnnMmp9ZowCxyad1Pathle/9HjaDp+fdQKjO9fQydE6RHTZg==", - "dev": true, - "dependencies": { - "source-map": "~0.6.0" - }, - "engines": { - "node": ">= 10.0" - } - }, - "node_modules/laravel-mix/node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/laravel-mix/node_modules/yargs": { - "version": "17.6.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.0.tgz", - "integrity": "sha512-8H/wTDqlSwoSnScvV2N/JHfLWOKuh5MVla9hqLjK3nsfyy6Y4kDSYSvkU5YCUEPOSnRXfIyx3Sq+B/IWudTo4g==", - "dev": true, - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/laravel-mix/node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/lilconfig": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz", - "integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/limiter": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz", - "integrity": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==", - "dev": true - }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true - }, - "node_modules/loader-runner": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", - "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", - "dev": true, - "engines": { - "node": ">=6.11.5" - } - }, - "node_modules/loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - }, - "engines": { - "node": ">=8.9.0" - } - }, - "node_modules/localtunnel": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/localtunnel/-/localtunnel-2.0.2.tgz", - "integrity": "sha512-n418Cn5ynvJd7m/N1d9WVJISLJF/ellZnfsLnx8WBWGzxv/ntNcFkJ1o6se5quUhCplfLGBNL5tYHiq5WF3Nug==", - "dev": true, - "dependencies": { - "axios": "0.21.4", - "debug": "4.3.2", - "openurl": "1.1.1", - "yargs": "17.1.1" - }, - "bin": { - "lt": "bin/lt.js" - }, - "engines": { - "node": ">=8.3.0" - } - }, - "node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "node_modules/lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", - "dev": true - }, - "node_modules/lodash.isfinite": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz", - "integrity": "sha512-7FGG40uhC8Mm633uKW1r58aElFlBlxCrg9JfSi3P6aYiWmfiWF0PgMd86ZUsxE5GwWPdHoS2+48bwTh2VPkIQA==", - "dev": true - }, - "node_modules/lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", - "dev": true - }, - "node_modules/lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", - "dev": true - }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "peer": true, - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, - "node_modules/lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "dev": true, - "dependencies": { - "tslib": "^2.0.3" - } - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/make-dir/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/md5": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", - "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", - "dev": true, - "dependencies": { - "charenc": "0.0.2", - "crypt": "0.0.2", - "is-buffer": "~1.1.6" - } - }, - "node_modules/md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "dev": true, - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/mdn-data": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", - "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", - "dev": true - }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/memfs": { - "version": "3.4.7", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.7.tgz", - "integrity": "sha512-ygaiUSNalBX85388uskeCyhSAoOSgzBbtVCr9jA2RROssFL9Q19/ZXFqS+2Th2sr1ewNIWgFdLzLC3Yl1Zv+lw==", - "dev": true, - "dependencies": { - "fs-monkey": "^1.0.3" - }, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", - "dev": true - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "node_modules/merge2": { - "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" - } - }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "dev": true, - "dependencies": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - }, - "bin": { - "miller-rabin": "bin/miller-rabin" - } - }, - "node_modules/miller-rabin/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true, - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/mime-db": { - "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.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.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/mini-css-extract-plugin": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-1.6.2.tgz", - "integrity": "sha512-WhDvO3SjGm40oV5y26GjMJYjd2UMqrLAGKy5YS2/3QKJy2F7jgynuHTir/tgUUOiNQu5saXHdc8reo7YuhhT4Q==", - "dev": true, - "dependencies": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0", - "webpack-sources": "^1.1.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.4.0 || ^5.0.0" - } - }, - "node_modules/mini-css-extract-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/minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true - }, - "node_modules/minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", - "dev": true - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "dev": true - }, - "node_modules/mitt": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mitt/-/mitt-1.2.0.tgz", - "integrity": "sha512-r6lj77KlwqLhIUku9UWYes7KJtsczvolZkzp8hbaDPPaE24OmWl5s539Mytlj22siEQKosZ26qCBgda2PKwoJw==", - "dev": true - }, - "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==", - "dev": true - }, - "node_modules/multicast-dns": { - "version": "7.2.5", - "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", - "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", - "dev": true, - "dependencies": { - "dns-packet": "^5.2.2", - "thunky": "^1.0.2" - }, - "bin": { - "multicast-dns": "cli.js" - } - }, - "node_modules/nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", - "dev": true, - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/negotiator": { - "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" - } - }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true - }, - "node_modules/no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "dev": true, - "dependencies": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" - } - }, - "node_modules/node-forge": { - "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" - } - }, - "node_modules/node-libs-browser": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", - "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", - "dev": true, - "dependencies": { - "assert": "^1.1.1", - "browserify-zlib": "^0.2.0", - "buffer": "^4.3.0", - "console-browserify": "^1.1.0", - "constants-browserify": "^1.0.0", - "crypto-browserify": "^3.11.0", - "domain-browser": "^1.1.1", - "events": "^3.0.0", - "https-browserify": "^1.0.0", - "os-browserify": "^0.3.0", - "path-browserify": "0.0.1", - "process": "^0.11.10", - "punycode": "^1.2.4", - "querystring-es3": "^0.2.0", - "readable-stream": "^2.3.3", - "stream-browserify": "^2.0.1", - "stream-http": "^2.7.2", - "string_decoder": "^1.0.0", - "timers-browserify": "^2.0.4", - "tty-browserify": "0.0.0", - "url": "^0.11.0", - "util": "^0.11.0", - "vm-browserify": "^1.0.1" - } - }, - "node_modules/node-libs-browser/node_modules/punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - }, - "node_modules/node-notifier": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-9.0.1.tgz", - "integrity": "sha512-fPNFIp2hF/Dq7qLDzSg4vZ0J4e9v60gJR+Qx7RbjbWqzPDdEqeVpEx5CFeDAELIl+A/woaaNn1fQ5nEVerMxJg==", - "dev": true, - "dependencies": { - "growly": "^1.3.0", - "is-wsl": "^2.2.0", - "semver": "^7.3.2", - "shellwords": "^0.1.1", - "uuid": "^8.3.0", - "which": "^2.0.2" - } - }, - "node_modules/node-releases": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", - "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", - "dev": true - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-url": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", - "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nth-check": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "dev": true, - "dependencies": { - "boolbase": "^1.0.0" - }, - "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", - "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", - "dev": true - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/obuf": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", - "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", - "dev": true - }, - "node_modules/on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "dev": true, - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/open": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", - "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", - "dev": true, - "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/openurl": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/openurl/-/openurl-1.1.1.tgz", - "integrity": "sha1-OHW0sO96UsFW8NtB1GCduw+Us4c=", - "dev": true - }, - "node_modules/opn": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.3.0.tgz", - "integrity": "sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==", - "dev": true, - "dependencies": { - "is-wsl": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/opn/node_modules/is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/os-browserify": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", - "dev": true - }, - "node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-pipe": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-pipe/-/p-pipe-3.1.0.tgz", - "integrity": "sha512-08pj8ATpzMR0Y80x50yJHn37NF6vjrqHutASaX5LiH5npS9XPvrUmscd9MF5R4fuYRHOxQR1FfMIlF7AzwoPqw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-retry": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", - "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", - "dev": true, - "dependencies": { - "@types/retry": "0.12.0", - "retry": "^0.13.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "dev": true - }, - "node_modules/param-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", - "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", - "dev": true, - "dependencies": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-asn1": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", - "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", - "dev": true, - "dependencies": { - "asn1.js": "^5.2.0", - "browserify-aes": "^1.0.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" - } - }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/pascal-case": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", - "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", - "dev": true, - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/path-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", - "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", - "dev": true - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/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=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", - "dev": true - }, - "node_modules/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, - "engines": { - "node": ">=8" - } - }, - "node_modules/pbkdf2": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz", - "integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==", - "dev": true, - "dependencies": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - }, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/portscanner": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/portscanner/-/portscanner-2.2.0.tgz", - "integrity": "sha512-IFroCz/59Lqa2uBvzK3bKDbDDIEaAY8XJ1jFxcLWTqosrsc32//P4VuSB2vZXoHiHqOmx8B5L5hnKOxL/7FlPw==", - "dev": true, - "dependencies": { - "async": "^2.6.0", - "is-number-like": "^1.0.3" - }, - "engines": { - "node": ">=0.4", - "npm": ">=1.0.0" - } - }, - "node_modules/postcss": { - "version": "8.4.17", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.17.tgz", - "integrity": "sha512-UNxNOLQydcOFi41yHNMcKRZ39NeXlr8AxGuZJsdub8vIb12fHzcq37DTU/QtbI6WLxNg2gF9Z+8qtRwTj1UI1Q==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - } - ], - "dependencies": { - "nanoid": "^3.3.4", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/postcss-calc": { - "version": "8.2.4", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz", - "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==", - "dev": true, - "dependencies": { - "postcss-selector-parser": "^6.0.9", - "postcss-value-parser": "^4.2.0" - }, - "peerDependencies": { - "postcss": "^8.2.2" - } - }, - "node_modules/postcss-colormin": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.0.tgz", - "integrity": "sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg==", - "dev": true, - "dependencies": { - "browserslist": "^4.16.6", - "caniuse-api": "^3.0.0", - "colord": "^2.9.1", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-convert-values": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.2.tgz", - "integrity": "sha512-c6Hzc4GAv95B7suy4udszX9Zy4ETyMCgFPUDtWjdFTKH1SE9eFY/jEpHSwTH1QPuwxHpWslhckUQWbNRM4ho5g==", - "dev": true, - "dependencies": { - "browserslist": "^4.20.3", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-discard-comments": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz", - "integrity": "sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-discard-duplicates": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", - "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-discard-empty": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz", - "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-discard-overridden": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", - "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-load-config": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz", - "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==", - "dev": true, - "dependencies": { - "lilconfig": "^2.0.5", - "yaml": "^1.10.2" - }, - "engines": { - "node": ">= 10" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": ">=8.0.9", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "postcss": { - "optional": true - }, - "ts-node": { - "optional": true - } - } - }, - "node_modules/postcss-loader": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.1.tgz", - "integrity": "sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==", - "dev": true, - "dependencies": { - "cosmiconfig": "^7.0.0", - "klona": "^2.0.5", - "semver": "^7.3.5" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "postcss": "^7.0.0 || ^8.0.1", - "webpack": "^5.0.0" - } - }, - "node_modules/postcss-merge-longhand": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.6.tgz", - "integrity": "sha512-6C/UGF/3T5OE2CEbOuX7iNO63dnvqhGZeUnKkDeifebY0XqkkvrctYSZurpNE902LDf2yKwwPFgotnfSoPhQiw==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0", - "stylehacks": "^5.1.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-merge-rules": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.2.tgz", - "integrity": "sha512-zKMUlnw+zYCWoPN6yhPjtcEdlJaMUZ0WyVcxTAmw3lkkN/NDMRkOkiuctQEoWAOvH7twaxUUdvBWl0d4+hifRQ==", - "dev": true, - "dependencies": { - "browserslist": "^4.16.6", - "caniuse-api": "^3.0.0", - "cssnano-utils": "^3.1.0", - "postcss-selector-parser": "^6.0.5" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-minify-font-values": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz", - "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-minify-gradients": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz", - "integrity": "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==", - "dev": true, - "dependencies": { - "colord": "^2.9.1", - "cssnano-utils": "^3.1.0", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-minify-params": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.3.tgz", - "integrity": "sha512-bkzpWcjykkqIujNL+EVEPOlLYi/eZ050oImVtHU7b4lFS82jPnsCb44gvC6pxaNt38Els3jWYDHTjHKf0koTgg==", - "dev": true, - "dependencies": { - "browserslist": "^4.16.6", - "cssnano-utils": "^3.1.0", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-minify-selectors": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz", - "integrity": "sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==", - "dev": true, - "dependencies": { - "postcss-selector-parser": "^6.0.5" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-modules-extract-imports": { - "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, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-modules-local-by-default": { - "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": { - "icss-utils": "^5.0.0", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-modules-scope": { - "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": { - "postcss-selector-parser": "^6.0.4" - }, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-modules-values": { - "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": { - "icss-utils": "^5.0.0" - }, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-normalize-charset": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", - "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-display-values": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz", - "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-positions": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz", - "integrity": "sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-repeat-style": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz", - "integrity": "sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-string": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz", - "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-timing-functions": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz", - "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-unicode": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.0.tgz", - "integrity": "sha512-J6M3MizAAZ2dOdSjy2caayJLQT8E8K9XjLce8AUQMwOrCvjCHv24aLC/Lps1R1ylOfol5VIDMaM/Lo9NGlk1SQ==", - "dev": true, - "dependencies": { - "browserslist": "^4.16.6", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-url": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz", - "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==", - "dev": true, - "dependencies": { - "normalize-url": "^6.0.1", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-whitespace": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz", - "integrity": "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-ordered-values": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz", - "integrity": "sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==", - "dev": true, - "dependencies": { - "cssnano-utils": "^3.1.0", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-reduce-initial": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.0.tgz", - "integrity": "sha512-5OgTUviz0aeH6MtBjHfbr57tml13PuedK/Ecg8szzd4XRMbYxH4572JFG067z+FqBIf6Zp/d+0581glkvvWMFw==", - "dev": true, - "dependencies": { - "browserslist": "^4.16.6", - "caniuse-api": "^3.0.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-reduce-transforms": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz", - "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-selector-parser": { - "version": "6.0.10", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", - "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", - "dev": true, - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-svgo": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz", - "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0", - "svgo": "^2.7.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-unique-selectors": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz", - "integrity": "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==", - "dev": true, - "dependencies": { - "postcss-selector-parser": "^6.0.5" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "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/prettier": { - "version": "2.8.7", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.7.tgz", - "integrity": "sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==", - "dev": true, - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/pretty-time": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pretty-time/-/pretty-time-1.1.0.tgz", - "integrity": "sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", - "dev": true, - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "node_modules/prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "peer": true, - "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" - } - }, - "node_modules/proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "dev": true, - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/proxy-addr/node_modules/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, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", - "dev": true, - "dependencies": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/public-encrypt/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "dev": true, - "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", - "dev": true, - "engines": { - "node": ">=0.4.x" - } - }, - "node_modules/querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", - "dev": true, - "engines": { - "node": ">=0.4.x" - } - }, - "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 - }, - "node_modules/quicklink": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/quicklink/-/quicklink-2.3.0.tgz", - "integrity": "sha512-FyTanYArl5Gz2/C0ZjErvfFJtem/+d1RM4eK0jiXO6mL4Zjje+xsYtcK3ZtKX2Yb3HSfah5HekWrH2qhttYQjQ==", - "dependencies": { - "route-manifest": "^1.0.0", - "throttles": "^1.0.0" - }, - "peerDependencies": { - "react": "^16.8.0", - "react-dom": "^16.8.0" - } - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "dev": true, - "dependencies": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", - "dev": true, - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/raw-body/node_modules/bytes": { - "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/react": { - "version": "16.14.0", - "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", - "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", - "peer": true, - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-dom": { - "version": "16.14.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz", - "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==", - "peer": true, - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2", - "scheduler": "^0.19.1" - }, - "peerDependencies": { - "react": "^16.14.0" - } - }, - "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==", - "peer": true - }, - "node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/rechoir": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", - "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", - "dev": true, - "dependencies": { - "resolve": "^1.9.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/regenerate": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "dev": true - }, - "node_modules/regenerate-unicode-properties": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", - "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", - "dev": true, - "dependencies": { - "regenerate": "^1.4.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/regenerator-runtime": { - "version": "0.13.9", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", - "dev": true - }, - "node_modules/regenerator-transform": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz", - "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.8.4" - } - }, - "node_modules/regexparam": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/regexparam/-/regexparam-1.3.0.tgz", - "integrity": "sha512-6IQpFBv6e5vz1QAqI+V4k8P2e/3gRrqfCJ9FI+O1FLQTO+Uz6RXZEZOPmTJ6hlGj7gkERzY5BRCv09whKP96/g==", - "engines": { - "node": ">=6" - } - }, - "node_modules/regexpu-core": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.1.tgz", - "integrity": "sha512-HrnlNtpvqP1Xkb28tMhBUO2EbyUHdQlsnlAhzWcwHy8WJR53UWr7/MAvqrsQKMbV4qdpv03oTMG8iIhfsPFktQ==", - "dev": true, - "dependencies": { - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.1.0", - "regjsgen": "^0.7.1", - "regjsparser": "^0.9.1", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/regjsgen": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz", - "integrity": "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==", - "dev": true - }, - "node_modules/regjsparser": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", - "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", - "dev": true, - "dependencies": { - "jsesc": "~0.5.0" - }, - "bin": { - "regjsparser": "bin/parser" - } - }, - "node_modules/regjsparser/node_modules/jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - } - }, - "node_modules/relateurl": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/replace-ext": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz", - "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==", - "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", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", - "dev": true - }, - "node_modules/resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "dependencies": { - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-cwd/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/resp-modifier": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/resp-modifier/-/resp-modifier-6.0.2.tgz", - "integrity": "sha1-sSTeXE+6/LpUH0j/pzlw9KpFa08=", - "dev": true, - "dependencies": { - "debug": "^2.2.0", - "minimatch": "^3.0.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/resp-modifier/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/resp-modifier/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/retry": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/reusify": { - "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" - } - }, - "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/ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "dev": true, - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "node_modules/route-manifest": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/route-manifest/-/route-manifest-1.0.0.tgz", - "integrity": "sha512-qn0xJr4nnF4caj0erOLLAHYiNyzqhzpUbgDQcEHrmBoG4sWCDLnIXLH7VccNSxe9cWgbP2Kw/OjME+eH3CeRSA==", - "dependencies": { - "regexparam": "^1.3.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/run-parallel": { - "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, - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/rx": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz", - "integrity": "sha1-pfE/957zt0D+MKqAP7CfmIBdR4I=", - "dev": true - }, - "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "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/scheduler": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", - "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", - "peer": true, - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" - } - }, - "node_modules/schema-utils": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", - "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 8.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/select-hose": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", - "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", - "dev": true - }, - "node_modules/selfsigned": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz", - "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==", - "dev": true, - "dependencies": { - "node-forge": "^1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", - "dev": true, - "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/send/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/send/node_modules/debug/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/send/node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/send/node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "dev": true, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/send/node_modules/ms": { - "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/send/node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dev": true, - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/send/node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", - "dev": true, - "dependencies": { - "accepts": "~1.3.4", - "batch": "0.6.1", - "debug": "2.6.9", - "escape-html": "~1.0.3", - "http-errors": "~1.6.2", - "mime-types": "~2.1.17", - "parseurl": "~1.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/serve-index/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/serve-index/node_modules/http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", - "dev": true, - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/serve-index/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/serve-index/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/serve-index/node_modules/setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true - }, - "node_modules/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", - "dev": true, - "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.18.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/server-destroy": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/server-destroy/-/server-destroy-1.0.1.tgz", - "integrity": "sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ==", - "dev": true - }, - "node_modules/setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", - "dev": true - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true - }, - "node_modules/sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - }, - "bin": { - "sha.js": "bin.js" - } - }, - "node_modules/shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/shellwords": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", - "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", - "dev": true - }, - "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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==", - "dev": true - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/socket.io": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.2.tgz", - "integrity": "sha512-6fCnk4ARMPZN448+SQcnn1u8OHUC72puJcNtSgg2xS34Cu7br1gQ09YKkO1PFfDn/wyUE9ZgMAwosJed003+NQ==", - "dev": true, - "dependencies": { - "accepts": "~1.3.4", - "base64id": "~2.0.0", - "debug": "~4.3.2", - "engine.io": "~6.2.0", - "socket.io-adapter": "~2.4.0", - "socket.io-parser": "~4.2.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/socket.io-adapter": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz", - "integrity": "sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg==", - "dev": true - }, - "node_modules/socket.io-client": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.6.1.tgz", - "integrity": "sha512-5UswCV6hpaRsNg5kkEHVcbBIXEYoVbMQaHJBXJCyEQ+CiFPV1NIOY0XOFWG4XR4GZcB8Kn6AsRs/9cy9TbqVMQ==", - "dev": true, - "dependencies": { - "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.2", - "engine.io-client": "~6.4.0", - "socket.io-parser": "~4.2.1" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/socket.io-parser": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.1.tgz", - "integrity": "sha512-V4GrkLy+HeF1F/en3SpUaM+7XxYXpuMUWLGde1kSSh5nQMN4hLrbPIkD+otwh6q9R6NOQBN4AMaOZ2zVjui82g==", - "dev": true, - "dependencies": { - "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.1" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/socket.io/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/sockjs": { - "version": "0.3.24", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", - "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", - "dev": true, - "dependencies": { - "faye-websocket": "^0.11.3", - "uuid": "^8.3.2", - "websocket-driver": "^0.7.4" - } - }, - "node_modules/source-list-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", - "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", - "dev": true - }, - "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_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.19", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", - "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/spdy": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", - "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", - "dev": true, - "dependencies": { - "debug": "^4.1.0", - "handle-thing": "^2.0.0", - "http-deceiver": "^1.2.7", - "select-hose": "^2.0.0", - "spdy-transport": "^3.0.0" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/spdy-transport": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", - "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", - "dev": true, - "dependencies": { - "debug": "^4.1.0", - "detect-node": "^2.0.4", - "hpack.js": "^2.1.6", - "obuf": "^1.1.2", - "readable-stream": "^3.0.6", - "wbuf": "^1.7.3" - } - }, - "node_modules/spdy-transport/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/stable": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", - "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", - "deprecated": "Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility", - "dev": true - }, - "node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/std-env": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-2.3.0.tgz", - "integrity": "sha512-4qT5B45+Kjef2Z6pE0BkskzsH0GO7GrND0wGlTM1ioUe3v0dGYx9ZJH0Aro/YyA8fqQ5EyIKDRjZojJYMFTflw==", - "dev": true, - "dependencies": { - "ci-info": "^3.0.0" - } - }, - "node_modules/stream-browserify": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", - "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", - "dev": true, - "dependencies": { - "inherits": "~2.0.1", - "readable-stream": "^2.0.2" - } - }, - "node_modules/stream-http": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", - "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", - "dev": true, - "dependencies": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.3.6", - "to-arraybuffer": "^1.0.0", - "xtend": "^4.0.0" - } - }, - "node_modules/stream-throttle": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/stream-throttle/-/stream-throttle-0.1.3.tgz", - "integrity": "sha512-889+B9vN9dq7/vLbGyuHeZ6/ctf5sNuGWsDy89uNxkFTAgzy0eK7+w5fL3KLNRTkLle7EgZGvHUphZW0Q26MnQ==", - "dev": true, - "dependencies": { - "commander": "^2.2.0", - "limiter": "^1.0.5" - }, - "bin": { - "throttleproxy": "bin/throttleproxy.js" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/stream-throttle/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/style-loader": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-2.0.0.tgz", - "integrity": "sha512-Z0gYUJmzZ6ZdRUqpg1r8GsaFKypE+3xAzuFeMuoHgjc9KZv3wMyCRjQIWEbhoFSq7+7yoHXySDJyyWQaPajeiQ==", - "dev": true, - "dependencies": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/style-loader/node_modules/schema-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", - "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.6", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/stylehacks": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.0.tgz", - "integrity": "sha512-SzLmvHQTrIWfSgljkQCw2++C9+Ne91d/6Sp92I8c5uHTcy/PgeHamwITIbBW9wnFTY/3ZfSXR9HIL6Ikqmcu6Q==", - "dev": true, - "dependencies": { - "browserslist": "^4.16.6", - "postcss-selector-parser": "^6.0.4" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/svgo": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", - "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", - "dev": true, - "dependencies": { - "@trysound/sax": "0.2.0", - "commander": "^7.2.0", - "css-select": "^4.1.3", - "css-tree": "^1.1.3", - "csso": "^4.2.0", - "picocolors": "^1.0.0", - "stable": "^0.1.8" - }, - "bin": { - "svgo": "bin/svgo" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "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/terser": { - "version": "5.14.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", - "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", - "dev": true, - "dependencies": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/terser-webpack-plugin": { - "version": "5.3.6", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz", - "integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==", - "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.14", - "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0", - "terser": "^5.14.1" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "esbuild": { - "optional": true - }, - "uglify-js": { - "optional": true - } - } - }, - "node_modules/terser-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/terser/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "node_modules/terser/node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "node_modules/throttles": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/throttles/-/throttles-1.0.1.tgz", - "integrity": "sha512-fab7Xg+zELr9KOv4fkaBoe/b3L0GMGLd0IBSCn16GoE/Qx6/OfCr1eGNyEcDU2pUA79qQfZ8kPQWlRuok4YwTw==", - "engines": { - "node": ">=6" - } - }, - "node_modules/thunky": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", - "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", - "dev": true - }, - "node_modules/timers-browserify": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", - "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", - "dev": true, - "dependencies": { - "setimmediate": "^1.0.4" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/to-arraybuffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", - "dev": true - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "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, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", - "dev": true - }, - "node_modules/tty-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", - "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", - "dev": true - }, - "node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dev": true, - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/ua-parser-js": { - "version": "1.0.35", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.35.tgz", - "integrity": "sha512-fKnGuqmTBnIE+/KXSzCn4db8RTigUzw1AN0DmdU6hJovUTbYJKyqj+8Mt1c4VfRDnOVJnENmfYkIPZ946UrSAA==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/ua-parser-js" - }, - { - "type": "paypal", - "url": "https://paypal.me/faisalman" - } - ], - "engines": { - "node": "*" - } - }, - "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", - "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", - "dev": true, - "dependencies": { - "unicode-canonical-property-names-ecmascript": "^2.0.0", - "unicode-property-aliases-ecmascript": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-value-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", - "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-property-aliases-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", - "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", - "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], - "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - }, - "bin": { - "browserslist-lint": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", - "dev": true, - "dependencies": { - "punycode": "1.3.2", - "querystring": "0.2.0" - } - }, - "node_modules/url/node_modules/punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", - "dev": true - }, - "node_modules/util": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", - "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", - "dev": true, - "dependencies": { - "inherits": "2.0.3" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "node_modules/util/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/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", - "dev": true, - "engines": { - "node": ">= 0.4.0" - } - }, - "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/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/vm-browserify": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", - "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", - "dev": true - }, - "node_modules/vue-style-loader": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-4.1.3.tgz", - "integrity": "sha512-sFuh0xfbtpRlKfm39ss/ikqs9AbKCoXZBpHeVZ8Tx650o0k0q/YCM7FRvigtxpACezfq6af+a7JeqVTWvncqDg==", - "dev": true, - "dependencies": { - "hash-sum": "^1.0.2", - "loader-utils": "^1.0.2" - } - }, - "node_modules/vue-style-loader/node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dev": true, - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/vue-style-loader/node_modules/loader-utils": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", - "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", - "dev": true, - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/watchpack": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", - "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", - "dev": true, - "dependencies": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/wbuf": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", - "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", - "dev": true, - "dependencies": { - "minimalistic-assert": "^1.0.0" - } - }, - "node_modules/webpack": { - "version": "5.76.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.76.1.tgz", - "integrity": "sha512-4+YIK4Abzv8172/SGqObnUjaIHjLEuUasz9EwQj/9xmPPkYJy2Mh03Q/lJfSD3YLzbxy5FeTq5Uw0323Oh6SJQ==", - "dev": true, - "dependencies": { - "@types/eslint-scope": "^3.7.3", - "@types/estree": "^0.0.51", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "acorn": "^8.7.1", - "acorn-import-assertions": "^1.7.6", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.10.0", - "es-module-lexer": "^0.9.0", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.1.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.4.0", - "webpack-sources": "^3.2.3" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } - } - }, - "node_modules/webpack-cli": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.10.0.tgz", - "integrity": "sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==", - "dev": true, - "dependencies": { - "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^1.2.0", - "@webpack-cli/info": "^1.5.0", - "@webpack-cli/serve": "^1.7.0", - "colorette": "^2.0.14", - "commander": "^7.0.0", - "cross-spawn": "^7.0.3", - "fastest-levenshtein": "^1.0.12", - "import-local": "^3.0.2", - "interpret": "^2.2.0", - "rechoir": "^0.7.0", - "webpack-merge": "^5.7.3" - }, - "bin": { - "webpack-cli": "bin/cli.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "4.x.x || 5.x.x" - }, - "peerDependenciesMeta": { - "@webpack-cli/generators": { - "optional": true - }, - "@webpack-cli/migrate": { - "optional": true - }, - "webpack-bundle-analyzer": { - "optional": true - }, - "webpack-dev-server": { - "optional": true - } - } - }, - "node_modules/webpack-dev-middleware": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz", - "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==", - "dev": true, - "dependencies": { - "colorette": "^2.0.10", - "memfs": "^3.4.3", - "mime-types": "^2.1.31", - "range-parser": "^1.2.1", - "schema-utils": "^4.0.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/webpack-dev-middleware/node_modules/ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/webpack-dev-middleware/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": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/webpack-dev-middleware/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-middleware/node_modules/schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/webpack-dev-server": { - "version": "4.11.1", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.11.1.tgz", - "integrity": "sha512-lILVz9tAUy1zGFwieuaQtYiadImb5M3d+H+L1zDYalYoDl0cksAB1UNyuE5MMWJrG6zR1tXkCP2fitl7yoUJiw==", - "dev": true, - "dependencies": { - "@types/bonjour": "^3.5.9", - "@types/connect-history-api-fallback": "^1.3.5", - "@types/express": "^4.17.13", - "@types/serve-index": "^1.9.1", - "@types/serve-static": "^1.13.10", - "@types/sockjs": "^0.3.33", - "@types/ws": "^8.5.1", - "ansi-html-community": "^0.0.8", - "bonjour-service": "^1.0.11", - "chokidar": "^3.5.3", - "colorette": "^2.0.10", - "compression": "^1.7.4", - "connect-history-api-fallback": "^2.0.0", - "default-gateway": "^6.0.3", - "express": "^4.17.3", - "graceful-fs": "^4.2.6", - "html-entities": "^2.3.2", - "http-proxy-middleware": "^2.0.3", - "ipaddr.js": "^2.0.1", - "open": "^8.0.9", - "p-retry": "^4.5.0", - "rimraf": "^3.0.2", - "schema-utils": "^4.0.0", - "selfsigned": "^2.1.1", - "serve-index": "^1.9.1", - "sockjs": "^0.3.24", - "spdy": "^4.0.2", - "webpack-dev-middleware": "^5.3.1", - "ws": "^8.4.2" - }, - "bin": { - "webpack-dev-server": "bin/webpack-dev-server.js" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.37.0 || ^5.0.0" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } - } - }, - "node_modules/webpack-dev-server/node_modules/ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/webpack-dev-server/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": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/webpack-dev-server/node_modules/connect-history-api-fallback": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", - "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", - "dev": true, - "engines": { - "node": ">=0.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/schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/webpack-dev-server/node_modules/ws": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.9.0.tgz", - "integrity": "sha512-Ja7nszREasGaYUYCI2k4lCKIRTt+y7XuqVoHR44YpI49TtryyqbqvDMn5eqfW7e6HzTukDRIsXqzVHScqRcafg==", - "dev": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/webpack-merge": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", - "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", - "dev": true, - "dependencies": { - "clone-deep": "^4.0.1", - "wildcard": "^2.0.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/webpack-notifier": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/webpack-notifier/-/webpack-notifier-1.15.0.tgz", - "integrity": "sha512-N2V8UMgRB5komdXQRavBsRpw0hPhJq2/SWNOGuhrXpIgRhcMexzkGQysUyGStHLV5hkUlgpRiF7IUXoBqyMmzQ==", - "dev": true, - "dependencies": { - "node-notifier": "^9.0.0", - "strip-ansi": "^6.0.0" - }, - "peerDependencies": { - "@types/webpack": ">4.41.31" - }, - "peerDependenciesMeta": { - "@types/webpack": { - "optional": true - } - } - }, - "node_modules/webpack-sources": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", - "dev": true, - "dependencies": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - } - }, - "node_modules/webpack/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/webpack/node_modules/webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "dev": true, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/webpackbar": { - "version": "5.0.0-3", - "resolved": "https://registry.npmjs.org/webpackbar/-/webpackbar-5.0.0-3.tgz", - "integrity": "sha512-viW6KCYjMb0NPoDrw2jAmLXU2dEOhRrtku28KmOfeE1vxbfwCYuTbTaMhnkrCZLFAFyY9Q49Z/jzYO80Dw5b8g==", - "dev": true, - "dependencies": { - "ansi-escapes": "^4.3.1", - "chalk": "^4.1.0", - "consola": "^2.15.0", - "figures": "^3.2.0", - "pretty-time": "^1.1.0", - "std-env": "^2.2.1", - "text-table": "^0.2.0", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/websocket-driver": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", - "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", - "dev": true, - "dependencies": { - "http-parser-js": ">=0.5.1", - "safe-buffer": ">=5.1.0", - "websocket-extensions": ">=0.1.1" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/websocket-extensions": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", - "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "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/wildcard": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", - "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", - "dev": true - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/wrap-ansi/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": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi/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/wrap-ansi/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/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "node_modules/ws": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", - "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", - "dev": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/xmlhttprequest-ssl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz", - "integrity": "sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true, - "engines": { - "node": ">=0.4" - } - }, - "node_modules/y18n": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.5.tgz", - "integrity": "sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/yargs": { - "version": "17.1.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.1.1.tgz", - "integrity": "sha512-c2k48R0PwKIqKhPMWjeiF6y2xY/gPMUlro0sgxqXpbOIohWiLNXWslsootttv7E1e73QPAMQSg5FeySbVcpsPQ==", - "dev": true, - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true, - "engines": { - "node": ">=10" - } - } - }, - "dependencies": { - "@ampproject/remapping": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", - "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", - "dev": true, - "requires": { - "@jridgewell/gen-mapping": "^0.1.0", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "dependencies": { - "@jridgewell/gen-mapping": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", - "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", - "dev": true, - "requires": { - "@jridgewell/set-array": "^1.0.0", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - } - } - }, - "@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "dev": true, - "requires": { - "@babel/highlight": "^7.18.6" - } - }, - "@babel/compat-data": { - "version": "7.19.3", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.19.3.tgz", - "integrity": "sha512-prBHMK4JYYK+wDjJF1q99KK4JLL+egWS4nmNqdlMUgCExMZ+iZW0hGhyC3VEbsPjvaN0TBhW//VIFwBrk8sEiw==", - "dev": true - }, - "@babel/core": { - "version": "7.19.3", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.19.3.tgz", - "integrity": "sha512-WneDJxdsjEvyKtXKsaBGbDeiyOjR5vYq4HcShxnIbG0qixpoHjI3MqeZM9NDvsojNCEBItQE4juOo/bU6e72gQ==", - "dev": true, - "requires": { - "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.19.3", - "@babel/helper-compilation-targets": "^7.19.3", - "@babel/helper-module-transforms": "^7.19.0", - "@babel/helpers": "^7.19.0", - "@babel/parser": "^7.19.3", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.19.3", - "@babel/types": "^7.19.3", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.1", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "@babel/generator": { - "version": "7.19.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.19.3.tgz", - "integrity": "sha512-fqVZnmp1ncvZU757UzDheKZpfPgatqY59XtW2/j/18H7u76akb8xqvjw82f+i2UKd/ksYsSick/BCLQUUtJ/qQ==", - "dev": true, - "requires": { - "@babel/types": "^7.19.3", - "@jridgewell/gen-mapping": "^0.3.2", - "jsesc": "^2.5.1" - } - }, - "@babel/helper-annotate-as-pure": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", - "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz", - "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==", - "dev": true, - "requires": { - "@babel/helper-explode-assignable-expression": "^7.18.6", - "@babel/types": "^7.18.9" - } - }, - "@babel/helper-compilation-targets": { - "version": "7.19.3", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.3.tgz", - "integrity": "sha512-65ESqLGyGmLvgR0mst5AdW1FkNlj9rQsCKduzEoEPhBCDFGXvz2jW6bXFG6i0/MrV2s7hhXjjb2yAzcPuQlLwg==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.19.3", - "@babel/helper-validator-option": "^7.18.6", - "browserslist": "^4.21.3", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "@babel/helper-create-class-features-plugin": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.19.0.tgz", - "integrity": "sha512-NRz8DwF4jT3UfrmUoZjd0Uph9HQnP30t7Ash+weACcyNkiYTywpIjDBgReJMKgr+n86sn2nPVVmJ28Dm053Kqw==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-member-expression-to-functions": "^7.18.9", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-replace-supers": "^7.18.9", - "@babel/helper-split-export-declaration": "^7.18.6" - } - }, - "@babel/helper-create-regexp-features-plugin": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.19.0.tgz", - "integrity": "sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "regexpu-core": "^5.1.0" - } - }, - "@babel/helper-define-polyfill-provider": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz", - "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==", - "dev": true, - "requires": { - "@babel/helper-compilation-targets": "^7.17.7", - "@babel/helper-plugin-utils": "^7.16.7", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2", - "semver": "^6.1.2" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "@babel/helper-environment-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", - "dev": true - }, - "@babel/helper-explode-assignable-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz", - "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-function-name": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", - "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", - "dev": true, - "requires": { - "@babel/template": "^7.18.10", - "@babel/types": "^7.19.0" - } - }, - "@babel/helper-hoist-variables": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-member-expression-to-functions": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz", - "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==", - "dev": true, - "requires": { - "@babel/types": "^7.18.9" - } - }, - "@babel/helper-module-imports": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", - "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-module-transforms": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.19.0.tgz", - "integrity": "sha512-3HBZ377Fe14RbLIA+ac3sY4PTgpxHVkFrESaWhoI5PuyXPBBX8+C34qblV9G89ZtycGJCmCI/Ut+VUDK4bltNQ==", - "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.18.6", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.19.0", - "@babel/types": "^7.19.0" - } - }, - "@babel/helper-optimise-call-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", - "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-plugin-utils": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.19.0.tgz", - "integrity": "sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw==", - "dev": true - }, - "@babel/helper-remap-async-to-generator": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz", - "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-wrap-function": "^7.18.9", - "@babel/types": "^7.18.9" - } - }, - "@babel/helper-replace-supers": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz", - "integrity": "sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==", - "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-member-expression-to-functions": "^7.18.9", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/traverse": "^7.19.1", - "@babel/types": "^7.19.0" - } - }, - "@babel/helper-simple-access": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz", - "integrity": "sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.9.tgz", - "integrity": "sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw==", - "dev": true, - "requires": { - "@babel/types": "^7.18.9" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", - "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-string-parser": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz", - "integrity": "sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==", - "dev": true - }, - "@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", - "dev": true - }, - "@babel/helper-validator-option": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", - "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", - "dev": true - }, - "@babel/helper-wrap-function": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.19.0.tgz", - "integrity": "sha512-txX8aN8CZyYGTwcLhlk87KRqncAzhh5TpQamZUa0/u3an36NtDpUP6bQgBCBcLeBs09R/OwQu3OjK0k/HwfNDg==", - "dev": true, - "requires": { - "@babel/helper-function-name": "^7.19.0", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.19.0", - "@babel/types": "^7.19.0" - } - }, - "@babel/helpers": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.19.0.tgz", - "integrity": "sha512-DRBCKGwIEdqY3+rPJgG/dKfQy9+08rHIAJx8q2p+HSWP87s2HCrQmaAMMyMll2kIXKCW0cO1RdQskx15Xakftg==", - "dev": true, - "requires": { - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.19.0", - "@babel/types": "^7.19.0" - } - }, - "@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "dependencies": { - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "@babel/parser": { - "version": "7.19.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.19.3.tgz", - "integrity": "sha512-pJ9xOlNWHiy9+FuFP09DEAFbAn4JskgRsVcc169w2xRBC3FRGuQEwjeIMMND9L2zc0iEhO/tGv4Zq+km+hxNpQ==", - "dev": true - }, - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz", - "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz", - "integrity": "sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", - "@babel/plugin-proposal-optional-chaining": "^7.18.9" - } - }, - "@babel/plugin-proposal-async-generator-functions": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.19.1.tgz", - "integrity": "sha512-0yu8vNATgLy4ivqMNBIwb1HebCelqN7YX8SL3FDXORv/RqT0zEEWUCH4GH44JsSrvCu6GqnAdR5EBFAPeNBB4Q==", - "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-remap-async-to-generator": "^7.18.9", - "@babel/plugin-syntax-async-generators": "^7.8.4" - } - }, - "@babel/plugin-proposal-class-properties": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", - "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-proposal-class-static-block": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz", - "integrity": "sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-class-static-block": "^7.14.5" - } - }, - "@babel/plugin-proposal-dynamic-import": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", - "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" - } - }, - "@babel/plugin-proposal-export-namespace-from": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", - "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" - } - }, - "@babel/plugin-proposal-json-strings": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", - "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-json-strings": "^7.8.3" - } - }, - "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz", - "integrity": "sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - } - }, - "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", - "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" - } - }, - "@babel/plugin-proposal-numeric-separator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", - "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - } - }, - "@babel/plugin-proposal-object-rest-spread": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.9.tgz", - "integrity": "sha512-kDDHQ5rflIeY5xl69CEqGEZ0KY369ehsCIEbTGb4siHG5BE9sga/T0r0OUwyZNLMmZE79E1kbsqAjwFCW4ds6Q==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.18.8", - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.18.8" - } - }, - "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", - "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" - } - }, - "@babel/plugin-proposal-optional-chaining": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz", - "integrity": "sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" - } - }, - "@babel/plugin-proposal-private-methods": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", - "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-proposal-private-property-in-object": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz", - "integrity": "sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" - } - }, - "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", - "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-syntax-import-assertions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.18.6.tgz", - "integrity": "sha512-/DU3RXad9+bZwrgWJQKbr39gYbJpLJHezqEzRzi/BHRlJ9zsQb4CK2CA/5apllXNomwA1qHwzvHl+AdEmC5krQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-arrow-functions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz", - "integrity": "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-async-to-generator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz", - "integrity": "sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-remap-async-to-generator": "^7.18.6" - } - }, - "@babel/plugin-transform-block-scoped-functions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", - "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-block-scoping": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.9.tgz", - "integrity": "sha512-5sDIJRV1KtQVEbt/EIBwGy4T01uYIo4KRB3VUqzkhrAIOGx7AoctL9+Ux88btY0zXdDyPJ9mW+bg+v+XEkGmtw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-classes": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.19.0.tgz", - "integrity": "sha512-YfeEE9kCjqTS9IitkgfJuxjcEtLUHMqa8yUJ6zdz8vR7hKuo6mOy2C05P0F1tdMmDCeuyidKnlrw/iTppHcr2A==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-compilation-targets": "^7.19.0", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-replace-supers": "^7.18.9", - "@babel/helper-split-export-declaration": "^7.18.6", - "globals": "^11.1.0" - } - }, - "@babel/plugin-transform-computed-properties": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz", - "integrity": "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-destructuring": { - "version": "7.18.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.13.tgz", - "integrity": "sha512-TodpQ29XekIsex2A+YJPj5ax2plkGa8YYY6mFjCohk/IG9IY42Rtuj1FuDeemfg2ipxIFLzPeA83SIBnlhSIow==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-dotall-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz", - "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-duplicate-keys": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz", - "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-exponentiation-operator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz", - "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==", - "dev": true, - "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-for-of": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz", - "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-function-name": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", - "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", - "dev": true, - "requires": { - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-literals": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", - "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-member-expression-literals": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", - "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-modules-amd": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.6.tgz", - "integrity": "sha512-Pra5aXsmTsOnjM3IajS8rTaLCy++nGM4v3YR4esk5PCsyg9z8NA5oQLwxzMUtDBd8F+UmVza3VxoAaWCbzH1rg==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-commonjs": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.6.tgz", - "integrity": "sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-simple-access": "^7.18.6", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-systemjs": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.0.tgz", - "integrity": "sha512-x9aiR0WXAWmOWsqcsnrzGR+ieaTMVyGyffPVA7F8cXAGt/UxefYv6uSHZLkAFChN5M5Iy1+wjE+xJuPt22H39A==", - "dev": true, - "requires": { - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-module-transforms": "^7.19.0", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-validator-identifier": "^7.18.6", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-umd": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz", - "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.1.tgz", - "integrity": "sha512-oWk9l9WItWBQYS4FgXD4Uyy5kq898lvkXpXQxoJEY1RnvPk4R/Dvu2ebXU9q8lP+rlMwUQTFf2Ok6d78ODa0kw==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.19.0", - "@babel/helper-plugin-utils": "^7.19.0" - } - }, - "@babel/plugin-transform-new-target": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz", - "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-object-super": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", - "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-replace-supers": "^7.18.6" - } - }, - "@babel/plugin-transform-parameters": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.8.tgz", - "integrity": "sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-property-literals": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", - "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-regenerator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz", - "integrity": "sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "regenerator-transform": "^0.15.0" - } - }, - "@babel/plugin-transform-reserved-words": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz", - "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-runtime": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.19.1.tgz", - "integrity": "sha512-2nJjTUFIzBMP/f/miLxEK9vxwW/KUXsdvN4sR//TmuDhe6yU2h57WmIOE12Gng3MDP/xpjUV/ToZRdcf8Yj4fA==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-plugin-utils": "^7.19.0", - "babel-plugin-polyfill-corejs2": "^0.3.3", - "babel-plugin-polyfill-corejs3": "^0.6.0", - "babel-plugin-polyfill-regenerator": "^0.4.1", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "@babel/plugin-transform-shorthand-properties": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", - "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-spread": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz", - "integrity": "sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9" - } - }, - "@babel/plugin-transform-sticky-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz", - "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-template-literals": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", - "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-typeof-symbol": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz", - "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-unicode-escapes": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz", - "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-unicode-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz", - "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/preset-env": { - "version": "7.19.3", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.19.3.tgz", - "integrity": "sha512-ziye1OTc9dGFOAXSWKUqQblYHNlBOaDl8wzqf2iKXJAltYiR3hKHUKmkt+S9PppW7RQpq4fFCrwwpIDj/f5P4w==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.19.3", - "@babel/helper-compilation-targets": "^7.19.3", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-validator-option": "^7.18.6", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", - "@babel/plugin-proposal-async-generator-functions": "^7.19.1", - "@babel/plugin-proposal-class-properties": "^7.18.6", - "@babel/plugin-proposal-class-static-block": "^7.18.6", - "@babel/plugin-proposal-dynamic-import": "^7.18.6", - "@babel/plugin-proposal-export-namespace-from": "^7.18.9", - "@babel/plugin-proposal-json-strings": "^7.18.6", - "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", - "@babel/plugin-proposal-numeric-separator": "^7.18.6", - "@babel/plugin-proposal-object-rest-spread": "^7.18.9", - "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", - "@babel/plugin-proposal-optional-chaining": "^7.18.9", - "@babel/plugin-proposal-private-methods": "^7.18.6", - "@babel/plugin-proposal-private-property-in-object": "^7.18.6", - "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.18.6", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-transform-arrow-functions": "^7.18.6", - "@babel/plugin-transform-async-to-generator": "^7.18.6", - "@babel/plugin-transform-block-scoped-functions": "^7.18.6", - "@babel/plugin-transform-block-scoping": "^7.18.9", - "@babel/plugin-transform-classes": "^7.19.0", - "@babel/plugin-transform-computed-properties": "^7.18.9", - "@babel/plugin-transform-destructuring": "^7.18.13", - "@babel/plugin-transform-dotall-regex": "^7.18.6", - "@babel/plugin-transform-duplicate-keys": "^7.18.9", - "@babel/plugin-transform-exponentiation-operator": "^7.18.6", - "@babel/plugin-transform-for-of": "^7.18.8", - "@babel/plugin-transform-function-name": "^7.18.9", - "@babel/plugin-transform-literals": "^7.18.9", - "@babel/plugin-transform-member-expression-literals": "^7.18.6", - "@babel/plugin-transform-modules-amd": "^7.18.6", - "@babel/plugin-transform-modules-commonjs": "^7.18.6", - "@babel/plugin-transform-modules-systemjs": "^7.19.0", - "@babel/plugin-transform-modules-umd": "^7.18.6", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.19.1", - "@babel/plugin-transform-new-target": "^7.18.6", - "@babel/plugin-transform-object-super": "^7.18.6", - "@babel/plugin-transform-parameters": "^7.18.8", - "@babel/plugin-transform-property-literals": "^7.18.6", - "@babel/plugin-transform-regenerator": "^7.18.6", - "@babel/plugin-transform-reserved-words": "^7.18.6", - "@babel/plugin-transform-shorthand-properties": "^7.18.6", - "@babel/plugin-transform-spread": "^7.19.0", - "@babel/plugin-transform-sticky-regex": "^7.18.6", - "@babel/plugin-transform-template-literals": "^7.18.9", - "@babel/plugin-transform-typeof-symbol": "^7.18.9", - "@babel/plugin-transform-unicode-escapes": "^7.18.10", - "@babel/plugin-transform-unicode-regex": "^7.18.6", - "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.19.3", - "babel-plugin-polyfill-corejs2": "^0.3.3", - "babel-plugin-polyfill-corejs3": "^0.6.0", - "babel-plugin-polyfill-regenerator": "^0.4.1", - "core-js-compat": "^3.25.1", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "@babel/preset-modules": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", - "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-transform-dotall-regex": "^7.4.4", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" - } - }, - "@babel/runtime": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.19.0.tgz", - "integrity": "sha512-eR8Lo9hnDS7tqkO7NsV+mKvCmv5boaXFSZ70DnfhcgiEne8hv9oCEd36Klw74EtizEqLsy4YnW8UWwpBVolHZA==", - "dev": true, - "requires": { - "regenerator-runtime": "^0.13.4" - } - }, - "@babel/template": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", - "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.10", - "@babel/types": "^7.18.10" - } - }, - "@babel/traverse": { - "version": "7.19.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.19.3.tgz", - "integrity": "sha512-qh5yf6149zhq2sgIXmwjnsvmnNQC2iw70UFjp4olxucKrWd/dvlUsBI88VSLUsnMNF7/vnOiA+nk1+yLoCqROQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.19.3", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.19.3", - "@babel/types": "^7.19.3", - "debug": "^4.1.0", - "globals": "^11.1.0" - } - }, - "@babel/types": { - "version": "7.19.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.19.3.tgz", - "integrity": "sha512-hGCaQzIY22DJlDh9CH7NOxgKkFjBk0Cw9xDO1Xmh2151ti7wiGfQ3LauXzL4HP1fmFlTX6XjpRETTpUcv7wQLw==", - "dev": true, - "requires": { - "@babel/helper-string-parser": "^7.18.10", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" - } - }, - "@discoveryjs/json-ext": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", - "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", - "dev": true - }, - "@github/details-menu-element": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/@github/details-menu-element/-/details-menu-element-1.0.12.tgz", - "integrity": "sha512-Icbq+xw7Qjb6byfRtC5cjk/eAxb+Wc4F/WS+L6VTHLYEfi8q/akDtHgViGeu854IMiJ/qDosfOGXGgSrleud2w==" - }, - "@github/tab-container-element": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@github/tab-container-element/-/tab-container-element-3.2.0.tgz", - "integrity": "sha512-to5ZJuywKK3KX53X1ifOcWjvUTQcBGdQ6Qkhm8L97xQ3ovICag1048M3YMpc+QSdr8xWeCBMnLeMnENqotB0Og==" - }, - "@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "dev": true, - "requires": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true - }, - "@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true - }, - "@jridgewell/source-map": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", - "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", - "dev": true, - "requires": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true - }, - "@jridgewell/trace-mapping": { - "version": "0.3.14", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz", - "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==", - "dev": true, - "requires": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "@leichtgewicht/ip-codec": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", - "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", - "dev": true - }, - "@nodelib/fs.scandir": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz", - "integrity": "sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "2.0.4", - "run-parallel": "^1.1.9" - } - }, - "@nodelib/fs.stat": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz", - "integrity": "sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==", - "dev": true - }, - "@nodelib/fs.walk": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz", - "integrity": "sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow==", - "dev": true, - "requires": { - "@nodelib/fs.scandir": "2.1.4", - "fastq": "^1.6.0" - } - }, - "@socket.io/component-emitter": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", - "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==", - "dev": true - }, - "@trysound/sax": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", - "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", - "dev": true - }, - "@types/babel__core": { - "version": "7.1.19", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.19.tgz", - "integrity": "sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==", - "dev": true, - "requires": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "@types/babel__generator": { - "version": "7.6.4", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", - "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", - "dev": true, - "requires": { - "@babel/types": "^7.0.0" - } - }, - "@types/babel__template": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", - "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", - "dev": true, - "requires": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "@types/babel__traverse": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.2.tgz", - "integrity": "sha512-FcFaxOr2V5KZCviw1TnutEMVUVsGt4D2hP1TAfXZAMKuHYW3xQhe3jTxNPWutgCJ3/X1c5yX8ZoGVEItxKbwBg==", - "dev": true, - "requires": { - "@babel/types": "^7.3.0" - } - }, - "@types/body-parser": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", - "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", - "dev": true, - "requires": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "@types/bonjour": { - "version": "3.5.10", - "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz", - "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/clean-css": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/@types/clean-css/-/clean-css-4.2.6.tgz", - "integrity": "sha512-Ze1tf+LnGPmG6hBFMi0B4TEB0mhF7EiMM5oyjLDNPE9hxrPU0W+5+bHvO+eFPA+bt0iC1zkQMoU/iGdRVjcRbw==", - "dev": true, - "requires": { - "@types/node": "*", - "source-map": "^0.6.0" - } - }, - "@types/connect": { - "version": "3.4.35", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", - "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/connect-history-api-fallback": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz", - "integrity": "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==", - "dev": true, - "requires": { - "@types/express-serve-static-core": "*", - "@types/node": "*" - } - }, - "@types/cookie": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", - "dev": true - }, - "@types/cors": { - "version": "2.8.12", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz", - "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==", - "dev": true - }, - "@types/eslint": { - "version": "8.4.6", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.6.tgz", - "integrity": "sha512-/fqTbjxyFUaYNO7VcW5g+4npmqVACz1bB7RTHYuLj+PRjw9hrCwrUXVQFpChUS0JsyEFvMZ7U/PfmvWgxJhI9g==", - "dev": true, - "requires": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "@types/eslint-scope": { - "version": "3.7.4", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", - "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", - "dev": true, - "requires": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "@types/estree": { - "version": "0.0.51", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", - "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", - "dev": true - }, - "@types/express": { - "version": "4.17.14", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.14.tgz", - "integrity": "sha512-TEbt+vaPFQ+xpxFLFssxUDXj5cWCxZJjIcB7Yg0k0GMHGtgtQgpvx/MUQUeAkNbA9AAGrwkAsoeItdTgS7FMyg==", - "dev": true, - "requires": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.18", - "@types/qs": "*", - "@types/serve-static": "*" - } - }, - "@types/express-serve-static-core": { - "version": "4.17.31", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.31.tgz", - "integrity": "sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q==", - "dev": true, - "requires": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*" - } - }, - "@types/glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==", - "dev": true, - "requires": { - "@types/minimatch": "*", - "@types/node": "*" - } - }, - "@types/http-proxy": { - "version": "1.17.9", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz", - "integrity": "sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/imagemin": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@types/imagemin/-/imagemin-7.0.0.tgz", - "integrity": "sha512-BiNd5FazD5ZmJUYD9txsbrttL0P0welrb9yAPn6ykKK3kWufwFsxYqw5KdggfZQDjiNYwsBrX+Fwei0Xsw4oAw==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/imagemin-gifsicle": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/@types/imagemin-gifsicle/-/imagemin-gifsicle-7.0.1.tgz", - "integrity": "sha512-kUz6sUh0P95JOS0RGEaaemWUrASuw+dLsWIveK2UZJx74id/B9epgblMkCk/r5MjUWbZ83wFvacG5Rb/f97gyA==", - "dev": true, - "requires": { - "@types/imagemin": "*" - } - }, - "@types/imagemin-mozjpeg": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@types/imagemin-mozjpeg/-/imagemin-mozjpeg-8.0.1.tgz", - "integrity": "sha512-kMQWEoKxxhlnH4POI3qfW9DjXlQfi80ux3l2b3j5R3eudSCoUIzKQLkfMjNJ6eMYnMWBcB+rfQOWqIzdIwFGKw==", - "dev": true, - "requires": { - "@types/imagemin": "*" - } - }, - "@types/imagemin-optipng": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/@types/imagemin-optipng/-/imagemin-optipng-5.2.1.tgz", - "integrity": "sha512-XCM/3q+HUL7v4zOqMI+dJ5dTxT+MUukY9KU49DSnYb/4yWtSMHJyADP+WHSMVzTR63J2ZvfUOzSilzBNEQW78g==", - "dev": true, - "requires": { - "@types/imagemin": "*" - } - }, - "@types/imagemin-svgo": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@types/imagemin-svgo/-/imagemin-svgo-8.0.1.tgz", - "integrity": "sha512-YafkdrVAcr38U0Ln1C+L1n4SIZqC47VBHTyxCq7gTUSd1R9MdIvMcrljWlgU1M9O68WZDeQWUrKipKYfEOCOvQ==", - "dev": true, - "requires": { - "@types/imagemin": "*", - "@types/svgo": "^1" - } - }, - "@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", - "dev": true - }, - "@types/mime": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", - "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", - "dev": true - }, - "@types/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-1z8k4wzFnNjVK/tlxvrWuK5WMt6mydWWP7+zvH5eFep4oj+UkrfiJTRtjCeBXNpwaA/FYqqtb4/QS4ianFpIRA==", - "dev": true - }, - "@types/node": { - "version": "14.14.37", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.37.tgz", - "integrity": "sha512-XYmBiy+ohOR4Lh5jE379fV2IU+6Jn4g5qASinhitfyO71b/sCo6MKsMLF5tc7Zf2CE8hViVQyYSobJNke8OvUw==", - "dev": true - }, - "@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", - "dev": true - }, - "@types/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", - "dev": true - }, - "@types/range-parser": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", - "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", - "dev": true - }, - "@types/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", - "dev": true - }, - "@types/serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==", - "dev": true, - "requires": { - "@types/express": "*" - } - }, - "@types/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==", - "dev": true, - "requires": { - "@types/mime": "*", - "@types/node": "*" - } - }, - "@types/sockjs": { - "version": "0.3.33", - "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", - "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/svgo": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/svgo/-/svgo-1.3.5.tgz", - "integrity": "sha512-y9Pw8IK50OqFRDpdI9Is29KlWiENVW9FDvlTmGHelvTfR2brYFJbsClvulZfeq6YKacFrDsG9a39w0kJZdHLaw==", - "dev": true - }, - "@types/ws": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", - "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@vue/reactivity": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.1.5.tgz", - "integrity": "sha512-1tdfLmNjWG6t/CsPldh+foumYFo3cpyCHgBYQ34ylaMsJ+SNHQ1kApMIa8jN+i593zQuaw3AdWH0nJTARzCFhg==", - "requires": { - "@vue/shared": "3.1.5" - } - }, - "@vue/shared": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.1.5.tgz", - "integrity": "sha512-oJ4F3TnvpXaQwZJNF3ZK+kLPHKarDmJjJ6jyzVNDKH9md1dptjC7lWR//jrGuLdek/U6iltWxqAnYOu8gCiOvA==" - }, - "@webassemblyjs/ast": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", - "dev": true, - "requires": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" - } - }, - "@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", - "dev": true - }, - "@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", - "dev": true - }, - "@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", - "dev": true - }, - "@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", - "dev": true, - "requires": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", - "dev": true - }, - "@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" - } - }, - "@webassemblyjs/ieee754": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", - "dev": true, - "requires": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "@webassemblyjs/leb128": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", - "dev": true, - "requires": { - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/utf8": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", - "dev": true - }, - "@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" - } - }, - "@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" - } - }, - "@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "@webassemblyjs/wast-printer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "@webpack-cli/configtest": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz", - "integrity": "sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==", - "dev": true, - "requires": {} - }, - "@webpack-cli/info": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.5.0.tgz", - "integrity": "sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==", - "dev": true, - "requires": { - "envinfo": "^7.7.3" - } - }, - "@webpack-cli/serve": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.7.0.tgz", - "integrity": "sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==", - "dev": true, - "requires": {} - }, - "@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true - }, - "@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true - }, - "accepts": { - "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.34", - "negotiator": "0.6.3" - } - }, - "acorn": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", - "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", - "dev": true - }, - "acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", - "dev": true, - "requires": {} - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", - "dev": true, - "requires": { - "ajv": "^8.0.0" - }, - "dependencies": { - "ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "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 - } - } - }, - "ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true - }, - "alpinejs": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/alpinejs/-/alpinejs-3.12.0.tgz", - "integrity": "sha512-YENcRBA9dlwR8PsZNFMTHbmdlTNwd1BkCeivPvOzzCKHas6AfwNRsDK9UEFmE5dXTMEZjnnpCTxV8vkdpWiOCw==", - "requires": { - "@vue/reactivity": "~3.1.1" - } - }, - "ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "requires": { - "type-fest": "^0.21.3" - } - }, - "ansi-html-community": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", - "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", - "dev": true - }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "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 - }, - "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 - }, - "asn1.js": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", - "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", - "dev": true, - "requires": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "safer-buffer": "^2.1.0" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } - } - }, - "assert": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", - "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", - "dev": true, - "requires": { - "object-assign": "^4.1.1", - "util": "0.10.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", - "dev": true - }, - "util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", - "dev": true, - "requires": { - "inherits": "2.0.1" - } - } - } - }, - "async": { - "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-each-series": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/async-each-series/-/async-each-series-0.1.1.tgz", - "integrity": "sha512-p4jj6Fws4Iy2m0iCmI2am2ZNZCgbdgE+P8F/8csmn2vx7ixXrO2zGcuNsD46X5uZSVecmkEy/M06X2vG8KD6dQ==", - "dev": true - }, - "autoprefixer": { - "version": "10.4.12", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.12.tgz", - "integrity": "sha512-WrCGV9/b97Pa+jtwf5UGaRjgQIg7OK3D06GnoYoZNcG1Xb8Gt3EfuKjlhh9i/VtT16g6PYjZ69jdJ2g8FxSC4Q==", - "dev": true, - "requires": { - "browserslist": "^4.21.4", - "caniuse-lite": "^1.0.30001407", - "fraction.js": "^4.2.0", - "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", - "postcss-value-parser": "^4.2.0" - } - }, - "axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", - "dev": true, - "requires": { - "follow-redirects": "^1.14.0" - } - }, - "babel-loader": { - "version": "8.2.5", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.5.tgz", - "integrity": "sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==", - "dev": true, - "requires": { - "find-cache-dir": "^3.3.1", - "loader-utils": "^2.0.0", - "make-dir": "^3.1.0", - "schema-utils": "^2.6.5" - } - }, - "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", - "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", - "dev": true, - "requires": { - "object.assign": "^4.1.0" - } - }, - "babel-plugin-polyfill-corejs2": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz", - "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.17.7", - "@babel/helper-define-polyfill-provider": "^0.3.3", - "semver": "^6.1.1" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "babel-plugin-polyfill-corejs3": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz", - "integrity": "sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==", - "dev": true, - "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.3", - "core-js-compat": "^3.25.1" - } - }, - "babel-plugin-polyfill-regenerator": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz", - "integrity": "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==", - "dev": true, - "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.3" - } - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "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 - }, - "base64id": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", - "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", - "dev": true - }, - "batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", - "dev": true - }, - "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 - }, - "bn.js": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", - "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==", - "dev": true - }, - "body-parser": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", - "dev": true, - "requires": { - "bytes": "3.1.2", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.11.0", - "raw-body": "2.5.1", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "dependencies": { - "bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "dev": true - }, - "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" - } - }, - "depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true - }, - "destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "dev": true - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dev": true, - "requires": { - "ee-first": "1.1.1" - } - } - } - }, - "bonjour-service": { - "version": "1.0.14", - "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.0.14.tgz", - "integrity": "sha512-HIMbgLnk1Vqvs6B4Wq5ep7mxvj9sGz5d1JJyDNSGNIdA/w2MCz6GTjWTdjqOJV1bEPj+6IkxDvWNFKEBxNt4kQ==", - "dev": true, - "requires": { - "array-flatten": "^2.1.2", - "dns-equal": "^1.0.0", - "fast-deep-equal": "^3.1.3", - "multicast-dns": "^7.2.5" - } - }, - "boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", - "dev": true - }, - "browser-sync": { - "version": "2.29.1", - "resolved": "https://registry.npmjs.org/browser-sync/-/browser-sync-2.29.1.tgz", - "integrity": "sha512-WXy9HMJVQaNUTPjmai330E2fnDA6W84l/vBILGkYu9yHXIpWw1gJYjdQWDfEhLFljYUHNTN9jM3GCej2T55m+g==", - "dev": true, - "requires": { - "browser-sync-client": "^2.29.1", - "browser-sync-ui": "^2.29.1", - "bs-recipes": "1.3.4", - "bs-snippet-injector": "^2.0.1", - "chalk": "4.1.2", - "chokidar": "^3.5.1", - "connect": "3.6.6", - "connect-history-api-fallback": "^1", - "dev-ip": "^1.0.1", - "easy-extender": "^2.3.4", - "eazy-logger": "^4.0.1", - "etag": "^1.8.1", - "fresh": "^0.5.2", - "fs-extra": "3.0.1", - "http-proxy": "^1.18.1", - "immutable": "^3", - "localtunnel": "^2.0.1", - "micromatch": "^4.0.2", - "opn": "5.3.0", - "portscanner": "2.2.0", - "qs": "^6.11.0", - "raw-body": "^2.3.2", - "resp-modifier": "6.0.2", - "rx": "4.1.0", - "send": "0.16.2", - "serve-index": "1.9.1", - "serve-static": "1.13.2", - "server-destroy": "1.0.1", - "socket.io": "^4.4.1", - "ua-parser-js": "^1.0.33", - "yargs": "^17.3.1" - }, - "dependencies": { - "braces": { - "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" - } - }, - "cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - } - }, - "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" - } - }, - "fill-range": { - "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" - } - }, - "fs-extra": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz", - "integrity": "sha1-N5TzeMWLNC6n27sjCVEJxLO2IpE=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^3.0.0", - "universalify": "^0.1.0" - } - }, - "http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", - "dev": true, - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, - "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 - }, - "jsonfile": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.1.tgz", - "integrity": "sha1-pezG9l9T9mLEQVx2daAzHQmS7GY=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "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" - } - }, - "mime": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", - "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", - "dev": true - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "send": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", - "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", - "dev": true, - "requires": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "~1.6.2", - "mime": "1.4.1", - "ms": "2.0.0", - "on-finished": "~2.3.0", - "range-parser": "~1.2.0", - "statuses": "~1.4.0" - } - }, - "serve-static": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", - "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", - "dev": true, - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.2", - "send": "0.16.2" - } - }, - "setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true - }, - "statuses": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", - "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", - "dev": true - }, - "to-regex-range": { - "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" - } - }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true - }, - "yargs": { - "version": "17.6.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.0.tgz", - "integrity": "sha512-8H/wTDqlSwoSnScvV2N/JHfLWOKuh5MVla9hqLjK3nsfyy6Y4kDSYSvkU5YCUEPOSnRXfIyx3Sq+B/IWudTo4g==", - "dev": true, - "requires": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.0.0" - } - }, - "yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true - } - } - }, - "browser-sync-client": { - "version": "2.29.1", - "resolved": "https://registry.npmjs.org/browser-sync-client/-/browser-sync-client-2.29.1.tgz", - "integrity": "sha512-aESnjt3rU7CZpzjyqzhIC2UJ3MVhzRis7cPKkGbyYWDf/wnbxyRa3fFenF3Qx9061/guY3HHhD67uiTVV26DVg==", - "dev": true, - "requires": { - "etag": "1.8.1", - "fresh": "0.5.2", - "mitt": "^1.1.3" - } - }, - "browser-sync-ui": { - "version": "2.29.1", - "resolved": "https://registry.npmjs.org/browser-sync-ui/-/browser-sync-ui-2.29.1.tgz", - "integrity": "sha512-MB7SAiUgVUrhipO2xyO1sheC9H0+LKXPQ3L1tQWcZ3AgizBnUNKAqDZPSwe4grNSa8o8ImSAwJp7lMS6XYy1Dw==", - "dev": true, - "requires": { - "async-each-series": "0.1.1", - "chalk": "4.1.2", - "connect-history-api-fallback": "^1", - "immutable": "^3", - "server-destroy": "1.0.1", - "socket.io-client": "^4.4.1", - "stream-throttle": "^0.1.3" - } - }, - "browser-sync-webpack-plugin": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/browser-sync-webpack-plugin/-/browser-sync-webpack-plugin-2.3.0.tgz", - "integrity": "sha512-MDvuRrTCtoL11dTdwMymo9CNJvYxJoW67gOO61cThfzHNX40S5WcBU+0bVQ86ll7r7aNpNgyzxF7RtnXMTDbyA==", - "dev": true, - "requires": { - "lodash": "^4" - } - }, - "browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "dev": true, - "requires": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", - "dev": true, - "requires": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", - "dev": true, - "requires": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "browserify-rsa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", - "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", - "dev": true, - "requires": { - "bn.js": "^5.0.0", - "randombytes": "^2.0.1" - } - }, - "browserify-sign": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", - "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", - "dev": true, - "requires": { - "bn.js": "^5.1.1", - "browserify-rsa": "^4.0.1", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "elliptic": "^6.5.3", - "inherits": "^2.0.4", - "parse-asn1": "^5.1.5", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "dependencies": { - "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, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "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 - } - } - }, - "browserify-zlib": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", - "dev": true, - "requires": { - "pako": "~1.0.5" - } - }, - "browserslist": { - "version": "4.21.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", - "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001400", - "electron-to-chromium": "^1.4.251", - "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.9" - } - }, - "bs-recipes": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/bs-recipes/-/bs-recipes-1.3.4.tgz", - "integrity": "sha1-DS1NSKcYyMBEdp/cT4lZLci2lYU=", - "dev": true - }, - "bs-snippet-injector": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/bs-snippet-injector/-/bs-snippet-injector-2.0.1.tgz", - "integrity": "sha1-YbU5PxH1JVntEgaTEANDtu2wTdU=", - "dev": true - }, - "buffer": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", - "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", - "dev": true, - "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - } - }, - "buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", - "dev": true - }, - "buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", - "dev": true - }, - "builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", - "dev": true - }, - "bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", - "dev": true - }, - "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - } - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "camel-case": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", - "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", - "dev": true, - "requires": { - "pascal-case": "^3.1.2", - "tslib": "^2.0.3" - } - }, - "caniuse-api": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", - "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "caniuse-lite": "^1.0.0", - "lodash.memoize": "^4.1.2", - "lodash.uniq": "^4.5.0" - } - }, - "caniuse-lite": { - "version": "1.0.30001418", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001418.tgz", - "integrity": "sha512-oIs7+JL3K9JRQ3jPZjlH6qyYDp+nBTCais7hjh0s+fuBwufc7uZ7hPYMXrDOJhV360KGMTcczMRObk0/iMqZRg==", - "dev": true - }, - "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" - }, - "dependencies": { - "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": { - "color-convert": "^2.0.1" - } - }, - "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 - }, - "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" - } - } - } - }, - "charenc": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", - "integrity": "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=", - "dev": true - }, - "chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "requires": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "fsevents": "~2.3.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "dependencies": { - "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true - }, - "braces": { - "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" - } - }, - "fill-range": { - "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" - } - }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "optional": true - }, - "glob-parent": { - "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" - } - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "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 - }, - "readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "requires": { - "picomatch": "^2.2.1" - } - }, - "to-regex-range": { - "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" - } - } - } - }, - "chrome-trace-event": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", - "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "ci-info": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.1.1.tgz", - "integrity": "sha512-kdRWLBIJwdsYJWYJFtAFFYxybguqeF91qpZaggjG5Nf8QKdizFG2hjqvaTXbxFIcYbSaD74KpAXv6BSm17DHEQ==", - "dev": true - }, - "cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "clean-css": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz", - "integrity": "sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==", - "dev": true, - "requires": { - "source-map": "~0.6.0" - } - }, - "cli-table3": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.0.tgz", - "integrity": "sha512-gnB85c3MGC7Nm9I/FkiasNBOKjOiO1RNuXXarQms37q4QMpWdlbBgD/VnOStA2faG1dpXMv31RFApjX1/QdgWQ==", - "dev": true, - "requires": { - "colors": "^1.1.2", - "object-assign": "^4.1.0", - "string-width": "^4.2.0" - } - }, - "cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - } - }, - "collect.js": { - "version": "4.28.6", - "resolved": "https://registry.npmjs.org/collect.js/-/collect.js-4.28.6.tgz", - "integrity": "sha512-NAyuk1DnCotRaDZIS5kJ4sptgkwOeYqElird10yziN5JBuwYOGkOTguhNcPn5g344IfylZecxNYZAVXgv19p5Q==", - "dev": true - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "colord": { - "version": "2.9.3", - "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", - "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", - "dev": true - }, - "colorette": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", - "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", - "dev": true - }, - "colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", - "dev": true, - "optional": 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 - }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", - "dev": true - }, - "compressible": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", - "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", - "dev": true, - "requires": { - "mime-db": ">= 1.43.0 < 2" - } - }, - "compression": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", - "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", - "dev": true, - "requires": { - "accepts": "~1.3.5", - "bytes": "3.0.0", - "compressible": "~2.0.16", - "debug": "2.6.9", - "on-headers": "~1.0.2", - "safe-buffer": "5.1.2", - "vary": "~1.1.2" - }, - "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" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "concat": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/concat/-/concat-1.0.3.tgz", - "integrity": "sha1-QPM1MInWVGdpXLGIa0Xt1jfYzKg=", - "dev": true, - "requires": { - "commander": "^2.9.0" - }, - "dependencies": { - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - } - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "connect": { - "version": "3.6.6", - "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.6.tgz", - "integrity": "sha1-Ce/2xVr3I24TcTWnJXSFi2eG9SQ=", - "dev": true, - "requires": { - "debug": "2.6.9", - "finalhandler": "1.1.0", - "parseurl": "~1.3.2", - "utils-merge": "1.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" - } - }, - "finalhandler": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", - "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=", - "dev": true, - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.1", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.2", - "statuses": "~1.3.1", - "unpipe": "~1.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "statuses": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", - "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=", - "dev": true - } - } - }, - "connect-history-api-fallback": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", - "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", - "dev": true - }, - "consola": { - "version": "2.15.3", - "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz", - "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==", - "dev": true - }, - "console-browserify": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", - "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", - "dev": true - }, - "constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", - "dev": true - }, - "content-disposition": { - "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.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": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", - "dev": true - }, - "convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.1" - } - }, - "cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", - "dev": true - }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", - "dev": true - }, - "core-js-compat": { - "version": "3.25.5", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.25.5.tgz", - "integrity": "sha512-ovcyhs2DEBUIE0MGEKHP4olCUW/XYte3Vroyxuh38rD1wAO4dHohsovUC4eAOuzFxE6b+RXvBU3UZ9o0YhUTkA==", - "dev": true, - "requires": { - "browserslist": "^4.21.4" - } - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true - }, - "cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "dev": true, - "requires": { - "object-assign": "^4", - "vary": "^1" - } - }, - "cosmiconfig": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", - "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", - "dev": true, - "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - } - }, - "create-ecdh": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", - "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "elliptic": "^6.5.3" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } - } - }, - "create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "dev": true, - "requires": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "dev": true, - "requires": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "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, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "crypt": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", - "integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=", - "dev": true - }, - "crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", - "dev": true, - "requires": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" - } - }, - "css-declaration-sorter": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.3.1.tgz", - "integrity": "sha512-fBffmak0bPAnyqc/HO8C3n2sHrp9wcqQz6ES9koRF2/mLOVAx9zIQ3Y7R29sYCteTPqMCwns4WYQoCX91Xl3+w==", - "dev": true, - "requires": {} - }, - "css-loader": { - "version": "5.2.7", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-5.2.7.tgz", - "integrity": "sha512-Q7mOvpBNBG7YrVGMxRxcBJZFL75o+cH2abNASdibkj/fffYD8qWbInZrD0S9ccI6vZclF3DsHE7njGlLtaHbhg==", - "dev": true, - "requires": { - "icss-utils": "^5.1.0", - "loader-utils": "^2.0.0", - "postcss": "^8.2.15", - "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.1.0", - "schema-utils": "^3.0.0", - "semver": "^7.3.5" - }, - "dependencies": { - "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" - } - } - } - }, - "css-select": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", - "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", - "dev": true, - "requires": { - "boolbase": "^1.0.0", - "css-what": "^6.0.1", - "domhandler": "^4.3.1", - "domutils": "^2.8.0", - "nth-check": "^2.0.1" - }, - "dependencies": { - "domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "dev": true, - "requires": { - "domelementtype": "^2.2.0" - } - } - } - }, - "css-tree": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", - "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", - "dev": true, - "requires": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" - } - }, - "css-what": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", - "dev": true - }, - "cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true - }, - "cssnano": { - "version": "5.1.13", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.13.tgz", - "integrity": "sha512-S2SL2ekdEz6w6a2epXn4CmMKU4K3KpcyXLKfAYc9UQQqJRkD/2eLUG0vJ3Db/9OvO5GuAdgXw3pFbR6abqghDQ==", - "dev": true, - "requires": { - "cssnano-preset-default": "^5.2.12", - "lilconfig": "^2.0.3", - "yaml": "^1.10.2" - } - }, - "cssnano-preset-default": { - "version": "5.2.12", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.12.tgz", - "integrity": "sha512-OyCBTZi+PXgylz9HAA5kHyoYhfGcYdwFmyaJzWnzxuGRtnMw/kR6ilW9XzlzlRAtB6PLT/r+prYgkef7hngFew==", - "dev": true, - "requires": { - "css-declaration-sorter": "^6.3.0", - "cssnano-utils": "^3.1.0", - "postcss-calc": "^8.2.3", - "postcss-colormin": "^5.3.0", - "postcss-convert-values": "^5.1.2", - "postcss-discard-comments": "^5.1.2", - "postcss-discard-duplicates": "^5.1.0", - "postcss-discard-empty": "^5.1.1", - "postcss-discard-overridden": "^5.1.0", - "postcss-merge-longhand": "^5.1.6", - "postcss-merge-rules": "^5.1.2", - "postcss-minify-font-values": "^5.1.0", - "postcss-minify-gradients": "^5.1.1", - "postcss-minify-params": "^5.1.3", - "postcss-minify-selectors": "^5.2.1", - "postcss-normalize-charset": "^5.1.0", - "postcss-normalize-display-values": "^5.1.0", - "postcss-normalize-positions": "^5.1.1", - "postcss-normalize-repeat-style": "^5.1.1", - "postcss-normalize-string": "^5.1.0", - "postcss-normalize-timing-functions": "^5.1.0", - "postcss-normalize-unicode": "^5.1.0", - "postcss-normalize-url": "^5.1.0", - "postcss-normalize-whitespace": "^5.1.1", - "postcss-ordered-values": "^5.1.3", - "postcss-reduce-initial": "^5.1.0", - "postcss-reduce-transforms": "^5.1.0", - "postcss-svgo": "^5.1.0", - "postcss-unique-selectors": "^5.1.1" - } - }, - "cssnano-utils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz", - "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==", - "dev": true, - "requires": {} - }, - "csso": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", - "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", - "dev": true, - "requires": { - "css-tree": "^1.1.2" - } - }, - "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "default-gateway": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", - "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", - "dev": true, - "requires": { - "execa": "^5.0.0" - } - }, - "define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", - "dev": true - }, - "define-properties": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", - "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", - "dev": true, - "requires": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - } - }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", - "dev": true - }, - "des.js": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", - "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", - "dev": true - }, - "detect-node": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.5.tgz", - "integrity": "sha512-qi86tE6hRcFHy8jI1m2VG+LaPUR1LhqDa5G8tVjuUXmOrpuAgqsA1pN0+ldgr3aKUH+QLI9hCY/OcRYisERejw==", - "dev": true - }, - "dev-ip": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dev-ip/-/dev-ip-1.0.1.tgz", - "integrity": "sha1-p2o+0YVb56ASu4rBbLgPPADcKPA=", - "dev": true - }, - "diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } - } - }, - "dir-glob": { - "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" - } - }, - "dns-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", - "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==", - "dev": true - }, - "dns-packet": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.4.0.tgz", - "integrity": "sha512-EgqGeaBB8hLiHLZtp/IbaDQTL8pZ0+IvwzSHA6d7VyMDM+B9hgddEMa9xjK5oYnw0ci0JQ6g2XCD7/f6cafU6g==", - "dev": true, - "requires": { - "@leichtgewicht/ip-codec": "^2.0.1" - } - }, - "dom-serializer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - }, - "dependencies": { - "domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "dev": true, - "requires": { - "domelementtype": "^2.2.0" - } - } - } - }, - "domain-browser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", - "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", - "dev": true - }, - "domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true - }, - "domhandler": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-3.3.0.tgz", - "integrity": "sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA==", - "dev": true, - "requires": { - "domelementtype": "^2.0.1" - } - }, - "domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dev": true, - "requires": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - }, - "dependencies": { - "domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "dev": true, - "requires": { - "domelementtype": "^2.2.0" - } - } - } - }, - "dot-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", - "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", - "dev": true, - "requires": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "dotenv": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", - "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", - "dev": true - }, - "dotenv-expand": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", - "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", - "dev": true - }, - "easy-extender": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/easy-extender/-/easy-extender-2.3.4.tgz", - "integrity": "sha512-8cAwm6md1YTiPpOvDULYJL4ZS6WfM5/cTeVVh4JsvyYZAoqlRVUpHL9Gr5Fy7HA6xcSZicUia3DeAgO3Us8E+Q==", - "dev": true, - "requires": { - "lodash": "^4.17.10" - } - }, - "eazy-logger": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/eazy-logger/-/eazy-logger-4.0.1.tgz", - "integrity": "sha512-2GSFtnnC6U4IEKhEI7+PvdxrmjJ04mdsj3wHZTFiw0tUtG4HCWzTr13ZYTk8XOGnA1xQMaDljoBOYlk3D/MMSw==", - "dev": true, - "requires": { - "chalk": "4.1.2" - } - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", - "dev": true - }, - "electron-to-chromium": { - "version": "1.4.276", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.276.tgz", - "integrity": "sha512-EpuHPqu8YhonqLBXHoU6hDJCD98FCe6KDoet3/gY1qsQ6usjJoHqBH2YIVs8FXaAtHwVL8Uqa/fsYao/vq9VWQ==", - "dev": true - }, - "elliptic": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", - "dev": true, - "requires": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } - } - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", - "dev": true - }, - "engine.io": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.2.1.tgz", - "integrity": "sha512-ECceEFcAaNRybd3lsGQKas3ZlMVjN3cyWwMP25D2i0zWfyiytVbTpRPa34qrr+FHddtpBVOmq4H/DCv1O0lZRA==", - "dev": true, - "requires": { - "@types/cookie": "^0.4.1", - "@types/cors": "^2.8.12", - "@types/node": ">=10.0.0", - "accepts": "~1.3.4", - "base64id": "2.0.0", - "cookie": "~0.4.1", - "cors": "~2.8.5", - "debug": "~4.3.1", - "engine.io-parser": "~5.0.3", - "ws": "~8.2.3" - }, - "dependencies": { - "cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", - "dev": true - } - } - }, - "engine.io-client": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.4.0.tgz", - "integrity": "sha512-GyKPDyoEha+XZ7iEqam49vz6auPnNJ9ZBfy89f+rMMas8AuiMWOZ9PVzu8xb9ZC6rafUqiGHSCfu22ih66E+1g==", - "dev": true, - "requires": { - "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.1", - "engine.io-parser": "~5.0.3", - "ws": "~8.11.0", - "xmlhttprequest-ssl": "~2.0.0" - }, - "dependencies": { - "ws": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", - "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", - "dev": true, - "requires": {} - } - } - }, - "engine.io-parser": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.4.tgz", - "integrity": "sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg==", - "dev": true - }, - "enhanced-resolve": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz", - "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==", - "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", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dev": true - }, - "envinfo": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", - "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", - "dev": true - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es-module-lexer": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", - "dev": true - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "requires": { - "estraverse": "^5.2.0" - }, - "dependencies": { - "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true - } - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", - "dev": true - }, - "eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true - }, - "events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true - }, - "evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "dev": true, - "requires": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "execa": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.0.0.tgz", - "integrity": "sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - } - }, - "express": { - "version": "4.18.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", - "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", - "dev": true, - "requires": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.1", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.5.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.2.0", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.11.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "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": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", - "dev": true - }, - "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" - } - }, - "depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dev": true, - "requires": { - "ee-first": "1.1.1" - } - }, - "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 - }, - "statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true - } - } - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "fast-glob": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.5.tgz", - "integrity": "sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.0", - "merge2": "^1.3.0", - "micromatch": "^4.0.2", - "picomatch": "^2.2.1" - }, - "dependencies": { - "braces": { - "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" - } - }, - "fill-range": { - "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" - } - }, - "glob-parent": { - "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" - } - }, - "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 - }, - "micromatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", - "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", - "dev": true, - "requires": { - "braces": "^3.0.1", - "picomatch": "^2.0.5" - } - }, - "to-regex-range": { - "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" - } - } - } - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "fastest-levenshtein": { - "version": "1.0.16", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", - "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", - "dev": true - }, - "fastq": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.11.0.tgz", - "integrity": "sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g==", - "dev": true, - "requires": { - "reusify": "^1.0.4" - } - }, - "faye-websocket": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", - "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", - "dev": true, - "requires": { - "websocket-driver": ">=0.5.1" - } - }, - "figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, - "file-loader": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", - "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", - "dev": true, - "requires": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" - }, - "dependencies": { - "schema-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", - "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.6", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } - } - }, - "file-type": { - "version": "12.4.2", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-12.4.2.tgz", - "integrity": "sha512-UssQP5ZgIOKelfsaB5CuGAL+Y+q7EmONuiwF3N5HAH0t27rvrttgi6Ra9k/+DVaY9UF6+ybxu5pOXLUdA8N7Vg==", - "dev": true - }, - "finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", - "dev": true, - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.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" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dev": true, - "requires": { - "ee-first": "1.1.1" - } - }, - "statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true - } - } - }, - "find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - } - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "follow-redirects": { - "version": "1.14.8", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.8.tgz", - "integrity": "sha512-1x0S9UVJHsQprFcEC/qnNzBLcIxsjAV905f/UkQxbclCsoTWlacCNOpQa/anodLl2uaEKFhfWOvM2Qg77+15zA==", - "dev": true - }, - "forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "dev": true - }, - "fraction.js": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", - "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", - "dev": true - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", - "dev": true - }, - "fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "fs-monkey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", - "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==", - "dev": true - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true - }, - "get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" - } - }, - "get-stream": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.0.tgz", - "integrity": "sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg==", - "dev": true - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true - }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true - }, - "globby": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz", - "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==", - "dev": true, - "requires": { - "@types/glob": "^7.1.1", - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.0.3", - "glob": "^7.1.3", - "ignore": "^5.1.1", - "merge2": "^1.2.3", - "slash": "^3.0.0" - } - }, - "graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", - "dev": true - }, - "growly": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", - "integrity": "sha512-+xGQY0YyAWCnqy7Cd++hc2JqMYzlm0dG30Jd0beaA64sROr8C4nt8Yc9V5Ro3avlSUDTN0ulqP/VBKi1/lLygw==", - "dev": true - }, - "handle-thing": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", - "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", - "dev": true - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "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 - }, - "has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", - "dev": true, - "requires": { - "get-intrinsic": "^1.1.1" - } - }, - "has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true - }, - "hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", - "dev": true, - "requires": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "dependencies": { - "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, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "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 - } - } - }, - "hash-sum": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", - "integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==", - "dev": true - }, - "hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true - }, - "hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "dev": true, - "requires": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "hpack.js": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", - "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "obuf": "^1.0.0", - "readable-stream": "^2.0.1", - "wbuf": "^1.1.0" - } - }, - "html-entities": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz", - "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==", - "dev": true - }, - "html-loader": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/html-loader/-/html-loader-1.3.2.tgz", - "integrity": "sha512-DEkUwSd0sijK5PF3kRWspYi56XP7bTNkyg5YWSzBdjaSDmvCufep5c4Vpb3PBf6lUL0YPtLwBfy9fL0t5hBAGA==", - "dev": true, - "requires": { - "html-minifier-terser": "^5.1.1", - "htmlparser2": "^4.1.0", - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" - }, - "dependencies": { - "schema-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", - "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.6", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } - } - }, - "html-minifier-terser": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz", - "integrity": "sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg==", - "dev": true, - "requires": { - "camel-case": "^4.1.1", - "clean-css": "^4.2.3", - "commander": "^4.1.1", - "he": "^1.2.0", - "param-case": "^3.0.3", - "relateurl": "^0.2.7", - "terser": "^4.6.3" - }, - "dependencies": { - "commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", - "dev": true - }, - "terser": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz", - "integrity": "sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==", - "dev": true, - "requires": { - "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" - }, - "dependencies": { - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - } - } - } - } - }, - "htmlparser2": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-4.1.0.tgz", - "integrity": "sha512-4zDq1a1zhE4gQso/c5LP1OtrhYTncXNSpvJYtWJBtXAETPlMfi3IFNjGuQbYLuVY4ZR0QMqRVvo4Pdy9KLyP8Q==", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^3.0.0", - "domutils": "^2.0.0", - "entities": "^2.0.0" - } - }, - "http-deceiver": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", - "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", - "dev": true - }, - "http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dev": true, - "requires": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, - "dependencies": { - "depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true - }, - "statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true - } - } - }, - "http-parser-js": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", - "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", - "dev": true - }, - "http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", - "dev": true, - "requires": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - } - }, - "http-proxy-middleware": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", - "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", - "dev": true, - "requires": { - "@types/http-proxy": "^1.17.8", - "http-proxy": "^1.18.1", - "is-glob": "^4.0.1", - "is-plain-obj": "^3.0.0", - "micromatch": "^4.0.2" - }, - "dependencies": { - "braces": { - "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" - } - }, - "fill-range": { - "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" - } - }, - "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 - }, - "micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "requires": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - } - }, - "to-regex-range": { - "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" - } - } - } - }, - "https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", - "dev": true - }, - "human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "icss-utils": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", - "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", - "dev": true, - "requires": {} - }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true - }, - "ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", - "dev": true - }, - "imagemin": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/imagemin/-/imagemin-7.0.1.tgz", - "integrity": "sha512-33AmZ+xjZhg2JMCe+vDf6a9mzWukE7l+wAtesjE7KyteqqKjzxv7aVQeWnul1Ve26mWvEQqyPwl0OctNBfSR9w==", - "dev": true, - "requires": { - "file-type": "^12.0.0", - "globby": "^10.0.0", - "graceful-fs": "^4.2.2", - "junk": "^3.1.0", - "make-dir": "^3.0.0", - "p-pipe": "^3.0.0", - "replace-ext": "^1.0.0" - } - }, - "img-loader": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/img-loader/-/img-loader-4.0.0.tgz", - "integrity": "sha512-UwRcPQdwdOyEHyCxe1V9s9YFwInwEWCpoO+kJGfIqDrBDqA8jZUsEZTxQ0JteNPGw/Gupmwesk2OhLTcnw6tnQ==", - "dev": true, - "requires": { - "loader-utils": "^1.1.0" - }, - "dependencies": { - "json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - }, - "loader-utils": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", - "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - } - } - } - }, - "immutable": { - "version": "3.8.2", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz", - "integrity": "sha512-15gZoQ38eYjEjxkorfbcgBKBL6R7T459OuK+CpcWt7O3KF4uPCx2tD0uFETlUDIyo+1789crbMhTvQBSR5yBMg==", - "dev": true - }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", - "dev": true, - "requires": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - } - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "interpret": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", - "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", - "dev": true - }, - "ipaddr.js": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", - "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==", - "dev": true - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true - }, - "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-core-module": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", - "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "is-docker": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.1.1.tgz", - "integrity": "sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw==", - "dev": true - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "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==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-number-like": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/is-number-like/-/is-number-like-1.0.8.tgz", - "integrity": "sha512-6rZi3ezCyFcn5L71ywzz2bS5b2Igl1En3eTlZlvKjpz1n3IZLAYMbKYAIQgFmEu0GENg92ziU/faEOA/aixjbA==", - "dev": true, - "requires": { - "lodash.isfinite": "^3.3.2" - } - }, - "is-plain-obj": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", - "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", - "dev": true - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "is-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", - "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", - "dev": true - }, - "is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dev": true, - "requires": { - "is-docker": "^2.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", - "dev": true - }, - "jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "dev": true, - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - } - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true - }, - "json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true - }, - "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - } - }, - "junk": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/junk/-/junk-3.1.0.tgz", - "integrity": "sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ==", - "dev": true - }, - "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 - }, - "klona": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", - "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", - "dev": true - }, - "laravel-mix": { - "version": "6.0.49", - "resolved": "https://registry.npmjs.org/laravel-mix/-/laravel-mix-6.0.49.tgz", - "integrity": "sha512-bBMFpFjp26XfijPvY5y9zGKud7VqlyOE0OWUcPo3vTBY5asw8LTjafAbee1dhfLz6PWNqDziz69CP78ELSpfKw==", - "dev": true, - "requires": { - "@babel/core": "^7.15.8", - "@babel/plugin-proposal-object-rest-spread": "^7.15.6", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-transform-runtime": "^7.15.8", - "@babel/preset-env": "^7.15.8", - "@babel/runtime": "^7.15.4", - "@types/babel__core": "^7.1.16", - "@types/clean-css": "^4.2.5", - "@types/imagemin-gifsicle": "^7.0.1", - "@types/imagemin-mozjpeg": "^8.0.1", - "@types/imagemin-optipng": "^5.2.1", - "@types/imagemin-svgo": "^8.0.0", - "autoprefixer": "^10.4.0", - "babel-loader": "^8.2.3", - "chalk": "^4.1.2", - "chokidar": "^3.5.2", - "clean-css": "^5.2.4", - "cli-table3": "^0.6.0", - "collect.js": "^4.28.5", - "commander": "^7.2.0", - "concat": "^1.0.3", - "css-loader": "^5.2.6", - "cssnano": "^5.0.8", - "dotenv": "^10.0.0", - "dotenv-expand": "^5.1.0", - "file-loader": "^6.2.0", - "fs-extra": "^10.0.0", - "glob": "^7.2.0", - "html-loader": "^1.3.2", - "imagemin": "^7.0.1", - "img-loader": "^4.0.0", - "lodash": "^4.17.21", - "md5": "^2.3.0", - "mini-css-extract-plugin": "^1.6.2", - "node-libs-browser": "^2.2.1", - "postcss-load-config": "^3.1.0", - "postcss-loader": "^6.2.0", - "semver": "^7.3.5", - "strip-ansi": "^6.0.0", - "style-loader": "^2.0.0", - "terser": "^5.9.0", - "terser-webpack-plugin": "^5.2.4", - "vue-style-loader": "^4.1.3", - "webpack": "^5.60.0", - "webpack-cli": "^4.9.1", - "webpack-dev-server": "^4.7.3", - "webpack-merge": "^5.8.0", - "webpack-notifier": "^1.14.1", - "webpackbar": "^5.0.0-3", - "yargs": "^17.2.1" - }, - "dependencies": { - "clean-css": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.1.tgz", - "integrity": "sha512-lCr8OHhiWCTw4v8POJovCoh4T7I9U11yVsPjMWWnnMmp9ZowCxyad1Pathle/9HjaDp+fdQKjO9fQydE6RHTZg==", - "dev": true, - "requires": { - "source-map": "~0.6.0" - } - }, - "cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - } - }, - "yargs": { - "version": "17.6.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.0.tgz", - "integrity": "sha512-8H/wTDqlSwoSnScvV2N/JHfLWOKuh5MVla9hqLjK3nsfyy6Y4kDSYSvkU5YCUEPOSnRXfIyx3Sq+B/IWudTo4g==", - "dev": true, - "requires": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.0.0" - } - }, - "yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true - } - } - }, - "lilconfig": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz", - "integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==", - "dev": true - }, - "limiter": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz", - "integrity": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==", - "dev": true - }, - "lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true - }, - "loader-runner": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", - "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", - "dev": true - }, - "loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - }, - "localtunnel": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/localtunnel/-/localtunnel-2.0.2.tgz", - "integrity": "sha512-n418Cn5ynvJd7m/N1d9WVJISLJF/ellZnfsLnx8WBWGzxv/ntNcFkJ1o6se5quUhCplfLGBNL5tYHiq5WF3Nug==", - "dev": true, - "requires": { - "axios": "0.21.4", - "debug": "4.3.2", - "openurl": "1.1.1", - "yargs": "17.1.1" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", - "dev": true - }, - "lodash.isfinite": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz", - "integrity": "sha512-7FGG40uhC8Mm633uKW1r58aElFlBlxCrg9JfSi3P6aYiWmfiWF0PgMd86ZUsxE5GwWPdHoS2+48bwTh2VPkIQA==", - "dev": true - }, - "lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", - "dev": true - }, - "lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", - "dev": true - }, - "loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "peer": true, - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, - "lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "dev": true, - "requires": { - "tslib": "^2.0.3" - } - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "requires": { - "semver": "^6.0.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "md5": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", - "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", - "dev": true, - "requires": { - "charenc": "0.0.2", - "crypt": "0.0.2", - "is-buffer": "~1.1.6" - } - }, - "md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "dev": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "mdn-data": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", - "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", - "dev": true - }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "dev": true - }, - "memfs": { - "version": "3.4.7", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.7.tgz", - "integrity": "sha512-ygaiUSNalBX85388uskeCyhSAoOSgzBbtVCr9jA2RROssFL9Q19/ZXFqS+2Th2sr1ewNIWgFdLzLC3Yl1Zv+lw==", - "dev": true, - "requires": { - "fs-monkey": "^1.0.3" - } - }, - "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", - "dev": true - }, - "merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true - }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", - "dev": true - }, - "miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "dev": true, - "requires": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } - } - }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true - }, - "mime-db": { - "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.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.52.0" - } - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, - "mini-css-extract-plugin": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-1.6.2.tgz", - "integrity": "sha512-WhDvO3SjGm40oV5y26GjMJYjd2UMqrLAGKy5YS2/3QKJy2F7jgynuHTir/tgUUOiNQu5saXHdc8reo7YuhhT4Q==", - "dev": true, - "requires": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0", - "webpack-sources": "^1.1.0" - }, - "dependencies": { - "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" - } - } - } - }, - "minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true - }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", - "dev": true - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "dev": true - }, - "mitt": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mitt/-/mitt-1.2.0.tgz", - "integrity": "sha512-r6lj77KlwqLhIUku9UWYes7KJtsczvolZkzp8hbaDPPaE24OmWl5s539Mytlj22siEQKosZ26qCBgda2PKwoJw==", - "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==", - "dev": true - }, - "multicast-dns": { - "version": "7.2.5", - "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", - "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", - "dev": true, - "requires": { - "dns-packet": "^5.2.2", - "thunky": "^1.0.2" - } - }, - "nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", - "dev": true - }, - "negotiator": { - "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": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true - }, - "no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "dev": true, - "requires": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" - } - }, - "node-forge": { - "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-libs-browser": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", - "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", - "dev": true, - "requires": { - "assert": "^1.1.1", - "browserify-zlib": "^0.2.0", - "buffer": "^4.3.0", - "console-browserify": "^1.1.0", - "constants-browserify": "^1.0.0", - "crypto-browserify": "^3.11.0", - "domain-browser": "^1.1.1", - "events": "^3.0.0", - "https-browserify": "^1.0.0", - "os-browserify": "^0.3.0", - "path-browserify": "0.0.1", - "process": "^0.11.10", - "punycode": "^1.2.4", - "querystring-es3": "^0.2.0", - "readable-stream": "^2.3.3", - "stream-browserify": "^2.0.1", - "stream-http": "^2.7.2", - "string_decoder": "^1.0.0", - "timers-browserify": "^2.0.4", - "tty-browserify": "0.0.0", - "url": "^0.11.0", - "util": "^0.11.0", - "vm-browserify": "^1.0.1" - }, - "dependencies": { - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - } - } - }, - "node-notifier": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-9.0.1.tgz", - "integrity": "sha512-fPNFIp2hF/Dq7qLDzSg4vZ0J4e9v60gJR+Qx7RbjbWqzPDdEqeVpEx5CFeDAELIl+A/woaaNn1fQ5nEVerMxJg==", - "dev": true, - "requires": { - "growly": "^1.3.0", - "is-wsl": "^2.2.0", - "semver": "^7.3.2", - "shellwords": "^0.1.1", - "uuid": "^8.3.0", - "which": "^2.0.2" - } - }, - "node-releases": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", - "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", - "dev": true - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, - "normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", - "dev": true - }, - "normalize-url": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", - "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", - "dev": true - }, - "npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "requires": { - "path-key": "^3.0.0" - } - }, - "nth-check": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "dev": true, - "requires": { - "boolbase": "^1.0.0" - } - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" - }, - "object-inspect": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", - "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", - "dev": true - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true - }, - "object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - } - }, - "obuf": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", - "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", - "dev": true - }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "dev": true, - "requires": { - "ee-first": "1.1.1" - } - }, - "on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", - "dev": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "open": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", - "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", - "dev": true, - "requires": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - } - }, - "openurl": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/openurl/-/openurl-1.1.1.tgz", - "integrity": "sha1-OHW0sO96UsFW8NtB1GCduw+Us4c=", - "dev": true - }, - "opn": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.3.0.tgz", - "integrity": "sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==", - "dev": true, - "requires": { - "is-wsl": "^1.1.0" - }, - "dependencies": { - "is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", - "dev": true - } - } - }, - "os-browserify": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", - "dev": true - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "p-pipe": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-pipe/-/p-pipe-3.1.0.tgz", - "integrity": "sha512-08pj8ATpzMR0Y80x50yJHn37NF6vjrqHutASaX5LiH5npS9XPvrUmscd9MF5R4fuYRHOxQR1FfMIlF7AzwoPqw==", - "dev": true - }, - "p-retry": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", - "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", - "dev": true, - "requires": { - "@types/retry": "0.12.0", - "retry": "^0.13.1" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "dev": true - }, - "param-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", - "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", - "dev": true, - "requires": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "requires": { - "callsites": "^3.0.0" - } - }, - "parse-asn1": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", - "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", - "dev": true, - "requires": { - "asn1.js": "^5.2.0", - "browserify-aes": "^1.0.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" - } - }, - "parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - } - }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true - }, - "pascal-case": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", - "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", - "dev": true, - "requires": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "path-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", - "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", - "dev": true - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "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=", - "dev": true - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", - "dev": true - }, - "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 - }, - "pbkdf2": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz", - "integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==", - "dev": true, - "requires": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true - }, - "pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "requires": { - "find-up": "^4.0.0" - } - }, - "portscanner": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/portscanner/-/portscanner-2.2.0.tgz", - "integrity": "sha512-IFroCz/59Lqa2uBvzK3bKDbDDIEaAY8XJ1jFxcLWTqosrsc32//P4VuSB2vZXoHiHqOmx8B5L5hnKOxL/7FlPw==", - "dev": true, - "requires": { - "async": "^2.6.0", - "is-number-like": "^1.0.3" - } - }, - "postcss": { - "version": "8.4.17", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.17.tgz", - "integrity": "sha512-UNxNOLQydcOFi41yHNMcKRZ39NeXlr8AxGuZJsdub8vIb12fHzcq37DTU/QtbI6WLxNg2gF9Z+8qtRwTj1UI1Q==", - "dev": true, - "requires": { - "nanoid": "^3.3.4", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - } - }, - "postcss-calc": { - "version": "8.2.4", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz", - "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==", - "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.9", - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-colormin": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.0.tgz", - "integrity": "sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg==", - "dev": true, - "requires": { - "browserslist": "^4.16.6", - "caniuse-api": "^3.0.0", - "colord": "^2.9.1", - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-convert-values": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.2.tgz", - "integrity": "sha512-c6Hzc4GAv95B7suy4udszX9Zy4ETyMCgFPUDtWjdFTKH1SE9eFY/jEpHSwTH1QPuwxHpWslhckUQWbNRM4ho5g==", - "dev": true, - "requires": { - "browserslist": "^4.20.3", - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-discard-comments": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz", - "integrity": "sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==", - "dev": true, - "requires": {} - }, - "postcss-discard-duplicates": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", - "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", - "dev": true, - "requires": {} - }, - "postcss-discard-empty": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz", - "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==", - "dev": true, - "requires": {} - }, - "postcss-discard-overridden": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", - "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==", - "dev": true, - "requires": {} - }, - "postcss-load-config": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz", - "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==", - "dev": true, - "requires": { - "lilconfig": "^2.0.5", - "yaml": "^1.10.2" - } - }, - "postcss-loader": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.1.tgz", - "integrity": "sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==", - "dev": true, - "requires": { - "cosmiconfig": "^7.0.0", - "klona": "^2.0.5", - "semver": "^7.3.5" - } - }, - "postcss-merge-longhand": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.6.tgz", - "integrity": "sha512-6C/UGF/3T5OE2CEbOuX7iNO63dnvqhGZeUnKkDeifebY0XqkkvrctYSZurpNE902LDf2yKwwPFgotnfSoPhQiw==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0", - "stylehacks": "^5.1.0" - } - }, - "postcss-merge-rules": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.2.tgz", - "integrity": "sha512-zKMUlnw+zYCWoPN6yhPjtcEdlJaMUZ0WyVcxTAmw3lkkN/NDMRkOkiuctQEoWAOvH7twaxUUdvBWl0d4+hifRQ==", - "dev": true, - "requires": { - "browserslist": "^4.16.6", - "caniuse-api": "^3.0.0", - "cssnano-utils": "^3.1.0", - "postcss-selector-parser": "^6.0.5" - } - }, - "postcss-minify-font-values": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz", - "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-minify-gradients": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz", - "integrity": "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==", - "dev": true, - "requires": { - "colord": "^2.9.1", - "cssnano-utils": "^3.1.0", - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-minify-params": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.3.tgz", - "integrity": "sha512-bkzpWcjykkqIujNL+EVEPOlLYi/eZ050oImVtHU7b4lFS82jPnsCb44gvC6pxaNt38Els3jWYDHTjHKf0koTgg==", - "dev": true, - "requires": { - "browserslist": "^4.16.6", - "cssnano-utils": "^3.1.0", - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-minify-selectors": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz", - "integrity": "sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==", - "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.5" - } - }, - "postcss-modules-extract-imports": { - "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-modules-local-by-default": { - "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": { - "icss-utils": "^5.0.0", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-modules-scope": { - "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-selector-parser": "^6.0.4" - } - }, - "postcss-modules-values": { - "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-utils": "^5.0.0" - } - }, - "postcss-normalize-charset": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", - "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==", - "dev": true, - "requires": {} - }, - "postcss-normalize-display-values": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz", - "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-normalize-positions": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz", - "integrity": "sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-normalize-repeat-style": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz", - "integrity": "sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-normalize-string": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz", - "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-normalize-timing-functions": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz", - "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-normalize-unicode": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.0.tgz", - "integrity": "sha512-J6M3MizAAZ2dOdSjy2caayJLQT8E8K9XjLce8AUQMwOrCvjCHv24aLC/Lps1R1ylOfol5VIDMaM/Lo9NGlk1SQ==", - "dev": true, - "requires": { - "browserslist": "^4.16.6", - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-normalize-url": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz", - "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==", - "dev": true, - "requires": { - "normalize-url": "^6.0.1", - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-normalize-whitespace": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz", - "integrity": "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-ordered-values": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz", - "integrity": "sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==", - "dev": true, - "requires": { - "cssnano-utils": "^3.1.0", - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-reduce-initial": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.0.tgz", - "integrity": "sha512-5OgTUviz0aeH6MtBjHfbr57tml13PuedK/Ecg8szzd4XRMbYxH4572JFG067z+FqBIf6Zp/d+0581glkvvWMFw==", - "dev": true, - "requires": { - "browserslist": "^4.16.6", - "caniuse-api": "^3.0.0" - } - }, - "postcss-reduce-transforms": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz", - "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-selector-parser": { - "version": "6.0.10", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", - "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", - "dev": true, - "requires": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - } - }, - "postcss-svgo": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz", - "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0", - "svgo": "^2.7.0" - } - }, - "postcss-unique-selectors": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz", - "integrity": "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==", - "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.5" - } - }, - "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 - }, - "prettier": { - "version": "2.8.7", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.7.tgz", - "integrity": "sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==", - "dev": true - }, - "pretty-time": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pretty-time/-/pretty-time-1.1.0.tgz", - "integrity": "sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA==", - "dev": true - }, - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", - "dev": true - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "peer": true, - "requires": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" - } - }, - "proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "dev": true, - "requires": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "dependencies": { - "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 - } - } - }, - "public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } - } - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - }, - "qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "dev": true, - "requires": { - "side-channel": "^1.0.4" - } - }, - "querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", - "dev": true - }, - "querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", - "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 - }, - "quicklink": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/quicklink/-/quicklink-2.3.0.tgz", - "integrity": "sha512-FyTanYArl5Gz2/C0ZjErvfFJtem/+d1RM4eK0jiXO6mL4Zjje+xsYtcK3ZtKX2Yb3HSfah5HekWrH2qhttYQjQ==", - "requires": { - "route-manifest": "^1.0.0", - "throttles": "^1.0.0" - } - }, - "randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "dev": true, - "requires": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, - "range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "dev": true - }, - "raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", - "dev": true, - "requires": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "dependencies": { - "bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "dev": true - } - } - }, - "react": { - "version": "16.14.0", - "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", - "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", - "peer": true, - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2" - } - }, - "react-dom": { - "version": "16.14.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz", - "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==", - "peer": true, - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2", - "scheduler": "^0.19.1" - } - }, - "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==", - "peer": true - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "rechoir": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", - "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", - "dev": true, - "requires": { - "resolve": "^1.9.0" - } - }, - "regenerate": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "dev": true - }, - "regenerate-unicode-properties": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", - "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", - "dev": true, - "requires": { - "regenerate": "^1.4.2" - } - }, - "regenerator-runtime": { - "version": "0.13.9", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", - "dev": true - }, - "regenerator-transform": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz", - "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", - "dev": true, - "requires": { - "@babel/runtime": "^7.8.4" - } - }, - "regexparam": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/regexparam/-/regexparam-1.3.0.tgz", - "integrity": "sha512-6IQpFBv6e5vz1QAqI+V4k8P2e/3gRrqfCJ9FI+O1FLQTO+Uz6RXZEZOPmTJ6hlGj7gkERzY5BRCv09whKP96/g==" - }, - "regexpu-core": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.1.tgz", - "integrity": "sha512-HrnlNtpvqP1Xkb28tMhBUO2EbyUHdQlsnlAhzWcwHy8WJR53UWr7/MAvqrsQKMbV4qdpv03oTMG8iIhfsPFktQ==", - "dev": true, - "requires": { - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.1.0", - "regjsgen": "^0.7.1", - "regjsparser": "^0.9.1", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.0.0" - } - }, - "regjsgen": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz", - "integrity": "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==", - "dev": true - }, - "regjsparser": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", - "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", - "dev": true, - "requires": { - "jsesc": "~0.5.0" - }, - "dependencies": { - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", - "dev": true - } - } - }, - "relateurl": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", - "dev": true - }, - "replace-ext": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz", - "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==", - "dev": true - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true - }, - "require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true - }, - "requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", - "dev": true - }, - "resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "dev": true, - "requires": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - }, - "resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "requires": { - "resolve-from": "^5.0.0" - }, - "dependencies": { - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - } - } - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - }, - "resp-modifier": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/resp-modifier/-/resp-modifier-6.0.2.tgz", - "integrity": "sha1-sSTeXE+6/LpUH0j/pzlw9KpFa08=", - "dev": true, - "requires": { - "debug": "^2.2.0", - "minimatch": "^3.0.2" - }, - "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" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "retry": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", - "dev": true - }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true - }, - "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" - } - }, - "ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "dev": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "route-manifest": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/route-manifest/-/route-manifest-1.0.0.tgz", - "integrity": "sha512-qn0xJr4nnF4caj0erOLLAHYiNyzqhzpUbgDQcEHrmBoG4sWCDLnIXLH7VccNSxe9cWgbP2Kw/OjME+eH3CeRSA==", - "requires": { - "regexparam": "^1.3.0" - } - }, - "run-parallel": { - "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" - } - }, - "rx": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz", - "integrity": "sha1-pfE/957zt0D+MKqAP7CfmIBdR4I=", - "dev": true - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "scheduler": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", - "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", - "peer": true, - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" - } - }, - "schema-utils": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", - "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" - } - }, - "select-hose": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", - "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", - "dev": true - }, - "selfsigned": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz", - "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==", - "dev": true, - "requires": { - "node-forge": "^1" - } - }, - "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", - "dev": true, - "requires": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.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" - }, - "dependencies": { - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - } - } - }, - "depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true - }, - "destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "dev": true - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dev": true, - "requires": { - "ee-first": "1.1.1" - } - }, - "statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true - } - } - }, - "serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, - "requires": { - "randombytes": "^2.1.0" - } - }, - "serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", - "dev": true, - "requires": { - "accepts": "~1.3.4", - "batch": "0.6.1", - "debug": "2.6.9", - "escape-html": "~1.0.3", - "http-errors": "~1.6.2", - "mime-types": "~2.1.17", - "parseurl": "~1.3.2" - }, - "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" - } - }, - "http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", - "dev": true, - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true - } - } - }, - "serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", - "dev": true, - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.18.0" - } - }, - "server-destroy": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/server-destroy/-/server-destroy-1.0.1.tgz", - "integrity": "sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ==", - "dev": true - }, - "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", - "dev": true - }, - "setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true - }, - "sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "dev": true, - "requires": { - "kind-of": "^6.0.2" - } - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "shellwords": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", - "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", - "dev": true - }, - "side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - } - }, - "signal-exit": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", - "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", - "dev": true - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true - }, - "socket.io": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.2.tgz", - "integrity": "sha512-6fCnk4ARMPZN448+SQcnn1u8OHUC72puJcNtSgg2xS34Cu7br1gQ09YKkO1PFfDn/wyUE9ZgMAwosJed003+NQ==", - "dev": true, - "requires": { - "accepts": "~1.3.4", - "base64id": "~2.0.0", - "debug": "~4.3.2", - "engine.io": "~6.2.0", - "socket.io-adapter": "~2.4.0", - "socket.io-parser": "~4.2.0" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - } - } - }, - "socket.io-adapter": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz", - "integrity": "sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg==", - "dev": true - }, - "socket.io-client": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.6.1.tgz", - "integrity": "sha512-5UswCV6hpaRsNg5kkEHVcbBIXEYoVbMQaHJBXJCyEQ+CiFPV1NIOY0XOFWG4XR4GZcB8Kn6AsRs/9cy9TbqVMQ==", - "dev": true, - "requires": { - "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.2", - "engine.io-client": "~6.4.0", - "socket.io-parser": "~4.2.1" - } - }, - "socket.io-parser": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.1.tgz", - "integrity": "sha512-V4GrkLy+HeF1F/en3SpUaM+7XxYXpuMUWLGde1kSSh5nQMN4hLrbPIkD+otwh6q9R6NOQBN4AMaOZ2zVjui82g==", - "dev": true, - "requires": { - "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.1" - } - }, - "sockjs": { - "version": "0.3.24", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", - "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", - "dev": true, - "requires": { - "faye-websocket": "^0.11.3", - "uuid": "^8.3.2", - "websocket-driver": "^0.7.4" - } - }, - "source-list-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", - "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", - "dev": true - }, - "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 - }, - "source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "dev": true - }, - "source-map-support": { - "version": "0.5.19", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", - "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "spdy": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", - "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", - "dev": true, - "requires": { - "debug": "^4.1.0", - "handle-thing": "^2.0.0", - "http-deceiver": "^1.2.7", - "select-hose": "^2.0.0", - "spdy-transport": "^3.0.0" - } - }, - "spdy-transport": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", - "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", - "dev": true, - "requires": { - "debug": "^4.1.0", - "detect-node": "^2.0.4", - "hpack.js": "^2.1.6", - "obuf": "^1.1.2", - "readable-stream": "^3.0.6", - "wbuf": "^1.7.3" - }, - "dependencies": { - "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, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, - "stable": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", - "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", - "dev": true - }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", - "dev": true - }, - "std-env": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-2.3.0.tgz", - "integrity": "sha512-4qT5B45+Kjef2Z6pE0BkskzsH0GO7GrND0wGlTM1ioUe3v0dGYx9ZJH0Aro/YyA8fqQ5EyIKDRjZojJYMFTflw==", - "dev": true, - "requires": { - "ci-info": "^3.0.0" - } - }, - "stream-browserify": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", - "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", - "dev": true, - "requires": { - "inherits": "~2.0.1", - "readable-stream": "^2.0.2" - } - }, - "stream-http": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", - "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", - "dev": true, - "requires": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.3.6", - "to-arraybuffer": "^1.0.0", - "xtend": "^4.0.0" - } - }, - "stream-throttle": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/stream-throttle/-/stream-throttle-0.1.3.tgz", - "integrity": "sha512-889+B9vN9dq7/vLbGyuHeZ6/ctf5sNuGWsDy89uNxkFTAgzy0eK7+w5fL3KLNRTkLle7EgZGvHUphZW0Q26MnQ==", - "dev": true, - "requires": { - "commander": "^2.2.0", - "limiter": "^1.0.5" - }, - "dependencies": { - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - } - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true - }, - "style-loader": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-2.0.0.tgz", - "integrity": "sha512-Z0gYUJmzZ6ZdRUqpg1r8GsaFKypE+3xAzuFeMuoHgjc9KZv3wMyCRjQIWEbhoFSq7+7yoHXySDJyyWQaPajeiQ==", - "dev": true, - "requires": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" - }, - "dependencies": { - "schema-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", - "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.6", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } - } - }, - "stylehacks": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.0.tgz", - "integrity": "sha512-SzLmvHQTrIWfSgljkQCw2++C9+Ne91d/6Sp92I8c5uHTcy/PgeHamwITIbBW9wnFTY/3ZfSXR9HIL6Ikqmcu6Q==", - "dev": true, - "requires": { - "browserslist": "^4.16.6", - "postcss-selector-parser": "^6.0.4" - } - }, - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true - }, - "svgo": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", - "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", - "dev": true, - "requires": { - "@trysound/sax": "0.2.0", - "commander": "^7.2.0", - "css-select": "^4.1.3", - "css-tree": "^1.1.3", - "csso": "^4.2.0", - "picocolors": "^1.0.0", - "stable": "^0.1.8" - } - }, - "tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true - }, - "terser": { - "version": "5.14.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", - "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", - "dev": true, - "requires": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "dependencies": { - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - } - } - }, - "terser-webpack-plugin": { - "version": "5.3.6", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz", - "integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==", - "dev": true, - "requires": { - "@jridgewell/trace-mapping": "^0.3.14", - "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0", - "terser": "^5.14.1" - }, - "dependencies": { - "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" - } - } - } - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "throttles": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/throttles/-/throttles-1.0.1.tgz", - "integrity": "sha512-fab7Xg+zELr9KOv4fkaBoe/b3L0GMGLd0IBSCn16GoE/Qx6/OfCr1eGNyEcDU2pUA79qQfZ8kPQWlRuok4YwTw==" - }, - "thunky": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", - "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", - "dev": true - }, - "timers-browserify": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", - "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", - "dev": true, - "requires": { - "setimmediate": "^1.0.4" - } - }, - "to-arraybuffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", - "dev": true - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true - }, - "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 - }, - "tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", - "dev": true - }, - "tty-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", - "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", - "dev": true - }, - "type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true - }, - "type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dev": true, - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - } - }, - "ua-parser-js": { - "version": "1.0.35", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.35.tgz", - "integrity": "sha512-fKnGuqmTBnIE+/KXSzCn4db8RTigUzw1AN0DmdU6hJovUTbYJKyqj+8Mt1c4VfRDnOVJnENmfYkIPZ946UrSAA==", - "dev": true - }, - "unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", - "dev": true - }, - "unicode-match-property-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", - "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", - "dev": true, - "requires": { - "unicode-canonical-property-names-ecmascript": "^2.0.0", - "unicode-property-aliases-ecmascript": "^2.0.0" - } - }, - "unicode-match-property-value-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", - "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", - "dev": true - }, - "unicode-property-aliases-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", - "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", - "dev": true - }, - "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", - "dev": true - }, - "update-browserslist-db": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", - "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", - "dev": true, - "requires": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - } - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", - "dev": true, - "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" - }, - "dependencies": { - "punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", - "dev": true - } - } - }, - "util": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", - "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", - "dev": true, - "requires": { - "inherits": "2.0.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - } - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", - "dev": true - }, - "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 - }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", - "dev": true - }, - "vm-browserify": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", - "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", - "dev": true - }, - "vue-style-loader": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-4.1.3.tgz", - "integrity": "sha512-sFuh0xfbtpRlKfm39ss/ikqs9AbKCoXZBpHeVZ8Tx650o0k0q/YCM7FRvigtxpACezfq6af+a7JeqVTWvncqDg==", - "dev": true, - "requires": { - "hash-sum": "^1.0.2", - "loader-utils": "^1.0.2" - }, - "dependencies": { - "json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - }, - "loader-utils": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", - "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - } - } - } - }, - "watchpack": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", - "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", - "dev": true, - "requires": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - } - }, - "wbuf": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", - "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", - "dev": true, - "requires": { - "minimalistic-assert": "^1.0.0" - } - }, - "webpack": { - "version": "5.76.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.76.1.tgz", - "integrity": "sha512-4+YIK4Abzv8172/SGqObnUjaIHjLEuUasz9EwQj/9xmPPkYJy2Mh03Q/lJfSD3YLzbxy5FeTq5Uw0323Oh6SJQ==", - "dev": true, - "requires": { - "@types/eslint-scope": "^3.7.3", - "@types/estree": "^0.0.51", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "acorn": "^8.7.1", - "acorn-import-assertions": "^1.7.6", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.10.0", - "es-module-lexer": "^0.9.0", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.1.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.4.0", - "webpack-sources": "^3.2.3" - }, - "dependencies": { - "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" - } - }, - "webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "dev": true - } - } - }, - "webpack-cli": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.10.0.tgz", - "integrity": "sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==", - "dev": true, - "requires": { - "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^1.2.0", - "@webpack-cli/info": "^1.5.0", - "@webpack-cli/serve": "^1.7.0", - "colorette": "^2.0.14", - "commander": "^7.0.0", - "cross-spawn": "^7.0.3", - "fastest-levenshtein": "^1.0.12", - "import-local": "^3.0.2", - "interpret": "^2.2.0", - "rechoir": "^0.7.0", - "webpack-merge": "^5.7.3" - } - }, - "webpack-dev-middleware": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz", - "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==", - "dev": true, - "requires": { - "colorette": "^2.0.10", - "memfs": "^3.4.3", - "mime-types": "^2.1.31", - "range-parser": "^1.2.1", - "schema-utils": "^4.0.0" - }, - "dependencies": { - "ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "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": { - "fast-deep-equal": "^3.1.3" - } - }, - "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 - }, - "schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" - } - } - } - }, - "webpack-dev-server": { - "version": "4.11.1", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.11.1.tgz", - "integrity": "sha512-lILVz9tAUy1zGFwieuaQtYiadImb5M3d+H+L1zDYalYoDl0cksAB1UNyuE5MMWJrG6zR1tXkCP2fitl7yoUJiw==", - "dev": true, - "requires": { - "@types/bonjour": "^3.5.9", - "@types/connect-history-api-fallback": "^1.3.5", - "@types/express": "^4.17.13", - "@types/serve-index": "^1.9.1", - "@types/serve-static": "^1.13.10", - "@types/sockjs": "^0.3.33", - "@types/ws": "^8.5.1", - "ansi-html-community": "^0.0.8", - "bonjour-service": "^1.0.11", - "chokidar": "^3.5.3", - "colorette": "^2.0.10", - "compression": "^1.7.4", - "connect-history-api-fallback": "^2.0.0", - "default-gateway": "^6.0.3", - "express": "^4.17.3", - "graceful-fs": "^4.2.6", - "html-entities": "^2.3.2", - "http-proxy-middleware": "^2.0.3", - "ipaddr.js": "^2.0.1", - "open": "^8.0.9", - "p-retry": "^4.5.0", - "rimraf": "^3.0.2", - "schema-utils": "^4.0.0", - "selfsigned": "^2.1.1", - "serve-index": "^1.9.1", - "sockjs": "^0.3.24", - "spdy": "^4.0.2", - "webpack-dev-middleware": "^5.3.1", - "ws": "^8.4.2" - }, - "dependencies": { - "ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "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": { - "fast-deep-equal": "^3.1.3" - } - }, - "connect-history-api-fallback": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", - "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", - "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 - }, - "schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" - } - }, - "ws": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.9.0.tgz", - "integrity": "sha512-Ja7nszREasGaYUYCI2k4lCKIRTt+y7XuqVoHR44YpI49TtryyqbqvDMn5eqfW7e6HzTukDRIsXqzVHScqRcafg==", - "dev": true, - "requires": {} - } - } - }, - "webpack-merge": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", - "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", - "dev": true, - "requires": { - "clone-deep": "^4.0.1", - "wildcard": "^2.0.0" - } - }, - "webpack-notifier": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/webpack-notifier/-/webpack-notifier-1.15.0.tgz", - "integrity": "sha512-N2V8UMgRB5komdXQRavBsRpw0hPhJq2/SWNOGuhrXpIgRhcMexzkGQysUyGStHLV5hkUlgpRiF7IUXoBqyMmzQ==", - "dev": true, - "requires": { - "node-notifier": "^9.0.0", - "strip-ansi": "^6.0.0" - } - }, - "webpack-sources": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", - "dev": true, - "requires": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - } - }, - "webpackbar": { - "version": "5.0.0-3", - "resolved": "https://registry.npmjs.org/webpackbar/-/webpackbar-5.0.0-3.tgz", - "integrity": "sha512-viW6KCYjMb0NPoDrw2jAmLXU2dEOhRrtku28KmOfeE1vxbfwCYuTbTaMhnkrCZLFAFyY9Q49Z/jzYO80Dw5b8g==", - "dev": true, - "requires": { - "ansi-escapes": "^4.3.1", - "chalk": "^4.1.0", - "consola": "^2.15.0", - "figures": "^3.2.0", - "pretty-time": "^1.1.0", - "std-env": "^2.2.1", - "text-table": "^0.2.0", - "wrap-ansi": "^7.0.0" - } - }, - "websocket-driver": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", - "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", - "dev": true, - "requires": { - "http-parser-js": ">=0.5.1", - "safe-buffer": ">=5.1.0", - "websocket-extensions": ">=0.1.1" - } - }, - "websocket-extensions": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", - "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", - "dev": true - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "wildcard": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", - "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", - "dev": true - }, - "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "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": { - "color-convert": "^2.0.1" - } - }, - "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 - } - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "ws": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", - "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", - "dev": true, - "requires": {} - }, - "xmlhttprequest-ssl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz", - "integrity": "sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==", - "dev": true - }, - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true - }, - "y18n": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.5.tgz", - "integrity": "sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg==", - "dev": true - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "dev": true - }, - "yargs": { - "version": "17.1.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.1.1.tgz", - "integrity": "sha512-c2k48R0PwKIqKhPMWjeiF6y2xY/gPMUlro0sgxqXpbOIohWiLNXWslsootttv7E1e73QPAMQSg5FeySbVcpsPQ==", - "dev": true, - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - } - }, - "yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true - } - } -} diff --git a/app/package.json b/app/package.json deleted file mode 100644 index 702adcd07..000000000 --- a/app/package.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "private": true, - "scripts": { - "dev": "npm run development", - "development": "mix", - "watch": "mix watch", - "watch-poll": "mix watch -- --watch-options-poll=1000", - "hot": "mix watch --hot", - "prod": "npm run production", - "production": "mix --production", - "prettier": "prettier --check resources/**/*.{js,css}", - "prettier-fix": "prettier --write resources/**/*.{js,css}" - }, - "devDependencies": { - "browser-sync": "^2.29.1", - "browser-sync-webpack-plugin": "^2.3.0", - "laravel-mix": "^6.0.49", - "postcss": "^8.2.13", - "prettier": "^2.8.7" - }, - "dependencies": { - "@github/details-menu-element": "^1.0.12", - "@github/tab-container-element": "^3.2.0", - "alpinejs": "^3.12.0", - "quicklink": "^2.3.0" - } -} diff --git a/app/pages/about.md b/app/pages/about.md deleted file mode 100644 index acdcca481..000000000 --- a/app/pages/about.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: About ---- - -The European Union is one of the largest democracies in the world. The European Parliament, with its 705 members from the EU’s 27 member states, represents just over 440 million Europeans. Although European politics affects so many people, it often receives little public attention. Yet transparency of parliamentary processes is a fundamental prerequisite for forming opinions in democratic discourse. - -Information such as agendas, minutes and the results of roll-call votes are generally available on the website of the European Parliament. However, it is rather difficult to find out what MEPs voted on or how a particular vote turned out. This is because the necessary information has to be gathered from various websites of the Parliament. - -Our goal is to provide easy access to the voting results of the European Parliament. On this website, we clearly present votes and voting results as well as the voting behavior of individual MEPs. For this purpose, we automatically collect data from the various official parliamentary sources. - -## Contact Us -If you use the data from HowTheyVote.eu for your own projects, we would love to hear from you! And if you have an idea how HowTheyVote.eu could be even more helpful, feel free to open a ticket in our [GitHub repository](https://github.com/HowTheyVote/epvotes) or write us an [email](mailto:mail@howtheyvote.eu) or on [Twitter](https://twitter.com/HowTheyVoteEU). - -The page is still in an early phase. **Please be aware that this means some votes might be missing in our data. In rare cases, we might also present an erroneous vote as the final one. This happens in cases in which the final vote was not a roll-call vote.** We will extend the available data in the future and continue working on additional functionality. If you find a mistake (e.g. wrong data for a vote) or something is not working as expected, we would appreciate if you contact us or open an issue in our [GitHub repository](https://github.com/HowTheyVote/epvotes). - -## License - -The contents of our database are sourced from the [plenary minutes](https://www.europarl.europa.eu/plenary/en/minutes.html) of the European Parliament, [MEP profiles](http://europarl.europa.eu/meps/en/home) on the Parliament’s website, and the [Legislative Observatory](https://oeil.secure.europarl.europa.eu/oeil/home/home.do). - -The software that powers this website is licensed under [GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html). Data exports accessible via the web interface on HowTheyVote.eu and database dumps are made available under the [Creative Commons Attribution License 4.0](https://creativecommons.org/licenses/by/4.0/). - -We use adapted emojis designed originally by [OpenMoji – the open-source emoji and icon project](https://openmoji.org). License: CC BY-SA 4.0 - -## Funding - -This work has been funded by the German Federal Ministry of Research and Education as part of the 9th round of the [Prototype Fund](https://prototypefund.de) under the funding reference 1IS21818. - -
- Federal Ministry of Education and Research - Prototype Fund -
diff --git a/app/pages/imprint.md b/app/pages/imprint.md deleted file mode 100644 index aeed0cd3e..000000000 --- a/app/pages/imprint.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: Imprint ---- - -Hagemann & Prochaska GbR\ -Behlertstraße 43\ -14467 Potsdam - -\ -VAT-ID: DE338668280 - -HowTheyVote.eu does not store IP addresses or other personally identifiable information. We do not use cookies. diff --git a/app/phpunit.xml b/app/phpunit.xml deleted file mode 100644 index c77e62c53..000000000 --- a/app/phpunit.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - - - ./tests/Unit - - - ./tests/Feature - - - - - ./app - - - - - - - - - - - - - - - - - - - diff --git a/app/public/.htaccess b/app/public/.htaccess deleted file mode 100644 index ced6d7963..000000000 --- a/app/public/.htaccess +++ /dev/null @@ -1,57 +0,0 @@ - - - Options -MultiViews -Indexes - - - RewriteEngine On - - # Redirect to Primary Domain - RewriteCond %{HTTP_HOST} !^howtheyvote.eu [NC] - RewriteRule ^(.*)$ https://howtheyvote.eu/$1 [L,R=301] - - # Handle Authorization Header - RewriteCond %{HTTP:Authorization} . - RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] - - # Redirect Trailing Slashes If Not A Folder... - RewriteCond %{REQUEST_FILENAME} !-d - RewriteCond %{REQUEST_URI} (.+)/$ - RewriteRule ^ %1 [L,R=301] - - # Serve Cached Page If Available... - RewriteCond %{REQUEST_URI} ^/?$ - RewriteCond %{DOCUMENT_ROOT}/page-cache/pc__index__pc.html -f - RewriteRule .? page-cache/pc__index__pc.html [L] - RewriteCond %{DOCUMENT_ROOT}/page-cache%{REQUEST_URI}.html -f - RewriteRule . page-cache%{REQUEST_URI}.html [L] - RewriteCond %{DOCUMENT_ROOT}/page-cache%{REQUEST_URI}.json -f - RewriteRule . page-cache%{REQUEST_URI}.json [L] - RewriteCond %{DOCUMENT_ROOT}/page-cache%{REQUEST_URI}.csv -f - RewriteRule . page-cache%{REQUEST_URI}.csv [L] - - # When the app is accessed directly via `/index.php/slug`, Laravel will generate - # URLs prefixed with `/index.php`. Consequently, these URLs will also be included - # in the statically cached version of the page. This rule redirects requests to - # the "clean" URL (e.g. `/slug` instead of `/index.php/slug`. - RewriteCond %{REQUEST_URI} ^/index.php\/(.+) [NC] - RewriteRule (.*?)index\.php\/(.*) /$1$2 [R=301,NE,L] - - # Send Requests To Front Controller... - RewriteCond %{REQUEST_FILENAME} !-d - RewriteCond %{REQUEST_FILENAME} !-f - RewriteRule ^ index.php [L] - - - - ExpiresActive on - - ExpiresByType image/jpg "access plus 60 days" - ExpiresByType image/jpeg "access plus 60 days" - ExpiresByType image/png "access plus 60 days" - ExpiresByType image/webp "access plus 60 days" - ExpiresByType text/css "access plus 6 months" - ExpiresByType text/javascript "access plus 6 months" - ExpiresByType application/javascript "access plus 6 months" - ExpiresByType font/woff "access plus 6 month" - ExpiresByType font/woff2 "access plus 6 month" - diff --git a/app/public/assets/groups/gue.svg b/app/public/assets/groups/gue.svg deleted file mode 100644 index 348073c23..000000000 --- a/app/public/assets/groups/gue.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/app/public/assets/logos/logo-bmbf.svg b/app/public/assets/logos/logo-bmbf.svg deleted file mode 100644 index ba680326e..000000000 --- a/app/public/assets/logos/logo-bmbf.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/app/public/assets/logos/logo-ptf.svg b/app/public/assets/logos/logo-ptf.svg deleted file mode 100644 index 17850f783..000000000 --- a/app/public/assets/logos/logo-ptf.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/app/public/assets/placeholder.svg b/app/public/assets/placeholder.svg deleted file mode 100644 index 521893bc3..000000000 --- a/app/public/assets/placeholder.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/app/public/fonts/ibm-plex-sans-condensed-medium.woff b/app/public/fonts/ibm-plex-sans-condensed-medium.woff deleted file mode 100644 index ecdd44b41f10a5008531e6e424f08d557fbac6ee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29540 zcmY&V#|QwRyZ^*# z{6Ig=$gS7N#=!oETl~?*{NSv0h96+$>P!FtU>g5u`2Pd^D6*5Oy_wAqSM;N)`^jgb z)JRuqX5jP_i>>~nf&5?mGPCwD{o(Wh09gV6AXT`S)5*fz#Na2Fh5wI+^*>>L09?q8$&@MUl3u-VqP-p;c2e_|IW%^m8sQLEx=+c=oM6R-DvSW`pMD0sGv0LKo zIbw&hA1g{KU=hOS2N4Kg&m(tn36}51#u3m~%R5*94mEGf@;dx2h!*i%OhLFDbuO|B zM+R~4w~J1McB*EKiG_&-ORv>$@XUupRW|sljKb6;ENXR*vsu%hay_-{9NsL z?ij?p3>Wb?QBTr0rBsSastxtJ>XYfJ+xS=5z4z+OgfF7hNKQ<3tWD%)*r&urXx)CD zUyKjl#0c4V;-S=dD$|yg#4!5$Oc$D#-k0KQ$02^ocm0P`&HbTU(fWJxRcpv^Gu}j2 zCW=g%tt|=FHUG=3MZn{Gz3!1z)2g^%qW5Oh1h%RCmu$+|42DZggLLjc4bOCwxZ}k7 zIJV)FHkp|?=QKXEE2x|UlT^%PS<%bgjS&vx>2;M!6^SumCy4~bnGT+MVXPvB?dZC* zU)Sr&wG!mq{|4G(Z?7|L`0Jp5tB%FZKb!UX#w<*;PhN9aET4C9zQdXFPEFFxk8*O9 z1HYv?OUKsrmsyv5!@apma8(v*kWNuvc6JGw(H&dTQCaIR!*N>maF17^r&CQ#nx(a2 zrg^2OYsio{JW>704Pg>UjL}`h+Yd^N-$p2_c&-6LQi@Kai+O6 zw1EUun5UW5kT{X1Q;l`VK{b(qV;Brik^t)o$s8|P7{{J zSo4FJ8g#MJrE$Zzg1^|Ue#tBw&T!^Lpn!4^bWIA)t^mXW(j+! zdLT;dMq7Ftklmlgo)6#}PRw{V4oMM-Ig9j7}4JQgTPP0ZVd+pue&bdm!5V zQhi?$+95Vd!lW7!bnOUEAv!NO^$)>!y+ zx4Z3;xm9~zecHWuv~UWIVM|!_?R!1P^jJ9o3eqc5nK0s4wwL8l=313Atb$D6<|`T{ zf`4(8)raFRX#OpNYwQw~!HE8wJ1^pyB_`*APOp_?P|fuxa*J23HKP8O>ii>O4wI` z^;`sZHB)b5&dYz=hL+gO{7@!T;3&HCv3T+TRsCG{HP{#RN6HSlTQEpp+7?y^QQo4} z7m7)1C?OpO@&e1wm_xvy$$E-Smm9e2Z#SCMH1W*yC2e>`k>biI(@tZ855hWX{9M^= z*i)!fRjATAq{chPSO1EgJmFw(xK_(Bc@~;hsAOI1zyq$dp^TMjfS=xQYer;`W3;N9 z?Ff^p%0b90tmM8l`eMFwrXh(f$V$}kP8_OkTa=o#)syn%jO<2OV39yq&f5f_N^h`l{<(k=+i(lo%c1w4fwtQc6ZxMEVpJMsj9WZ#wsxx@P z&-c%%?%(IpKoVJ>Xd z;s3W!qwu%rgnIr=bq4HesK!V9tE+km-kJFgH73TR(4npMrYxPJe+tk6x7DAZ{pkqP z&9E}Qae7AL>I0h(PFWHm=DO~}K5s?C$WqAz6Y1`NMrQu>Y+<<2rdo(8UfSz&G@U^# z+96K6MRK3|wSj)isKm&`2Nk1zMb%Q8k@(rA6J5MW?B!HwxohurD=*2t0RH^?jj=x z$0+z$B#vQI$9OjLnM5n^NDkLI%P|hlIyx_NsZpM%F{1vlZ@FCc5{dCpl{|$S_iDl0vi#D!ZdO7gCrgr&$xly}N^(K>q=oS`n*8*N++x%C44nCS z24eK4HZl#9Pr9lszNSvw2yR!JI}bFdD*>tN(b|!@8V9Ve?Tfz(SgK2B{4_b|Sf17m zQBD66Cegv*n-?{E#x&|{O2pC9-vW0yYHp;hF65CD^yaubFeH2w9ylZ?U4G@-k475b zPA)WB9l+%1J?Pqu=zv)Z>D<^x%hb~jX~u*lBA8${3F zn6i0a5C^4;_RPCidrpbG6=vK3UY_`jaTYD9cpJfY>TF=_VdE0*NXfWOZIKz6Z@tzN zvF?LrC9hE%R=s+ifMDG6(?U1hKD>;p$-{J+e3MEUq(m<(c(9hhi-_u0RPN(z9fXw_ zG{8zrY-|>XwY7ETxEoL@V?i~9XfR^UeOQIa(sH_n`$n(hMDWCHMVV8cEO~TMlJAJg zuEeUB!5(vbUp$$@$`Ycg44Qna^}RfN^V3$^ahQuAv9WX2z1#h3O;z1x1J+%fmJVA4 zq^Dt*u*9a%)_3&C!dx@MNR|Qj>?=@1#NaCNfTDWBhlJ{1MPV-USZb`BD^|nVGdfau zoeXz_TTNqDvzq%B9K__|CY3aFCLNt{*5~=7>lRWUxSC7bv^?+&1NLXFuhfIJ;f9M=#5-l^3cfm`Ga$YUPLgeN1LG3a`VW>D zanMT>^H{N-#8hKr?Z!+e|z-*;L*pW`>hQ_4> zy$v);Iio~WShcAnh_d@?1Gitx7(-!(2% z?hj=YRDzdX#SIl#sp)UJkK)N1@O6F+j!87q1`TCCoTq9pt*Qt2Kvj35rFqOh%7Rmo zDYI2|uUj5Rte#(0T!Xws&h(?^D|*hf_SCHHX$7y>WV|ZG@#)p0!Vgg+jaWp%D<6?R z@2mu1eih_3{WEmsThP;ne}!@QA__r}wn(HBnwdCRFG!Yi+6Wq{bx}5yf(MrS#L>(Snt;3UEETQr z$zU@HQzx$irL4`+?#_g~*p*y8HTKH17P9RL$1z=^TE)~l%oLx2Y_!?U~q-Yk$N_eYbOY z=l)AlK-$#ptz?oTuNM0HD8vX;6qd3@>5NXa(@Kii?NFlM9PILj(Drq?Yyo`qWdbSBPyPV^eqeO!!*rByrqYAfkTfX zV|-Rr6Wmtv=Kd3s$2R(cQH#yKp#N`Jlj+8Yih>=PU4;TjIEq*%6|V_1JL(t7ok0aq%> zbBBk!*Q&^Ef3wc2p4(}<)nQ8#Lz&qjWN01OxQ23^KL+&KY)J&x=HhM);)S@mb&O8O zaN6)qc33dGZyY5JYVc@ZvWkWM)5@1{+c7A?Z~=Wow9ACw>seN$xv9!rUWduZj&1ds zG1TV7y0H`;Y8Pixtr#qkPEr=wV->rzx>BE%Z0R{0+Z{@ePg!`Ab8)+(RpwOLV}cRc zn!c&6`y2At7YPaz{_a$wsdAr?OYQnH&1mTDuY;P5hzV=m-vMMqJ8wTJ=KSWi zo$4!B(b5~3{o)k12U&^7VXd*bW23EZ*bSz_g>kP7SG`*syxSSvmVIutL2M9NBk~{( zrM`B!E%?v%fdJTZO-#=70{trHl>N-VFsA+|8!jz@3|+Hd*kGY^4h)8>f6+Ai4xjd8_n@ zL7QCPkWYGxL~Ddj;;UzM53l3i+Yhk{k#~%Fd~^%LC^jPzQ!F~Y@i;hXeiGM4snrwr?ZPv>KK*YLrh>dvgB?pc|XrJlC6o@S3nK@-oY z>+jgqoweZh>C!;RsZFG)8CogM_IZA`!Q!S+i_reFE%enwKUB-LXm?5FG)7xglGnh-U;E*9OtaC|ZI562sirW=miAr)ab`!lMqI(#-p zr|TXZ8exX@k7?Lh(&zMf$`K@3rbjtMj&lY#>oad_&pGOB(Z~@grGnbSX_^@_$a#hu zNAt29j#YNVU>Uv_*WVl)#dno7Qa)J`b6wOX^L%LWzDn=%3#(5t2Al#m{6T3J?g?Na z5Z2M@cZyqW*X2p?;%W(V>bjJTWB*lKS>i;UmsQ?qjftW+lt0zjEb&ta2^Fm!5 z{|ESr4?KftEbddzlY}~7Gz{zLhboToG$T!?4ZE!px6-T7Kl{;D9GKN{?b%o5yMIWUIM4tJ(jXIntuR01{itiY7HPJJ@nWDW7fX4@3D zE?Sxp%nHGq#_bmh32*a5jzMy_O~H&-?%l`}RHUv}ElJZm(#E$uHhKJ}tVQNq3?*8S zHt|Gr+Fe%Gmhq;`KeAjJ)LJ<&+k10m%`Z9d=ElZGpZO_fV#~~GmnEG7DqRl?sy}5d zt2D8VqeuFBeO0zSv;R`T@mH32rhqa}BdDw0I4~T26g1@nI59C z;8SI&NITm#Zlp?Pq^oZomr~VZlrIZA0tTK#M>`SSIqiET^r5#0PDUrCUXWX@q1;8x zqPIr?InB)-!^vlvst-D6>?|+DRjvJ+UER=XxJkZQ3ULqe1*!1!CAygF8WZij1`e~= z<@JdcCoi5i{!Y^#I;fr#O+LoUl&{&2)U@DdyCDP5;q&2PWMk=$cgXvr`)kBNp$wr1 z&iJyxx(C+1nxIXjf^-k}Z?)4}`BUjUlNq5yx`l)jHKsz{Jf40my$~Y0Im?}KDtT{~ z&g$f*JGiYaL93K%^^3zho;7HX$ftr%DXZk?gRqYhoMe2Uh1kQ^PBK5LZvyNC{9?5) z`7asUF+9w?E~=or?RvdGhfW+fJ^SRd34k9D(kD(p5<~&^PtT-t1qx=7a(ux~LF+Gp zUus|i#$~^W10e%D41^Ka>n0m%&w!jyCGD>fJN?ye;B7mFW%dipls!m1uI28&Jp}xr z5fR)KsCdb&$-AP!Nry1uDXe~Rdy53}%{pedwpV2xON?v2-w_!wox3?^th{OryUtys zHC7od9%~$*pr$=f8Fde$G*JJYq{L=kt&55>y1%1k*S!`-A za2={X6~!sfRagQ7<5{R>80i#MFd=kqcuB#>`1WfXvrbgVuVA&|^I6GIx9iWjRqMI+ zyEM$!f#*n1Lw(vj5^TyCFl4*5`_TW0%;nChVE#A1o^4w{otPt{`$+8rOvXSX`QzpO z=i{1w^}d7zqz8m7r5#d(fDBMWPC2I-;3@IM9hn*#nHZYt8|wD<#^Lwo$xi{ma%8)q z`6Hg$kTWm&w7|h-9mrt7z=y{OIM8I4E%+q^0-yjN!SMf?@c-r3*EjXo#{?Gz|K$#R zz!3OK4NLCdh!+GLHw0mP%ecruZTd2UF{$3?9CaE4oEjJwm=u^5m=Kr|*d3TG*x8RI zLb}A)lm7J$kvRyn*ye9QVf0IxCn(TAFgOraxrPUr-Rj6VJbQ{gt3ggk?VUr@YgE)z6?7-M_p6?TMhhqr-re!BJ3>v{_U@kbg*W zbaqf;WM*h;tRBC-xVo^iw6>t4q^788-xGvDKlasm+0fiS?0{89oB~-|QsJ)Z9djl$>O&w7i7z`AyY@R`U;Sk!ZBK z?Z&GSDpYE<8ZEA$e`K^+?KZn@o@;o#Frk$cnXZ!PMrS;=Gsb3l6Z69Y2&-W)+Al2s z9CBeNI0;;2WpqeH(=5Q_wL3l@Ra>pN(c`dB-kf{|mCj&L+HRPdU)i3WUYzI7a+y#L z9IQH-GT?A%0v45_1_6rw(K`P*_n;JDDS#e83?LIw1gHSi0Ga^pfEBe}FLDS}kT?evx=4I3c>Yw;(Se5|dR}0W%j@gVS_6 zlhk;8h1;psjM6blT>mEc6ziv~cvA!5x#;{nI;t@ULetvxVcg~Y3kE!ME{V$$aL8jv zfq*H)6`rEFB&*~ZatV%oG+t))-VtaxeO`%p@aoRRbKyK z&2&+NA1J=h@F)2n-p2Z6LpEOh6Xs5Ba)D=1h4l1Y-?*EI=umB&judpWtFSDar|G%$Xn{j8$@B1oeYVAE>-g~FtCRwmk$I2U)R2!ns6 zDz3yn-u)&``b$C~VJ=89p_pQ_iK#(ID*+jdlp#~koujvNTdI*_YO%)}+ia1M3c&k1 z-ryph82)43{Jp&`JU=O(&hfnAH1o`ny5F{nGtz?DGY*xNUa1U;o|(Xi4gDpj&4B60 zLP~mLKS}|t%er@%w5sgxBN?&t7>tr4*{|r%s#g?4I#V_gt=IJ?*8pedWG`iVAN@S$ zyDvN4=g~^%RE`r9Spw%eZ4y?Z&5cf4&qn5CwtyCXk6o}P7HhmqtuRFKG%=k<6#f|z zD~viu(Uy!O#5hJl8+4GeImT6CSwSuRA*_BFs9I&URhXaWs{wf+YF?!1dzFQvnI!`#~_^KZJx@FOn9g^1jVVKq)1nahk-*u*Gn6b(9IXNRm0 zOh6fyB!hK~X$D`K z1c`zvip^xKZonaf*uzw;F*J4fAQp}UWqNjdAMW7KF!-KDVSq1b7+Ay3+Wz+D$Q!{h}3f3xj(bJvVzF%JOg`Db*0?0#d* z1D}iQOEB*i-tBdZ>xZ1z6Yx!y`lV+-6X%=D@aA)O%f8gUw}JaoFwbr~LP^g1-=|xOBI~n#rMIozr=DA3 z9zGkbOI}5A2;&K|dS7G@=})w7*78iY^7BzN?>?6_sQ|0iI(c~+r8Yxb9Q6HW$FQ%D zU_<)ni9?4~+{6jPdba$7-Zo^ix`gNKd^>44zu;}f-t9VSDd3Ni^&JK$gKT7rUZAo)F`h>>)3idfj#;^QU>)Iggn z@xVxNlu&VgGA{iPI zXjkT56-|4>XZkC2es3!q+w)zdK3nv1J1 zcNX~C8Z;L+ZFH&J>0XyU4k}g?5#IcWW(TTU?%R#S|E3P@1!!}rjxAg9EtK`Z?Ic6; z`A`Mh(RXBSvELR{)zWvu#&?4aSso^kf$S1b9YG4R0Ooa(5!m93gVWLliU70y)m3+e zHjwGzc_vb*-%jhKZm}w(K_W@YR~QK7`SzuLv%MLkU3nQ4;yW2dOpq$N(+05FRnI;4#!K$MN01lKDTO_-M26wz~N`LSJb)V;WR#U-sPh(hr4BrPA~8(mnOVR$0l9{ zd=WYL8SFyAGADfb=HLco*}>xY!Mq6+$L=dD(Q10m7e5}SP*JDOk8?BbFGEzkkMZ_C z^W0R0uC>0uZtPaN-C^f8zPe0dgx^UMJjhD;lNv$_jj^} zXvcn;TW>il$5ndjU|{hXA>n-UcP&)@B30@18-Y2u8d+l zhTHR8o9}bPMf{(S#P}Y&zUQsP{a`|1RnK$|6an@MD7i<$g8oog`xG&Ge|N1_`5So1 z)~Cn4xou1m7JtcU*t|3?Sx1*xt8zCwESK%+w^qS}JPmaJMTuXIFG-b1^gJ=?z5!@d zTyf@og>A?k8?o+Kq1V|HRiS4oRc1HrWJ!j#H3r3V+W#6d0M$ej&NFFckyboaPMAZT zY%ts2*Y#BM`OGqzIy-!OblR|)TRU}8Dv*+$8R0mF`_TLXo|R$X6(Z#Ld=czdU{{w9 z44zq(DB-*q`0lg6!s%aeDa_@DxZ!9$%U_dSW&mnBA}bbim|KTiGH*Yctj=XB?f$B1 zb__9d_?8Sg&O$foKM}T3L;wh7jRqS?kQju4EIbx>Al(H?Qc{+R;-Rk6 zrK;7Vt1U0r2+Fmp+}4|0YV!6_TY>(XN+e-hT1-;h{vMKe49Y1f!AqDZ?dVuA)_ODB zqyyNZ1@3f1zokZZBub_K(rl>KL)*)%C}>U>GHKj7k%Lm!LyF>$Km$UcAtMms%3MH_ z4C9X*4l$mv6W@E&ov*@U;x5$1_BsgbbIZ8>b9htr48-Q4-Sr2POaG5#JHU_(^sG-~ zh~%+UTGu;p3<}{s<7W0eFf=+KlmZCFAWLG>h#S=b=0AW`7TP7suwmE+bJCn_@7H}Y*Vy>J#ylQB4r7XG5UORXd{2gwBdI(k_WP%s zwmB2d6h8#6^GCMbPNnfxR6L&oPCt9WYE z@RD$7mAr=(RHUF(j6{fHqsM@1B#7cAOJMFXbf6eeaM_|5Z^3bs*G5miR|UM=Zpy4y zJf%g1a5Y3~aRh>ikXWD`@2hofO5t0YhfqNv>&qOpI#GPm zUnnIoq>bg&!TTrA!J4F03pIkdh@uDervCs@;?v<1ZA3_H zzw4rqqsG9nS~{Y5OC(3h0G;#*r(0LkbIwpGMFyq%(}AhAx0Xh?P16_btyxLVC0y8@ z9`R-=ZauHN#S{1+M?Nq6L$v*VFHfDzxwxDky$PtPw4H82!LH@>Sg6OK%O|A%+x=4q zilRloj6p|H6iq2BCvnCpsfhg82kTm|!Sft^PpCeer>#x8D5n&>nBmw1O!PCjyJ zG*H@Tytk21lS;N{8*VAJYatk268-k*Quj*&;#8sw@W8x1b8^ZkU`W)zeqDZM@>oc# z@`*dE{G5-jMyqjq&MPWQ|L2lm8vzT6U|UH0QXc9W+~zm#BFP5^4scpXhI6XVTYLgv zU{>m%ESr_$uc>)GbHWNlM)6Ry)@ft*G%(cNb~|mvC(I{%(^-znaD;D{`&?M<9jQ^VQ1`Eu zv+2CIMN;r@PDZ^}f{TLgH0~0c05YhE6vWg}(h@Ii{t2QRP4Y$^KUs6)djuSUcLW@L zNA`1%0L#Gd9S_o*PPvWL(QyKgn-!21guVu%zpTeVpRa9o8->~x7{|1OM==Tc5NXaa zT^OUkc-bKe{*sVEOqalt&R#f(O{8g7D&p;~4l{L0p zbP=zZHI^%FD&fXFUmV3_`~)lDUi2|}KO#5LvE_aAN;)Nj0D;ubH}Ti_x{pchNspRa z;wYWfIi;~iz2W0c2NME);CLRJH4)M%Yse>keTIQm$7Dx1?Wlffy8& z{=P1uHitbLq7f8n2})cuGo9**P+8{ec_;+IbR))tqiVu_u7%m z);9Zn9~des3|=%aFk1v)J{qR0h^LI(3o9N%l|*b9c&L#y}r~2~y+RMiBD^NUMuLesO1b zR0P1#g~AM(W2n z#7x@hE=IZPuK#QsBK50L?4gbt6uARUSO10hj`JDN6Y=W^tLP!jHib02fdo;)%$K$$ z5F9dKRYRGx%B=sK*WpCaOIy{dx0s6Q@^Y)%R87h8Iki77x4D01lZ)GMUbs3=t@hi2 z)8HZKsdF6w=|Eua;&-IjB$#dip1$lYC$qwEJHdD+Hl9S-1u%1!#fmXVO`7Dr;QGrq z{OOO1S1GBE`@JeNZR7q~*XD%pMsD3dnT(2)EZ7RE$uVaZPv`=b%|C2&pncg zkhQ-a#igf$-cz;Zl633neMRA3lbku7!*$1GL(He-r9b@_;tFjX!g!1KhQaG!ujvzY z)^|4jx5>tHt1=KT6=N3UyhlD{MXN{9Alw5%WK{i#Kkm;#NBo>j2oOACO0d7dFosFv zP9n;l(ISWkfnZ1xfef~*z{0r@!9^%&Ky9HU=~CmaY@}Zb;+9y{V$34MOYyK4Jh!SV zb5u-9q+DzlZzDl7%hk5+LZ3YcY9m2gARVgst82YI4oFbe+Y3}Fe$Pc!SBY{d8%>6y z$5J3q-NoBh7x~7+_BQ_nk6UAQHCdUqNU)JD`b6t!V5jZj^)q7&)#e0eGYiuKBu$|o@#1Nfs?|Bw6~VnIgPrtf@}&h_(x3sPIOsVdt5l z`8to6;BPt#RT`ylqYgV(d7_OXf}LxgFRhk>4?b(JeHh6OUtVrT*sA0>5s(Gj?v~ws z@D$7gMz^>FUIYIt6GQmOO%Wg?{UX+AsZM95%Sc&26m2aTg zYm_f&e@jBv$HH@n^bfHwN8{FOX){`|e!XEgRVLxj{Hpx(OY*C> ztCawd4%bg*WKJ22$IlhnGW^cj;5{;eTu#!&ke8aVY>vg;JrOI9xc9(TIW4E(e1D1l zS-0EJTAr_`Aw~6X#wMMMbg^lLiS-L4kTz6$>3No`ZHgVScw6*!of+&;>wTV|!hnc@ z`S$fk!=TG|mU~fb0c%6uL?wZkEu_i|W~>WPpuL$;l(0L%rJ80&=q|GQlXI0zo}&b) zuv>tJ?=`{pfOVEcyfbUX-4C z=8EykkV-!LP+H`_yiJKXVWx&K+N(-9F8G4h)w8sD7ILee4K|U-;Ol|fa4a~h!~LqQJkDR94)*<5j`Di?WiD684kPJ zo;4|5(Gxf4M=^CgLO6e_me*2k!S~yJK6ZU%xu{yLFZi4jnOIN#+AO$}qq}_7*-isXhJ!+>m0e>3+4nqJ)P5;#;BUqkB)&V6hMCOflaG zw4gBrNxdZQ(N>%IU)Mpog7X@>OUzBXq1qk@hw)M#_?Z+HC>FkKhN7uhIMe-(_E0jBA_{Spj!5gZmN>CQM=T#4 zY-0^N%^Wy-YdTbOJ$H>jy+9!v|EMEY@^d`=T?k10jU9_Q=Us<`%pStF_i!&7se*7y zm8J6BK$^x)uzTZWX;b#})>9d|Bo{E}t9D8F4E_CiCJAi^Hj>_~=>3`HL1tnGuFDm& zk_%Uh>w^y;!5IAP{vhYW+1U--=`!(s-36-)(qHNBojZ1ABo@O{sFxzF!Cj*6$QvZ! zxKP~*BnrsLAy3TaFIi_q_Yq1!gY@U0!o{etJCPrF^LG*_2@R&&;*m$J5J#SfMD;+0 z*iw)yU-6=HqKc_h1A>~Vv{0m@?)a)&lRARg7FH0yQq==xfMll#;JC>9D0YtP$Wzj0 zC7qovG9U{n?WYNaW~1U}4Hy>z{YsAGIU}aLJxuu6F0UNhIzQtQc*OC`@iW<(@t*G8 z2!PaMn1z@@+~tV;T|L;A1hxW9q{~WARF_peZUChbcPaqyq0TH3tMoe@y zE5=SZV8k0ak5YN7YSRi3JyLANG5WroiZp8J!-}0?n9efT(}NS1U^FtM%>Y+fAP23H z>ZjhmHRR?5m`xs|V@fBjNMw~T!gKEH>l3Jr zde49HiN6axW@{6~2YrNsY=Qf(_BJ?QSuP$2cVkEUM*>279hQB)=P)Q?vcUZjmLX?! z?9Rcx5|uIGZ@6S4%_ozGlNmJau%njmQEV^$NLlch%FjNJdsu+={%M9fHsKjBK@CXP z{BqtD>_Bf3WYhMQ6(Y7Y+y`rQxzrN_D8e>!60V2(fDD;$llb&`9 zId;PKY+lK_w=;5=>Ew?>8tx+gJ_JQ%K3KpTyLkpS{4h=UB+GH)A5f^~XD}fxH2lxk znONE_B^;`C0g2&E9XylQMD0w5x_9B2xiEa+^XWQWhnrXL zns0At)ff%rPiKi{w70qhi&-P3{fb(=!*a}ix#hem5;L+mdy)$qDdm+xKD4LW)&Xli0An`u6+*uJjL5U zuQ@Za7D_FWJ?2$u{h8M1zANCVhNU`tF6Mx)xdm69?Oez4W2+)h6jiN2gtPh%V6MmkSq<2;`E7`O7k1YBj@9a4_MJF}i6|UP7!d zNNMERtLyCj)NRs4xEZZ-(?&)`a@nwoL>mjZgOME1yvNPsirzIcXZ!Yr<}=gdz}0zX zF#Lnlas^z!$Uvqxi#qRp8;rIkxS?|v+{4f90d6C{=<45XN4{;8B_z?Gr~MtKFMxrN zQP*n`QVf52Qy^pQISmRP38{Nz7qM4rg>)F4ZCtSy1x^A7AfZOHv$VF9GDaZCa-bu_ zgdj_>@hYUWM4WZlti-nYNJE3$*1L+1qx?OtrRoE4hX_-WIedlyMsj`A8x6?FR#4vS z1jS~YM*9N~TX!_?BS}Ykib!fR*0^x+W#xv4YW_!IVMQ`Z^&=AY34@d{{?gU+T2lTd zbAdGObaBng{y)Z31%HHUarHL-?vCkAW_j(Yk6rZNIk30{b9GjFZpKfYBUF{0e7y-_ zFV|YC7d^>-GIGHB3ENsXiFN8pEYmeYpm)>tC}ONS)2n_BBE6DUj`5Nz>V7>mm&6R; zjYcgmJ;EHZElx+>T^BDb%v+S81D=uF19Z9D@u7Su$g*%#hp#)WyEw}RB(>^WHGS4B zixJHmKPirwdBq9~`AMx!BzxD+WNo%LS31iqXy_Yl?6TZF^eKD%rdrlC!7EO%K>G>L zqwxcL_jXJjD6kc6;T37cCHrz5&W#R`ba~*BO<9aKAW_hjh3BkY{{bK)d*_oX$jSCz z2eBzcdAf~2K3?CWs!1zVleyieY=8H-#=N20YOAHrA8YzM`GiZ|t`R%b`D<8@kbCjJ zvsYsDqLG1XqYeUF4H7&lV{6OOWAtkOVL1fuoi%3lSFQL*3LS*0u*)JcMnL}u|L5dM zTfmo(`GXFXM$52sa(~gxkVzU$=~ek~8~>`%vB13*hjUNLp0HmeP@Em!*)}7&CATsd z3&>XX*Y&es6&?}QciEQ%abEYy28CjNGpsX`OG`Vs5Xb=%_ey{C%AGeTOr{qVQzDKK zw-zg!^N@vTdS{oN(8?KUY4od_-ns3A5cZ@BxD%PY4yUwnUFYAg)`O;=leQvy~D{8+&UaXY*TQJq| zYt>3nLacW2v@A~9-O;-MlY=CaSqL)tx86am_g;A<3kAaAjQR&e%Fwl^Cb`Vz?pmAE zt*0OFq)NN(Xct1Y#z4{h=%}0A^ zGX;X7T^KDY3Gs;{UC+b(#A`md)byu^F- zS)PD3uerhE1xAAt7Xjb_mmpWl}>kks3r-2G&A5F$u?wdOX^3n z^mnBMvSp}}d#)KnPF~M?dc0rYgHcARYsq4|UP&APN8wdhSo(;ZDq?)U{nkO+b)bA! zn9uR2bR}ADQMpS)xtPtP@bOneIRW2%^6|%ij?UYuzJuO+vPbWXQas=kZq(y%f3{%VtuP07n_Dv)bx`M)8iP?M7uBGH|SG7OcretW`wi?W@nMM$tooD|2((zl#!F-H- z=JUO~DM1e9Jf6wrqvIH%IJDbt_H$bZoL-}lTa;<=x^uJsm)XrH#g~a-^-}xDEe4~7 zSs!w0-s~PRJ4Q%GRe9>Lz-*yBvB8|T2i^qhFvz&1Eg}*El z*JLqi3?`29)#{ubSwStnQwZ*~vEqH61w6C-Dq;}!`+W4Jk57I(Tk|EE)GIOw&2>xD zO=)d5h^^QzB%pTl=d#LUW_;$SX^cQmy3wp%^T{|i@yk?B&t1cJ;5PNmbnH>+mG4!f zr}F2bJnv1+n$+3r3CodLRA7~myHD0QHH3UomwLXi0qZL6YB$q}cz1(E?WYAz$g0+9 z(&h+C&^r_0ZuFMzD{s%F@FMVhk73C23pS6}@j}hdSNb`JqF_Rh$6Vkc4>$ekG8Xs^ zIKfFj3tqvs|FD#A4I{=uil?RQXk5l4j`F&zIfqCTKun;MWuKNUE zi7}sL*NvEE$GJ?j_=*{<#CB) zM+CD30;0zBrL;@G<5G4Vy|MOuBq2W}76xfBpNDtKhs^Gzz$1zEHUmL-6VfT;^M@M$ z#drtlRGE#a8mM*~VJ5EZYT`=9&IS|Ky!}rcrYM62Jq)s_Nn%l0V`G>T96460KU4=x zfD>O1daKtnW|ItcrG+@ROD8nsNz@x-`qW5`ZcT>5(b<*3em2~Gw#;d_;`0oU9{sP9 zD7d#{`IUiwvLJq!2y41c>w*f~uX+D*srMJB&3Ewej@7P-#R>1pgTuQvjx3xo3SHu< z_IeDBJL@ft)n9U6>1I^qId?~MRhIblm{vGWmK;McoIzQsNlxnggGw^Rs7w$|IO5rJ z`q7K?ua6_HZaj@|cCPr@Y!#SMh=f?h6Vi_d*b#5H4@w{H*GV^s{d%i?A~PUg>YD+F@LrXm{};3} zOU;z4BJ<4A#>M5sxPo+CVv;)WG=mQK71hl^F#Blo0BG@TySrAe?%Mt8ynB{4G%UNP z{&*Mf)W*X*pPkz{aCKfIjC9~?W4)FWLHdL%g2)BADh^nHBAEMotb!j57ZF8dUJRWF zoZ=UeV}c>72v)R1?StuU0VsTS+n<0^gXN3HCJnd)saYhH|Tg8aM0+`0Mm9yzdtD;-4 z=EbBn)B7*)8)^v-+QpP??=xOUL-uR=AL^; z?7IIev%g{=;O&2PPwVmy@tt!)V%~J2guhyHfzE9+tk)|v-{r?#D$KD04pw63vh{<4 z5wprmXwogpd6?N%0;4U7q3V>%E5YC7 z1@Jd{MIhfX7pBBWJ^xrnmS2EgC5;gmz~$m3<;;o^-AyiurmBH9aC1Bl9mXsv3@anB zw6UzYQw+U(VdvqQd&*ZeuYM>Xl2z(4+e0n<;p@Hib8`5`bj|wtr{7)s;M)3zH9Kan zu1UwDUC%fJM=nM-td1oBCt#!)8fkv}w>00A7RN|SZWrgEUMR_kUZ}LsPcOh!`{05l zP6M>Av$7{nGdBkPQ5L#db$=A{Bq>gf1gC2-7UCZo3rXOhXkZXHBm7HLeL~zp;=ZEx zUQ|zzsp^UI?BkMg=fJc4vVoO55C2fTL<)a+cqh{6AU`s55l)L`Adl2af=v2RRtd8} zc~c6w6Muf7%+QSQc(1kUQ6UXVD#~)LwK&zg3EOS||73DjR zDIU1$JtkL)J@KlEo@h@3-&1frs1V2r&)k1sQ=UEaF&sioxEGeo6y+l4v5kVv+i> ztlSAi?3enr9QL6swPeWIN3}C&*5ZpiI%NhsGR}*}s;gts*rZ9Z%n|xt8*jXCY@&HG zh;e9WKrLO9l=?X=G`;@?v<0aH(gNo@o%Py z`<2$#SJW%%wEDXv_uY4d_}bdv*xuN<{f+iL?Z2c4k1im4$ZPYbPHt&TH@1BH-jh@= zE#QyxCusiaIBqkSaw4WI3{y0MR?4!y$HdZMcH~1|?Z${eIYn9_Lt3Fo{Z)oskW+4k zE)UD$Pzp04u(48)#TjI^)$Xvw+|Y6G{ zi!BpSLedrNtTHZF(5mrtDZ5Zg9dWpH;Ea|WRaJnt;tCWPqsSFYC1u=rCdSKw94aSB z?v!mDm%P1y4#ZB}=QRf+Wf5OB4I@NJ^3Jxc3l?m>KbgEAKils7=93#YKK0bbjZb#= zZk*k;a!zeSG}>UWEZzM;P0a((FI&2M<>bjLcUO1q+t;-O-_)z*;FhJqy*qdQ$G9?< zJ3vB4QK&Jd2j{`mkFSyE0V_*Lh#zAV_w57PTFieU@N^yuv9goqoaGz(0n17N7f;bJ zj*~aYX2L`Lmif2yTe6k1xcY0~sh`u?QeEBBIj8~BLTDlhK zpRFraw8D$l&R~wV;S7w?#kJ`fwITA*@LP23D9cG2?Ln!zHQnyLSKm3S-atDhkc41D_T?8M|)RjtQx`3SjK zUO#7Uw4-Co$*Busp=ecN3cy~@@8oA2_X1~K#-;KQb`M)t7~s*Mr&$JaX)JA^rKmUOq?>&hzUR}#IPzWo{eB^4$QZrr0j90{DCpa!K`AsBB}>h49g`LQnXjT zCVy`Anl%d+pdgLS%3o6TXrp@1?0JokZCcbRgqv$B7nUvTs3;4TRg}e=XV#vYv(PSD zzIONOhi9<0@v`B75dPe`7M_4WUOx2m|1i8y+83(_0XJLJrNTk5`vcrJG{2iP%KDsh65;C(7y?K6lSj}M!SB2NF#gWm`NE4NL!doE*QA~YsrOTs0y9r zgKoJc%O=LosQ-uZ?I!A$)I5+*>M@`;rSmK<1}$jIQT~8gJPw-C zj7R1i{V1xDYm8pn zuMit8%EQ%$u4b^aBy;Wgz57(#O9zeKza7}z(LsK{1Z{r)Wj;mw+W5Ezj@Aci902f{ zc4`aWueYuVGW3b8bq%5qEq@Uy+KRzl#p4{M35{OiJb&Nz?fdYxcL)3#s!yd-r%t7M z9^AV(y>~D3L$m-KJ2N^@O?6of@sSekv*q$-(09~*WRZR__2a;wf1vigqV{dg9MPUV zwea?`RyXhF@yQi~N4Oc`phpP3xA^SCkM%W zKUVkD5dX==i?^RSBMlP7wPxNj@Tst#&mVYiAa?`#4^>>dW5-$)bD*~&J`ZK^If45n zmnuSR<|NYjY}IK<1*{bf!5Vt?Q7KQC(6T-F@6stiuj8X}>M^jfs9vPv4%&w43+n?T)AlX3g!YjM{?^LFK>4VPfahw} z^}-TE9j&bfjVXlFP;6($Moe+o`jKZF2dk>FenjlY;t^n!dV#e-3#?5JR!(gKtFp)8 z)yk<&4%D46c0o%XFmh2tyPru;!mM!J=S+r3%Ub1GR!P0apDzC&yN{nH;Y>j_)>5m7 z^;+t=dk>y5EXeqPS^X=m;Wej#=jMP)u<7P1Ui)AbuY05_UeBmiyb`VAl|0cNJH88? zEYT`nyOdqU+rwM1`5#6p?X(mvtB|+GV-{{I=6$gDpa1rsh8Fain=noGdL1q6%^s6u zht8O3 zA*oj1Z2IV<>&d}dY&O1X7$0hRhi)EUu|7V~z0qskQy}GH#{y%fcy-u-%SRn>869vL z3>X{9;DF2MfQ!q94cHf91IA>hlB80Q3!h<3Qcx_Y%ICOgvO;EhM-36(jG4U1;wh23 z>ckX(q$0l|@{QWe$&_KpI$2%oF3k7m=e1Q&@f73-@Kv>5#m+Wk;c)CA9;2h;F+}kg0zCTh9q<^Uc=U&K zJdVLo8m5!WVD zE~LF#F4+v;-UqySXfK;z-i$YI25(YKQ*`99v2>0mO2-XDUpkM8PuA5Y?PO=p&qIts zio_tc7sYo#Vvr)y8`P0lln2s53gn=4a3UIg42{@c07NbAkK?o?vk{u5g=B`C9%t7W-A3X+MOC+z+z)A>4rmzFrS6M`G!5 zY^p0`>5w+n)!Bvd*bStJ*+7%9Q{P;0eXi%A7u*8J^$FUwLr-^bz|pJo8iY zqiBLQGkf$Ids~W@4X_$c;R49d9GKBB-L5-=c)RWhm@;Z*O^t?iNx(9ftWF67OR?fb zpE)MeZ-Qs;Ujm-taDX(s8pJ!{NCd99|7Cirt;O2{Rrl zO|yX#nH(L2OP8RTJ|+NL741`7#FbQXW7Fl8zGLC8RFiN0%|<#v!KyK(=9qJhjj z=~uXvnPZh(klvX28 z@vIU6Fas2@0A?KI##18o1c+{|f{*uD0wSn_oPLKlM!jdP` zAO}t8l1=2?hErSW>$jZRpq8I!eR8f`;dkukzcJV>hu@)Auzope>;6pN9?;KSplANg zOLUD*RU++b1OyL<*RL+`HD8~F`c6$n?6tfY^ zX_kK)8aqX00V8}(VJl04GijbjWC3F8RPo@Zww(45Jn%v{{p6VyD{*uGiIlc zVH=Dgj~j>80dx!n`WQ+CJsCg=Ni<_Etc?K!S0P+4-lQCsUU2#Rxp_t;K^tn+oKjM7 z%Ms~3@YdZ)-eqjD^_ERa3=4EyIF#K?Lmyi;jIDyJ<-V(ptx6x;WKdVf#*}J z!kP=M9fVX%Rsu@(AY!!X#%RoY;c@nhjv6_^mDc*Css zZP6$w7~R&r4OT9Vx&-gKHKJa**$#enNdFOohO;V4(=l!;b_TwQs?q;kn@~#atUv#> zY!b&hk@0ZIdhsih;c)UG;n%?@ZNrbL0$*V9-a;uFeL>i6R*`PI#-k&qB7qI`BzHkL zVX%R&!g;Ku#!3QKVz!beNm#wOo)nVsI!wA-r(T4QCO9uzr~aB0tW*D8y|f;G!{~Ci z;fV25km3=b%r#ufjTkPqv1)XN<{~)5)C~f5)L;u(DvGi2IffjBqxtG`x%7hB?KKwA znh*zTAy(>U#9AaBwmAY^Xe`akFtXNf8lnR=0kdDnb(y)Wrj)MRkk06&45n=W(-@3$-V9UzNHAe* zBLT_8kI~k&6v)lP3@zD?&ZAKv)Hw4nAa^lNJTjQ4byG^v;H&~TBU}~I_Hals|2dXW z^6c1Ll*n-%>>j^>8QKL>_5gY&*sT`Ln-)_h00&86o*t%?<%Ow7Op#1Us`iYFjZO!* zU>n1Rsf@rYMkJTuhzx>feNTXPu;zF2@XjYrjN5^^LYtqswB{#00-wVi_#^Z`K~bO8 z1BFn_daw_Q!OI9_us0X>guFYeHy5k#^MjI{Q$-qrSuWAAz%H>%10h$Mbm0_vzs03GP z_50N^IYG7dxT8Onh@+mKKs`M!vgTZ%2s>EU3KSofLU~Z`B-qb6smJLXQ-;4G?vyR3oW<5?X8=kinO;$P z@jE(_28-%ysx#%du_rFP^Uj6MjSHsMS9h*W?{D8<)7iXnN8Rk2j`p29mUeb7`=3Hb zcX{8%i+#P*=hf8)eX+l7-~U2$!}|7TYU_jU=;qE%&sp-HT(|DYYlpGx0Llv5x5TuF zD}?oQ2iK)_E-4$Sa|!KEnHDPb_9b#8M&v3w(_>xK9X%ntgGn6S)EqVvuot0Qbb@pk zdzgfanZv&Fi?uPKF{jVd%H;2X6aVZs?M#gAG%mF|)72y!9~kT1bgND-)H9jY&PBc> zgO8Cqy2OWdbfMU&sH6@_4-3!!1zNk{g8m%sUH%Fd`fXag2tU?!c!rZC;G~pGaN9MU zj2{svSk_9jL(@W41~EX)@#TfykOY60(#@cK}yP zqDrR}!O!G~Tb}TF7TxGkv(JOoFOOy(4TXdw3W9HeUEY!;$QJ#h0)xvkRF=ZAAvw7N* z#@dWZtQ?ZZxl?2FqsZ=RrIf{0g-4TU8Q?5Qshfi{Gx-ZLzM-zLEW8hO<&HWFZMy2Q zb`a@AS3*WX|M9^n-E|%927XW>(eQ7267U}dePj-IRKtI4MD9?IX&I~ue0q|QKLzGu z63oS{SURGGav14P0M)E$0_bac&dUU5D`zI74wIHjS(K+fYZfNZSxCC&{G?nbr7f=V z812_M5$AwYCXKi%W=(;k(xT5b3)xY-tT`CEb;YQ2@Vp+#yK|5e>#@91M3hO7>GSP${TG}{Bb|#crX7qEXh1yD=BZ_r4xDJr| z8PcnO`m03T*AAO2hg|p_dSs^4X3~uJRG|Q~csZi)h#pa!O$-+6rWAKCZRPJF|9pDoqk!^% z`sOJ@QNE^q)q3m^RWn2D5fz@&RK4_Xbb0vfg1bo39a_sMn%CP*dx%wXk8`OBh;M&F zahV6(h{=U9tyn@HuUAJ9Ii|N3!?a$|In!ep4Wlok%z=?go8a;Xatp&zOo@}nNGW%o znZ}aG7P8ES@sctIaH~vU^~ImBJ=rLc%F>&fmPNZa4G&T-86zJVp^aJlX6v`I1C#+` z23n+j!9ah)-55)_wZl7u6$6H7T3i8Z4^{vam><*KnAjn#fOZHg)H;NrTAstPLh3^4 z1*6j!8bcEZE$*9Ig%#YoRT#@wx>dWdUx3Q^FSlqJX6Qh5ao{BD9F{#+^v|vyp$l57 z1jjnq3QaB*eGhFmcwv@xgJ0z+KPS)I*#W`9SOuhq6NF!wj zEwU3XYWQAfsPoEIY_@l-}d7-(d~ zl*)Es*wEx)~@D_#jVB&1t zBo@DAy^iRUuo;+aVl@Hgv$VMpb}zx?=D`rHz!C`1n^g1WTW>yi@?=Y&(V&suwFUaK zgd1DHY+7Rfm@((0xc@_?|yS_?E5Y0abC zt>!a;Zr;gy$dziH0)Ek#7@?r{>SY8u>jKVk1FW0VCId)(JTm6EE5T3ffM535(ychx@<*TJow-~GX%t(~1) zS#MO@Bk&T94SjEv4rn7phbl*DiG~KVhZZbV(AurEDUd&QJc|%1Md4(2qqNatL?g9N z8$BwU-B@kQs0Q5dmTSf}qr_urA2wK%9@~_Y8x_^aMoC|yUJ0y zpC#;vb(hoQvuT%66ZAGo9{Zo^GnWzWBlenmI3wCe>^H|Z>q*P{Sdv9u?IvJ^r8;z*GWsL+2s!+Mz?s_Rx$zQ=0HLj5=8v z(S7}c5#~!r*oevpkWP2V{VGDnZmZqP7RlF@gld4oz$?hqxX7?c@rF={wtaL+B~ z0JWipV;gs~hBKxZtN06gKEt6&cW65^FbjeaO=3$!Ue-RIKmw@5*%yi=eJ{<62)xq*XsIdHL8Jb$Y`UT zcd=_rFl%c;z1gXhIa(*Q4V>Dn{qgyS4yi{gR;{XdPdT}Tyg^H-n2Hq_$kH4~ zIosV63(7e^ZA0<`akzxsa?J#@QP))+DP?=*Q4z~#36^uB##35`Eh;?z08UU%#9X$n z5ocug(iM+IwSsi$0LCwErIPVK?XJ7LC$@k2;}be@u@_-Q0;USC3(OuoAdO^!k`wxph-M z6fN0}`JMwgGQ2sTv1u^o`>#uecFyCv~{2C zi)9)v4(;9-7}mWnO}7=n88o9Rc8flKSVMJlFFye*`ETmyXDrg=%(M@#))W6L+z8tV z;Jz0BwJx~Q7wUp*{$BQ;0?S$ldif6<+h`lywnj#C6wg3&5{*V|9o`=iQz)VdDjUYe zsjBZji&j|=$#bK@=3>HPa3dqYf6q9x3BD_mX!ome60-!{`hnqe*<(?-1=Za=XK&w3dm~KY#*tH+*gj;YG~K7Z6mVUce9l@g2eq-d&V6rmm92m4wUB^rXqHk??~YNwkV=AiR5 ztC%CJR3$qXtVUuvaSNV0x4EjlT1aGSSKh8}uiAX>sRh4H?eA!A?%1Ew(vj?TEgjzO z(6YP=4VFTh?#6Ua(|p5BuAHmk>Tn+`Y8i}4C>1o7n(9;7+j}CMPKl={OC>n&$p*c# zlrmn-B)hrca5AO!B+780^%+{en^J<~c1t}LYq*%z`=;zZtmBnklGd+o0+i)@}Un!)*{_wy$lS9LNo(J5OF3XzzMhbG;{5Eu3l33mobg+6a4Rmiuk} zisj!K;yo%%HceXj?IGsMSl!>sa$l-AE43jX8Jhiq6_t^M;)K;TCQj`xwh2&=+ibDW z>_F@X>W1Z(OD_~@d9oH8@NU97NaVV;{&-3edTR`0BFRzq4Z76=%F3sCW2EYdtn`}o zqpTUiT`CT-I@O<-Qos!aJY|yfHAgP_1U~Qdh+&& zj)ClcRoswnRR5LlX7X;~Q~qtX_YbmETR*}Acud-@ZmC-Hgsj2mvUi zketWh&fo~+d47PqU=Z#M#;`Y(l#~nH)D1Aw93^gn(Ceem-*8kT%s1RZIi1hHFwB83 z2=kTOfDAO)L00k`gjKYUvuuf_1q!bAp*1hZ{lxGh`_Oh+hWQT{!L!3f9fT*m3V(d< zeP_*7Hbl7sccBYNiR&_^c*KTF1$>pPl(> z>2-Q6!&a2-=y3}x#IC*#6Z@ zz@}AA*=+r3uT+2upSXdu^-lY) zjcc}+{6p=fgFq?2=iemj$;!=Lt6RUZd-s#QPwjrbt?j{$Pml+29VLV&Lq6SqE|>d0 z>-wZv9Y8sp-aAKc)rh^FEUtK*?i*%0i@Wx@uy5!{dvMA|R*Ig>8eZkHj!iDs=McTa zxwu=Q&rg-ul+EF#8k}2kdo+H>dVUcp5lGaa4OxQ?;{(0~*}c7!EZn-r_Tb~IB-amj zIz?k_*)p|+Tu@8+nW{Q)^h&RKj7;yn0`rDWzH&o3dXV%?Ug{lifsEVkygry z7C@0iD+eV+ktpKk+I05@yVz504?3fYN1}bTgAz+Qx8vrs{*Z=~%qCm3doiLX<3nQ` zZt-{ZsgL*ZG2B5Yv-8%qb3zAhzC|u;dkN8T85UAG6~tY50&GW5#j9^NF?>TX*&U}^ z)92a~3^R){3EJ!EPkHIUy?)k9aHO5Wh`v)$X3H>s7Tq&w=+0pSO_?o({$E7G%zOX= z0000106{H&%|c%fJoNw{2mk;8007pkq16BY007-WtQP;t{!Rw82j>6)00;mA00000 z004N}V_;-p;1vIRf`Nhk`TvvukFjlG0E(c1=K!v*2n2ZAZIeMrR8bU$|99_sPZ%U3 z1fxQ-P)7zCWDpr-5T;2To1~ElaUm`S2@z@triH6vh=>>-VneG&2-=B@7U4o#NQjY( zXd^L;kQOZpN{1Fh#`xbiZ^Fa}AOGdtd+xpO{P(CINPwU9x`FD$W1U1%b}=kBFyT}% zZ=Xlj+C@<<;GSBj|I#~%NE#2-1tioSW0#QE0kkqU<#U$|kYSP~v%XH7c@>3ACOKX+ z`xw=aaMj6SPTnCTnl(k?^e@0lgIbLUcj|52v*FW`jgE==5 zmk`%gu_P`!optod3c6$gXXQFZ)D-gr7^7x*eo6uul(f~aYZ#MJxO$DTQQQ`Vlqw*s zzhX!taIGp9t>5)Su5(ozTxSNZiA$@u-ZeRDi}_0!R4Y6`f`Wd7c6%Ek{Slpd6Yc!h zgjza-{U`1-fICt^znPbAJmCC+{R)%%3~uQPM!edy?mB}g?|f0uV#bTP zJkv!lV;d5~6WQY3bEd{tmhmC=7b)gX+ut$d)2nm*FH`eVaNa^ZACkTgKAr~+2FZl{ zL08j*lki^4o*EyHV|<`rvcuZ4=BMFYqZ%L7|5*D_q-gEe-;)m#J>Vlz#O)V|vp4c& z+@M$4AFG~@s~Q%a%gCEt72`XMVcP5~dDf`Jz6x?Y&v#Qq_y`h0$0c~$V_;y=fxnpY>wngkb>^ba9IE*-^aNOZk zj8v)vY+H?%{(>tVZr@zQR!=TIHjbW7G7o!%VWyU(jWyS|gL`LdN2beY<}3P*@oHn*uJvMu=`*iX1~Wl&*7M3 zjN>dPDW?LbW6m1R>s(k|l3d=o=C}#Db+~PE`-2_2bGb{ntGU~`hq-sT?{RBFvmiSnS?}52qq&S7(FxT{%Tpf zj<(x?%ka=ckGv2M{J8>ez!=Y9JX2H`|m)349o-{<{l0X%S);6Q$hXz-kYs5o_tZ(-HhvG_JVIhn;`O>9})-3#p9hZ zx~F_1&DW;ZsMIOubh9N%pzrRN_51$iCPJVHf?kEl5?WbLTVJ+PPv1 zq4sEcA4YaV5}nU`wLRoKntbjtb5|?5h}^ssL2AE#YpO&S%r57>*a_)Wpxf87Z<|a? zc;p+i&3U|1oUsSyN94jN}{hmW>l`l3P5E>6=f?=YB-A_4Lh1v5dFWv>2_J zk#xVN(vEKQNVBcu3C|kO2I{;T*uY~->Xg-~m5O?H+cTYfqVq$xLR5ptb%~aDe~S2apJfBoZ4@*l`d| z3{GN+Bc22jNg|mPQb{A73^K_gn;de!nJ#pt8{O$aPkPatKJ-OH z$G}AaZVD-)m=gNYp8*VH5Q7CC-}ur zeshFV+~+Q*na6x~Q^iB7xyJ*Z@`%Sg;S)8y;2F<3gO4BV;WaOLg`Y2cV=D^?u#iR6 zQpX|cSxf^#8VRw4r7Yt!%UMAaD_PAdu5y^QtYIDN`O0^$ah7vj=M8TqMw}8WaS|^H zk|;@%EGd#IX_77(oaX|Uxx#HOa)~=^=A>kDgPW2i+3b)U$(202uePbduRB6@0Zr4& zEIpc1Wv`)hDN9;3!UIZOX((OF0;OA7s4P+zEC22DSn6u8t~+Z2zEH5bs$wE__C)VYyviEhcx9xz5VBasEvwC^;PPr0;Fm z#=Bd|5UU$;6veib2fGv#ILpc4T8)x*O;cCZU)dJpZlLdtX&G;Slxq0@3Vz z2ob8V3tI#WWCRHn`$^~c4DjvzSI#+)m^nv;ZH|q*9HoRxNEAxBLQ0OD16frgfzsSM*H%PZ>6AllLr+5a`JvOk837LSBx8QQE1OhH2rRGl zLkI>nc-?I%@48%HF3KE%_^I_(7-57E=3xYlFvf_+e1vHl^AR7@G(EH1bDT#y(VlmZ zp5eqBM4KnC!2v?w&TK~Q?iK#`z4yKAdaUuAo@@kQUUziUiDq>Nf@JZ z!;N2}^g2wrcUrHsvMtG$tQom&xvkgA{2a&H6$#kraA~2e_M}s`t6~+FmQwG*yaT0~PR~o5F&I7@|RfNojp9&vnnr{azqQ z#bwfR-X|;&Bt=rBP#98v%ODhylAX?HQ~P#CaF%@WofRLE-}^d*KFJ555~!xp%&um4 zMr%oy9BZ{wtk?%u6p-xzKdn~sNwVyOpXKPV0wBu{_|8Y8u)*Z06#$r`~Vd|2PG#`+9Ok%Ikvn( zG$oI;Ddf{j@@}qnwkWr#nkmX5upRGiqz?n&Q3(Ye0L}u-wiPiWr=LC{5fai#$i69B zla94Q8iI(3h~3BC?tIh7Hfwf;r919W+?}RR7!iaJMhIcd{@%7`T|&2yv7mrb-N*Z$ z%-vi{ATjRuvwUuAreEFLs)CiF2|9ozUs+_+b7S1Nh#)Pr+hB!?C9wYrMS#yASq%X2 z@vGkg0KPiq6D=Uv3I_osO5U|+_ci_{`*j$j(%~zNhK}dr63F5GL z+;okKkt{lIB!+?#_E$Uo3V=Gsz)31y(5u(5>+X6U3X(@~P=X!_k;>Q3c>EIUsgVX5 zl$4Ci(^;EsxtVYBQ~p^Bx~yXn+L%!IfU-Lq zE+dhKj%=W>Qj&h54diV>WaRT0CuRu4kp~-LZIlZk7oa3TfI!ACRg!N5_GX`&%Mgh9 z4QT}OP$|>l48|QSd$8RZ2lDpZqTeOA_v^j}X%4j2JBX^gmC>x4V zZiL+IlBE0$N(hRk?gJgOE&qo6#t>7RtgAnXAR7EO)Stkna0F^S$I002iu zbE-6<3it2wf)rs2k9Ool9@>d=teQ>8r&<_UtV)ERRM(s2rELBmn2dI&<8}+BN01CR z0ALEmM#~p@<~tb%Xi-fhqXI-vOyU8&vhaa)04x(hFYrilJC>0ZLng5VK0ec9?&6H+F*~#3H259jt`K<2tH6}Gv1<4oXiIaTN z4X>y|p+D?3C#-b5OSjxNg6Xilj%}{<*buk(bSOC`hrO4=lU#MU5l_Wf;(ef66wKkk z1p9dzFpsm_rE*}%#0)YBscs1emKgbg3ik5k7JU>Tp7ykdRcl}kb4WVmS+b($$e!ty zPDdxIXm#eQKUz8tzEgcisk_SPo7>(mY+mH(oud!o zVW>IvT16Knl9yiWd4%3Yq~Y6`yeqtS_K1&Ot?U7c6Cp|E;&KK|F_v}AwuG#(xTyNz zu#z{X7rCQpavt~<6bT?+r_$E@Ok30BLu$uUMD$j5pMkFXAz${^lh;rv-%6yKCHA6R zt@Q<3{fy+~D07ziQN`=WCQD~SwkN}T8ZpD7OD>pWn42PHof04$T};)e;PGk6NUc$@ z{368yXOZcJ`;bKU>zBU4x_xTP%t@=2(~2duzg%%BO14&puT}s zcL$gp4GxLq_ULYCC}>w5-EuI-i@Y*Sl4EOHR7MZWagZq`PU#@MB*TS9s;JCked{FK zyD!cG8rC233lt9~rv1kN3LOEYCer<}aMY#*N(Ru{QAi7}VC^K*jUJ@a0+jV%^#2Zt zc!G92-l;1*iVPaP9di~+y(>=nhAI$M8FN?KspIuXsJCg$F50E4zq8NElV~EaGv|L? zvR3L`t_F|C5eU@fa)nZdo%bPwu$&_S00a*+MT^`_f+y_hLC4$>o@Vvcu@>&W z*f!Syc)-_5_cT(9C1RRUDx^wdGMN~rD{84Qt$bT8_NLhwa=M`Pdv7Bt{Q#+IIH6(i zqJ5x6Rk5YODK#?#VwI@cFuB3HiY^xvdWxAPD*CG@HL9yz1te6}e^%-W#p)ROecR$mhYD?C)&-^o5 zG4JcU&t2Z%1}BuYZFoGrOV}9%C}Kgj3ubF~LfP}qWRl3f<1^dUI2JtqpLOxNbs0O%DSCABNS8mgwjM6zuy=Mp6~t+KD^?<3+z@Wf(< zN;%x+rs||Lr}#wd+do4n$?s$jz0_-(2R2PqYM+WABDhxed^ zmW=2ZmJlDa6Zl~9iAC+T{{f)$?L#+PWfsCUpu&?4G(JH*u${<8+`dr9gCWZ^+%hDQ+spYsg31+b=r}e z!J*@BX95OLLq}o<0PP3@VIx5i>7rR}CHYifZNg3{L%z77*;pE` zD1KNXGF}Ukr6${!d)m%HVz4~bsw51H3uwIdkW6^$#^q&C{q&iTp$L*{a}Px8{)D8h zxDqM6Wh#q3%tYGEwr32bZ93owiW}?fInLuZ(z)^-L4QJQ>xs1>QE7z}EMV+clJUV3)##SU@ z8{q-)C_n#4|!r#$s|IFwD%TGgcbdo7f$z;Cau z7c(%reJLdm+^td>v`p9s>QV^YHo*~FU8|k3cjg1FhkNPe#M_13kZ`eh@m8Ov%&LExuW;}o^^XxVtMp9+9NQPKNr4UO26S)S@o zePmTKbRd0+D<-<+hbzHaH`hhQBk@PGyolK+1ph>cs95ZW*M9KXrjDM2hu~=^GI7yE zcQbf`j0b3`v`bCaMUOL?nDUV2<~m>cF%4{*$kyo#XF+&aii;z6r$#k)ePAS4m6chR z*RIvU)djsuyNM|f-pn5O0d1l1FDR?Til%fsi*;5o*U^>xpzrJA=FmQIw&I|T(PE5T zvxE&mGDCM>3}26@oI zizPT$oFLnUU>F&z6N_C@lmQls8h^bIiMc&C^6KNd;*B!3IKz14BrZcHPo)CH?N%zb zdSyYcobt3JD7c}7PBqDlVED0Nwha_x(~>Nsj37hL8OayaGdPjRhDfsX=LU-7gj)C3 znE&0e2&B*zrcXLLVBP{nz!&#L8D33Ls9}>hQ<#Y$vE6f!{3^>_I?FvZd!THhNEmlk zO_?JMw#Zpiv)d*QDW4++ATF5>D)T=G5=Ibw`V$xVOAjnkxM*C=73*GDSD2xz_U#q@ zRoVFc8MC>qg`8JByIZk(Kfil7)AsCs0gxWo7(OJpX?~Zd!kQ0362S=?p*Tz{Z47pt zYfz_DW@()UV+;Wm4-N7JI<5-?GA=-FdCZuQ=gcqwC}vm&%Hnd`{m?~V=-qB$RU}Mg z#z8gvXtg6FURt^Sn#`uRsI90TMi2(4@Eyg2g_eYni6FP;Y<9xxpKqF?U?uSRYUieAyen@o^!OkiF?Y)xZjkG7wwN5tWmCr;Q0eaW3 z=Ws7Q-fz`Iy)rwX=N`Z|pdaBHKiDV-{7H1brp44nK6o1VuQUUTKv+OQXZw$jayvo!Zi=I!KAxj`{Gci|mAxW=NS4 z9kEYb<>&&hJg7FKS)c!Qb^r=vN-z#4OqwzcU#;=A|lxabCF&066u+&m`5hA*Z&9%n)uu%ro%O*dggf0(1K-=wS#6h?8xo?>TNi1r0KM? zIxcs+zB}D%S+Ef(j!BZlPO@b7a^!GOsE(t0O^}+k@z-e@-W4n2J+Oo8nP+mm@KUaQ zZ{!2PW~bHuQK!ljG9Gj-$EY~XoHcV@k)q%KyZRoY%#aYH%37gN>y#Ix!P`_bFXRgl z)OQG_1?w7Ww{YEF!;#Wq$kGYU5I_)5%GE!P-iddhyc6p_BFTUF@Xf#Y!+jqDENx&u zuI z@Z2v$3KaT5S8*i?WTK+F!=-v6XS&9y#8oF_f*Zgi%0V817QEi+)iSQ^j(zSKMbf zoDQ1&|3C20p8&QgbhsS&vHKOn9g1ert=fg4A8^9?KD%>umM3NI{qNw%d&jSPuiF;P znl`G}X^wxF?tf$VfH*C&GQl1>sRS{zy2E9qfwpeQts8v*4}UtFFOE-6&(1F{udZ)y z@9vkYm#<#Gd7Iz8e-P#7?%@eXczOHyB2j*5j6XIYFbIby1QSC-!${%eh)4=GDjFy$ zEw4P+)Y{eAeYvN%e{f)ESTHgw92ZSYPEXCv&MyFLdTiX&jE?*c z^{a4okiwNb4NQ(RU>B=WU4I2_YI+e$vMIxWNcs|n#RimY?ozcva|2q=XAp)h3vmod z28^6mfeXH-e)%mDhnV`~pDlX%U`2PtS)NAAUC%IJ$=HZ+1Gd~NLFLV1D9Z1SV1Tp; zNA68jtA@$0OiCoL*|vI;Ha8ggk>4T-=-fs@FnLX&cG}h>l@AzlT|JC*&9+KrJlV|S zpDdKX5<fi0idvV43iCKmQ% zsQj8a7{p>lS38e)saX1^W5gM~RbGWx{R}?>#B*^zB$P-|5I08GNUFJ;aflAv`X$e6 z6xGN`S11`F#$x?*BL78ESTm?&W}tU_T1j9v)c=<|gnnJ=|K(~}IKutqg2 zD8|zal%!u8P^bZa-cJp{1RQalvJuAG66@+VfN-{lrxxc;n;}?u3EW`uh|RgSrXnrSq6Ok{vLwDzkm`JrcPX%)iDDG*@oSK+*+|aC5q2KfhZEv< znI1AT@laiWuk5^#ilV<2r54m&YLv>tYK5Pa_ke^TvIK?Tp$x*=pXuS?dNHVO%0B^p zc>-xXY#fsg_C!$;&H-n$!KQp=id@QoNry(Kl&S2lnz{D8^YYjN4MrR}ok6W7706-g z10#q7jj02PLxT2s!>-Ev|14$yyI|*;L0;Vcuhf4m83uzSIPTX&G4^j{^a`OTZ9@c! zqsXDjC6IUC8R!zWw|bESJKq}^}fJlP=>UUY~$tr z4}2nUodQNK3BJ~jgl&oVt3VQ`5qD4Bv1A)g*Dy1*gNMUjJ{@Z(#6S4K%ykOYNnElP(YPul}cKyF|t;G!(?*tR`i~S>_b4x zDqBff!Ooe#v@~P!3N% z_!&Rt7o-`|EHVk0j9pIJZt274Z$fcNQGQ70NYOb7jC|N@33F?=(j-Yk`siKdj|=hI zkxVBm-9)ph#Uho}qr+o48WmR!D9xJR+{zIkOFjUKUK2Y>arG&R(@<9=iA+?mP~}hh zQAAD$cYa>YCKnchw-$L>pp#;egE1E_NoJs+V2P>bat4sAsiJBSZsB&P?^@-vS!p-M zv@JqFCsQx>_T5_C1f?!wUrkT7Ur9Sr`ia>M&IyIir>qe3bU3_4lB8BE;B^e|$i`F^ zf}&&d!fGz+U_d-b&KeQhwmz=tnatx96RP-CG5ja(kiy=y)o%^vJl3zI!FJrci#vP~ z+`c1s<#zfQX`4#{P7AJVOKR)eNji`itP_VMY&spa|BmIuy9$LM>?@_T*jF zS+dxFAMnhGUjdAol#S_z^V-i)1g(FkDH)Basv?6ECrlnt$!<{iIz&+k;Zn zCzdDP@et79wMOQc-N&k!BiC>a1jGA)>v!a)RX(AEZJL~e&=j<#BS&Aw`}#X#_lauI zy6T}lkv4&t|Hygah8XgLErcpD3rTr`nild)__dJG6-u@4$PCa$+2~Y+0{Ku3oopsf z{7e@dvXQTB;r6dHt!$s0uq6I zlsr7c`rb~(zZ46FKi1O1xlv8?ErWwd zZ1ySt3LYz7Fn$nuXTIf4`@0LBNe2Ai?Jv;qXT^U*XPMYJBHDaEbaZz6fn%~?%^QJs zK6bUi6Kw_HKahhLCbiSQbTNfES;a8$tsk3-UOGjtT4cDRmq~i1%v&4=bW#g(zgvAt zg@gr@BWtSDgCNYun5k>MHMC%#f`2pq6lnfZqp?iLH`a6A8JEyI3+F%w*R)A}@$&Fw zL8>ktN|H_zv1yXuCpDoF|Cc9iJm*`7;$iVQkXw?5i_Jlrky+Q0;+Q3a=i1+(;cG9c zPsh7^xSdE_^DQm&k>uBfOcuv!Gs=z^(NhwC135G0Ug#`v8jW$!@Yvzmx)^$g;S;2L-L^iLW;m0A4^i)CKhO!=|Fu3I<# zja%;e4SVzY;VAOXZY4EIeonB%t#Ak*{Kv;KYPs&tVa8-~6Enj&5sw+98P_}o4`RX? zK`RF5ZmBZjP~m+5XhfUxm)L5CW<&%wkE&5pWgQo1e8 zP+q!`g#M(@m*#p_MD+Gbf6$vPG4bMJbqG#!59y2y8+eAD4RLwqR<6iQ;L~I+bZ?MpsXPviyzy_maJr1z zPQ)#yQ-BYDD;G4}{zU}W;l+9t7%anUSjff+fx{rp+*BI)B1-QZW*%%A<;fPI=T=~m z+;2yu$vo#kR(fu%Aj*SdirLS&CL%-`Dg}1uQ+~p#F%b@&o$;r^|7g21{ZDMHp!<^k z`Q8l`FB$}mA7WJK4^QPvl1?Id#g3m*KSp%KkBa-B5Df;=_;B9;Ku?@}Yc>(hZ|sc% z4j#F%mu4l7g8A8v(FtEUld>MY^8tXP{OPAI8qy;Lac@A1Xh>)^sKL#l#70Z)FE=0dDU z3(c-ooucW~BdBCp4u1aX?Jm2jBUz5q6&@B9s$DPCR$tX6D@P|qg_GiF`e&qj zbhkSfE;M#6Y;SihHeTploZ(R12?zvrqO4Io2=G})@B{wIt;R+0|C-b2Xlm?+-P?66 zPIFDclc}qD-g7Uea;r|y6(C#Z#_Fg0`uk`4>i6Z^zn+Bn>0Xu~>I(RfcGtWgHqzY> zbd}@Bit?8??mrx7WF)ivQ{2l>6ksh-oG{WAJMZEJoK0u}>Ie#l^7an$Lk=@-B=h8) zj$`VfZ!@R85gQonF+cGJ>_zGa4(zF#KXVp?+3@kon9iYmNL?8c_%mj4FVE6Guwl=) zn?d`pS7%Ns9TZSFsJeuGmfN&t`F}@!R#xdhi@XuMJP0p;Z)bNLR_{FA#+HK+0G>gA zFk_w(yuV6g=VJrCAYMpxrm9b@D&5M(+XIF2ad)+fVcaHSER!X+CAW7Cw0tGXLZd{J9Yfrmo}ar;SER>H&R&0 z91&HCm;#Hu|CA=ZrHU_<|9JD%Zk93|qUmwlS-O~R)4n^2&TdH0)RDJFH>&NB^?&?cNXe-cr!ZD%79gP;@MOjF2>Rwy6 z4Y`aO_4dHw;B65hZCVHXRd0XJ$ygbpLp&XyBDnix_tWQpUe)cFWKxw2;h^k~12>s| zW;xUeLCz3%Qau4;9NiQbC%FD{XZPd5tNpi-{pN$Wq|o+?2$xZRypX!2Z@T?P|J%+E z7(ps-sT<;`>qTqj^p}esPT#vnH&|4bGZ?L@$5pQ#YFU2&bbtT-v)2=>Y_@LCVzZoB zh(OA=$y&ImBt~2u1*4893&%#6NEO}M{rICgrqrm-K7f&3FjJcGGhXf82Y%ECu~j^+ z7H46`#p=1>dqP`gihpMAqameQQlYcj4%YXX&Zp+ zyqr~m+iAFPJ21O!i+XMd`?=~;)r9N~e?Tp7%554{;VwL)pE6}o2yu8+AlX~e8+<6d z_W?)gwSufQYC`rKpRy`nC0BO4W))wxz6*ifJ>3RKHG1_9&5J5{7g>jN-RL$bq6N<< z!lsFslD6C!7^wwC$=HWIKNiS25zNG(S)1MDFVHe=HnS zwNDBCh3%772dC~2<+eocg3d$d=!?koT?4ul)TJ=5kmX6+T*GMBP23<9E`IKYH;%=b zG8_2$E&Z#)2;snLvq!Qi!P_9=LEu6k@=NlVHVT;(`cyOhYZ$I(vFk6$Wg zIc0e;1Og|)sN<--O9G^g*D6doI+PI+92uR$XrIn<9KX9hH$FFuEpp2qDIC(9JQTS7 z?>fbx=p>NSJ+{Ai>}FVY5%!t{y!lFlsITh&*Ms0D++!>Lp&R{0(?`Q6`h%|07dGy3 zrGFvaWY!@)6~)kdf71U@9iA8n!GTD+6e_$)INQ-WS69%XU33%NkVNUq@3n-z>n$yP z>%uT$p9Q_lo7%UH!_4f??K`tiW+D(^bU;90SW#GDAQp{Sd`pLapxi!kX+yNYp|NQE zN09H7_fy-=7*}(%H~VI`v2y6|e|-a}1FGZ0OTs^J$?*H<%iTk}BjXR=Q%Lk=2v_?T zOVQ%+#+Mu0E%%w&kEI{XZ#8z766?j?MESz0w_uwR0vvF5>x7gWVZymex zO7TmGS)*(oc&qW5ToDb1(Ssr7y_mA{93~72fnnb71Y7D2jgs<3Y-^Mb45gsXmcC-v z{-|pHKtoPPU+!b=Oy|@8En&JAu%jTU#%~sRdZu~5>J_n|kD(`gS1k85s+Wq6yQaCe zXweD*WNbs4I{>NwJ6cXjmV6pFL>i4_X$6PI=8y+TaLfSr(6L~sI*weL zx}>eHc`zM0%q?^`M(TIm=-m)986;|qf1;-~mY-%%noKKMUYZq|#R|#;f{78jTGX=% zj0@*GA6B98UMOpfew3k?d42B&P|d9Yq&|t+x{%27ILhLTp`yZ!;UdM21c}rY_~W^e z;jHvh{%8K^V}bhiK`a%{fI|$*Q6E!FlC~yHDQ_TY>K+q!kp#fWPtu=Wi6UdAWn5>l*8Vb-tL7 zbsoisQnB(TMUHqU6gdq(*ja9++**x48i?Xaf<2X+kbtD-T5ty8xm4pd!!NMa@*MnXI6H`+nchS@oFtG#J z+mEB`zPVA;dUbw9+{-4WM+B$Q!tWquCZo()`S~ofr2Kpk{Toya^^*A507z+ycQO)F zbMs~X{Pz(Lr16$|srXQED%poNkReRec+fIxGgH-17y6DbX~`8mL&P z>%O_X;dxWrkXcPns%WmVo{%0AkRrU>gOVBRNyBF4_(2?^cf-$^+x>HOgaA2}&gcy1 zcfJ2yqcAluA%S%&{HHJ_FY$FT@9JhiYDFxN5BvNqLeG5iXi#rvBd9A}FW&Nt!{I1oBsgkSo6{YBix3jTZUNX@)<<^W~ zCWRKAGDtcdyCUv=E5dVudIdwpLOu7*YgMgR{XkskR*NMDsfR*dw7jEX3YEmdZnxR^d1<4(T5ay>uIc@D)RTc#vO6zWJ~oc@?)mZXi{Moc=%K2>=BVLJ zKr9X|jmP++eraw~VifRMAf04Tel}C7tz{97LE@#+u{ht~A%KkSI3Qztm{yR%lx!-f zZ(c&9eLFF50W$#%IyV@NL@oQ$noW70!QSylmthGoTiXK`HsxW0Z+9OSZ#Be^C>IY$uxLkdzu9@2^*5a zO0DzOO8%22@@%szWHpf#wWnrLFObGQc`3GC?Gl=ef2uNc|0;h$HoRzbn{sP#JM#F5 zL06^5SG?aLkH;U&n})zE$RrIC!#qbd)~zJXcC3!f-YLjVDvyk;Snl!02E`bhwy1>_ zpG(h!`fYS7!|jO`ivr6)x3@no=J0yN`YU50IBK+hp6Sbiqm*-G*B+Liti*CwJ9+c&*s7`v`kG@U_q3bi}XJ9bx{D!K9-#lD4_T<#Wpwj&*oHXkIm@)F|* zm%FA=I*J(~Vf-yTT;4!7sRT61)YmrI*d*CD=IH$-qY1ShyWDdjY!a)kT4GY;QDIkB z5C2d8+^+-Cev+#W8{K0yHRRcNS!ld7v8%4GOSBm(faJROReSFn{0v!;E08PC3ISxk zACX!e43+65$w0cZqV(IT`i^h&HFwv3qi`s7HFbB>?uDstWj;Me?Om_jhWz2NxhC9) zH9JSU-Mzx+7d)LWeQK&EbHdl6^Ugrq^6k578bM~O05kB2NN)tYM^oe`mP3%DO1zVx zm8%k@yPE`JguS)DxyF(RFMsFdfYmpMj0M!YW*X`2YVs-oHmPND^BR_BN^x;9d5wil z`A1%tST)HtiQ!W4!!G+WMTYB`X~o=5Q&VWPW66x&^wR2#4DzJE991K+ccLRxr;iJd zuWH!wv18s7o08^}jbdNtbAfwB#X$LYXSYiR3mQZ+&Qz%LMZD`NPk8_)%i$qKg8NderQvaK7tEOB0Xkkw@PSE+fy zH=1;O4<*48yi)p0yphZ>073Fi(jQdHxmT*#+g0U=MW(gACDiTwbzJ!fQfYpk(23kh z^SA3B-S;+6bH|t7FR_8y>Vp~5)8_@ATST({8328bEEp88F)GVlf5ituKn^S|u}`OW z#NuTuX)JVoV98)O!9LIFP}xAYl>&{BaE@STV0a{xXK>i?FmLa0#K3@;Y52?mO1hRQ zK7ra=NlKk@CBtQ=%0mf|4K7uuOb@;bk+=;p{``bW^vUm-Ln3ya{p`sDI{MZoF%mcR zj6Sjb(TK9t4WaeM<*A6aNF<=FlKzK!?i_mKm$7VlOYPpgpc5b-Z(I(hAdiCq%vJ zmx+$poJ=COsP2M`JJL%hI@^+4np@Ivu~z1AeJn3Gm%*z?-{+5pyiqxa^kHD7U+aS3 zWmyD^#ol zD-@|jS^7L=Y9^RMWLuUw({OiSz)Oct?_!IWEo1Vf^#g;xatS_k1!<*bV5#mR3M=Z) z@R;R?uY(Mqf?Ko7%2?J(n>YDwZo6n+JFfI&bqln`V&lr$#PoN=rz%}=TbSi}O&XQ= zKl?J`02Vu^u-4u6Eu^%f87(F&Qq**4&8aLV;%<`~7hz_U^p~WE^Prf-3}s6_=oo#A zFP&bB01mbKOGv7224qUb?6_Sm140F#CZd&3!xJc$t*}*8pX)tCyS@^rT|e=VP#S-ER3jZ9T4 zxcU|7lw=Tk3Qm}WXvGg@@cYB$1{14Ou*pd&Tj6|G3yzg;}SirZD-V@9PirWX{#q8ImSowY1@e0LE*hJfnSM&dc8QxRV zLJ-7BsKWe8P-rH=5&~0e6Mx>!9*r2t!5T-3uvU>!Y*Q&+yyqleq>_~H?h}9@DWH=^ z6;Liz(Ao}rd07+;A`-#Re3DvD?Sohq30B7LYEg}^oI^C_T?`;cTMmwJFkG}(0tG!! zo&KV|3|d^@0mEnv>GsSP?&cP{C+ZTDm*FOuKwKikaS-FCfIs0?J9KUk)H}s5qgU!E zq@_u9n2zPv_QT`1KQ=TkcjV-c|3yAdD>&M2wJ#lSh^dNJTyCm}enO4AC>QLomwA}U zNLfFY1E%I!0JS~SC@o?)?=6#9`x|F?QE9D>H89kFh4@rA-&T226F0E`=es1L$yp{5 zr->YrzU{csE8+pM=;+CjFB_cVI1AchW;_^2EuyE1~34=~9h`IHwy=-t>Gv9V{owS9YJ;P0s4W#7wAq ziBatMXh7H%FEO~kUenz^sy%D2_>EPJI#uQzM&Db==7$edx?L0 z{!}Z$nX4FLKR?}P$gqy?HocSDafgNaHEf)(*B?RKySasgviF#BvvL|YwVP1CYMVe; z67@&*D2E0aG5kRpPmNzeD`MZU6lm;SJPB&*!hqBR1{$=&Y*!12L(Wo2&X+aIMq$dn zvyx1flx`NJFo>XuWdS9&<)$#?oM~0C;ZN0uWdR9s9aFXTqjqWJgpun`S#8Q0_q zHI=%pj=f>1ua)wp0J%+FDWx*3IQRg}2CZvT_c!3ouqk3(D@>?&7WE&Hk*JuAz+%9R z3|1KHvv!#O=I6@GhqPD?ia!mi*i$sb86sjvK0d5F^!Fia>BIH!swngv!55vxHBqV4 z28}izNP2NkoM%&v&REppaxM>%Cf71DRzmXsVQ3`?(AeAok^~H4T&O4Hf?){{ z!@RJq%}lbOBZY~;sJSBOp=-_!hZ2^;bg|=ol)qij2)1a%wN@iN`QLx5|5EMSfttCZ z(Ep=EoX7j{=BD^EKAxd?cU{IRm2yE`EQ=Qekj+*HFj2T#qFcfrn-v$r*ZEK5vSvm@ zi<@{^r*1^j)!kuOPFlC3c&%&g5>;}bWg;`KYd)7mO0_=qObF&6w^D#GFEj8;47{^K z@ijYr{-(X-o!7Vpuv}pcS<=*u<>5Tt+m-Z6M1#@Ww+tKaE<1anb%4br?T6?(I zu#(=1J!f&7^XMe1HYwM1ZZ%iPgmU@7Y8hp_SK-JgbHdFgk;M`oMT!}Q7IYn(^lGy= zG101xYQ2}FJBj5gj zIfw1!uAb0tb@{O3D!|G0VTsjAno!3!YY*K}Xjd>xLt?PjDNA9RYA3t?tRoXV4w>oD zK-J5ThN||stA)f(@R;Jko5Ey|vq`ThIm7l^^Z9jin@^Y3BE5oda)a9#ek`{^lSI52 z8}S0~HrO~$+CrS9^H4Oz_n@@I8*RDy8TS0>#}0A8dd zLGqw1^=K^(%b-SJDNyO5cqonzn#4Zx&qCEUt`_Z69^1ScbvHMEhbpifFbSJ<@lAHT zBF1CyHVde|dNg9O9l;<@mWw%BEaBcIB63pglFM38Sz`vsOa#8(fgCPd+n_0My*-54 zK-wa9wIFUoSo|@{fSrPdNUnc_xQuf#AjqpGS5AzAFEf-fs$K^$iMAhkgfddLWg-Yj z9HwX7S#VgZPOzIYmG~hA+S?vi4R|WllWDpxgu|W(#aZG6ARM|3U<4?XgerY5(XEuS zWZ9z>QY=07CR<-5sA;5KvPg40Qu0`0GLVON8Aah?!QM<(MLCm3NUEfsS~V)yl+Vb< zlS&pSH6TNgCyM@~Nx4b7O!ftoq}k4}^@$|M*CVF}twsiR-giB_nBhVW-9S1`u5WZV z%jp>T{qlC!u{ZI7W57 ze-fgk%#C_7hNQ!|kx&3~u-6|mWEy;0d9>oQ(qrOE5t%8iWTa%zH~^Dm6KL?Hx)yVC zGlvk#z^c@hs`0q`DN+4W0B)a=If5rXQHtdiD+==E75C8sc5fre3&Xv(D5R*)^~hJS=HcK*i&LVF`$$-s~nK6g>>%4XB#^U<>1U$-+$Ir{ST8i$fPD9s-~ZX$y*r;fUoEr8c>PnId_3vh)(W)EWgiRp7NR63zFYaQSKQvxk|bl?vC}x zr~W>)Dk(m~{%y{BZV5Pjti`RUTpN%*p5t{&Dr5PdW5Cqjgg?CcUO*Q-^$9|^yeU}J z^ONVQ>H4F!r@fBP;W#@xzyJ1~P47R98aG|{p5D#Ci(D-U7iYYN9={!W8BH~-V(~l1 zi{HhFOqt+Vj9?vRvMVoLGNV(tEflNfsatfg%wDLH^hqezQuVcY?7RyVOsby)x0RUU z%GfAt3%?{=&n%Q?a0?a8fEnjK##CW!e@N=RtcBCx?BThZqP2}7~dUwbq74Re=GD!sY*rlfr zMD~Tm9wYPgX#zF=|B58lPzHMDM6Yk#39SWQkH5_m2k2JRb5lg*WA}|}Qay_JaOXNR znyvqq_KWKXKttJ`MQ$4({-It{y|&GObZxGu^}p}0^X0@nu3gc-WM?n5{rF~b)nL76 zsm5uEPhw|*gP#Xyob=r(;-SoEGTH`8p#mr$3WjwpJxDOh?D@%2QgscZ=9w8s&@+Ww z=FE6N6i_)Tx~BpFD?A9Z1HsZ>GmS}2@HMDp+m5=1Rb+*)@X(Ws`0d)$vw$g?{Azz^V@-@StR}=EX58#ul;tQ*3_p!ut_bOew(M?D_a$UNo`^S z?2(Ut`Ab_Z7DUe#EZ|~}-~Q?e?P`YFt}kWV+2nsiFI4$d=JbWdk%gM*lDjJw$i*_3f6;SJ>P>IP1S!r@EB2!FM2Gcz;P=*!) zZD(B|99h{LXtum{rK6c5(X2V=X_K1K2G~Pl3$@#>s2)hWuz1%1LOK(I4>ukZS9@SD zr)D4${fSu9rRr6opv_t(&E6sd>o_(`!uDzb$zq6}2~A;q1Xm{N(7EY+>U0RKW*OUE zWtirMS58OGpSLV1dG?rTV7$+x_aUa#JFAU2Zu?syMd8e)!&S99sK&mY0CK6SVPKaB zb`vTC7H2?*60D6z{(!0*Ec+y&I_~Z|>B&j@pA5==z4dFG>qL8+_+*)Z0%zXt(5mYu z9kMNVRV%8@!IyMo>1>M_55=iieYZ>+lf$S6XbXn^uvWHx+ z!_3A1b5}pTkN;-|Cf-||>hGm`&v8fY>E6s9{P6y=e(A>>w!a%eszJ7ar8)roz6MB5tliJg7wj+Gh zU^xHLHJPnHScTPg$4QF&g2T79a6v3>*1>*|TMBS};!*L2xDXb)++|bPB10-Dr=RlS z6+e|Vro%(5G#Q!(7f&t@p}HrXUOE4E_=#>Ro0|vXR+A3dcm82dH|h5MgCSKp27xTP zrwvky^3eEex^WDa=2)v!prB@lvR*F3sV{MzJPRsJKx(Gi&48V=R^)$)4w1~jDC|*> z_X+(Iyue}OPih11QCwR>y#pFX1rXjmFwoME`GVVO2uI; z#czkA%473ld1W?+_D&afK#7Dpp2hpuEkUPI1zNTIiiW45fJR83H3=9CEa4(C%}9&{j5#Zm97pk$$c4$wsh;D$6(1q6(Vj>z zu0aq;$t0CXSKDW`Q)}7MMJE-#{_fNkC`X-TDR)+`D@$Qwhk<3(di+}!88@5=rojPy zD3Q*1DO;NiGD<=l=4hxnQp};ydaeawRBk4z?o}qECK)YxM%BE|8f()j2YQ?ZnZq{t zw1lZ@CGzV6=3xqS^26b&7S}vDmSN4O0Q^(N;yO%$dAoq^8jv9lEj2Bij6|3?Cx-#I2+V*`b?rB| zk~>afF3qURs77T$7NKUW+u+2+91US1=3;e1eWBYTcgX6(;}pAClH0_|kK;gX02(4> z%R55&(ELN8SB><~4M-h^O7ZyYsx~OggVObagA=$Gu<@8zXV-1=(;Z*cwSmjPSV*Az z_7m~}42^p5*u|`Nh=@)2eo_c(L7_Af$kK$+xT|JHV!d5I9C~#kyoV0sL>A+lp2Jf+ zp8N)F9^u!1c99IH-Aon@BTI0!#frHX;p-B_gN%NF8!j=YjlT4=eB=hyZ!KM&Tk64%a8owKGUn% zQDH}V+I@$Q^Xtvs>Y+urr7d@#20lG6Kid!O---JAZmeh$9F>+(eG;y}^pH6f9H7He zfXfr=IG<6R5K|&3MKGdLodJu1~a8;ezxzZ+_LK>z0EQf_(891fN$$ffC zz>_jBWzZjxkOHR9~K#wIqKlV9=p5m>Rx@hW3Yg`A7pFSqF+;?pfhAGV@t%q?IMjlD; z*FdKraL8v(xGrPbOnG`JxdsgMCG&@Jzn~iaKZ!Ps(k16#bM! zF{euX>bFVEfsJ%$+<(ccvl(REDd2-+QbnWZS!UA#KrAKpokKX&ti|fP7Y^kWAWj}- zB6Kpq1R{$F+!b>X(>}8v9KiNX@T`VT9y7aXSF+5hAVd)gmz*`9vDjRpfFaB*Jo2XI zAYx-vO{Tpzo?Fi!SaDu#M(O5K#%T9r?*U##Wj`ZZr+zP z-87huvuaJ=Ij5h2;E7VqH|~=bXE3 zG(n3dL3wPglBU7O7|g4U%50GUlaY6^*{2A6f__T<#pMCiuRzbZovMk; zt=Ur?UR^o;u4+cP0qsJt%fzs!PH(Ue^clp3DCc&6o0K?&?X^M=C2sLRi80Sdu3LPAYgUM$E$ zmg@HY1+P3WLGV&KW)^K+(4H()$ylC5mleN&vpnKZ*pU}rO8Eg0Z$Uz-QOPs_-F9J5 zRTcY})+D%R3s;Kzu3a799BrGTM~C?ul?X(|l6>16x8o-1yO1uDVQ{)tjs}~@yhO;D zs=WrMUJdXDk5NibFv~qPXl5*Qpa#}CWi`3rQ*Sz(XI0mz^6ItRm7m0Je-NEZ9rQ_d zeWPk6uD$u0PXtt-sL8COqWn&sJW-E+#+J_1!<#2qUwg}kX~^vmO26{?3;`OS9$cSqjHp&$27_Wu1$n2a59=((@*)>6 zsX9ACl0}|H4QM>;EV_>s?<30Pa{D%t<#Hg`jPQ7i@-!#9zkSk$`qQ>$vEGlrX?cXcG6MTsSkp*k9xtuj{1 zql$M7>`5awf+E2gSNz5tBiJbs*Sb;4x>aK}1Wb)(e&s422k-PTsIb`deK8JcrGb>p zRA>@J4?wZuMDb{3SFCV!^x_N4>N8G1E|54Imk6DV@NY)@4Qa44eZe~s`Z7>kV0!3L zKS?s1ivoxynMe8~+`t37s_DFHBtT`EcnO{h_JXIS`2j-=4psDkQlSgyDG#WtX2YkA z$TJkws@>0^(NH$~`}}Q3xO5)QeV26fNndB${H6|LqX}^vYXW>GE9Q;1O*c?PueU7> zZTes?>IP(Sj*xH%GX&=N1`b1EP>MD&idxYe0|#1>?Qvg@L5E7e#iO|f`$665UL0%PibYa4$tu7F%_7z_dQQ!jYcvCmNK$*uL0mPprrmR4P2@Xm&bNzCjPcZ zZ&Mx5I&Dl->#*^Ub3Li|q%qF&FOYpu>vP$`(CrVGr}dK_0a+m9@p%+^Ko~c^y5_8J zcHRi8_mY-tP}6R(uF;Cjd=C6w3a!P3Q#_l5I0JE0?k1B?ofJ!RFdeuW1^>EtNeUfl z8OmGZYLLW7>r>%bGk!?ra!DEwtz3-zWHQ^9yo6BxKi(?kS_}p zxQILlG|TChXzMk%YWH?J=!QMdf|~>gix6YyTjF z=9NPE;sU0vOu}(Wm7u2(NV25&)|DIMs}65T>~|xyWX6PIVBjs-%BdrMsCH`5&osSf z9BL!lvIRhe_OxJP9_=zsosi0N zHS`}szd%omJfR%vNkU}SE1TPyd=?@VzmVilFDGmHo?Qv&t!*(xV5s+vjH3;QxVX<) zfK8qAd4oZdBeLy#7DeCy^)3!dYqCDZb=OlsG>%r!7huVYCH>;FR>|{*BBq~23hiYLF78F$|6IRbJ;7m5)H{I}H40H%?woM3| z-T0b*XBvPjBO6ZN3X#}6EGqVa!U%G}GI6%tYSLVjkG=)7mJm+%&AV~lSGxWtdt@W< z4-I#4Hvb1O(T2AG8z~^LY4`s&12+8fu+91aK&FXb@)PgdJg-gO2zjis@>A8@JQ^cl z-I1{9V8^zqOp=mG!|Nuy#>q$s?|gOdRbOGr5h`H-7)iSUZ8+w zgd15UOjaI7ud?c^+PVR~f8Da500ZBmk!{P-3MI*-^_XpM9(kscUkS934Z6yi4VdrH zSctajjPtGdgmuF|d& z-dWE)8~m{`wU@5@Q1|(_gODzAJhy!x#TojKTMWps~3p{z_5M%4h*X7b8Y60wh*9ydcfWat1-7g7cgL} z@Me(>#^`Gke?BVCj!%10UjdJiJKFLUTl^J_i-X_4fG>jEu?_C9r*?u^TDMP#LKAxX z8dit{%Der8zZ&AYsd+qKVd0qXh5aykH?V69K;Ou=tJng;FYu&*B$PTJ$Rz-3#rXi2c#K9ch~_wKazz^z&@Dz3%f!4QAH9h5<+Ezp1U$olKQxBEkY!vSy%$=n zSd3;wW%0A6jfMA8(4*#WszD|b$Aoi$l`$pt15t?+=Xsn54V#2H;0&SEhK>hxgH}2% zG|jbLPAO}0jl*+>U(rK(do!EzZhWBhZN7L>K+v!^qU@lni^-x{o;qu|5C|xVFe)xU zF5iLOhIwIHTpX3GS!mS12r<|E)enD&Is$tH^`ixUAu(iy3AwRgp}wW0)Ul!ll!jJP z6yph;PP7sXMGIKHt1t_VP{TG3d0?lU=Qt5sE&U51QZ$ysnlWtiW(2t5J{kAGLQpDY9{~naOc4j9D)~bK71je_(8+)hZP`D5F9*$U_>E8 zg&_$?79kP^Rg~zE@Yy{8PfRFj%wU1(&>x7%95QQKC0)!jx&NL?*2% zGZd>uOR>e|Y(&hltlNi~w7NKF4Np&=w^%GSaZRN~EH_ozSgYOSm2K4`YqeT!R=d?< zby{6kx7B0yS}JR-mY_9?rqJP2<12IKI9pxVSrc;qs1~}o20kYC^$$V;dNuwMbZfji=+wA= zXxBJaXw}$x(9~EA1~u9O!*M}oG*H8xL7a4s;@3Z!se8JPr(n_?Uln1xWikY_EmDV8 Hjj9y@x#nMN diff --git a/app/public/index.php b/app/public/index.php deleted file mode 100644 index 4584cbcd6..000000000 --- a/app/public/index.php +++ /dev/null @@ -1,60 +0,0 @@ - - */ - -define('LARAVEL_START', microtime(true)); - -/* -|-------------------------------------------------------------------------- -| Register The Auto Loader -|-------------------------------------------------------------------------- -| -| Composer provides a convenient, automatically generated class loader for -| our application. We just need to utilize it! We'll simply require it -| into the script here so that we don't have to worry about manual -| loading any of our classes later on. It feels great to relax. -| -*/ - -require __DIR__.'/../vendor/autoload.php'; - -/* -|-------------------------------------------------------------------------- -| Turn On The Lights -|-------------------------------------------------------------------------- -| -| We need to illuminate PHP development, so let us turn on the lights. -| This bootstraps the framework and gets it ready for use, then it -| will load up this application so that we can run it and send -| the responses back to the browser and delight our users. -| -*/ - -$app = require_once __DIR__.'/../bootstrap/app.php'; - -/* -|-------------------------------------------------------------------------- -| Run The Application -|-------------------------------------------------------------------------- -| -| Once we have the application, we can handle the incoming request -| through the kernel, and send the associated response back to -| the client's browser allowing them to enjoy the creative -| and wonderful application we have prepared for them. -| -*/ - -$kernel = $app->make(Illuminate\Contracts\Http\Kernel::class); - -$response = $kernel->handle( - $request = Illuminate\Http\Request::capture() -); - -$response->send(); - -$kernel->terminate($request, $response); diff --git a/app/public/robots.txt b/app/public/robots.txt deleted file mode 100644 index eb0536286..000000000 --- a/app/public/robots.txt +++ /dev/null @@ -1,2 +0,0 @@ -User-agent: * -Disallow: diff --git a/app/resources/css/app.css b/app/resources/css/app.css deleted file mode 100644 index c59886b2f..000000000 --- a/app/resources/css/app.css +++ /dev/null @@ -1,43 +0,0 @@ -@import './variables.css'; - -@import './global/fonts.css'; -@import './global/base.css'; -@import './global/typography.css'; -@import './global/utils.css'; -@import './global/alpine.css'; - -@import './components/stack.css'; -@import './components/wrapper.css'; -@import './components/base-layout.css'; - -@import './components/header.css'; -@import './components/footer.css'; -@import './components/button.css'; -@import './components/input.css'; -@import './components/avatar.css'; -@import './components/thumb.css'; -@import './components/cc-logo.css'; -@import './components/callout.css'; -@import './components/markdown.css'; -@import './components/empty-state.css'; -@import './components/loading-spinner.css'; -@import './components/position-select.css'; - -@import './components/hero.css'; -@import './components/logos.css'; -@import './components/share-button.css'; -@import './components/action-panel.css'; -@import './components/list.css'; -@import './components/list-item.css'; -@import './components/tabs.css'; -@import './components/tab-button.css'; -@import './components/share-picture.css'; -@import './components/vote-result-chart.css'; -@import './components/vote-card.css'; -@import './components/voting-list-header.css'; -@import './components/member-header.css'; -@import './components/search-results-page.css'; -@import './components/search-form.css'; -@import './components/home.css'; -@import './components/error-page.css'; -@import './components/session-display.css'; diff --git a/app/resources/css/components/action-panel.css b/app/resources/css/components/action-panel.css deleted file mode 100644 index 22cf3b7fd..000000000 --- a/app/resources/css/components/action-panel.css +++ /dev/null @@ -1,26 +0,0 @@ -.action-panel { - display: flex; - padding: var(--space); - flex-direction: column; - align-items: start; - - border-radius: 4px; - background-color: var(--gray-lightest); -} - -.action-panel__action { - flex-shrink: 0; - margin-top: var(--space-sm); -} - -@media screen and (min-width: 540px) { - .action-panel { - flex-direction: row; - align-items: center; - } - - .action-panel__action { - margin-top: 0; - margin-left: var(--space-sm); - } -} diff --git a/app/resources/css/components/avatar.css b/app/resources/css/components/avatar.css deleted file mode 100644 index b28981210..000000000 --- a/app/resources/css/components/avatar.css +++ /dev/null @@ -1,38 +0,0 @@ -.avatar { - position: relative; - width: 3.25rem; - height: 3.25rem; - overflow: hidden; - box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25); - background: rgb(255, 255, 255); -} - -.avatar, -.avatar::after { - border-radius: 50%; -} - -.avatar--squared, -.avatar--squared::after { - border-radius: 3px; -} - -.avatar::after { - content: ''; - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - border: 1px solid rgba(0, 0, 0, 0.2); -} - -.avatar > img { - width: 100%; - height: 100%; - object-fit: cover; -} - -.avatar--squared > img { - object-fit: contain; -} diff --git a/app/resources/css/components/base-layout.css b/app/resources/css/components/base-layout.css deleted file mode 100644 index dd9c0ebcd..000000000 --- a/app/resources/css/components/base-layout.css +++ /dev/null @@ -1,30 +0,0 @@ -.base-layout { - display: flex; - flex-direction: column; - min-height: 100vh; -} - -.base-layout--dark { - background-color: var(--blue-darkest); - color: var(--blue-lightest); - - background-image: linear-gradient( - to bottom, - transparent, - var(--blue-darkest) - ), - url(/assets/home.jpg); - background-size: cover; - background-position: top center; -} - -.base-layout__main { - display: flex; - flex-direction: column; - margin-bottom: var(--space-lg); - flex-grow: 1; -} - -.base-layout__footer { - margin-top: auto; -} diff --git a/app/resources/css/components/button.css b/app/resources/css/components/button.css deleted file mode 100644 index 85a017c93..000000000 --- a/app/resources/css/components/button.css +++ /dev/null @@ -1,51 +0,0 @@ -.button { - display: inline-block; - padding: var(--space-xxs) var(--space-xs); - - border: 2px solid var(--gray-dark); - border-radius: var(--border-radius); - background-color: white; - - font-weight: 600; - color: var(--gray-dark); - text-decoration: none; - text-align: center; - - transition: 0.1s background-color ease-out, 0.1s color ease-out; -} - -.button:hover, -.button:focus, -.button[disabled] { - background-color: var(--gray-dark); - color: white; -} - -.button--fill { - background-color: var(--gray-dark); - color: #fff; - border: none; -} - -.button--fill:hover, -.button--fill:focus { - background-color: var(--gray-light); - color: var(--color-text); -} - -.button[disabled] { - opacity: 0.5; -} - -.button:active { - transform: scale(0.975); -} - -.button--lg { - padding: var(--space-xs) var(--space-sm); -} - -.button--block { - display: block; - width: 100%; -} diff --git a/app/resources/css/components/callout.css b/app/resources/css/components/callout.css deleted file mode 100644 index c33c3b707..000000000 --- a/app/resources/css/components/callout.css +++ /dev/null @@ -1,24 +0,0 @@ -.callout { - --text-color: var(--blue-darker); - --background-color: var(--blue-lightest); - --border-color: var(--blue-darker); - - padding: var(--space-xs); - background-color: var(--background-color); - color: var(--text-color); - border-left: 3px solid var(--border-color); -} - -.callout a { - font-weight: 600; -} - -.callout__heading { - color: var(--text-color); -} - -.callout--warning { - --text-color: var(--orange-darker); - --background-color: var(--orange-lightest); - --border-color: var(--orange); -} diff --git a/app/resources/css/components/empty-state.css b/app/resources/css/components/empty-state.css deleted file mode 100644 index 71ef75e3f..000000000 --- a/app/resources/css/components/empty-state.css +++ /dev/null @@ -1,6 +0,0 @@ -.empty-state { - padding: var(--space); - background-color: var(--gray-lightest); - text-align: center; - border-radius: 4px; -} diff --git a/app/resources/css/components/error-page.css b/app/resources/css/components/error-page.css deleted file mode 100644 index 155da4b3b..000000000 --- a/app/resources/css/components/error-page.css +++ /dev/null @@ -1,34 +0,0 @@ -.error-page { - display: flex; - text-align: center; - flex-direction: column; - justify-content: center; - min-height: 100vh; - padding: var(--space-lg) var(--space-sm); - - background-color: var(--blue-darkest); - color: var(--blue-lightest); -} - -.error-page__wrapper { - max-width: 36rem; - margin-left: auto; - margin-right: auto; -} - -.error-page__title { - margin-top: var(--space-lg); - margin-bottom: var(--space-xs); - color: #fff; -} - -.error-page__message { - font-size: var(--text-lg); -} - -.error-page a { - text-decoration: none; - font-weight: 600; - color: #fff; - border-bottom: 1px solid rgba(255, 255, 255, 0.25); -} diff --git a/app/resources/css/components/footer.css b/app/resources/css/components/footer.css deleted file mode 100644 index 28a9a8c1a..000000000 --- a/app/resources/css/components/footer.css +++ /dev/null @@ -1,27 +0,0 @@ -.footer { - text-align: center; - margin-bottom: env(safe-area-inset-bottom); - padding: var(--space-sm); - border-top: var(--gray-light) 1px solid; - font-size: var(--text-sm); -} - -.footer--dark { - border-top: none; -} - -.footer--dark a { - text-decoration: none; -} - -.footer ul { - list-style: none; -} - -.footer li { - display: inline-block; -} - -.footer li + li { - margin-left: var(--space-sm); -} diff --git a/app/resources/css/components/header.css b/app/resources/css/components/header.css deleted file mode 100644 index 5587ad692..000000000 --- a/app/resources/css/components/header.css +++ /dev/null @@ -1,51 +0,0 @@ -.header { - margin-top: env(safe-area-inset-top); - padding: var(--space-sm); - background-color: var(--blue-darkest); - color: #fff; -} - -.header--dark { - background-color: transparent; -} - -.header__wrapper { - display: flex; - justify-content: space-between; -} - -.header__logotype { - font-weight: 600; - text-decoration: none; -} - -.header a { - text-decoration: none; -} - -.header a:hover { - text-decoration: underline; -} - -.header--dark .header__nav a { - font-weight: 600; - opacity: 0.65; -} - -.header--dark .header__nav a:hover { - opacity: 1; -} - -.header__nav ul { - margin-right: calc(-1 * var(--space-xs)); -} - -.header__nav li { - display: inline-block; - list-style: none; -} - -.header__nav a { - display: inline-block; - padding: 0 var(--space-xs); -} diff --git a/app/resources/css/components/hero.css b/app/resources/css/components/hero.css deleted file mode 100644 index 7ada013bf..000000000 --- a/app/resources/css/components/hero.css +++ /dev/null @@ -1,23 +0,0 @@ -.hero { - background-color: var(--blue-darker); - color: var(--blue-lightest); -} - -.hero__text { - font-size: var(--text-lg); - padding-top: var(--space-lg); - padding-bottom: var(--space); -} - -.hero__title { - color: #fff; - margin-bottom: var(--space-xs); -} - -.hero__action { - background-image: linear-gradient( - to bottom, - var(--blue-darker) 60%, - #fff 60% - ); -} diff --git a/app/resources/css/components/home.css b/app/resources/css/components/home.css deleted file mode 100644 index 2077a7b55..000000000 --- a/app/resources/css/components/home.css +++ /dev/null @@ -1,56 +0,0 @@ -.home { - display: flex; - flex-direction: column; - justify-content: space-around; - padding: var(--space-lg) var(--space-sm); - flex-grow: 1; -} - -.home__wrapper { - height: 100%; - max-width: 36rem; - margin: 0 auto; -} - -.home__title { - margin-bottom: var(--space-lg); - font-size: var(--text-xxl); - color: #fff; -} - -.home__hint { - margin-top: var(--space-xs); - line-height: 1.75; -} - -.home__hint a { - text-decoration: none; - color: #fff; - font-weight: 600; - border-bottom: 1px solid rgba(255, 255, 255, 0.2); -} - -.home__session-display { - margin-top: var(--space-lg); -} - -.home__session-display strong { - color: #fff; -} - -@media screen and (min-width: 640px) { - .home__wrapper { - padding-top: var(--space-lg); - text-align: center; - } - - .home__hint { - margin-top: var(--space-sm); - } -} - -@media screen and (min-width: 1024px) { - .home__title { - font-size: calc(1.15 * var(--text-xxl)); - } -} diff --git a/app/resources/css/components/input.css b/app/resources/css/components/input.css deleted file mode 100644 index 3deb851ab..000000000 --- a/app/resources/css/components/input.css +++ /dev/null @@ -1,26 +0,0 @@ -.input { - border: 1px solid var(--gray-light); - border-radius: 4px; - display: block; - width: 100%; - padding: var(--space-xxs) var(--space-xs); - background-color: #fff; -} - -.input--lg { - padding: var(--space-xs) var(--space-sm); -} - -.input--elevated { - border-color: var(--blue-dark); - filter: drop-shadow(0 5px 15px rgba(0, 0, 0, 0.15)) - drop-shadow(0 2px 3px rgba(0, 0, 0, 0.15)); -} - -input[type='search'] { - -webkit-appearance: none; -} - -.input:focus { - border-color: var(--blue); -} diff --git a/app/resources/css/components/list-item.css b/app/resources/css/components/list-item.css deleted file mode 100644 index 6234823b1..000000000 --- a/app/resources/css/components/list-item.css +++ /dev/null @@ -1,26 +0,0 @@ -.list-item { - display: flex; - width: 100%; - align-items: center; -} - -.list-item > * + * { - margin-left: var(--space-xs); -} - -.list-item__avatar, -.list-item__thumb { - flex-shrink: 0; -} - -.list-item__text { - flex-grow: 1; -} - -.list-item__subtitle { - color: var(--color-text-light); -} - -.list-item__chart { - margin: var(--space-xxs) 0; -} diff --git a/app/resources/css/components/list.css b/app/resources/css/components/list.css deleted file mode 100644 index 5684f14da..000000000 --- a/app/resources/css/components/list.css +++ /dev/null @@ -1,61 +0,0 @@ -.list > ul { - position: relative; - display: flex; - width: 100%; - flex-direction: column; - gap: var(--space-sm); -} - -.list--truncated > ul { - max-height: 75vh; - overflow: hidden; -} - -.list--truncated > ul::after { - content: ''; - - position: absolute; - bottom: 0; - left: 0; - - display: block; - width: 100%; - height: 150px; - - background-image: linear-gradient( - to bottom, - rgba(255, 255, 255, 0), - rgba(255, 255, 255, 1) - ); -} - -.list__toggle { - display: block; - margin: auto; -} - -.list:not(.list--truncated) .list__toggle { - margin-top: var(--space); -} - -.list:not(.list--truncated) .list__toggle { - position: sticky; - bottom: var(--space-sm); -} - -.list__action-bar { - display: flex; - width: 100%; - gap: var(--space-xxs); - margin-bottom: var(--space-sm); -} - -.list__search { - flex-grow: 1; - flex-shrink: 1; -} - -.list__action-bar > *:not(.list__search) { - flex-grow: 0; - flex-shrink: 0; -} diff --git a/app/resources/css/components/loading-spinner.css b/app/resources/css/components/loading-spinner.css deleted file mode 100644 index 2c81369b2..000000000 --- a/app/resources/css/components/loading-spinner.css +++ /dev/null @@ -1,18 +0,0 @@ -@keyframes loading-spinner { - from { - transform: rotate(0deg); - } - to { - transform: rotate(360deg); - } -} - -.loading-spinner { - display: inline-block; - width: 50px; - height: 50px; - border-radius: 50%; - border: 3px solid var(--gray-dark); - border-right-color: transparent; - animation: loading-spinner 1s linear infinite; -} diff --git a/app/resources/css/components/logos.css b/app/resources/css/components/logos.css deleted file mode 100644 index ce6aab65c..000000000 --- a/app/resources/css/components/logos.css +++ /dev/null @@ -1,10 +0,0 @@ -.logos { - display: flex; - width: 100%; - justify-content: center; -} - -.logos > img { - max-width: 50%; - max-height: 150px; -} diff --git a/app/resources/css/components/markdown.css b/app/resources/css/components/markdown.css deleted file mode 100644 index 49c59bc53..000000000 --- a/app/resources/css/components/markdown.css +++ /dev/null @@ -1,21 +0,0 @@ -.markdown > * + * { - margin-top: var(--space-xs); -} - -.markdown * + h1, -.markdown * + h2, -.markdown * + h3 { - margin-top: var(--space); -} - -.markdown h3 + * { - margin-top: 0; -} - -.markdown ul { - padding-left: var(--space); -} - -.markdown li + li { - margin-top: var(--space-xxs); -} diff --git a/app/resources/css/components/member-header.css b/app/resources/css/components/member-header.css deleted file mode 100644 index 3f4d14f17..000000000 --- a/app/resources/css/components/member-header.css +++ /dev/null @@ -1,66 +0,0 @@ -.member-header { - padding: var(--space-sm); - background-color: var(--blue-darker); - color: var(--blue-lightest); -} - -.member-header__wrapper { - display: flex; -} - -.member-header__photo { - width: 33%; - max-width: 175px; - flex-grow: 0; - flex-shrink: 0; - align-self: center; - aspect-ratio: 4/5; - - padding: 4px; - background: #fff; - box-shadow: 0 5px 15px rgba(0, 0, 0, 0.15), 0 2px 3px rgba(0, 0, 0, 0.15); -} - -.member-header__text { - display: flex; - flex-direction: column; - justify-content: center; - margin-left: var(--space); -} - -.member-header__title { - color: #fff; - margin-bottom: var(--space-xxs); -} - -.member-header__social { - list-style: none; - margin-top: var(--space-sm); -} - -.member-header__social li { - display: inline-block; -} - -.member-header__social li + li { - margin-left: var(--space-xs); -} - -@media screen and (min-width: 720px) { - .member-header { - padding-bottom: 0; - background-image: linear-gradient( - to top, - #fff var(--space-lg), - transparent var(--space-lg) - ); - } - - .member-header__text { - margin-bottom: var(--space-lg); - } - - .member-header__subtitle { - font-size: var(--text-lg); - } -} diff --git a/app/resources/css/components/position-select.css b/app/resources/css/components/position-select.css deleted file mode 100644 index c153d64f9..000000000 --- a/app/resources/css/components/position-select.css +++ /dev/null @@ -1,71 +0,0 @@ -.position-select { - position: relative; - display: inline-block; -} - -.position-select__button, -.position-select__button:focus, -.position-select__button:active { - padding: var(--space-xxs) var(--space-xs); - background-color: var(--gray-lightest); - border-width: 1px; - border-color: transparent; - color: var(--color-text-light); - cursor: default; -} - -.position-select__button:hover { - background-color: var(--gray-light); - color: var(--color-text); -} - -.position-select__button:focus { - border: 1px solid var(--blue); -} - -.position-select__menu { - position: absolute; - right: 0; - top: calc(100% + var(--space-xxs)); - z-index: 9; - overflow: hidden; - width: 250px; - background: #fff; - border: 1px solid var(--gray-light); - border-radius: var(--border-radius); - box-shadow: var(--shadow-elevated); -} - -.position-select__item { - display: block; - padding: var(--space-xxs) var(--space-xs); -} - -.position-select__item:hover, -.position-select__item:focus { - background-color: var(--gray-lightest); - box-shadow: none; -} - -.position-select__label { - position: relative; - padding-left: calc(1.1 * var(--space)); - text-transform: uppercase; - letter-spacing: 0.075em; - font-weight: 600; - font-size: var(--text-sm); - vertical-align: 5%; - color: var(--color-text-light); -} - -.position-select__label .thumb { - position: absolute; - left: 0; - top: 50%; - transform: translateY(-45%) scale(0.85); - transform-origin: center left; -} - -.position-select__reset { - border-bottom: 1px solid var(--gray-lightest); -} diff --git a/app/resources/css/components/search-form.css b/app/resources/css/components/search-form.css deleted file mode 100644 index f4e2feb00..000000000 --- a/app/resources/css/components/search-form.css +++ /dev/null @@ -1,17 +0,0 @@ -.search-form { - display: flex; -} - -.search-form__input { - border-top-right-radius: 0; - border-bottom-right-radius: 0; - border: 0; -} - -.search-form__submit { - flex-grow: 0; - flex-shrink: 0; - border-top-left-radius: 0; - border-bottom-left-radius: 0; - border-left: 1px solid var(--blue-dark); -} diff --git a/app/resources/css/components/search-results-page.css b/app/resources/css/components/search-results-page.css deleted file mode 100644 index c8d22eb00..000000000 --- a/app/resources/css/components/search-results-page.css +++ /dev/null @@ -1,5 +0,0 @@ -.search-results-page em { - border-radius: 2px; - font-style: normal; - background-color: var(--orange-lightest); -} diff --git a/app/resources/css/components/session-display.css b/app/resources/css/components/session-display.css deleted file mode 100644 index 8b7c46a13..000000000 --- a/app/resources/css/components/session-display.css +++ /dev/null @@ -1,7 +0,0 @@ -.session-display { - padding: var(--space-sm); - background-color: rgba(0, 0, 0, 0.25); - border-radius: 4px; - border: 1px solid rgba(255, 255, 255, 0.1); - box-shadow: 0 2px 3px rgba(0, 0, 0, 0.2); -} diff --git a/app/resources/css/components/stack.css b/app/resources/css/components/stack.css deleted file mode 100644 index 6da4570d0..000000000 --- a/app/resources/css/components/stack.css +++ /dev/null @@ -1,26 +0,0 @@ -.stack { - --gap: var(--space); - - display: grid; - gap: var(--gap); -} - -.stack--sm { - --gap: var(--space-sm); -} - -.stack--xs { - --gap: var(--space-xs); -} - -.stack--xxs { - --gap: var(--space-xxs); -} - -.stack--lg { - --gap: var(--space-lg); -} - -.stack--xl { - --gap: var(--space-xl); -} diff --git a/app/resources/css/components/tab-button.css b/app/resources/css/components/tab-button.css deleted file mode 100644 index ced1fd76f..000000000 --- a/app/resources/css/components/tab-button.css +++ /dev/null @@ -1,21 +0,0 @@ -.tab-button[aria-selected='true'], -.tab-button:hover { - color: var(--color-text); -} - -.tab-button:hover { - border-color: var(--gray); -} - -.tab-button[aria-selected='true'] { - border-color: var(--gray-dark); -} - -.tab-button { - font-weight: 600; - color: var(--color-text-light); - margin-bottom: -1px; - padding-bottom: var(--space-xxs); - border-bottom: 2px solid transparent; - transition: 0.1s border-color ease-out; -} diff --git a/app/resources/css/components/tabs.css b/app/resources/css/components/tabs.css deleted file mode 100644 index 74a8c52b9..000000000 --- a/app/resources/css/components/tabs.css +++ /dev/null @@ -1,27 +0,0 @@ -.tabs { - display: block; -} - -.tabs__tablist { - position: sticky; - top: 0px; - z-index: 1; - - display: flex; - margin-bottom: var(--space-sm); - - background-color: white; - border-bottom: 1px solid var(--gray-light); - - /* Prevent overflowing contents (e.g. shadows) from being visible */ - box-shadow: calc(-1 * var(--space)) 0 0 white; - - /* We use padding-top to add space at the top when stuck and use - * margin-top to normalize that effect when unstuck. */ - padding-top: var(--space); - margin-top: calc(-1 * var(--space)); -} - -.tabs__tablist > * + * { - margin-left: var(--space-sm); -} diff --git a/app/resources/css/components/thumb.css b/app/resources/css/components/thumb.css deleted file mode 100644 index b740b67f3..000000000 --- a/app/resources/css/components/thumb.css +++ /dev/null @@ -1,66 +0,0 @@ -.thumb { - display: inline-block; - width: 1em; - height: 1em; -} - -.thumb > svg { - fill: currentColor; - width: 100%; - height: 100%; - vertical-align: -10%; -} - -.thumb--against > svg, -.thumb--rejected > svg { - transform: scale(1, -1); -} - -.thumb--neutral > svg, -.thumb--abstention > svg { - transform: rotate(90deg) scale(-1, 1) translateY(-7.5%); -} - -.thumb--circle { - width: 1.5em; - height: 1.5em; - padding: 0.25em; - vertical-align: middle; - - border-radius: 50%; - background-color: currentColor; -} - -.thumb--circle.thumb--for, -.thumb--circle.thumb--adopted { - background-color: var(--green); -} - -.thumb--circle.thumb--against, -.thumb--circle.thumb--rejected { - background-color: var(--red); -} - -.thumb--circle.thumb--abstention { - background-color: var(--blue); -} - -.thumb--circle.thumb--novote { - background-color: transparent; - border: 4px solid var(--gray); -} - -.thumb--novote > svg { - display: none; -} - -.thumb--circle > svg { - color: #fff; - vertical-align: 0; -} - -.thumb--circle.thumb--for > svg, -.thumb--circle.thumb--adopted > svg, -.thumb--circle.thumb--abstention > svg { - vertical-align: 20%; -} diff --git a/app/resources/css/components/vote-card.css b/app/resources/css/components/vote-card.css deleted file mode 100644 index cf7d13bb3..000000000 --- a/app/resources/css/components/vote-card.css +++ /dev/null @@ -1,24 +0,0 @@ -.vote-card { - border: 1px solid var(--gray-lightest); - border-radius: 4px; - box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1); - - transition: 0.2s all ease-out; -} - -.vote-card > a { - display: flex; - align-items: center; - padding: var(--space-xs) var(--space-sm); - text-decoration: none; -} - -.vote-card__thumb { - flex-shrink: 0; - margin-right: var(--space-sm); -} - -.vote-card > a:hover { - box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1), 0 2px 10px rgba(0, 0, 0, 0.1); - border-color: var(--gray-light); -} diff --git a/app/resources/css/components/vote-result-chart.css b/app/resources/css/components/vote-result-chart.css deleted file mode 100644 index 316a5ba2e..000000000 --- a/app/resources/css/components/vote-result-chart.css +++ /dev/null @@ -1,57 +0,0 @@ -.vote-result-chart { - display: flex; - border-radius: 2px; - overflow: hidden; -} - -.vote-result-chart > * + * { - margin-left: 1px; -} - -.vote-result-chart__bar { - width: calc(var(--ratio) * 100%); - padding: var(--space-xs) 0; - - color: white; - text-align: center; - font-weight: 600; - font-size: var(--text-sm); -} - -.vote-result-chart--slim .vote-result-chart__bar { - padding: 3px; -} - -.vote-result-chart--slim .vote-result-chart__thumb, -.vote-result-chart--slim .vote-result-chart__percentage { - display: none; -} - -.vote-result-chart__bar--for { - background-color: var(--green); - background-image: var(--green-pattern); -} - -.vote-result-chart__bar--against { - background-color: var(--red); - background-image: var(--red-pattern); -} - -.vote-result-chart__bar--abstention { - background-color: var(--blue); -} - -.vote-result-chart__bar--small .vote-result-chart__thumb, -.vote-result-chart__bar--small .vote-result-chart__percentage { - display: none; -} - -.vote-result-chart__bar--medium .vote-result-chart__percentage { - display: none; -} - -@media screen and (max-width: 720px) { - .vote-result-chart__bar--medium .vote-result-chart__thumb { - display: none; - } -} diff --git a/app/resources/css/components/voting-list-header.css b/app/resources/css/components/voting-list-header.css deleted file mode 100644 index 438a8bd53..000000000 --- a/app/resources/css/components/voting-list-header.css +++ /dev/null @@ -1,8 +0,0 @@ -.voting-list-header { - padding: var(--space-lg) var(--space-sm); - background-color: var(--gray-lightest); -} - -.voting-list-header__share { - margin-top: var(--space); -} diff --git a/app/resources/css/components/wrapper.css b/app/resources/css/components/wrapper.css deleted file mode 100644 index 5ef30f4f0..000000000 --- a/app/resources/css/components/wrapper.css +++ /dev/null @@ -1,6 +0,0 @@ -.wrapper { - width: 100%; - max-width: var(--max-width); - margin-left: auto; - margin-right: auto; -} diff --git a/app/resources/css/global/alpine.css b/app/resources/css/global/alpine.css deleted file mode 100644 index 99583511a..000000000 --- a/app/resources/css/global/alpine.css +++ /dev/null @@ -1,3 +0,0 @@ -[x-cloak] { - display: none !important; -} diff --git a/app/resources/css/global/base.css b/app/resources/css/global/base.css deleted file mode 100644 index 15539b10e..000000000 --- a/app/resources/css/global/base.css +++ /dev/null @@ -1,46 +0,0 @@ -* { - margin: 0; - padding: 0; - box-sizing: border-box; -} - -html, -body { - min-height: 100vh; -} - -body { - display: flex; - flex-direction: column; - - font-size: var(--text-size); - line-height: var(--line-height); - font-family: var(--font-family); - color: var(--color-text); - - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -a { - color: inherit; -} - -input, -button, -textarea { - border: none; - background: none; - box-shadow: none; - font-family: inherit; - font-size: inherit; -} - -noscript { - display: block; -} - -:focus { - outline: none; - box-shadow: 0 0 0 3px var(--color-focus-outline); -} diff --git a/app/resources/css/global/fonts.css b/app/resources/css/global/fonts.css deleted file mode 100644 index f19fde1dd..000000000 --- a/app/resources/css/global/fonts.css +++ /dev/null @@ -1,26 +0,0 @@ -@font-face { - font-family: 'IBM Plex Sans Condensed'; - src: url('/fonts/ibm-plex-sans-condensed-medium.woff2') format('woff2'), - url('/fonts/ibm-plex-sans-condensed-medium.woff') format('woff'); - font-weight: 500; - font-style: normal; - font-display: swap; -} - -@font-face { - font-family: 'IBM Plex Sans'; - src: url('/fonts/ibm-plex-sans-semibold.woff2') format('woff2'), - url('/fonts/ibm-plex-sans-semibold.woff') format('woff'); - font-weight: 600; - font-style: normal; - font-display: swap; -} - -@font-face { - font-family: 'IBM Plex Sans'; - src: url('/fonts/ibm-plex-sans-regular.woff2') format('woff2'), - url('/fonts/ibm-plex-sans-regular.woff') format('woff'); - font-weight: 400; - font-style: normal; - font-display: swap; -} diff --git a/app/resources/css/global/typography.css b/app/resources/css/global/typography.css deleted file mode 100644 index 8a6de83d4..000000000 --- a/app/resources/css/global/typography.css +++ /dev/null @@ -1,58 +0,0 @@ -.alpha, -.beta, -.gamma, -.delta { - font-weight: 600; - line-height: 1.2; - color: var(--blue-darker); -} - -.alpha, -.markdown h1 { - font-family: var(--font-family-heading); - font-size: var(--text-xxl); -} - -.beta, -.markdown h2 { - font-size: var(--text-xl); -} - -.gamma, -.markdown h3 { - font-size: var(--text-size); -} - -.delta { - font-size: var(--text-size); - text-transform: uppercase; - letter-spacing: 0.075em; -} - -strong { - font-weight: 600; -} - -.text--sm { - font-size: var(--text-sm); -} - -.text--xs { - font-size: var(--text-xs); -} - -.text--green { - color: var(--green-dark); -} - -.text--red { - color: var(--red-dark); -} - -.text--blue { - color: var(--blue-dark); -} - -.text--center { - text-align: center; -} diff --git a/app/resources/css/global/utils.css b/app/resources/css/global/utils.css deleted file mode 100644 index 6b1a7a65f..000000000 --- a/app/resources/css/global/utils.css +++ /dev/null @@ -1,18 +0,0 @@ -.visually-hidden { - clip: rect(0 0 0 0); - clip-path: inset(50%); - width: 1px; - height: 1px; - overflow: hidden; - position: absolute; - white-space: nowrap; -} - -.padding--h { - padding-left: var(--space-sm); - padding-right: var(--space-sm); -} - -.padding--v { - padding-top: var(--space); -} diff --git a/app/resources/css/variables.css b/app/resources/css/variables.css deleted file mode 100644 index ef3e5693a..000000000 --- a/app/resources/css/variables.css +++ /dev/null @@ -1,119 +0,0 @@ -:root { - --text-size: 1.1rem; - --line-height: 1.4; - - --text-scale-ratio: 1.25; - --text-xs: calc( - 1 / var(--text-scale-ratio) / var(--text-scale-ratio) * var(--text-size) - ); - --text-sm: calc(1 / var(--text-scale-ratio) * var(--text-size)); - --text-lg: calc(var(--text-scale-ratio) * var(--text-size)); - --text-xl: calc( - var(--text-scale-ratio) * var(--text-scale-ratio) * var(--text-size) - ); - --text-xxl: calc( - var(--text-scale-ratio) * var(--text-scale-ratio) * - var(--text-scale-ratio) * var(--text-size) - ); - - --space: calc(var(--line-height) * var(--text-size)); - --space-xxs: calc(0.25 * var(--space)); - --space-xs: calc(0.5 * var(--space)); - --space-sm: calc(0.75 * var(--space)); - --space-lg: calc(1.5 * var(--space)); - --space-xl: calc(2 * var(--space)); - --space-xxl: calc(3 * var(--space)); - - --max-width: 45rem; - - --font-family: IBM Plex Sans, system-ui, -apple-system, BlinkMacSystemFont, - 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', - sans-serif; - --font-family-condensed: IBM Plex Sans Condensed, system-ui; - --font-family-heading: var(--font-family); - - --border-radius: 4px; - - --shadow-elevated: 0 1px 2px rgba(0, 0, 0, 0.075), - 0 5px 20px rgba(0, 0, 0, 0.1); - - --green-h: 170; - --green-s: 90%; - --green-l: 32.5%; - --green: hsl(var(--green-h), var(--green-s), var(--green-l)); - --green-dark: hsl( - var(--green-h), - var(--green-s), - calc(var(--green-l) - 10%) - ); - - --green-pattern: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10'%3E%3Cpath d='M -2 2 l 3 -3 M -1 11 l 11 -11 M 8 12 l 3 -3' stroke='rgba(255, 255, 255, .2)' stroke-width='1'/%3E%3C/svg%3E%0A"); - - --red-h: 365; - --red-s: 100%; - --red-l: 40%; - --red: hsl(var(--red-h), var(--red-s), var(--red-l)); - --red-dark: hsl(var(--red-h), var(--red-s), calc(var(--red-l) - 10%)); - - --red-pattern: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10'%3E%3Cpath d='M -2 2 l 3 -3 M -1 11 l 11 -11 M 8 12 l 3 -3' stroke='rgba(255, 255, 255, .2)' stroke-width='1' transform='scale(1, -1) translate(0, -10)'/%3E%3C/svg%3E%0A"); - - --blue-h: 203; - --blue-s: 100%; - --blue-l: 37.5%; - --blue: hsl(var(--blue-h), var(--blue-s), var(--blue-l)); - --blue-light: hsl(var(--blue-h), var(--blue-s), calc(var(--blue-l) + 40%)); - --blue-lightest: hsl( - var(--blue-h), - var(--blue-s), - calc(var(--blue-l) + 55%) - ); - --blue-dark: hsl(var(--blue-h), var(--blue-s), calc(var(--blue-l) - 10%)); - --blue-darker: hsl(var(--blue-h), var(--blue-s), calc(var(--blue-l) - 20%)); - --blue-darkest: hsl( - var(--blue-h), - var(--blue-s), - calc(var(--blue-l) - 25%) - ); - - --orange-h: 39; - --orange-s: 100%; - --orange-l: 49%; - --orange: hsl(var(--orange-h), var(--orange-s), var(--orange-l)); - --orange-lightest: hsl( - var(--orange-h), - var(--orange-s), - calc(var(--orange-l) + 40%) - ); - --orange-darker: hsl( - var(--orange-h), - var(--orange-s), - calc(var(--orange-l) - 35%) - ); - - --gray-h: 213; - --gray-s: 35%; - --gray-l: 52.5%; - --gray: hsl(var(--gray-h), var(--gray-s), var(--gray-l)); - --gray-light: hsl(var(--gray-h), var(--gray-s), calc(var(--gray-l) + 30%)); - --gray-lightest: hsl( - var(--gray-h), - var(--gray-s), - calc(var(--gray-l) + 40%) - ); - --gray-dark: hsl(var(--gray-h), var(--gray-s), calc(var(--gray-l) - 20%)); - --gray-darkest: hsl( - var(--gray-h), - var(--gray-s), - calc(var(--gray-l) - 35%) - ); - - --color-text: var(--gray-darkest); - --color-text-light: var(--gray-dark); - - --color-focus-outline: hsla( - var(--blue-h), - var(--blue-s), - calc(var(--blue-l) + 30%), - 0.5 - ); -} diff --git a/app/resources/js/app.js b/app/resources/js/app.js deleted file mode 100644 index addf4104e..000000000 --- a/app/resources/js/app.js +++ /dev/null @@ -1,19 +0,0 @@ -import '@github/tab-container-element'; -import '@github/details-menu-element'; -import { listen } from 'quicklink'; -import Alpine from 'alpinejs'; -import listItem from './components/list-item.js'; -import searchResultsPage from './components/search-results-page.js'; -import eye from './components/eye.js'; - -window.addEventListener('load', () => listen()); - -Alpine.data('listItem', listItem); -Alpine.data('searchResultsPage', searchResultsPage); -Alpine.data('eye', eye); - -window.addEventListener('alpine:init', () => { - Alpine.store('searchQuery', ''); -}); - -Alpine.start(); diff --git a/app/resources/js/components/eye.js b/app/resources/js/components/eye.js deleted file mode 100644 index d1226496e..000000000 --- a/app/resources/js/components/eye.js +++ /dev/null @@ -1,54 +0,0 @@ -// The radius of the circle the pupils should move along -const RADIUS = 10; - -// Hardcoded dimensions of the eye/white ellipsis. As we're -// using SVG symbols, the actual DOM elements are placed inside -// a shadow DOM which makes it impossible to get the dimensions -// dynamically. -const WIDTH = 35; -const HEIGHT = 45; - -export default eye => ({ - centerX: 0, - centerY: 0, - cursorX: 0, - cursorY: 0, - - init() { - this.setCenterPosition(); - }, - - get translate() { - // Relative position of the cursor from the center of the eye - const deltaX = this.cursorX - this.centerX; - const deltaY = this.cursorY - this.centerY; - - const angle = Math.atan2(deltaX, deltaY); - - // Point on circumference of a circle around the center of the eye - const x = Math.round(RADIUS * Math.sin(angle)); - const y = Math.round(RADIUS * Math.cos(angle)); - - const absX = Math.abs(deltaX); - const absY = Math.abs(deltaY); - - // If the cursor is inside of the circle, use the cursor position, - // i.e. this clamps the values between -1 * |delta| and |delta|. - return { - x: Math.max(-1 * absX, Math.min(x, absX)), - y: Math.max(-1 * absY, Math.min(y, absY)), - }; - }, - - setCursorPosition(event) { - this.cursorX = event.pageX; - this.cursorY = event.pageY; - }, - - setCenterPosition() { - const { x, y } = this.$el.getBoundingClientRect(); - - this.centerX = x + WIDTH / 2; - this.centerY = y + HEIGHT / 2; - }, -}); diff --git a/app/resources/js/components/list-item.js b/app/resources/js/components/list-item.js deleted file mode 100644 index a171095a9..000000000 --- a/app/resources/js/components/list-item.js +++ /dev/null @@ -1,36 +0,0 @@ -export default ([searchKey, filterKey]) => ({ - searchKey: searchKey && searchKey.toLowerCase(), - filterKey: filterKey && filterKey.toLowerCase(), - - matches() { - return this.matchesSearchQuery() && this.matchesFilter(); - }, - - matchesSearchQuery() { - const query = this.searchQuery && this.searchQuery.toLowerCase().trim(); - - if (!query) { - return true; - } - - if (!this.searchKey) { - return false; - } - - return this.searchKey.includes(query); - }, - - matchesFilter() { - const filter = this.filter && this.filter.toLowerCase().trim(); - - if (!filter) { - return true; - } - - if (!this.filterKey) { - return false; - } - - return this.filterKey === filter; - }, -}); diff --git a/app/resources/js/components/search-results-page.js b/app/resources/js/components/search-results-page.js deleted file mode 100644 index 7332a25d4..000000000 --- a/app/resources/js/components/search-results-page.js +++ /dev/null @@ -1,193 +0,0 @@ -const LIMIT = 10; -const ATTRIBUTES = [ - 'id', - 'display_title', - 'date', - 'session_id', - 'session_display_title', -]; -const HIGHLIGHT_ATTRIBUTES = ['display_title']; -const CROP_ATTRIBUTES = ['display_title']; -const CROP_LENGTH = 150; - -export default (options = {}) => ({ - endpoint: options.endpoint, - index: options.index, - apiKey: options.apiKey, - memberId: options.memberId, - - page: 0, - results: [], - totalNumberOfResults: null, - - loading: false, - initialLoadCompleted: false, - abortController: null, - - init() { - this.restoreFromUrl(); - this.search(); - - this.$watch('$store.searchQuery', () => this.search()); - }, - - async search() { - // Reset page - this.page = 0; - - const data = await this.getResults(); - this.results = data.hits; - this.totalNumberOfResults = data.estimatedTotalHits; - - this.persistToUrl(); - }, - - async loadMore() { - const currentNumberOfResults = this.numberOfResults; - - this.page += 1; - const data = await this.getResults(); - this.results.push(...data.hits); - - this.persistToUrl(); - - this.$nextTick(() => { - this.focusResult(currentNumberOfResults + 1); - }); - }, - - reset() { - this.$store.searchQuery = ''; - this.search(); - }, - - get numberOfResults() { - return this.results.length; - }, - - get resultsGroupedBySession() { - const sessions = this.results - // Sort by descending date... - .sort((a, b) => b.date - a.date) - - // ... then group by session id - .reduce((groups, result) => { - groups[result.session_id] = groups[result.session_id] || { - id: result.session_id, - displayTitle: result.session_display_title, - votes: [], - }; - - groups[result.session_id].votes.push(result); - - return groups; - }, {}); - - // Sort sessions by the date of first (i.e. the - // most recent) vote, as the order might be mixed - // up by grouping - return Object.values(sessions).sort((a, b) => { - return b.votes[0].date - a.votes[0].date; - }); - }, - - get hasMoreResults() { - return this.numberOfResults < this.totalNumberOfResults; - }, - - get hasQuery() { - return this.$store.searchQuery.length > 0; - }, - - async getResults() { - // Cancel any pending requests - if (this.abortController) { - this.abortController.abort(); - } - - this.loading = true; - this.abortController = new AbortController(); - - let additionalAttributes = ['result']; - let filters = []; - - if (this.memberId !== null) { - additionalAttributes = [`votings.${this.memberId}`]; - filters = [`members = ${this.memberId}`]; - } - - const response = await fetch(this.searchUrl, { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - Authorization: `Bearer ${this.apiKey}`, - }, - signal: this.abortController.signal, - body: JSON.stringify({ - q: this.$store.searchQuery, - filter: filters, - limit: LIMIT, - offset: this.page * LIMIT, - attributesToRetrieve: [...ATTRIBUTES, ...additionalAttributes], - attributesToHighlight: HIGHLIGHT_ATTRIBUTES, - attributesToCrop: CROP_ATTRIBUTES, - cropLength: CROP_LENGTH, - }), - }); - - this.loading = false; - this.initialLoadCompleted = true; - - return await response.json(); - }, - - focusResult(n) { - const results = this.$refs.results.querySelectorAll('a'); - const nthResult = results[n - 1]; - - if (!nthResult) { - return; - } - - nthResult.focus(); - }, - - persistToUrl() { - const url = new URL(window.location.href); - - if (this.$store.searchQuery) { - url.searchParams.set('q', this.$store.searchQuery); - } else { - url.searchParams.delete('q'); - } - - window.history.replaceState({}, '', url); - }, - - restoreFromUrl() { - const url = new URL(window.location.href); - const query = url.searchParams.get('q'); - - if (query) { - this.$store.searchQuery = query; - } - }, - - get searchUrl() { - const url = new URL(this.endpoint); - url.pathname = `/indexes/${this.index}/search`; - - return url.toString(); - }, - - formatDate(timestamp) { - const options = { - weekday: 'short', - day: 'numeric', - month: 'long', - year: 'numeric', - }; - - return new Date(timestamp * 1000).toLocaleString('en-US', options); - }, -}); diff --git a/app/resources/lang/en/auth.php b/app/resources/lang/en/auth.php deleted file mode 100644 index e5506df29..000000000 --- a/app/resources/lang/en/auth.php +++ /dev/null @@ -1,19 +0,0 @@ - 'These credentials do not match our records.', - 'throttle' => 'Too many login attempts. Please try again in :seconds seconds.', - -]; diff --git a/app/resources/lang/en/components.php b/app/resources/lang/en/components.php deleted file mode 100644 index 6666e03dd..000000000 --- a/app/resources/lang/en/components.php +++ /dev/null @@ -1,54 +0,0 @@ - [ - 'logotype' => 'HowTheyVote.eu', - 'nav' => [ - 'about' => 'About', - ], - ], - 'footer' => [ - 'nav' => [ - 'imprint' => 'Imprint', - ], - ], - 'list' => [ - 'show-more' => 'Show more', - 'show-less' => 'Show less', - 'search-placeholder' => 'Search', - ], - 'search-input' => [ - 'placeholder' => 'Search by subject, e.g. Ukraine', - ], - 'search-form' => [ - 'submit' => 'Go!', - ], - 'search-results-page' => [ - 'load-more' => 'Load more', - 'loading' => 'Loading …', - 'empty-state' => [ - 'title' => 'No results found…', - 'text' => 'Try rephrasing your search query or', - 'action' => 'view the most recent votes', - ], - 'noscript' => [ - 'title' => 'To search, please enable JavaScript.', - 'text' => 'The search feature on this page relies on JavaScript in your browser. Didn’t disable JavaScript? An ad blocker or another browser extension might block JavaScript on HowTheyVote.eu.', - ], - ], - 'home' => [ - 'title' => 'Find out how the Members of the European Parliament vote.', - 'hint' => 'Try Ukraine, Covid-19, or Copyright.
Or view recent votes.', - ], - 'session-display' => [ - 'availability' => 'Usually, vote results are available at the end of the following week.', - 'current' => 'Parliament is meeting in :location this week.', - 'last' => 'The last plenary session was held from :start to :end in :location.', - 'next' => 'The next plenary session will be held in :location from :start to :end.', - 'agenda' => 'Take a look at the agenda for this session.', - ], - 'position-select' => [ - 'label' => 'Filter', - 'reset' => 'Show all', - ], -]; diff --git a/app/resources/lang/en/enums.php b/app/resources/lang/en/enums.php deleted file mode 100644 index eeb090b73..000000000 --- a/app/resources/lang/en/enums.php +++ /dev/null @@ -1,10 +0,0 @@ - [ - 'FOR' => 'For', - 'AGAINST' => 'Against', - 'ABSTENTION' => 'Abstention', - 'NOVOTE' => 'No vote', - ], -]; diff --git a/app/resources/lang/en/errors.php b/app/resources/lang/en/errors.php deleted file mode 100644 index 56e67b69d..000000000 --- a/app/resources/lang/en/errors.php +++ /dev/null @@ -1,16 +0,0 @@ - [ - 'title' => 'We can’t find this page', - 'message' => 'Would you like to search our database or view recent votes instead?', - ], - '500' => [ - 'title' => 'Internal Server Error', - 'message' => 'Something went wrong. We’ve already been informed of the error and will fix it as soon as possible.', - ], - '503' => [ - 'title' => 'Down for Maintenance', - 'message' => 'HowTheyVote.eu is currently down for a scheduled maintenance. This should take no longer than 15 minutes.', - ], -]; diff --git a/app/resources/lang/en/members.php b/app/resources/lang/en/members.php deleted file mode 100644 index ebcdb5a2e..000000000 --- a/app/resources/lang/en/members.php +++ /dev/null @@ -1,9 +0,0 @@ - [ - 'group' => 'Group:', - 'country' => 'Country:', - ], - 'no-group' => 'No longer a member of parliament.', -]; diff --git a/app/resources/lang/en/pagination.php b/app/resources/lang/en/pagination.php deleted file mode 100644 index d48141187..000000000 --- a/app/resources/lang/en/pagination.php +++ /dev/null @@ -1,19 +0,0 @@ - '« Previous', - 'next' => 'Next »', - -]; diff --git a/app/resources/lang/en/passwords.php b/app/resources/lang/en/passwords.php deleted file mode 100644 index 2345a56b5..000000000 --- a/app/resources/lang/en/passwords.php +++ /dev/null @@ -1,22 +0,0 @@ - 'Your password has been reset!', - 'sent' => 'We have emailed your password reset link!', - 'throttled' => 'Please wait before retrying.', - 'token' => 'This password reset token is invalid.', - 'user' => "We can't find a user with that email address.", - -]; diff --git a/app/resources/lang/en/session.php b/app/resources/lang/en/session.php deleted file mode 100644 index 83786c44c..000000000 --- a/app/resources/lang/en/session.php +++ /dev/null @@ -1,5 +0,0 @@ - ':date · :location', -]; diff --git a/app/resources/lang/en/share.php b/app/resources/lang/en/share.php deleted file mode 100644 index f1c562230..000000000 --- a/app/resources/lang/en/share.php +++ /dev/null @@ -1,7 +0,0 @@ - [ - 'alt' => 'A photo of the hemicycle in the European Parliament building in Strasbourg, with text overlay: “HowTheyVote.eu. Find out how the Members of the European Parliament vote.”', - ], -]; diff --git a/app/resources/lang/en/validation.php b/app/resources/lang/en/validation.php deleted file mode 100644 index a65914f9d..000000000 --- a/app/resources/lang/en/validation.php +++ /dev/null @@ -1,151 +0,0 @@ - 'The :attribute must be accepted.', - 'active_url' => 'The :attribute is not a valid URL.', - 'after' => 'The :attribute must be a date after :date.', - 'after_or_equal' => 'The :attribute must be a date after or equal to :date.', - 'alpha' => 'The :attribute may only contain letters.', - 'alpha_dash' => 'The :attribute may only contain letters, numbers, dashes and underscores.', - 'alpha_num' => 'The :attribute may only contain letters and numbers.', - 'array' => 'The :attribute must be an array.', - 'before' => 'The :attribute must be a date before :date.', - 'before_or_equal' => 'The :attribute must be a date before or equal to :date.', - 'between' => [ - 'numeric' => 'The :attribute must be between :min and :max.', - 'file' => 'The :attribute must be between :min and :max kilobytes.', - 'string' => 'The :attribute must be between :min and :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', - ], - 'boolean' => 'The :attribute field must be true or false.', - 'confirmed' => 'The :attribute confirmation does not match.', - 'date' => 'The :attribute is not a valid date.', - 'date_equals' => 'The :attribute must be a date equal to :date.', - 'date_format' => 'The :attribute does not match the format :format.', - 'different' => 'The :attribute and :other must be different.', - 'digits' => 'The :attribute must be :digits digits.', - 'digits_between' => 'The :attribute must be between :min and :max digits.', - 'dimensions' => 'The :attribute has invalid image dimensions.', - 'distinct' => 'The :attribute field has a duplicate value.', - 'email' => 'The :attribute must be a valid email address.', - 'ends_with' => 'The :attribute must end with one of the following: :values.', - 'exists' => 'The selected :attribute is invalid.', - 'file' => 'The :attribute must be a file.', - 'filled' => 'The :attribute field must have a value.', - 'gt' => [ - 'numeric' => 'The :attribute must be greater than :value.', - 'file' => 'The :attribute must be greater than :value kilobytes.', - 'string' => 'The :attribute must be greater than :value characters.', - 'array' => 'The :attribute must have more than :value items.', - ], - 'gte' => [ - 'numeric' => 'The :attribute must be greater than or equal :value.', - 'file' => 'The :attribute must be greater than or equal :value kilobytes.', - 'string' => 'The :attribute must be greater than or equal :value characters.', - 'array' => 'The :attribute must have :value items or more.', - ], - 'image' => 'The :attribute must be an image.', - 'in' => 'The selected :attribute is invalid.', - 'in_array' => 'The :attribute field does not exist in :other.', - 'integer' => 'The :attribute must be an integer.', - 'ip' => 'The :attribute must be a valid IP address.', - 'ipv4' => 'The :attribute must be a valid IPv4 address.', - 'ipv6' => 'The :attribute must be a valid IPv6 address.', - 'json' => 'The :attribute must be a valid JSON string.', - 'lt' => [ - 'numeric' => 'The :attribute must be less than :value.', - 'file' => 'The :attribute must be less than :value kilobytes.', - 'string' => 'The :attribute must be less than :value characters.', - 'array' => 'The :attribute must have less than :value items.', - ], - 'lte' => [ - 'numeric' => 'The :attribute must be less than or equal :value.', - 'file' => 'The :attribute must be less than or equal :value kilobytes.', - 'string' => 'The :attribute must be less than or equal :value characters.', - 'array' => 'The :attribute must not have more than :value items.', - ], - 'max' => [ - 'numeric' => 'The :attribute may not be greater than :max.', - 'file' => 'The :attribute may not be greater than :max kilobytes.', - 'string' => 'The :attribute may not be greater than :max characters.', - 'array' => 'The :attribute may not have more than :max items.', - ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'mimetypes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', - ], - 'not_in' => 'The selected :attribute is invalid.', - 'not_regex' => 'The :attribute format is invalid.', - 'numeric' => 'The :attribute must be a number.', - 'password' => 'The password is incorrect.', - 'present' => 'The :attribute field must be present.', - 'regex' => 'The :attribute format is invalid.', - 'required' => 'The :attribute field is required.', - 'required_if' => 'The :attribute field is required when :other is :value.', - 'required_unless' => 'The :attribute field is required unless :other is in :values.', - 'required_with' => 'The :attribute field is required when :values is present.', - 'required_with_all' => 'The :attribute field is required when :values are present.', - 'required_without' => 'The :attribute field is required when :values is not present.', - 'required_without_all' => 'The :attribute field is required when none of :values are present.', - 'same' => 'The :attribute and :other must match.', - 'size' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', - ], - 'starts_with' => 'The :attribute must start with one of the following: :values.', - 'string' => 'The :attribute must be a string.', - 'timezone' => 'The :attribute must be a valid zone.', - 'unique' => 'The :attribute has already been taken.', - 'uploaded' => 'The :attribute failed to upload.', - 'url' => 'The :attribute format is invalid.', - 'uuid' => 'The :attribute must be a valid UUID.', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'custom-message', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap our attribute placeholder - | with something more reader friendly such as "E-Mail Address" instead - | of "email". This simply helps us make our message more expressive. - | - */ - - 'attributes' => [], - -]; diff --git a/app/resources/lang/en/votes.php b/app/resources/lang/en/votes.php deleted file mode 100644 index e289814b8..000000000 --- a/app/resources/lang/en/votes.php +++ /dev/null @@ -1,16 +0,0 @@ - [ - 'final' => 'Final vote', - 'amendment' => 'Amendment :amendment by :author', - 'separate' => 'Separate vote on :subject', - ], - 'related' => [ - 'callout-heading' => 'Related votes', - 'final-vote' => 'Before voting on a subject, MEPs usually propose changes or vote on individual parts of the text. These votes take place before the final vote. View the result of the final vote on this subject.', - ], - 'summary' => [ - 'copyright' => 'This summary was originally published on the website of the European Parliament. © European Union, [:year] – Source: European Parliament', - ], -]; diff --git a/app/resources/lang/en/voting-lists.php b/app/resources/lang/en/voting-lists.php deleted file mode 100644 index 382dc8b69..000000000 --- a/app/resources/lang/en/voting-lists.php +++ /dev/null @@ -1,58 +0,0 @@ - 'All Votes', - 'subtitle' => 'Explore recent votes or search our database by subject.', - - 'share-picture' => [ - 'footer' => 'Find out how individual MEPs, political groups, and countries voted:', - 'subtitle' => 'Result of the vote in the European Parliament', - 'summary' => 'In total, :voted MEPs voted. :did-not-vote MEPs didn’t vote.', - 'alt-text' => 'A barchart visualizing the result of the European Parliaments vote on ":title". The vote was held on :date. The barchart has three bars, representing the :for MEPs who voted in favor (:forpercent%), the :against MEPs who votes against (:againstpercent%), and the :abstention MEPs who did abstain (:abstentionpercent%). In total, :voted MEPs participated in the vote and :novote MEPs did not vote.', - ], - - 'for' => 'For', - 'against' => 'Against', - 'abstentions' => 'Abstentions', - - 'members' => [ - 'title' => 'MEPs', - 'search-placeholder' => 'Search by name or country', - 'show-more' => 'Show all MEPs', - ], - - 'groups' => [ - 'title' => 'Political Groups', - 'count' => ':voted of :total MEPs voted', - ], - - 'countries' => [ - 'title' => 'Countries', - 'search-placeholder' => 'Search by name', - 'show-more' => 'Show all countries', - ], - - 'download' => [ - 'heading' => 'Open Data', - 'text' => 'We provide raw voting data for this vote, ready to use in your own analyses, visualizations or applications. Data is provided in CSV or JSON format and licensed under Creative Commons Attribution License 4.0.', - 'button-label-csv' => 'CSV', - 'button-label-json' => 'JSON', - ], - - 'related-votes-list' => [ - 'heading' => 'Related Votes', - 'text' => 'There were previous votes on this subject, like amendments or split-votes.', - 'button-label' => 'View votes', - ], - - 'non-final-callout' => [ - 'heading' => 'This is not the final vote!', - 'amendment' => 'This is a vote on :amendment.', - 'separate' => 'This is a :separate.', - 'text' => 'View the result of the final vote on this subject.', - ], - - 'summary' => [ - 'read-more' => 'Read more', - ], -]; diff --git a/app/resources/views/components/action-panel.blade.php b/app/resources/views/components/action-panel.blade.php deleted file mode 100644 index 4f960de11..000000000 --- a/app/resources/views/components/action-panel.blade.php +++ /dev/null @@ -1,14 +0,0 @@ -@props([ - 'text' => null, - 'heading' => null, -]) - -
bem('action-panel') }}> - -

{{ $heading }}

-

{{ $text }}

-
-
- {{ $slot }} -
-
diff --git a/app/resources/views/components/app.blade.php b/app/resources/views/components/app.blade.php deleted file mode 100644 index f1fbdddb6..000000000 --- a/app/resources/views/components/app.blade.php +++ /dev/null @@ -1,48 +0,0 @@ -@props([ - 'title' => null, - 'sharePicture' => null, - 'sharePictureAlt' => null, -]) - -@php - // Use default share picture if a falsy values is passed, - // even if it is passed explicitly. - $sharePicture = $sharePicture ?: asset('/assets/default-share-picture.png'); - $sharePictureAlt = $sharePictureAlt ?: __('share.default-share-picture.alt'); -@endphp - - - - - - - - - - - {{ $title }} - - - - - - - - - - - - - - - - - - - - @stack('head') - - - {{ $slot }} - - diff --git a/app/resources/views/components/avatar.blade.php b/app/resources/views/components/avatar.blade.php deleted file mode 100644 index 9ffae4a83..000000000 --- a/app/resources/views/components/avatar.blade.php +++ /dev/null @@ -1,8 +0,0 @@ -@props([ - 'url' => null, - 'style' => null, -]) - -
bem('avatar', $style) }}> - -
diff --git a/app/resources/views/components/base-layout.blade.php b/app/resources/views/components/base-layout.blade.php deleted file mode 100644 index c6ffd6a4b..000000000 --- a/app/resources/views/components/base-layout.blade.php +++ /dev/null @@ -1,25 +0,0 @@ -@props(['style' => null]) - -
bem('base-layout', $style) }}> - - -
- {{ $slot }} -
- - - @if ($style === 'dark') -

- Photo: © European Union 2019 · - - Source: EP/Fred MARVAUX - -

- @endif -
-
-
diff --git a/app/resources/views/components/button.blade.php b/app/resources/views/components/button.blade.php deleted file mode 100644 index ffb823594..000000000 --- a/app/resources/views/components/button.blade.php +++ /dev/null @@ -1,20 +0,0 @@ -@props([ - 'size' => null, - 'href' => null, - 'style' => null, - 'tag' => null, -]) - -@if ($href) - bem('button', [$size, $style]) }} href="{{ $href }}"> - {{ $slot }} - -@elseif ($tag) - <{{ $tag }} {{ $attributes->bem('button', [$size, $style]) }}> - {{ $slot }} - -@else - -@endif diff --git a/app/resources/views/components/callout.blade.php b/app/resources/views/components/callout.blade.php deleted file mode 100644 index cd0e683ae..000000000 --- a/app/resources/views/components/callout.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@props([ - 'heading' => null, - 'text' => null, - 'style' => null, -]) - -
bem('callout', $style) }}> - - @if ($heading) -

{{ $heading }}

- @endif - -

{{ $slot }}

-
-
diff --git a/app/resources/views/components/cc-logo.blade.php b/app/resources/views/components/cc-logo.blade.php deleted file mode 100644 index 5e3a4af1d..000000000 --- a/app/resources/views/components/cc-logo.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@props(['modifiers' => null]) - -
bem('cc-logo', $modifiers) }} -> - - - - - -
CC-BY-SA 4.0
-
diff --git a/app/resources/views/components/country-list-item.blade.php b/app/resources/views/components/country-list-item.blade.php deleted file mode 100644 index 7603292c0..000000000 --- a/app/resources/views/components/country-list-item.blade.php +++ /dev/null @@ -1,16 +0,0 @@ -@props([ - 'country' => null, - 'stats' => null, -]) - - diff --git a/app/resources/views/components/empty-state.blade.php b/app/resources/views/components/empty-state.blade.php deleted file mode 100644 index 7c4ca4967..000000000 --- a/app/resources/views/components/empty-state.blade.php +++ /dev/null @@ -1,6 +0,0 @@ -@props([ 'title' => null ]) - -bem('empty-state') }}> -

{{ $title }}

- {{ $slot }} -
diff --git a/app/resources/views/components/error-page.blade.php b/app/resources/views/components/error-page.blade.php deleted file mode 100644 index af387ec10..000000000 --- a/app/resources/views/components/error-page.blade.php +++ /dev/null @@ -1,13 +0,0 @@ -@props(['title', 'message']) - -
bem('error-page') }}> -
- -

- {{ $title }} -

-

- {!! $message !!} -

-
-
diff --git a/app/resources/views/components/eyes.blade.php b/app/resources/views/components/eyes.blade.php deleted file mode 100644 index 2830461a9..000000000 --- a/app/resources/views/components/eyes.blade.php +++ /dev/null @@ -1,71 +0,0 @@ -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
diff --git a/app/resources/views/components/footer.blade.php b/app/resources/views/components/footer.blade.php deleted file mode 100644 index 10b5574cd..000000000 --- a/app/resources/views/components/footer.blade.php +++ /dev/null @@ -1,31 +0,0 @@ -@props(['style']) - -bem('footer', $style) }}> - - - {{ $slot }} - diff --git a/app/resources/views/components/group-list-item.blade.php b/app/resources/views/components/group-list-item.blade.php deleted file mode 100644 index aebc7692d..000000000 --- a/app/resources/views/components/group-list-item.blade.php +++ /dev/null @@ -1,16 +0,0 @@ -@props([ - 'group' => null, - 'stats' => null, -]) - - diff --git a/app/resources/views/components/header.blade.php b/app/resources/views/components/header.blade.php deleted file mode 100644 index 3d1f5a043..000000000 --- a/app/resources/views/components/header.blade.php +++ /dev/null @@ -1,23 +0,0 @@ -@props(['style' => null]) - -
bem('header', $style) }}> - - - {{ __('components.header.logotype') }} - - - -
diff --git a/app/resources/views/components/hero.blade.php b/app/resources/views/components/hero.blade.php deleted file mode 100644 index 55926d773..000000000 --- a/app/resources/views/components/hero.blade.php +++ /dev/null @@ -1,25 +0,0 @@ -@props([ - 'title', - 'text', - 'action' => null, -]) - -
-
- -

- {{ $title }} -

- -

{{ $text }}

-
-
- - @if ($action) -
- - {{ $action }} - -
- @endif -
diff --git a/app/resources/views/components/input.blade.php b/app/resources/views/components/input.blade.php deleted file mode 100644 index 40944c156..000000000 --- a/app/resources/views/components/input.blade.php +++ /dev/null @@ -1,7 +0,0 @@ -@props([ - 'type' => 'text', - 'size' => null, - 'style' => null, -]) - -bem('input', [$size, $style]) }} /> diff --git a/app/resources/views/components/list-item.blade.php b/app/resources/views/components/list-item.blade.php deleted file mode 100644 index 5e45ee5f4..000000000 --- a/app/resources/views/components/list-item.blade.php +++ /dev/null @@ -1,58 +0,0 @@ -@props([ - 'avatarUrl' => null, - 'avatarStyle' => null, - 'title' => null, - 'emoji' => null, - 'subtitle' => null, - 'position' => null, - 'stats' => null, - 'searchKey' => null, - 'filterKey' => null, - 'url' => null -]) - -
  • bem('list-item') }} - x-show="matches" - x-data="listItem({{ json_encode([$searchKey, $filterKey]) }})" -> - @if ($avatarUrl) - - @endif - -
    - - @if ($url) - - {{ $title }} {{ $emoji }} - - @else - {{ $title }} {{ $emoji }} - @endif - - -
    - {{ $subtitle }} -
    - - @if ($stats) - - @endif -
    - - @if ($position) - - {{ Str::lower($position->label) }} - - - - @endif -
  • diff --git a/app/resources/views/components/list.blade.php b/app/resources/views/components/list.blade.php deleted file mode 100644 index d09093ac1..000000000 --- a/app/resources/views/components/list.blade.php +++ /dev/null @@ -1,54 +0,0 @@ -@props([ - 'truncate' => false, - 'showMore' => __('components.list.show-more'), - 'showLess' => __('components.list.show-less'), - 'searchable' => false, - 'searchPlaceholder' => __('components.list.search-placeholder'), - 'actions' => null, -]) - -@php - $initialState = [ - 'truncate' => $truncate, - 'searchQuery' => '', - 'filter' => '', - ]; -@endphp - -
    bem('list') }} - x-data="{{ json_encode($initialState) }}" - x-bind:class="(truncate && searchQuery === '') ? 'list--truncated' : ''" -> -
    - @if ($searchable) - - @endif - - @if ($actions) - {{ $actions }} - @endif -
    - -
      - {{ $slot }} -
    - - @if ($truncate) - - {{ $showMore }} - {{ $showLess }} - - @endif -
    diff --git a/app/resources/views/components/loading-spinner.blade.php b/app/resources/views/components/loading-spinner.blade.php deleted file mode 100644 index f2353e780..000000000 --- a/app/resources/views/components/loading-spinner.blade.php +++ /dev/null @@ -1,5 +0,0 @@ -
    - - Loading… - -
    diff --git a/app/resources/views/components/logos.blade.php b/app/resources/views/components/logos.blade.php deleted file mode 100644 index 65006c9cf..000000000 --- a/app/resources/views/components/logos.blade.php +++ /dev/null @@ -1,3 +0,0 @@ -
    - {{ $slot }} -
    diff --git a/app/resources/views/components/markdown.blade.php b/app/resources/views/components/markdown.blade.php deleted file mode 100644 index a0a0aac68..000000000 --- a/app/resources/views/components/markdown.blade.php +++ /dev/null @@ -1,5 +0,0 @@ -@props(['parse' => true]) - -
    bem('markdown') }}> - {!! $parse ? Str::markdown($slot) : $slot !!} -
    diff --git a/app/resources/views/components/member-list-item.blade.php b/app/resources/views/components/member-list-item.blade.php deleted file mode 100644 index 05ff780ec..000000000 --- a/app/resources/views/components/member-list-item.blade.php +++ /dev/null @@ -1,16 +0,0 @@ -@props([ - 'member' => null, - 'position' => null, - 'url' => null, -]) - - diff --git a/app/resources/views/components/member/header.blade.php b/app/resources/views/components/member/header.blade.php deleted file mode 100644 index d6548605e..000000000 --- a/app/resources/views/components/member/header.blade.php +++ /dev/null @@ -1,46 +0,0 @@ -@props([ - 'member' => null, - 'group' => null -]) - -
    bem('member-header') }}> - - Photo of {{ $member->full_name }} - -
    -

    - {{ $member->full_name }} -

    - -

    - {{ $member->country->label }} {{ $member->country->emoji }} - - @if ($group) - · - {{ $group->name }} - @endif -

    - - @if ($member->links->isNotEmpty()) - - @endif -
    -
    -
    - diff --git a/app/resources/views/components/position-select.blade.php b/app/resources/views/components/position-select.blade.php deleted file mode 100644 index e00238c44..000000000 --- a/app/resources/views/components/position-select.blade.php +++ /dev/null @@ -1,65 +0,0 @@ -@props([ - 'name' => null, - 'xModel' => null, - 'label' => __('components.position-select.label'), - 'reset' => __('components.position-select.reset'), -]) - -
    - - {{ $label }} - - - - - - @foreach (\App\Enums\VotePositionEnum::cases() as $position) - - @endforeach - -
    diff --git a/app/resources/views/components/search-form.blade.php b/app/resources/views/components/search-form.blade.php deleted file mode 100644 index dd9c21b6d..000000000 --- a/app/resources/views/components/search-form.blade.php +++ /dev/null @@ -1,11 +0,0 @@ -
    - - - {{ __('components.search-form.submit') }} - - diff --git a/app/resources/views/components/search-input.blade.php b/app/resources/views/components/search-input.blade.php deleted file mode 100644 index deef8fd8b..000000000 --- a/app/resources/views/components/search-input.blade.php +++ /dev/null @@ -1,11 +0,0 @@ - diff --git a/app/resources/views/components/search-results-page.blade.php b/app/resources/views/components/search-results-page.blade.php deleted file mode 100644 index b057aafbf..000000000 --- a/app/resources/views/components/search-results-page.blade.php +++ /dev/null @@ -1,48 +0,0 @@ -@props([ - 'endpoint' => null, - 'index' => null, - 'apiKey' => null, - 'memberId' => null, -]) - -@once - @push('head') - - @endpush -@endonce - -
    bem('search-results-page') }} - x-data="searchResultsPage({{ json_encode([ - 'endpoint' => $endpoint, - 'index' => $index, - 'apiKey' => $apiKey, - 'memberId' => $memberId, - ]) }})" -> - - - - - - - - - - - -
    - -
    -
    -
    diff --git a/app/resources/views/components/search-results-page/empty-state.blade.php b/app/resources/views/components/search-results-page/empty-state.blade.php deleted file mode 100644 index fe7ea778c..000000000 --- a/app/resources/views/components/search-results-page/empty-state.blade.php +++ /dev/null @@ -1,9 +0,0 @@ - -

    - {{ __('components.search-results-page.empty-state.text') }} - {{ __('components.search-results-page.empty-state.action') }}. -

    -
    diff --git a/app/resources/views/components/search-results-page/load-more-button.blade.php b/app/resources/views/components/search-results-page/load-more-button.blade.php deleted file mode 100644 index 37e9a83f2..000000000 --- a/app/resources/views/components/search-results-page/load-more-button.blade.php +++ /dev/null @@ -1,10 +0,0 @@ - diff --git a/app/resources/views/components/search-results-page/noscript-fallback.blade.php b/app/resources/views/components/search-results-page/noscript-fallback.blade.php deleted file mode 100644 index 10cb48e52..000000000 --- a/app/resources/views/components/search-results-page/noscript-fallback.blade.php +++ /dev/null @@ -1,3 +0,0 @@ - -

    {{ __('components.search-results-page.noscript.text') }}

    -
    diff --git a/app/resources/views/components/search-results-page/result.blade.php b/app/resources/views/components/search-results-page/result.blade.php deleted file mode 100644 index 72b5aa2b8..000000000 --- a/app/resources/views/components/search-results-page/result.blade.php +++ /dev/null @@ -1,50 +0,0 @@ - diff --git a/app/resources/views/components/search-results-page/results-count.blade.php b/app/resources/views/components/search-results-page/results-count.blade.php deleted file mode 100644 index 37fea8897..000000000 --- a/app/resources/views/components/search-results-page/results-count.blade.php +++ /dev/null @@ -1,5 +0,0 @@ -

    diff --git a/app/resources/views/components/search-results-page/results.blade.php b/app/resources/views/components/search-results-page/results.blade.php deleted file mode 100644 index 0392d989e..000000000 --- a/app/resources/views/components/search-results-page/results.blade.php +++ /dev/null @@ -1,25 +0,0 @@ -
    - - - -
    diff --git a/app/resources/views/components/session-display.blade.php b/app/resources/views/components/session-display.blade.php deleted file mode 100644 index e23b88e3a..000000000 --- a/app/resources/views/components/session-display.blade.php +++ /dev/null @@ -1,51 +0,0 @@ -@props([ - 'currentSession' => null, - 'lastSession' => null, - 'nextSession' => null, -]) - - -@if ($currentSession) - -
    bem('session-display') }}> - {{ __('components.session-display.current', [ - 'location' => $currentSession->location->label, - ]) }} - - {!! __('components.session-display.agenda', [ - 'agenda' => $currentSession->agenda_url]) !!}
    - - {{ __('components.session-display.availability') }} -
    - -@elseif ($lastSession && $lastSession->votes()->matched()->final()->count() <= 0) - -
    bem('session-display') }}> - {!! __('components.session-display.last', [ - 'start' => $lastSession->start_date->format('M jS'), - 'end' =>$lastSession->end_date->format('M jS'), - 'location' => $lastSession->location->label, - ]) !!} - - {!! __('components.session-display.agenda', [ - 'agenda' => $lastSession->agenda_url]) !!}
    - - {{ __('components.session-display.availability') }} -
    - -@elseif ($nextSession) - -
    bem('session-display') }}> - {!! __('components.session-display.next', [ - 'start' => $nextSession->start_date->format('M jS'), - 'end' =>$nextSession->end_date->format('M jS'), - 'location' => $nextSession->location->label, - ]) !!} - - {!! __('components.session-display.agenda', [ - 'agenda' => $nextSession->agenda_url]) !!}
    - - {{ __('components.session-display.availability') }} -
    - -@endif diff --git a/app/resources/views/components/share-button.blade.php b/app/resources/views/components/share-button.blade.php deleted file mode 100644 index 04195aadc..000000000 --- a/app/resources/views/components/share-button.blade.php +++ /dev/null @@ -1,19 +0,0 @@ -@props([ - 'title'=>null, - 'text'=>null, - 'url'=>null, -]) - -bem('share-button') }} - x-data="{ - isVisible: 'share' in navigator, - title: '{{ $title }}', - text: '{{ $text }}', - url: '{{ $url }}' - }" - x-on:click="navigator.share({title, text, url})" - x-show="isVisible" - x-cloak -> - Share this vote! - diff --git a/app/resources/views/components/share-picture.blade.php b/app/resources/views/components/share-picture.blade.php deleted file mode 100644 index d6015e294..000000000 --- a/app/resources/views/components/share-picture.blade.php +++ /dev/null @@ -1,12 +0,0 @@ - diff --git a/app/resources/views/components/stack.blade.php b/app/resources/views/components/stack.blade.php deleted file mode 100644 index 812566267..000000000 --- a/app/resources/views/components/stack.blade.php +++ /dev/null @@ -1,5 +0,0 @@ -@props(['space' => null]) - -
    bem('stack', $space) }}> - {{ $slot }} -
    diff --git a/app/resources/views/components/tab-button.blade.php b/app/resources/views/components/tab-button.blade.php deleted file mode 100644 index a2e0d830e..000000000 --- a/app/resources/views/components/tab-button.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@props([ - 'id' => null, - 'selected' => false, -]) - - diff --git a/app/resources/views/components/tab-panel.blade.php b/app/resources/views/components/tab-panel.blade.php deleted file mode 100644 index 8e16c0c96..000000000 --- a/app/resources/views/components/tab-panel.blade.php +++ /dev/null @@ -1,12 +0,0 @@ -@props([ - 'id' => null, - 'selected' => false, -]) - - diff --git a/app/resources/views/components/tabs.blade.php b/app/resources/views/components/tabs.blade.php deleted file mode 100644 index 87c833434..000000000 --- a/app/resources/views/components/tabs.blade.php +++ /dev/null @@ -1,7 +0,0 @@ - -
    - {{ $list }} -
    - - {{ $slot }} -
    diff --git a/app/resources/views/components/thumb.blade.php b/app/resources/views/components/thumb.blade.php deleted file mode 100644 index 638fd0075..000000000 --- a/app/resources/views/components/thumb.blade.php +++ /dev/null @@ -1,23 +0,0 @@ -@props([ - 'position' => null, - 'result' => null, - 'style' => null -]) - -@php - if (is_a($position, \App\Enums\VotePositionEnum::class)) - { - $position = Str::lower($position->label); - } - - if (is_a($result, \App\Enums\VoteResultEnum::class)) - { - $result = Str::lower($result->label); - } -@endphp - -bem('thumb', [$position, $result, $style]) }}> - @if ($position !== 'novote') - - @endif - diff --git a/app/resources/views/components/vote-card.blade.php b/app/resources/views/components/vote-card.blade.php deleted file mode 100644 index dbb7b22a2..000000000 --- a/app/resources/views/components/vote-card.blade.php +++ /dev/null @@ -1,24 +0,0 @@ -@props([ - 'vote' => null, - 'heading' => null, - 'text' => null, - 'position' => null, - ]) - -@php - $position = $position == null ? $vote->result: $position; -@endphp - - diff --git a/app/resources/views/components/vote-result-chart-bar.blade.php b/app/resources/views/components/vote-result-chart-bar.blade.php deleted file mode 100644 index 4f52d0513..000000000 --- a/app/resources/views/components/vote-result-chart-bar.blade.php +++ /dev/null @@ -1,24 +0,0 @@ -@props([ - 'value' => 0, - 'total' => 0, - 'position' => null, - 'style' => null, -]) - -@php - $ratio = $value / $total; - $percentage = round($ratio * 100); -@endphp - -
    bem('vote-result-chart__bar', [ - $style, - $position, - 'small' => $percentage < 10, - 'medium' => $percentage >= 10 && $percentage < 15, - ]) }} - style="--ratio: {{ $ratio}}" -> - - {{ $percentage }}% -
    diff --git a/app/resources/views/components/vote-result-chart.blade.php b/app/resources/views/components/vote-result-chart.blade.php deleted file mode 100644 index b6ce7ca29..000000000 --- a/app/resources/views/components/vote-result-chart.blade.php +++ /dev/null @@ -1,47 +0,0 @@ -@props([ - 'stats' => null, - 'style' => null, -]) - - -
    bem('vote-result-chart', $style) }}> - @if ($stats['by_position']['FOR'] > 0) - - @endif - - @if ($stats['by_position']['AGAINST'] > 0) - - @endif - - @if ($stats['by_position']['ABSTENTION'] > 0) - - @endif -
    - - @if ($style !== 'slim') -

    - @lang('voting-lists.for'): {{ $stats['by_position']['FOR'] }}. - @lang('voting-lists.against'): {{ $stats['by_position']['AGAINST'] }}. - @lang('voting-lists.abstentions'): {{ $stats['by_position']['ABSTENTION'] }}. - @lang('voting-lists.share-picture.summary', [ - 'voted' => $stats['voted'], - 'did-not-vote' => $stats['by_position']['NOVOTE'], - ]) -

    - @endif -
    diff --git a/app/resources/views/components/voting-list/callout.blade.php b/app/resources/views/components/voting-list/callout.blade.php deleted file mode 100644 index 269fa5cf0..000000000 --- a/app/resources/views/components/voting-list/callout.blade.php +++ /dev/null @@ -1,27 +0,0 @@ -@props(['votingList']) - - - @if ($votingList->vote->isAmendmentVote()) - {{ - __('voting-lists.non-final-callout.amendment', [ - 'amendment' => lcfirst($votingList->vote->subtitle), - ]) - }} - @endif - - @if ($votingList->vote->isSeparateVote()) - {{ - __('voting-lists.non-final-callout.separate', [ - 'separate' => lcfirst($votingList->vote->subtitle), - ]) - }} - @endif - - @if ($votingList->vote->finalVote?->url) - {!! - __('voting-lists.non-final-callout.text', [ - 'url' => $votingList->vote->finalVote->url, - ]) - !!} - @endif - diff --git a/app/resources/views/components/voting-list/countries-list.blade.php b/app/resources/views/components/voting-list/countries-list.blade.php deleted file mode 100644 index aac0f4683..000000000 --- a/app/resources/views/components/voting-list/countries-list.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@props(['countries']) - - - @foreach ($countries as $country => $stats) - - @endforeach - diff --git a/app/resources/views/components/voting-list/download-panel.blade.php b/app/resources/views/components/voting-list/download-panel.blade.php deleted file mode 100644 index e991dadfa..000000000 --- a/app/resources/views/components/voting-list/download-panel.blade.php +++ /dev/null @@ -1,22 +0,0 @@ -@props(['votingList']) - - - - {{ __('voting-lists.download.button-label-csv') }} - - - - {{ __('voting-lists.download.button-label-json') }} - - - - diff --git a/app/resources/views/components/voting-list/groups-list.blade.php b/app/resources/views/components/voting-list/groups-list.blade.php deleted file mode 100644 index c5b3e693d..000000000 --- a/app/resources/views/components/voting-list/groups-list.blade.php +++ /dev/null @@ -1,7 +0,0 @@ -@props(['groups']) - - - @foreach ($groups as $group) - - @endforeach - diff --git a/app/resources/views/components/voting-list/header.blade.php b/app/resources/views/components/voting-list/header.blade.php deleted file mode 100644 index 40cfdac76..000000000 --- a/app/resources/views/components/voting-list/header.blade.php +++ /dev/null @@ -1,45 +0,0 @@ -@props([ - 'votingList', - 'minimal' => false, -]) - -
    - - -

    {{ $votingList->display_title }}

    -

    - - {{ $votingList->date->formatLocalized('%b %e, %Y') }} - - @if ($votingList->vote) - · - {{ $votingList->result->label }} - - @endif - -

    - - @if (! $minimal && $votingList->vote && $votingList->vote->isFInalVote() && $votingList->vote->summary) -

    - {{ $votingList->vote->summary->excerpt }} - - {{ __('voting-lists.summary.read-more') }} - -

    - @endif -
    - - @if (! $minimal && $votingList->vote && $votingList->vote->isFinalVote()) -
    -
    diff --git a/app/resources/views/components/voting-list/members-list.blade.php b/app/resources/views/components/voting-list/members-list.blade.php deleted file mode 100644 index 7395f3a72..000000000 --- a/app/resources/views/components/voting-list/members-list.blade.php +++ /dev/null @@ -1,19 +0,0 @@ -@props(['members']) - - - - - - - @foreach ($members as $member) - - @endforeach - diff --git a/app/resources/views/components/voting-list/related-panel.blade.php b/app/resources/views/components/voting-list/related-panel.blade.php deleted file mode 100644 index a8a7bae73..000000000 --- a/app/resources/views/components/voting-list/related-panel.blade.php +++ /dev/null @@ -1,13 +0,0 @@ -@props(['votingList']) - - - - {{ __('voting-lists.related-votes-list.button-label') }} - - diff --git a/app/resources/views/components/wrapper.blade.php b/app/resources/views/components/wrapper.blade.php deleted file mode 100644 index 96a03062d..000000000 --- a/app/resources/views/components/wrapper.blade.php +++ /dev/null @@ -1,3 +0,0 @@ -
    bem('wrapper') }}> - {{ $slot }} -
    diff --git a/app/resources/views/errors/404.blade.php b/app/resources/views/errors/404.blade.php deleted file mode 100644 index 358078c89..000000000 --- a/app/resources/views/errors/404.blade.php +++ /dev/null @@ -1,6 +0,0 @@ - - - diff --git a/app/resources/views/errors/500.blade.php b/app/resources/views/errors/500.blade.php deleted file mode 100644 index d911c1273..000000000 --- a/app/resources/views/errors/500.blade.php +++ /dev/null @@ -1,6 +0,0 @@ - - - diff --git a/app/resources/views/errors/503.blade.php b/app/resources/views/errors/503.blade.php deleted file mode 100644 index b76545e4e..000000000 --- a/app/resources/views/errors/503.blade.php +++ /dev/null @@ -1,6 +0,0 @@ - - - diff --git a/app/resources/views/home.blade.php b/app/resources/views/home.blade.php deleted file mode 100644 index e35d408ab..000000000 --- a/app/resources/views/home.blade.php +++ /dev/null @@ -1,24 +0,0 @@ - - -
    -
    -

    - {{ __('components.home.title') }} -

    - - - -
    - {!! __('components.home.hint') !!} -
    - - -
    -
    -
    -
    diff --git a/app/resources/views/members/show.blade.php b/app/resources/views/members/show.blade.php deleted file mode 100644 index 1623d1c07..000000000 --- a/app/resources/views/members/show.blade.php +++ /dev/null @@ -1,20 +0,0 @@ - - - - - -
    - - - -
    -
    -
    -
    diff --git a/app/resources/views/monitoring/index.blade.php b/app/resources/views/monitoring/index.blade.php deleted file mode 100644 index 049fca843..000000000 --- a/app/resources/views/monitoring/index.blade.php +++ /dev/null @@ -1,28 +0,0 @@ - - - -

    VotingLists

    - -

    Votes

    - -
    -
    -
    diff --git a/app/resources/views/monitoring/show.blade.php b/app/resources/views/monitoring/show.blade.php deleted file mode 100644 index 9d39d4daa..000000000 --- a/app/resources/views/monitoring/show.blade.php +++ /dev/null @@ -1,5 +0,0 @@ - - - {{ dd($record) }} - - diff --git a/app/resources/views/pages/show.blade.php b/app/resources/views/pages/show.blade.php deleted file mode 100644 index 621252a01..000000000 --- a/app/resources/views/pages/show.blade.php +++ /dev/null @@ -1,17 +0,0 @@ - - -
    - - -

    - {{ $page->title }} -

    - - - {{ $page->contents }} - -
    -
    -
    -
    -
    diff --git a/app/resources/views/voting-lists/index.blade.php b/app/resources/views/voting-lists/index.blade.php deleted file mode 100644 index c7631313a..000000000 --- a/app/resources/views/voting-lists/index.blade.php +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - {{ __('voting-lists.title') }} - - - - {{ __('voting-lists.subtitle') }} - - - - - - - -
    - - - -
    -
    -
    -
    diff --git a/app/resources/views/voting-lists/related.blade.php b/app/resources/views/voting-lists/related.blade.php deleted file mode 100644 index ebd51b577..000000000 --- a/app/resources/views/voting-lists/related.blade.php +++ /dev/null @@ -1,32 +0,0 @@ - - - - - -
    - - - {!! __('votes.related.final-vote', ['url' => route('voting-list.show', $votingList)]) !!} - - -
    - -
    - - - @foreach ($relatedVotes as $relatedVote) - - @endforeach - - -
    -
    -
    -
    diff --git a/app/resources/views/voting-lists/share-picture.blade.php b/app/resources/views/voting-lists/share-picture.blade.php deleted file mode 100644 index 784d4d332..000000000 --- a/app/resources/views/voting-lists/share-picture.blade.php +++ /dev/null @@ -1,28 +0,0 @@ - - - - -

    - {{ $votingList->display_title }} -

    - -
    - -
    - - - {{ __('voting-lists.share-picture.footer') }}
    - {{ $shortDisplayUrl }} -
    -
    -
    diff --git a/app/resources/views/voting-lists/show.blade.php b/app/resources/views/voting-lists/show.blade.php deleted file mode 100644 index 05573841d..000000000 --- a/app/resources/views/voting-lists/show.blade.php +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - @if ($votingList->vote && !$votingList->vote->isFinalVote()) -
    - - - -
    - @endif - -
    - - - -
    - -
    - - - - - {{ __('voting-lists.members.title') }} - - - {{ __('voting-lists.groups.title') }} - - - {{ __('voting-lists.countries.title') }} - - - - - - - - - - - - - - - - -
    - -
    - - - @if ($votingList->vote && $votingList->vote->isFinalVote() && $votingList->vote->hasRelatedVotes()) - - @endif - - - - -
    -
    -
    -
    diff --git a/app/resources/views/voting-lists/summary.blade.php b/app/resources/views/voting-lists/summary.blade.php deleted file mode 100644 index 75155b557..000000000 --- a/app/resources/views/voting-lists/summary.blade.php +++ /dev/null @@ -1,31 +0,0 @@ - - - - - -
    - - - {{ $summary->text }} - - -
    - -
    - - -

    - {!! __('votes.summary.copyright', [ - 'url' => $summary->external_url, - 'year' => $summary->created_at->format('Y'), - ]) !!} -

    -
    -
    -
    -
    -
    -
    diff --git a/app/routes/api.php b/app/routes/api.php deleted file mode 100644 index bcb8b1898..000000000 --- a/app/routes/api.php +++ /dev/null @@ -1,19 +0,0 @@ -get('/user', function (Request $request) { - return $request->user(); -}); diff --git a/app/routes/channels.php b/app/routes/channels.php deleted file mode 100644 index 963b0d215..000000000 --- a/app/routes/channels.php +++ /dev/null @@ -1,18 +0,0 @@ -id === (int) $id; -}); diff --git a/app/routes/console.php b/app/routes/console.php deleted file mode 100644 index 96813e16a..000000000 --- a/app/routes/console.php +++ /dev/null @@ -1,171 +0,0 @@ -first(); - $this->info("Scraping list of members for term {$term->number}."); - - $action->execute($term); -})->describe('Scrape and save all members (without info) for a given term.'); - -Artisan::command('scrape:members-info {--term=}', function ( - int $term, - ScrapeMemberInfoAction $action -) { - $term = Term::whereNumber($term)->first(); - $members = $term->members()->get(); - - $this->info("Scraping info for all members in term {$term->number}."); - $this->withProgressBar($members, fn ($member) => $action->execute($member)); -})->describe('Scrape and save info for all saved members.'); - -Artisan::command('scrape:members-photos {--all}', function ( - bool $all, - CreateMemberImageAction $action -) { - $members = $all ? Member::all() : Member::all()->filter(function ($member) { - return ! $member->hasProfilePicture(); - }); - - $this->info('Scraping profile photos for members.'); - $this->withProgressBar($members, fn ($member) => $action->execute($member)); -}); - -Artisan::command('scrape:members-groups {--term=}', function ( - int $term, - ScrapeMemberGroupsAction $action -) { - $term = Term::whereNumber($term)->first(); - $members = $term->members()->get(); - - $this->info("Scraping group memberships for all members in term {$term->number}"); - $this->withProgressBar($members, fn ($member) => $action->execute($member, $term)); -})->describe('Scrape and save group info for all saved members for the given term.'); - -Artisan::command('scrape:sessions {--term=} {--year=} {--month=}', function ( - int $term, - int $month, - int $year, - ScrapeSessionsAction $action -) { - $action->execute($term, $year, $month); -}); - -Artisan::command('scrape:voting-lists {--term=} {--date=}', function ( - int $term, - string $date, - ScrapeVotingListsAction $action -) { - $term = Term::whereNumber($term)->first(); - $date = Carbon::parse($date); - - $this->info("Scraping voting lists for {$date}"); - $action->execute($term, $date); -})->describe('Scrape and save all voting lists with compiled stats for the given date and term.'); - -Artisan::command('scrape:vote-collections {--term=} {--date=}', function ( - int $term, - string $date, - ScrapeVoteCollectionsAction $action -) { - $term = Term::whereNumber($term)->first(); - $date = Carbon::parse($date); - - $this->info("Scraping vote collections for {$date}"); - $action->execute($term, $date); -})->describe('Scrape and save all vote collections for the given date and term.'); - -Artisan::command('scrape:all {--term=}', function (int $term) { - $this->call('scrape:members', ['--term' => $term]); - $this->call('scrape:members-groups', ['--term' => $term]); - $this->call('scrape:members-info', ['--term' => $term]); - $this->call('scrape:members-photos'); - - $now = Carbon::now(); - $nextMonth = $now->add(1, 'month'); - $this->call('scrape:sessions', [ - '--term' => $term, - '--month' => $now->month, - '--year' => $now->year, - ]); - $this->call('scrape:sessions', [ - '--term' => $term, - '--month' => $nextMonth->month, - '--year' => $nextMonth->year, - ]); - - // Get the newest session without associated votes and try to - // scrape voting lists and votes for the days of the session. - $session = Session::query() - ->whereDoesntHave('votes') - ->whereNull('ignore_when_scraping_voting_lists') - ->orderBy('start_date', 'desc') - ->where('end_date', '<', Carbon::now()) - ->first(); - - if (! $session) { - return $this->info('Exiting as all sessions already have associated votes.'); - } - - $period = $session->start_date->toPeriod($session->end_date); - - $count = VoteCollection::count(); - - foreach ($period as $date) { - $this->call('scrape:vote-collections', [ - '--term' => $term, - '--date' => $date, - ]); - } - - foreach ($period as $date) { - $this->call('scrape:voting-lists', [ - '--term' => $term, - '--date' => $date, - ]); - } - - $this->call('scrape:match'); -})->describe('Runs all scrapers for the given date and matches votes and voting lists.'); - -Artisan::command('scrape:match', function (MatchVotesAndVotingListsAction $action) { - $action->execute(); -})->describe('Matches all available votes to their voting lists.'); - -Artisan::command('share-picture:vote {--votingList=}', function ( - int $votingList, - GenerateVoteSharePicAction $action -) { - $votingList = VotingList::find($votingList); - $action->execute($votingList); -})->describe('Generates a picture showing the overall result for a given vote.'); diff --git a/app/routes/web.php b/app/routes/web.php deleted file mode 100644 index 6d8d5d272..000000000 --- a/app/routes/web.php +++ /dev/null @@ -1,40 +0,0 @@ -name('home'); - -Route::get('/pages/{slug}', [PagesController::class, 'show'])->name('pages.show'); - -Route::get('/monitoring', [MonitoringController::class, 'index'])->name('monitoring.index'); -Route::get('/monitoring/lists/{votingList}', [MonitoringController::class, 'showLists'])->name('monitoring.showLists'); -Route::get('/monitoring/votes/{vote}', [MonitoringController::class, 'showVotes'])->name('monitoring.showVotes'); - -Route::get('/votes', [VotingListsController::class, 'index'])->name('voting-lists.index'); -Route::get('/votes/{votingList}.csv', [VotingListsController::class, 'csv'])->name('voting-list.csv'); -Route::get('/votes/{votingList}.json', [VotingListsController::class, 'json'])->name('voting-list.json'); -Route::get('/votes/{votingList}', [VotingListsController::class, 'show'])->name('voting-list.show'); -Route::get('/votes/{votingList}/summary', [VotingListsController::class, 'summary'])->name('voting-list.summary'); -Route::get('/votes/{votingList}/related', [VotingListsController::class, 'related'])->name('voting-list.related'); - -Route::get('/votes/{votingList}/share-picture', [VotingListsController::class, 'sharePicture'])->name('voting-list.share-picture'); - -Route::get('/members/{member}', [MembersController::class, 'show'])->name('members.show'); -// Handles short URLs and should be registered as the last route -Route::get('/{hashId}', [VotingListsController::class, 'short'])->name('voting-list.short'); diff --git a/app/server.php b/app/server.php deleted file mode 100644 index 5fb6379e7..000000000 --- a/app/server.php +++ /dev/null @@ -1,21 +0,0 @@ - - */ - -$uri = urldecode( - parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH) -); - -// This file allows us to emulate Apache's "mod_rewrite" functionality from the -// built-in PHP web server. This provides a convenient way to test a Laravel -// application without having installed a "real" web server software here. -if ($uri !== '/' && file_exists(__DIR__.'/public'.$uri)) { - return false; -} - -require_once __DIR__.'/public/index.php'; diff --git a/app/storage/app/.gitignore b/app/storage/app/.gitignore deleted file mode 100644 index 8f4803c05..000000000 --- a/app/storage/app/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!public/ -!.gitignore diff --git a/app/storage/framework/.gitignore b/app/storage/framework/.gitignore deleted file mode 100644 index b02b700f1..000000000 --- a/app/storage/framework/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -config.php -routes.php -schedule-* -compiled.php -services.json -events.scanned.php -routes.scanned.php -down diff --git a/app/storage/framework/cache/.gitignore b/app/storage/framework/cache/.gitignore deleted file mode 100644 index 01e4a6cda..000000000 --- a/app/storage/framework/cache/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!data/ -!.gitignore diff --git a/app/storage/framework/cache/data/.gitignore b/app/storage/framework/cache/data/.gitignore deleted file mode 100644 index d6b7ef32c..000000000 --- a/app/storage/framework/cache/data/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/app/storage/framework/sessions/.gitignore b/app/storage/framework/sessions/.gitignore deleted file mode 100644 index d6b7ef32c..000000000 --- a/app/storage/framework/sessions/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/app/storage/framework/testing/.gitignore b/app/storage/framework/testing/.gitignore deleted file mode 100644 index d6b7ef32c..000000000 --- a/app/storage/framework/testing/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/app/storage/framework/views/.gitignore b/app/storage/framework/views/.gitignore deleted file mode 100644 index d6b7ef32c..000000000 --- a/app/storage/framework/views/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/app/storage/logs/.gitignore b/app/storage/logs/.gitignore deleted file mode 100644 index d6b7ef32c..000000000 --- a/app/storage/logs/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/app/tests/CreatesApplication.php b/app/tests/CreatesApplication.php deleted file mode 100644 index 547152f6a..000000000 --- a/app/tests/CreatesApplication.php +++ /dev/null @@ -1,22 +0,0 @@ -make(Kernel::class)->bootstrap(); - - return $app; - } -} diff --git a/app/tests/Feature/.gitkeep b/app/tests/Feature/.gitkeep deleted file mode 100644 index e69de29bb..000000000 diff --git a/app/tests/Feature/Http/Members/ShowTest.php b/app/tests/Feature/Http/Members/ShowTest.php deleted file mode 100644 index 3ac817a71..000000000 --- a/app/tests/Feature/Http/Members/ShowTest.php +++ /dev/null @@ -1,77 +0,0 @@ -firstJan = new Carbon('2020-01-01'); - $this->thirdJan = new Carbon('2020-01-03'); - Carbon::setTestNow($this->thirdJan); - - $greens = Group::factory([ - 'code' => 'GREENS', - 'name' => 'Greens/European Free Alliance', - 'abbreviation' => 'Greens/EFA', - ])->create(); - - $this->member = Member::factory([ - 'first_name' => 'Jane', - 'last_name' => 'DOE', - 'country' => CountryEnum::NL(), - 'twitter' => '@handle', - ])->activeAt($this->firstJan, $greens) - ->activeAt($this->thirdJan, $greens) - ->create(); - - $this->memberId = Member::first()->id; -}); - -afterEach(function () { - Carbon::setTestNow(); -}); - -it('renders successfully', function () { - $response = $this->get("/members/{$this->memberId}"); - expect($response)->toHaveStatus(200); -}); - -it('shows a placeholder when no profile picture is found', function () { - Storage::fake('public'); - - $response = $this->get("/members/{$this->memberId}"); - expect($response)->toHaveSelector("img[src$='assets/placeholder.svg']"); -}); - -it('shows an info box with contact links for active members', function () { - Storage::fake('public'); - Storage::disk('public')->put("members/{$this->member->id}.jpg", 'fake'); - - $response = $this->get("/members/{$this->memberId}"); - - expect($response)->toHaveSelector("img[src$='/members/{$this->memberId}.jpg']"); - expect($response)->toHaveSelectorWithText('.member-header', 'Greens/European Free Alliance'); - expect($response)->toHaveSelectorWithText('.member-header', 'Netherlands'); - - expect($response)->toHaveSelectorWithText('.member-header', 'Twitter'); - expect($response)->not()->toHaveSelectorWithText('member-header', 'Facebook'); -}); - -it('shows contact info for non-active members', function () { - Carbon::setTestNow(); - - Storage::fake('public'); - Storage::disk('public')->put("members/{$this->member->id}.jpg", 'fake'); - - $response = $this->get("/members/{$this->memberId}"); - - expect($response)->toHaveSelector("img[src$='/members/{$this->memberId}.jpg']"); - expect($response)->toHaveSelectorWithText('.member-header', 'Netherlands'); - expect($response)->toHaveSelectorWithText('.member-header', 'Twitter'); - expect($response)->not()->toHaveSelectorWithText('.member-header', 'Facebook'); -}); diff --git a/app/tests/Feature/Http/Monitoring/IndexTest.php b/app/tests/Feature/Http/Monitoring/IndexTest.php deleted file mode 100644 index bdab6214f..000000000 --- a/app/tests/Feature/Http/Monitoring/IndexTest.php +++ /dev/null @@ -1,18 +0,0 @@ - 1, - 'vote_id' => null, - 'description' => 'Unmatched Voting List', - ])->create(); - - $response = $this->get('/monitoring'); - - expect($response)->toHaveSelectorWithText('li', '1 - Unmatched Voting List'); -}); diff --git a/app/tests/Feature/Http/Pages/ShowTest.php b/app/tests/Feature/Http/Pages/ShowTest.php deleted file mode 100644 index fa65bac85..000000000 --- a/app/tests/Feature/Http/Pages/ShowTest.php +++ /dev/null @@ -1,17 +0,0 @@ -get('/pages/about'); - - expect($response)->toHaveStatus(200); - expect($response)->toHaveSelectorWithText('h1', 'About'); - expect($response)->toHaveSelectorWithText('h2', 'Contact Us'); -}); - -it('returns 404 if page does not exist', function () { - $response = $this->get('/pages/404'); - - expect($response)->toHaveStatus(404); -}); diff --git a/app/tests/Feature/Http/VotingLists/CsvTest.php b/app/tests/Feature/Http/VotingLists/CsvTest.php deleted file mode 100644 index df44685d3..000000000 --- a/app/tests/Feature/Http/VotingLists/CsvTest.php +++ /dev/null @@ -1,56 +0,0 @@ - 'GREENS', - 'name' => 'Greens/European Free Alliance', - 'abbreviation' => 'Greens/EFA', - ])->create(); - - $this->greensFor = Member::factory([ - 'first_name' => 'Jane', - 'last_name' => 'DOE', - 'country' => CountryEnum::NL(), - 'id' => 1, - ])->activeAt($date, $greens)->count(1); - - // MEP that got created second, comes earlier in the alphabet! - $this->greensAgainst = Member::factory([ - 'first_name' => 'Jane', - 'last_name' => 'BOE', - 'country' => CountryEnum::NL(), - 'id' => 2, - ])->activeAt($date, $greens)->count(1); - - $this->votingList = VotingList::factory(['date' => $date]) - ->withMembers('FOR', $this->greensFor) - ->withMembers('AGAINST', $this->greensAgainst) - ->create(); -}); - -it('creates a csv with one row per member, sorted alphabetically', function () { - $response = $this->get("/votes/{$this->votingList->id}.csv"); - $expected = "member_id,last_name,first_name,group.abbreviation,group.name,country.code,country.name,position\n"; - $expected .= "2,BOE,Jane,Greens/EFA,\"Greens/European Free Alliance\",NL,Netherlands,AGAINST\n"; - $expected .= "1,DOE,Jane,Greens/EFA,\"Greens/European Free Alliance\",NL,Netherlands,FOR\n"; - - expect(Member::count())->toEqual(2); - - expect($response->content())->toEqual($expected); -}); - -it('sets correct content type', function () { - $response = $this->get("/votes/{$this->votingList->id}.csv"); - expect($response)->toHaveHeader('Content-Type', 'text/csv; charset=UTF-8'); -}); diff --git a/app/tests/Feature/Http/VotingLists/IndexTest.php b/app/tests/Feature/Http/VotingLists/IndexTest.php deleted file mode 100644 index c92453343..000000000 --- a/app/tests/Feature/Http/VotingLists/IndexTest.php +++ /dev/null @@ -1,28 +0,0 @@ - Vote::factory([ - 'session_id' => Session::factory([ - 'start_date' => '2021-01-01', - 'end_date' => '2021-01-05', - 'location' => LocationEnum::BRUSSELS(), - ])->create(), - 'final' => true, - ]), - ])->count(2) - ->create(); -}); - -it('renders successfully', function () { - $response = $this->get('/votes'); - expect($response)->toHaveStatus(200); -}); diff --git a/app/tests/Feature/Http/VotingLists/JsonTest.php b/app/tests/Feature/Http/VotingLists/JsonTest.php deleted file mode 100644 index 41a3f3b5a..000000000 --- a/app/tests/Feature/Http/VotingLists/JsonTest.php +++ /dev/null @@ -1,77 +0,0 @@ - 'GREENS', - 'name' => 'Greens/European Free Alliance', - 'abbreviation' => 'Greens/EFA', - ])->create(); - - $this->greensFor = Member::factory([ - 'first_name' => 'Jane', - 'last_name' => 'DOE', - 'country' => CountryEnum::NL(), - ])->activeAt($date, $greens)->count(1); - - $this->votingList = VotingList::factory([ - 'date' => $date, - 'vote_id' => Vote::factory([ - 'result' => VoteResultEnum::REJECTED(), - 'vote_collection_id' => VoteCollection::factory([ - 'title' => 'Budget 2020', - ]), - ]), - 'description' => 'Budged 2020', - ]) - ->withMembers('FOR', $this->greensFor) - ->create(); -}); - -it('creates a JSON with one row per member', function () { - $response = $this->get("/votes/{$this->votingList->id}.json")->json(); - - $expected = [ - 'title' => 'Budget 2020', - 'date' => '2021-05-23T00:00:00.000000Z', - 'result' => 'rejected', - 'members' => [ - [ - 'member_id' => $this->votingList->members()->first()->id, - 'last_name' => 'DOE', - 'first_name' => 'Jane', - 'group' => [ - 'abbreviation' => 'Greens/EFA', - 'name' => 'Greens/European Free Alliance', - ], - 'country' => [ - 'code' => 'NL', - 'name' => 'Netherlands', - ], - 'position' => 'FOR', - ], - ], - ]; - - expect(Member::count())->toEqual(1); - expect($response)->toEqual($expected); -}); - -it('sets correct content type', function () { - $response = $this->get("/votes/{$this->votingList->id}.json"); - expect($response)->toHaveHeader('Content-Type', 'application/json'); -}); diff --git a/app/tests/Feature/Http/VotingLists/RelatedTest.php b/app/tests/Feature/Http/VotingLists/RelatedTest.php deleted file mode 100644 index 4cf5c326c..000000000 --- a/app/tests/Feature/Http/VotingLists/RelatedTest.php +++ /dev/null @@ -1,75 +0,0 @@ -voteCollection = VoteCollection::factory([ - 'title' => 'The title', - ])->create(); - - $this->finalVotingList = VotingList::factory([ - 'id' => 1, - 'vote_id' => Vote::factory([ - 'vote_collection_id' => $this->voteCollection, - 'type' => VoteTypeEnum::PRIMARY(), - 'final' => true, - ]), - ]); - - $this->nonFinalVotingList = VotingList::factory([ - 'id' => 2, - 'vote_id' => Vote::factory([ - 'vote_collection_id' => $this->voteCollection, - 'type' => VoteTypeEnum::SEPARATE(), - 'subject' => '§ 3', - 'split_part' => '1', - ]), - ]); - - $this->votingListWithoutVote = VotingList::factory([ - 'id' => 3, - 'vote_id' => null, - ]); -}); - -it('renders successfully for final votes', function () { - $this->finalVotingList->create(); - $response = $this->get('/votes/1/related'); - - expect($response)->toHaveStatus(200); -}); - -it('returns 404 for non-final votes', function () { - $this->nonFinalVotingList->create(); - $response = $this->get('/votes/2/related'); - - expect($response)->toHaveStatus(404); -}); - -it('returns 404 for voting list without vote', function () { - $this->votingListWithoutVote->create(); - $response = $this->get('/votes/3/related'); - - expect($response)->toHaveStatus(404); -}); - -it('contains voting list title', function () { - $this->finalVotingList->create(); - $response = $this->get('/votes/1/related'); - - expect($response)->toHaveSelectorWithText('h1', 'The title'); -}); - -it('contains list of related votes', function () { - $this->finalVotingList->create(); - $this->nonFinalVotingList->create(); - $response = $this->get('/votes/1/related'); - - expect($response)->toHaveSelectorWithText('article', 'Separate vote on § 3/1'); -}); diff --git a/app/tests/Feature/Http/VotingLists/SharePicturesTest.php b/app/tests/Feature/Http/VotingLists/SharePicturesTest.php deleted file mode 100644 index 28546258d..000000000 --- a/app/tests/Feature/Http/VotingLists/SharePicturesTest.php +++ /dev/null @@ -1,27 +0,0 @@ -withStats()->create(); - $response = $this->get("/votes/{$votingList->id}/share-picture"); - - expect($response)->toHaveStatus(200); -}); - -it('shows the result of the vote', function () { - $votingList = VotingList::factory([ - 'vote_id' => Vote::factory([ - 'result' => VoteResultEnum::REJECTED(), - ]), - ])->withStats()->create(); - - $response = $this->get("/votes/{$votingList->id}/share-picture"); - - expect($response)->toHaveSelector('.thumb--circle'); -}); diff --git a/app/tests/Feature/Http/VotingLists/ShowTest.php b/app/tests/Feature/Http/VotingLists/ShowTest.php deleted file mode 100644 index 6f84e5f24..000000000 --- a/app/tests/Feature/Http/VotingLists/ShowTest.php +++ /dev/null @@ -1,300 +0,0 @@ -greens = Group::factory([ - 'code' => 'GREENS', - 'name' => 'Greens/European Free Alliance', - 'abbreviation' => 'Greens/EFA', - ])->create(); - - $this->sd = Group::factory([ - 'code' => 'SD', - 'name' => 'Progressive Alliance of Socialists and Democrats', - 'abbreviation' => 'S&D', - ])->create(); - - $greensFor = Member::factory([ - 'first_name' => 'Jane', - 'last_name' => 'DOE', - 'country' => CountryEnum::NL(), - ])->activeAt($date, $this->greens)->count(1); - - $sdAgainst = Member::factory([ - 'first_name' => 'Martin', - 'last_name' => 'EISENBAHN', - 'country' => CountryEnum::DE(), - ])->activeAt($date, $this->sd)->count(2); - - $voteCollection = VoteCollection::factory(['title' => 'My Title'])->create(); - - $votingListDataFinal = [ - 'id' => 1, - 'description' => 'Matched Voting List', - 'date'=> $date, - 'vote_id' => Vote::factory([ - 'type' => VoteTypeEnum::PRIMARY(), - 'result' => VoteResultEnum::ADOPTED(), - 'vote_collection_id' => $voteCollection, - 'final' => true, - ]), - ]; - - $this->votingList = VotingList::factory($votingListDataFinal) - ->withStats() - ->withMembers('FOR', $greensFor) - ->withMembers('AGAINST', $sdAgainst) - ->create(); - - $votingListDataNotFinal = [ - 'id' => 2, - 'description' => 'Matched Voting List For Non Final Vote', - 'date'=> $date, - 'vote_id' => Vote::factory([ - 'type' => VoteTypeEnum::SEPARATE(), - 'result' => VoteResultEnum::ADOPTED(), - 'vote_collection_id' => $voteCollection, - ]), - ]; - - $this->votingListNonFinal = VotingList::factory($votingListDataNotFinal) - ->withStats() - ->withMembers('FOR', $greensFor) - ->withMembers('AGAINST', $sdAgainst) - ->create(); -}); - -it('does not fail if there is no associated vote', function () { - $votingList = VotingList::factory([ - 'id' => 10, - 'vote_id' => null, - 'description' => 'Unmatched Voting List', - ])->withStats()->create(); - - $response = $this->get('/votes/10'); - expect($response)->toHaveStatus(200); -}); - -it('shows a title', function () { - $response = $this->get('/votes/1'); - expect($response)->toHaveSelectorWithText('h1', 'My Title'); -}); - -it('shows the result of the vote', function () { - $response = $this->get('/votes/1'); - expect($response)->toHaveSelectorWithText('h1 + p', 'adopted'); - expect($response)->toHaveSelector('h1 + p > strong .thumb--adopted.thumb--circle'); -}); - -it('displays a bar chart', function () { - $response = $this->get('/votes/1'); - expect($response)->toHaveSelector('.vote-result-chart'); -}); - -it('shows a list of members', function () { - $response = $this->get('/votes/1'); - - expect($response)->toHaveSelectorWithText('[role="tabpanel"] .list-item__text', 'Jane DOE'); - expect($response)->toHaveSelectorWithText('.list-item__text', 'Greens/EFA · Netherlands'); - expect($response)->toHaveSelector('.thumb--for.thumb--circle.list-item__thumb'); -}); - -it('shows a list of groups sorted descending by number of active members', function () { - $this->votingList->stats = array_merge($this->votingList->stats, [ - 'by_group' => [ - $this->sd->id => [ - 'active' => 100, - 'voted' => 25, - 'by_position' => [ - 'FOR' => 25, - 'AGAINST' => 0, - 'ABSTENTION' => 0, - 'ABSENT' => 0, - ], - ], - $this->greens->id => [ - 'active' => 50, - 'voted' => 50, - 'by_position' => [ - 'FOR' => 50, - 'AGAINST' => 0, - 'ABSTENTION' => 0, - 'ABSENT' => 0, - ], - ], - ], - ]); - - $this->votingList->save(); - $response = $this->get('/votes/1'); - expect($response)->toHaveSelectorWithText('[role="tabpanel"] .list-item__text', 'Progressive Alliance of Socialists and Democrats'); - expect($response)->toSeeInOrder([ - 'Progressive Alliance of Socialists and Democrats', - 'Greens/European Free Alliance', - ]); -}); - -it('shows all countries of which MEPs participated sorted descending by number of active members', function () { - $this->votingList->stats = array_merge($this->votingList->stats, [ - 'by_country' => [ - 'DE' => [ - 'active' => 100, - 'voted' => 25, - 'by_position' => [ - 'FOR' => 25, - 'AGAINST' => 0, - 'ABSTENTION' => 0, - 'ABSENT' => 0, - ], - ], - 'NL' => [ - 'active' => 200, - 'voted' => 50, - 'by_position' => [ - 'FOR' => 50, - 'AGAINST' => 0, - 'ABSTENTION' => 0, - 'ABSENT' => 0, - ], - ], - ], - ]); - - $this->votingList->save(); - $response = $this->get('/votes/1'); - - expect($response)->toHaveSelectorWithText('[role="tabpanel"] .list-item__text', 'Netherlands'); - expect($response)->toSeeInOrder([ - 'Netherlands', - 'Germany', - ]); -}); - -it('shows a panel for link to related votes if associated vote is final', function () { - $response = $this->get('/votes/1'); - expect($response)->toHaveSelectorWithText('.action-panel', 'Related Votes'); - - $response = $this->get('/votes/2'); - - expect($response)->not()->toHaveSelectorWithText('.action-panel', 'Related Votes'); -}); - -it('has share meta tags', function () { - Storage::fake('public'); - Storage::disk('public')->put('share-pictures/vote-sharepic-1.png', 'test'); - - $response = $this->get('/votes/1'); - expect($response)->toHaveSelector('meta[property="og:image"][content$="vote-sharepic-1.png"]'); - expect($response)->toHaveSelector('meta[property="og:image:alt"][content^="A barchart visualizing"]'); -}); - -it('has default share meta tags if vote is not final', function () { - Storage::fake('public'); - Storage::disk('public')->put('share-pictures/vote-sharepic-2.png', 'test'); - - $response = $this->get('/votes/2'); - expect($response)->toHaveSelector('meta[property="og:image"][content$="default-share-picture.png"]'); - expect($response)->toHaveSelector('meta[property="og:image:alt"][content^="A photo of the hemicycle"]'); -}); - -it('displays share button for final votes', function () { - $response = $this->get('/votes/1'); - expect($response)->toHaveSelector('.share-button'); - - $response = $this->get('/votes/2'); - expect($response)->not()->toHaveSelector('.share-button'); -}); - -it('shows a callout if associated vote is not final', function () { - $response = $this->get('/votes/2'); - - expect($response)->toHaveSelector('.callout'); - - $response = $this->get('/votes/1'); - - expect($response)->not()->toHaveSelector('.callout--warning'); -}); - -it('callout shows appropriate text for non-final votes', function () { - $response = $this->get('/votes/2'); - expect($response)->toHaveSelectorWithText('.callout--warning', 'separate'); - - $vote = VotingList::find(2)->vote; - $vote->type = VoteTypeEnum::AMENDMENT(); - $vote->save(); - - $response = $this->get('/votes/2'); - expect($response)->toHaveSelectorWithText('.callout--warning', 'amendment'); -}); - -it('does not show a url in callout for a non-matched final vote', function () { - $collection = VoteCollection::factory()->create(); - - VotingList::factory([ - 'id' => 10, - 'vote_id' => Vote::factory([ - 'vote_collection_id' => $collection, - 'type' => VoteTypeEnum::SEPARATE(), - ]), - ])->withStats()->create(); - - Vote::factory([ - 'vote_collection_id' => $collection, - 'type' => VoteTypeEnum::PRIMARY(), - 'final' => true, - ])->create(); - - $response = $this->get('/votes/10'); - expect($response)->toHaveStatus(200); - expect($response)->not()->toHaveSelectorWithText('.callout--warning', 'result of the final vote'); -}); - -it('displays summary for final votes', function () { - Summary::factory([ - 'reference' => $this->votingList->vote->voteCollection->reference, - 'oeil_id' => 1234567, - 'text' => "First paragraph is stripped.\n\nThis is the summary.", - ])->create(); - - $response = $this->get('/votes/1'); - - expect($response)->toHaveSelectorWithText('p', 'This is the summary.'); -}); - -it('does not display summary for non-final votes', function () { - Summary::factory([ - 'reference' => $this->votingListNonFinal->vote->voteCollection->reference, - 'oeil_id' => 1234567, - 'text' => "First paragraph is stripped.\n\nThis is the summary.", - ])->create(); - - $response = $this->get('/votes/2'); - - expect($response)->not()->toHaveSelectorWithText('p', 'This is the summary.'); -}); - -it('is reachable with short url', function () { - $hashId = VotingList::find(1)->hash_id; - $response = $this->get("/{$hashId}"); - expect($response)->toRedirectTo(route('voting-list.show', ['votingList' => 1])); -}); - -it('returns 404 for non-existent short-url', function () { - $response = $this->get('hash01'); - expect($response)->toHaveStatus(404); -}); diff --git a/app/tests/Feature/Http/VotingLists/SummaryTest.php b/app/tests/Feature/Http/VotingLists/SummaryTest.php deleted file mode 100644 index 6415af509..000000000 --- a/app/tests/Feature/Http/VotingLists/SummaryTest.php +++ /dev/null @@ -1,49 +0,0 @@ -votingList = VotingList::factory([ - 'vote_id' => Vote::factory([ - 'final' => true, - 'vote_collection_id' => VoteCollection::factory([ - 'reference' => 'A9-1234/2021', - ]), - ]), - ])->create(); -}); - -it('returns 404 if summary does not exist', function () { - $response = $this->get("/votes/{$this->votingList->id}/summary"); - expect($response)->toHaveStatus(404); -}); - -it('returns 404 if vote is not final', function () { - $this->votingList->vote->update(['final' => false]); - - Summary::factory([ - 'reference' => 'A9-1234/2021', - 'text' => 'Summary for A9-1234/2021', - ])->create(); - - $response = $this->get("/votes/{$this->votingList->id}/summary"); - expect($response)->toHaveStatus(404); -}); - -it('renders successfully if summary exists', function () { - Summary::factory([ - 'reference' => 'A9-1234/2021', - 'text' => 'Summary for A9-1234/2021', - ])->create(); - - $response = $this->get("/votes/{$this->votingList->id}/summary"); - - expect($response)->toHaveStatus(200); - expect($response)->toSee('Summary for A9-1234/2021'); -}); diff --git a/app/tests/Pest.php b/app/tests/Pest.php deleted file mode 100644 index 82c9aa7a8..000000000 --- a/app/tests/Pest.php +++ /dev/null @@ -1,37 +0,0 @@ -extend('toSee', function (string $string) { - return $this->value->assertSee($string); -}); - -expect()->extend('toSeeText', function (string $text) { - return $this->value->assertSeeText($text); -}); - -expect()->extend('toSeeInOrder', function (array $strings) { - return $this->value->assertSeeInOrder($strings); -}); - -expect()->extend('toSeeTextInOrder', function (array $texts) { - return $this->value->assertSeeTextInOrder($texts); -}); - -expect()->extend('toHaveStatus', function (int $code) { - return $this->value->assertStatus($code); -}); - -expect()->extend('toHaveSelector', function (string $selector, ?int $count = null) { - return $this->value->assertSelector($selector, $count); -}); - -expect()->extend('toHaveSelectorWithText', function (string $selector, string $text, ?int $count = null) { - return $this->value->assertSelectorText($selector, $text, $count); -}); - -expect()->extend('toHaveHeader', function (string $headerName, mixed $value = null) { - return $this->value->assertHeader($headerName, $value); -}); - -expect()->extend('toRedirectTo', function (string $uri) { - return $this->value->assertRedirect($uri); -}); diff --git a/app/tests/TestCase.php b/app/tests/TestCase.php deleted file mode 100644 index 2932d4a69..000000000 --- a/app/tests/TestCase.php +++ /dev/null @@ -1,10 +0,0 @@ -action = $this->app->make(CompileStatsAction::class); - $this->date = new Carbon('2020-01-01'); -}); - -it('compiles general stats', function () { - $for = Member::factory() - ->activeAt($this->date) - ->count(3); - - $against = Member::factory() - ->activeAt($this->date) - ->count(2); - - $abstention = Member::factory() - ->activeAt($this->date) - ->count(1); - - $noVote = Member::factory() - ->activeAt($this->date) - ->count(1); - - $votingList = VotingList::factory() - ->withDate($this->date) - ->withMembers('FOR', $for) - ->withMembers('AGAINST', $against) - ->withMembers('ABSTENTION', $abstention) - ->withMembers('NOVOTE', $noVote) - ->create(); - - $this->action->execute($votingList); - - $stats = $votingList->fresh()->stats; - - expect($stats['voted'])->toEqual(6); - expect($stats['active'])->toEqual(7); - expect($stats['by_position'])->toEqual([ - 'FOR' => 3, - 'AGAINST' => 2, - 'ABSTENTION' => 1, - 'NOVOTE' => 1, - ]); -}); - -it('compiles stats per country', function () { - $deFor = Member::factory() - ->country('DE') - ->activeAt($this->date) - ->count(1); - - $deAgainst = Member::factory() - ->country('DE') - ->activeAt($this->date) - ->count(1); - - $frFor = Member::factory() - ->country('FR') - ->activeAt($this->date) - ->count(2); - - $frNoVote = Member::factory() - ->country('FR') - ->activeAt($this->date) - ->count(1); - - $votingList = VotingList::factory() - ->withDate($this->date) - ->withMembers('FOR', $deFor) - ->withMembers('AGAINST', $deAgainst) - ->withMembers('FOR', $frFor) - ->withMembers('NOVOTE', $frNoVote) - ->create(); - - $this->action->execute($votingList); - - $stats = $votingList->fresh()->stats['by_country']; - - expect($stats['DE'])->toEqual([ - 'voted' => 2, - 'active' => 2, - 'by_position' => [ - 'FOR' => 1, - 'AGAINST' => 1, - 'ABSTENTION' => 0, - 'NOVOTE' => 0, - ], - ]); - - expect($stats['FR'])->toEqual([ - 'voted' => 2, - 'active' => 3, - 'by_position' => [ - 'FOR' => 2, - 'AGAINST' => 0, - 'ABSTENTION' => 0, - 'NOVOTE' => 1, - ], - ]); -}); - -it('compiles stats per group', function () { - $greens = Group::factory(['code' => 'GREENS'])->create(); - $epp = Group::factory(['code' => 'EPP'])->create(); - - $greensFor = Member::factory() - ->activeAt($this->date, $greens) - ->count(1); - - $eppAgainst = Member::factory() - ->activeAt($this->date, $epp) - ->count(2); - - $eppNoVote = Member::factory() - ->activeAt($this->date, $epp) - ->count(1); - - $votingList = VotingList::factory() - ->withDate($this->date) - ->withMembers('FOR', $greensFor) - ->withMembers('AGAINST', $eppAgainst) - ->withMembers('NOVOTE', $eppNoVote) - ->create(); - - $this->action->execute($votingList); - - $stats = $votingList->fresh()->stats['by_group']; - - expect($stats[$greens->id])->toEqual([ - 'voted' => 1, - 'active' => 1, - 'by_position' => [ - 'FOR' => 1, - 'AGAINST' => 0, - 'ABSTENTION' => 0, - 'NOVOTE' => 0, - ], - ]); - - expect($stats[$epp->id])->toEqual([ - 'voted' => 2, - 'active' => 3, - 'by_position' => [ - 'FOR' => 0, - 'AGAINST' => 2, - 'ABSTENTION' => 0, - 'NOVOTE' => 1, - ], - ]); -}); diff --git a/app/tests/Unit/Actions/GenerateVoteSharePicActionTest.php b/app/tests/Unit/Actions/GenerateVoteSharePicActionTest.php deleted file mode 100644 index c985eedbe..000000000 --- a/app/tests/Unit/Actions/GenerateVoteSharePicActionTest.php +++ /dev/null @@ -1,34 +0,0 @@ -action = new GenerateVoteSharePicAction(); - - $this->votingList = VotingList::factory([ - 'vote_id' => Vote::factory(), - ])->withStats()->create(); -}); - -it('uploads an image', function () { - $this->action->execute($this->votingList); - - expect(Storage::disk('public')->exists("share-pictures/vote-sharepic-{$this->votingList->id}.png"))->toEqual(true); -}); - -it('does not create a new one if a share-pic already exists', function () { - $this->action->execute($this->votingList); - - $modifiedTimestamp = Storage::disk('public')->lastModified("share-pictures/vote-sharepic-{$this->votingList->id}.png"); - - $this->action->execute($this->votingList); - - expect(Storage::disk('public')->lastModified("share-pictures/vote-sharepic-{$this->votingList->id}.png"))->toEqual($modifiedTimestamp); -}); diff --git a/app/tests/Unit/Actions/MatchVotesAndVotingListsActionTest.php b/app/tests/Unit/Actions/MatchVotesAndVotingListsActionTest.php deleted file mode 100644 index 84298b18b..000000000 --- a/app/tests/Unit/Actions/MatchVotesAndVotingListsActionTest.php +++ /dev/null @@ -1,202 +0,0 @@ -action = $this->app->make(MatchVotesAndVotingListsAction::class); - - $this->voteCollection = VoteCollection::factory([ - 'reference' => 'A9-0123/2021', - ])->create(); - - $this->exceptionHandler = $this->mock(App\Exceptions\Handler::class); - app()->bind(ExceptionHandler::class, fn () => $this->exceptionHandler); - - Storage::fake('public'); -}); - -it('matches vote with title', function () { - $vote = Vote::factory([ - 'type' => VoteTypeEnum::AMENDMENT(), - 'vote_collection_id' => $this->voteCollection->id, - 'formatted' => 'Am 1/2', - 'remarks' => '102030', - ])->create(); - - $votingList = VotingList::factory([ - 'description' => 'Quelques textes en français - Some English text - Irgendein deutscher Text - A9-0123/2021 - Name of rapporteur - Am 1/2', - 'reference' => 'A9-0123/2021', - ])->withStats(10, 20, 30)->create(); - - $this->action->execute(); - - expect($votingList->fresh()->vote->id)->toEqual($vote->id); -}); - -it('ignores votes marked as unmatched', function () { - $vote = Vote::factory([ - 'type' => VoteTypeEnum::AMENDMENT(), - 'vote_collection_id' => $this->voteCollection->id, - 'formatted' => 'Am 1/2', - 'remarks' => '102030', - 'unmatched' => true, - ])->create(); - - $votingList = VotingList::factory([ - 'description' => 'Quelques textes en français - Some English text - Irgendein deutscher Text - A9-0123/2021 - Name of rapporteur - Am 1/2', - 'reference' => 'A9-0123/2021', - ])->withStats(10, 20, 30)->create(); - - $this->action->execute(); - - expect($votingList->fresh()->vote?->id)->toBeNull(); -}); - -it('matches vote without title', function () { - $vote = Vote::factory([ - 'type' => VoteTypeEnum::AMENDMENT(), - 'vote_collection_id' => $this->voteCollection->id, - 'formatted' => 'Am 1/2', - 'remarks' => '102030', - ])->create(); - - $votingList = VotingList::factory([ - 'description' => 'A9-0123/2021 - Name of rapporteur - Am 1/2', - 'reference' => 'A9-0123/2021', - ])->withStats(10, 20, 30)->create(); - - $this->action->execute(); - - expect($votingList->fresh()->vote->id)->toEqual($vote->id); -}); - -it('matches based on vote reference', function () { - $vote = Vote::factory([ - 'vote_collection_id' => $this->voteCollection->id, - 'reference' => 'B9-4567/2021', - 'formatted' => 'Am 1/2', - 'remarks' => '102030', - ])->create(); - - $votingList = VotingList::factory([ - 'description' => 'B9-4567/2021 - Name of rapporteur - Am 1/2', - 'reference' => 'B9-4567/2021', - ])->withStats(10, 20, 30)->create(); - - $this->action->execute(); - - expect($votingList->fresh()->vote->id)->toEqual($vote->id); -}); - -it('reports an error when a vote is present but no voting list', function () { - $vote = Vote::factory(['id' => 1])->create(); - $message = 'No voting list for vote 1 found.'; - - $this->exceptionHandler - ->shouldReceive('report') - ->once() - ->with(Mockery::type(CouldNotMatchVoteException::class)) - ->withArgs(fn ($arg) => $arg->getMessage() === $message); - - $this->action->execute(); -}); - -it('reports an error when a vote has multiple matching voting lists', function () { - Vote::factory([ - 'id' => 1, - 'vote_collection_id' => $this->voteCollection->id, - 'formatted' => 'Am 1/2', - 'type' => VoteTypeEnum::AMENDMENT(), - ])->create(); - - VotingList::factory([ - 'description' => 'A9-0123/2021 - Name of rapporteur - Am 1/2', - 'reference' => 'A9-0123/2021', - ])->count(2)->create(); - - $message = 'Multiple voting lists for vote 1 found.'; - - $this->exceptionHandler - ->shouldReceive('report') - ->once() - ->with(Mockery::type(CouldNotMatchVoteException::class)) - ->withArgs(fn ($arg) => $arg->getMessage() === $message); - - $this->action->execute(); -}); - -it('reports an error when a vote and its matched voting list have different results', function () { - Vote::factory([ - 'id' => 1, - 'vote_collection_id' => $this->voteCollection->id, - 'formatted' => 'Am 1/2', - 'type' => VoteTypeEnum::AMENDMENT(), - 'remarks' => '102030', - ])->create(); - - VotingList::factory([ - 'id' => 1, - 'description' => 'A9-0123/2021 - Name of rapporteur - Am 1/2', - 'reference' => 'A9-0123/2021', - ])->withStats(30, 20, 10)->create(); - - $message = 'Result for matched voting list 1 and vote 1 are not equal.'; - - $this->exceptionHandler - ->shouldReceive('report') - ->once() - ->with(Mockery::type(CouldNotMatchVoteException::class)) - ->withArgs(fn ($arg) => $arg->getMessage() === $message); - - $this->action->execute(); -}); - -it('generates share-pictures for matched final votes', function () { - $vote = Vote::factory([ - 'type' => VoteTypeEnum::SEPARATE(), - 'final' => true, - 'vote_collection_id' => $this->voteCollection->id, - 'formatted' => 'Am 1/2', - 'remarks' => '102030', - ])->create(); - - $votingList = VotingList::factory([ - 'description' => 'Quelques textes en français - Some English text - Irgendein deutscher Text - A9-0123/2021 - Name of rapporteur - Am 1/2', - 'reference' => 'A9-0123/2021', - ])->withStats(10, 20, 30)->create(); - - $this->action->execute(); - - expect(Storage::disk('public')->exists("share-pictures/vote-sharepic-{$votingList->id}.png"))->toEqual(true); -}); - -it('logs how many votes were matched and how many unmatched votes remain', function () { - $vote = Vote::factory([ - 'type' => VoteTypeEnum::AMENDMENT(), - 'vote_collection_id' => $this->voteCollection->id, - 'formatted' => 'Am 1/2', - 'remarks' => '102030', - ])->create(); - - $votingList = VotingList::factory([ - 'description' => 'Quelques textes en français - Some English text - Irgendein deutscher Text - A9-0123/2021 - Name of rapporteur - Am 1/2', - 'reference' => 'A9-0123/2021', - ])->withStats(10, 20, 30)->create(); - - Log::shouldReceive('info')->once()->withArgs(function ($message) { - return Str::endsWith($message, 'Matched 1 votes. 0 votes are still unmatched.'); - }); - - $this->action->execute(); -}); diff --git a/app/tests/Unit/Actions/ScrapeActionTest.php b/app/tests/Unit/Actions/ScrapeActionTest.php deleted file mode 100644 index dd3ec5ac0..000000000 --- a/app/tests/Unit/Actions/ScrapeActionTest.php +++ /dev/null @@ -1,22 +0,0 @@ -action = $this->app->make(ScrapeAction::class); - Http::fakeJsonFromFile('*/hello?name=John', 'hello.json'); - - $data = $this->action->execute('hello', ['name' => 'John']); - - Http::assertSentCount(1); - expect($data)->toEqual(['message' => 'Hello John!']); -}); - -it('throws exception', function () { - $this->action = $this->app->make(ScrapeAction::class); - Http::fake(['*/hello?name=John' => Http::response('', 500)]); - $this->action->execute('hello', ['name' => 'John']); -})->throws(ScrapingException::class); diff --git a/app/tests/Unit/Actions/ScrapeMemberGroupsActionTest.php b/app/tests/Unit/Actions/ScrapeMemberGroupsActionTest.php deleted file mode 100644 index 1853b1133..000000000 --- a/app/tests/Unit/Actions/ScrapeMemberGroupsActionTest.php +++ /dev/null @@ -1,52 +0,0 @@ -action = $this->app->make(ScrapeMemberGroupsAction::class); - - $this->member = Member::factory(['web_id' => 12345])->create(); - $this->group = Group::factory(['code' => 'GREENS'])->create(); - $this->term = Term::factory(['number' => 8])->create(); -}); - -it('creates new group membership records', function () { - Http::fakeJsonFromFile('*/member_groups?web_id=12345&term=8', 'member_groups.json'); - - $this->action->execute($this->member, $this->term); - - $memberships = $this->member->groupMemberships(); - - expect($memberships->count())->toEqual(1); - expect($memberships->first()->group->id)->toEqual($this->group->id); - expect($memberships->first()->term->id)->toEqual($this->term->id); - expect($memberships->first()->start_date)->toEqual('2014-07-02'); - expect($memberships->first()->end_date)->toBeNull(); -}); - -it('updates existing group membership records', function () { - Http::fakeJsonFromFile('*/member_groups?web_id=12345&term=8', 'member_groups-2.json'); - - GroupMembership::factory([ - 'member_id' => $this->member->id, - 'group_id' => $this->group->id, - 'term_id' => $this->term->id, - 'start_date' => '2014-07-02', - 'end_date' => null, - ])->create(); - - $this->action->execute($this->member, $this->term); - - $memberships = $this->member->groupMemberships(); - - expect($memberships->count())->toEqual(1); - expect($memberships->first()->start_date)->toEqual('2014-07-02'); - expect($memberships->first()->end_date)->toEqual('2019-07-01'); -}); diff --git a/app/tests/Unit/Actions/ScrapeMemberInfoActionTest.php b/app/tests/Unit/Actions/ScrapeMemberInfoActionTest.php deleted file mode 100644 index fa4782bfb..000000000 --- a/app/tests/Unit/Actions/ScrapeMemberInfoActionTest.php +++ /dev/null @@ -1,38 +0,0 @@ -action = $this->app->make(ScrapeMemberInfoAction::class); - Http::fakeJsonFromFile('*/member_info?web_id=12345', 'member_info.json'); - - $member = Member::factory(['web_id' => 12345])->create(); - - $this->action->execute($member); - - $attributes = $member->fresh()->getAttributes(); - $attributes = Arr::except($attributes, [ - 'created_at', - 'updated_at', - 'id', - ]); - - expect($attributes)->toEqual([ - 'web_id' => 12345, - 'first_name' => 'Jane', - 'last_name' => 'Doe', - 'first_name_normalized' => 'jane', - 'last_name_normalized' => 'doe', - 'country' => CountryEnum::GB(), - 'date_of_birth' => '1975-01-01', - 'twitter' => 'EinTwitterLink', - 'facebook' => null, - 'email' => null, - ]); -}); diff --git a/app/tests/Unit/Actions/ScrapeMembersActionTest.php b/app/tests/Unit/Actions/ScrapeMembersActionTest.php deleted file mode 100644 index c9cfe7cf8..000000000 --- a/app/tests/Unit/Actions/ScrapeMembersActionTest.php +++ /dev/null @@ -1,45 +0,0 @@ -action = $this->app->make(ScrapeMembersAction::class); - $this->term = Term::factory(['number' => 9])->create(); - Http::fakeJsonFromFile('*/members?term=9', 'members.json'); -}); - -it('creates new member records', function () { - $this->action->execute($this->term); - - Http::assertSentCount(1); - expect(Member::count())->toEqual(1); - expect(Member::first()->web_id)->toEqual(12345); - - $termNumbers = Member::first()->terms()->pluck('number')->toArray(); - expect($termNumbers)->toEqualCanonicalizing([9]); -}); - -it('associates members only with the given terms', function () { - $term = Term::factory(['number' => 8])->create(); - - $this->action->execute($this->term); - expect(Member::count())->toEqual(1); - expect($term->members()->count())->toEqual(0); -}); - -it('merges terms with existing member records', function () { - $member = Member::factory(['web_id' => 12345]) - ->has(Term::factory(['number' => 8])) - ->create(); - - $this->action->execute($this->term); - - expect(Member::count())->toEqual(1); - $termNumbers = Member::first()->terms()->pluck('number')->toArray(); - expect($termNumbers)->toEqualCanonicalizing([8, 9]); -}); diff --git a/app/tests/Unit/Actions/ScrapeSessionsActionTest.php b/app/tests/Unit/Actions/ScrapeSessionsActionTest.php deleted file mode 100644 index 654012e3c..000000000 --- a/app/tests/Unit/Actions/ScrapeSessionsActionTest.php +++ /dev/null @@ -1,59 +0,0 @@ -action = $this->app->make(ScrapeSessionsAction::class); - - Http::fakeJsonFromFile('*/sessions_obs?year=2021&month=11', 'sessions_obs.json'); - Http::fakeJsonFromFile('*/sessions_parl?term=9&year=2021&month=11', 'sessions_parl.json'); -}); - -it('creates new session records', function () { - $this->action->execute(9, 2021, 11); - - expect(Session::count())->toEqual(3); - - $session = Session::find(1); - - expect($session->start_date)->toEqual(Carbon::create('2021-11-02')); - expect($session->end_date)->toEqual(Carbon::create('2021-11-04')); - expect($session->location)->toEqual(LocationEnum::NONE()); - - $session = Session::find(2); - - expect($session->start_date)->toEqual(Carbon::create('2021-11-10')); - expect($session->end_date)->toEqual(Carbon::create('2021-11-11')); - expect($session->location)->toEqual(LocationEnum::BRUSSELS()); - - $session = Session::find(3); - - expect($session->start_date)->toEqual(Carbon::create('2021-11-22')); - expect($session->end_date)->toEqual(Carbon::create('2021-11-25')); - expect($session->location)->toEqual(LocationEnum::STRASBOURG()); -}); - -it('updates existing session records when scraping repeatedly', function () { - Session::factory([ - 'start_date' => '2021-11-10', - 'end_date' => '2021-11-11', - 'location' => LocationEnum::STRASBOURG(), - ])->create(); - - $id = Session::all()->first()->id; - - $this->action->execute(9, 2021, 11); - - expect(Session::count())->toEqual(3); - - $session = Session::find($id); - - expect($session->location)->toEqual(LocationEnum::BRUSSELS()); - expect($session->start_date)->toEqual(Carbon::create('2021-11-10')); -}); diff --git a/app/tests/Unit/Actions/ScrapeSummaryActionTest.php b/app/tests/Unit/Actions/ScrapeSummaryActionTest.php deleted file mode 100644 index dade53654..000000000 --- a/app/tests/Unit/Actions/ScrapeSummaryActionTest.php +++ /dev/null @@ -1,27 +0,0 @@ -action = $this->app->make(ScrapeSummaryAction::class); - - Http::fakeJsonFromFile('*/summary_id?reference=B9-0116%2F2021&week_of_year=53', 'summary_id.json'); - Http::fakeJsonFromFile('*/summary?summary_id=1234567', 'summary.json'); - - $voteCollection = VoteCollection::factory([ - 'reference' => 'B9-0116/2021', - 'date' => '01/01/2021', - ])->make(); - - $this->action->execute($voteCollection); - - $summary = Summary::firstWhere('reference', 'B9-0116/2021'); - - expect($summary->reference)->toEqual('B9-0116/2021'); - expect($summary->text)->toEqual('Summary of the adopted text'); -}); diff --git a/app/tests/Unit/Actions/ScrapeVoteCollectionsActionTest.php b/app/tests/Unit/Actions/ScrapeVoteCollectionsActionTest.php deleted file mode 100644 index 1144116df..000000000 --- a/app/tests/Unit/Actions/ScrapeVoteCollectionsActionTest.php +++ /dev/null @@ -1,112 +0,0 @@ -action = $this->app->make(ScrapeVoteCollectionsAction::class); - $this->term = Term::factory(['number' => 9])->create(); - $this->date = new Carbon('2021-03-08'); - - Http::fakeJsonFromFile('*/vote_collections?term=9&date=2021-03-08', 'vote_collections.json'); - Http::fakeJsonFromFile('*/vote_collections?term=9&date=2021-10-19', 'vote_collections-no-reference.json'); - Http::fakeJsonFromFile('*/summary_id?reference=A9-0019%2F2021&week_of_year=10', 'summary_id.json'); - Http::fakeJsonFromFile('*/summary?summary_id=1234567', 'summary.json'); -}); - -it('creates new vote collection records', function () { - $this->action->execute($this->term, $this->date); - - expect(VoteCollection::count())->toEqual(1); - - $voteCollection = VoteCollection::first(); - - expect($voteCollection->title)->toEqual('A WTO-compatible EU carbon border adjustment mechanism'); - expect($voteCollection->reference)->toEqual('A9-0019/2021'); -}); - -it('creates associated votes', function () { - $this->action->execute($this->term, $this->date); - - $voteCollection = VoteCollection::first(); - expect($voteCollection->votes()->count())->toEqual(28); - - $vote = $voteCollection->votes()->skip(5)->first(); - - expect($vote->subject)->toEqual('§ 13'); - expect($vote->author)->toEqual('original text'); - expect($vote->type)->toEqual(VoteTypeEnum::SEPARATE()); - expect($vote->amendment)->toEqual(null); - expect($vote->split_part)->toEqual(1); - expect($vote->formatted)->toEqual('§ 13/1'); -}); - -it('updates existing voting list record', function () { - $voteCollection = VoteCollection::factory([ - 'title' => 'A WTO-compatible EU carbon border adjustment mechanism', - 'reference' => 'Old reference', - 'date' => $this->date, - 'term_id' => $this->term->id, - ])->create(); - - $this->action->execute($this->term, $this->date); - - expect(VoteCollection::count())->toEqual(1); -}); - -it('does not create duplicate votes when scraping voting list multiple times', function () { - $this->action->execute($this->term, $this->date); - $this->action->execute($this->term, $this->date); - - $voteCollection = VoteCollection::first(); - - expect(Vote::count())->toEqual(28); -}); - -it('scrapes summary for reference', function () { - $this->action->execute($this->term, $this->date); - $voteCollection = VoteCollection::first(); - - expect($voteCollection->summary->reference)->toBe('A9-0019/2021'); -}); - -it('does not scrape summary if there is no reference', function () { - $this->action->execute($this->term, new Carbon('2021-10-19')); - $voteCollection = VoteCollection::first(); - - expect($voteCollection->summary)->toBe(null); -}); - -it('does not scrape summary if summary exists', function () { - Summary::factory([ - 'reference' => 'A9-0019/2021', - 'text' => 'This summary already exists', - ])->create(); - - $this->action->execute($this->term, $this->date); - $voteCollection = VoteCollection::first(); - - expect(Summary::count())->toEqual(1); - expect($voteCollection->summary->text)->toEqual('This summary already exists'); -}); - -it('references correct session in created votes', function () { - $session = Session::factory([ - 'start_date' =>'2021-03-06', - 'end_date' =>'2021-03-09', - 'id' => 1, - ])->create(); - - $this->action->execute($this->term, $this->date); - - expect(Vote::first()->session_id)->toEqual(1); -}); diff --git a/app/tests/Unit/Actions/ScrapeVotingListsActionTest.php b/app/tests/Unit/Actions/ScrapeVotingListsActionTest.php deleted file mode 100644 index 989e03585..000000000 --- a/app/tests/Unit/Actions/ScrapeVotingListsActionTest.php +++ /dev/null @@ -1,214 +0,0 @@ -action = $this->app->make(ScrapeVotingListsAction::class); - $this->term = Term::factory(['number' => 9])->create(); - $this->date = new Carbon('2019-10-24'); -}); - -it('creates new voting list record including relations', function () { - Http::fakeJsonFromFile('*/voting_lists?term=9&date=2019-10-24', 'voting_lists.json'); - - $this->action->execute($this->term, $this->date); - - expect(VotingList::count())->toEqual(1); - - $votingList = VotingList::first(); - - expect($votingList->doceo_vote_id)->toEqual(109619); - expect($votingList->date)->toEqual(new Carbon('2019-10-24')); - expect($votingList->description)->toEqual('B9-0154/2019 - § 1/2'); - expect($votingList->reference)->toEqual('B9-0154/2019'); - expect($votingList->term->id)->toEqual($this->term->id); -}); - -it('updates existing voting list record based on doceo_vote_id', function () { - Http::fakeJsonFromFile('*/voting_lists?term=9&date=2019-10-24', 'voting_lists.json'); - - $votingList = VotingList::factory([ - 'doceo_vote_id' => 109619, - 'date' => $this->date, - 'term_id' => $this->term->id, - 'description' => 'Old Description', - ])->create(); - - $this->action->execute($this->term, $this->date); - - expect(VotingList::count())->toEqual(1); -}); - -it('updates existing voting lists based on description and reference if doceo_vote_id is null', function () { - Http::fakeJsonFromFile('*/voting_lists?term=9&date=2019-10-24', 'voting_lists-7.json'); - - $this->action->execute($this->term, $this->date); - - expect(VotingList::count())->toEqual(2); - expect(VotingList::pluck('description'))->toMatchArray([ - 'Lorem Ipsum - Am 1', - 'Lorem Ipsum - Am 2', - ]); -}); - -it('finds and relates members with position', function () { - Http::fakeJsonFromFile('*/voting_lists?term=9&date=2019-10-24', 'voting_lists-2.json'); - - $member = Member::factory([ - 'first_name' => 'Jane', - 'last_name' => 'Doe', - ])->activeAt($this->date)->create(); - - $this->action->execute($this->term, $this->date); - - $votingList = VotingList::first(); - - expect($member->votingLists()->count())->toEqual(1); - expect($votingList->members()->count())->toEqual(1); - - $position = $member->votingLists()->first()->pivot->position; - expect($position)->toEqual(VotePositionEnum::FOR()); -}); - -it('updates related members', function () { - Http::fakeJsonFromFile('*/voting_lists?term=9&date=2019-10-24', 'voting_lists-2.json'); - - $votingList = VotingList::factory([ - 'doceo_vote_id' => 109619, - 'date' => $this->date, - 'term_id' => $this->term->id, - ])->create(); - - $member = Member::factory([ - 'first_name' => 'Jane', - 'last_name' => 'Doe', - ])->activeAt($this->date)->create(); - - $votingList->members()->attach($member, [ - 'position' => VotePositionEnum::AGAINST(), - ]); - - $this->action->execute($this->term, $this->date); - - expect($votingList->members()->count())->toEqual(1); - - $position = $votingList->members()->first()->pivot->position; - $expected = VotePositionEnum::FOR(); - - expect($position)->toEqual($expected); -}); - -it('ignores inactive members', function () { - Http::fakeJsonFromFile('*/voting_lists?term=9&date=2019-10-24', 'voting_lists-2.json'); - - $inactiveMember = Member::factory([ - 'first_name' => 'Jane', - 'last_name' => 'Doe', - ])->create(); - - $activeMember = Member::factory([ - 'first_name' => 'Jane', - 'last_name' => 'Doe', - ])->activeAt($this->date)->create(); - - $this->action->execute($this->term, $this->date); - - $votingList = VotingList::first(); - - expect($votingList->members()->count())->toEqual(1); - expect($votingList->members()->first()->id)->toEqual($activeMember->id); -}); - -it('finds members by first and last name if ambiguous', function () { - Http::fakeJsonFromFile('*/voting_lists?term=9&date=2019-10-24', 'voting_lists-3.json'); - - $jane = Member::factory([ - 'first_name' => 'Jane', - 'last_name' => 'Doe', - ])->activeAt($this->date)->create(); - - $john = Member::factory([ - 'first_name' => 'John', - 'last_name' => 'Doe', - ])->activeAt($this->date)->create(); - - $this->action->execute($this->term, $this->date); - - expect(VotingList::count())->toEqual(1); - - $members = VotingList::first()->members(); - - $positionJane = (clone $members) - ->whereFirstName('Jane') - ->first() - ->pivot - ->position; - - $positionJohn = (clone $members) - ->whereFirstName('John') - ->first() - ->pivot - ->position; - - expect($members->count())->toEqual(2); - expect($positionJane)->toEqual(VotePositionEnum::FOR()); - expect($positionJohn)->toEqual(VotePositionEnum::AGAINST()); -}); - -it('finds members using case-insensitive comparisons', function () { - Http::fakeJsonFromFile('*/voting_lists?term=9&date=2019-10-24', 'voting_lists-2.json'); - Member::factory(['last_name' => 'DOE'])->activeAt($this->date)->create(); - - $this->action->execute($this->term, $this->date); - - expect(VotingList::first()->members()->first()->last_name)->toEqual('DOE'); -}); - -it('finds members with special characters in name', function () { - Http::fakeJsonFromFile('*/voting_lists?term=9&date=2019-10-24', 'voting_lists-4.json'); - Member::factory(['last_name' => 'DOÉ'])->activeAt($this->date)->create(); - - $this->action->execute($this->term, $this->date); - - expect(VotingList::first()->members()->first()->last_name)->toEqual('DOÉ'); -}); - -it('compiles vote stats', function () { - Http::fakeJsonFromFile('*/voting_lists?term=9&date=2019-10-24', 'voting_lists-3.json'); - - $jane = Member::factory([ - 'first_name' => 'Jane', - 'last_name' => 'Doe', - ])->activeAt($this->date)->create(); - - $john = Member::factory([ - 'first_name' => 'John', - 'last_name' => 'Doe', - ])->activeAt($this->date)->create(); - - $this->action->execute($this->term, $this->date); - - expect(VotingList::first()->stats['voted'])->toEqual(2); -}); - -it('handles members who did not vote', function () { - Http::fakeJsonFromFile('*/voting_lists?term=9&date=2019-10-24', 'voting_lists-6.json'); - - $jane = Member::factory([ - 'first_name' => 'Jane', - 'last_name' => 'Doe', - ])->activeAt($this->date)->create(); - - $this->action->execute($this->term, $this->date); - - $position = VotingList::first()->members()->first()->pivot->position; - expect($position)->toEqual(VotePositionEnum::NOVOTE()); -}); diff --git a/app/tests/Unit/Components/ButtonTest.php b/app/tests/Unit/Components/ButtonTest.php deleted file mode 100644 index 8196c92b3..000000000 --- a/app/tests/Unit/Components/ButtonTest.php +++ /dev/null @@ -1,13 +0,0 @@ -blade(''); - expect($view)->toHaveSelector('a[href="https://howtheyvote.eu"]'); -}); - -it('render button tag if href is not given', function () { - $view = $this->blade(''); - expect($view)->toHaveSelector('button'); -}); diff --git a/app/tests/Unit/Components/PositionSelectTest.php b/app/tests/Unit/Components/PositionSelectTest.php deleted file mode 100644 index 827388988..000000000 --- a/app/tests/Unit/Components/PositionSelectTest.php +++ /dev/null @@ -1,53 +0,0 @@ -blade(''); - - expect($view)->toHaveSelectorWithText('summary', text: 'Filter'); -}); - -it('renders radio input and a label for every position', function () { - $view = $this->blade(''); - - expect($view)->toHaveSelector('details-menu input[type="radio"][value="FOR"]:not([checked])'); - expect($view)->toHaveSelector('details-menu input[type="radio"][value="AGAINST"]:not([checked])'); - expect($view)->toHaveSelector('details-menu input[type="radio"][value="ABSTENTION"]:not([checked])'); - expect($view)->toHaveSelector('details-menu input[type="radio"][value="NOVOTE"]:not([checked])'); - - expect($view)->toHaveSelectorWithText('details-menu label[aria-checked="false"] span[data-menu-button-contents]', text: 'For'); - expect($view)->toHaveSelectorWithText('details-menu label[aria-checked="false"] span[data-menu-button-contents]', text: 'Against'); - expect($view)->toHaveSelectorWithText('details-menu label[aria-checked="false"] span[data-menu-button-contents]', text: 'Abstention'); - expect($view)->toHaveSelectorWithText('details-menu label[aria-checked="false"] span[data-menu-button-contents]', text: 'No vote'); -}); - -it('pre-checks the default option', function () { - $view = $this->blade(''); - - expect($view)->toHaveSelector('details-menu input[type="radio"][value=""][checked]'); - - // "Show all" is displayed in the options dropdown - expect($view)->toHaveSelectorWithText('details-menu label[aria-checked="true"]', text: 'Show all'); - - // "Filter" is displayed as the button label if the option is selected - expect($view)->toHaveSelectorWithText('details-menu label[aria-checked="true"] span[data-menu-button-contents]', text: 'Filter'); -}); - -it('optionally adds Alpine.js bindings to inpunts', function () { - $view = $this->blade(''); - expect($view)->toHaveSelector('details-menu input[type="radio"][x-model="position"]', count: 5); -}); - -it('optionally adds `name` attribute to inputs', function () { - $view = $this->blade(''); - expect($view)->toHaveSelector('details-menu input[type="radio"][name="position"]', count: 5); -}); - -it('has customizable labels', function () { - $view = $this->blade(''); - - expect($view)->toHaveSelectorWithText('summary', text: 'Click me!!!'); - expect($view)->toHaveSelectorWithText('details-menu label[aria-checked="true"] span[data-menu-button-contents]', text: 'Click me!!!'); - expect($view)->toHaveSelectorWithText('details-menu label[aria-checked="true"]', text: 'Show all!!! Click me!!!'); -}); diff --git a/app/tests/Unit/Components/SessionDisplayTest.php b/app/tests/Unit/Components/SessionDisplayTest.php deleted file mode 100644 index 13b7d89bc..000000000 --- a/app/tests/Unit/Components/SessionDisplayTest.php +++ /dev/null @@ -1,82 +0,0 @@ -currentSession = Session::factory([ - 'start_date' => '2021-08-01', - 'end_date' => '2021-08-04', - 'location' => LocationEnum::STRASBOURG(), - ])->create(); - - $this->lastSession = Session::factory([ - 'start_date' => '2021-07-01', - 'end_date' => '2021-07-04', - 'location' => LocationEnum::STRASBOURG(), - - ])->create(); - - $this->nextSession = Session::factory([ - 'start_date' => '2021-09-01', - 'end_date' => '2021-09-04', - 'location' => LocationEnum::BRUSSELS(), - ])->create(); - - Carbon::setTestNow('2021-08-02'); -}); - -it('displays date of current session', function () { - $view = $this->blade('', [ - 'currentSession' => $this->currentSession, - 'lastSession' => $this->lastSession, - 'nextSession' => $this->nextSession, - ]); - - expect($view)->toSeeText('Parliament is meeting in Strasbourg this week.'); -}); - -it('displays link to the agenda of the session', function () { - $view = $this->blade('', [ - 'currentSession' => $this->currentSession, - 'lastSession' => $this->lastSession, - 'nextSession' => $this->nextSession, - ]); - - expect($view)->toHaveSelectorWithText('a[href="https://www.europarl.europa.eu/doceo/document/OJ-9-2021-08-01-SYN_EN.html"]', 'agenda'); -}); - -it('displays date of next session', function () { - $vote = Vote::factory([ - 'session_id' => $this->lastSession->id, - 'final' => true, - ])->create(); - - VotingList::factory([ - 'vote_id' => $vote->id, - ])->create(); - - $view = $this->blade('', [ - 'currentSession' => null, - 'lastSession' => $this->lastSession, - 'nextSession' => $this->nextSession, - ]); - - expect($view)->toSeeText('The next plenary session will be held in Brussels from Sep 1st to Sep 4th.'); -}); - -it('displays date of last session if vote results are not yet avaiable', function () { - $view = $this->blade('', [ - 'currentSession' => null, - 'lastSession' => $this->lastSession, - 'nextSession' => $this->nextSession, - ]); - - expect($view)->toSeeText('The last plenary session was held from Jul 1st to Jul 4th in Strasbourg.'); -}); diff --git a/app/tests/Unit/Components/ThumbTest.php b/app/tests/Unit/Components/ThumbTest.php deleted file mode 100644 index b98b93ac6..000000000 --- a/app/tests/Unit/Components/ThumbTest.php +++ /dev/null @@ -1,49 +0,0 @@ -blade('', ['result' => VoteResultEnum::ADOPTED()]); - expect($view)->toHaveSelector('.thumb--adopted'); - - $view = $this->blade('', ['result' => VoteResultEnum::REJECTED()]); - expect($view)->toHaveSelector('.thumb--rejected'); -}); - -it('accepts and maps result string', function () { - $view = $this->blade(''); - expect($view)->toHaveSelector('.thumb--adopted'); - - $view = $this->blade(''); - expect($view)->toHaveSelector('.thumb--rejected'); -}); - -it('accepts and maps position enums', function () { - $view = $this->blade('', ['position' => VotePositionEnum::FOR()]); - expect($view)->toHaveSelector('.thumb--for'); - - $view = $this->blade('', ['position' => VotePositionEnum::AGAINST()]); - expect($view)->toHaveSelector('.thumb--against'); - - $view = $this->blade('', ['position' => VotePositionEnum::ABSTENTION()]); - expect($view)->toHaveSelector('.thumb--abstention'); -}); - -it('accepts and maps position strings', function () { - $view = $this->blade(''); - expect($view)->toHaveSelector('.thumb--for'); - - $view = $this->blade(''); - expect($view)->toHaveSelector('.thumb--against'); - - $view = $this->blade(''); - expect($view)->toHaveSelector('.thumb--abstention'); -}); - -it('accepts circle as a style modifier', function () { - $view = $this->blade(''); - expect($view)->toHaveSelector('.thumb--circle'); -}); diff --git a/app/tests/Unit/Components/VoteResultChartBarTest.php b/app/tests/Unit/Components/VoteResultChartBarTest.php deleted file mode 100644 index 3f65b80b2..000000000 --- a/app/tests/Unit/Components/VoteResultChartBarTest.php +++ /dev/null @@ -1,36 +0,0 @@ -blade(''); - expect($view)->toSeeText('10%'); -}); - -it('shows the correct thumb', function () { - $view = $this->blade(''); - expect($view)->toHaveSelector('.thumb--for'); - - $view = $this->blade(''); - expect($view)->toHaveSelector('.thumb--against'); - - $view = $this->blade(''); - expect($view)->toHaveSelector('.thumb--abstention'); -}); - -it('appends medium modifier if percentage is below 15', function () { - $view = $this->blade(''); - expect($view)->toHaveSelector('.vote-result-chart__bar--medium'); - expect($view)->not()->toHaveSelector('.vote-result-chart__bar--small'); -}); - -it('appends small modifier if percentage is below 10', function () { - $view = $this->blade(''); - expect($view)->toHaveSelector('.vote-result-chart__bar--small'); - expect($view)->not()->toHaveSelector('.vote-result-chart__bar--medium'); -}); - -it('has the correct width depending on its percentage value', function () { - $view = $this->blade(''); - expect($view)->toHaveSelector('.vote-result-chart__bar[style="--ratio: 0.1"]'); -}); diff --git a/app/tests/Unit/Components/VoteResultChartTest.php b/app/tests/Unit/Components/VoteResultChartTest.php deleted file mode 100644 index dd84ded34..000000000 --- a/app/tests/Unit/Components/VoteResultChartTest.php +++ /dev/null @@ -1,24 +0,0 @@ -withStats()->make()->stats; - $this->view = $this->blade('', ['stats' => $stats]); -}); - -it('renders three bars in correct order', function () { - expect($this->view)->toHaveSelector( - '.vote-result-chart__bar--for + .vote-result-chart__bar--against + .vote-result-chart__bar--abstention', - ); -}); - -it('displays absolute numbers correctly', function () { - expect($this->view)->toSeeText('For: 10'); - expect($this->view)->toSeeText('Against: 20'); - expect($this->view)->toSeeText('Abstentions: 30'); - expect($this->view)->toSeeText('60 MEPs voted'); - expect($this->view)->toSeeText('40 MEPs didn’t vote'); -}); diff --git a/app/tests/Unit/Enums/CountryEnumTest.php b/app/tests/Unit/Enums/CountryEnumTest.php deleted file mode 100644 index 409f6ba26..000000000 --- a/app/tests/Unit/Enums/CountryEnumTest.php +++ /dev/null @@ -1,13 +0,0 @@ -emoji)->toEqual('🇩🇪'); -}); - -it('returns the label', function () { - expect(CountryEnum::DE()->label)->toEqual('Germany'); -}); diff --git a/app/tests/Unit/GroupMembershipTest.php b/app/tests/Unit/GroupMembershipTest.php deleted file mode 100644 index 349e2a2e4..000000000 --- a/app/tests/Unit/GroupMembershipTest.php +++ /dev/null @@ -1,41 +0,0 @@ -withDate($before) - ->create(); - - GroupMembership::factory() - ->withDate($after) - ->create(); - - $active = GroupMembership::factory() - ->withDate($date) - ->create(); - - $memberships = GroupMembership::activeAt($date); - - expect($memberships->count())->toEqual(1); - expect($memberships->first()->is($active))->toBeTrue(); -}); - -it('filters ongoing active memberships for given date', function () { - $date = new Carbon('2020-01-01'); - - GroupMembership::factory([ - 'start_date' => $date, - 'end_date' => null, - ])->create(); - - expect(GroupMembership::activeAt($date)->count())->toEqual(1); -}); diff --git a/app/tests/Unit/MemberTest.php b/app/tests/Unit/MemberTest.php deleted file mode 100644 index 5a1a69377..000000000 --- a/app/tests/Unit/MemberTest.php +++ /dev/null @@ -1,130 +0,0 @@ -createMany([ - ['web_id' => 12345], - ['web_id' => 12345], - ]); -})->throws(QueryException::class); - -it('is associated with a single group per start date', function () { - $member = Member::factory()->create(); - - GroupMembership::factory([ - 'member_id' => $member->id, - 'start_date' => '2020-01-01', - ])->count(2)->create(); -})->throws(QueryException::class); - -it('converts date_of_birth to date object', function () { - $member = new Member([ - 'date_of_birth' => '1975-01-01', - ]); - - expect($member->date_of_birth)->toBeInstanceOf(DateTime::class); -}); - -it('filters active members for given date', function () { - $date = new Carbon('2020-01-02'); - $before = new Carbon('2020-01-01'); - $after = new Carbon('2020-01-03'); - - Member::factory()->create(); - Member::factory()->activeAt($before)->create(); - Member::factory()->activeAt($after)->create(); - $active = Member::factory()->activeAt($date)->create(); - - expect(Member::activeAt($date)->count())->toEqual(1); - expect(Member::activeAt($date)->first()->is($active))->toBeTrue(); -}); - -it('normalizes names', function () { - expect(Member::normalizeName('ALL UPPERCASE'))->toEqual('all uppercase'); - expect(Member::normalizeName('ÄÖÜäöü'))->toEqual('äöüäöü'); - expect(Member::normalizeName('removes-dashes'))->toEqual('removes dashes'); - expect(Member::normalizeName('Nienaß'))->toEqual('nienass'); -}); - -it('automatically updates normalized name columns', function () { - $member = Member::factory([ - 'first_name' => 'ALL', - 'last_name' => 'UPPERCASE', - ])->create(); - - $first = $member->first_name_normalized; - $last = $member->last_name_normalized; - - expect($first)->toEqual(Member::normalizeName($member->first_name)); - expect($last)->toEqual(Member::normalizeName($member->last_name)); -}); - -it('returns full name', function () { - $member = Member::factory([ - 'first_name' => 'Martin', - 'last_name' => 'Schulz', - ])->create(); - - expect($member->full_name)->toEqual('Martin Schulz'); -}); - -it('loads with group membership at date', function () { - $greens = Group::factory(['code' => 'GREENS'])->create(); - $epp = Group::factory(['code' => 'EPP'])->create(); - - $member = Member::factory() - ->activeAt(Carbon::yesterday(), $greens) - ->activeAt(Carbon::today(), $epp) - ->create(); - - $yesterday = Member::withGroupMembershipAt(Carbon::yesterday())->first(); - $today = Member::withGroupMembershipAt(Carbon::today())->first(); - $tomorrow = Member::withGroupMembershipAt(Carbon::tomorrow())->first(); - - expect($yesterday->group_id)->toEqual($greens->id); - expect($today->group_id)->toEqual($epp->id); - - // As the member’s not active tomorrow, they don’t have an - // associated group for that day - expect($tomorrow->group_id)->toBeNull(); -}); - -it('has list of contact links', function () { - $member = Member::factory([ - 'email' => 'test@example.org', - 'facebook' => 'https://facebook.com/test', - 'twitter' => null, - ])->make(); - - $expected = [ - 'email' => Str::obfuscate('mailto:test@example.org'), - 'facebook' => 'https://facebook.com/test', - ]; - - expect($member->links->toArray())->toEqual($expected); -}); - -it('knows when profile picture exists', function () { - $memberWithPicture = Member::factory([ - 'id' => 1, - ])->make(); - $memberWithoutPicture = Member::factory([ - 'id' => 2, - ])->make(); - - Storage::fake('public'); - Storage::disk('public')->put("members/{$memberWithPicture->id}.jpg", 'fake'); - - expect($memberWithPicture->hasProfilePicture())->toBeTrue(); - expect($memberWithoutPicture->hasProfilePicture())->toBeFalse(); -}); diff --git a/app/tests/Unit/Mixins/CollectionMixinTest.php b/app/tests/Unit/Mixins/CollectionMixinTest.php deleted file mode 100644 index 3692499e2..000000000 --- a/app/tests/Unit/Mixins/CollectionMixinTest.php +++ /dev/null @@ -1,18 +0,0 @@ -toAssoc()->toArray(); - $expected = ['a' => 1, 'b' => 2, 'c' => 3]; - - expect($actual)->toEqual($expected); -}); diff --git a/app/tests/Unit/Mixins/ComponentAttributeBagMixinTest.php b/app/tests/Unit/Mixins/ComponentAttributeBagMixinTest.php deleted file mode 100644 index a1c9b7fcc..000000000 --- a/app/tests/Unit/Mixins/ComponentAttributeBagMixinTest.php +++ /dev/null @@ -1,40 +0,0 @@ -bem('button', 'large primary')->getAttributes(); - $expected = ['class' => 'button button--large button--primary']; - - expect($actual)->toEqual($expected); -}); - -it('accepts no modifier', function () { - $bag = new ComponentAttributeBag(); - $actual = $bag->bem('button')->getAttributes(); - $expected = ['class' => 'button']; - - expect($actual)->toEqual($expected); -}); - -it('filters falsy modifiers', function () { - $bag = new ComponentAttributeBag(); - $actual = $bag->bem('button', ['', null, false, 'large'])->getAttributes(); - $expected = ['class' => 'button button--large']; - - expect($actual)->toEqual($expected); -}); - -it('appends modifier if constraint is true', function () { - $bag = new ComponentAttributeBag(); - $expected = ['class' => 'button button--large']; - $actual = $bag->bem('button', [ - 'large' => true, - 'pink' => false, - ])->getAttributes(); - - expect($actual)->toEqual($expected); -}); diff --git a/app/tests/Unit/Mixins/StrMixinTest.php b/app/tests/Unit/Mixins/StrMixinTest.php deleted file mode 100644 index a2b8b4f9a..000000000 --- a/app/tests/Unit/Mixins/StrMixinTest.php +++ /dev/null @@ -1,9 +0,0 @@ -toEqual('test'); -}); diff --git a/app/tests/Unit/SessionTest.php b/app/tests/Unit/SessionTest.php deleted file mode 100644 index f77fc18c1..000000000 --- a/app/tests/Unit/SessionTest.php +++ /dev/null @@ -1,97 +0,0 @@ - '2021-08-11', - 'end_date' => '2021-08-15', - 'location' => LocationEnum::BRUSSELS(), - ])->create(); - - expect($session->display_title)->toEqual('August 2021 · Brussels'); -}); - -it('returns final votes', function () { - $session = Session::factory()->create(); - - $finalVote = Vote::factory([ - 'type' => VoteTypeEnum::SEPARATE(), - 'final' => true, - 'session_id' => $session, - ])->create(); - - Vote::factory([ - 'type' => VoteTypeEnum::PRIMARY(), - 'session_id' => $session, - ])->create(); - - expect($session->votes()->final()->count())->toEqual(1); - expect($session->votes()->final()->first()->id)->toEqual($finalVote->id); -}); - -it('returns next session', function () { - $next = Session::factory([ - 'start_date' => '2021-09-01', - 'end_date' => '2021-09-05', - ])->create(); - - Session::factory([ - 'start_date' => '2021-10-01', - 'end_date' => '2021-10-05', - ])->create(); - - Carbon::setTestNow('2021-08-01'); - expect(Session::next()->id)->toEqual($next->id); -}); - -it('returns last session', function () { - Session::factory([ - 'start_date' => '2021-08-01', - 'end_date' => '2021-08-05', - ])->create(); - - $last = Session::factory([ - 'start_date' => '2021-09-01', - 'end_date' => '2021-09-05', - ])->create(); - - Carbon::setTestNow('2021-10-01'); - expect(Session::last()->id)->toEqual($last->id); -}); - -it('returns current session', function () { - $session = Session::factory([ - 'start_date' => '2021-09-01', - 'end_date' => '2021-09-05', - ])->create(); - - Carbon::setTestNow('2021-09-02'); - expect(Session::current()->id)->toEqual($session->id); -}); - -it('returns null if there is no current session', function () { - $session = Session::factory([ - 'start_date' => '2021-09-01', - 'end_date' => '2021-09-05', - ])->create(); - - Carbon::setTestNow('2021-10-01'); - expect(Session::current())->toBeNull(); -}); - -it('has a link to its agenda', function () { - $session = Session::factory([ - 'start_date' => '2021-09-01', - 'end_date' => '2021-09-05', - ])->create(); - - expect($session->agenda_url)->toEqual('https://www.europarl.europa.eu/doceo/document/OJ-9-2021-09-01-SYN_EN.html'); -}); diff --git a/app/tests/Unit/SummaryTest.php b/app/tests/Unit/SummaryTest.php deleted file mode 100644 index efc22130b..000000000 --- a/app/tests/Unit/SummaryTest.php +++ /dev/null @@ -1,38 +0,0 @@ - "The European Parliament adopted by 667 votes to 1, with 27 abstentions, a resolution on the situation in Myanmar.\n\nThe text adopted in plenary had been tabled as a joint resolution by the EPP, S&D, Renew, Greens/EFA, ECR groups and The Left.\n\nOn 1 February 2021, the military of Myanmar, known as the Tatmadaw, in a clear violation of the constitution of Myanmar, arrested President Win Myint and State Counsellor Aung San Suu Kyi, as well as leading members of the government, seized power over the legislative, judicial and executive branches of government through a coup d’état, and issued a one-year state of emergency.", - ])->make(); - - $expected = "The text adopted in plenary had been tabled as a joint resolution by the EPP, S&D, Renew, Greens/EFA, ECR groups and The Left.\n\nOn 1 February 2021, the military of Myanmar, known as the Tatmadaw, in a clear violation of the constitution of Myanmar, arrested President Win Myint and State..."; - - expect($summary->excerpt)->toEqual($expected); -}); - -it('removes headings from excerpt', function () { - $summary = Summary::factory([ - 'text' => implode("\n\n", [ - 'First paragraph is always removed', - '## Heading', - 'Second paragraph', - ]), - ])->make(); - - expect($summary->excerpt)->toEqual('Second paragraph'); -}); - -it('has external URL', function () { - $summary = Summary::factory([ - 'oeil_id' => '1234567', - ])->make(); - - $expected = 'https://oeil.secure.europarl.europa.eu/oeil/popups/summary.do?id=1234567&t=e&l=en'; - - expect($summary->external_url)->toEqual($expected); -}); diff --git a/app/tests/Unit/TermTest.php b/app/tests/Unit/TermTest.php deleted file mode 100644 index dcf8656b7..000000000 --- a/app/tests/Unit/TermTest.php +++ /dev/null @@ -1,14 +0,0 @@ -createMany([ - ['number' => 9], - ['number' => 9], - ]); -})->throws(QueryException::class); diff --git a/app/tests/Unit/VoteTest.php b/app/tests/Unit/VoteTest.php deleted file mode 100644 index 9adaf274a..000000000 --- a/app/tests/Unit/VoteTest.php +++ /dev/null @@ -1,143 +0,0 @@ - VoteCollection::factory([ - 'title' => 'A nice title', - ]), - ])->make(); - - expect($vote->display_title)->toEqual('A nice title'); -}); - -it('returns related votes', function () { - $voteCollection = VoteCollection::factory()->create(); - - Vote::factory([ - 'vote_collection_id' => $voteCollection, - ])->count(3)->create(); - - $vote = Vote::first(); - $relatedVotes = $vote->relatedVotes()->get(); - - expect($relatedVotes->count())->toEqual(2); - expect($relatedVotes->pluck('id'))->not()->toContain($vote->id); -}); - -it('returns final vote', function () { - $voteCollection = VoteCollection::factory()->create(); - - $nonFinal = Vote::factory([ - 'vote_collection_id' => $voteCollection, - 'type' => VoteTypeEnum::AMENDMENT(), - ])->create(); - - $final = Vote::factory([ - 'vote_collection_id' => $voteCollection, - 'final' => true, - ])->create(); - - expect($nonFinal->finalVote->id)->toEqual($final->id); -}); - -it('returns a subtitle for amendments', function () { - $vote = Vote::factory([ - 'type' => VoteTypeEnum::AMENDMENT(), - 'amendment' => 10, - 'author' => 'S&D', - ])->make(); - - expect($vote->subtitle)->toEqual('Amendment 10 by S&D'); -}); - -it('returns a subtitle for separate votes', function () { - $vote = Vote::factory([ - 'type' => VoteTypeEnum::SEPARATE(), - 'subject' => '§ 10', - ])->make(); - - expect($vote->subtitle)->toEqual('Separate vote on § 10'); -}); - -it('returns a subtitle for separate votes with split part', function () { - $vote = Vote::factory([ - 'type' => VoteTypeEnum::SEPARATE(), - 'subject' => '§ 10', - 'split_part' => '2', - ])->make(); - - expect($vote->subtitle)->toEqual('Separate vote on § 10/2'); -}); - -it('returns a subtitle for final votes', function () { - $vote = Vote::factory([ - 'final' => true, - ])->make(); - - expect($vote->subtitle)->toEqual('Final vote'); -}); - -it('checks primary type', function () { - $vote = Vote::factory(['type' => VoteTypeEnum::PRIMARY()]) - ->make(); - - expect($vote->isPrimaryVote())->toBe(true); - expect($vote->isAmendmentVote())->toBe(false); - expect($vote->isSeparateVote())->toBe(false); -}); - -it('checks amendment type', function () { - $vote = Vote::factory(['type' => VoteTypeEnum::AMENDMENT()]) - ->make(); - - expect($vote->isPrimaryVote())->toBe(false); - expect($vote->isAmendmentVote())->toBe(true); - expect($vote->isSeparateVote())->toBe(false); -}); - -it('checks separate type', function () { - $vote = Vote::factory(['type' => VoteTypeEnum::SEPARATE()]) - ->make(); - - expect($vote->isPrimaryVote())->toBe(false); - expect($vote->isAmendmentVote())->toBe(false); - expect($vote->isSeparateVote())->toBe(true); -}); - -it('checks if related votes exist', function () { - $voteCollection = VoteCollection::factory() - ->create(); - - $nonFinal = Vote::factory([ - 'vote_collection_id' => $voteCollection, - 'type' => VoteTypeEnum::AMENDMENT(), - ])->create(); - - $final = Vote::factory([ - 'vote_collection_id' => $voteCollection, - 'type' => VoteTypeEnum::PRIMARY(), - 'final' => true, - ])->make(); - - expect($final->hasRelatedVotes())->toBe(true); -}); - -it('returns url for voting list if it is matched', function () { - $votingList = VotingList::factory([ - 'vote_id' => Vote::factory([]), - ])->create(); - - expect($votingList->vote->url)->toContain('votes/'); - - $vote = Vote::factory()->create(); - - expect($vote->url)->toBe(null); -}); diff --git a/app/tests/Unit/VotingListTest.php b/app/tests/Unit/VotingListTest.php deleted file mode 100644 index 46af145b0..000000000 --- a/app/tests/Unit/VotingListTest.php +++ /dev/null @@ -1,115 +0,0 @@ - 1])->make(); - - $expected = Hashids::encode(1); - expect($votingList->hash_id)->toEqual($expected); -}); - -it('has display title based on description', function () { - $votingList = VotingList::factory([ - 'description' => 'Content of the description', - 'vote_id' => null, - ])->make(); - - expect($votingList->display_title)->toEqual('Content of the description'); -}); - -it('has display title based on associated vote title', function () { - $votingList = VotingList::factory([ - 'description' => 'Content of the description', - 'vote_id' => Vote::factory([ - 'vote_collection_id' => VoteCollection::factory([ - 'title' => 'Blub', - ]), - ]), - ])->make(); - - expect($votingList->display_title)->toEqual('Blub'); -}); - -it('has a formatted date', function () { - $votingList = VotingList::factory([ - 'date' => '2021-01-01', - ])->make(); - - expect($votingList->formatted_date)->toEqual('Friday, January 1, 2021'); -}); - -it('does not return a sharepic link if it has no vote', function () { - $votingList = VotingList::factory([ - 'date' => '2021-01-01', - ])->make(); - - expect($votingList->share_picture_url)->toBeNull(); -}); - -it('does not return a sharepic link if it the picture does not exist', function () { - Storage::fake('public'); - - $votingList = VotingList::factory([ - 'date' => '2021-01-01', - 'id' => 1, - 'vote_id' => Vote::factory([ - 'type' => VoteTypeEnum::PRIMARY(), - 'final' => true, - ]), - ])->make(); - - expect($votingList->share_picture_url)->toBeNull(); -}); - -it('returns link to sharepic if vote is final and picture does exist', function () { - Storage::fake('public'); - Storage::disk('public')->put('share-pictures/vote-sharepic-1.png', 'test'); - - $votingList = VotingList::factory([ - 'date' => '2021-01-01', - 'id' => 1, - 'vote_id' => Vote::factory([ - 'type' => VoteTypeEnum::AMENDMENT(), - 'final' => true, - ]), - ])->make(); - - expect($votingList->share_picture_url)->toContain('share-pictures/vote-sharepic-1.png'); -}); - -it('returns description of share pic', function () { - $vote = Vote::factory(['final' => true]); - - $votingList = VotingList::factory(['vote_id' => $vote]) - ->withStats() - ->withDate(Carbon::create('1993-02-02')) - ->create(); - - $expected = 'A barchart visualizing the result of the European Parliaments vote on "Children’s rights". The vote was held on Feb 2, 1993. The barchart has three bars, representing the 10 MEPs who voted in favor (17%), the 20 MEPs who votes against (33%), and the 30 MEPs who did abstain (50%). In total, 60 MEPs participated in the vote and 40 MEPs did not vote.'; - - expect($votingList->share_picture_description)->toBe($expected); -}); - -it('returns result of matched vote', function () { - $votingList = VotingList::factory()->make(); - - expect($votingList->result)->toBeNull(); - - $votingList = VotingList::factory([ - 'vote_id' => Vote::factory([ - 'result' => VoteResultEnum::ADOPTED(), - ]), - ])->make(); - - expect($votingList->result)->toEqual(VoteResultEnum::ADOPTED()); -}); diff --git a/app/tests/data/hello.json b/app/tests/data/hello.json deleted file mode 100644 index 7e9220748..000000000 --- a/app/tests/data/hello.json +++ /dev/null @@ -1 +0,0 @@ -{ "message": "Hello John!" } diff --git a/app/tests/data/member_groups-2.json b/app/tests/data/member_groups-2.json deleted file mode 100644 index b51336698..000000000 --- a/app/tests/data/member_groups-2.json +++ /dev/null @@ -1,7 +0,0 @@ -[ - { - "group": "GREENS", - "start_date": "2014-07-02", - "end_date": "2019-07-01" - } -] diff --git a/app/tests/data/member_groups.json b/app/tests/data/member_groups.json deleted file mode 100644 index 9406e3e1d..000000000 --- a/app/tests/data/member_groups.json +++ /dev/null @@ -1,7 +0,0 @@ -[ - { - "group": "GREENS", - "start_date": "2014-07-02", - "end_date": null - } -] diff --git a/app/tests/data/member_info.json b/app/tests/data/member_info.json deleted file mode 100644 index 8b4668008..000000000 --- a/app/tests/data/member_info.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "first_name": "Jane", - "last_name": "Doe", - "date_of_birth": "1975-01-01", - "country": "GB", - "facebook": null, - "twitter": "EinTwitterLink", - "email": null -} diff --git a/app/tests/data/members.json b/app/tests/data/members.json deleted file mode 100644 index c34349597..000000000 --- a/app/tests/data/members.json +++ /dev/null @@ -1,6 +0,0 @@ -[ - { - "web_id": 12345, - "terms": [9] - } -] diff --git a/app/tests/data/sessions_obs.json b/app/tests/data/sessions_obs.json deleted file mode 100644 index bd6de8b54..000000000 --- a/app/tests/data/sessions_obs.json +++ /dev/null @@ -1,12 +0,0 @@ -[ - { - "start_date": "2021-11-10", - "end_date": "2021-11-11", - "location": "BRUSSELS" - }, - { - "start_date": "2021-11-22", - "end_date": "2021-11-25", - "location": "STRASBOURG" - } -] diff --git a/app/tests/data/sessions_parl.json b/app/tests/data/sessions_parl.json deleted file mode 100644 index feaa89199..000000000 --- a/app/tests/data/sessions_parl.json +++ /dev/null @@ -1,5 +0,0 @@ -[ - { "start_date": "2021-11-02", "end_date": "2021-11-04", "location": null }, - { "start_date": "2021-11-10", "end_date": "2021-11-11", "location": null }, - { "start_date": "2021-11-22", "end_date": "2021-11-25", "location": null } -] diff --git a/app/tests/data/summary.json b/app/tests/data/summary.json deleted file mode 100644 index d620a0526..000000000 --- a/app/tests/data/summary.json +++ /dev/null @@ -1 +0,0 @@ -"Summary of the adopted text" diff --git a/app/tests/data/summary_id.json b/app/tests/data/summary_id.json deleted file mode 100644 index b979b2b8b..000000000 --- a/app/tests/data/summary_id.json +++ /dev/null @@ -1 +0,0 @@ -"1234567" diff --git a/app/tests/data/vote_collections-no-reference.json b/app/tests/data/vote_collections-no-reference.json deleted file mode 100644 index 1ae479760..000000000 --- a/app/tests/data/vote_collections-no-reference.json +++ /dev/null @@ -1,1139 +0,0 @@ -[ - { - "title": "Draft general budget of the European Union for 2022 - all sections", - "reference": null, - "votes": [ - { - "author": null, - "subject": "Block 1", - "result": "ADOPTED", - "split_part": null, - "amendment": "222, 223, 224, 225, 188, 846, 847, 227, 848, 849, 850, 851, 852, 945, 853, 854, 855, 856, 230, 231, 233, 120, 121, 123, 499, 857, 858, 502, 503, 859, 236, 237, 860, 861, 953, 862, 863, 864, 505, 164, 809", - "type": "AMENDMENT", - "remarks": "5975741", - "subheading": null, - "final": false, - "formatted": "Am 222, 223, 224, 225, 188, 846, 847, 227, 848, 849, 850, 851, 852, 945, 853, 854, 855, 856, 230, 231, 233, 120, 121, 123, 499, 857, 858, 502, 503, 859, 236, 237, 860, 861, 953, 862, 863, 864, 505, 164, 809", - "reference": null - }, - { - "author": null, - "subject": "01 03 01", - "result": "ADOPTED", - "split_part": null, - "amendment": "232", - "type": "AMENDMENT", - "remarks": "51816215", - "subheading": null, - "final": false, - "formatted": "Am 232", - "reference": null - }, - { - "author": null, - "subject": "01 04 01", - "result": "REJECTED", - "split_part": null, - "amendment": "544", - "type": "AMENDMENT", - "remarks": "11457011", - "subheading": null, - "final": false, - "formatted": "Am 544", - "reference": null - }, - { - "author": null, - "subject": "02 10 01", - "result": "REJECTED", - "split_part": null, - "amendment": "278", - "type": "AMENDMENT", - "remarks": "5462912", - "subheading": null, - "final": false, - "formatted": "Am 278", - "reference": null - }, - { - "author": null, - "subject": "02 10 02", - "result": "ADOPTED", - "split_part": null, - "amendment": "952", - "type": "AMENDMENT", - "remarks": "55512713", - "subheading": null, - "final": false, - "formatted": "Am 952", - "reference": null - }, - { - "author": null, - "subject": "02 10 06", - "result": "REJECTED", - "split_part": null, - "amendment": "318", - "type": "AMENDMENT", - "remarks": "11453348", - "subheading": null, - "final": false, - "formatted": "Am 318", - "reference": null - }, - { - "author": null, - "subject": "02 20 04 01", - "result": "REJECTED", - "split_part": null, - "amendment": "281", - "type": "AMENDMENT", - "remarks": "1415513", - "subheading": null, - "final": false, - "formatted": "Am 281", - "reference": null - }, - { - "author": null, - "subject": "02 20 04 02", - "result": "REJECTED", - "split_part": null, - "amendment": "578", - "type": "AMENDMENT", - "remarks": "1295633", - "subheading": null, - "final": false, - "formatted": "Am 578", - "reference": null - }, - { - "author": null, - "subject": "03 02 02", - "result": "ADOPTED", - "split_part": null, - "amendment": "504", - "type": "AMENDMENT", - "remarks": "642512", - "subheading": null, - "final": false, - "formatted": "Am 504", - "reference": null - }, - { - "author": null, - "subject": "03 02 03 02", - "result": "ADOPTED", - "split_part": null, - "amendment": "126", - "type": "AMENDMENT", - "remarks": "38425853", - "subheading": null, - "final": false, - "formatted": "Am 126", - "reference": null - }, - { - "author": null, - "subject": "03 02 05", - "result": "REJECTED", - "split_part": null, - "amendment": "591", - "type": "AMENDMENT", - "remarks": "28938917", - "subheading": null, - "final": false, - "formatted": "Am 591", - "reference": null - }, - { - "author": null, - "subject": "03 02 05", - "result": "REJECTED", - "split_part": null, - "amendment": "592", - "type": "AMENDMENT", - "remarks": "12552743", - "subheading": null, - "final": false, - "formatted": "Am 592", - "reference": null - }, - { - "author": null, - "subject": "03 10 02", - "result": "ADOPTED", - "split_part": null, - "amendment": "594", - "type": "AMENDMENT", - "remarks": "40627811", - "subheading": null, - "final": false, - "formatted": "Am 594", - "reference": null - }, - { - "author": null, - "subject": "04 02 01", - "result": "REJECTED", - "split_part": null, - "amendment": "312", - "type": "AMENDMENT", - "remarks": "5062718", - "subheading": null, - "final": false, - "formatted": "Am 312", - "reference": null - }, - { - "author": null, - "subject": "04 02 02", - "result": "REJECTED", - "split_part": null, - "amendment": "311", - "type": "AMENDMENT", - "remarks": "3464120", - "subheading": null, - "final": false, - "formatted": "Am 311", - "reference": null - }, - { - "author": null, - "subject": "04 10 01", - "result": "REJECTED", - "split_part": null, - "amendment": "205", - "type": "AMENDMENT", - "remarks": "13952333", - "subheading": null, - "final": false, - "formatted": "Am 205", - "reference": null - }, - { - "author": null, - "subject": "Block 2", - "result": "ADOPTED", - "split_part": null, - "amendment": "180, 136, 137, 878", - "type": "AMENDMENT", - "remarks": "5756357", - "subheading": null, - "final": false, - "formatted": "Am 180, 136, 137, 878", - "reference": null - }, - { - "author": null, - "subject": "05 03 01", - "result": "REJECTED", - "split_part": null, - "amendment": "372", - "type": "AMENDMENT", - "remarks": "51527117", - "subheading": null, - "final": false, - "formatted": "Am 372", - "reference": null - }, - { - "author": null, - "subject": "05 03 03", - "result": "REJECTED", - "split_part": null, - "amendment": "293", - "type": "AMENDMENT", - "remarks": "14147579", - "subheading": null, - "final": false, - "formatted": "Am 293", - "reference": null - }, - { - "author": null, - "subject": "05 03 04", - "result": "REJECTED", - "split_part": null, - "amendment": "373", - "type": "AMENDMENT", - "remarks": "7353884", - "subheading": null, - "final": false, - "formatted": "Am 373", - "reference": null - }, - { - "author": null, - "subject": "07 02 01", - "result": "REJECTED", - "split_part": null, - "amendment": "374", - "type": "AMENDMENT", - "remarks": "46523126", - "subheading": null, - "final": false, - "formatted": "Am 374", - "reference": null - }, - { - "author": null, - "subject": "07 02 01", - "result": "REJECTED", - "split_part": null, - "amendment": "135", - "type": "AMENDMENT", - "remarks": "70453172", - "subheading": null, - "final": false, - "formatted": "Am 135", - "reference": null - }, - { - "author": null, - "subject": "Block 3", - "result": "ADOPTED", - "split_part": null, - "amendment": "512, 879, 946, 8, 9, 881, 507, 508, 882, 883, 891, 32, 884, 885, 895, 886, 887, 140, 888, 402, 890, 13, 889", - "type": "AMENDMENT", - "remarks": "5747150", - "subheading": null, - "final": false, - "formatted": "Am 512, 879, 946, 8, 9, 881, 507, 508, 882, 883, 891, 32, 884, 885, 895, 886, 887, 140, 888, 402, 890, 13, 889", - "reference": null - }, - { - "author": null, - "subject": "05 01 03", - "result": "REJECTED", - "split_part": null, - "amendment": "648", - "type": "AMENDMENT", - "remarks": "8556444", - "subheading": null, - "final": false, - "formatted": "Am 648", - "reference": null - }, - { - "author": null, - "subject": "05 04 01", - "result": "ADOPTED", - "split_part": null, - "amendment": "506", - "type": "AMENDMENT", - "remarks": "54310349", - "subheading": null, - "final": false, - "formatted": "Am 506", - "reference": null - }, - { - "author": null, - "subject": "06 06 01", - "result": "ADOPTED", - "split_part": 1, - "amendment": "880", - "type": "AMENDMENT", - "remarks": "5831056", - "subheading": null, - "final": false, - "formatted": "Am 880/1", - "reference": null - }, - { - "author": null, - "subject": "06 06 01", - "result": "ADOPTED", - "split_part": 2, - "amendment": "880", - "type": "AMENDMENT", - "remarks": "47815757", - "subheading": null, - "final": false, - "formatted": "Am 880/2", - "reference": null - }, - { - "author": null, - "subject": "06 20 04 01", - "result": "ADOPTED", - "split_part": null, - "amendment": "810", - "type": "AMENDMENT", - "remarks": "47813582", - "subheading": null, - "final": false, - "formatted": "Am 810", - "reference": null - }, - { - "author": null, - "subject": "07 05 03", - "result": "ADOPTED", - "split_part": null, - "amendment": "33", - "type": "AMENDMENT", - "remarks": "6202847", - "subheading": null, - "final": false, - "formatted": "Am 33", - "reference": null - }, - { - "author": null, - "subject": "07 06 02", - "result": "ADOPTED", - "split_part": null, - "amendment": "894", - "type": "AMENDMENT", - "remarks": "57210221", - "subheading": null, - "final": false, - "formatted": "Am 894", - "reference": null - }, - { - "author": null, - "subject": "07 10 01", - "result": "ADOPTED", - "split_part": null, - "amendment": "181", - "type": "AMENDMENT", - "remarks": "5596571", - "subheading": null, - "final": false, - "formatted": "Am 181", - "reference": null - }, - { - "author": null, - "subject": "07 10 05", - "result": "REJECTED", - "split_part": null, - "amendment": "364", - "type": "AMENDMENT", - "remarks": "1325594", - "subheading": null, - "final": false, - "formatted": "Am 364", - "reference": null - }, - { - "author": null, - "subject": "07 10 05", - "result": "REJECTED", - "split_part": null, - "amendment": "582CP1", - "type": "AMENDMENT", - "remarks": "1375544", - "subheading": null, - "final": false, - "formatted": "Am 582PC1", - "reference": null - }, - { - "author": null, - "subject": "07 10 08", - "result": "ADOPTED", - "split_part": null, - "amendment": "892", - "type": "AMENDMENT", - "remarks": "5399858", - "subheading": null, - "final": false, - "formatted": "Am 892", - "reference": null - }, - { - "author": null, - "subject": "07 10 09", - "result": "REJECTED", - "split_part": null, - "amendment": "141", - "type": "AMENDMENT", - "remarks": "12855512", - "subheading": null, - "final": false, - "formatted": "Am 141", - "reference": null - }, - { - "author": null, - "subject": "07 20 03 01", - "result": "REJECTED", - "split_part": null, - "amendment": "655", - "type": "AMENDMENT", - "remarks": "9158814", - "subheading": null, - "final": false, - "formatted": "Am 655", - "reference": null - }, - { - "author": null, - "subject": "07 20 04 02", - "result": "ADOPTED", - "split_part": null, - "amendment": "11", - "type": "AMENDMENT", - "remarks": "5821094", - "subheading": null, - "final": false, - "formatted": "Am 11", - "reference": null - }, - { - "author": null, - "subject": "07 20 04 03", - "result": "ADOPTED", - "split_part": null, - "amendment": "12", - "type": "AMENDMENT", - "remarks": "56212310", - "subheading": null, - "final": false, - "formatted": "Am 12", - "reference": null - }, - { - "author": null, - "subject": "07 20 04 05", - "result": "REJECTED", - "split_part": null, - "amendment": "659", - "type": "AMENDMENT", - "remarks": "8655651", - "subheading": null, - "final": false, - "formatted": "Am 659", - "reference": null - }, - { - "author": null, - "subject": "07 20 04 10", - "result": "REJECTED", - "split_part": null, - "amendment": "143", - "type": "AMENDMENT", - "remarks": "130461104", - "subheading": null, - "final": false, - "formatted": "Am 143", - "reference": null - }, - { - "author": null, - "subject": "Block 4", - "result": "ADOPTED", - "split_part": null, - "amendment": "832, 97, 951, 833, 834, 835, 836, 172", - "type": "AMENDMENT", - "remarks": "6164732", - "subheading": null, - "final": false, - "formatted": "Am 832, 97, 951, 833, 834, 835, 836, 172", - "reference": null - }, - { - "author": null, - "subject": "08 02 05 10", - "result": "REJECTED", - "split_part": null, - "amendment": "375", - "type": "AMENDMENT", - "remarks": "14846582", - "subheading": null, - "final": false, - "formatted": "Am 375", - "reference": null - }, - { - "author": null, - "subject": "08 02 05 11", - "result": "REJECTED", - "split_part": null, - "amendment": "376", - "type": "AMENDMENT", - "remarks": "14047481", - "subheading": null, - "final": false, - "formatted": "Am 376", - "reference": null - }, - { - "author": null, - "subject": "08 04 01", - "result": "REJECTED", - "split_part": null, - "amendment": "377", - "type": "AMENDMENT", - "remarks": "7157747", - "subheading": null, - "final": false, - "formatted": "Am 377", - "reference": null - }, - { - "author": null, - "subject": "08 04 02", - "result": "REJECTED", - "split_part": null, - "amendment": "272", - "type": "AMENDMENT", - "remarks": "11453447", - "subheading": null, - "final": false, - "formatted": "Am 272", - "reference": null - }, - { - "author": null, - "subject": "09 10 03", - "result": "REJECTED", - "split_part": null, - "amendment": "368", - "type": "AMENDMENT", - "remarks": "4457378", - "subheading": null, - "final": false, - "formatted": "Am 368", - "reference": null - }, - { - "author": null, - "subject": "Bloc 5", - "result": "ADOPTED", - "split_part": null, - "amendment": "837838839", - "type": "AMENDMENT", - "remarks": "482109104", - "subheading": null, - "final": false, - "formatted": "Am 837838839", - "reference": null - }, - { - "author": null, - "subject": "11 04", - "result": "REJECTED", - "split_part": null, - "amendment": "369", - "type": "AMENDMENT", - "remarks": "11656711", - "subheading": null, - "final": false, - "formatted": "Am 369", - "reference": null - }, - { - "author": null, - "subject": "11 10 01", - "result": "ADOPTED", - "split_part": null, - "amendment": "840", - "type": "AMENDMENT", - "remarks": "47096129", - "subheading": null, - "final": false, - "formatted": "Am 840", - "reference": null - }, - { - "author": null, - "subject": "Block 6", - "result": "ADOPTED", - "split_part": null, - "amendment": "248299842", - "type": "AMENDMENT", - "remarks": "49116044", - "subheading": null, - "final": false, - "formatted": "Am 248299842", - "reference": null - }, - { - "author": null, - "subject": "13 01 01", - "result": "REJECTED", - "split_part": null, - "amendment": "313", - "type": "AMENDMENT", - "remarks": "15251231", - "subheading": null, - "final": false, - "formatted": "Am 313", - "reference": null - }, - { - "author": null, - "subject": "13 01 02 01", - "result": "REJECTED", - "split_part": null, - "amendment": "321", - "type": "AMENDMENT", - "remarks": "14851829", - "subheading": null, - "final": false, - "formatted": "Am 321", - "reference": null - }, - { - "author": null, - "subject": "13 01 02 02", - "result": "REJECTED", - "split_part": null, - "amendment": "322", - "type": "AMENDMENT", - "remarks": "14851829", - "subheading": null, - "final": false, - "formatted": "Am 322", - "reference": null - }, - { - "author": null, - "subject": "13 01 02 03", - "result": "REJECTED", - "split_part": null, - "amendment": "323", - "type": "AMENDMENT", - "remarks": "14851928", - "subheading": null, - "final": false, - "formatted": "Am 323", - "reference": null - }, - { - "author": null, - "subject": "13 01 03 01", - "result": "REJECTED", - "split_part": null, - "amendment": "320", - "type": "AMENDMENT", - "remarks": "15251429", - "subheading": null, - "final": false, - "formatted": "Am 320", - "reference": null - }, - { - "author": null, - "subject": "13 01 03 74", - "result": "REJECTED", - "split_part": null, - "amendment": "319", - "type": "AMENDMENT", - "remarks": "15651029", - "subheading": null, - "final": false, - "formatted": "Am 319", - "reference": null - }, - { - "author": null, - "subject": "13 02 01", - "result": "ADOPTED", - "split_part": null, - "amendment": "843", - "type": "AMENDMENT", - "remarks": "47617246", - "subheading": null, - "final": false, - "formatted": "Am 843", - "reference": null - }, - { - "author": null, - "subject": "13 03 01", - "result": "ADOPTED", - "split_part": null, - "amendment": "523", - "type": "AMENDMENT", - "remarks": "47716949", - "subheading": null, - "final": false, - "formatted": "Am 523", - "reference": null - }, - { - "author": null, - "subject": "13 04 01", - "result": "ADOPTED", - "split_part": null, - "amendment": "844", - "type": "AMENDMENT", - "remarks": "47816750", - "subheading": null, - "final": false, - "formatted": "Am 844", - "reference": null - }, - { - "author": null, - "subject": "Block 7", - "result": "ADOPTED", - "split_part": null, - "amendment": "59, 866, 867, 868, 533, 869, 870, 871, 872, 875, 876, 873, 877, 66, 811, 947, 874, 530, 531", - "type": "AMENDMENT", - "remarks": "5816747", - "subheading": null, - "final": false, - "formatted": "Am 59, 866, 867, 868, 533, 869, 870, 871, 872, 875, 876, 873, 877, 66, 811, 947, 874, 530, 531", - "reference": null - }, - { - "author": null, - "subject": "14 02 01 10", - "result": "ADOPTED", - "split_part": 1, - "amendment": "865", - "type": "AMENDMENT", - "remarks": "52911254", - "subheading": null, - "final": false, - "formatted": "Am 865/1", - "reference": null - }, - { - "author": null, - "subject": "14 02 01 10", - "result": "REJECTED", - "split_part": 2, - "amendment": "865", - "type": "AMENDMENT", - "remarks": "29134558", - "subheading": null, - "final": false, - "formatted": "Am 865/2", - "reference": null - }, - { - "author": null, - "subject": "14 02 02 30", - "result": "REJECTED", - "split_part": null, - "amendment": "605", - "type": "AMENDMENT", - "remarks": "1205687", - "subheading": null, - "final": false, - "formatted": "Am 605", - "reference": null - }, - { - "author": null, - "subject": "14 20 03 01", - "result": "REJECTED", - "split_part": null, - "amendment": "667", - "type": "AMENDMENT", - "remarks": "856026", - "subheading": null, - "final": false, - "formatted": "Am 667", - "reference": null - }, - { - "author": null, - "subject": "14 04 02", - "result": "REJECTED", - "split_part": null, - "amendment": "666", - "type": "AMENDMENT", - "remarks": "8655849", - "subheading": null, - "final": false, - "formatted": "Am 666", - "reference": null - }, - { - "author": null, - "subject": "14 04 03", - "result": "REJECTED", - "split_part": null, - "amendment": "317", - "type": "AMENDMENT", - "remarks": "1335557", - "subheading": null, - "final": false, - "formatted": "Am 317", - "reference": null - }, - { - "author": null, - "subject": "Block 8", - "result": "ADOPTED", - "split_part": null, - "amendment": "791, 790, 789, 845", - "type": "AMENDMENT", - "remarks": "621695", - "subheading": null, - "final": false, - "formatted": "Am 791, 790, 789, 845", - "reference": null - }, - { - "author": null, - "subject": "1 4 0 5", - "result": "REJECTED", - "split_part": null, - "amendment": "371", - "type": "AMENDMENT", - "remarks": "876044", - "subheading": null, - "final": false, - "formatted": "Am 371", - "reference": null - }, - { - "author": null, - "subject": "2 0 0 7", - "result": "REJECTED", - "split_part": null, - "amendment": "631", - "type": "AMENDMENT", - "remarks": "895977", - "subheading": null, - "final": false, - "formatted": "Am 631", - "reference": null - }, - { - "author": null, - "subject": "3 2 5", - "result": "REJECTED", - "split_part": null, - "amendment": "639", - "type": "AMENDMENT", - "remarks": "895995", - "subheading": null, - "final": false, - "formatted": "Am 639", - "reference": null - }, - { - "author": null, - "subject": "Block 9", - "result": "ADOPTED", - "split_part": null, - "amendment": "812, 813, 67, 814, 612, 613, 815, 816, 817, 818, 820, 822, 823, 825, 826, 827, 829, 831, 173, 893, 762, 763, 266, 841, 250, 759, 781, 819, 821, 824, 828, 830", - "type": "AMENDMENT", - "remarks": "56011520", - "subheading": null, - "final": false, - "formatted": "Am 812, 813, 67, 814, 612, 613, 815, 816, 817, 818, 820, 822, 823, 825, 826, 827, 829, 831, 173, 893, 762, 763, 266, 841, 250, 759, 781, 819, 821, 824, 828, 830", - "reference": null - }, - { - "author": null, - "subject": "D 03 01 27", - "result": "REJECTED", - "split_part": null, - "amendment": "582CP2", - "type": "AMENDMENT", - "remarks": "1325594", - "subheading": null, - "final": false, - "formatted": "Am 582PC2", - "reference": null - }, - { - "author": null, - "subject": "20 01 02 02", - "result": "REJECTED", - "split_part": null, - "amendment": "668", - "type": "AMENDMENT", - "remarks": "885978", - "subheading": null, - "final": false, - "formatted": "Am 668", - "reference": null - }, - { - "author": null, - "subject": "20 01 02 04", - "result": "REJECTED", - "split_part": null, - "amendment": "669", - "type": "AMENDMENT", - "remarks": "865998", - "subheading": null, - "final": false, - "formatted": "Am 669", - "reference": null - }, - { - "author": null, - "subject": "20 02 05", - "result": "REJECTED", - "split_part": null, - "amendment": "677", - "type": "AMENDMENT", - "remarks": "876015", - "subheading": null, - "final": false, - "formatted": "Am 677", - "reference": null - }, - { - "author": null, - "subject": "20 02 06 01", - "result": "REJECTED", - "split_part": null, - "amendment": "678", - "type": "AMENDMENT", - "remarks": "895959", - "subheading": null, - "final": false, - "formatted": "Am 678", - "reference": null - }, - { - "author": null, - "subject": "20 02 06 02", - "result": "REJECTED", - "split_part": null, - "amendment": "680", - "type": "AMENDMENT", - "remarks": "875979", - "subheading": null, - "final": false, - "formatted": "Am 680", - "reference": null - }, - { - "author": null, - "subject": "20 03 01 01", - "result": "REJECTED", - "split_part": null, - "amendment": "686", - "type": "AMENDMENT", - "remarks": "895959", - "subheading": null, - "final": false, - "formatted": "Am 686", - "reference": null - }, - { - "author": null, - "subject": "20 03 01 02", - "result": "REJECTED", - "split_part": null, - "amendment": "687", - "type": "AMENDMENT", - "remarks": "895959", - "subheading": null, - "final": false, - "formatted": "Am 687", - "reference": null - }, - { - "author": null, - "subject": "Block 10", - "result": "ADOPTED", - "split_part": null, - "amendment": "948, 41, 42, 43, 44, 45, 46", - "type": "AMENDMENT", - "remarks": "596972", - "subheading": null, - "final": false, - "formatted": "Am 948, 41, 42, 43, 44, 45, 46", - "reference": null - }, - { - "author": null, - "subject": "Block 11", - "result": "ADOPTED", - "split_part": null, - "amendment": "792, 744, 745, 746, 747", - "type": "AMENDMENT", - "remarks": "6262049", - "subheading": null, - "final": false, - "formatted": "Am 792, 744, 745, 746, 747", - "reference": null - }, - { - "author": null, - "subject": "Block 12", - "result": "ADOPTED", - "split_part": null, - "amendment": "408, 793, 794, 795, 796797798", - "type": "AMENDMENT", - "remarks": "58110113", - "subheading": null, - "final": false, - "formatted": "Am 408, 793, 794, 795, 796797798", - "reference": null - }, - { - "author": null, - "subject": "1 0 0 4", - "result": "REJECTED", - "split_part": null, - "amendment": "714", - "type": "AMENDMENT", - "remarks": "945908", - "subheading": null, - "final": false, - "formatted": "Am 714", - "reference": null - }, - { - "author": null, - "subject": "Block 13", - "result": "ADOPTED", - "split_part": null, - "amendment": "799, 800, 409, 801", - "type": "AMENDMENT", - "remarks": "58410011", - "subheading": null, - "final": false, - "formatted": "Am 799, 800, 409, 801", - "reference": null - }, - { - "author": null, - "subject": "Block 14", - "result": "ADOPTED", - "split_part": null, - "amendment": "254, 255, 256, 257, 258, 259", - "type": "AMENDMENT", - "remarks": "600923", - "subheading": null, - "final": false, - "formatted": "Am 254, 255, 256, 257, 258, 259", - "reference": null - }, - { - "author": null, - "subject": "Block 15", - "result": "ADOPTED", - "split_part": null, - "amendment": "802, 803, 804, 805, 806, 626, 807, 76, 808, 77, 78", - "type": "AMENDMENT", - "remarks": "55011530", - "subheading": null, - "final": false, - "formatted": "Am 802, 803, 804, 805, 806, 626, 807, 76, 808, 77, 78", - "reference": null - }, - { - "author": null, - "subject": "Block 16", - "result": "ADOPTED", - "split_part": null, - "amendment": "896, 949, 897, 898, 899, 900, 901, 134, 950, 902, 903, 904, 905, 906, 907, 908, 909, 910, 911, 912, 914, 915, 916, 917, 918, 913, 919, 920, 921, 922, 923, 924, 925, 21, 943, 18, 944, 926, 927, 928, 929, 930, 931, 932, 933, 934, 935, 936, 170, 942, 937, 938, 939, 174, 940, 941", - "type": "AMENDMENT", - "remarks": "5845358", - "subheading": null, - "final": true, - "formatted": "Am 896, 949, 897, 898, 899, 900, 901, 134, 950, 902, 903, 904, 905, 906, 907, 908, 909, 910, 911, 912, 914, 915, 916, 917, 918, 913, 919, 920, 921, 922, 923, 924, 925, 21, 943, 18, 944, 926, 927, 928, 929, 930, 931, 932, 933, 934, 935, 936, 170, 942, 937, 938, 939, 174, 940, 941", - "reference": null - } - ] - } -] diff --git a/app/tests/data/vote_collections.json b/app/tests/data/vote_collections.json deleted file mode 100644 index c4665fc7d..000000000 --- a/app/tests/data/vote_collections.json +++ /dev/null @@ -1,372 +0,0 @@ -[ - { - "title": "A WTO-compatible EU carbon border adjustment mechanism", - "reference": "A9-0019/2021", - "votes": [ - { - "author": "original text", - "subject": "\u00a7 5", - "result": "ADOPTED", - "split_part": 1, - "amendment": null, - "type": "SEPARATE", - "formatted": "\u00a7 5/1", - "remarks": "5856942", - "reference": null, - "subheading": null, - "final": false - }, - { - "author": "original text", - "subject": "\u00a7 5", - "result": "ADOPTED", - "split_part": 2, - "amendment": null, - "type": "SEPARATE", - "formatted": "\u00a7 5/2", - "remarks": "37430715", - "reference": null, - "subheading": null, - "final": false - }, - { - "author": "MEPs", - "subject": "\u00a7 12", - "result": "REJECTED", - "split_part": null, - "amendment": "2", - "type": "AMENDMENT", - "formatted": "Am 2", - "remarks": "28736743", - "reference": null, - "subheading": null, - "final": false - }, - { - "author": "original text", - "subject": "\u00a7 12", - "result": "ADOPTED", - "split_part": 1, - "amendment": null, - "type": "SEPARATE", - "formatted": "\u00a7 12/1", - "remarks": "5935648", - "reference": null, - "subheading": null, - "final": false - }, - { - "author": "original text", - "subject": "\u00a7 12", - "result": "ADOPTED", - "split_part": 2, - "amendment": null, - "type": "SEPARATE", - "formatted": "\u00a7 12/2", - "remarks": "36731416", - "reference": null, - "subheading": null, - "final": false - }, - { - "author": "original text", - "subject": "\u00a7 13", - "result": "ADOPTED", - "split_part": 1, - "amendment": null, - "type": "SEPARATE", - "formatted": "\u00a7 13/1", - "remarks": "6312739", - "reference": null, - "subheading": null, - "final": false - }, - { - "author": "original text", - "subject": "\u00a7 13", - "result": "ADOPTED", - "split_part": 2, - "amendment": null, - "type": "SEPARATE", - "formatted": "\u00a7 13/2", - "remarks": "41222758", - "reference": null, - "subheading": null, - "final": false - }, - { - "author": "original text", - "subject": "\u00a7 16", - "result": "ADOPTED", - "split_part": 1, - "amendment": null, - "type": "SEPARATE", - "formatted": "\u00a7 16/1", - "remarks": "52811950", - "reference": null, - "subheading": null, - "final": false - }, - { - "author": "original text", - "subject": "\u00a7 16", - "result": "ADOPTED", - "split_part": 2, - "amendment": null, - "type": "SEPARATE", - "formatted": "\u00a7 16/2", - "remarks": "3663229", - "reference": null, - "subheading": null, - "final": false - }, - { - "author": "original text", - "subject": "\u00a7 20", - "result": "ADOPTED", - "split_part": null, - "amendment": null, - "type": "SEPARATE", - "formatted": "\u00a7 20", - "remarks": "33932038", - "reference": null, - "subheading": null, - "final": false - }, - { - "author": "MEPs", - "subject": "\u00a7 22", - "result": "ADOPTED", - "split_part": null, - "amendment": "3", - "type": "AMENDMENT", - "formatted": "Am 3", - "remarks": "35630040", - "reference": null, - "subheading": null, - "final": false - }, - { - "author": "original text", - "subject": "\u00a7 25", - "result": "ADOPTED", - "split_part": null, - "amendment": null, - "type": "SEPARATE", - "formatted": "\u00a7 25", - "remarks": "39822381", - "reference": null, - "subheading": null, - "final": false - }, - { - "author": "MEPs", - "subject": "\u00a7 28", - "result": "ADOPTED", - "split_part": 1, - "amendment": "4", - "type": "AMENDMENT", - "formatted": "Am 4/1", - "remarks": "42624526", - "reference": null, - "subheading": null, - "final": false - }, - { - "author": "MEPs", - "subject": "\u00a7 28", - "result": "ADOPTED", - "split_part": 2, - "amendment": "4", - "type": "AMENDMENT", - "formatted": "Am 4/2", - "remarks": "34033026", - "reference": null, - "subheading": null, - "final": false - }, - { - "author": "MEPs", - "subject": "\u00a7 28", - "result": "ADOPTED", - "split_part": 3, - "amendment": "4", - "type": "AMENDMENT", - "formatted": "Am 4/3", - "remarks": "34432923", - "reference": null, - "subheading": null, - "final": false - }, - { - "author": "MEPs", - "subject": "After \u00a7 32", - "result": "REJECTED", - "split_part": null, - "amendment": "1", - "type": "AMENDMENT", - "formatted": "Am 1", - "remarks": "11956117", - "reference": null, - "subheading": null, - "final": false - }, - { - "author": "original text", - "subject": "\u00a7 33", - "result": "ADOPTED", - "split_part": 1, - "amendment": null, - "type": "SEPARATE", - "formatted": "\u00a7 33/1", - "remarks": "5899711", - "reference": null, - "subheading": null, - "final": false - }, - { - "author": "original text", - "subject": "\u00a7 33", - "result": "ADOPTED", - "split_part": 2, - "amendment": null, - "type": "SEPARATE", - "formatted": "\u00a7 33/2", - "remarks": "54012235", - "reference": null, - "subheading": null, - "final": false - }, - { - "author": "original text", - "subject": "\u00a7 33", - "result": "ADOPTED", - "split_part": 3, - "amendment": null, - "type": "SEPARATE", - "formatted": "\u00a7 33/3", - "remarks": "668218", - "reference": null, - "subheading": null, - "final": false - }, - { - "author": "original text", - "subject": "\u00a7 33", - "result": "ADOPTED", - "split_part": 4, - "amendment": null, - "type": "SEPARATE", - "formatted": "\u00a7 33/4", - "remarks": "3852374", - "reference": null, - "subheading": null, - "final": false - }, - { - "author": "original text", - "subject": "\u00a7 34", - "result": "ADOPTED", - "split_part": 1, - "amendment": null, - "type": "SEPARATE", - "formatted": "\u00a7 34/1", - "remarks": "55910335", - "reference": null, - "subheading": null, - "final": false - }, - { - "author": "original text", - "subject": "\u00a7 34", - "result": "REJECTED", - "split_part": 2, - "amendment": null, - "type": "SEPARATE", - "formatted": "\u00a7 34/2", - "remarks": "28233877", - "reference": null, - "subheading": null, - "final": false - }, - { - "author": "original text", - "subject": "\u00a7 39", - "result": "ADOPTED", - "split_part": null, - "amendment": null, - "type": "SEPARATE", - "formatted": "\u00a7 39", - "remarks": "35831623", - "reference": null, - "subheading": null, - "final": false - }, - { - "author": "original text", - "subject": "Citation 11", - "result": "ADOPTED", - "split_part": null, - "amendment": null, - "type": "SEPARATE", - "formatted": "Visa 11", - "remarks": "37530615", - "reference": null, - "subheading": null, - "final": false - }, - { - "author": "original text", - "subject": "Recital G", - "result": "ADOPTED", - "split_part": 1, - "amendment": null, - "type": "SEPARATE", - "formatted": "Consid\u00e9rant G/1", - "remarks": "5807344", - "reference": null, - "subheading": null, - "final": false - }, - { - "author": "original text", - "subject": "Recital G", - "result": "ADOPTED", - "split_part": 2, - "amendment": null, - "type": "SEPARATE", - "formatted": "Consid\u00e9rant G/2", - "remarks": "4002889", - "reference": null, - "subheading": null, - "final": false - }, - { - "author": "original text", - "subject": "Recital R", - "result": "ADOPTED", - "split_part": null, - "amendment": null, - "type": "SEPARATE", - "formatted": "Consid\u00e9rant R", - "remarks": "35433012", - "reference": null, - "subheading": null, - "final": false - }, - { - "author": null, - "subject": "Motion for a resolution (as a whole)", - "result": "ADOPTED", - "split_part": null, - "amendment": null, - "type": "PRIMARY", - "formatted": "Proposition de r\u00e9solution", - "remarks": "44470181", - "reference": null, - "subheading": null, - "final": true - } - ] - } -] diff --git a/app/tests/data/voting_lists-2.json b/app/tests/data/voting_lists-2.json deleted file mode 100644 index 4d2fc6b84..000000000 --- a/app/tests/data/voting_lists-2.json +++ /dev/null @@ -1,10 +0,0 @@ -[ - { - "doceo_vote_id": 109619, - "description": "B9-0154/2019 - § 1/2", - "reference": "B9-0154/2019", - "votings": [ - [ "Doe", "FOR" ] - ] - } -] diff --git a/app/tests/data/voting_lists-3.json b/app/tests/data/voting_lists-3.json deleted file mode 100644 index 3acd3fa4a..000000000 --- a/app/tests/data/voting_lists-3.json +++ /dev/null @@ -1,11 +0,0 @@ -[ - { - "doceo_vote_id": 109619, - "description": "B9-0154/2019 - § 1/2", - "reference": "B9-0154/2019", - "votings": [ - [ "Doe Jane", "FOR" ], - [ "Doe John", "AGAINST" ] - ] - } -] diff --git a/app/tests/data/voting_lists-4.json b/app/tests/data/voting_lists-4.json deleted file mode 100644 index ebc380da6..000000000 --- a/app/tests/data/voting_lists-4.json +++ /dev/null @@ -1,10 +0,0 @@ -[ - { - "doceo_vote_id": 109619, - "description": "B9-0154/2019 - § 1/2", - "reference": "B9-0154/2019", - "votings": [ - [ "Doé", "FOR" ] - ] - } -] diff --git a/app/tests/data/voting_lists-5.json b/app/tests/data/voting_lists-5.json deleted file mode 100644 index f33cd0a4c..000000000 --- a/app/tests/data/voting_lists-5.json +++ /dev/null @@ -1,8 +0,0 @@ -[ - { - "doceo_vote_id": 12345, - "description": "Ordre du jour", - "reference": null, - "votings": [] - } -] diff --git a/app/tests/data/voting_lists-6.json b/app/tests/data/voting_lists-6.json deleted file mode 100644 index be2b1a2d4..000000000 --- a/app/tests/data/voting_lists-6.json +++ /dev/null @@ -1,8 +0,0 @@ -[ - { - "doceo_vote_id": 109619, - "description": "B9-0154/2019 - § 1/2", - "reference": "B9-0154/2019", - "votings": [] - } -] diff --git a/app/tests/data/voting_lists-7.json b/app/tests/data/voting_lists-7.json deleted file mode 100644 index c1f0df334..000000000 --- a/app/tests/data/voting_lists-7.json +++ /dev/null @@ -1,20 +0,0 @@ -[ - { - "doceo_vote_id": null, - "description": "Lorem Ipsum - Am 1", - "reference": "A9-1234/2021", - "votings": [] - }, - { - "doceo_vote_id": null, - "description": "Lorem Ipsum - Am 2", - "reference": "A9-1234/2021", - "votings": [] - }, - { - "doceo_vote_id": null, - "description": "Lorem Ipsum - Am 2", - "reference": "A9-1234/2021", - "votings": [] - } -] diff --git a/app/tests/data/voting_lists.json b/app/tests/data/voting_lists.json deleted file mode 100644 index be2b1a2d4..000000000 --- a/app/tests/data/voting_lists.json +++ /dev/null @@ -1,8 +0,0 @@ -[ - { - "doceo_vote_id": 109619, - "description": "B9-0154/2019 - § 1/2", - "reference": "B9-0154/2019", - "votings": [] - } -] diff --git a/app/webpack.mix.js b/app/webpack.mix.js deleted file mode 100644 index b8c58cf53..000000000 --- a/app/webpack.mix.js +++ /dev/null @@ -1,8 +0,0 @@ -const mix = require('laravel-mix'); - -mix.postCss('resources/css/app.css', 'public/css').version(); -mix.js('resources/js/app.js', 'public/js').version(); -mix.browserSync({ - proxy: 'localhost:8000', - open: false, -}); diff --git a/scrapers/.coveragerc b/backend/.coveragerc similarity index 100% rename from scrapers/.coveragerc rename to backend/.coveragerc diff --git a/backend/.dockerignore b/backend/.dockerignore new file mode 100644 index 000000000..a9aa3943b --- /dev/null +++ b/backend/.dockerignore @@ -0,0 +1,152 @@ +# Byte-compiled / optimized / DLL files +**/__pycache__ +**/*.py[cod] +**/*$py.class + +# C extensions +**/*.so + +# Distribution / packaging +**/.Python +**/build +**/develop-eggs +**/dist +**/downloads +**/eggs +**/.eggs +**/lib +**/lib64 +**/parts +**/sdist +**/var +**/wheels +**/share/python-wheels +**/*.egg-info +**/.installed.cfg +**/*.egg +**/MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +**/*.manifest +**/*.spec + +# Installer logs +**/pip-log.txt +**/pip-delete-this-directory.txt + +# Unit test / coverage reports +**/htmlcov +**/.tox +**/.nox +**/.coverage +**/.coverage.* +**/.cache +**/nosetests.xml +**/coverage.xml +**/*.cover +**/*.py,cover +**/.hypothesis +**/.pytest_cache +**/cover + +# Translations +**/*.mo +**/*.pot + +# Django stuff: +**/*.log +**/local_settings.py +**/db.sqlite3 +**/db.sqlite3-journal + +# Flask stuff: +**/instance +**/.webassets-cache + +# Scrapy stuff: +**/.scrapy + +# Sphinx documentation +**/docs/_build + +# PyBuilder +**/.pybuilder +**/target + +# Jupyter Notebook +**/.ipynb_checkpoints + +# IPython +**/profile_default +**/ipython_config.py + +# pyenv +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# .python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow +**/__pypackages__ + +# Celery stuff +**/celerybeat-schedule +**/celerybeat.pid + +# SageMath parsed files +**/*.sage.py + +# Environments +**/.env +**/.venv +**/env +**/venv +**/ENV +**/env.bak +**/venv.bak + +# Spyder project settings +**/.spyderproject +**/.spyproject + +# Rope project settings +**/.ropeproject + +# mkdocs documentation +site + +# mypy +**/.mypy_cache +**/.dmypy.json +**/dmypy.json + +# Pyre type checker +**/.pyre + +# pytype static type analyzer +**/.pytype + +# Cython debug symbols +**/cython_debug + +# Ruff +**/.ruff_cache + +# flyctl launch added from .mypy_cache/.gitignore +# Automatically created by mypy +.mypy_cache/**/* + +# flyctl launch added from .pytest_cache/.gitignore +# Created by pytest automatically. +.pytest_cache/**/* + +# flyctl launch added from .ruff_cache/.gitignore +.ruff_cache/**/* diff --git a/scrapers/.editorconfig b/backend/.editorconfig similarity index 100% rename from scrapers/.editorconfig rename to backend/.editorconfig diff --git a/scrapers/.gitignore b/backend/.gitignore similarity index 96% rename from scrapers/.gitignore rename to backend/.gitignore index 5391d8739..29c70dfe3 100644 --- a/scrapers/.gitignore +++ b/backend/.gitignore @@ -135,4 +135,10 @@ dmypy.json .pytype/ # Cython debug symbols -cython_debug/ \ No newline at end of file +cython_debug/ + +# Ruff +.ruff_cache + +# Test coverage +/tests/htmlcov diff --git a/backend/Dockerfile b/backend/Dockerfile new file mode 100644 index 000000000..74b49ad70 --- /dev/null +++ b/backend/Dockerfile @@ -0,0 +1,38 @@ +FROM python:3.12-alpine3.19 + +RUN apk --update add \ + build-base \ + libffi-dev \ + # TODO: Switch back to LibreSSL once conflicts on Alpine 3.17 are resolved. + openssl-dev \ + libxml2-dev \ + libxslt-dev \ + python3-dev \ + bash \ + less \ + make \ + cargo \ + sqlite \ + tmux + +RUN pip install poetry + +WORKDIR /howtheyvote/backend + +# Copy dependencies required to install dependencies +COPY pyproject.toml pyproject.toml +COPY poetry.toml poetry.toml +COPY poetry.lock poetry.lock +RUN poetry env use python3.12 +RUN poetry install + +COPY . . + +# Install again in order to make the `htv` CLI script available +RUN poetry install + +ENV TZ=UTC +ENV ALEMBIC_CONFIG=./howtheyvote/alembic/alembic.ini +ENV PATH="/howtheyvote/backend/.venv/bin:$PATH" + +CMD gunicorn -b [::]:5000 --workers=5 --forwarded-allow-ips=* howtheyvote.wsgi:app diff --git a/backend/Makefile b/backend/Makefile new file mode 100644 index 000000000..24f04e038 --- /dev/null +++ b/backend/Makefile @@ -0,0 +1,25 @@ +default: format-check lint typecheck test + +test: + poetry run pytest --cov=. --cov=!./howtheyvote/alembic --cov-report=html:tests/htmlcov + +coverage: + poetry run coverage xml + +lint: + poetry run ruff check . + +lint-fix: + poetry run ruff check --fix . + +format: + poetry run ruff format . + +format-check: + poetry run ruff format --check . + +typecheck: + poetry run mypy --strict ./howtheyvote/ + +dev: + poetry run flask --app howtheyvote.wsgi run --debug --host=0.0.0.0 diff --git a/backend/howtheyvote/__init__.py b/backend/howtheyvote/__init__.py new file mode 100644 index 000000000..3bd472c83 --- /dev/null +++ b/backend/howtheyvote/__init__.py @@ -0,0 +1,23 @@ +import logging +import sys + +import structlog + +logging.basicConfig( + format="%(message)s", + stream=sys.stdout, + level=logging.INFO, +) + +structlog.configure( + processors=[ + structlog.stdlib.filter_by_level, + structlog.stdlib.add_logger_name, + structlog.processors.add_log_level, + structlog.processors.TimeStamper(fmt="iso"), + structlog.processors.format_exc_info, + structlog.processors.JSONRenderer(), + ], + logger_factory=structlog.stdlib.LoggerFactory(), + wrapper_class=structlog.stdlib.BoundLogger, +) diff --git a/backend/howtheyvote/alembic/alembic.ini b/backend/howtheyvote/alembic/alembic.ini new file mode 100644 index 000000000..fe20f539e --- /dev/null +++ b/backend/howtheyvote/alembic/alembic.ini @@ -0,0 +1,103 @@ +# A generic, single database configuration. + +[alembic] +# path to migration scripts +script_location = howtheyvote/alembic + +# template used to generate migration file names; The default value is %%(rev)s_%%(slug)s +# Uncomment the line below if you want the files to be prepended with date and time +# see https://alembic.sqlalchemy.org/en/latest/tutorial.html#editing-the-ini-file +# for all available tokens +# file_template = %%(year)d_%%(month).2d_%%(day).2d_%%(hour).2d%%(minute).2d-%%(rev)s_%%(slug)s + +# sys.path path, will be prepended to sys.path if present. +# defaults to the current working directory. +prepend_sys_path = . + +# timezone to use when rendering the date within the migration file +# as well as the filename. +# If specified, requires the python-dateutil library that can be +# installed by adding `alembic[tz]` to the pip requirements +# string value is passed to dateutil.tz.gettz() +# leave blank for localtime +# timezone = + +# max length of characters to apply to the +# "slug" field +# truncate_slug_length = 40 + +# set to 'true' to run the environment during +# the 'revision' command, regardless of autogenerate +# revision_environment = false + +# set to 'true' to allow .pyc and .pyo files without +# a source .py file to be detected as revisions in the +# versions/ directory +# sourceless = false + +# version location specification; This defaults +# to alembic/versions. When using multiple version +# directories, initial revisions must be specified with --version-path. +# The path separator used here should be the separator specified by "version_path_separator" below. +# version_locations = %(here)s/bar:%(here)s/bat:alembic/versions + +# version path separator; As mentioned above, this is the character used to split +# version_locations. The default within new alembic.ini files is "os", which uses os.pathsep. +# If this key is omitted entirely, it falls back to the legacy behavior of splitting on spaces and/or commas. +# Valid values for version_path_separator are: +# +# version_path_separator = : +# version_path_separator = ; +# version_path_separator = space +version_path_separator = os # Use os.pathsep. Default configuration used for new projects. + +# the output encoding used when revision files +# are written from script.py.mako +# output_encoding = utf-8 + + +[post_write_hooks] +# post_write_hooks defines scripts or Python functions that are run +# on newly generated revision scripts. See the documentation for further +# detail and examples + +# format using "black" - use the console_scripts runner, against the "black" entrypoint +# hooks = black +# black.type = console_scripts +# black.entrypoint = black +# black.options = -l 79 REVISION_SCRIPT_FILENAME + +# Logging configuration +[loggers] +keys = root,sqlalchemy,alembic + +[handlers] +keys = console + +[formatters] +keys = generic + +[logger_root] +level = WARN +handlers = console +qualname = + +[logger_sqlalchemy] +level = WARN +handlers = +qualname = sqlalchemy.engine + +[logger_alembic] +level = INFO +handlers = +qualname = alembic + +[handler_console] +class = StreamHandler +args = (sys.stderr,) +level = NOTSET +formatter = generic + +[formatter_generic] +format = %(levelname)-5.5s [%(name)s] %(message)s +datefmt = %H:%M:%S diff --git a/backend/howtheyvote/alembic/env.py b/backend/howtheyvote/alembic/env.py new file mode 100644 index 000000000..a59a7a4b1 --- /dev/null +++ b/backend/howtheyvote/alembic/env.py @@ -0,0 +1,17 @@ +from alembic import context + +from howtheyvote.config import DATABASE_URI + +config = context.config +config.set_main_option("sqlalchemy.url", DATABASE_URI) + + +def run_migrations_online() -> None: + connection = config.attributes.get("connection", None) + context.configure(connection=connection, target_metadata=None) + + with context.begin_transaction(): + context.run_migrations() + + +run_migrations_online() diff --git a/backend/howtheyvote/alembic/script.py.mako b/backend/howtheyvote/alembic/script.py.mako new file mode 100644 index 000000000..55df2863d --- /dev/null +++ b/backend/howtheyvote/alembic/script.py.mako @@ -0,0 +1,24 @@ +"""${message} + +Revision ID: ${up_revision} +Revises: ${down_revision | comma,n} +Create Date: ${create_date} + +""" +from alembic import op +import sqlalchemy as sa +${imports if imports else ""} + +# revision identifiers, used by Alembic. +revision = ${repr(up_revision)} +down_revision = ${repr(down_revision)} +branch_labels = ${repr(branch_labels)} +depends_on = ${repr(depends_on)} + + +def upgrade() -> None: + ${upgrades if upgrades else "pass"} + + +def downgrade() -> None: + ${downgrades if downgrades else "pass"} diff --git a/backend/howtheyvote/alembic/versions/3eec8050f4d5_add_eurovoc_concepts_column.py b/backend/howtheyvote/alembic/versions/3eec8050f4d5_add_eurovoc_concepts_column.py new file mode 100644 index 000000000..3004cf4c6 --- /dev/null +++ b/backend/howtheyvote/alembic/versions/3eec8050f4d5_add_eurovoc_concepts_column.py @@ -0,0 +1,23 @@ +"""Add eurovoc_concepts column + +Revision ID: 3eec8050f4d5 +Revises: 9a4972f3a768 +Create Date: 2024-03-31 17:25:34.058229 + +""" +import sqlalchemy as sa +from alembic import op + +# revision identifiers, used by Alembic. +revision = "3eec8050f4d5" +down_revision = "9a4972f3a768" +branch_labels = None +depends_on = None + + +def upgrade() -> None: + op.add_column("votes", sa.Column("eurovoc_concepts", sa.JSON)) + + +def downgrade() -> None: + op.drop_column("votes", "eurovoc_concepts") diff --git a/backend/howtheyvote/alembic/versions/9200b9028b93_create_timestamp_index_on_votes_table.py b/backend/howtheyvote/alembic/versions/9200b9028b93_create_timestamp_index_on_votes_table.py new file mode 100644 index 000000000..1539855c5 --- /dev/null +++ b/backend/howtheyvote/alembic/versions/9200b9028b93_create_timestamp_index_on_votes_table.py @@ -0,0 +1,22 @@ +"""create timestamp index on votes table + +Revision ID: 9200b9028b93 +Revises: 3eec8050f4d5 +Create Date: 2024-05-06 15:49:49.074361 + +""" +from alembic import op + +# revision identifiers, used by Alembic. +revision = "9200b9028b93" +down_revision = "3eec8050f4d5" +branch_labels = None +depends_on = None + + +def upgrade() -> None: + op.create_index("ix_votes_timestamp", table_name="votes", columns=["timestamp"]) + + +def downgrade() -> None: + op.drop_index("ix_votes_timestamp", table_name="votes") diff --git a/backend/howtheyvote/alembic/versions/9a4972f3a768_init.py b/backend/howtheyvote/alembic/versions/9a4972f3a768_init.py new file mode 100644 index 000000000..48c23681d --- /dev/null +++ b/backend/howtheyvote/alembic/versions/9a4972f3a768_init.py @@ -0,0 +1,108 @@ +"""Init + +Revision ID: 9a4972f3a768 +Revises: +Create Date: 2024-03-29 16:46:24.464882 + +""" +import sqlalchemy as sa +from alembic import op + +# revision identifiers, used by Alembic. +revision = "9a4972f3a768" +down_revision = None +branch_labels = None +depends_on = None + + +def upgrade() -> None: + op.create_table( + "fragments", + sa.Column("model", sa.Unicode, nullable=False), + sa.Column("source_name", sa.Unicode, nullable=False), + sa.Column("source_id", sa.Unicode, nullable=False), + sa.Column("source_url", sa.Unicode, nullable=True), + sa.Column("timestamp", sa.DateTime, nullable=False, server_default=sa.func.now()), + sa.Column("group_key", sa.Unicode, nullable=False), + sa.Column("data", sa.JSON, nullable=False), + sa.PrimaryKeyConstraint("model", "source_name", "source_id", name="pk_fragment"), + ) + + op.create_index("ix_fragments_group_key", "fragments", ["group_key"]) + + op.create_table( + "members", + sa.Column("id", sa.Integer, primary_key=True), + sa.Column("first_name", sa.Unicode), + sa.Column("last_name", sa.Unicode), + sa.Column("country", sa.Unicode), + sa.Column("terms", sa.JSON), + sa.Column("group_memberships", sa.JSON), + sa.Column("date_of_birth", sa.Date), + sa.Column("email", sa.Unicode), + sa.Column("facebook", sa.Unicode), + sa.Column("twitter", sa.Unicode), + ) + + op.create_table( + "plenary_sessions", + sa.Column("id", sa.Unicode, primary_key=True), + sa.Column("term", sa.Integer), + sa.Column("start_date", sa.Date), + sa.Column("end_date", sa.Date), + sa.Column("location", sa.Unicode), + ) + + op.create_table( + "votes", + sa.Column("id", sa.Integer, primary_key=True), + sa.Column("timestamp", sa.DateTime), + sa.Column("order", sa.Integer), + sa.Column("title", sa.Unicode), + sa.Column("reference", sa.Unicode), + sa.Column("rapporteur", sa.Unicode), + sa.Column("description", sa.Unicode), + sa.Column("procedure_title", sa.Unicode), + sa.Column("procedure_reference", sa.Unicode), + sa.Column("geo_areas", sa.JSON), + sa.Column("is_main", sa.Boolean), + sa.Column("is_featured", sa.Boolean), + sa.Column("group_key", sa.Unicode), + sa.Column("member_votes", sa.JSON), + sa.Column("issues", sa.JSON), + ) + + op.create_table( + "vote_groups", + sa.Column("id", sa.Unicode, primary_key=True), + sa.Column("date", sa.Date), + sa.Column("issues", sa.JSON), + ) + + op.create_table( + "press_releases", + sa.Column("id", sa.Unicode, primary_key=True), + sa.Column("published_at", sa.DateTime), + sa.Column("term", sa.Integer), + sa.Column("title", sa.Unicode), + sa.Column("references", sa.JSON), + sa.Column("procedure_references", sa.JSON), + sa.Column("facts", sa.Unicode), + ) + + op.create_table( + "pipeline_runs", + sa.Column("id", sa.Integer, primary_key=True, autoincrement=True), + sa.Column("pipeline", sa.Unicode, nullable=False), + sa.Column("started_at", sa.DateTime, nullable=False), + sa.Column("finished_at", sa.DateTime, nullable=False), + sa.Column("result", sa.Unicode, nullable=False), + ) + + op.create_index( + "ix_pipeline_runs_pipeline_result", "pipeline_runs", ["pipeline", "result"] + ) + + +def downgrade() -> None: + pass diff --git a/backend/howtheyvote/analysis/__init__.py b/backend/howtheyvote/analysis/__init__.py new file mode 100644 index 000000000..a08a73f3f --- /dev/null +++ b/backend/howtheyvote/analysis/__init__.py @@ -0,0 +1,15 @@ +from .votes import ( + FeaturedVotesAnalyzer, + MainVoteAnalyzer, + VoteDataIssuesAnalyzer, + VoteGroupsAnalyzer, + VoteGroupsDataIssuesAnalyzer, +) + +__all__ = [ + "FeaturedVotesAnalyzer", + "MainVoteAnalyzer", + "VoteDataIssuesAnalyzer", + "VoteGroupsAnalyzer", + "VoteGroupsDataIssuesAnalyzer", +] diff --git a/backend/howtheyvote/analysis/votes.py b/backend/howtheyvote/analysis/votes.py new file mode 100644 index 000000000..89bc90cea --- /dev/null +++ b/backend/howtheyvote/analysis/votes.py @@ -0,0 +1,241 @@ +import datetime +from collections import defaultdict +from collections.abc import Iterable, Iterator +from itertools import chain + +from unidecode import unidecode + +from ..helpers import make_key +from ..models import DataIssue, Fragment, PressRelease, Vote + + +class VoteGroupsAnalyzer: + """Most of the time, before casting a main/final vote, MEPs vote on a bunch + amendments, split, or separate votes. These votes usually all have the same title. + Most of the time, they will also have the same reference or procedure reference, + but that is not always the case. The analyzer assigns a group key derived from the + session and title. The key can be used to retrieve other votes from the same group, + e.g. in order to display a list of amendment votes for a given main vote.""" + + def __init__(self, date: datetime.date, votes: Iterable[Vote]): + self.date = date + self.votes = votes + + def run(self) -> Iterator[Fragment]: + groups: dict[str, list[int]] = defaultdict(list) + + for vote in self.votes: + group_key = self._make_group_key(self.date, vote) + if group_key: + groups[group_key].append(vote.id) + + for group_key, vote_ids in groups.items(): + yield Fragment( + model="VoteGroup", + source_id=group_key, + source_name=type(self).__name__, + group_key=group_key, + data={"date": self.date.isoformat()}, + ) + + for vote_id in vote_ids: + yield Fragment( + model="Vote", + source_id=vote_id, + source_name=type(self).__name__, + group_key=vote_id, + data={"group_key": group_key}, + ) + + def _make_group_key(self, date: datetime.date, vote: Vote) -> str | None: + title = vote.display_title + + if not title: + return None + + return make_key(date.isoformat(), title) + + +class MainVoteAnalyzer: + """This analyzer checks the vote description for common keywords that indicate + that the vote is a main vote in its vote group. Only main votes are displayed + in index pages and are searchable.""" + + MAIN_DESCRIPTIONS = set( + [ + "draft council decision", + "projet de decision du conseil", + "projet de reglement du conseil", + "projet de recommendation", + "motion for resolution", + "motion for resolution (as a whole)", + "motion for resolution (text as a whole)", + "motion for a resolution", + "motion for a resolution (as a whole)", + "motion for a resolution (text as a whole)", + "proposition de resolution", + "proposition de resolution (ensemble du texte)", + "resolution", + "proposals for decision", + "proposition de decision", + "proposal for a decision", + "proposal for a decision (as a whole)", + "proposition de decision (ensemble du texte)", + "commission proposal", + "proposition de la commission", + "proposition de commission", + "proposition de la commission et amendement", + "proposition de la commission et amendements", + "proposition de la commission au conseil", + "provisional agreement", + "accord provisoire", + "final vote", + "decision d'engager des negociations interinstitutionnelles", + "projet de decision du conseil europeen", + ] + ) + + def __init__(self, vote_id: int, description: str | None): + self.vote_id = vote_id + self.description = description + + def run(self) -> Fragment | None: + if not self.description: + return None + + description = unidecode(self.description).lower() + parts = description.split(" - ") + + if all([part not in self.MAIN_DESCRIPTIONS for part in parts]): + return None + + return Fragment( + model="Vote", + source_id=self.vote_id, + source_name=type(self).__name__, + group_key=self.vote_id, + data={"is_main": True}, + ) + + +class FeaturedVotesAnalyzer: + """This analyzer takes a set of press releases and a set of votes (typically from + # the same session) and finds matches between the two sets based on document or + # procedure references. If a press release exists for a vote, we consider it to be + # particularly relevant and assign a flag that can be used for filtering.""" + + def __init__(self, votes: Iterable[Vote], press_releases: Iterable[PressRelease]): + self.votes = votes + + self.by_procedure_reference: dict[str, set[str]] = defaultdict(set) + self.by_reference: dict[str, set[str]] = defaultdict(set) + + for press_release in press_releases: + if press_release.references: + for reference in press_release.references: + self.by_reference[reference].add(press_release.id) + + if press_release.procedure_references: + for procedure_reference in press_release.procedure_references: + self.by_procedure_reference[procedure_reference].add(press_release.id) + + def run(self) -> Iterator[Fragment]: + for vote in self.votes: + if not vote.is_main: + continue + + release_ids = set() + + if vote.reference and vote.reference in self.by_reference: + release_ids |= self.by_reference[vote.reference] + + if ( + vote.procedure_reference + and vote.procedure_reference in self.by_procedure_reference + ): + release_ids |= self.by_procedure_reference[vote.procedure_reference] + + for release_id in release_ids: + yield Fragment( + model="Vote", + source_id=f"{vote.id}:{release_id}", + source_name=type(self).__name__, + group_key=vote.id, + data={"is_featured": True}, + ) + + +class VoteDataIssuesAnalyzer: + """This analyzer checks a vote for common data quality issues. Depending on + the issue type, we might decide not to display the vote at all or to show + a warning message in the frontend. The analyzer also helps discovering new + edge cases or short comings in other scrapers and analyzers.""" + + def __init__(self, vote: Vote): + self.vote = vote + + def run(self) -> Iterator[Fragment]: + return chain( + self.member_votes_count(), + self.empty_titles(), + ) + + def empty_titles(self) -> Iterator[Fragment]: + if self.vote.title or self.vote.procedure_title: + return + + yield Fragment( + model="Vote", + source_id=self.vote.id, + source_name=type(self).__name__, + group_key=self.vote.id, + data={"issues": [DataIssue.EMPTY_TITLES]}, + ) + + def member_votes_count(self) -> Iterator[Fragment]: + brexit_date = datetime.date(2020, 2, 1) + date = self.vote.timestamp.date() + count = len(self.vote.member_votes) + + issues = [] + + if (date < brexit_date and count != 751) or (date >= brexit_date and count != 705): + issues = [DataIssue.MEMBER_VOTES_COUNT_MISMATCH] + + yield Fragment( + model="Vote", + source_id=self.vote.id, + source_name=type(self).__name__, + group_key=self.vote.id, + data={"issues": issues}, + ) + + +class VoteGroupsDataIssuesAnalyzer: + """This analyzer checks that there is at least one main vote per vote group. This is useful + in order to identify votes that the `MainVoteAnalyzer` currently doesn’t ocrrectly classify + as a main vote.""" + + def __init__(self, votes: Iterable[Vote]): + self.votes = votes + + def run(self) -> Iterator[Fragment]: + groups: dict[str, list[Vote]] = defaultdict(list) + + for vote in self.votes: + if vote.group_key: + groups[vote.group_key].append(vote) + + for group_key, votes in groups.items(): + issues = [] + + if all(not vote.is_main for vote in votes): + issues = [DataIssue.VOTE_GROUP_NO_MAIN_VOTE] + + yield Fragment( + model="VoteGroup", + source_id=group_key, + source_name=type(self).__name__, + group_key=group_key, + data={"issues": issues}, + ) diff --git a/backend/howtheyvote/api/__init__.py b/backend/howtheyvote/api/__init__.py new file mode 100644 index 000000000..13bb2bd37 --- /dev/null +++ b/backend/howtheyvote/api/__init__.py @@ -0,0 +1,24 @@ +from flask import Blueprint, current_app +from flask.typing import ResponseReturnValue + +from .openapi_spec import spec +from .sessions_api import bp as sessions_bp +from .static_api import bp as static_bp +from .stats_api import bp as stats_bp +from .votes_api import bp as votes_bp + +bp = Blueprint("api", __name__) + +bp.register_blueprint(static_bp) +bp.register_blueprint(votes_bp) +bp.register_blueprint(sessions_bp) +bp.register_blueprint(stats_bp) + + +@bp.route("/") +def openapi() -> ResponseReturnValue: + for name, view in current_app.view_functions.items(): + if not name.startswith("api.static."): + spec.path(view=view) + + return spec.to_dict() diff --git a/backend/howtheyvote/api/openapi_helpers.py b/backend/howtheyvote/api/openapi_helpers.py new file mode 100644 index 000000000..8ed91edf9 --- /dev/null +++ b/backend/howtheyvote/api/openapi_helpers.py @@ -0,0 +1,209 @@ +import ast +import datetime +import inspect +from enum import Enum +from textwrap import dedent +from types import NoneType, UnionType +from typing import Annotated, Any, TypedDict, cast, get_args, get_origin, is_typeddict + + +def get_schema(schema_cls: type) -> dict[str, Any]: + """Generate a OpenAPI/JSON Schema for the given class.""" + + if not is_typeddict(schema_cls): + raise Exception("Only TypedDict is supported.") + + cls_docstring = schema_cls.__doc__ or "" + cls_docstring = inspect.cleandoc(cls_docstring) + annotations = schema_cls.__annotations__ + non_inherited_annotations = _get_annotated_attributes(schema_cls) + attr_docstrings = _get_attribute_docstrings(schema_cls) + + props: dict[str, dict[Any, Any]] = {} + required: list[str] = [] + + for name, prop_type in annotations.items(): + if name not in non_inherited_annotations: + continue + + definition = get_property_definition(prop_type) + + if "required" in definition: + if definition["required"]: + required.append(name) + del definition["required"] + + if attr_docstrings.get(name): + definition["description"] = attr_docstrings.get(name) + + props[name] = definition + + all_of = [] + + for base_cls in schema_cls.__orig_bases__: # type: ignore[attr-defined] + if base_cls == TypedDict: + continue + + all_of.append({"$ref": _ref(base_cls)}) + + schema: dict[str, Any] = { + "type": "object", + "properties": props, + } + + if cls_docstring: + schema["description"] = cls_docstring + + if all_of: + schema["allOf"] = all_of + + if required: + schema["required"] = required + + return schema + + +def get_property_definition(prop_type: Any) -> dict[str, Any]: + """Returns a JSON Schema property definition for the given type or class. This only handles + types and classes that we currently use in `howtheyvote.api.serializers`.""" + + if prop_type == str: + return { + "type": "string", + "required": True, + } + + if prop_type == int: + return { + "type": "integer", + "required": True, + } + + if prop_type == float: + return { + "type": "number", + "required": True, + } + + if prop_type == bool: + return { + "type": "boolean", + "required": True, + } + + if prop_type == datetime.date: + return { + "type": "string", + "format": "date", + "required": True, + } + + if prop_type == datetime.datetime: + return { + "type": "string", + "format": "date-time", + "required": True, + } + + if isinstance(prop_type, type) and issubclass(prop_type, Enum): + return { + "type": "string", + "enum": [member.value for member in prop_type], + "required": True, + } + + if get_origin(prop_type) == list: + type_args = get_args(prop_type) + item_type = type_args[0] + item_definition = get_property_definition(item_type) + + if "required" in item_definition: + del item_definition["required"] + + return { + "type": "array", + "required": True, + "items": item_definition, + } + + if isinstance(prop_type, UnionType): + type_args = get_args(prop_type) + + # This currently doesn't handle union types of more than two non-None types + # because we haven't had a need for it so far. + if len(type_args) == 2 and NoneType in type_args: + other_type = next(arg for arg in type_args if arg is not NoneType) + definition = get_property_definition(other_type) + definition["required"] = False + return definition + + if get_origin(prop_type) == Annotated: + # We use the annotation metadata as example values + wrapped_type, example = get_args(prop_type) + definition = get_property_definition(wrapped_type) + definition["example"] = example + return definition + + if isinstance(prop_type, type) and is_typeddict(prop_type): + return { + "$ref": _ref(prop_type), + "required": True, + } + + raise Exception(f"Could not get property definition for {prop_type}") + + +def _get_annotated_attributes(type_: type) -> set[str]: + """Python doesn't allow checking if an attribute of a `TypedDict` was inherited from + another `TypedDict` or not, so this class analyzes the AST to return a list of all + attributes that have been defined explicitly and not inherited.""" + class_def = _get_class_ast(type_) + attrs = set() + + for stmt in class_def.body: + if isinstance(stmt, ast.AnnAssign): + if isinstance(stmt.target, ast.Name): + attrs.add(str(stmt.target.id)) + + return attrs + + +def _get_attribute_docstrings(type_: type) -> dict[str, str]: + """Python doesn't expose docstrings for class attributes at runtime. This method + parses the source code for the given class into an AST, then tries to find docstrings + immediately following a class attribute annotation. It returns a mapping from attribute + names to docstrings.""" + class_def = _get_class_ast(type_) + + docstrings: dict[str, str] = {} + prev_annotation = None + + for stmt in class_def.body: + if isinstance(stmt, ast.AnnAssign): + if isinstance(stmt.target, ast.Name): + prev_annotation = str(stmt.target.id) + continue + + if isinstance(stmt, ast.Expr): + if isinstance(stmt.value, ast.Constant): + if prev_annotation: + docstrings[prev_annotation] = inspect.cleandoc(stmt.value.value) + + prev_annotation = None + + return docstrings + + +def _ref(type_: type) -> str: + normalized_name = normalize_schema_name(type_) + return f"#/components/schemas/{normalized_name}" + + +def normalize_schema_name(type_: type) -> str: + return type_.__name__.removesuffix("Dict") + + +def _get_class_ast(type_: type) -> ast.ClassDef: + source = dedent(inspect.getsource(type_)) + tree = ast.parse(source) + return cast(ast.ClassDef, tree.body[0]) diff --git a/backend/howtheyvote/api/openapi_spec.py b/backend/howtheyvote/api/openapi_spec.py new file mode 100644 index 000000000..746c928e2 --- /dev/null +++ b/backend/howtheyvote/api/openapi_spec.py @@ -0,0 +1,73 @@ +from apispec import APISpec +from apispec_webframeworks.flask import FlaskPlugin # type: ignore[import-untyped] + +from .. import config +from .openapi_helpers import get_schema, normalize_schema_name +from .serializers import ( + BaseVoteDict, + CountryDict, + EurovocConceptDict, + GroupDict, + MemberDict, + MemberVoteDict, + PlenarySessionDict, + PlenarySessionsQueryResponseDict, + ProcedureDict, + QueryResponseDict, + RelatedVoteDict, + SourceDict, + Statistics, + VoteDict, + VotePositionCountsDict, + VotesQueryResponseDict, + VoteStatsByCountryDict, + VoteStatsByGroupDict, + VoteStatsDict, +) + +DESCRIPTION = """ +The HowTheyVote API provides access to data about European Parliament roll-call votes and related data such as biographical information about MEPs and political groups. + +## Status +This is an experimental API and the available API endpoints as well as request and response formats may change. We do not guarantee the availability of the API. + +## License +The HowTheyVote.eu data is made available under an open license. If you use data published by HowTheyVote.eu please make sure you’ve read the [license terms](https://howtheyvote.eu/about#license) and provide proper attribution. +""" # noqa: E501 + +spec = APISpec( + title="HowTheyVote API", + version="0.1.0", + openapi_version="3.1.0", + servers=[{"url": config.FRONTEND_PUBLIC_URL}], + plugins=[FlaskPlugin()], + info={"description": DESCRIPTION}, +) + +schema_classes = [ + MemberDict, + GroupDict, + CountryDict, + EurovocConceptDict, + PlenarySessionDict, + PlenarySessionsQueryResponseDict, + VoteDict, + BaseVoteDict, + ProcedureDict, + VoteStatsDict, + VoteStatsByGroupDict, + VoteStatsByCountryDict, + VotePositionCountsDict, + MemberVoteDict, + SourceDict, + QueryResponseDict, + VotesQueryResponseDict, + RelatedVoteDict, + Statistics, +] + + +for schema_cls in schema_classes: + name = normalize_schema_name(schema_cls) + schema = get_schema(schema_cls) + spec.components.schema(name, schema) diff --git a/backend/howtheyvote/api/query.py b/backend/howtheyvote/api/query.py new file mode 100644 index 000000000..6b0593cbd --- /dev/null +++ b/backend/howtheyvote/api/query.py @@ -0,0 +1,256 @@ +import copy +import enum +from abc import ABC, abstractmethod +from typing import Any, Generic, Self, TypedDict, TypeVar + +from sqlalchemy import desc, func, select +from sqlalchemy.sql import ColumnElement + +from ..db import Session +from ..meili import get_index +from ..models import BaseWithId + +T = TypeVar("T", bound=BaseWithId) + + +class Order(enum.Enum): + ASC = "asc" + DESC = "desc" + + +class QueryResponse(TypedDict, Generic[T]): + total: int + results: list[T] + page: int + page_size: int + has_next: bool + has_prev: bool + + +class Query(ABC, Generic[T]): + MAX_PAGE_SIZE = 200 + DEFAULT_PAGE_SIZE = 20 + DEFAULT_SORT_FIELD = "id" + DEFAULT_SORT_ORDER = Order.ASC + + def __init__(self, model: type[T]): + self.model: type[T] = model + self._sort: tuple[str, Order | None] | None = None + self._page: int | None = None + self._page_size: int | None = None + self._filters: dict[str, str | bool | int] = {} + + @abstractmethod + def handle(self) -> QueryResponse[T]: + raise NotImplementedError + + def copy(self) -> Self: + return copy.copy(self) + + def page(self, page: int | None) -> Self: + query = self.copy() + query._page = page + return query + + def get_page(self) -> int: + if self._page is None: + return 1 + + return max(1, self._page) + + def page_size(self, page_size: int | None) -> Self: + query = self.copy() + query._page_size = page_size + return query + + def get_page_size(self) -> int: + if self._page_size is None: + return self.DEFAULT_PAGE_SIZE + + return min(self.MAX_PAGE_SIZE, self._page_size) + + def get_limit(self) -> int: + return self.get_page_size() + + def get_offset(self) -> int: + page = self.get_page() + + if not page: + return 0 + + return (page - 1) * self.get_limit() + + def sort(self, field: str | None = None, order: Order | None = None) -> Self: + query = self.copy() + + if not field: + query._sort = None + else: + query._sort = (field, order) + + return query + + def get_sort(self) -> tuple[str, Order] | None: + if not self._sort: + return None + + field, order = self._sort + return (field, order or self.DEFAULT_SORT_ORDER) + + def filter(self, field: str, value: str | bool | int | None) -> Self: + query = self.copy() + + if value is not None: + query._filters[field] = value + + return query + + def get_filters(self) -> dict[str, str | bool | int]: + return self._filters + + +class DatabaseQuery(Query[T]): + def __init__(self, model: type[T]): + super().__init__(model) + self._where: list[ColumnElement[Any]] = [] + + def handle(self) -> QueryResponse[T]: + page = self.get_page() + page_size = self.get_page_size() + limit = self.get_limit() + offset = self.get_offset() + + query = select(self.model) + + # Apply default sorting if none is specified explicitly + sort = self.get_sort() + if not sort: + sort_field = self.DEFAULT_SORT_FIELD + sort_order = self.DEFAULT_SORT_ORDER + else: + sort_field, sort_order = sort + + # This evaluates to something like `Vote.timestamp`. + order_expr = getattr(self.model, sort_field) + + if sort_order == Order.DESC: + order_expr = desc(order_expr) + + query = query.order_by(order_expr) + + for field, value in self.get_filters().items(): + column = getattr(self.model, field) + query = query.where(column == value) + + for expression in self._where: + query = query.where(expression) + + total_query = query.with_only_columns(func.count(self.model.id)) + results_query = query.limit(limit).offset(offset) + + results = list(Session.execute(results_query).scalars()) + total = Session.scalar(total_query) or 0 + + response: QueryResponse[T] = { + "total": total, + "page": page, + "page_size": page_size, + "has_prev": page > 1, + "has_next": (page * limit) < total, + "results": results, + } + + return response + + def where(self, expression: ColumnElement[Any]) -> Self: + query = self.copy() + query._where.append(expression) + return query + + +class MeilisearchSearchParams(TypedDict): + limit: int + offset: int + attributesToRetrieve: list[str] + filter: list[str] + sort: list[str] + + +class SearchQuery(Query[T]): + def __init__(self, model: type[T]): + super().__init__(model) + self._query: str | None = None + + def handle(self) -> QueryResponse[T]: + index = get_index(self.model) + page = self.get_page() + page_size = self.get_page_size() + limit = self.get_limit() + offset = self.get_offset() + + params: MeilisearchSearchParams = { + # In order to determine if there is a next page, we fetch one additional + # result from the search index. + "limit": limit + 1, + "offset": offset, + # Retrieve only IDs from search index as everything else is fetched + # from the database + "attributesToRetrieve": ["id"], + "sort": [], + "filter": [], + } + + sort = self.get_sort() + q = self.get_query() + + if sort or not q: + # Apply default sorting only if none is specified explicitly and + # no search query is given + if not sort: + sort_field = self.DEFAULT_SORT_FIELD + sort_order = self.DEFAULT_SORT_ORDER + else: + sort_field, sort_order = sort + + params["sort"] = [f"{sort_field}:{sort_order.value}"] + + for field, value in self.get_filters().items(): + if isinstance(value, bool): + # Meilisearch represents booleans as integers + value = int(value) + + params["filter"].append(f"{field} = {value}") + + res = index.search(q, params) + + # Based on the IDs fetched from the search index, fetch full records + # from the database + ids = [hit["id"] for hit in res["hits"]] + + # Remove the extra item fetched only to test if there is a next page + ids = ids[:limit] + + query = select(self.model).where(self.model.id.in_(ids)) + results = list(Session.execute(query).scalars()) + + # Sort in the same order as returned in search response + results = sorted(results, key=lambda r: ids.index(r.id)) + + response: QueryResponse[T] = { + "total": res["estimatedTotalHits"], + "page": page, + "page_size": page_size, + "has_prev": page > 1, + "has_next": len(res["hits"]) > limit, + "results": results, + } + + return response + + def query(self, query: str | None = None) -> Self: + copy = self.copy() + copy._query = query + return copy + + def get_query(self) -> str: + return self._query or "" diff --git a/backend/howtheyvote/api/serializers.py b/backend/howtheyvote/api/serializers.py new file mode 100644 index 000000000..c18e79bee --- /dev/null +++ b/backend/howtheyvote/api/serializers.py @@ -0,0 +1,346 @@ +import datetime +from typing import Annotated, TypedDict + +from ..models import ( + Country, + EurovocConcept, + Group, + Member, + PlenarySession, + PlenarySessionLocation, + PlenarySessionStatus, + Vote, + VotePosition, +) + + +class ProcedureDict(TypedDict): + """European Union legislative procedure""" + + title: Annotated[str | None, "Nature restoration"] + """Title of the legislative proceudre as listed in the Legislative Observatory""" + + reference: Annotated[str, "2022/0195(COD)"] + """Procedure reference as listed in the Legislative Observatory""" + + +class GroupDict(TypedDict): + """Political group in the European Parliament""" + + code: Annotated[str, "EPP"] + """Unique identifier for the political group""" + + label: Annotated[str, "European People’s Party"] + """Name of the political group""" + + short_label: Annotated[str | None, "EPP"] + """Short label or acronym of the political group""" + + +def serialize_group(group: Group) -> GroupDict: + return { + "code": group.code, + "label": group.label, + "short_label": group.short_label, + } + + +class CountryDict(TypedDict): + """Country or territory published in the list of countries and territories by the + Publications Office of the European Union.""" + + code: Annotated[str, "FRA"] + """Country code. If the country or territory is included in the ISO-3166-1 standard, + this is the 3-letter ISO-3166-1 code. Otherwise this is a custom code [as assigned by + the Publications Office of the European Union](https://op.europa.eu/en/web/eu-vocabularies/countries-and-territories).""" + + iso_alpha_2: Annotated[str | None, "FR"] + """If the country or territory is included in the ISO-3166-1 standard, this is the two- + letter ISO-3166-1 code. Empty if the country is not included in the ISO-3166-1 standard.""" + + label: Annotated[str, "France"] + """Name of the country or territory""" + + +def serialize_country(country: Country) -> CountryDict: + return { + "code": country.code, + "iso_alpha_2": country.iso_alpha_2, + "label": country.label, + } + + +class EurovocConceptDict(TypedDict): + """A concept from the [EuroVoc thesaurus](https://eur-lex.europa.eu/browse/eurovoc.html)""" + + id: Annotated[str, 3030] + """ID of the concept in the EuroVoc thesaurus""" + + label: Annotated[str, "artificial intelligence"] + """Primary label of the concept in the EuroVoc thesaurus""" + + +def serialize_eurovoc_concept(eurovoc_concept: EurovocConcept) -> EurovocConceptDict: + return { + "id": eurovoc_concept.id, + "label": eurovoc_concept.label, + } + + +class MemberDict(TypedDict): + """Member of the European Parliament (MEP)""" + + id: Annotated[int, 118859] + """MEP ID. This is the same ID that the European Parliament uses on its website at + https://europarl.europa.eu/meps.""" + + first_name: Annotated[str, "Roberta"] + """First name""" + + last_name: Annotated[str, "METSOLA"] + """Last name""" + + date_of_birth: Annotated[datetime.date | None, "1979-01-18"] + """Date of birth""" + + terms: Annotated[list[int], [7, 8, 9]] + """List of parliamentary terms""" + + country: CountryDict + + group: GroupDict | None + """The MEP’s political group at the time of the vote""" + + photo_url: str + """URL to the MEP’s official portrait photo""" + + thumb_url: str + """URL to a smaller, optimized variant of the official portrait photo""" + + email: str | None + """Official email address""" + + facebook: str | None + """URL to the MEP’s Facebook profile""" + + twitter: str | None + """URL ot the MEP’s Twitter account""" + + +def serialize_member( + member: Member, date: datetime.date | datetime.datetime | None = None +) -> MemberDict: + if not date: + date = datetime.date.today() + + group = member.group_at(date) + + return { + "id": member.id, + "first_name": member.first_name, + "last_name": member.last_name, + "date_of_birth": member.date_of_birth, + "terms": member.terms, + "country": serialize_country(member.country), + "group": serialize_group(group) if group else None, + "photo_url": member.photo_url(), + "thumb_url": member.photo_url(104), + "email": member.email, + "facebook": member.facebook, + "twitter": member.twitter, + } + + +class MemberVoteDict(TypedDict): + member: MemberDict + position: VotePosition + + +class VotePositionCountsDict(TypedDict): + FOR: int + AGAINST: int + ABSTENTION: int + DID_NOT_VOTE: int + + +class VoteStatsByGroupDict(TypedDict): + group: GroupDict + stats: VotePositionCountsDict + + +class VoteStatsByCountryDict(TypedDict): + country: CountryDict + stats: VotePositionCountsDict + + +class VoteStatsDict(TypedDict): + total: VotePositionCountsDict + """Total number of MEPs by vote position""" + + by_country: list[VoteStatsByCountryDict] + """Total number of MEPs by country and vote position""" + + by_group: list[VoteStatsByGroupDict] + """Total number of MEPs by political group and vote position""" + + +class SourceDict(TypedDict): + name: str + """Source name""" + + url: str + """Source URL""" + + accessed_at: datetime.datetime + """Date and time when the source was last accessed""" + + +class RelatedVoteDict(TypedDict): + id: Annotated[int, 157420] + """ID as published in the official roll-call vote results""" + + timestamp: Annotated[datetime.datetime, "2023-07-12T12:44:14"] + """Date and time of the vote""" + + description: Annotated[str | None, "Am 123"] + """Description of the vote as published in the roll-call vote results""" + + +class BaseVoteDict(TypedDict): + id: Annotated[int, 157420] + """ID as published in the official roll-call vote results""" + + timestamp: Annotated[datetime.datetime, "2023-07-12T12:44:14"] + """Date and time of the vote""" + + display_title: Annotated[str | None, "Nature restoration"] + """Title that can be used to refer to the vote. In most cases, this is the title + published in the roll-call vote results. If the title in the roll-call vote results + is empty, this falls back to the procedure title.""" + + reference: Annotated[str | None, "A9-0220/2023"] + """Reference to a plenary document such as a report or a resolution""" + + description: Annotated[str | None, "Commission proposal"] + """Description of the vote as published in the roll-call vote results""" + + is_featured: bool + """Whether this vote is featured. Currently, a vote is featured when we have found an + official press release about the vote published by the European Parliament Newsroom. + However, this is subject to change.""" + + geo_areas: list[CountryDict] + """Countries or territories related to this vote""" + + eurovoc_concepts: list[EurovocConceptDict] + """Concepts from the [EuroVoc](https://eur-lex.europa.eu/browse/eurovoc.html) thesaurus + that are related to this vote""" + + +def serialize_base_vote(vote: Vote) -> BaseVoteDict: + geo_areas = [serialize_country(geo_area) for geo_area in vote.geo_areas] + eurovoc_concepts = [serialize_eurovoc_concept(ec) for ec in vote.eurovoc_concepts] + + return { + "id": vote.id, + "timestamp": vote.timestamp, + "display_title": vote.display_title, + "description": vote.description, + "reference": vote.reference, + "is_featured": vote.is_featured, + "geo_areas": geo_areas, + "eurovoc_concepts": eurovoc_concepts, + } + + +class VoteDict(BaseVoteDict): + procedure: ProcedureDict | None + """Information about the legislative procedure to which this vote belongs""" + + facts: str | None + """Facts about the vote. Usually an HTML formatted list of 3-4 bullet points extracted + from press releases published by the European Parliament.""" + + sharepic_url: str | None + """URL to a share picture for this vote.""" + + stats: VoteStatsDict + """Statistics about this vote""" + + member_votes: list[MemberVoteDict] + """List of MEPs and their vote positions""" + + sources: list[SourceDict] + """List of official sources for this data record""" + + related: list[RelatedVoteDict] + + +class PlenarySessionDict(TypedDict): + id: Annotated[str, "2019-07-02"] + + start_date: Annotated[datetime.date, "2019-07-02"] + """Start date""" + + end_date: Annotated[datetime.date, "2019-07-04"] + """End date""" + + status: Annotated[PlenarySessionStatus, "PAST"] + """Whether this is a past, upcoming or current session""" + + location: Annotated[PlenarySessionLocation | None, "SXB"] + """Location of the plenary session""" + + +def serialize_plenary_session(plenary_session: PlenarySession) -> PlenarySessionDict: + return { + "id": plenary_session.id, + "start_date": plenary_session.start_date, + "end_date": plenary_session.end_date, + "status": plenary_session.status, + "location": plenary_session.location, + } + + +class QueryResponseDict(TypedDict): + total: int + """Total number of results. This is an approximate number and the exact number of search + results that are returned when paging through all results may be different.""" + + page: int + """Search results page""" + + page_size: int + """Number of results per page""" + + has_prev: bool + """Whether there is a previous page of results""" + + has_next: bool + """Whether there is a next page of results""" + + +# Using standard inheritance instead of generics as generics are a little +# difficult to represent in OpenAPI specs/JSONSchema +class VotesQueryResponseDict(QueryResponseDict): + results: list[BaseVoteDict] + """Votes""" + + +class PlenarySessionsQueryResponseDict(QueryResponseDict): + results: list[PlenarySessionDict] + """Plenary sessions""" + + +class Statistics(TypedDict): + votes_total: Annotated[int, 12345] + """Total number of votes""" + + members_total: Annotated[int, 987] + """Total number of members""" + + years_total: Annotated[int, 5] + """Total number of years since start of data collection""" + + last_update_date: datetime.datetime + """Last data pipeline run time""" diff --git a/backend/howtheyvote/api/sessions_api.py b/backend/howtheyvote/api/sessions_api.py new file mode 100644 index 000000000..0e9129cbf --- /dev/null +++ b/backend/howtheyvote/api/sessions_api.py @@ -0,0 +1,97 @@ +import datetime + +from flask import Blueprint, jsonify, request +from flask.typing import ResponseValue + +from ..models import PlenarySession +from .query import DatabaseQuery, Order +from .serializers import ( + PlenarySessionDict, + PlenarySessionsQueryResponseDict, + serialize_plenary_session, +) + +bp = Blueprint("sessions_api", __name__) + + +@bp.route("/sessions") +def index() -> ResponseValue: + """ + --- + get: + operationId: getSessions + summary: List sessions + tags: + - Plenary sessions + parameters: + - in: query + name: status + schema: + type: string + enum: + - current + - past + - upcoming + - in: query + name: page + description: Results page + schema: + type: integer + default: 1 + - in: query + name: page_size + description: Number of results per page + schema: + type: integer + default: 20 + - in: query + name: sort_order + description: Sort order + schema: + type: string + default: asc + enum: + - asc + - desc + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/PlenarySessionsQueryResponse' + """ + + today = datetime.date.today() + status = request.args.get("status", None) + + query = DatabaseQuery(PlenarySession).sort("start_date") + query = query.page(request.args.get("page", type=int)) + query = query.page_size(request.args.get("page_size", type=int)) + + if request.args.get("sort_order") == "desc": + query = query.sort("start_date", Order.DESC) + else: + query = query.sort("start_date", Order.ASC) + + if status == "current": + query = query.where(PlenarySession.start_date <= today) + query = query.where(PlenarySession.end_date >= today) + + if status == "past": + query = query.where(PlenarySession.end_date < today) + + if status == "upcoming": + query = query.where(PlenarySession.start_date > today) + + response = query.handle() + results: list[PlenarySessionDict] = [ + serialize_plenary_session(ps) for ps in response["results"] + ] + + data: PlenarySessionsQueryResponseDict = { + **response, + "results": results, + } + + return jsonify(data) diff --git a/backend/howtheyvote/api/static_api.py b/backend/howtheyvote/api/static_api.py new file mode 100644 index 000000000..c9ea075ba --- /dev/null +++ b/backend/howtheyvote/api/static_api.py @@ -0,0 +1,26 @@ +from flask import Blueprint, abort, send_file +from flask.typing import ResponseValue + +from ..files import member_photo_path, vote_sharepic_path + +CACHE_MAX_AGE = 180 * 24 * 60 * 60 +bp = Blueprint("static_api", __name__) + + +@bp.route("/static/members/-.jpg") +@bp.route("/static/members/.jpg") +def member_photo(member_id: int, size: int | None = None) -> ResponseValue: + path = member_photo_path(member_id, size) + try: + return send_file(path, max_age=CACHE_MAX_AGE) + except FileNotFoundError: + return abort(404) + + +@bp.route("/static/votes/sharepic-.png") +def vote_sharepic(vote_id: int) -> ResponseValue: + path = vote_sharepic_path(vote_id) + try: + return send_file(path, max_age=CACHE_MAX_AGE) + except FileNotFoundError: + return abort(404) diff --git a/backend/howtheyvote/api/stats_api.py b/backend/howtheyvote/api/stats_api.py new file mode 100644 index 000000000..67903483f --- /dev/null +++ b/backend/howtheyvote/api/stats_api.py @@ -0,0 +1,56 @@ +import datetime +from typing import cast + +from flask import Blueprint, jsonify +from flask.typing import ResponseValue +from sqlalchemy import func, select + +from ..db import Session +from ..models import Member, PipelineRun, PlenarySession, Vote +from .serializers import Statistics + +bp = Blueprint("stats_api", __name__) + + +@bp.route("/stats") +def index() -> ResponseValue: + """ + --- + get: + operationId: getStats + summary: List general stats + tags: + - Miscellaneous + responses: + '200': + description: Ok + content: + application/json: + schema: + type: object + allOf: + - $ref: '#/components/schemas/Statistics' + """ + + query = select(func.count()).select_from(Vote) + votes_total = cast(int, Session.execute(query).scalar()) + + query = select(func.count()).select_from(Member) + members_total = cast(int, Session.execute(query).scalar()) + + start_year = func.min(func.strftime("%Y", PlenarySession.start_date)) + end_year = func.max(func.strftime("%Y", PlenarySession.end_date)) + query = select(end_year - start_year) + years_total = cast(int, Session.execute(query).scalar()) + + query = select(func.max(PipelineRun.finished_at)) + last_update_date = cast(datetime.datetime, Session.execute(query).scalar()) + + stats: Statistics = { + "votes_total": votes_total, + "members_total": members_total, + "years_total": years_total, + "last_update_date": last_update_date, + } + + return jsonify(stats) diff --git a/backend/howtheyvote/api/votes_api.py b/backend/howtheyvote/api/votes_api.py new file mode 100644 index 000000000..acf5fac89 --- /dev/null +++ b/backend/howtheyvote/api/votes_api.py @@ -0,0 +1,490 @@ +import csv +import re +from collections import defaultdict +from collections.abc import Callable, Iterable +from io import StringIO +from typing import TypeVar + +from flask import Blueprint, Response, abort, jsonify, request +from sqlalchemy import select +from structlog import get_logger + +from ..db import Session +from ..helpers import PROCEDURE_REFERENCE_REGEX, REFERENCE_REGEX, flatten_dict, subset_dict +from ..models import Fragment, Member, PressRelease, Vote, VotePosition +from ..query import fragments_for_records, press_release_references_vote +from .query import DatabaseQuery, Order, SearchQuery +from .serializers import ( + BaseVoteDict, + MemberVoteDict, + ProcedureDict, + RelatedVoteDict, + SourceDict, + VoteDict, + VotePositionCountsDict, + VotesQueryResponseDict, + VoteStatsByCountryDict, + VoteStatsByGroupDict, + VoteStatsDict, + serialize_base_vote, + serialize_country, + serialize_eurovoc_concept, + serialize_group, + serialize_member, +) + +log = get_logger(__name__) + +bp = Blueprint("votes_api", __name__) + +MembersById = dict[int, Member] + +SOURCE_INFO = { + "RCVListScraper": { + "name": "Results of roll-call votes (XML)", + }, + "RCVListEnglishScraper": { + "name": "Results of roll-call votes (XML)", + }, + "ProcedureScraper": { + "name": "Procedure file (Legislative Observatory)", + }, + "PressReleaseScraper": { + "name": "Press release", + }, + "EurlexProcedureScraper": { + "name": "Procedure file (EUR-Lex)", + }, + "DocumentScraper": { + "name": "Report or resolution", + }, + "EurlexDocumentScraper": { + "name": "Report or resolution (EUR-Lex)", + }, +} + + +@bp.route("/votes") +def index() -> Response: + """List votes + --- + get: + operationId: index + tags: + - Votes + summary: List votes + description: List votes in chronological order. + parameters: + - + in: query + name: page + description: Results page + schema: + type: integer + default: 1 + - + in: query + name: page_size + description: Number of results per page + schema: + type: integer + default: 20 + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/VotesQueryResponse' + """ + query = DatabaseQuery(Vote) + query = query.page(request.args.get("page", type=int)) + query = query.page_size(request.args.get("page_size", type=int)) + query = query.sort("timestamp", Order.DESC) + query = query.filter("is_main", True) + + response = query.handle() + results: list[BaseVoteDict] = [ + serialize_base_vote(result) for result in response["results"] + ] + + data = { + **response, + "results": results, + } + + return jsonify(data) + + +@bp.route("/votes/search") +def search() -> Response: + """ + Search votes + --- + get: + operationId: search + tags: + - Votes + summary: Search votes + description: | + Search votes by title and reference. This endpoint returns a maximum of 1,000 + results, even if more than 1,000 votes match the search query. + parameters: + - + in: query + name: q + description: Search query + schema: + type: string + - + in: query + name: page + description: Results page + schema: + type: integer + default: 1 + - + in: query + name: page_size + description: Number of results per page + schema: + type: integer + default: 20 + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/VotesQueryResponse' + + """ + q = request.args.get("q", "") + + query = SearchQuery(Vote) + query = query.page(request.args.get("page", type=int)) + query = query.page_size(request.args.get("page_size", type=int)) + query = query.query(_transform_query(q)) + + if not q: + query = query.sort("timestamp", Order.DESC) + + response = query.handle() + results: list[BaseVoteDict] = [ + serialize_base_vote(result) for result in response["results"] + ] + + data: VotesQueryResponseDict = { + **response, + "results": results, + } + + return jsonify(data) + + +@bp.route("/votes/") +def show(vote_id: int) -> Response: + """ + --- + get: + operationId: getVote + summary: Get vote + tags: + - Votes + description: | + Get information about a vote. This includes metadata (e.g. vote title and + timestamp), aggregated statistics, and the votes of individual MEPs. + parameters: + - + in: path + name: vote_id + required: true + schema: + type: string + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/Vote' + """ + vote = Session.get(Vote, vote_id) + + if not vote: + return abort(404) + + base_vote: BaseVoteDict = { + "id": vote.id, + "display_title": vote.display_title, + "timestamp": vote.timestamp, + "reference": vote.reference, + "description": vote.description, + "is_featured": vote.is_featured, + "geo_areas": [serialize_country(country) for country in vote.geo_areas], + "eurovoc_concepts": [ + serialize_eurovoc_concept(concept) for concept in vote.eurovoc_concepts + ], + } + + procedure: ProcedureDict | None = None + + if vote.procedure_reference: + procedure = { + "title": vote.procedure_title, + "reference": vote.procedure_reference, + } + + members = _load_members(vote) + members_by_id: MembersById = {m.id: m for m in members} + + stats: VoteStatsDict = { + "total": _format_total_stats(vote, members_by_id), + "by_group": _format_group_stats(vote, members_by_id), + "by_country": _format_country_stats(vote, members_by_id), + } + + member_votes = _format_member_votes(vote, members_by_id) + + related_votes = _format_related(_load_related(vote)) + + press_release = _load_press_release(vote) + facts = press_release.facts if press_release else None + + fragments = _load_fragments(vote, press_release) + sources = _format_sources(fragments) + + data: VoteDict = { + **base_vote, + "procedure": procedure, + "facts": facts, + "sharepic_url": vote.sharepic_url, + "stats": stats, + "member_votes": member_votes, + "sources": sources, + "related": related_votes, + } + + return jsonify(data) + + +@bp.route("/votes/.csv") +def show_csv(vote_id: int) -> Response: + """ + --- + get: + operationId: getVoteCSV + summary: Get vote as CSV + tags: + - Votes + description: | + Get votes of individual MEPs as CSV. + parameters: + - + in: path + name: vote_id + required: true + schema: + type: string + """ + vote = Session.get(Vote, vote_id) + + if not vote: + return abort(404) + + members = _load_members(vote) + members_by_id: MembersById = {m.id: m for m in members} + member_votes = _format_member_votes(vote, members_by_id) + + fieldnames = [ + "position", + "member.id", + "member.first_name", + "member.last_name", + "member.country.code", + "member.country.label", + "member.country.iso_alpha_2", + "member.group.code", + "member.group.label", + "member.group.short_label", + ] + + io = StringIO() + writer = csv.DictWriter(io, fieldnames=fieldnames) + writer.writeheader() + writer.writerows(subset_dict(flatten_dict(mv), fieldnames) for mv in member_votes) + + return Response( + io.getvalue(), + headers={ + "Content-Type": "text/csv", + }, + ) + + +def _transform_query(query: str) -> str: + # Enclose document references in quotes to perform an exact search + query = re.sub(r'(?"', query) + + # Enclose procedure references in quotes to perform an exact search + query = re.sub(r'(?"', query) + + return query + + +def _load_fragments(vote: Vote, press_release: PressRelease | None) -> Iterable[Fragment]: + stmt = select(Fragment).where(fragments_for_records([vote, press_release])) + return Session.execute(stmt).scalars() + + +def _load_press_release(vote: Vote) -> PressRelease | None: + stmt = select(PressRelease).where(press_release_references_vote(vote)) + return Session.execute(stmt).scalar() + + +def _load_members(vote: Vote) -> Iterable[Member]: + member_ids = [mv.web_id for mv in vote.member_votes] + stmt = select(Member).where(Member.id.in_(member_ids)) + return Session.execute(stmt).scalars() + + +def _load_related(vote: Vote) -> Iterable[Vote]: + if not vote.group_key: + return [] + + stmt = select(Vote).where(Vote.group_key == vote.group_key).order_by(Vote.order) + + return Session.execute(stmt).scalars() + + +def _format_related(votes: Iterable[Vote]) -> list[RelatedVoteDict]: + formatted: list[RelatedVoteDict] = [] + + for vote in votes: + formatted.append( + { + "id": vote.id, + "timestamp": vote.timestamp, + "description": vote.description, + } + ) + + return formatted + + +def _format_sources(fragments: Iterable[Fragment]) -> list[SourceDict]: + sources: list[SourceDict] = [] + + for fragment in fragments: + if fragment.source_name not in SOURCE_INFO: + continue + + if not fragment.source_url: + continue + + sources.append( + { + "url": fragment.source_url, + "accessed_at": fragment.timestamp, + "name": SOURCE_INFO[fragment.source_name]["name"], + } + ) + + return sorted(sources, key=lambda s: s["accessed_at"]) + + +def _format_member_votes(vote: Vote, members_by_id: MembersById) -> list[MemberVoteDict]: + member_votes: list[MemberVoteDict] = [] + + for member_vote in vote.member_votes: + web_id = member_vote.web_id + position = member_vote.position + member = members_by_id.get(web_id) + + if not member: + continue + + member_votes.append( + { + "member": serialize_member(member, vote.timestamp.date()), + "position": position, + } + ) + return sorted(member_votes, key=lambda x: x["member"]["last_name"]) + + +def _format_total_stats(vote: Vote, members_by_id: MembersById) -> VotePositionCountsDict: + return _calc_vote_stats(vote, members_by_id)[None] + + +def _format_group_stats(vote: Vote, members_by_id: MembersById) -> list[VoteStatsByGroupDict]: + group_stats = _calc_vote_stats(vote, members_by_id, lambda m: m.group_at(vote.timestamp)) + + return [ + { + "group": serialize_group(group), + "stats": stats, + } + for group, stats in group_stats.items() + if group is not None + ] + + +def _format_country_stats( + vote: Vote, members_by_id: MembersById +) -> list[VoteStatsByCountryDict]: + country_stats = _calc_vote_stats(vote, members_by_id, lambda m: m.country) + + return [ + { + "country": serialize_country(country), + "stats": stats, + } + for country, stats in country_stats.items() + if country is not None + ] + + +GroupBy = TypeVar("GroupBy") + + +def _calc_vote_stats( + vote: Vote, + members_by_id: MembersById, + group_by: Callable[[Member], GroupBy] | None = None, +) -> dict[GroupBy | None, VotePositionCountsDict]: + def default_factory() -> VotePositionCountsDict: + return { + VotePosition.FOR.value: 0, + VotePosition.AGAINST.value: 0, + VotePosition.ABSTENTION.value: 0, + VotePosition.DID_NOT_VOTE.value: 0, + } + + groups: dict[GroupBy | None, VotePositionCountsDict] = defaultdict(default_factory) + + def total_count(stats: VotePositionCountsDict) -> int: + return sum(v for v in stats.values() if isinstance(v, int)) + + for member_vote in vote.member_votes: + member = members_by_id.get(member_vote.web_id) + + if not member: + continue + + if group_by: + group = group_by(member) + else: + group = None + + groups[group][member_vote.position.value] += 1 + + # Sort stats by group size + sorted_items = sorted( + groups.items(), + key=lambda item: total_count(item[1]), + reverse=True, + ) + groups = dict(sorted_items) + + return groups diff --git a/backend/howtheyvote/cli/__init__.py b/backend/howtheyvote/cli/__init__.py new file mode 100644 index 000000000..c48653682 --- /dev/null +++ b/backend/howtheyvote/cli/__init__.py @@ -0,0 +1,30 @@ +from pathlib import Path + +import click + +from ..files import file_path +from ..sharepics import generate_vote_sharepic +from ..worker import worker as worker_ +from .aggregate import aggregate +from .dev import dev +from .pipeline import pipeline +from .system import system +from .temp import temp + + +@click.group() +def cli() -> None: + pass + + +@cli.command() +def worker() -> None: + """Start a worker process to execute scheduled pipeline runs.""" + worker_.run() + + +cli.add_command(system) +cli.add_command(aggregate) +cli.add_command(pipeline) +cli.add_command(dev) +cli.add_command(temp) diff --git a/backend/howtheyvote/cli/aggregate.py b/backend/howtheyvote/cli/aggregate.py new file mode 100644 index 000000000..d62fc7bc0 --- /dev/null +++ b/backend/howtheyvote/cli/aggregate.py @@ -0,0 +1,63 @@ +from collections.abc import Collection +from typing import TypeVar + +import click + +from ..models import BaseWithId, Member, PlenarySession, PressRelease, Vote +from ..store import ( + Aggregator, + MapFunc, + index_records, + map_member, + map_plenary_session, + map_press_release, + map_vote, +) + + +@click.group() +def aggregate() -> None: + """Aggregate fragments into the database and the search index.""" + pass + + +RecordType = TypeVar("RecordType", bound=BaseWithId) + + +def _aggregate( + model_cls: type[RecordType], + map_func: MapFunc[RecordType], + group_keys: Collection[str] | None, + chunk_size: int | None = None, +) -> None: + aggregator = Aggregator(model_cls) + + if group_keys is not None and len(group_keys) == 0: + group_keys = None + + mapped_records = aggregator.mapped_records(map_func, group_keys) + index_records(model_cls, mapped_records, chunk_size) + + +@aggregate.command() +@click.option("--id", "id_", multiple=True) +def members(id_: Collection[str] | None = None) -> None: + _aggregate(Member, map_member, group_keys=id_) + + +@aggregate.command() +@click.option("--id", "id_", multiple=True) +def sessions(id_: Collection[str] | None = None) -> None: + _aggregate(PlenarySession, map_plenary_session, group_keys=id_) + + +@aggregate.command() +@click.option("--id", "id_", multiple=True) +def votes(id_: Collection[str] | None = None) -> None: + _aggregate(Vote, map_vote, group_keys=id_, chunk_size=1000) + + +@aggregate.command() +@click.option("--id", "id_", multiple=True) +def press_releases(id_: Collection[str] | None = None) -> None: + _aggregate(PressRelease, map_press_release, group_keys=id_) diff --git a/backend/howtheyvote/cli/dev.py b/backend/howtheyvote/cli/dev.py new file mode 100644 index 000000000..29ace27eb --- /dev/null +++ b/backend/howtheyvote/cli/dev.py @@ -0,0 +1,372 @@ +import datetime +from typing import Any + +import click +import requests +from structlog import get_logger + +from ..data import DATA_DIR, DataclassContainer +from ..models import Country, EurovocConcept, Group + +log = get_logger(__name__) + +PUBLICATIONS_ENDPOINT = "https://publications.europa.eu/webapi/rdf/sparql" +DATA_ENDPOINT = "https://data.europa.eu/sparql" + +GROUP_OVERRIDES = { + "GREEN_EFA": { + "short_label": "Greens/EFA", + }, + "GUE_NGL": { + "official_label": "The Left group in the European Parliament – GUE/NGL", + "label": "The Left in the European Parliament – GUE/NGL", + "short_label": "GUE/NGL", + }, + "NI": { + "short_label": "Non-attached", + }, + "RENEW": { + "short_label": "Renew", + }, + "SD": { + "label": "Progressive Alliance of Socialists and Democrats", + }, +} + + +@click.group() +def dev() -> None: + """A namespace for commands that are useful during development.""" + pass + + +@dev.command() +def load_eurovoc() -> None: + """Load and save a list of terms in the EuroVoc vocabulary.""" + query = """ + PREFIX skos: + PREFIX dc: + PREFIX euvoc: + + SELECT + ?label + ?id + ?geo_area_code + (GROUP_CONCAT(DISTINCT ?related_id, ",") as ?related_ids) + (GROUP_CONCAT(DISTINCT ?broader_id, ",") as ?broader_ids) + (GROUP_CONCAT(DISTINCT ?alt_label, ",") as ?alt_labels) + WHERE { + GRAPH { + ?term dc:identifier ?id. + ?term euvoc:status . + + ?term skos:prefLabel ?label_. + FILTER(lang(?label_) = "en") + BIND(STR(?label_) as ?label) + + OPTIONAL { + ?term skos:related ?related. + ?related euvoc:status . + ?related dc:identifier ?related_id. + } + + OPTIONAL { + ?term skos:broader ?broader. + ?broader euvoc:status . + ?broader dc:identifier ?broader_id. + } + + OPTIONAL { + ?term skos:altLabel ?alt_label_. + FILTER(lang(?alt_label_) = "en") + BIND(STR(?alt_label_) as ?alt_label) + } + } + + OPTIONAL { + GRAPH { + ?term skos:exactMatch ?geo_area. + } + + GRAPH { + ?geo_area dc:identifier ?geo_area_code. + } + } + } + GROUP BY ?id ?label ?geo_area_code + ORDER BY ?id + """ + log.info("Retrieving EuroVoc terms") + results = exec_sparql_query(DATA_ENDPOINT, query) + container = DataclassContainer( + dataclass=EurovocConcept, + file_path=DATA_DIR.joinpath("eurovoc.json"), + key_attr="id", + ) + + for result in results: + if result["alt_labels"]["value"]: + alt_labels = set(result["alt_labels"]["value"].split(",")) + else: + alt_labels = set() + + if result["related_ids"]["value"]: + related_ids = set(result["related_ids"]["value"].split(",")) + else: + related_ids = set() + + if result["broader_ids"]["value"]: + broader_ids = set(result["broader_ids"]["value"].split(",")) + else: + broader_ids = set() + + if "geo_area_code" in result: + geo_area_code = result["geo_area_code"]["value"] + else: + geo_area_code = None + + container.add( + EurovocConcept( + id=result["id"]["value"], + label=result["label"]["value"], + alt_labels=alt_labels, + related_ids=related_ids, + broader_ids=broader_ids, + geo_area_code=geo_area_code, + ) + ) + + container.save() + + +@dev.command() +def load_countries() -> None: + """Load and save list of countries and territories from official EU Vocabulary.""" + query = """ + PREFIX dc: + PREFIX dct: + PREFIX skos: + PREFIX skosxl: + PREFIX euvoc: + + SELECT DISTINCT ?code ?iso_alpha_2 ?label ?alt_label + FROM + WHERE { + # Get all countries countries and territories + # Top level scheme: Countries + # 0003: Territories + ?country skos:inScheme ?scheme. + FILTER( + ?scheme = || + ?scheme = + ) + + # Only include current countries and territories (exclude deprecated or retired) + ?country euvoc:status . + + # Preferred label + ?country skos:prefLabel ?label_. + FILTER(lang(?label_) = "en") + BIND(STR(?label_) as ?label) + + # Alternative label + OPTIONAL { + ?country skosxl:altLabel ?alt_label_node. + ?alt_label_node skosxl:literalForm ?alt_label_. + ?alt_label_node euvoc:status ?alt_label_status. + ?alt_label_node dct:type ?alt_label_type. + FILTER( + lang(?alt_label_) = "en" && + ?alt_label_status = && + ?alt_label_type = + ) + BIND(STR(?alt_label_) as ?alt_label) + } + + # The ISO-3166-1 2-letter country code. As the EU vocabulary is a superset of the countries + # listed in the ISO standard, some countries or territories do not have an ISO code. + OPTIONAL { + ?country skos:notation ?iso_alpha_2_. + FILTER(datatype(?iso_alpha_2_) = ) + BIND(STR(?iso_alpha_2_) AS ?iso_alpha_2) + } + + # The Named Authority Code assigned by the EU. In case of countries listed in ISO-3166-1, this + # this is the 3-letter country code. + ?country dc:identifier ?code. + + # Protocol order for EU member states + OPTIONAL { ?country euvoc:order ?order. } + } + ORDER BY (!BOUND(?order)) ?order ?code + """ # noqa: E501 + + log.info("Retrieving countries") + results = exec_sparql_query(PUBLICATIONS_ENDPOINT, query) + container = DataclassContainer( + dataclass=Country, + file_path=DATA_DIR.joinpath("countries.json"), + key_attr="code", + ) + + for result in results: + container.add( + Country( + code=result["code"]["value"], + label=result["label"]["value"], + iso_alpha_2=result["iso_alpha_2"]["value"] + if result.get("iso_alpha_2") + else None, + alt_label=result["alt_label"]["value"] if result.get("alt_label") else None, + ) + ) + + container.save() + + +@dev.command() +def load_groups() -> None: + query = """ + PREFIX skos: + PREFIX skosxl: + PREFIX org: + PREFIX dc: + PREFIX dct: + PREFIX euvoc: + + SELECT ?code ?label ?abbr ?short ?start_date ?end_date + FROM + WHERE { + ?group org:classification . + + ?group dc:identifier ?code. + + ?group skos:prefLabel ?label. + FILTER(lang(?label) = "en") + + # The end date is set if the group isn't active anymore. + ?group euvoc:startDate ?start_date. + OPTIONAL { ?group euvoc:endDate ?end_date } + + # Get the current acronym + OPTIONAL { + ?group skosxl:altLabel ?abbr_node. + ?abbr_node skosxl:literalForm ?abbr. + ?abbr_node dct:type ?abbr_type. + ?abbr_node euvoc:status ?abbr_status. + FILTER( + lang(?abbr) = "en" && + ?abbr_type = && + ?abbr_status = + ) + } + + # Get the current alternative shortname + OPTIONAL { + ?group skosxl:altLabel ?short_node. + ?short_node skosxl:literalForm ?short. + ?short_node dc:type ?short_type. + ?short_node euvoc:status ?short_status. + FILTER( + lang(?short) = "en" && + ?short_type = && + ?short_status = + ) + } + } + ORDER BY (BOUND(?end_date)) ?code + """ # noqa: E501 + + log.info("Retrieving groups") + results = exec_sparql_query(PUBLICATIONS_ENDPOINT, query) + groups = DataclassContainer( + dataclass=Group, + file_path=DATA_DIR.joinpath("groups.json"), + key_attr="code", + ) + + for result in results: + code = result["code"]["value"] + code = code.removeprefix("EP_GROUP_") + + official_label = result["label"]["value"] + label = result["short"]["value"] if result.get("short") else None + + if not label: + label = official_label.removeprefix("Group of the ").removesuffix(" Group") + + short_label = result["abbr"]["value"] if result.get("abbr") else label + + alt_labels = _load_alt_labels(code) + overrides = GROUP_OVERRIDES.get(code) + + if overrides: + if overrides.get("official_label"): + alt_labels.add(official_label) + official_label = overrides["official_label"] + if overrides.get("label"): + alt_labels.add(label) + label = overrides["label"] + if overrides.get("short_label"): + alt_labels.add(short_label) + short_label = overrides["short_label"] + + alt_labels.discard(official_label) + alt_labels.discard(label) + alt_labels.discard(short_label) + + start_date = datetime.date.fromisoformat(result["start_date"]["value"]) + end_date = ( + datetime.date.fromisoformat(result["end_date"]["value"]) + if result.get("end_date") + else None + ) + + groups.add( + Group( + code=code, + official_label=official_label, + label=label, + short_label=short_label, + start_date=start_date, + end_date=end_date, + alt_labels=list(alt_labels), + ) + ) + + groups.save() + + +def _load_alt_labels(group_code: str) -> set[str]: + # Loads a list of all current and previous alternative labels for the given political + # group. Probably there's some elegant way to make the main SPARQL query above return + # nested data that already includes these, but that's above my capabilities. + query = """ + PREFIX skos: + PREFIX skosxl: + PREFIX dc: + + SELECT ?label ?type ?start_date ?end_date + WHERE { + ?group dc:identifier ?code. + FILTER(?code = "EP_GROUP_{{group_code}}") + + ?group skosxl:altLabel ?label_node. + ?label_node skosxl:literalForm ?label. + FILTER(lang(?label) = "en") + } + """ + + query = query.replace("{{group_code}}", group_code) + results = exec_sparql_query(PUBLICATIONS_ENDPOINT, query) + return set(r["label"]["value"] for r in results) + + +def exec_sparql_query(endpoint: str, query: str) -> Any: + params = { + "format": "application/sparql-results+json", + "query": query, + } + + response = requests.get(endpoint, params=params) + return response.json()["results"]["bindings"] diff --git a/backend/howtheyvote/cli/pipeline.py b/backend/howtheyvote/cli/pipeline.py new file mode 100644 index 000000000..47b8b6792 --- /dev/null +++ b/backend/howtheyvote/cli/pipeline.py @@ -0,0 +1,101 @@ +import datetime + +import click +from sqlalchemy import select +from structlog import get_logger + +from ..db import Session +from ..models import PlenarySession +from ..pipelines import ( + MembersPipeline, + PressPipeline, + RCVListPipeline, + SessionsPipeline, +) + +log = get_logger(__name__) + + +@click.group() +def pipeline() -> None: + """Run a data pipeline.""" + pass + + +@pipeline.command() +@click.option("--term", type=int, required=True) +@click.option("--skip-members", is_flag=True) +@click.option("--skip-sessions", is_flag=True) +@click.option("--skip-rcv-lists", is_flag=True) +@click.option("--skip-press", is_flag=True) +def all( + term: int, + skip_members: bool = False, + skip_sessions: bool = False, + skip_rcv_lists: bool = False, + skip_press: bool = False, +) -> None: + """Run all data pipelines for a given term. This can be useful to scrape data + for an entire term from scratch. However, it can take several hours to complete.""" + if not skip_members: + members_pipe = MembersPipeline(term=term) + members_pipe.run() + + if not skip_sessions: + sessions_pipe = SessionsPipeline(term=term) + sessions_pipe.run() + + if not skip_rcv_lists: + query = select(PlenarySession).where(PlenarySession.term == term) + results = Session.execute(query, {"yield_per": 500}).scalars() + + for session in results: + delta = session.end_date - session.start_date + + for i in range(delta.days + 1): + date = session.start_date + datetime.timedelta(days=i) + rcv_pipe = RCVListPipeline(term=term, date=date) + rcv_pipe.run() + + if not skip_press: + press_pipe = PressPipeline() + press_pipe.run() + + +@pipeline.command() +@click.option("--term", type=int, required=True) +@click.option("--date", type=click.DateTime(formats=["%Y-%m-%d"]), required=True) +def rcv_list(term: int, date: datetime.datetime) -> None: + """Run the RCV list pipeline for a given day. This scrapes the list of roll-call votes + for the given day as well as additional sources for related legislative procedures or + plenary documents.""" + pipeline = RCVListPipeline(term=term, date=date.date()) + pipeline.run() + + +@pipeline.command() +@click.option("--date", type=click.DateTime(formats=["%Y-%m-%d"]), required=True) +@click.option("--rss", type=bool, is_flag=True) +def press(date: datetime.datetime, rss: bool = False) -> None: + """Run the press pipeline for a given day. This scrapes official EP press releases and + tries to match them to votes that took place on the same day.""" + pipeline = PressPipeline(date=date.date(), with_rss=rss) + pipeline.run() + + +@pipeline.command() +@click.option("--term", type=int, required=True) +def members(term: int) -> None: + """Run the members pipeline for a given term. This scrapes a complete lists of all + current and past members as well as additional information about them.""" + pipeline = MembersPipeline(term=term) + pipeline.run() + + +@pipeline.command() +@click.option("--term", type=int, required=True) +def sessions(term: int) -> None: + """Run the sessions pipeline for a given term. This scrapes plenary session dates + and locations.""" + pipeline = SessionsPipeline(term=term) + pipeline.run() diff --git a/backend/howtheyvote/cli/system.py b/backend/howtheyvote/cli/system.py new file mode 100644 index 000000000..0e192abc8 --- /dev/null +++ b/backend/howtheyvote/cli/system.py @@ -0,0 +1,36 @@ +import click + +from ..db import migrate as _migrate +from ..meili import configure_indexes as _configure_indexes +from ..meili import delete_indexes as _delete_indexes + + +@click.group() +def system() -> None: + """Initialize or migrate the database and/or search index.""" + pass + + +@system.command() +def configure_indexes() -> None: + """Configure Meilisearch indexes.""" + _configure_indexes() + + +@system.command() +def delete_indexes() -> None: + """Delete Meilisearch indexes.""" + _delete_indexes() + + +@system.command() +def migrate() -> None: + """Run database migrations.""" + _migrate() + + +@system.command() +def upgrade() -> None: + """Equivalent of running the `migrate` and `configure-indexes` subcommands.""" + _configure_indexes() + _migrate() diff --git a/backend/howtheyvote/cli/temp.py b/backend/howtheyvote/cli/temp.py new file mode 100644 index 000000000..f79da69c7 --- /dev/null +++ b/backend/howtheyvote/cli/temp.py @@ -0,0 +1,165 @@ +import datetime + +import click +from cachetools import LRUCache +from sqlalchemy import or_, select +from structlog import get_logger + +from ..db import Session +from ..files import vote_sharepic_path +from ..models import Member, PlenarySession, Vote +from ..query import member_active_at +from ..scrapers import ( + EurlexDocumentScraper, + EurlexProcedureScraper, + NoWorkingUrlError, + ProcedureScraper, + RCVListScraper, + RequestCache, + ScrapingError, +) +from ..sharepics import generate_vote_sharepic +from ..store import BulkWriter + +log = get_logger(__name__) + + +@click.group() +def temp() -> None: + """A namespace for temporary commands required as workarounds or for data migrations.""" + pass + + +@temp.command() +def sharepics() -> None: + """Generate share pictures for all votes.""" + query = select(Vote).where(Vote.is_main == True) # noqa: E712 + votes = Session.execute(query, execution_options={"yield_per": 500}).scalars() + + for vote in votes: + try: + image = generate_vote_sharepic(vote.id) + except Exception: + log.info("Failed generating sharepic", vote_id=vote.id) + continue + + path = vote_sharepic_path(vote.id) + path.write_bytes(image) + + +@temp.command() +def eurovoc() -> None: + """Scrape EuroVoc concepts for all votes.""" + query = select(Vote) + query = query.where( + or_( + Vote.procedure_reference != None, # noqa: E711 + Vote.reference != None, # noqa: E711 + ) + ) + query = query.order_by( + Vote.procedure_reference, + Vote.reference, + ) + votes = Session.execute(query, execution_options={"yield_per": 500}).scalars() + cache: RequestCache = LRUCache(maxsize=50) + writer = BulkWriter() + + for partition in votes.partitions(): + for vote in partition: + if not vote.procedure_reference: + continue + + try: + proc_scraper = EurlexProcedureScraper( + vote_id=vote.id, + procedure_reference=vote.procedure_reference, + request_cache=cache, + ) + writer.add(proc_scraper.run()) + except ScrapingError: + pass + + for vote in partition: + if not vote.reference: + continue + + try: + doc_scraper = EurlexDocumentScraper( + vote_id=vote.id, + reference=vote.reference, + request_cache=cache, + ) + writer.add(doc_scraper.run()) + except ScrapingError: + pass + + writer.flush() + + +@temp.command() +def procedure_titles() -> None: + """Scrape all procedure files.""" + query = select(Vote) + query = query.where(Vote.procedure_reference != None) # noqa: E711 + query = query.order_by(Vote.procedure_reference) + votes = Session.execute(query, execution_options={"yield_per": 500}).scalars() + cache: RequestCache = LRUCache(maxsize=50) + writer = BulkWriter() + + for partition in votes.partitions(): + for vote in partition: + if not vote.procedure_reference: + continue + + try: + proc_scraper = ProcedureScraper( + vote_id=vote.id, + procedure_reference=vote.procedure_reference, + request_cache=cache, + ) + writer.add(proc_scraper.run()) + except ScrapingError: + pass + + writer.flush() + + +@temp.command() +def rcv_lists() -> None: + """Scrape all RCV lists.""" + writer = BulkWriter() + + query = select(PlenarySession) + query = query.where(PlenarySession.start_date <= datetime.datetime.now()) + results = Session.execute(query).scalars() + + for session in results: + delta = session.end_date - session.start_date + + for i in range(delta.days + 1): + date = session.start_date + datetime.timedelta(days=i) + + members_query = ( + select(Member) + .where(member_active_at(date)) + .with_only_columns( + Member.id, + Member.first_name, + Member.last_name, + ) + ) + active_members = [tuple(row) for row in Session.execute(members_query).all()] + + scraper = RCVListScraper( + term=session.term, + date=date, + active_members=active_members, + ) + + try: + writer.add(scraper.run()) + except NoWorkingUrlError: + pass + + writer.flush() diff --git a/backend/howtheyvote/config.py b/backend/howtheyvote/config.py new file mode 100644 index 000000000..389423725 --- /dev/null +++ b/backend/howtheyvote/config.py @@ -0,0 +1,31 @@ +from os import environ as env + +# URLs +PUBLIC_URL = env.get("HTV_BACKEND_PUBLIC_URL", "") +FRONTEND_PUBLIC_URL = env.get("HTV_FRONTEND_PUBLIC_URL", "") +FRONTEND_PRIVATE_URL = env.get("HTV_FRONTEND_PRIVATE_URL", "") + +# Database +DATABASE_URI = env.get( + "HTV_BACKEND_DATABASE_URI", "sqlite:////howtheyvote/database/database.sqlite3" +) +USERS_DATABASE_URI = env.get( + "HTV_BACKEND_USERS_DATABASE_URI", "sqlite:////howtheyvote/database/users.sqlite3" +) + +# File storage +FILES_DIR = env.get("HTV_BACKEND_FILES_DIR", "/howtheyvote/files") + +# Meilisearch +MEILI_URL = env.get("MEILI_URL") +MEILI_MASTER_KEY = env.get("MEILI_MASTER_KEY") + +# Request configuration +REQUEST_TIMEOUT = 10 +REQUEST_SLEEP = 0.25 + +# Misc +CURRENT_TERM = 9 +TIMEZONE = "Europe/Brussels" +WORKER_PROMETHEUS_PORT = 3000 +SEARCH_INDEX_PREFIX = env.get("HTV_SEARCH_INDEX_PREFIX", None) diff --git a/backend/howtheyvote/data.py b/backend/howtheyvote/data.py new file mode 100644 index 000000000..088b68dc1 --- /dev/null +++ b/backend/howtheyvote/data.py @@ -0,0 +1,58 @@ +import dataclasses +from collections.abc import Iterator +from pathlib import Path +from typing import Any, Generic, Self, TypeVar + +from .json import json_dumps, json_loads + +DATA_DIR = Path(__file__).resolve().parent / "data" + + +class DeserializableDataclass: + @classmethod + def from_dict(cls, data: dict[Any, Any]) -> Self: + return cls(**data) + + +DataclassType = TypeVar("DataclassType", bound=DeserializableDataclass) + + +class DataclassContainer(Generic[DataclassType]): + """A convenience class to write and load dataclasses from a JSON file and retrieve + individual dataclass instances by key.""" + + def __init__(self, dataclass: type[DataclassType], file_path: Path | str, key_attr: str): + self.dataclass = dataclass + self.file_path = Path(file_path) + self.key_attr = key_attr + self.index: dict[str, DataclassType] = {} + + def load(self) -> None: + """Load data from file.""" + text = self.file_path.read_text() + records = json_loads(text) + + for record in records: + self.add(self.dataclass.from_dict(record)) + + def save(self) -> None: + """Save data to file.""" + records = [dataclasses.asdict(r) for r in self.index.values()] # type: ignore + text = json_dumps(records, indent=2) + self.file_path.write_text(text) + + def add(self, record: DataclassType) -> None: + """Add an individual record.""" + key = getattr(record, self.key_attr) + + if not isinstance(key, str): + raise TypeError("Key value must be a string") + + self.index[key.lower()] = record + + def get(self, key: str) -> DataclassType | None: + """Get a record by key.""" + return self.index.get(key.lower()) + + def __iter__(self) -> Iterator[DataclassType]: + return iter(self.index.values()) diff --git a/backend/howtheyvote/data/countries.json b/backend/howtheyvote/data/countries.json new file mode 100644 index 000000000..350eff33b --- /dev/null +++ b/backend/howtheyvote/data/countries.json @@ -0,0 +1,1796 @@ +[ + { + "code": "BEL", + "label": "Belgium", + "alt_label": "Kingdom of Belgium", + "iso_alpha_2": "BE" + }, + { + "code": "BGR", + "label": "Bulgaria", + "alt_label": "Republic of Bulgaria", + "iso_alpha_2": "BG" + }, + { + "code": "CZE", + "label": "Czechia", + "alt_label": "Czech Republic", + "iso_alpha_2": "CZ" + }, + { + "code": "DNK", + "label": "Denmark", + "alt_label": "Kingdom of Denmark", + "iso_alpha_2": "DK" + }, + { + "code": "DEU", + "label": "Germany", + "alt_label": "Federal Republic of Germany", + "iso_alpha_2": "DE" + }, + { + "code": "EST", + "label": "Estonia", + "alt_label": "Republic of Estonia", + "iso_alpha_2": "EE" + }, + { + "code": "IRL", + "label": "Ireland", + "alt_label": "Ireland", + "iso_alpha_2": "IE" + }, + { + "code": "GRC", + "label": "Greece", + "alt_label": "Hellenic Republic", + "iso_alpha_2": "GR" + }, + { + "code": "ESP", + "label": "Spain", + "alt_label": "Kingdom of Spain", + "iso_alpha_2": "ES" + }, + { + "code": "FRA", + "label": "France", + "alt_label": "French Republic", + "iso_alpha_2": "FR" + }, + { + "code": "HRV", + "label": "Croatia", + "alt_label": "Republic of Croatia", + "iso_alpha_2": "HR" + }, + { + "code": "ITA", + "label": "Italy", + "alt_label": "Italian Republic", + "iso_alpha_2": "IT" + }, + { + "code": "CYP", + "label": "Cyprus", + "alt_label": "Republic of Cyprus", + "iso_alpha_2": "CY" + }, + { + "code": "LVA", + "label": "Latvia", + "alt_label": "Republic of Latvia", + "iso_alpha_2": "LV" + }, + { + "code": "LTU", + "label": "Lithuania", + "alt_label": "Republic of Lithuania", + "iso_alpha_2": "LT" + }, + { + "code": "LUX", + "label": "Luxembourg", + "alt_label": "Grand Duchy of Luxembourg", + "iso_alpha_2": "LU" + }, + { + "code": "HUN", + "label": "Hungary", + "alt_label": "Hungary", + "iso_alpha_2": "HU" + }, + { + "code": "MLT", + "label": "Malta", + "alt_label": "Republic of Malta", + "iso_alpha_2": "MT" + }, + { + "code": "NLD", + "label": "Netherlands", + "alt_label": "Kingdom of the Netherlands", + "iso_alpha_2": "NL" + }, + { + "code": "AUT", + "label": "Austria", + "alt_label": "Republic of Austria", + "iso_alpha_2": "AT" + }, + { + "code": "POL", + "label": "Poland", + "alt_label": "Republic of Poland", + "iso_alpha_2": "PL" + }, + { + "code": "PRT", + "label": "Portugal", + "alt_label": "Portuguese Republic", + "iso_alpha_2": "PT" + }, + { + "code": "ROU", + "label": "Romania", + "alt_label": "Romania", + "iso_alpha_2": "RO" + }, + { + "code": "SVN", + "label": "Slovenia", + "alt_label": "Republic of Slovenia", + "iso_alpha_2": "SI" + }, + { + "code": "SVK", + "label": "Slovakia", + "alt_label": "Slovak Republic", + "iso_alpha_2": "SK" + }, + { + "code": "FIN", + "label": "Finland", + "alt_label": "Republic of Finland", + "iso_alpha_2": "FI" + }, + { + "code": "SWE", + "label": "Sweden", + "alt_label": "Kingdom of Sweden", + "iso_alpha_2": "SE" + }, + { + "code": "ABW", + "label": "Aruba", + "alt_label": "Aruba", + "iso_alpha_2": "AW" + }, + { + "code": "AFG", + "label": "Afghanistan", + "alt_label": "Islamic Republic of Afghanistan", + "iso_alpha_2": "AF" + }, + { + "code": "AGO", + "label": "Angola", + "alt_label": "Republic of Angola", + "iso_alpha_2": "AO" + }, + { + "code": "AIA", + "label": "Anguilla", + "alt_label": "Anguilla", + "iso_alpha_2": "AI" + }, + { + "code": "ALA", + "label": "\u00c5land Islands", + "alt_label": "\u00c5land Islands", + "iso_alpha_2": "AX" + }, + { + "code": "ALB", + "label": "Albania", + "alt_label": "Republic of Albania", + "iso_alpha_2": "AL" + }, + { + "code": "AND", + "label": "Andorra", + "alt_label": "Principality of Andorra", + "iso_alpha_2": "AD" + }, + { + "code": "ARE", + "label": "United Arab Emirates", + "alt_label": "United Arab Emirates", + "iso_alpha_2": "AE" + }, + { + "code": "ARG", + "label": "Argentina", + "alt_label": "Argentine Republic", + "iso_alpha_2": "AR" + }, + { + "code": "ARM", + "label": "Armenia", + "alt_label": "Republic of Armenia", + "iso_alpha_2": "AM" + }, + { + "code": "ASM", + "label": "American Samoa", + "alt_label": "Territory of American Samoa", + "iso_alpha_2": "AS" + }, + { + "code": "ATA", + "label": "Antarctica", + "alt_label": "Antarctica", + "iso_alpha_2": "AQ" + }, + { + "code": "ATF", + "label": "French Southern and Antarctic Lands", + "alt_label": "French Southern and Antarctic Lands", + "iso_alpha_2": "TF" + }, + { + "code": "ATG", + "label": "Antigua and Barbuda", + "alt_label": "Antigua and Barbuda", + "iso_alpha_2": "AG" + }, + { + "code": "AUS", + "label": "Australia", + "alt_label": "Commonwealth of Australia", + "iso_alpha_2": "AU" + }, + { + "code": "AZE", + "label": "Azerbaijan", + "alt_label": "Republic of Azerbaijan", + "iso_alpha_2": "AZ" + }, + { + "code": "BDI", + "label": "Burundi", + "alt_label": "Republic of Burundi", + "iso_alpha_2": "BI" + }, + { + "code": "BEN", + "label": "Benin", + "alt_label": "Republic of Benin", + "iso_alpha_2": "BJ" + }, + { + "code": "BES", + "label": "Bonaire, Sint Eustatius and Saba", + "alt_label": "Bonaire, Sint Eustatius and Saba", + "iso_alpha_2": "BQ" + }, + { + "code": "BFA", + "label": "Burkina Faso", + "alt_label": "Burkina Faso", + "iso_alpha_2": "BF" + }, + { + "code": "BGD", + "label": "Bangladesh", + "alt_label": "People\u2019s Republic of Bangladesh", + "iso_alpha_2": "BD" + }, + { + "code": "BHR", + "label": "Bahrain", + "alt_label": "Kingdom of Bahrain", + "iso_alpha_2": "BH" + }, + { + "code": "BHS", + "label": "Bahamas", + "alt_label": "Commonwealth of the Bahamas", + "iso_alpha_2": "BS" + }, + { + "code": "BIH", + "label": "Bosnia and Herzegovina", + "alt_label": "Bosnia and Herzegovina", + "iso_alpha_2": "BA" + }, + { + "code": "BLM", + "label": "Saint Barth\u00e9lemy", + "alt_label": "Collectivity of Saint Barth\u00e9lemy", + "iso_alpha_2": "BL" + }, + { + "code": "BLR", + "label": "Belarus", + "alt_label": "Republic of Belarus", + "iso_alpha_2": "BY" + }, + { + "code": "BLZ", + "label": "Belize", + "alt_label": "Belize", + "iso_alpha_2": "BZ" + }, + { + "code": "BMU", + "label": "Bermuda", + "alt_label": "Bermuda", + "iso_alpha_2": "BM" + }, + { + "code": "BOL", + "label": "Bolivia", + "alt_label": "Plurinational State of Bolivia", + "iso_alpha_2": "BO" + }, + { + "code": "BRA", + "label": "Brazil", + "alt_label": "Federative Republic of Brazil", + "iso_alpha_2": "BR" + }, + { + "code": "BRB", + "label": "Barbados", + "alt_label": "Barbados", + "iso_alpha_2": "BB" + }, + { + "code": "BRN", + "label": "Brunei", + "alt_label": "Brunei Darussalam", + "iso_alpha_2": "BN" + }, + { + "code": "BTN", + "label": "Bhutan", + "alt_label": "Kingdom of Bhutan", + "iso_alpha_2": "BT" + }, + { + "code": "BVT", + "label": "Bouvet Island", + "alt_label": "Bouvet Island", + "iso_alpha_2": "BV" + }, + { + "code": "BWA", + "label": "Botswana", + "alt_label": "Republic of Botswana", + "iso_alpha_2": "BW" + }, + { + "code": "CAF", + "label": "Central African Republic", + "alt_label": "Central African Republic", + "iso_alpha_2": "CF" + }, + { + "code": "CAN", + "label": "Canada", + "alt_label": "Canada", + "iso_alpha_2": "CA" + }, + { + "code": "CCK", + "label": "Cocos (Keeling) Islands", + "alt_label": "Territory of Cocos (Keeling) Islands", + "iso_alpha_2": "CC" + }, + { + "code": "CHE", + "label": "Switzerland", + "alt_label": "Swiss Confederation", + "iso_alpha_2": "CH" + }, + { + "code": "CHL", + "label": "Chile", + "alt_label": "Republic of Chile", + "iso_alpha_2": "CL" + }, + { + "code": "CHN", + "label": "China", + "alt_label": "People\u2019s Republic of China", + "iso_alpha_2": "CN" + }, + { + "code": "CIV", + "label": "C\u00f4te d\u2019Ivoire", + "alt_label": "Republic of C\u00f4te d\u2019Ivoire", + "iso_alpha_2": "CI" + }, + { + "code": "CMR", + "label": "Cameroon", + "alt_label": "Republic of Cameroon", + "iso_alpha_2": "CM" + }, + { + "code": "COD", + "label": "Democratic Republic of the Congo", + "alt_label": "Democratic Republic of the Congo", + "iso_alpha_2": "CD" + }, + { + "code": "COG", + "label": "Congo", + "alt_label": "Republic of the Congo", + "iso_alpha_2": "CG" + }, + { + "code": "COK", + "label": "Cook Islands", + "alt_label": "Cook Islands", + "iso_alpha_2": "CK" + }, + { + "code": "COL", + "label": "Colombia", + "alt_label": "Republic of Colombia", + "iso_alpha_2": "CO" + }, + { + "code": "COM", + "label": "Comoros", + "alt_label": "Union of the Comoros", + "iso_alpha_2": "KM" + }, + { + "code": "CPT", + "label": "Clipperton", + "alt_label": "Clipperton Island", + "iso_alpha_2": "CP" + }, + { + "code": "CPV", + "label": "Cabo Verde", + "alt_label": "Republic of Cabo Verde", + "iso_alpha_2": "CV" + }, + { + "code": "CRI", + "label": "Costa Rica", + "alt_label": "Republic of Costa Rica", + "iso_alpha_2": "CR" + }, + { + "code": "CRQ", + "label": "Sark", + "alt_label": "Sark Island", + "iso_alpha_2": "CQ" + }, + { + "code": "CUB", + "label": "Cuba", + "alt_label": "Republic of Cuba", + "iso_alpha_2": "CU" + }, + { + "code": "CUW", + "label": "Cura\u00e7ao", + "alt_label": "Cura\u00e7ao", + "iso_alpha_2": "CW" + }, + { + "code": "CXR", + "label": "Christmas Island", + "alt_label": "Christmas Island Territory", + "iso_alpha_2": "CX" + }, + { + "code": "CYM", + "label": "Cayman Islands", + "alt_label": "Cayman Islands", + "iso_alpha_2": "KY" + }, + { + "code": "DJI", + "label": "Djibouti", + "alt_label": "Republic of Djibouti", + "iso_alpha_2": "DJ" + }, + { + "code": "DMA", + "label": "Dominica", + "alt_label": "Commonwealth of Dominica", + "iso_alpha_2": "DM" + }, + { + "code": "DOM", + "label": "Dominican Republic", + "alt_label": "Dominican Republic", + "iso_alpha_2": "DO" + }, + { + "code": "DZA", + "label": "Algeria", + "alt_label": "People\u2019s Democratic Republic of Algeria", + "iso_alpha_2": "DZ" + }, + { + "code": "ECU", + "label": "Ecuador", + "alt_label": "Republic of Ecuador", + "iso_alpha_2": "EC" + }, + { + "code": "EGY", + "label": "Egypt", + "alt_label": "Arab Republic of Egypt", + "iso_alpha_2": "EG" + }, + { + "code": "ERI", + "label": "Eritrea", + "alt_label": "State of Eritrea", + "iso_alpha_2": "ER" + }, + { + "code": "ESH", + "label": "Western Sahara", + "alt_label": "Western Sahara", + "iso_alpha_2": "EH" + }, + { + "code": "ETH", + "label": "Ethiopia", + "alt_label": "Federal Democratic Republic of Ethiopia", + "iso_alpha_2": "ET" + }, + { + "code": "EUR", + "label": "European Union", + "alt_label": "European Union", + "iso_alpha_2": "EU" + }, + { + "code": "FJI", + "label": "Fiji", + "alt_label": "Republic of Fiji", + "iso_alpha_2": "FJ" + }, + { + "code": "FLK", + "label": "Falkland Islands", + "alt_label": "Falkland Islands", + "iso_alpha_2": "FK" + }, + { + "code": "FRO", + "label": "Faroes", + "alt_label": "Faroe Islands", + "iso_alpha_2": "FO" + }, + { + "code": "FSM", + "label": "Micronesia", + "alt_label": "Federated States of Micronesia", + "iso_alpha_2": "FM" + }, + { + "code": "GAB", + "label": "Gabon", + "alt_label": "Gabonese Republic", + "iso_alpha_2": "GA" + }, + { + "code": "GBR", + "label": "United Kingdom", + "alt_label": "United Kingdom of Great Britain and Northern Ireland", + "iso_alpha_2": "GB" + }, + { + "code": "GEO", + "label": "Georgia", + "alt_label": "Georgia", + "iso_alpha_2": "GE" + }, + { + "code": "GGY", + "label": "Guernsey", + "alt_label": "Bailiwick of Guernsey", + "iso_alpha_2": "GG" + }, + { + "code": "GHA", + "label": "Ghana", + "alt_label": "Republic of Ghana", + "iso_alpha_2": "GH" + }, + { + "code": "GIB", + "label": "Gibraltar", + "alt_label": "Gibraltar", + "iso_alpha_2": "GI" + }, + { + "code": "GIN", + "label": "Guinea", + "alt_label": "Republic of Guinea", + "iso_alpha_2": "GN" + }, + { + "code": "GLP", + "label": "Guadeloupe", + "alt_label": "Guadeloupe", + "iso_alpha_2": "GP" + }, + { + "code": "GMB", + "label": "The Gambia", + "alt_label": "Republic of The Gambia", + "iso_alpha_2": "GM" + }, + { + "code": "GNB", + "label": "Guinea-Bissau", + "alt_label": "Republic of Guinea-Bissau", + "iso_alpha_2": "GW" + }, + { + "code": "GNQ", + "label": "Equatorial Guinea", + "alt_label": "Republic of Equatorial Guinea", + "iso_alpha_2": "GQ" + }, + { + "code": "GRD", + "label": "Grenada", + "alt_label": "Grenada", + "iso_alpha_2": "GD" + }, + { + "code": "GRL", + "label": "Greenland", + "alt_label": "Greenland", + "iso_alpha_2": "GL" + }, + { + "code": "GTM", + "label": "Guatemala", + "alt_label": "Republic of Guatemala", + "iso_alpha_2": "GT" + }, + { + "code": "GUF", + "label": "French Guiana", + "alt_label": "French Guiana", + "iso_alpha_2": "GF" + }, + { + "code": "GUM", + "label": "Guam", + "alt_label": "Territory of Guam", + "iso_alpha_2": "GU" + }, + { + "code": "GUY", + "label": "Guyana", + "alt_label": "Cooperative Republic of Guyana", + "iso_alpha_2": "GY" + }, + { + "code": "HKG", + "label": "Hong Kong", + "alt_label": "Hong Kong Special Administrative Region of the People\u2019s Republic of China", + "iso_alpha_2": "HK" + }, + { + "code": "HMD", + "label": "Heard Island and McDonald Islands", + "alt_label": "Territory of Heard Island and McDonald Islands", + "iso_alpha_2": "HM" + }, + { + "code": "HND", + "label": "Honduras", + "alt_label": "Republic of Honduras", + "iso_alpha_2": "HN" + }, + { + "code": "HTI", + "label": "Haiti", + "alt_label": "Republic of Haiti", + "iso_alpha_2": "HT" + }, + { + "code": "IDN", + "label": "Indonesia", + "alt_label": "Republic of Indonesia", + "iso_alpha_2": "ID" + }, + { + "code": "IMN", + "label": "Isle of Man", + "alt_label": "Isle of Man", + "iso_alpha_2": "IM" + }, + { + "code": "IND", + "label": "India", + "alt_label": "Republic of India", + "iso_alpha_2": "IN" + }, + { + "code": "IOT", + "label": "British Indian Ocean Territory", + "alt_label": "British Indian Ocean Territory", + "iso_alpha_2": "IO" + }, + { + "code": "IRN", + "label": "Iran", + "alt_label": "Islamic Republic of Iran", + "iso_alpha_2": "IR" + }, + { + "code": "IRQ", + "label": "Iraq", + "alt_label": "Republic of Iraq", + "iso_alpha_2": "IQ" + }, + { + "code": "ISL", + "label": "Iceland", + "alt_label": "Iceland", + "iso_alpha_2": "IS" + }, + { + "code": "ISR", + "label": "Israel", + "alt_label": "State of Israel", + "iso_alpha_2": "IL" + }, + { + "code": "JAM", + "label": "Jamaica", + "alt_label": "Jamaica", + "iso_alpha_2": "JM" + }, + { + "code": "JEY", + "label": "Jersey", + "alt_label": "Bailiwick of Jersey", + "iso_alpha_2": "JE" + }, + { + "code": "JOR", + "label": "Jordan", + "alt_label": "Hashemite Kingdom of Jordan", + "iso_alpha_2": "JO" + }, + { + "code": "JPN", + "label": "Japan", + "alt_label": "Japan", + "iso_alpha_2": "JP" + }, + { + "code": "KAZ", + "label": "Kazakhstan", + "alt_label": "Republic of Kazakhstan", + "iso_alpha_2": "KZ" + }, + { + "code": "KEN", + "label": "Kenya", + "alt_label": "Republic of Kenya", + "iso_alpha_2": "KE" + }, + { + "code": "KGZ", + "label": "Kyrgyzstan", + "alt_label": "Kyrgyz Republic", + "iso_alpha_2": "KG" + }, + { + "code": "KHM", + "label": "Cambodia", + "alt_label": "Kingdom of Cambodia", + "iso_alpha_2": "KH" + }, + { + "code": "KIR", + "label": "Kiribati", + "alt_label": "Republic of Kiribati", + "iso_alpha_2": "KI" + }, + { + "code": "KNA", + "label": "Saint Kitts and Nevis", + "alt_label": "Federation of Saint Kitts and Nevis", + "iso_alpha_2": "KN" + }, + { + "code": "KOR", + "label": "South Korea", + "alt_label": "Republic of Korea", + "iso_alpha_2": "KR" + }, + { + "code": "KWT", + "label": "Kuwait", + "alt_label": "State of Kuwait", + "iso_alpha_2": "KW" + }, + { + "code": "LAO", + "label": "Laos", + "alt_label": "Lao People\u2019s Democratic Republic", + "iso_alpha_2": "LA" + }, + { + "code": "LBN", + "label": "Lebanon", + "alt_label": "Lebanese Republic", + "iso_alpha_2": "LB" + }, + { + "code": "LBR", + "label": "Liberia", + "alt_label": "Republic of Liberia", + "iso_alpha_2": "LR" + }, + { + "code": "LBY", + "label": "Libya", + "alt_label": "State of Libya", + "iso_alpha_2": "LY" + }, + { + "code": "LCA", + "label": "Saint Lucia", + "alt_label": "Saint Lucia", + "iso_alpha_2": "LC" + }, + { + "code": "LIE", + "label": "Liechtenstein", + "alt_label": "Principality of Liechtenstein", + "iso_alpha_2": "LI" + }, + { + "code": "LKA", + "label": "Sri Lanka", + "alt_label": "Democratic Socialist Republic of Sri Lanka", + "iso_alpha_2": "LK" + }, + { + "code": "LSO", + "label": "Lesotho", + "alt_label": "Kingdom of Lesotho", + "iso_alpha_2": "LS" + }, + { + "code": "MAC", + "label": "Macao", + "alt_label": "Macao Special Administrative Region of the People\u2019s Republic of China", + "iso_alpha_2": "MO" + }, + { + "code": "MAF", + "label": "Saint Martin", + "alt_label": "Collectivity of Saint Martin", + "iso_alpha_2": "MF" + }, + { + "code": "MAR", + "label": "Morocco", + "alt_label": "Kingdom of Morocco", + "iso_alpha_2": "MA" + }, + { + "code": "MCO", + "label": "Monaco", + "alt_label": "Principality of Monaco", + "iso_alpha_2": "MC" + }, + { + "code": "MDA", + "label": "Moldova", + "alt_label": "Republic of Moldova", + "iso_alpha_2": "MD" + }, + { + "code": "MDG", + "label": "Madagascar", + "alt_label": "Republic of Madagascar", + "iso_alpha_2": "MG" + }, + { + "code": "MDV", + "label": "Maldives", + "alt_label": "Republic of Maldives", + "iso_alpha_2": "MV" + }, + { + "code": "MEX", + "label": "Mexico", + "alt_label": "United Mexican States", + "iso_alpha_2": "MX" + }, + { + "code": "MHL", + "label": "Marshall Islands", + "alt_label": "Republic of the Marshall Islands", + "iso_alpha_2": "MH" + }, + { + "code": "MKD", + "label": "North Macedonia", + "alt_label": "Republic of North Macedonia", + "iso_alpha_2": "MK" + }, + { + "code": "MLI", + "label": "Mali", + "alt_label": "Republic of Mali", + "iso_alpha_2": "ML" + }, + { + "code": "MMR", + "label": "Myanmar/Burma", + "alt_label": "Myanmar/Burma", + "iso_alpha_2": "MM" + }, + { + "code": "MNE", + "label": "Montenegro", + "alt_label": "Montenegro", + "iso_alpha_2": "ME" + }, + { + "code": "MNG", + "label": "Mongolia", + "alt_label": "Mongolia", + "iso_alpha_2": "MN" + }, + { + "code": "MNP", + "label": "Northern Mariana Islands", + "alt_label": "Commonwealth of the Northern Mariana Islands", + "iso_alpha_2": "MP" + }, + { + "code": "MOZ", + "label": "Mozambique", + "alt_label": "Republic of Mozambique", + "iso_alpha_2": "MZ" + }, + { + "code": "MRT", + "label": "Mauritania", + "alt_label": "Islamic Republic of Mauritania", + "iso_alpha_2": "MR" + }, + { + "code": "MSR", + "label": "Montserrat", + "alt_label": "Montserrat", + "iso_alpha_2": "MS" + }, + { + "code": "MTQ", + "label": "Martinique", + "alt_label": "Martinique", + "iso_alpha_2": "MQ" + }, + { + "code": "MUS", + "label": "Mauritius", + "alt_label": "Republic of Mauritius", + "iso_alpha_2": "MU" + }, + { + "code": "MWI", + "label": "Malawi", + "alt_label": "Republic of Malawi", + "iso_alpha_2": "MW" + }, + { + "code": "MYS", + "label": "Malaysia", + "alt_label": "Malaysia", + "iso_alpha_2": "MY" + }, + { + "code": "MYT", + "label": "Mayotte", + "alt_label": "Mayotte", + "iso_alpha_2": "YT" + }, + { + "code": "NAM", + "label": "Namibia", + "alt_label": "Republic of Namibia", + "iso_alpha_2": "NA" + }, + { + "code": "NCL", + "label": "New Caledonia", + "alt_label": "New Caledonia", + "iso_alpha_2": "NC" + }, + { + "code": "NER", + "label": "Niger", + "alt_label": "Republic of Niger", + "iso_alpha_2": "NE" + }, + { + "code": "NFK", + "label": "Norfolk Island", + "alt_label": "Territory of Norfolk Island", + "iso_alpha_2": "NF" + }, + { + "code": "NGA", + "label": "Nigeria", + "alt_label": "Federal Republic of Nigeria", + "iso_alpha_2": "NG" + }, + { + "code": "NIC", + "label": "Nicaragua", + "alt_label": "Republic of Nicaragua", + "iso_alpha_2": "NI" + }, + { + "code": "NIU", + "label": "Niue", + "alt_label": "Niue", + "iso_alpha_2": "NU" + }, + { + "code": "NOR", + "label": "Norway", + "alt_label": "Kingdom of Norway", + "iso_alpha_2": "NO" + }, + { + "code": "NPL", + "label": "Nepal", + "alt_label": "Federal Democratic Republic of Nepal", + "iso_alpha_2": "NP" + }, + { + "code": "NRU", + "label": "Nauru", + "alt_label": "Republic of Nauru", + "iso_alpha_2": "NR" + }, + { + "code": "NZL", + "label": "New Zealand", + "alt_label": "New Zealand", + "iso_alpha_2": "NZ" + }, + { + "code": "OMN", + "label": "Oman", + "alt_label": "Sultanate of Oman", + "iso_alpha_2": "OM" + }, + { + "code": "PAK", + "label": "Pakistan", + "alt_label": "Islamic Republic of Pakistan", + "iso_alpha_2": "PK" + }, + { + "code": "PAN", + "label": "Panama", + "alt_label": "Republic of Panama", + "iso_alpha_2": "PA" + }, + { + "code": "PCN", + "label": "Pitcairn Islands", + "alt_label": "Pitcairn Islands", + "iso_alpha_2": "PN" + }, + { + "code": "PER", + "label": "Peru", + "alt_label": "Republic of Peru", + "iso_alpha_2": "PE" + }, + { + "code": "PHL", + "label": "Philippines", + "alt_label": "Republic of the Philippines", + "iso_alpha_2": "PH" + }, + { + "code": "PLW", + "label": "Palau", + "alt_label": "Republic of Palau", + "iso_alpha_2": "PW" + }, + { + "code": "PNG", + "label": "Papua New Guinea", + "alt_label": "Independent State of Papua New Guinea", + "iso_alpha_2": "PG" + }, + { + "code": "PRI", + "label": "Puerto Rico", + "alt_label": "Commonwealth of Puerto Rico", + "iso_alpha_2": "PR" + }, + { + "code": "PRK", + "label": "North Korea", + "alt_label": "Democratic People\u2019s Republic of Korea", + "iso_alpha_2": "KP" + }, + { + "code": "PRY", + "label": "Paraguay", + "alt_label": "Republic of Paraguay", + "iso_alpha_2": "PY" + }, + { + "code": "PSE", + "label": "Palestine*", + "alt_label": "Palestine*", + "iso_alpha_2": "PS" + }, + { + "code": "PYF", + "label": "French Polynesia", + "alt_label": "French Polynesia", + "iso_alpha_2": "PF" + }, + { + "code": "QAT", + "label": "Qatar", + "alt_label": "State of Qatar", + "iso_alpha_2": "QA" + }, + { + "code": "REU", + "label": "R\u00e9union", + "alt_label": "R\u00e9union", + "iso_alpha_2": "RE" + }, + { + "code": "RUS", + "label": "Russia", + "alt_label": "Russian Federation", + "iso_alpha_2": "RU" + }, + { + "code": "RWA", + "label": "Rwanda", + "alt_label": "Republic of Rwanda", + "iso_alpha_2": "RW" + }, + { + "code": "SAU", + "label": "Saudi Arabia", + "alt_label": "Kingdom of Saudi Arabia", + "iso_alpha_2": "SA" + }, + { + "code": "SDN", + "label": "Sudan", + "alt_label": "Republic of the Sudan", + "iso_alpha_2": "SD" + }, + { + "code": "SEN", + "label": "Senegal", + "alt_label": "Republic of Senegal", + "iso_alpha_2": "SN" + }, + { + "code": "SGP", + "label": "Singapore", + "alt_label": "Republic of Singapore", + "iso_alpha_2": "SG" + }, + { + "code": "SGS", + "label": "South Georgia and the South Sandwich Islands", + "alt_label": "South Georgia and the South Sandwich Islands", + "iso_alpha_2": "GS" + }, + { + "code": "SHN", + "label": "Saint Helena, Ascension and Tristan da Cunha", + "alt_label": "Saint Helena, Ascension and Tristan da Cunha", + "iso_alpha_2": "SH" + }, + { + "code": "SJM", + "label": "Svalbard and Jan Mayen", + "alt_label": "Svalbard and Jan Mayen", + "iso_alpha_2": "SJ" + }, + { + "code": "SLB", + "label": "Solomon Islands", + "alt_label": "Solomon Islands", + "iso_alpha_2": "SB" + }, + { + "code": "SLE", + "label": "Sierra Leone", + "alt_label": "Republic of Sierra Leone", + "iso_alpha_2": "SL" + }, + { + "code": "SLV", + "label": "El Salvador", + "alt_label": "Republic of El Salvador", + "iso_alpha_2": "SV" + }, + { + "code": "SMR", + "label": "San Marino", + "alt_label": "Republic of San Marino", + "iso_alpha_2": "SM" + }, + { + "code": "SOM", + "label": "Somalia", + "alt_label": "Federal Republic of Somalia", + "iso_alpha_2": "SO" + }, + { + "code": "SPM", + "label": "Saint Pierre and Miquelon", + "alt_label": "Territorial Collectivity of Saint Pierre and Miquelon", + "iso_alpha_2": "PM" + }, + { + "code": "SRB", + "label": "Serbia", + "alt_label": "Republic of Serbia", + "iso_alpha_2": "RS" + }, + { + "code": "SSD", + "label": "South Sudan", + "alt_label": "Republic of South Sudan", + "iso_alpha_2": "SS" + }, + { + "code": "STP", + "label": "S\u00e3o Tom\u00e9 and Pr\u00edncipe", + "alt_label": "Democratic Republic of S\u00e3o Tom\u00e9 and Pr\u00edncipe", + "iso_alpha_2": "ST" + }, + { + "code": "SUR", + "label": "Suriname", + "alt_label": "Republic of Suriname", + "iso_alpha_2": "SR" + }, + { + "code": "SWZ", + "label": "Eswatini", + "alt_label": "Kingdom of Eswatini", + "iso_alpha_2": "SZ" + }, + { + "code": "SXM", + "label": "Sint Maarten", + "alt_label": "Sint Maarten", + "iso_alpha_2": "SX" + }, + { + "code": "SYC", + "label": "Seychelles", + "alt_label": "Republic of Seychelles", + "iso_alpha_2": "SC" + }, + { + "code": "SYR", + "label": "Syria", + "alt_label": "Syrian Arab Republic", + "iso_alpha_2": "SY" + }, + { + "code": "TCA", + "label": "Turks and Caicos Islands", + "alt_label": "Turks and Caicos Islands", + "iso_alpha_2": "TC" + }, + { + "code": "TCD", + "label": "Chad", + "alt_label": "Republic of Chad", + "iso_alpha_2": "TD" + }, + { + "code": "TGO", + "label": "Togo", + "alt_label": "Togolese Republic", + "iso_alpha_2": "TG" + }, + { + "code": "THA", + "label": "Thailand", + "alt_label": "Kingdom of Thailand", + "iso_alpha_2": "TH" + }, + { + "code": "TJK", + "label": "Tajikistan", + "alt_label": "Republic of Tajikistan", + "iso_alpha_2": "TJ" + }, + { + "code": "TKL", + "label": "Tokelau", + "alt_label": "Tokelau", + "iso_alpha_2": "TK" + }, + { + "code": "TKM", + "label": "Turkmenistan", + "alt_label": "Turkmenistan", + "iso_alpha_2": "TM" + }, + { + "code": "TLS", + "label": "Timor-Leste", + "alt_label": "Democratic Republic of Timor-Leste", + "iso_alpha_2": "TL" + }, + { + "code": "TON", + "label": "Tonga", + "alt_label": "Kingdom of Tonga", + "iso_alpha_2": "TO" + }, + { + "code": "TTO", + "label": "Trinidad and Tobago", + "alt_label": "Republic of Trinidad and Tobago", + "iso_alpha_2": "TT" + }, + { + "code": "TUN", + "label": "Tunisia", + "alt_label": "Republic of Tunisia", + "iso_alpha_2": "TN" + }, + { + "code": "TUR", + "label": "T\u00fcrkiye", + "alt_label": "Republic of T\u00fcrkiye", + "iso_alpha_2": "TR" + }, + { + "code": "TUV", + "label": "Tuvalu", + "alt_label": "Tuvalu", + "iso_alpha_2": "TV" + }, + { + "code": "TWN", + "label": "Taiwan", + "alt_label": "Taiwan", + "iso_alpha_2": "TW" + }, + { + "code": "TZA", + "label": "Tanzania", + "alt_label": "United Republic of Tanzania", + "iso_alpha_2": "TZ" + }, + { + "code": "UGA", + "label": "Uganda", + "alt_label": "Republic of Uganda", + "iso_alpha_2": "UG" + }, + { + "code": "UKR", + "label": "Ukraine", + "alt_label": "Ukraine", + "iso_alpha_2": "UA" + }, + { + "code": "UMI", + "label": "United States Minor Outlying Islands", + "alt_label": "United States Minor Outlying Islands", + "iso_alpha_2": "UM" + }, + { + "code": "URY", + "label": "Uruguay", + "alt_label": "Eastern Republic of Uruguay", + "iso_alpha_2": "UY" + }, + { + "code": "USA", + "label": "United States", + "alt_label": "United States of America", + "iso_alpha_2": "US" + }, + { + "code": "UZB", + "label": "Uzbekistan", + "alt_label": "Republic of Uzbekistan", + "iso_alpha_2": "UZ" + }, + { + "code": "VAT", + "label": "Holy See", + "alt_label": "Holy See", + "iso_alpha_2": "VA" + }, + { + "code": "VCT", + "label": "Saint Vincent and the Grenadines", + "alt_label": "Saint Vincent and the Grenadines", + "iso_alpha_2": "VC" + }, + { + "code": "VEN", + "label": "Venezuela", + "alt_label": "Bolivarian Republic of Venezuela", + "iso_alpha_2": "VE" + }, + { + "code": "VGB", + "label": "British Virgin Islands", + "alt_label": "British Virgin Islands", + "iso_alpha_2": "VG" + }, + { + "code": "VIR", + "label": "US Virgin Islands", + "alt_label": "Virgin Islands of the United States", + "iso_alpha_2": "VI" + }, + { + "code": "VNM", + "label": "Vietnam", + "alt_label": "Socialist Republic of Vietnam", + "iso_alpha_2": "VN" + }, + { + "code": "VUT", + "label": "Vanuatu", + "alt_label": "Republic of Vanuatu", + "iso_alpha_2": "VU" + }, + { + "code": "WLF", + "label": "Wallis and Futuna", + "alt_label": "Territory of the Wallis and Futuna Islands", + "iso_alpha_2": "WF" + }, + { + "code": "WSM", + "label": "Samoa", + "alt_label": "Independent State of Samoa", + "iso_alpha_2": "WS" + }, + { + "code": "XAC", + "label": "Ashmore and Cartier Islands", + "alt_label": "Territory of Ashmore and Cartier Islands", + "iso_alpha_2": null + }, + { + "code": "XAD", + "label": "UK Sovereign Base Areas of Akrotiri and Dhekelia", + "alt_label": null, + "iso_alpha_2": null + }, + { + "code": "XBH", + "label": "B\u00fcsingen am Hochrhein", + "alt_label": null, + "iso_alpha_2": null + }, + { + "code": "XCI", + "label": "Campione d\u2019Italia", + "alt_label": null, + "iso_alpha_2": null + }, + { + "code": "XDST", + "label": "Disputed region", + "alt_label": null, + "iso_alpha_2": null + }, + { + "code": "XEU", + "label": "EU Waters", + "alt_label": null, + "iso_alpha_2": null + }, + { + "code": "XGS", + "label": "Gaza Strip", + "alt_label": null, + "iso_alpha_2": null + }, + { + "code": "XHS", + "label": "High seas", + "alt_label": null, + "iso_alpha_2": null + }, + { + "code": "XIC", + "label": "Canary Islands", + "alt_label": null, + "iso_alpha_2": "IC" + }, + { + "code": "XIH", + "label": "Heligoland", + "alt_label": "Islands of Heligoland", + "iso_alpha_2": null + }, + { + "code": "XIN", + "label": "International Waters", + "alt_label": null, + "iso_alpha_2": null + }, + { + "code": "XJM", + "label": "Fisheries zone around Jan Mayen", + "alt_label": null, + "iso_alpha_2": null + }, + { + "code": "XKX", + "label": "Kosovo*", + "alt_label": "Kosovo*", + "iso_alpha_2": null + }, + { + "code": "XLF", + "label": "Fezzan (Libya)", + "alt_label": "Fezzan region (Libya)", + "iso_alpha_2": null + }, + { + "code": "XLI", + "label": "Livigno", + "alt_label": null, + "iso_alpha_2": null + }, + { + "code": "XLL", + "label": "Italian waters of Lake Lugano", + "alt_label": null, + "iso_alpha_2": null + }, + { + "code": "XMA", + "label": "Mount Athos", + "alt_label": null, + "iso_alpha_2": null + }, + { + "code": "XMAZ", + "label": "Marine zone", + "alt_label": null, + "iso_alpha_2": null + }, + { + "code": "XME", + "label": "Melanesia", + "alt_label": null, + "iso_alpha_2": null + }, + { + "code": "XNC", + "label": "areas of the Republic of Cyprus in which the Government of the Republic of Cyprus does not exercise effective control", + "alt_label": null, + "iso_alpha_2": null + }, + { + "code": "XPA", + "label": "Azores", + "alt_label": "Autonomous Region of the Azores", + "iso_alpha_2": null + }, + { + "code": "XPM", + "label": "Madeira", + "alt_label": "Autonomous Region of Madeira", + "iso_alpha_2": null + }, + { + "code": "XQP", + "label": "Colombia/Jamaica (joint regime)", + "alt_label": null, + "iso_alpha_2": null + }, + { + "code": "XQR", + "label": "Japan/South Korea (joint regime)", + "alt_label": null, + "iso_alpha_2": null + }, + { + "code": "XSC", + "label": "Ceuta", + "alt_label": null, + "iso_alpha_2": null + }, + { + "code": "XSG", + "label": "Joint area between Senegal and Guinea-Bissau", + "alt_label": null, + "iso_alpha_2": null + }, + { + "code": "XSL", + "label": "Somaliland", + "alt_label": "Republic of Somaliland", + "iso_alpha_2": null + }, + { + "code": "XSM", + "label": "Melilla", + "alt_label": null, + "iso_alpha_2": null + }, + { + "code": "XSV", + "label": "Fisheries Protection Zone around Svalbard", + "alt_label": null, + "iso_alpha_2": null + }, + { + "code": "XXA", + "label": "Paracel Islands (disputed territory)", + "alt_label": null, + "iso_alpha_2": null + }, + { + "code": "XXB", + "label": "Spratly Islands (disputed territory)", + "alt_label": null, + "iso_alpha_2": null + }, + { + "code": "XXC", + "label": "Aksai Chin (disputed territory)", + "alt_label": null, + "iso_alpha_2": null + }, + { + "code": "XXD", + "label": "Arunashal Pradesh (disputed territory)", + "alt_label": null, + "iso_alpha_2": null + }, + { + "code": "XXE", + "label": "China/India (disputed territory)", + "alt_label": null, + "iso_alpha_2": null + }, + { + "code": "XXF", + "label": "Hala'Ib Triangle (disputed territory)", + "alt_label": null, + "iso_alpha_2": null + }, + { + "code": "XXG", + "label": "Ilemi Triangle (disputed territory)", + "alt_label": null, + "iso_alpha_2": null + }, + { + "code": "XXH", + "label": "Jammu Kashmir (disputed territory)", + "alt_label": null, + "iso_alpha_2": null + }, + { + "code": "XXI", + "label": "Northern Ireland", + "alt_label": "United Kingdom (Northern Ireland)", + "iso_alpha_2": null + }, + { + "code": "XXJ", + "label": "Liancourt Rock (disputed territory)", + "alt_label": null, + "iso_alpha_2": null + }, + { + "code": "XXL", + "label": "Navassa Island (disputed territory)", + "alt_label": null, + "iso_alpha_2": null + }, + { + "code": "XXM", + "label": "Scarborough Reef (disputed territory)", + "alt_label": null, + "iso_alpha_2": null + }, + { + "code": "XXN", + "label": "Senkaku Islands (disputed territory)", + "alt_label": null, + "iso_alpha_2": null + }, + { + "code": "XXO", + "label": "Juan de Nova, Glorioso, Europa, Tromelin, Bassas da India", + "alt_label": null, + "iso_alpha_2": null + }, + { + "code": "XXP", + "label": "China/Philippines/Vietnam/Taiwan/Malaysia (disputed territory)", + "alt_label": null, + "iso_alpha_2": null + }, + { + "code": "XXU", + "label": "Abyei Region (disputed territory)", + "alt_label": null, + "iso_alpha_2": null + }, + { + "code": "XXV", + "label": "Bir Tawil (disputed territory)", + "alt_label": null, + "iso_alpha_2": null + }, + { + "code": "XXZ", + "label": "Kuril Islands (disputed territory)", + "alt_label": null, + "iso_alpha_2": null + }, + { + "code": "YEM", + "label": "Yemen", + "alt_label": "Republic of Yemen", + "iso_alpha_2": "YE" + }, + { + "code": "ZAF", + "label": "South Africa", + "alt_label": "Republic of South Africa", + "iso_alpha_2": "ZA" + }, + { + "code": "ZMB", + "label": "Zambia", + "alt_label": "Republic of Zambia", + "iso_alpha_2": "ZM" + }, + { + "code": "ZWE", + "label": "Zimbabwe", + "alt_label": "Republic of Zimbabwe", + "iso_alpha_2": "ZW" + } +] diff --git a/backend/howtheyvote/data/eurovoc.json b/backend/howtheyvote/data/eurovoc.json new file mode 100644 index 000000000..7a8a533b1 --- /dev/null +++ b/backend/howtheyvote/data/eurovoc.json @@ -0,0 +1,101674 @@ +[ + { + "id": "04", + "label": "04 POLITICS", + "alt_labels": [], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "08", + "label": "08 INTERNATIONAL RELATIONS", + "alt_labels": [], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "10", + "label": "10 EUROPEAN UNION", + "alt_labels": [], + "related_ids": [], + "broader_ids": [], + "geo_area_code": "EUR" + }, + { + "id": "100", + "label": "racial conflict", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "458" + ], + "geo_area_code": null + }, + { + "id": "1000", + "label": "financing", + "alt_labels": [], + "related_ids": [ + "1008", + "2606", + "c_5f90006e" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1001", + "label": "short-term financing", + "alt_labels": [], + "related_ids": [ + "286" + ], + "broader_ids": [ + "1000" + ], + "geo_area_code": null + }, + { + "id": "1002", + "label": "long-term financing", + "alt_labels": [ + "ELTIF", + "European long-term investment fund", + "long-term investment", + "long-term investment fund" + ], + "related_ids": [ + "290" + ], + "broader_ids": [ + "1000" + ], + "geo_area_code": null + }, + { + "id": "1003", + "label": "medium-term financing", + "alt_labels": [], + "related_ids": [ + "292" + ], + "broader_ids": [ + "1000" + ], + "geo_area_code": null + }, + { + "id": "1004", + "label": "welfare", + "alt_labels": [], + "related_ids": [ + "2517" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1005", + "label": "EU financing", + "alt_labels": [ + "Community financing", + "European Union financing" + ], + "related_ids": [ + "6025", + "862" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1006", + "label": "compensatory financing", + "alt_labels": [], + "related_ids": [ + "4671" + ], + "broader_ids": [ + "1010" + ], + "geo_area_code": null + }, + { + "id": "1007", + "label": "supplementary financing", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1000" + ], + "geo_area_code": null + }, + { + "id": "1008", + "label": "financing of aid", + "alt_labels": [], + "related_ids": [ + "1000", + "4806" + ], + "broader_ids": [ + "3003" + ], + "geo_area_code": null + }, + { + "id": "1009", + "label": "industrial financing", + "alt_labels": [], + "related_ids": [ + "2466", + "2495" + ], + "broader_ids": [ + "2507" + ], + "geo_area_code": null + }, + { + "id": "101", + "label": "social conflict", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4706" + ], + "geo_area_code": null + }, + { + "id": "1010", + "label": "export financing", + "alt_labels": [], + "related_ids": [ + "588", + "75" + ], + "broader_ids": [ + "2487" + ], + "geo_area_code": null + }, + { + "id": "1011", + "label": "party financing", + "alt_labels": [], + "related_ids": [ + "1013", + "1082" + ], + "broader_ids": [ + "2180" + ], + "geo_area_code": null + }, + { + "id": "1012", + "label": "budget financing", + "alt_labels": [], + "related_ids": [ + "2448", + "5050" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1013", + "label": "election financing", + "alt_labels": [], + "related_ids": [ + "1011" + ], + "broader_ids": [ + "5097" + ], + "geo_area_code": null + }, + { + "id": "1014", + "label": "national financing", + "alt_labels": [], + "related_ids": [ + "5554" + ], + "broader_ids": [ + "1000" + ], + "geo_area_code": null + }, + { + "id": "1015", + "label": "excise duty", + "alt_labels": [ + "excise tax" + ], + "related_ids": [ + "1313" + ], + "broader_ids": [ + "1321" + ], + "geo_area_code": null + }, + { + "id": "1016", + "label": "international finance", + "alt_labels": [], + "related_ids": [ + "1194", + "2002", + "3219", + "5656", + "653" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1017", + "label": "local authority finances", + "alt_labels": [ + "district finances", + "municipal finances" + ], + "related_ids": [ + "1317", + "68" + ], + "broader_ids": [ + "1018" + ], + "geo_area_code": null + }, + { + "id": "1018", + "label": "public finance", + "alt_labels": [], + "related_ids": [ + "1021", + "1319", + "1810", + "4012", + "403", + "c_34746c6e" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1019", + "label": "Finland", + "alt_labels": [ + "Republic of Finland" + ], + "related_ids": [ + "6135" + ], + "broader_ids": [ + "122", + "130", + "2106", + "5283", + "911" + ], + "geo_area_code": "FIN" + }, + { + "id": "102", + "label": "sick leave", + "alt_labels": [], + "related_ids": [ + "1754" + ], + "broader_ids": [ + "108" + ], + "geo_area_code": null + }, + { + "id": "1021", + "label": "tax system", + "alt_labels": [ + "taxation" + ], + "related_ids": [ + "1018", + "1095", + "3072", + "3558" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1022", + "label": "Unicef", + "alt_labels": [ + "United Nations Children's Fund", + "United Nations International Children's Emergency Fund" + ], + "related_ids": [ + "758" + ], + "broader_ids": [ + "4365" + ], + "geo_area_code": null + }, + { + "id": "1023", + "label": "nuclear fission", + "alt_labels": [], + "related_ids": [ + "753" + ], + "broader_ids": [ + "4422" + ], + "geo_area_code": null + }, + { + "id": "1024", + "label": "International Energy Agency", + "alt_labels": [ + "IEA" + ], + "related_ids": [ + "2498" + ], + "broader_ids": [ + "2105" + ], + "geo_area_code": null + }, + { + "id": "1025", + "label": "fixing of prices", + "alt_labels": [ + "price proposal", + "pricing" + ], + "related_ids": [ + "803" + ], + "broader_ids": [ + "2489" + ], + "geo_area_code": null + }, + { + "id": "1026", + "label": "wage determination", + "alt_labels": [ + "adjustment to remuneration", + "fixing of pay", + "wage adjustment", + "wage fixing", + "wage rate" + ], + "related_ids": [], + "broader_ids": [ + "2491" + ], + "geo_area_code": null + }, + { + "id": "1027", + "label": "Province of West Flanders", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3061" + ], + "geo_area_code": null + }, + { + "id": "1028", + "label": "Province of East Flanders", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3061" + ], + "geo_area_code": null + }, + { + "id": "1029", + "label": "cereal flakes", + "alt_labels": [ + "porridge" + ], + "related_ids": [ + "5360" + ], + "broader_ids": [ + "2729" + ], + "geo_area_code": null + }, + { + "id": "103", + "label": "maternity leave", + "alt_labels": [], + "related_ids": [ + "5159" + ], + "broader_ids": [ + "108" + ], + "geo_area_code": null + }, + { + "id": "1030", + "label": "plant life", + "alt_labels": [], + "related_ids": [ + "2827", + "5028" + ], + "broader_ids": [ + "3150" + ], + "geo_area_code": null + }, + { + "id": "1031", + "label": "floriculture", + "alt_labels": [ + "flower", + "flower-growing" + ], + "related_ids": [], + "broader_ids": [ + "2723" + ], + "geo_area_code": null + }, + { + "id": "1032", + "label": "rafting", + "alt_labels": [ + "floating" + ], + "related_ids": [], + "broader_ids": [ + "4515" + ], + "geo_area_code": null + }, + { + "id": "1033", + "label": "aircraft fleet", + "alt_labels": [], + "related_ids": [ + "4417" + ], + "broader_ids": [ + "4505" + ], + "geo_area_code": null + }, + { + "id": "1034", + "label": "International Atomic Energy Agency", + "alt_labels": [ + "IAEA" + ], + "related_ids": [ + "1455", + "4042" + ], + "broader_ids": [ + "2188" + ], + "geo_area_code": null + }, + { + "id": "1035", + "label": "fishing fleet", + "alt_labels": [ + "fishing capacity" + ], + "related_ids": [ + "1037" + ], + "broader_ids": [ + "5913" + ], + "geo_area_code": null + }, + { + "id": "1036", + "label": "inland waterway fleet", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4515" + ], + "geo_area_code": null + }, + { + "id": "1037", + "label": "merchant fleet", + "alt_labels": [ + "Merchant Navy", + "merchant marine", + "trade vessel" + ], + "related_ids": [ + "1035", + "3429" + ], + "broader_ids": [ + "4522" + ], + "geo_area_code": null + }, + { + "id": "1038", + "label": "cyclical fluctuation", + "alt_labels": [ + "seasonal fluctuation" + ], + "related_ids": [], + "broader_ids": [ + "335" + ], + "geo_area_code": null + }, + { + "id": "1039", + "label": "price fluctuation", + "alt_labels": [ + "price trend", + "price variation" + ], + "related_ids": [ + "1040" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "104", + "label": "training leave", + "alt_labels": [], + "related_ids": [ + "2184" + ], + "broader_ids": [ + "1074" + ], + "geo_area_code": null + }, + { + "id": "1040", + "label": "economic fluctuation", + "alt_labels": [], + "related_ids": [ + "1039" + ], + "broader_ids": [ + "335" + ], + "geo_area_code": null + }, + { + "id": "1041", + "label": "structural fluctuation", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "335" + ], + "geo_area_code": null + }, + { + "id": "1042", + "label": "fluorine", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1229" + ], + "geo_area_code": null + }, + { + "id": "1043", + "label": "International Monetary Fund", + "alt_labels": [ + "IMF" + ], + "related_ids": [ + "4371", + "c_4d5b6dbd" + ], + "broader_ids": [ + "1455" + ], + "geo_area_code": null + }, + { + "id": "1044", + "label": "International Social Security Association", + "alt_labels": [ + "ISSA" + ], + "related_ids": [ + "4050" + ], + "broader_ids": [ + "2191" + ], + "geo_area_code": null + }, + { + "id": "1045", + "label": "UN Population Fund", + "alt_labels": [ + "UNFPA", + "United Nations Fund for Population Activities", + "United Nations Population Fund" + ], + "related_ids": [], + "broader_ids": [ + "4365" + ], + "geo_area_code": null + }, + { + "id": "1046", + "label": "civil service", + "alt_labels": [], + "related_ids": [ + "3564", + "533", + "557", + "5638", + "5679" + ], + "broader_ids": [ + "2166" + ], + "geo_area_code": null + }, + { + "id": "1047", + "label": "civil servant", + "alt_labels": [ + "senior official" + ], + "related_ids": [ + "1048", + "3573", + "5639", + "8416" + ], + "broader_ids": [ + "1046" + ], + "geo_area_code": null + }, + { + "id": "1048", + "label": "European official", + "alt_labels": [ + "EC basic post", + "EC staff", + "EU official", + "official of the EU", + "official of the European Union", + "staff of the EC" + ], + "related_ids": [ + "1047", + "3573", + "3979", + "4557", + "c_e9845504" + ], + "broader_ids": [ + "5130" + ], + "geo_area_code": null + }, + { + "id": "1049", + "label": "inshore grounds", + "alt_labels": [], + "related_ids": [ + "2304", + "3043" + ], + "broader_ids": [ + "1050" + ], + "geo_area_code": null + }, + { + "id": "105", + "label": "parental leave", + "alt_labels": [], + "related_ids": [ + "7981" + ], + "broader_ids": [ + "108" + ], + "geo_area_code": null + }, + { + "id": "1050", + "label": "sea-bed", + "alt_labels": [ + "deep sea-bed" + ], + "related_ids": [ + "2114", + "3137", + "3531", + "940" + ], + "broader_ids": [ + "5742" + ], + "geo_area_code": null + }, + { + "id": "1051", + "label": "foundation", + "alt_labels": [], + "related_ids": [ + "501" + ], + "broader_ids": [ + "4204" + ], + "geo_area_code": null + }, + { + "id": "1052", + "label": "fund (EU)", + "alt_labels": [ + "EC fund" + ], + "related_ids": [ + "4055", + "8549", + "862", + "973" + ], + "broader_ids": [ + "1460" + ], + "geo_area_code": null + }, + { + "id": "1054", + "label": "common fund", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4828" + ], + "geo_area_code": null + }, + { + "id": "1055", + "label": "goodwill", + "alt_labels": [], + "related_ids": [ + "1307", + "524", + "7926", + "c_fa8f51b0" + ], + "broader_ids": [ + "474" + ], + "geo_area_code": null + }, + { + "id": "1056", + "label": "European Regional Development Fund", + "alt_labels": [ + "EC regional fund", + "ERDF", + "ERDF aid" + ], + "related_ids": [ + "2407", + "2516", + "6061", + "976", + "c_2a1a9fdc" + ], + "broader_ids": [ + "5138" + ], + "geo_area_code": null + }, + { + "id": "1057", + "label": "working capital", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "55" + ], + "geo_area_code": null + }, + { + "id": "1058", + "label": "European Monetary Fund", + "alt_labels": [ + "EC Monetary Fund", + "EMF" + ], + "related_ids": [], + "broader_ids": [ + "4370" + ], + "geo_area_code": null + }, + { + "id": "1059", + "label": "cast-iron", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3824" + ], + "geo_area_code": null + }, + { + "id": "106", + "label": "paid leave", + "alt_labels": [ + "annual leave" + ], + "related_ids": [ + "108", + "4634" + ], + "broader_ids": [ + "4435" + ], + "geo_area_code": null + }, + { + "id": "1060", + "label": "drilling", + "alt_labels": [ + "well drilling" + ], + "related_ids": [ + "1061" + ], + "broader_ids": [ + "3753" + ], + "geo_area_code": null + }, + { + "id": "1061", + "label": "offshore drilling", + "alt_labels": [], + "related_ids": [ + "1060", + "1274", + "3687" + ], + "broader_ids": [ + "1414" + ], + "geo_area_code": null + }, + { + "id": "1062", + "label": "adjournment", + "alt_labels": [ + "adjournment motion", + "nuk\u0117limas" + ], + "related_ids": [], + "broader_ids": [ + "2703" + ], + "geo_area_code": null + }, + { + "id": "1063", + "label": "forest", + "alt_labels": [ + "woodland" + ], + "related_ids": [ + "2396", + "2754", + "4336" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1064", + "label": "classified forest", + "alt_labels": [ + "protected forest" + ], + "related_ids": [ + "4801" + ], + "broader_ids": [ + "1063" + ], + "geo_area_code": null + }, + { + "id": "1065", + "label": "high forest", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1063" + ], + "geo_area_code": null + }, + { + "id": "1066", + "label": "coppiced woodland", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1063" + ], + "geo_area_code": null + }, + { + "id": "1067", + "label": "natural forest", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1063" + ], + "geo_area_code": null + }, + { + "id": "1068", + "label": "forest plantation", + "alt_labels": [ + "planted forest" + ], + "related_ids": [ + "2410" + ], + "broader_ids": [ + "1063" + ], + "geo_area_code": null + }, + { + "id": "1069", + "label": "customs formalities", + "alt_labels": [ + "customs clearance", + "customs declaration" + ], + "related_ids": [ + "5070" + ], + "broader_ids": [ + "3156" + ], + "geo_area_code": null + }, + { + "id": "107", + "label": "unpaid leave", + "alt_labels": [ + "leave on personal grounds" + ], + "related_ids": [], + "broader_ids": [ + "4435" + ], + "geo_area_code": null + }, + { + "id": "1070", + "label": "management training", + "alt_labels": [], + "related_ids": [ + "1154" + ], + "broader_ids": [ + "795" + ], + "geo_area_code": null + }, + { + "id": "1071", + "label": "teacher training", + "alt_labels": [ + "pedagogical training" + ], + "related_ids": [ + "777" + ], + "broader_ids": [ + "795" + ], + "geo_area_code": null + }, + { + "id": "1072", + "label": "price formation", + "alt_labels": [ + "pricing mechanism" + ], + "related_ids": [ + "2128", + "2656", + "75" + ], + "broader_ids": [ + "2489" + ], + "geo_area_code": null + }, + { + "id": "1073", + "label": "in-service training", + "alt_labels": [ + "further training and instruction", + "on-the-job training", + "staff training" + ], + "related_ids": [ + "780" + ], + "broader_ids": [ + "1074" + ], + "geo_area_code": null + }, + { + "id": "1074", + "label": "vocational training", + "alt_labels": [ + "distance training", + "e-training", + "manpower training", + "pre-vocational training", + "sandwich training" + ], + "related_ids": [ + "2868", + "2904", + "5149", + "5342", + "5642", + "5864", + "6099", + "674", + "7195", + "795", + "c_74b0823c", + "c_859ae4e1", + "c_e9845504" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1075", + "label": "currency adjustment", + "alt_labels": [], + "related_ids": [ + "4671" + ], + "broader_ids": [ + "2510" + ], + "geo_area_code": null + }, + { + "id": "1076", + "label": "form", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "486" + ], + "geo_area_code": null + }, + { + "id": "1077", + "label": "furnace", + "alt_labels": [ + "S.M. steel furnace", + "arc furnace", + "electric furnace", + "open hearth furnace" + ], + "related_ids": [ + "3831", + "5503" + ], + "broader_ids": [ + "5615" + ], + "geo_area_code": null + }, + { + "id": "1078", + "label": "supplier", + "alt_labels": [], + "related_ids": [ + "2292" + ], + "broader_ids": [ + "474" + ], + "geo_area_code": null + }, + { + "id": "1079", + "label": "provision of documents", + "alt_labels": [ + "document loan", + "furnishing of documents", + "lending of documents", + "sending of documents", + "supplying of documents", + "transmission of documents" + ], + "related_ids": [ + "3404", + "486" + ], + "broader_ids": [ + "494" + ], + "geo_area_code": null + }, + { + "id": "108", + "label": "leave on social grounds", + "alt_labels": [], + "related_ids": [ + "106", + "2501" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1080", + "label": "legal expenses", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1538" + ], + "geo_area_code": null + }, + { + "id": "1081", + "label": "school fees", + "alt_labels": [ + "minerval (Belgium)", + "school expenses", + "study fees" + ], + "related_ids": [ + "269" + ], + "broader_ids": [ + "4705" + ], + "geo_area_code": null + }, + { + "id": "1082", + "label": "election expenses", + "alt_labels": [], + "related_ids": [ + "1011" + ], + "broader_ids": [ + "5097" + ], + "geo_area_code": null + }, + { + "id": "1083", + "label": "overheads", + "alt_labels": [ + "administrative expenses", + "entertainment expenses", + "financial expenses", + "general expenses", + "oncost", + "overhead cost", + "running costs" + ], + "related_ids": [], + "broader_ids": [ + "5092" + ], + "geo_area_code": null + }, + { + "id": "1084", + "label": "pharmaceutical expenses", + "alt_labels": [], + "related_ids": [ + "2773" + ], + "broader_ids": [ + "3365" + ], + "geo_area_code": null + }, + { + "id": "1085", + "label": "France", + "alt_labels": [ + "French Republic" + ], + "related_ids": [ + "1088", + "c_fd848a9f" + ], + "broader_ids": [ + "122", + "2106", + "2200", + "5283", + "913" + ], + "geo_area_code": "FRA" + }, + { + "id": "1086", + "label": "French overseas department and region", + "alt_labels": [ + "French Overseas Department" + ], + "related_ids": [ + "1088", + "391" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1087", + "label": "French overseas collectivity", + "alt_labels": [ + "French Overseas Territories", + "overseas territories of the French Republic", + "territorial collectivities of the French Republic" + ], + "related_ids": [ + "2296" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1088", + "label": "regions of France", + "alt_labels": [], + "related_ids": [ + "1085", + "1086" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1089", + "label": "Franche-Comt\u00e9", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "c_f2f1fb47" + ], + "geo_area_code": null + }, + { + "id": "109", + "label": "freezing", + "alt_labels": [], + "related_ids": [ + "2743" + ], + "broader_ids": [ + "132" + ], + "geo_area_code": null + }, + { + "id": "1090", + "label": "franchising", + "alt_labels": [ + "franchise contract" + ], + "related_ids": [], + "broader_ids": [ + "5" + ], + "geo_area_code": null + }, + { + "id": "1091", + "label": "exemption from customs duties", + "alt_labels": [ + "customs franchise", + "duty-free admission", + "duty-free entry", + "exemption from duty", + "exemption from import duty", + "travellers' allowance", + "travellers' tax-free allowance" + ], + "related_ids": [ + "5368", + "5647" + ], + "broader_ids": [ + "2519" + ], + "geo_area_code": null + }, + { + "id": "1092", + "label": "fraud", + "alt_labels": [ + "elimination of fraud", + "fight against fraud", + "fraud prevention" + ], + "related_ids": [ + "167", + "3169", + "3948", + "5648", + "7201", + "7365" + ], + "broader_ids": [ + "3944" + ], + "geo_area_code": null + }, + { + "id": "1093", + "label": "electoral fraud", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "159" + ], + "geo_area_code": null + }, + { + "id": "1094", + "label": "ALADI", + "alt_labels": [ + "LAFTA", + "LAIA", + "Latin American Free Trade Association", + "Latin American Integration Association" + ], + "related_ids": [ + "1105", + "2275", + "4789" + ], + "broader_ids": [ + "2190" + ], + "geo_area_code": null + }, + { + "id": "1095", + "label": "tax evasion", + "alt_labels": [], + "related_ids": [ + "1021", + "924" + ], + "broader_ids": [ + "3951" + ], + "geo_area_code": null + }, + { + "id": "1098", + "label": "school attendance", + "alt_labels": [ + "absence from school", + "attendance at school", + "class attendance", + "school absence", + "truancy" + ], + "related_ids": [ + "5266" + ], + "broader_ids": [ + "4705" + ], + "geo_area_code": null + }, + { + "id": "1099", + "label": "freight rate", + "alt_labels": [ + "cost of shipment", + "delivery free at destination", + "freight tariff rate", + "transport rate" + ], + "related_ids": [ + "1684", + "4509" + ], + "broader_ids": [ + "4379" + ], + "geo_area_code": null + }, + { + "id": "11", + "label": "international trade", + "alt_labels": [ + "world trade" + ], + "related_ids": [ + "1807", + "3228", + "5765", + "6062", + "653", + "6923", + "76", + "c_cd74cde9" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "110", + "label": "conglomerate", + "alt_labels": [], + "related_ids": [ + "1592" + ], + "broader_ids": [ + "69" + ], + "geo_area_code": null + }, + { + "id": "1100", + "label": "Friuli-Venezia Giulia", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1520" + ], + "geo_area_code": null + }, + { + "id": "1101", + "label": "Friesland", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2288" + ], + "geo_area_code": null + }, + { + "id": "1102", + "label": "cheese", + "alt_labels": [], + "related_ids": [ + "1113" + ], + "broader_ids": [ + "2763" + ], + "geo_area_code": null + }, + { + "id": "1103", + "label": "semi-soft cheese", + "alt_labels": [ + "Cantal", + "Reblochon", + "Tomme de Savoie" + ], + "related_ids": [], + "broader_ids": [ + "1102" + ], + "geo_area_code": null + }, + { + "id": "1104", + "label": "hard cheese", + "alt_labels": [ + "Appenzell", + "Cheddar", + "Edam", + "Emmenthal", + "Gouda", + "Grana Padano", + "Gruyere", + "Parmesan", + "Parmigiano Reggiano", + "Sbrinz", + "long-keeping cheese" + ], + "related_ids": [], + "broader_ids": [ + "1102" + ], + "geo_area_code": null + }, + { + "id": "1105", + "label": "ALADI countries", + "alt_labels": [ + "LAFTA countries" + ], + "related_ids": [ + "1094" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1106", + "label": "soft cheese", + "alt_labels": [ + "Brie", + "Camembert", + "Chaource", + "Coulommiers", + "Livarot", + "Munster cheese", + "Neufch\u00e2tel", + "Pont-l'Ev\u00eaque", + "Saint Marcellin" + ], + "related_ids": [], + "broader_ids": [ + "1102" + ], + "geo_area_code": null + }, + { + "id": "1107", + "label": "blue-veined cheese", + "alt_labels": [ + "Bresse blue", + "Danish blue", + "Roquefort", + "Stilton", + "blue cheese" + ], + "related_ids": [], + "broader_ids": [ + "1102" + ], + "geo_area_code": null + }, + { + "id": "1108", + "label": "sheep's milk cheese", + "alt_labels": [], + "related_ids": [ + "5034" + ], + "broader_ids": [ + "1102" + ], + "geo_area_code": null + }, + { + "id": "1109", + "label": "goats\u2019 milk cheese", + "alt_labels": [], + "related_ids": [ + "5252" + ], + "broader_ids": [ + "1102" + ], + "geo_area_code": null + }, + { + "id": "111", + "label": "Congo", + "alt_labels": [ + "Congo Brazzaville", + "French Congo", + "Republic of the Congo" + ], + "related_ids": [], + "broader_ids": [ + "302", + "4587", + "5083" + ], + "geo_area_code": "COG" + }, + { + "id": "1110", + "label": "cows\u2019 milk cheese", + "alt_labels": [], + "related_ids": [ + "4639" + ], + "broader_ids": [ + "1102" + ], + "geo_area_code": null + }, + { + "id": "1111", + "label": "processed cheese", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1102" + ], + "geo_area_code": null + }, + { + "id": "1112", + "label": "fresh cheese", + "alt_labels": [ + "cottage cheese", + "cream cheese" + ], + "related_ids": [ + "5232" + ], + "broader_ids": [ + "1102" + ], + "geo_area_code": null + }, + { + "id": "1113", + "label": "cheese factory", + "alt_labels": [], + "related_ids": [ + "1102" + ], + "broader_ids": [ + "1360" + ], + "geo_area_code": null + }, + { + "id": "1114", + "label": "frontier", + "alt_labels": [], + "related_ids": [ + "1213", + "3064", + "502", + "5540" + ], + "broader_ids": [ + "581" + ], + "geo_area_code": null + }, + { + "id": "1115", + "label": "fruit", + "alt_labels": [], + "related_ids": [ + "1552", + "2625", + "2730", + "322" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1116", + "label": "nut", + "alt_labels": [ + "almond", + "chestnut", + "coconut", + "hazel nut", + "pistachio", + "walnut" + ], + "related_ids": [], + "broader_ids": [ + "1115" + ], + "geo_area_code": null + }, + { + "id": "1117", + "label": "stone fruit", + "alt_labels": [ + "apricot", + "cherry", + "mirabelle", + "nectarine", + "peach", + "plum" + ], + "related_ids": [ + "2136" + ], + "broader_ids": [ + "1115" + ], + "geo_area_code": null + }, + { + "id": "1118", + "label": "pip fruit", + "alt_labels": [ + "apple", + "fig", + "pear", + "pome fruit", + "quince" + ], + "related_ids": [], + "broader_ids": [ + "1115" + ], + "geo_area_code": null + }, + { + "id": "1119", + "label": "fresh fruit", + "alt_labels": [], + "related_ids": [ + "2625", + "5232" + ], + "broader_ids": [ + "1115" + ], + "geo_area_code": null + }, + { + "id": "112", + "label": "short-term economic prospects", + "alt_labels": [ + "economic trend" + ], + "related_ids": [ + "2497" + ], + "broader_ids": [ + "5146" + ], + "geo_area_code": null + }, + { + "id": "1120", + "label": "tropical fruit", + "alt_labels": [ + "avocado", + "banana", + "date", + "guava", + "kiwifruit", + "mango", + "papaw", + "pineapple" + ], + "related_ids": [ + "2418", + "329" + ], + "broader_ids": [ + "1115" + ], + "geo_area_code": null + }, + { + "id": "1122", + "label": "merger", + "alt_labels": [ + "amalgamation" + ], + "related_ids": [ + "4492" + ], + "broader_ids": [ + "69" + ], + "geo_area_code": null + }, + { + "id": "1123", + "label": "nuclear fusion", + "alt_labels": [ + "thermonuclear fusion" + ], + "related_ids": [ + "1531", + "4109", + "753" + ], + "broader_ids": [ + "4422" + ], + "geo_area_code": null + }, + { + "id": "1124", + "label": "Gabon", + "alt_labels": [ + "Gabonese Republic" + ], + "related_ids": [], + "broader_ids": [ + "302", + "4587", + "5083", + "c_b2c019c8" + ], + "geo_area_code": "GAB" + }, + { + "id": "1125", + "label": "Albania", + "alt_labels": [ + "Republic of Albania" + ], + "related_ids": [], + "broader_ids": [ + "122", + "4690", + "5087", + "5781", + "8278", + "914" + ], + "geo_area_code": "ALB" + }, + { + "id": "1127", + "label": "Galicia", + "alt_labels": [ + "Autonomous Community of Galicia" + ], + "related_ids": [], + "broader_ids": [ + "864" + ], + "geo_area_code": null + }, + { + "id": "1128", + "label": "Gambia", + "alt_labels": [ + "Republic of the Gambia" + ], + "related_ids": [], + "broader_ids": [ + "351", + "5083", + "5302", + "c_b2c019c8" + ], + "geo_area_code": "GMB" + }, + { + "id": "1129", + "label": "guarantee", + "alt_labels": [ + "bail", + "pledge" + ], + "related_ids": [], + "broader_ids": [ + "164" + ], + "geo_area_code": null + }, + { + "id": "113", + "label": "Connacht", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1506" + ], + "geo_area_code": null + }, + { + "id": "1130", + "label": "credit guarantee", + "alt_labels": [], + "related_ids": [ + "1281", + "3373", + "3942", + "5866" + ], + "broader_ids": [ + "2495" + ], + "geo_area_code": null + }, + { + "id": "1131", + "label": "guaranteed income", + "alt_labels": [ + "guaranteed resources" + ], + "related_ids": [ + "3357" + ], + "broader_ids": [ + "2490" + ], + "geo_area_code": null + }, + { + "id": "1132", + "label": "investment protection", + "alt_labels": [ + "investment guarantee" + ], + "related_ids": [ + "5866" + ], + "broader_ids": [ + "2463" + ], + "geo_area_code": null + }, + { + "id": "1133", + "label": "child care", + "alt_labels": [ + "baby-sitting", + "child minding", + "children's home", + "cr\u00e8che", + "day nursery", + "kindergarten", + "nursery" + ], + "related_ids": [ + "3916", + "758" + ], + "broader_ids": [ + "2517" + ], + "geo_area_code": null + }, + { + "id": "1134", + "label": "alcohol", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5018" + ], + "geo_area_code": null + }, + { + "id": "1135", + "label": "wastage", + "alt_labels": [], + "related_ids": [ + "1709", + "4880", + "c_fa0acac6" + ], + "broader_ids": [ + "139" + ], + "geo_area_code": null + }, + { + "id": "1136", + "label": "GATT", + "alt_labels": [ + "General Agreement on Tariffs and Trade" + ], + "related_ids": [ + "2450", + "2590", + "5765", + "6007" + ], + "broader_ids": [ + "1567" + ], + "geo_area_code": null + }, + { + "id": "1137", + "label": "political left", + "alt_labels": [ + "left" + ], + "related_ids": [], + "broader_ids": [ + "4436" + ], + "geo_area_code": null + }, + { + "id": "1138", + "label": "leftism", + "alt_labels": [], + "related_ids": [ + "955" + ], + "broader_ids": [ + "1282" + ], + "geo_area_code": null + }, + { + "id": "1139", + "label": "gas", + "alt_labels": [ + "blast-furnace gas", + "coke-oven gas", + "gaseous fuel" + ], + "related_ids": [ + "1141", + "3768", + "3775", + "5440", + "7395" + ], + "broader_ids": [ + "6043" + ], + "geo_area_code": null + }, + { + "id": "114", + "label": "Council of the European Union", + "alt_labels": [ + "Council of European Ministers", + "Council of the European Communities", + "Council of the Union", + "EC Council", + "EU Council", + "European Union Council" + ], + "related_ids": [ + "2578", + "2579", + "2580", + "3644", + "445228" + ], + "broader_ids": [ + "1451" + ], + "geo_area_code": null + }, + { + "id": "1140", + "label": "combustion gases", + "alt_labels": [ + "exhaust fumes" + ], + "related_ids": [ + "3136", + "3159", + "4654", + "5262", + "5593" + ], + "broader_ids": [ + "2522" + ], + "geo_area_code": null + }, + { + "id": "1141", + "label": "natural gas", + "alt_labels": [], + "related_ids": [ + "1139", + "2716", + "3741", + "4900", + "6045" + ], + "broader_ids": [ + "1274" + ], + "geo_area_code": null + }, + { + "id": "1142", + "label": "gas pipeline", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4528" + ], + "geo_area_code": null + }, + { + "id": "1143", + "label": "chemical alcohol", + "alt_labels": [ + "aldehyde", + "diethylene glycol", + "ethylene glycol", + "fatty alcohol", + "glycerine" + ], + "related_ids": [ + "1893", + "3738", + "3739", + "890" + ], + "broader_ids": [ + "3810" + ], + "geo_area_code": null + }, + { + "id": "1144", + "label": "set-aside", + "alt_labels": [ + "abandonment premium", + "premium for cessation of production" + ], + "related_ids": [ + "1521" + ], + "broader_ids": [ + "2477" + ], + "geo_area_code": null + }, + { + "id": "1145", + "label": "civil engineering", + "alt_labels": [], + "related_ids": [ + "2206" + ], + "broader_ids": [ + "4565" + ], + "geo_area_code": null + }, + { + "id": "1146", + "label": "heifer", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5034" + ], + "geo_area_code": null + }, + { + "id": "1147", + "label": "geochemistry", + "alt_labels": [], + "related_ids": [ + "5966" + ], + "broader_ids": [ + "1151" + ], + "geo_area_code": null + }, + { + "id": "1148", + "label": "geography", + "alt_labels": [], + "related_ids": [ + "c_7a168de0" + ], + "broader_ids": [ + "3952" + ], + "geo_area_code": null + }, + { + "id": "1149", + "label": "economic geography", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1148" + ], + "geo_area_code": null + }, + { + "id": "115", + "label": "board of directors", + "alt_labels": [ + "BOD", + "administrative board", + "executive board" + ], + "related_ids": [ + "1154", + "4190", + "5762" + ], + "broader_ids": [ + "4300" + ], + "geo_area_code": null + }, + { + "id": "1150", + "label": "political geography", + "alt_labels": [], + "related_ids": [ + "3947", + "435265" + ], + "broader_ids": [ + "1148" + ], + "geo_area_code": null + }, + { + "id": "1151", + "label": "geology", + "alt_labels": [ + "geological study", + "geological survey", + "tectonics" + ], + "related_ids": [], + "broader_ids": [ + "3952" + ], + "geo_area_code": null + }, + { + "id": "1152", + "label": "geophysics", + "alt_labels": [ + "geophysical study", + "geophysical survey" + ], + "related_ids": [ + "3946" + ], + "broader_ids": [ + "1151" + ], + "geo_area_code": null + }, + { + "id": "1153", + "label": "gerontology", + "alt_labels": [ + "geriatrics" + ], + "related_ids": [ + "2333", + "6233" + ], + "broader_ids": [ + "5881" + ], + "geo_area_code": null + }, + { + "id": "1154", + "label": "management", + "alt_labels": [ + "leadership" + ], + "related_ids": [ + "1070", + "115", + "896" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1155", + "label": "management accounting", + "alt_labels": [], + "related_ids": [ + "1164", + "2902", + "54", + "822", + "c_1e7f033d" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1156", + "label": "business management", + "alt_labels": [ + "company administration" + ], + "related_ids": [ + "1427", + "447", + "4703", + "644", + "7942", + "7948", + "813", + "c_4b8a95a7" + ], + "broader_ids": [ + "1154" + ], + "geo_area_code": null + }, + { + "id": "1157", + "label": "area management", + "alt_labels": [ + "planning of space" + ], + "related_ids": [ + "4619", + "861" + ], + "broader_ids": [ + "2470" + ], + "geo_area_code": null + }, + { + "id": "1158", + "label": "waste management", + "alt_labels": [ + "landfill site", + "rubbish dump", + "waste treatment" + ], + "related_ids": [ + "1709", + "343", + "5336", + "c_b71ca500" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1159", + "label": "fishery management", + "alt_labels": [ + "fishery planning", + "fishery system", + "fishing management", + "fishing system", + "management of fish resources" + ], + "related_ids": [ + "1160" + ], + "broader_ids": [ + "2476" + ], + "geo_area_code": null + }, + { + "id": "116", + "label": "Association Council (EU)", + "alt_labels": [ + "Association Committee", + "EC Association Council", + "cooperation council" + ], + "related_ids": [ + "1663" + ], + "broader_ids": [ + "5763" + ], + "geo_area_code": null + }, + { + "id": "1160", + "label": "management of resources", + "alt_labels": [], + "related_ids": [ + "1159", + "3549" + ], + "broader_ids": [ + "2470" + ], + "geo_area_code": null + }, + { + "id": "1161", + "label": "logistics", + "alt_labels": [], + "related_ids": [ + "276" + ], + "broader_ids": [ + "1154" + ], + "geo_area_code": null + }, + { + "id": "1162", + "label": "alcoholism", + "alt_labels": [ + "alcohol abuse", + "drink problem" + ], + "related_ids": [ + "4033", + "4047", + "5018", + "c_058697c2", + "c_1bedfedb" + ], + "broader_ids": [ + "2690" + ], + "geo_area_code": null + }, + { + "id": "1163", + "label": "personnel administration", + "alt_labels": [ + "management of human resources", + "personnel management", + "staff administration", + "staff management", + "staff turnover" + ], + "related_ids": [ + "1427", + "7926", + "7948" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1164", + "label": "financial management", + "alt_labels": [], + "related_ids": [ + "1155", + "2469", + "4187" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1165", + "label": "management planning", + "alt_labels": [ + "management development", + "strategic planning" + ], + "related_ids": [ + "1955" + ], + "broader_ids": [ + "4413" + ], + "geo_area_code": null + }, + { + "id": "1166", + "label": "Ghana", + "alt_labels": [ + "Republic of Ghana" + ], + "related_ids": [], + "broader_ids": [ + "351", + "5083", + "5302" + ], + "geo_area_code": "GHA" + }, + { + "id": "1167", + "label": "game animal", + "alt_labels": [ + "game bird" + ], + "related_ids": [ + "2954", + "5722" + ], + "broader_ids": [ + "2711" + ], + "geo_area_code": null + }, + { + "id": "1168", + "label": "Gibraltar", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3778", + "912" + ], + "geo_area_code": "GIB" + }, + { + "id": "1169", + "label": "ice", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "597" + ], + "geo_area_code": null + }, + { + "id": "117", + "label": "adoption of a child", + "alt_labels": [ + "adopted descendant", + "adopted family" + ], + "related_ids": [ + "3302" + ], + "broader_ids": [ + "540" + ], + "geo_area_code": null + }, + { + "id": "1170", + "label": "glucose", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4314" + ], + "geo_area_code": null + }, + { + "id": "1171", + "label": "gulf", + "alt_labels": [ + "bay" + ], + "related_ids": [], + "broader_ids": [ + "3992" + ], + "geo_area_code": null + }, + { + "id": "1172", + "label": "government", + "alt_labels": [ + "government structure", + "national government" + ], + "related_ids": [ + "1601", + "3260", + "379" + ], + "broader_ids": [ + "3062" + ], + "geo_area_code": null + }, + { + "id": "1173", + "label": "government-in-exile", + "alt_labels": [], + "related_ids": [ + "1601" + ], + "broader_ids": [ + "3025" + ], + "geo_area_code": null + }, + { + "id": "1174", + "label": "rebel government", + "alt_labels": [ + "revolutionary government" + ], + "related_ids": [ + "1601" + ], + "broader_ids": [ + "3025" + ], + "geo_area_code": null + }, + { + "id": "1175", + "label": "food fat", + "alt_labels": [ + "edible fat" + ], + "related_ids": [ + "4860" + ], + "broader_ids": [ + "239" + ], + "geo_area_code": null + }, + { + "id": "1176", + "label": "industrial fat", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "239" + ], + "geo_area_code": null + }, + { + "id": "1177", + "label": "Alentejo", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2564" + ], + "geo_area_code": null + }, + { + "id": "1178", + "label": "large business", + "alt_labels": [ + "large undertaking" + ], + "related_ids": [], + "broader_ids": [ + "445" + ], + "geo_area_code": null + }, + { + "id": "1179", + "label": "large holding", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4337" + ], + "geo_area_code": null + }, + { + "id": "118", + "label": "Council for Cultural Cooperation", + "alt_labels": [ + "CCC", + "CDCULT", + "CDED", + "CDESR", + "CDPAT", + "Steering Committee for Cultural Heritage", + "Steering Committee for Culture", + "Steering Committee for Education", + "Steering Committee for Higher Education and Research" + ], + "related_ids": [], + "broader_ids": [ + "121" + ], + "geo_area_code": null + }, + { + "id": "1180", + "label": "Greater Antilles", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5259" + ], + "geo_area_code": null + }, + { + "id": "1181", + "label": "free medical care", + "alt_labels": [], + "related_ids": [ + "2517" + ], + "broader_ids": [ + "5921" + ], + "geo_area_code": null + }, + { + "id": "1182", + "label": "Greece", + "alt_labels": [ + "Hellenic Republic" + ], + "related_ids": [ + "1184" + ], + "broader_ids": [ + "122", + "2106", + "2200", + "5283", + "912" + ], + "geo_area_code": "GRC" + }, + { + "id": "1183", + "label": "Central Greece", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1184" + ], + "geo_area_code": null + }, + { + "id": "1184", + "label": "regions of Greece", + "alt_labels": [], + "related_ids": [ + "1182" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1185", + "label": "Grenada", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2119", + "2362", + "4069", + "5083", + "5265", + "c_b2c019c8" + ], + "geo_area_code": "GRD" + }, + { + "id": "1186", + "label": "strike", + "alt_labels": [ + "sit-in strike", + "sympathy strike", + "wildcat strike", + "working to rule" + ], + "related_ids": [ + "533", + "5654" + ], + "broader_ids": [ + "98" + ], + "geo_area_code": null + }, + { + "id": "1187", + "label": "Algarve", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2564" + ], + "geo_area_code": null + }, + { + "id": "1188", + "label": "Greenland", + "alt_labels": [], + "related_ids": [ + "337" + ], + "broader_ids": [ + "130", + "1615" + ], + "geo_area_code": "GRL" + }, + { + "id": "1189", + "label": "Groningen", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2288" + ], + "geo_area_code": null + }, + { + "id": "1190", + "label": "Andean Community", + "alt_labels": [ + "Andean Group", + "Andean Pact", + "Cartagena Agreement" + ], + "related_ids": [ + "1191" + ], + "broader_ids": [ + "2190" + ], + "geo_area_code": null + }, + { + "id": "1191", + "label": "Andean Community countries", + "alt_labels": [ + "Andean Group countries" + ], + "related_ids": [ + "1190" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1192", + "label": "interest group", + "alt_labels": [ + "lobby", + "pressure group" + ], + "related_ids": [ + "1197", + "2001", + "3255", + "4091", + "7413", + "c_4254375b" + ], + "broader_ids": [ + "4704" + ], + "geo_area_code": null + }, + { + "id": "1193", + "label": "group of companies", + "alt_labels": [ + "group of undertakings" + ], + "related_ids": [ + "802" + ], + "broader_ids": [ + "69" + ], + "geo_area_code": null + }, + { + "id": "1194", + "label": "Group of Ten", + "alt_labels": [ + "G-10" + ], + "related_ids": [ + "1016" + ], + "broader_ids": [ + "2188" + ], + "geo_area_code": null + }, + { + "id": "1195", + "label": "ADR agreement", + "alt_labels": [ + "European agreement concerning the international carriage of dangerous goods by road", + "European agreement relating to the international transportation of dangerous goods by road" + ], + "related_ids": [ + "3681" + ], + "broader_ids": [ + "4533" + ], + "geo_area_code": null + }, + { + "id": "1196", + "label": "Algeria", + "alt_labels": [ + "People\u2019s Democratic Republic of Algeria" + ], + "related_ids": [], + "broader_ids": [ + "1658", + "1734", + "2148", + "5780", + "c_6e703074" + ], + "geo_area_code": "DZA" + }, + { + "id": "1197", + "label": "political group", + "alt_labels": [ + "parliamentary group" + ], + "related_ids": [ + "1192", + "1471", + "1749", + "2258", + "443167" + ], + "broader_ids": [ + "53" + ], + "geo_area_code": null + }, + { + "id": "1198", + "label": "human rights movement", + "alt_labels": [ + "human rights group" + ], + "related_ids": [ + "1664", + "584" + ], + "broader_ids": [ + "2001" + ], + "geo_area_code": null + }, + { + "id": "1199", + "label": "buying group", + "alt_labels": [ + "purchasing association" + ], + "related_ids": [ + "4983" + ], + "broader_ids": [ + "6" + ], + "geo_area_code": null + }, + { + "id": "12", + "label": "accession to the European Union", + "alt_labels": [ + "EU accession", + "accession to the Community", + "act of accession", + "application for accession", + "consequence of accession", + "request for accession" + ], + "related_ids": [ + "6725" + ], + "broader_ids": [ + "4057" + ], + "geo_area_code": null + }, + { + "id": "120", + "label": "Asian and Pacific Council", + "alt_labels": [ + "ASPAC" + ], + "related_ids": [], + "broader_ids": [ + "2172" + ], + "geo_area_code": null + }, + { + "id": "1200", + "label": "Economic Interest Grouping", + "alt_labels": [ + "EIG" + ], + "related_ids": [ + "1201", + "215" + ], + "broader_ids": [ + "4189" + ], + "geo_area_code": null + }, + { + "id": "1201", + "label": "producer organisation", + "alt_labels": [ + "producer's group", + "producers' organisation" + ], + "related_ids": [ + "1200", + "2709", + "2983", + "803" + ], + "broader_ids": [ + "2477" + ], + "geo_area_code": null + }, + { + "id": "1202", + "label": "ethnic group", + "alt_labels": [ + "ethnic minority" + ], + "related_ids": [ + "3910", + "5528", + "5799", + "6394", + "7197", + "892" + ], + "broader_ids": [ + "3487" + ], + "geo_area_code": null + }, + { + "id": "1204", + "label": "algae", + "alt_labels": [ + "seaweed" + ], + "related_ids": [ + "2320", + "2718", + "6787", + "916" + ], + "broader_ids": [ + "2411" + ], + "geo_area_code": null + }, + { + "id": "1205", + "label": "linguistic group", + "alt_labels": [ + "English-speaking areas", + "English-speaking countries", + "French-speaking areas", + "French-speaking countries", + "German-speaking countries", + "Portuguese-speaking areas", + "Spanish-speaking areas", + "language minority", + "linguistic area", + "linguistic minority" + ], + "related_ids": [ + "456", + "7941" + ], + "broader_ids": [ + "3487" + ], + "geo_area_code": null + }, + { + "id": "1206", + "label": "groat", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2729" + ], + "geo_area_code": null + }, + { + "id": "1207", + "label": "Guadeloupe", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1086", + "2032" + ], + "geo_area_code": "GLP" + }, + { + "id": "1208", + "label": "Guatemala", + "alt_labels": [ + "Republic of Guatemala" + ], + "related_ids": [], + "broader_ids": [ + "1606", + "1844", + "2117", + "2119", + "4069" + ], + "geo_area_code": "GTM" + }, + { + "id": "1209", + "label": "Gelderland", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2288" + ], + "geo_area_code": null + }, + { + "id": "121", + "label": "Council of Europe", + "alt_labels": [], + "related_ids": [ + "122", + "3472", + "5395" + ], + "broader_ids": [ + "2187" + ], + "geo_area_code": null + }, + { + "id": "1210", + "label": "war", + "alt_labels": [ + "armed conflict" + ], + "related_ids": [ + "1211", + "2628", + "306", + "643", + "6627", + "c_505c95bd", + "c_f7430876" + ], + "broader_ids": [ + "99" + ], + "geo_area_code": null + }, + { + "id": "1211", + "label": "civil war", + "alt_labels": [ + "insurrection" + ], + "related_ids": [ + "1210" + ], + "broader_ids": [ + "4730" + ], + "geo_area_code": null + }, + { + "id": "1212", + "label": "war of independence", + "alt_labels": [], + "related_ids": [ + "1346" + ], + "broader_ids": [ + "1210" + ], + "geo_area_code": null + }, + { + "id": "1213", + "label": "border war", + "alt_labels": [], + "related_ids": [ + "1114" + ], + "broader_ids": [ + "1210" + ], + "geo_area_code": null + }, + { + "id": "1214", + "label": "cold war", + "alt_labels": [], + "related_ids": [ + "3223" + ], + "broader_ids": [ + "99" + ], + "geo_area_code": null + }, + { + "id": "1215", + "label": "nuclear war", + "alt_labels": [], + "related_ids": [ + "2595", + "4422" + ], + "broader_ids": [ + "1210" + ], + "geo_area_code": null + }, + { + "id": "1216", + "label": "Guinea", + "alt_labels": [ + "Republic of Guinea" + ], + "related_ids": [], + "broader_ids": [ + "351", + "5083", + "5302" + ], + "geo_area_code": "GIN" + }, + { + "id": "1217", + "label": "Guinea-Bissau", + "alt_labels": [ + "Portuguese Guinea", + "Republic of Guinea-Bissau" + ], + "related_ids": [], + "broader_ids": [ + "351", + "4607", + "5083", + "5302", + "c_b2c019c8" + ], + "geo_area_code": "GNB" + }, + { + "id": "1218", + "label": "Equatorial Guinea", + "alt_labels": [ + "Republic of Equatorial Guinea" + ], + "related_ids": [], + "broader_ids": [ + "302", + "4587", + "5083", + "c_b2c019c8" + ], + "geo_area_code": "GNQ" + }, + { + "id": "1219", + "label": "Guyana", + "alt_labels": [ + "Cooperative Republic of Guyana" + ], + "related_ids": [], + "broader_ids": [ + "1624", + "2119", + "4069", + "5083", + "5265", + "c_b2c019c8" + ], + "geo_area_code": "GUY" + }, + { + "id": "122", + "label": "Council of Europe countries", + "alt_labels": [ + "Countries of the Council of Europe" + ], + "related_ids": [ + "121" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1220", + "label": "French Guiana", + "alt_labels": [ + "Department of French Guiana" + ], + "related_ids": [], + "broader_ids": [ + "1086", + "1624" + ], + "geo_area_code": "GUF" + }, + { + "id": "1221", + "label": "habitat", + "alt_labels": [ + "human habitat", + "human settlement" + ], + "related_ids": [ + "6388" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1222", + "label": "rural habitat", + "alt_labels": [ + "countryside", + "rural environment" + ], + "related_ids": [ + "2558", + "3079", + "4739" + ], + "broader_ids": [ + "1221" + ], + "geo_area_code": null + }, + { + "id": "1223", + "label": "urban habitat", + "alt_labels": [ + "urban environment", + "urban settlement" + ], + "related_ids": [ + "2559", + "4740" + ], + "broader_ids": [ + "1221" + ], + "geo_area_code": null + }, + { + "id": "1224", + "label": "animal feedingstuffs", + "alt_labels": [ + "animal feedstuffs", + "animal fodder", + "animal weaning food", + "feedstuffs", + "milk-replacer feed" + ], + "related_ids": [ + "2412", + "320", + "4857", + "6111", + "6322" + ], + "broader_ids": [ + "1277" + ], + "geo_area_code": null + }, + { + "id": "1225", + "label": "eating habits", + "alt_labels": [ + "vegan", + "vegetarian" + ], + "related_ids": [ + "1268", + "393" + ], + "broader_ids": [ + "47" + ], + "geo_area_code": null + }, + { + "id": "1226", + "label": "purchasing habits", + "alt_labels": [ + "buying habits" + ], + "related_ids": [ + "771" + ], + "broader_ids": [ + "47" + ], + "geo_area_code": null + }, + { + "id": "1227", + "label": "Province of Hainault", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3084" + ], + "geo_area_code": null + }, + { + "id": "1228", + "label": "Haiti", + "alt_labels": [ + "Republic of Haiti" + ], + "related_ids": [], + "broader_ids": [ + "1180", + "2119", + "4069", + "5083", + "5265" + ], + "geo_area_code": "HTI" + }, + { + "id": "1229", + "label": "halogen", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3809" + ], + "geo_area_code": null + }, + { + "id": "123", + "label": "UN Security Council", + "alt_labels": [ + "United Nations Security Council" + ], + "related_ids": [ + "3496" + ], + "broader_ids": [ + "2179" + ], + "geo_area_code": null + }, + { + "id": "1230", + "label": "Hamburg", + "alt_labels": [ + "Hamburg (Free Hanseatic City of)" + ], + "related_ids": [], + "broader_ids": [ + "1329" + ], + "geo_area_code": null + }, + { + "id": "1231", + "label": "disabled person", + "alt_labels": [ + "handicapped person", + "mobility-handicapped person", + "person with limited mobility" + ], + "related_ids": [ + "3364", + "3516", + "4209", + "4559", + "6254", + "6539", + "682", + "688", + "7946", + "825" + ], + "broader_ids": [ + "2517" + ], + "geo_area_code": null + }, + { + "id": "1232", + "label": "customs harmonisation", + "alt_labels": [ + "customs harmonization", + "harmonisation of customs legislation", + "harmonisation of customs procedures" + ], + "related_ids": [ + "2897" + ], + "broader_ids": [ + "2519" + ], + "geo_area_code": null + }, + { + "id": "1233", + "label": "manufactured feedingstuffs", + "alt_labels": [ + "compound feedingstuff", + "industrial feedingstuffs", + "oil cake", + "protein feed" + ], + "related_ids": [ + "2729" + ], + "broader_ids": [ + "1224" + ], + "geo_area_code": null + }, + { + "id": "1234", + "label": "tax harmonisation", + "alt_labels": [ + "harmonisation of tax systems", + "tax harmonization" + ], + "related_ids": [ + "2897" + ], + "broader_ids": [ + "2504" + ], + "geo_area_code": null + }, + { + "id": "1235", + "label": "Upper Normandy", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "c_8331ae25" + ], + "geo_area_code": null + }, + { + "id": "1236", + "label": "Burkina Faso", + "alt_labels": [ + "Upper Volta" + ], + "related_ids": [], + "broader_ids": [ + "351", + "4607", + "5083", + "5302" + ], + "geo_area_code": "BFA" + }, + { + "id": "1237", + "label": "Hawaii", + "alt_labels": [ + "Hawaiian Islands" + ], + "related_ids": [], + "broader_ids": [ + "2546" + ], + "geo_area_code": null + }, + { + "id": "1238", + "label": "helicopter", + "alt_labels": [], + "related_ids": [ + "5660" + ], + "broader_ids": [ + "1033" + ], + "geo_area_code": null + }, + { + "id": "1239", + "label": "Hesse", + "alt_labels": [ + "Hesse (Land)" + ], + "related_ids": [], + "broader_ids": [ + "1329" + ], + "geo_area_code": null + }, + { + "id": "124", + "label": "UN Trusteeship Council", + "alt_labels": [ + "United Nations Trusteeship Council" + ], + "related_ids": [], + "broader_ids": [ + "2179" + ], + "geo_area_code": null + }, + { + "id": "1240", + "label": "baby food", + "alt_labels": [ + "baby foodstuffs", + "food for infants" + ], + "related_ids": [], + "broader_ids": [ + "2736" + ], + "geo_area_code": null + }, + { + "id": "1241", + "label": "summertime", + "alt_labels": [ + "standard summertime" + ], + "related_ids": [], + "broader_ids": [ + "642" + ], + "geo_area_code": null + }, + { + "id": "1242", + "label": "question time", + "alt_labels": [], + "related_ids": [ + "2875" + ], + "broader_ids": [ + "3984" + ], + "geo_area_code": null + }, + { + "id": "1243", + "label": "overtime", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "592" + ], + "geo_area_code": null + }, + { + "id": "1244", + "label": "Hinduism", + "alt_labels": [], + "related_ids": [ + "6734", + "7361" + ], + "broader_ids": [ + "3257" + ], + "geo_area_code": null + }, + { + "id": "1245", + "label": "history", + "alt_labels": [], + "related_ids": [ + "7360", + "c_827bea7d" + ], + "broader_ids": [ + "3956" + ], + "geo_area_code": null + }, + { + "id": "1246", + "label": "histology", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4921" + ], + "geo_area_code": null + }, + { + "id": "1247", + "label": "holding company", + "alt_labels": [ + "management company" + ], + "related_ids": [ + "2264" + ], + "broader_ids": [ + "4189" + ], + "geo_area_code": null + }, + { + "id": "1248", + "label": "South Holland", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2288" + ], + "geo_area_code": null + }, + { + "id": "1249", + "label": "North Holland", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2288" + ], + "geo_area_code": null + }, + { + "id": "125", + "label": "Council of European Municipalities and Regions", + "alt_labels": [ + "CEMR" + ], + "related_ids": [ + "5323" + ], + "broader_ids": [ + "2191" + ], + "geo_area_code": null + }, + { + "id": "1250", + "label": "prepared foodstuff", + "alt_labels": [ + "cooked foodstuff", + "deep-frozen dish", + "food preparation", + "pre-cooked foodstuff" + ], + "related_ids": [ + "1373", + "2782" + ], + "broader_ids": [ + "2736" + ], + "geo_area_code": null + }, + { + "id": "1251", + "label": "homicide", + "alt_labels": [ + "assassination", + "lawful killing", + "manslaughter", + "murder", + "unlawful killing" + ], + "related_ids": [], + "broader_ids": [ + "3943" + ], + "geo_area_code": null + }, + { + "id": "1252", + "label": "approval", + "alt_labels": [ + "COC", + "certificate of compliance", + "certificate of conformity", + "quality certificate", + "quality certification" + ], + "related_ids": [ + "1562", + "5451" + ], + "broader_ids": [ + "2076" + ], + "geo_area_code": null + }, + { + "id": "1253", + "label": "Honduras", + "alt_labels": [ + "Republic of Honduras" + ], + "related_ids": [], + "broader_ids": [ + "1606", + "1844", + "2117", + "2119", + "4069" + ], + "geo_area_code": "HND" + }, + { + "id": "1254", + "label": "Hong Kong", + "alt_labels": [ + "Hong Kong (China)", + "Hong Kong SAR", + "Hong Kong Special Administrative Region", + "Hong Kong Special Administrative Region of the People\u2019s Republic of China" + ], + "related_ids": [], + "broader_ids": [ + "6205", + "956" + ], + "geo_area_code": "HKG" + }, + { + "id": "1255", + "label": "Hungary", + "alt_labels": [ + "Republic of Hungary" + ], + "related_ids": [ + "7879" + ], + "broader_ids": [ + "122", + "2106", + "2200", + "5087", + "5283", + "5655", + "5781", + "914" + ], + "geo_area_code": "HUN" + }, + { + "id": "1256", + "label": "psychiatric institution", + "alt_labels": [ + "psychiatric hospital" + ], + "related_ids": [ + "2855" + ], + "broader_ids": [ + "4116" + ], + "geo_area_code": null + }, + { + "id": "1257", + "label": "work schedule", + "alt_labels": [ + "working hours" + ], + "related_ids": [ + "3116" + ], + "broader_ids": [ + "592" + ], + "geo_area_code": null + }, + { + "id": "1258", + "label": "processed foodstuff", + "alt_labels": [], + "related_ids": [ + "4498" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1259", + "label": "flexible working hours", + "alt_labels": [ + "flexible work schedule", + "flexitime" + ], + "related_ids": [], + "broader_ids": [ + "592" + ], + "geo_area_code": null + }, + { + "id": "126", + "label": "Council of Ministers", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1172" + ], + "geo_area_code": null + }, + { + "id": "1260", + "label": "horticulture", + "alt_labels": [ + "decorative plant" + ], + "related_ids": [ + "2410", + "2411", + "2934", + "328", + "4472" + ], + "broader_ids": [ + "2723" + ], + "geo_area_code": null + }, + { + "id": "1261", + "label": "hops", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2413" + ], + "geo_area_code": null + }, + { + "id": "1262", + "label": "animal oil", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "240" + ], + "geo_area_code": null + }, + { + "id": "1263", + "label": "groundnut oil", + "alt_labels": [], + "related_ids": [ + "2345" + ], + "broader_ids": [ + "1270" + ], + "geo_area_code": null + }, + { + "id": "1264", + "label": "olive oil", + "alt_labels": [], + "related_ids": [ + "2136" + ], + "broader_ids": [ + "1270" + ], + "geo_area_code": null + }, + { + "id": "1265", + "label": "fish oil", + "alt_labels": [], + "related_ids": [ + "2435", + "2732" + ], + "broader_ids": [ + "240" + ], + "geo_area_code": null + }, + { + "id": "1266", + "label": "heavy oil", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2772" + ], + "geo_area_code": null + }, + { + "id": "1267", + "label": "mineral oil", + "alt_labels": [ + "petroleum oil" + ], + "related_ids": [], + "broader_ids": [ + "2772" + ], + "geo_area_code": null + }, + { + "id": "1268", + "label": "nutrition", + "alt_labels": [ + "food" + ], + "related_ids": [ + "1225", + "140", + "393", + "5715", + "6789", + "968", + "c_5a59a5d2" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1269", + "label": "used oil", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "343" + ], + "geo_area_code": null + }, + { + "id": "127", + "label": "adoption of a law by vote", + "alt_labels": [ + "adopted bill", + "adopted text", + "rejection of a bill" + ], + "related_ids": [ + "3494", + "5867" + ], + "broader_ids": [ + "4754" + ], + "geo_area_code": null + }, + { + "id": "1270", + "label": "vegetable oil", + "alt_labels": [ + "castor oil", + "colza oil", + "nut oil", + "palm oil", + "rape-seed oil", + "sesame oil" + ], + "related_ids": [ + "2064", + "2414", + "3724", + "4145", + "6042" + ], + "broader_ids": [ + "241" + ], + "geo_area_code": null + }, + { + "id": "1271", + "label": "oil mill", + "alt_labels": [], + "related_ids": [ + "239", + "2414" + ], + "broader_ids": [ + "1360" + ], + "geo_area_code": null + }, + { + "id": "1272", + "label": "bailiff", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2124" + ], + "geo_area_code": null + }, + { + "id": "1273", + "label": "humanisation of work", + "alt_labels": [ + "humanization of work", + "improvement of working conditions", + "job diversification", + "job enrichment", + "job expansion", + "job rotation", + "quality of life at work" + ], + "related_ids": [ + "4887" + ], + "broader_ids": [ + "855" + ], + "geo_area_code": null + }, + { + "id": "1274", + "label": "hydrocarbon", + "alt_labels": [ + "acetylene", + "benzene", + "butylene", + "ethylene", + "hydrogen carbide", + "isoprene", + "methane", + "olefin", + "orthoxylene", + "paraxylene", + "phenol", + "propylene", + "styrene", + "toluene", + "xylene" + ], + "related_ids": [ + "1061", + "3161", + "3163" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1275", + "label": "hydrogen", + "alt_labels": [], + "related_ids": [ + "2716" + ], + "broader_ids": [ + "3809" + ], + "geo_area_code": null + }, + { + "id": "1276", + "label": "hydrogeology", + "alt_labels": [], + "related_ids": [ + "609" + ], + "broader_ids": [ + "1151" + ], + "geo_area_code": null + }, + { + "id": "1277", + "label": "animal nutrition", + "alt_labels": [ + "feeding of animals", + "nutrition of animals" + ], + "related_ids": [ + "721", + "768" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1278", + "label": "hydrology", + "alt_labels": [ + "hydrography", + "limnology", + "river hydrology" + ], + "related_ids": [ + "1534", + "3535", + "597", + "602" + ], + "broader_ids": [ + "3952" + ], + "geo_area_code": null + }, + { + "id": "128", + "label": "European Council", + "alt_labels": [ + "Conference of the Heads of State or Heads of Government" + ], + "related_ids": [ + "3637" + ], + "broader_ids": [ + "1451" + ], + "geo_area_code": null + }, + { + "id": "1280", + "label": "occupational health", + "alt_labels": [ + "occupational hygiene" + ], + "related_ids": [ + "3885", + "c_6741b0ee" + ], + "broader_ids": [ + "4039" + ], + "geo_area_code": null + }, + { + "id": "1281", + "label": "mortgage", + "alt_labels": [], + "related_ids": [ + "1130", + "3839", + "736" + ], + "broader_ids": [ + "164" + ], + "geo_area_code": null + }, + { + "id": "1282", + "label": "political ideology", + "alt_labels": [ + "political doctrine" + ], + "related_ids": [ + "2258", + "244", + "3947", + "457", + "4704", + "c_9eea2203" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1283", + "label": "AETR agreement", + "alt_labels": [ + "European road transport agreement" + ], + "related_ids": [ + "4519" + ], + "broader_ids": [ + "4533" + ], + "geo_area_code": null + }, + { + "id": "1284", + "label": "human nutrition", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1268" + ], + "geo_area_code": null + }, + { + "id": "1285", + "label": "yam", + "alt_labels": [], + "related_ids": [ + "1607", + "2418" + ], + "broader_ids": [ + "2416" + ], + "geo_area_code": null + }, + { + "id": "1286", + "label": "International Institute for Educational Planning", + "alt_labels": [ + "IIEP" + ], + "related_ids": [], + "broader_ids": [ + "4595" + ], + "geo_area_code": null + }, + { + "id": "1287", + "label": "island", + "alt_labels": [], + "related_ids": [ + "4129" + ], + "broader_ids": [ + "3146" + ], + "geo_area_code": null + }, + { + "id": "1288", + "label": "Ile-de-France", + "alt_labels": [ + "Paris Region" + ], + "related_ids": [], + "broader_ids": [ + "1088" + ], + "geo_area_code": null + }, + { + "id": "1289", + "label": "Guam", + "alt_labels": [ + "Island of Guam", + "Territory of Guam" + ], + "related_ids": [ + "888" + ], + "broader_ids": [ + "1296", + "8366" + ], + "geo_area_code": "GUM" + }, + { + "id": "129", + "label": "Nordic Council", + "alt_labels": [ + "Scandinavian Council" + ], + "related_ids": [ + "130" + ], + "broader_ids": [ + "2187" + ], + "geo_area_code": null + }, + { + "id": "1290", + "label": "Channel Islands", + "alt_labels": [], + "related_ids": [ + "3780" + ], + "broader_ids": [ + "913" + ], + "geo_area_code": null + }, + { + "id": "1291", + "label": "Cayman Islands", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3778", + "5259" + ], + "geo_area_code": "CYM" + }, + { + "id": "1292", + "label": "Caroline Islands", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1903" + ], + "geo_area_code": null + }, + { + "id": "1294", + "label": "Faroe Islands", + "alt_labels": [ + "Faroes" + ], + "related_ids": [ + "337" + ], + "broader_ids": [ + "130", + "911" + ], + "geo_area_code": "FRO" + }, + { + "id": "1295", + "label": "Ionian Islands", + "alt_labels": [ + "Corfu" + ], + "related_ids": [], + "broader_ids": [ + "1184" + ], + "geo_area_code": null + }, + { + "id": "1296", + "label": "Mariana Islands", + "alt_labels": [], + "related_ids": [ + "888" + ], + "broader_ids": [ + "1903" + ], + "geo_area_code": null + }, + { + "id": "1298", + "label": "Turks and Caicos Islands", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3778", + "5259" + ], + "geo_area_code": "TCA" + }, + { + "id": "1299", + "label": "British Virgin Islands", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2024", + "3778" + ], + "geo_area_code": "VGB" + }, + { + "id": "13", + "label": "marketing", + "alt_labels": [ + "marketing campaign", + "marketing policy", + "marketing structure" + ], + "related_ids": [ + "1662", + "3255", + "474", + "6010", + "6752", + "815" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "130", + "label": "Nordic Council countries", + "alt_labels": [ + "Countries of the Nordic Council" + ], + "related_ids": [ + "129" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1300", + "label": "debt reduction", + "alt_labels": [], + "related_ids": [ + "1682" + ], + "broader_ids": [ + "423" + ], + "geo_area_code": null + }, + { + "id": "1301", + "label": "registration of a company", + "alt_labels": [ + "business register", + "company register" + ], + "related_ids": [], + "broader_ids": [ + "150" + ], + "geo_area_code": null + }, + { + "id": "1302", + "label": "immigration", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1909" + ], + "geo_area_code": null + }, + { + "id": "1303", + "label": "parliamentary immunity", + "alt_labels": [], + "related_ids": [ + "6893" + ], + "broader_ids": [ + "2246" + ], + "geo_area_code": null + }, + { + "id": "1304", + "label": "immunology", + "alt_labels": [], + "related_ids": [ + "5172" + ], + "broader_ids": [ + "5881" + ], + "geo_area_code": null + }, + { + "id": "1305", + "label": "impact of advertising", + "alt_labels": [], + "related_ids": [ + "3085" + ], + "broader_ids": [ + "2862" + ], + "geo_area_code": null + }, + { + "id": "1306", + "label": "imperialism", + "alt_labels": [ + "hegemony" + ], + "related_ids": [], + "broader_ids": [ + "2500" + ], + "geo_area_code": null + }, + { + "id": "1307", + "label": "business location", + "alt_labels": [], + "related_ids": [ + "1055", + "3624", + "5985", + "8450" + ], + "broader_ids": [ + "2469" + ], + "geo_area_code": null + }, + { + "id": "1308", + "label": "German Democratic Republic", + "alt_labels": [ + "Democratic Republic of Germany", + "East Germany", + "GDR", + "former GDR" + ], + "related_ids": [ + "1318", + "3479", + "3502", + "4269" + ], + "broader_ids": [ + "2291", + "5087" + ], + "geo_area_code": null + }, + { + "id": "1309", + "label": "import", + "alt_labels": [], + "related_ids": [ + "1637", + "1982", + "4400", + "4402", + "4645" + ], + "broader_ids": [ + "614" + ], + "geo_area_code": null + }, + { + "id": "131", + "label": "agricultural adviser", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4771" + ], + "geo_area_code": null + }, + { + "id": "1310", + "label": "tax", + "alt_labels": [ + "rate of taxation", + "tax rate" + ], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1311", + "label": "Community tax", + "alt_labels": [ + "tax (EU)" + ], + "related_ids": [ + "5130" + ], + "broader_ids": [ + "3258" + ], + "geo_area_code": null + }, + { + "id": "1312", + "label": "personal income tax", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1326" + ], + "geo_area_code": null + }, + { + "id": "1313", + "label": "direct tax", + "alt_labels": [], + "related_ids": [ + "1015", + "1325", + "1326" + ], + "broader_ids": [ + "1310" + ], + "geo_area_code": null + }, + { + "id": "1314", + "label": "property tax", + "alt_labels": [ + "rates" + ], + "related_ids": [ + "2813", + "5079", + "6311" + ], + "broader_ids": [ + "1326" + ], + "geo_area_code": null + }, + { + "id": "1315", + "label": "flat-rate tax", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1310" + ], + "geo_area_code": null + }, + { + "id": "1316", + "label": "indirect tax", + "alt_labels": [], + "related_ids": [ + "1321" + ], + "broader_ids": [ + "1310" + ], + "geo_area_code": null + }, + { + "id": "1317", + "label": "local tax", + "alt_labels": [ + "local taxation", + "regional tax", + "regional taxation" + ], + "related_ids": [ + "1017", + "4387", + "4406", + "5079" + ], + "broader_ids": [ + "1310" + ], + "geo_area_code": null + }, + { + "id": "1318", + "label": "Germany", + "alt_labels": [ + "FRG", + "Federal Republic of Germany", + "German Federal Republic", + "West Germany" + ], + "related_ids": [ + "1308", + "1329", + "3502", + "4269" + ], + "broader_ids": [ + "122", + "2106", + "2200", + "5283", + "913" + ], + "geo_area_code": "DEU" + }, + { + "id": "1319", + "label": "national tax", + "alt_labels": [ + "national taxation" + ], + "related_ids": [ + "1018" + ], + "broader_ids": [ + "1310" + ], + "geo_area_code": null + }, + { + "id": "132", + "label": "food preserving", + "alt_labels": [ + "preserving of foodstuffs" + ], + "related_ids": [ + "136", + "1390", + "1398", + "387", + "463" + ], + "broader_ids": [ + "4416" + ], + "geo_area_code": null + }, + { + "id": "1320", + "label": "non-personal tax", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1310" + ], + "geo_area_code": null + }, + { + "id": "1321", + "label": "tax on consumption", + "alt_labels": [ + "consumption tax", + "tax on spending" + ], + "related_ids": [ + "1316", + "139" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1322", + "label": "wealth tax", + "alt_labels": [], + "related_ids": [ + "3721" + ], + "broader_ids": [ + "1325" + ], + "geo_area_code": null + }, + { + "id": "1323", + "label": "capital gains tax", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1326" + ], + "geo_area_code": null + }, + { + "id": "1324", + "label": "capital transfer tax", + "alt_labels": [ + "death duty", + "estate duty", + "inheritance tax" + ], + "related_ids": [ + "3936", + "4503" + ], + "broader_ids": [ + "1325" + ], + "geo_area_code": null + }, + { + "id": "1325", + "label": "tax on capital", + "alt_labels": [], + "related_ids": [ + "1313" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1326", + "label": "tax on income", + "alt_labels": [ + "income tax" + ], + "related_ids": [ + "1313", + "3659", + "504" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1327", + "label": "tax on profits of self-employment", + "alt_labels": [ + "tax on non-commercial profits" + ], + "related_ids": [ + "4842" + ], + "broader_ids": [ + "1326" + ], + "geo_area_code": null + }, + { + "id": "1328", + "label": "tax on investment income", + "alt_labels": [ + "tax on unearned income" + ], + "related_ids": [], + "broader_ids": [ + "1326" + ], + "geo_area_code": null + }, + { + "id": "1329", + "label": "regions of Germany", + "alt_labels": [], + "related_ids": [ + "1318" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "133", + "label": "conservation of fish stocks", + "alt_labels": [], + "related_ids": [ + "134" + ], + "broader_ids": [ + "1159" + ], + "geo_area_code": null + }, + { + "id": "1330", + "label": "tax on employment income", + "alt_labels": [ + "tax on wages and salaries" + ], + "related_ids": [ + "3843", + "5869" + ], + "broader_ids": [ + "1326" + ], + "geo_area_code": null + }, + { + "id": "1331", + "label": "corporation tax", + "alt_labels": [ + "corporate income tax", + "profits tax" + ], + "related_ids": [ + "2337", + "4189", + "4842" + ], + "broader_ids": [ + "1326" + ], + "geo_area_code": null + }, + { + "id": "1332", + "label": "printing", + "alt_labels": [ + "graphics industry", + "offset", + "photocomposition", + "typography" + ], + "related_ids": [ + "1978", + "2859", + "4837", + "c_715c08c0" + ], + "broader_ids": [ + "1392" + ], + "geo_area_code": null + }, + { + "id": "1333", + "label": "accounting entry", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1155" + ], + "geo_area_code": null + }, + { + "id": "1334", + "label": "incapacity for work", + "alt_labels": [ + "occupational disablement", + "unfit for work" + ], + "related_ids": [ + "3412" + ], + "broader_ids": [ + "4039" + ], + "geo_area_code": null + }, + { + "id": "1335", + "label": "fire", + "alt_labels": [], + "related_ids": [ + "1706" + ], + "broader_ids": [ + "371" + ], + "geo_area_code": null + }, + { + "id": "1336", + "label": "incompatibility", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2246" + ], + "geo_area_code": null + }, + { + "id": "1337", + "label": "incoterms", + "alt_labels": [ + "International Commercial Terms" + ], + "related_ids": [ + "3647", + "4441" + ], + "broader_ids": [ + "11" + ], + "geo_area_code": null + }, + { + "id": "1338", + "label": "India", + "alt_labels": [ + "Republic of India" + ], + "related_ids": [ + "8356" + ], + "broader_ids": [ + "2848", + "8367", + "c_964c9649" + ], + "geo_area_code": "IND" + }, + { + "id": "1339", + "label": "indemnification", + "alt_labels": [ + "compensation", + "compensation for damage", + "indemnity", + "victim compensation" + ], + "related_ids": [ + "1341", + "1343", + "2626", + "4695", + "5412", + "8443" + ], + "broader_ids": [ + "3497" + ], + "geo_area_code": null + }, + { + "id": "134", + "label": "conservation of resources", + "alt_labels": [ + "protection of resources" + ], + "related_ids": [ + "133", + "2842", + "3549" + ], + "broader_ids": [ + "2825" + ], + "geo_area_code": null + }, + { + "id": "1340", + "label": "alloy", + "alt_labels": [ + "brass", + "bronze" + ], + "related_ids": [], + "broader_ids": [ + "1882" + ], + "geo_area_code": null + }, + { + "id": "1341", + "label": "insurance indemnity", + "alt_labels": [], + "related_ids": [ + "1339" + ], + "broader_ids": [ + "165" + ], + "geo_area_code": null + }, + { + "id": "1342", + "label": "installation allowance", + "alt_labels": [], + "related_ids": [ + "2938", + "2981" + ], + "broader_ids": [ + "2493" + ], + "geo_area_code": null + }, + { + "id": "1343", + "label": "severance pay", + "alt_labels": [], + "related_ids": [ + "1339" + ], + "broader_ids": [ + "1646" + ], + "geo_area_code": null + }, + { + "id": "1344", + "label": "parliamentary allowance", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2246" + ], + "geo_area_code": null + }, + { + "id": "1345", + "label": "economic independence", + "alt_labels": [ + "economic autonomy", + "economic dependence", + "economic resilience" + ], + "related_ids": [ + "1472", + "2295" + ], + "broader_ids": [ + "1346" + ], + "geo_area_code": null + }, + { + "id": "1346", + "label": "national independence", + "alt_labels": [ + "national dependence", + "political independence" + ], + "related_ids": [ + "1212", + "1999", + "4238" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1347", + "label": "technological independence", + "alt_labels": [ + "technological dependence" + ], + "related_ids": [ + "2295", + "3909", + "4496", + "4624" + ], + "broader_ids": [ + "1346" + ], + "geo_area_code": null + }, + { + "id": "1348", + "label": "price indexing", + "alt_labels": [], + "related_ids": [ + "1349" + ], + "broader_ids": [ + "2489" + ], + "geo_area_code": null + }, + { + "id": "1349", + "label": "wage indexing", + "alt_labels": [ + "indexing of pay" + ], + "related_ids": [ + "1348" + ], + "broader_ids": [ + "1026" + ], + "geo_area_code": null + }, + { + "id": "135", + "label": "conservatism", + "alt_labels": [], + "related_ids": [ + "2251" + ], + "broader_ids": [ + "1282" + ], + "geo_area_code": null + }, + { + "id": "1350", + "label": "document indexing", + "alt_labels": [ + "descriptor" + ], + "related_ids": [], + "broader_ids": [ + "1752" + ], + "geo_area_code": null + }, + { + "id": "1351", + "label": "divergence indicator", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "665" + ], + "geo_area_code": null + }, + { + "id": "1352", + "label": "economic indicator", + "alt_labels": [], + "related_ids": [ + "1353", + "2769", + "2778", + "4633" + ], + "broader_ids": [ + "1800" + ], + "geo_area_code": null + }, + { + "id": "1353", + "label": "social indicator", + "alt_labels": [], + "related_ids": [ + "1352", + "c_058697c2" + ], + "broader_ids": [ + "1820" + ], + "geo_area_code": null + }, + { + "id": "1354", + "label": "price index", + "alt_labels": [ + "price indicator", + "price level", + "table of prices", + "threshold index", + "trigger index" + ], + "related_ids": [ + "2575", + "274" + ], + "broader_ids": [ + "2489" + ], + "geo_area_code": null + }, + { + "id": "1355", + "label": "Indonesia", + "alt_labels": [ + "Republic of Indonesia" + ], + "related_ids": [ + "c_7d7608fa" + ], + "broader_ids": [ + "1847", + "2148", + "2858", + "6205" + ], + "geo_area_code": "IDN" + }, + { + "id": "1356", + "label": "industrialisation", + "alt_labels": [ + "creation of industry", + "industrialisation policy", + "industrialization", + "industrialization policy" + ], + "related_ids": [ + "2465", + "3080", + "5205" + ], + "broader_ids": [ + "2507" + ], + "geo_area_code": null + }, + { + "id": "1357", + "label": "aeronautical industry", + "alt_labels": [], + "related_ids": [ + "1376", + "3636", + "4438", + "4505" + ], + "broader_ids": [ + "1410" + ], + "geo_area_code": null + }, + { + "id": "1358", + "label": "aerospace industry", + "alt_labels": [], + "related_ids": [ + "1376", + "1930", + "2922", + "3092", + "3636", + "3905", + "4107", + "4185", + "6382" + ], + "broader_ids": [ + "1410" + ], + "geo_area_code": null + }, + { + "id": "1359", + "label": "electoral alliance", + "alt_labels": [], + "related_ids": [ + "2258" + ], + "broader_ids": [ + "5097" + ], + "geo_area_code": null + }, + { + "id": "136", + "label": "cannery", + "alt_labels": [ + "canning", + "canning industry", + "food-preserving industry" + ], + "related_ids": [ + "132", + "4083" + ], + "broader_ids": [ + "1360" + ], + "geo_area_code": null + }, + { + "id": "1360", + "label": "food industry", + "alt_labels": [], + "related_ids": [ + "1372", + "1390", + "1590", + "2893", + "4416" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1361", + "label": "motor vehicle industry", + "alt_labels": [ + "automobile manufacture", + "motor industry" + ], + "related_ids": [ + "4261", + "4533", + "4654", + "5245" + ], + "broader_ids": [ + "1410" + ], + "geo_area_code": null + }, + { + "id": "1362", + "label": "chemical industry", + "alt_labels": [ + "chemical production" + ], + "related_ids": [ + "1415", + "2364", + "2528", + "3798", + "4889", + "5966", + "5968", + "707" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1363", + "label": "film industry", + "alt_labels": [ + "cinematographic distribution", + "cinematographic industry", + "film distribution" + ], + "related_ids": [ + "487", + "5994" + ], + "broader_ids": [ + "1370" + ], + "geo_area_code": null + }, + { + "id": "1364", + "label": "culture industry", + "alt_labels": [], + "related_ids": [ + "1370", + "317", + "c_8f56da2a" + ], + "broader_ids": [ + "2459" + ], + "geo_area_code": null + }, + { + "id": "1365", + "label": "arms industry", + "alt_labels": [], + "related_ids": [ + "1376", + "2647", + "3636", + "3671" + ], + "broader_ids": [ + "3451" + ], + "geo_area_code": null + }, + { + "id": "1366", + "label": "audiovisual industry", + "alt_labels": [ + "audio-visual industry", + "video game industry" + ], + "related_ids": [ + "2023", + "3869", + "3873", + "4096", + "487" + ], + "broader_ids": [ + "1370" + ], + "geo_area_code": null + }, + { + "id": "1367", + "label": "information industry", + "alt_labels": [], + "related_ids": [ + "1370", + "1405", + "4486" + ], + "broader_ids": [ + "2472" + ], + "geo_area_code": null + }, + { + "id": "1368", + "label": "footwear industry", + "alt_labels": [ + "bootmaker", + "shoe industry", + "shoemaker" + ], + "related_ids": [], + "broader_ids": [ + "1388" + ], + "geo_area_code": null + }, + { + "id": "1369", + "label": "additional benefit", + "alt_labels": [ + "supplementary grant" + ], + "related_ids": [], + "broader_ids": [ + "2605" + ], + "geo_area_code": null + }, + { + "id": "137", + "label": "rescheduling of public debt", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "424" + ], + "geo_area_code": null + }, + { + "id": "1370", + "label": "communications industry", + "alt_labels": [], + "related_ids": [ + "1364", + "1367", + "317", + "3876", + "849" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1371", + "label": "machine-tool industry", + "alt_labels": [], + "related_ids": [ + "1724" + ], + "broader_ids": [ + "1410" + ], + "geo_area_code": null + }, + { + "id": "1372", + "label": "fishing industry", + "alt_labels": [ + "fishing", + "fishing activity" + ], + "related_ids": [ + "1360", + "2026", + "2435", + "5846", + "c_d978c1fc" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1373", + "label": "catering industry", + "alt_labels": [ + "HORECA", + "International Organisation of Hotel and Restaurant Associations", + "caf\u00e9", + "restaurant", + "restaurant industry" + ], + "related_ids": [ + "1250", + "3563" + ], + "broader_ids": [ + "4470" + ], + "geo_area_code": null + }, + { + "id": "1374", + "label": "meat processing industry", + "alt_labels": [ + "cutting premises", + "cutting-up premises", + "slaughterhouse" + ], + "related_ids": [ + "1445", + "1857", + "2738", + "4681" + ], + "broader_ids": [ + "1360" + ], + "geo_area_code": null + }, + { + "id": "1375", + "label": "pulp and paper industry", + "alt_labels": [ + "paper industry", + "paper-making", + "paper-making industry", + "paperboard industry" + ], + "related_ids": [ + "1392", + "2746", + "2947" + ], + "broader_ids": [ + "1386" + ], + "geo_area_code": null + }, + { + "id": "1376", + "label": "advanced technology industry", + "alt_labels": [], + "related_ids": [ + "1357", + "1358", + "1365", + "3627", + "3636", + "4424", + "5188" + ], + "broader_ids": [ + "4303" + ], + "geo_area_code": null + }, + { + "id": "1377", + "label": "processing industry", + "alt_labels": [ + "manufacturing industry" + ], + "related_ids": [ + "2765", + "2780" + ], + "broader_ids": [ + "4303" + ], + "geo_area_code": null + }, + { + "id": "1378", + "label": "beverage industry", + "alt_labels": [ + "brewery", + "distillery", + "malt house", + "winegrowing industry" + ], + "related_ids": [ + "1772", + "473", + "5017", + "c_1bedfedb" + ], + "broader_ids": [ + "1360" + ], + "geo_area_code": null + }, + { + "id": "1379", + "label": "framework agreement", + "alt_labels": [ + "outline agreement" + ], + "related_ids": [], + "broader_ids": [ + "3461" + ], + "geo_area_code": null + }, + { + "id": "138", + "label": "consumer", + "alt_labels": [], + "related_ids": [ + "4859" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1380", + "label": "education grant", + "alt_labels": [ + "education allowance", + "education subsidy", + "scholarship", + "student grant", + "study grant", + "study loan", + "training allowance" + ], + "related_ids": [ + "2467" + ], + "broader_ids": [ + "4705" + ], + "geo_area_code": null + }, + { + "id": "1381", + "label": "dyestuffs industry", + "alt_labels": [ + "production of dyes" + ], + "related_ids": [ + "6039" + ], + "broader_ids": [ + "3808" + ], + "geo_area_code": null + }, + { + "id": "1382", + "label": "fertiliser industry", + "alt_labels": [ + "fertilizer industry", + "production of fertilisers" + ], + "related_ids": [ + "764" + ], + "broader_ids": [ + "3808" + ], + "geo_area_code": null + }, + { + "id": "1383", + "label": "plastics industry", + "alt_labels": [ + "production of plastics" + ], + "related_ids": [ + "2746", + "c_2b70515a" + ], + "broader_ids": [ + "3808" + ], + "geo_area_code": null + }, + { + "id": "1384", + "label": "service industry", + "alt_labels": [], + "related_ids": [ + "2602", + "4021", + "4470", + "5149", + "5206" + ], + "broader_ids": [ + "3895" + ], + "geo_area_code": null + }, + { + "id": "1385", + "label": "telecommunications industry", + "alt_labels": [], + "related_ids": [ + "1400", + "4430" + ], + "broader_ids": [ + "1370" + ], + "geo_area_code": null + }, + { + "id": "1386", + "label": "wood industry", + "alt_labels": [ + "wood processing" + ], + "related_ids": [ + "2994", + "4352", + "943" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1387", + "label": "rubber industry", + "alt_labels": [ + "rubber article", + "rubber product", + "rubber production" + ], + "related_ids": [], + "broader_ids": [ + "1362" + ], + "geo_area_code": null + }, + { + "id": "1388", + "label": "leather industry", + "alt_labels": [ + "leather production", + "tanning industry" + ], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1389", + "label": "death grant", + "alt_labels": [], + "related_ids": [ + "5291" + ], + "broader_ids": [ + "2605" + ], + "geo_area_code": null + }, + { + "id": "139", + "label": "consumption", + "alt_labels": [], + "related_ids": [ + "1321", + "142", + "2062", + "2575", + "289", + "536" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1390", + "label": "refrigeration industry", + "alt_labels": [ + "industrial refrigeration" + ], + "related_ids": [ + "132", + "1360", + "3846" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1391", + "label": "toy industry", + "alt_labels": [ + "toy" + ], + "related_ids": [ + "3334" + ], + "broader_ids": [ + "3895" + ], + "geo_area_code": null + }, + { + "id": "1392", + "label": "book trade", + "alt_labels": [ + "book", + "bookbinding" + ], + "related_ids": [ + "1375", + "486" + ], + "broader_ids": [ + "1370" + ], + "geo_area_code": null + }, + { + "id": "1393", + "label": "furniture industry", + "alt_labels": [ + "furnishings industry", + "furniture" + ], + "related_ids": [ + "1945" + ], + "broader_ids": [ + "1386" + ], + "geo_area_code": null + }, + { + "id": "1394", + "label": "sugar industry", + "alt_labels": [ + "sugar manufacture", + "sugar refinery" + ], + "related_ids": [ + "2733", + "2887", + "4314" + ], + "broader_ids": [ + "1360" + ], + "geo_area_code": null + }, + { + "id": "1395", + "label": "tobacco industry", + "alt_labels": [ + "cigar", + "cigarette", + "cigarillo" + ], + "related_ids": [ + "4373" + ], + "broader_ids": [ + "656" + ], + "geo_area_code": null + }, + { + "id": "1396", + "label": "glass industry", + "alt_labels": [ + "glass processing", + "glassworks" + ], + "related_ids": [ + "3879" + ], + "broader_ids": [ + "1362" + ], + "geo_area_code": null + }, + { + "id": "1397", + "label": "clothing industry", + "alt_labels": [ + "fashion industry", + "garment industry", + "high fashion", + "made-up goods", + "ready-made clothing industry", + "ready-to-wear clothing industry" + ], + "related_ids": [ + "5245" + ], + "broader_ids": [ + "1418" + ], + "geo_area_code": null + }, + { + "id": "1398", + "label": "vacuum industry", + "alt_labels": [], + "related_ids": [ + "132", + "720" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1399", + "label": "maternity benefit", + "alt_labels": [ + "birth grant", + "maternity allowance" + ], + "related_ids": [ + "2501", + "5159" + ], + "broader_ids": [ + "2605" + ], + "geo_area_code": null + }, + { + "id": "14", + "label": "ad hoc committee", + "alt_labels": [ + "joint committee" + ], + "related_ids": [], + "broader_ids": [ + "18" + ], + "geo_area_code": null + }, + { + "id": "140", + "label": "food consumption", + "alt_labels": [], + "related_ids": [ + "1268", + "141", + "c_058697c2", + "c_fa0acac6" + ], + "broader_ids": [ + "139" + ], + "geo_area_code": null + }, + { + "id": "1400", + "label": "electronics industry", + "alt_labels": [], + "related_ids": [ + "1385", + "1405", + "3783", + "6411", + "709" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1401", + "label": "electrical engineering", + "alt_labels": [ + "domestic electrical appliances", + "electromechanical equipment", + "electromechanical industry", + "electromechanical item", + "electromechanical production", + "electrotechnical industry" + ], + "related_ids": [ + "2205", + "3336", + "3783", + "6411", + "710" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1402", + "label": "export industry", + "alt_labels": [], + "related_ids": [ + "2487" + ], + "broader_ids": [ + "4303" + ], + "geo_area_code": null + }, + { + "id": "1403", + "label": "clock and watch industry", + "alt_labels": [ + "clock and watch making", + "watch" + ], + "related_ids": [], + "broader_ids": [ + "1845" + ], + "geo_area_code": null + }, + { + "id": "1404", + "label": "hotel industry", + "alt_labels": [ + "bed and breakfast", + "guest house", + "hotel" + ], + "related_ids": [], + "broader_ids": [ + "4470" + ], + "geo_area_code": null + }, + { + "id": "1405", + "label": "information technology industry", + "alt_labels": [ + "computer industry" + ], + "related_ids": [ + "1367", + "1400", + "4330", + "5071", + "709", + "c_415bab24" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1406", + "label": "dairy industry", + "alt_labels": [ + "dairy" + ], + "related_ids": [ + "2763", + "2989", + "944" + ], + "broader_ids": [ + "1360" + ], + "geo_area_code": null + }, + { + "id": "1407", + "label": "light industry", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4303" + ], + "geo_area_code": null + }, + { + "id": "1408", + "label": "heavy industry", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4303" + ], + "geo_area_code": null + }, + { + "id": "1409", + "label": "allocation of resources", + "alt_labels": [], + "related_ids": [ + "3072" + ], + "broader_ids": [ + "2497" + ], + "geo_area_code": null + }, + { + "id": "141", + "label": "water consumption", + "alt_labels": [], + "related_ids": [ + "140", + "607" + ], + "broader_ids": [ + "3144" + ], + "geo_area_code": null + }, + { + "id": "1410", + "label": "mechanical engineering", + "alt_labels": [ + "machine design", + "machinery industry", + "machinery production", + "mechanical engineering design" + ], + "related_ids": [ + "1848", + "2922" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1411", + "label": "mining industry", + "alt_labels": [], + "related_ids": [ + "3546", + "840" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1412", + "label": "nuclear industry", + "alt_labels": [], + "related_ids": [ + "3737", + "6047" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1413", + "label": "optical industry", + "alt_labels": [ + "contact lens", + "precision optics", + "spectacle lens", + "spectacles" + ], + "related_ids": [ + "1416", + "3292" + ], + "broader_ids": [ + "1845" + ], + "geo_area_code": null + }, + { + "id": "1414", + "label": "oil industry", + "alt_labels": [ + "oil company", + "petroleum industry" + ], + "related_ids": [ + "2364" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1415", + "label": "pharmaceutical industry", + "alt_labels": [ + "pharmaceutical production" + ], + "related_ids": [ + "1362", + "1594", + "3796" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1416", + "label": "photographic industry", + "alt_labels": [ + "photographic equipment" + ], + "related_ids": [ + "1413", + "2373", + "3404", + "4096", + "c_cdec6719" + ], + "broader_ids": [ + "3895" + ], + "geo_area_code": null + }, + { + "id": "1417", + "label": "iron and steel industry", + "alt_labels": [ + "electrical steelworks", + "foundry", + "iron and steel undertaking", + "iron and steel works", + "steel industry", + "steel mill", + "steelworks" + ], + "related_ids": [ + "2673", + "3837" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1418", + "label": "textile industry", + "alt_labels": [ + "embroidery", + "knitting", + "sewing", + "spinning", + "textile production", + "weaving" + ], + "related_ids": [ + "1564", + "2417", + "4207", + "4524" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1419", + "label": "elimination of illiteracy", + "alt_labels": [], + "related_ids": [ + "1691", + "672", + "789" + ], + "broader_ids": [ + "2467" + ], + "geo_area_code": null + }, + { + "id": "142", + "label": "energy consumption", + "alt_labels": [ + "use of energy" + ], + "related_ids": [ + "139" + ], + "broader_ids": [ + "4886" + ], + "geo_area_code": null + }, + { + "id": "1420", + "label": "social inequality", + "alt_labels": [], + "related_ids": [ + "7939" + ], + "broader_ids": [ + "4305" + ], + "geo_area_code": null + }, + { + "id": "1421", + "label": "inflation", + "alt_labels": [ + "fight against inflation", + "rate of inflation", + "stagflation" + ], + "related_ids": [ + "188", + "2461", + "2495", + "2510", + "3653", + "369" + ], + "broader_ids": [ + "335" + ], + "geo_area_code": null + }, + { + "id": "1422", + "label": "information", + "alt_labels": [ + "means of information" + ], + "related_ids": [ + "3925", + "5066" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1423", + "label": "trade information", + "alt_labels": [], + "related_ids": [ + "1821", + "3123" + ], + "broader_ids": [ + "13" + ], + "geo_area_code": null + }, + { + "id": "1424", + "label": "worker information", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2266" + ], + "geo_area_code": null + }, + { + "id": "1425", + "label": "consumer information", + "alt_labels": [ + "consumer education", + "health claim", + "nutrition claim" + ], + "related_ids": [ + "6752", + "893" + ], + "broader_ids": [ + "2836" + ], + "geo_area_code": null + }, + { + "id": "1426", + "label": "computer systems", + "alt_labels": [ + "informatics" + ], + "related_ids": [ + "781" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1427", + "label": "business data processing", + "alt_labels": [], + "related_ids": [ + "1156", + "1163", + "4360", + "54" + ], + "broader_ids": [ + "3026" + ], + "geo_area_code": null + }, + { + "id": "1428", + "label": "information storage and retrieval", + "alt_labels": [ + "computerised documentation system" + ], + "related_ids": [ + "4366", + "6110", + "6188", + "c_433922a6" + ], + "broader_ids": [ + "3026" + ], + "geo_area_code": null + }, + { + "id": "1429", + "label": "industrial data processing", + "alt_labels": [ + "digital control" + ], + "related_ids": [ + "3632", + "4253" + ], + "broader_ids": [ + "3026" + ], + "geo_area_code": null + }, + { + "id": "143", + "label": "household consumption", + "alt_labels": [ + "household spending" + ], + "related_ids": [ + "3684", + "5056", + "742", + "8432" + ], + "broader_ids": [ + "139" + ], + "geo_area_code": null + }, + { + "id": "1430", + "label": "Alsace", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "c_c44f1704" + ], + "geo_area_code": null + }, + { + "id": "1431", + "label": "medical computing", + "alt_labels": [], + "related_ids": [ + "1852" + ], + "broader_ids": [ + "3026" + ], + "geo_area_code": null + }, + { + "id": "1432", + "label": "offence", + "alt_labels": [ + "a crime", + "breach of the law", + "misdemeanour", + "petty offence" + ], + "related_ids": [ + "4087", + "5412", + "7365", + "c_65467c72", + "c_db56b1e0" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1433", + "label": "transport infrastructure", + "alt_labels": [], + "related_ids": [ + "1447", + "195", + "3438", + "5673" + ], + "broader_ids": [ + "2494" + ], + "geo_area_code": null + }, + { + "id": "1434", + "label": "industrial infrastructure", + "alt_labels": [], + "related_ids": [ + "3632", + "5673" + ], + "broader_ids": [ + "2507" + ], + "geo_area_code": null + }, + { + "id": "1435", + "label": "engineer", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3587" + ], + "geo_area_code": null + }, + { + "id": "1436", + "label": "interference", + "alt_labels": [ + "duty to interfere", + "right to interfere" + ], + "related_ids": [], + "broader_ids": [ + "99" + ], + "geo_area_code": null + }, + { + "id": "1437", + "label": "political alternation", + "alt_labels": [], + "related_ids": [ + "4950" + ], + "broader_ids": [ + "4704" + ], + "geo_area_code": null + }, + { + "id": "1438", + "label": "legislative initiative", + "alt_labels": [], + "related_ids": [ + "2578", + "41" + ], + "broader_ids": [ + "2702" + ], + "geo_area_code": null + }, + { + "id": "1439", + "label": "innovation", + "alt_labels": [ + "industrial innovation", + "technological innovation" + ], + "related_ids": [ + "3636", + "447795", + "4496", + "5383", + "6297", + "6755" + ], + "broader_ids": [ + "2914" + ], + "geo_area_code": null + }, + { + "id": "144", + "label": "adoption of the budget", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2698" + ], + "geo_area_code": null + }, + { + "id": "1440", + "label": "flood", + "alt_labels": [], + "related_ids": [ + "260", + "4075" + ], + "broader_ids": [ + "413" + ], + "geo_area_code": null + }, + { + "id": "1441", + "label": "failure to report for duty", + "alt_labels": [], + "related_ids": [ + "419" + ], + "broader_ids": [ + "4127" + ], + "geo_area_code": null + }, + { + "id": "1442", + "label": "food inspection", + "alt_labels": [ + "control of foodstuffs", + "food analysis", + "food control", + "food test" + ], + "related_ids": [ + "192", + "2531" + ], + "broader_ids": [ + "1590" + ], + "geo_area_code": null + }, + { + "id": "1443", + "label": "labour inspectorate", + "alt_labels": [ + "factory inspectorate", + "industrial inspectorate" + ], + "related_ids": [ + "82" + ], + "broader_ids": [ + "557" + ], + "geo_area_code": null + }, + { + "id": "1444", + "label": "school inspection", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4705" + ], + "geo_area_code": null + }, + { + "id": "1445", + "label": "veterinary inspection", + "alt_labels": [ + "veterinary control" + ], + "related_ids": [ + "1374", + "1856", + "3730" + ], + "broader_ids": [ + "1598" + ], + "geo_area_code": null + }, + { + "id": "1446", + "label": "aluminium", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1885" + ], + "geo_area_code": null + }, + { + "id": "1447", + "label": "harbour installation", + "alt_labels": [ + "harbour", + "port", + "river port", + "seaport", + "yacht harbour" + ], + "related_ids": [ + "1433", + "2561" + ], + "broader_ids": [ + "2512" + ], + "geo_area_code": null + }, + { + "id": "1448", + "label": "supervisory body", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2579" + ], + "geo_area_code": null + }, + { + "id": "1449", + "label": "European Trade Union Institute", + "alt_labels": [ + " Education and Health and Safety", + "ETUI-REHS", + "European Trade Union Institute for Research" + ], + "related_ids": [], + "broader_ids": [ + "5370" + ], + "geo_area_code": null + }, + { + "id": "145", + "label": "final consumption", + "alt_labels": [], + "related_ids": [ + "536" + ], + "broader_ids": [ + "139" + ], + "geo_area_code": null + }, + { + "id": "1450", + "label": "ACP-EU institution", + "alt_labels": [ + "ACP-EC institution" + ], + "related_ids": [ + "5083", + "5282" + ], + "broader_ids": [ + "5763" + ], + "geo_area_code": null + }, + { + "id": "1451", + "label": "EU institution", + "alt_labels": [ + "Community institution", + "European Union institution" + ], + "related_ids": [ + "8465" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1452", + "label": "financial institution", + "alt_labels": [], + "related_ids": [ + "1804", + "2002", + "2466", + "2502", + "34", + "8469", + "c_6fb74d78" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1453", + "label": "political institution", + "alt_labels": [], + "related_ids": [ + "c_959c23de" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1454", + "label": "religious institution", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3257" + ], + "geo_area_code": null + }, + { + "id": "1455", + "label": "UN specialised agency", + "alt_labels": [ + "UN specialized agency", + "United Nations specialised agency", + "United Nations specialized agency" + ], + "related_ids": [ + "1034", + "5765", + "7202" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1456", + "label": "improvement of housing", + "alt_labels": [ + "housing improvements", + "housing modernisation", + "housing modernization", + "housing renovation", + "improvement of the housing environment", + "improvement of the residential environment", + "improvement of the residential milieu", + "modernisation of housing", + "modernisation of the housing environment", + "modernisation of the residential environment", + "modernisation of the residential milieu", + "modernization of housing", + "modernization of the housing environment", + "modernization of the residential environment", + "modernization of the residential milieu", + "renovation of housing" + ], + "related_ids": [ + "3281" + ], + "broader_ids": [ + "2496" + ], + "geo_area_code": null + }, + { + "id": "1457", + "label": "judicial investigation", + "alt_labels": [ + "confidentiality of judicial investigations" + ], + "related_ids": [], + "broader_ids": [ + "2704" + ], + "geo_area_code": null + }, + { + "id": "1458", + "label": "musical instrument", + "alt_labels": [], + "related_ids": [ + "2023" + ], + "broader_ids": [ + "3895" + ], + "geo_area_code": null + }, + { + "id": "1459", + "label": "financial instrument", + "alt_labels": [], + "related_ids": [ + "1460" + ], + "broader_ids": [ + "1804" + ], + "geo_area_code": null + }, + { + "id": "146", + "label": "domestic consumption", + "alt_labels": [], + "related_ids": [ + "1806", + "4629" + ], + "broader_ids": [ + "139" + ], + "geo_area_code": null + }, + { + "id": "1460", + "label": "EU financial instrument", + "alt_labels": [ + "Community financial instrument", + "European Union financial instrument", + "European Union's financial instrument", + "financial instrument of the European Union" + ], + "related_ids": [ + "1459", + "2511", + "4370", + "5472", + "862" + ], + "broader_ids": [ + "1005" + ], + "geo_area_code": null + }, + { + "id": "1461", + "label": "Institute for Latin American Integration", + "alt_labels": [ + "INTAL" + ], + "related_ids": [], + "broader_ids": [ + "4872" + ], + "geo_area_code": null + }, + { + "id": "1462", + "label": "integration of migrants", + "alt_labels": [ + "assimilation of migrants" + ], + "related_ids": [ + "1469", + "2881", + "4562", + "4873" + ], + "broader_ids": [ + "2509" + ], + "geo_area_code": null + }, + { + "id": "1463", + "label": "economic integration", + "alt_labels": [], + "related_ids": [ + "1464", + "1466", + "1468", + "1792", + "209", + "430", + "4600", + "4601", + "4789" + ], + "broader_ids": [ + "2497" + ], + "geo_area_code": null + }, + { + "id": "1464", + "label": "European integration", + "alt_labels": [ + "European unification" + ], + "related_ids": [ + "1463", + "1466", + "1468", + "6559", + "8285" + ], + "broader_ids": [ + "5442" + ], + "geo_area_code": null + }, + { + "id": "1465", + "label": "production improvement", + "alt_labels": [ + "quality objective" + ], + "related_ids": [ + "2871" + ], + "broader_ids": [ + "2481" + ], + "geo_area_code": null + }, + { + "id": "1466", + "label": "monetary integration", + "alt_labels": [], + "related_ids": [ + "1463", + "1464" + ], + "broader_ids": [ + "3239" + ], + "geo_area_code": null + }, + { + "id": "1467", + "label": "political integration", + "alt_labels": [], + "related_ids": [ + "1468", + "5948" + ], + "broader_ids": [ + "220" + ], + "geo_area_code": null + }, + { + "id": "1468", + "label": "regional integration", + "alt_labels": [], + "related_ids": [ + "1463", + "1464", + "1467" + ], + "broader_ids": [ + "2515" + ], + "geo_area_code": null + }, + { + "id": "1469", + "label": "social integration", + "alt_labels": [ + "integration into society", + "social assimilation", + "social inclusion", + "social insertion" + ], + "related_ids": [ + "1462", + "1817", + "5675", + "c_aa454f82" + ], + "broader_ids": [ + "2517" + ], + "geo_area_code": null + }, + { + "id": "147", + "label": "per capita consumption", + "alt_labels": [ + "consumption per inhabitant" + ], + "related_ids": [], + "broader_ids": [ + "139" + ], + "geo_area_code": null + }, + { + "id": "1470", + "label": "intellectual", + "alt_labels": [ + "intelligentsia" + ], + "related_ids": [], + "broader_ids": [ + "4305" + ], + "geo_area_code": null + }, + { + "id": "1471", + "label": "voting intentions", + "alt_labels": [ + "voter poll", + "voter survey" + ], + "related_ids": [ + "1197", + "4214" + ], + "broader_ids": [ + "4750" + ], + "geo_area_code": null + }, + { + "id": "1472", + "label": "economic interdependence", + "alt_labels": [], + "related_ids": [ + "1345", + "46" + ], + "broader_ids": [ + "84" + ], + "geo_area_code": null + }, + { + "id": "1473", + "label": "exclusion from public-sector employment", + "alt_labels": [], + "related_ids": [ + "520" + ], + "broader_ids": [ + "457" + ], + "geo_area_code": null + }, + { + "id": "1474", + "label": "agreement (EU)", + "alt_labels": [ + "EC agreement", + "EC third country convention", + "EU-third country agreement", + "European Union agreement", + "international agreement (EU)" + ], + "related_ids": [ + "3461", + "4030", + "5827" + ], + "broader_ids": [ + "4040" + ], + "geo_area_code": null + }, + { + "id": "1475", + "label": "plant breeding", + "alt_labels": [ + "crop improvement", + "improvement of plant varieties", + "plant selection" + ], + "related_ids": [ + "2723", + "6296", + "7133" + ], + "broader_ids": [ + "2915" + ], + "geo_area_code": null + }, + { + "id": "1476", + "label": "interest", + "alt_labels": [ + "interest rate" + ], + "related_ids": [ + "2606", + "736", + "834" + ], + "broader_ids": [ + "278" + ], + "geo_area_code": null + }, + { + "id": "1477", + "label": "trade intermediary", + "alt_labels": [ + "middleman" + ], + "related_ids": [], + "broader_ids": [ + "2045" + ], + "geo_area_code": null + }, + { + "id": "1478", + "label": "Workers International", + "alt_labels": [], + "related_ids": [ + "2009", + "2250", + "2261", + "2262" + ], + "broader_ids": [ + "1282" + ], + "geo_area_code": null + }, + { + "id": "1479", + "label": "Socialist International", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1282" + ], + "geo_area_code": null + }, + { + "id": "148", + "label": "constitution", + "alt_labels": [], + "related_ids": [ + "527" + ], + "broader_ids": [ + "4222" + ], + "geo_area_code": null + }, + { + "id": "1480", + "label": "psychiatric confinement", + "alt_labels": [], + "related_ids": [ + "1760", + "4729" + ], + "broader_ids": [ + "3368" + ], + "geo_area_code": null + }, + { + "id": "1481", + "label": "question put to a minister", + "alt_labels": [ + "Commissioners-designate hearings before European Parliament" + ], + "related_ids": [], + "broader_ids": [ + "190" + ], + "geo_area_code": null + }, + { + "id": "1482", + "label": "interpreting", + "alt_labels": [ + "interpretation", + "simultaneous interpreting" + ], + "related_ids": [ + "1670", + "3585" + ], + "broader_ids": [ + "4486" + ], + "geo_area_code": null + }, + { + "id": "1483", + "label": "soil improvement", + "alt_labels": [ + "improvement of soils" + ], + "related_ids": [ + "2727", + "3536", + "3931" + ], + "broader_ids": [ + "4412" + ], + "geo_area_code": null + }, + { + "id": "1484", + "label": "interpretation of the law", + "alt_labels": [ + "judicial interpretation", + "legal analogy", + "legal interpretation", + "legal theory" + ], + "related_ids": [ + "2618", + "3980" + ], + "broader_ids": [ + "3935" + ], + "geo_area_code": null + }, + { + "id": "1485", + "label": "financial intervention", + "alt_labels": [], + "related_ids": [ + "1486", + "2462" + ], + "broader_ids": [ + "1804" + ], + "geo_area_code": null + }, + { + "id": "1486", + "label": "market intervention", + "alt_labels": [], + "related_ids": [ + "1485", + "2173", + "2462" + ], + "broader_ids": [ + "2449" + ], + "geo_area_code": null + }, + { + "id": "1487", + "label": "invention", + "alt_labels": [], + "related_ids": [ + "5042" + ], + "broader_ids": [ + "2914" + ], + "geo_area_code": null + }, + { + "id": "1488", + "label": "investment", + "alt_labels": [ + "capital expenditure", + "capital investment requirement" + ], + "related_ids": [ + "2386", + "265", + "295", + "4195", + "4795", + "6145", + "834" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1489", + "label": "investment abroad", + "alt_labels": [], + "related_ids": [ + "947" + ], + "broader_ids": [ + "1488" + ], + "geo_area_code": null + }, + { + "id": "149", + "label": "formation of a party", + "alt_labels": [ + "creation of a party", + "dissolution of a party", + "founding of a party", + "prohibition of a party" + ], + "related_ids": [], + "broader_ids": [ + "2180" + ], + "geo_area_code": null + }, + { + "id": "1490", + "label": "EU investment", + "alt_labels": [ + "Community investment", + "European Union investment" + ], + "related_ids": [ + "c_b54dc55a", + "c_d08207d1" + ], + "broader_ids": [ + "1488" + ], + "geo_area_code": null + }, + { + "id": "1491", + "label": "direct investment", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1488" + ], + "geo_area_code": null + }, + { + "id": "1492", + "label": "foreign investment", + "alt_labels": [], + "related_ids": [ + "5240", + "819", + "828" + ], + "broader_ids": [ + "1488" + ], + "geo_area_code": null + }, + { + "id": "1493", + "label": "industrial investment", + "alt_labels": [], + "related_ids": [ + "5202" + ], + "broader_ids": [ + "1009" + ], + "geo_area_code": null + }, + { + "id": "1494", + "label": "international investment", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1488" + ], + "geo_area_code": null + }, + { + "id": "1495", + "label": "private investment", + "alt_labels": [], + "related_ids": [ + "c_14d71455" + ], + "broader_ids": [ + "1488" + ], + "geo_area_code": null + }, + { + "id": "1496", + "label": "public investment", + "alt_labels": [], + "related_ids": [ + "740", + "c_ee45cd99" + ], + "broader_ids": [ + "1488" + ], + "geo_area_code": null + }, + { + "id": "1497", + "label": "regional investment", + "alt_labels": [], + "related_ids": [ + "2407", + "660" + ], + "broader_ids": [ + "1488" + ], + "geo_area_code": null + }, + { + "id": "1498", + "label": "breach of domicile", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2828" + ], + "geo_area_code": null + }, + { + "id": "1499", + "label": "iodine", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1229" + ], + "geo_area_code": null + }, + { + "id": "15", + "label": "committee of inquiry", + "alt_labels": [], + "related_ids": [ + "190", + "2576", + "2579", + "6891" + ], + "broader_ids": [ + "18" + ], + "geo_area_code": null + }, + { + "id": "150", + "label": "incorporation", + "alt_labels": [], + "related_ids": [ + "4189" + ], + "broader_ids": [ + "4703" + ], + "geo_area_code": null + }, + { + "id": "1500", + "label": "Iraq", + "alt_labels": [ + "Republic of Iraq" + ], + "related_ids": [ + "3500" + ], + "broader_ids": [ + "1658", + "1794", + "2148", + "5777", + "8369", + "c_6e703074" + ], + "geo_area_code": "IRQ" + }, + { + "id": "1501", + "label": "Iran", + "alt_labels": [ + "Islamic Republic of Iran" + ], + "related_ids": [ + "3500" + ], + "broader_ids": [ + "2148", + "5777", + "c_6e703074" + ], + "geo_area_code": "IRN" + }, + { + "id": "1502", + "label": "Irian Jaya", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1355" + ], + "geo_area_code": null + }, + { + "id": "1503", + "label": "arrangement of working time", + "alt_labels": [], + "related_ids": [ + "2468", + "4548" + ], + "broader_ids": [ + "2184" + ], + "geo_area_code": null + }, + { + "id": "1504", + "label": "Ireland", + "alt_labels": [ + "Eire", + "Southern Ireland" + ], + "related_ids": [ + "1506" + ], + "broader_ids": [ + "122", + "2106", + "5283", + "913" + ], + "geo_area_code": "IRL" + }, + { + "id": "1505", + "label": "Northern Ireland", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3780" + ], + "geo_area_code": null + }, + { + "id": "1506", + "label": "regions of Ireland", + "alt_labels": [], + "related_ids": [ + "1504" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1507", + "label": "UN Research Institute for Social Development", + "alt_labels": [ + "UNRISD", + "United Nations Research Institute for Social Development" + ], + "related_ids": [ + "432" + ], + "broader_ids": [ + "8380" + ], + "geo_area_code": null + }, + { + "id": "1508", + "label": "Islam", + "alt_labels": [ + "Mohammedanism" + ], + "related_ids": [ + "6546", + "6735", + "c_3a2df4eb" + ], + "broader_ids": [ + "3257" + ], + "geo_area_code": null + }, + { + "id": "1509", + "label": "Iceland", + "alt_labels": [ + "Republic of Iceland" + ], + "related_ids": [], + "broader_ids": [ + "122", + "130", + "187", + "2106", + "2200", + "911", + "c_b2c019c8" + ], + "geo_area_code": "ISL" + }, + { + "id": "151", + "label": "control of constitutionality", + "alt_labels": [ + "constitutionality of laws" + ], + "related_ids": [ + "1588", + "5692" + ], + "broader_ids": [ + "148" + ], + "geo_area_code": null + }, + { + "id": "1510", + "label": "ISO", + "alt_labels": [ + "International Organization for Standardization" + ], + "related_ids": [ + "3647" + ], + "broader_ids": [ + "2191" + ], + "geo_area_code": null + }, + { + "id": "1511", + "label": "isoglucose", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4314" + ], + "geo_area_code": null + }, + { + "id": "1512", + "label": "insulator", + "alt_labels": [], + "related_ids": [ + "1514", + "1515", + "1516" + ], + "broader_ids": [ + "3798" + ], + "geo_area_code": null + }, + { + "id": "1513", + "label": "forestry development", + "alt_labels": [ + "forest improvement" + ], + "related_ids": [ + "1542" + ], + "broader_ids": [ + "2505" + ], + "geo_area_code": null + }, + { + "id": "1514", + "label": "building insulation", + "alt_labels": [], + "related_ids": [ + "1512" + ], + "broader_ids": [ + "4414" + ], + "geo_area_code": null + }, + { + "id": "1515", + "label": "sound insulation", + "alt_labels": [], + "related_ids": [ + "1512", + "2824", + "5048" + ], + "broader_ids": [ + "1514" + ], + "geo_area_code": null + }, + { + "id": "1516", + "label": "thermal insulation", + "alt_labels": [], + "related_ids": [ + "1512", + "642", + "757" + ], + "broader_ids": [ + "1514" + ], + "geo_area_code": null + }, + { + "id": "1517", + "label": "isolationism", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2500" + ], + "geo_area_code": null + }, + { + "id": "1518", + "label": "Israel", + "alt_labels": [ + "State of Israel" + ], + "related_ids": [ + "3501", + "4270", + "5126" + ], + "broader_ids": [ + "2106", + "2705", + "5780" + ], + "geo_area_code": "ISR" + }, + { + "id": "1519", + "label": "Italy", + "alt_labels": [ + "Italian Republic" + ], + "related_ids": [ + "1520" + ], + "broader_ids": [ + "122", + "2106", + "2200", + "5283", + "912" + ], + "geo_area_code": "ITA" + }, + { + "id": "152", + "label": "agricultural building", + "alt_labels": [ + "barn", + "byre", + "cattle-shed", + "cow-shed", + "farm building" + ], + "related_ids": [ + "4298", + "4831" + ], + "broader_ids": [ + "2014" + ], + "geo_area_code": null + }, + { + "id": "1520", + "label": "regions of Italy", + "alt_labels": [], + "related_ids": [ + "1519", + "1900" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1521", + "label": "fallow", + "alt_labels": [], + "related_ids": [ + "1144", + "6318" + ], + "broader_ids": [ + "4412" + ], + "geo_area_code": null + }, + { + "id": "1522", + "label": "Jamaica", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1180", + "2119", + "4069", + "5083", + "5265", + "c_b2c019c8" + ], + "geo_area_code": "JAM" + }, + { + "id": "1523", + "label": "hydraulic works", + "alt_labels": [ + "hydraulic engineering", + "pumping station" + ], + "related_ids": [ + "1723", + "3786", + "476", + "597" + ], + "broader_ids": [ + "4565" + ], + "geo_area_code": null + }, + { + "id": "1524", + "label": "Japan", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2106", + "6205", + "956" + ], + "geo_area_code": "JPN" + }, + { + "id": "1525", + "label": "kitchen garden", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4358" + ], + "geo_area_code": null + }, + { + "id": "1526", + "label": "Java", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1355" + ], + "geo_area_code": null + }, + { + "id": "1527", + "label": "game of chance", + "alt_labels": [ + "bingo", + "lottery", + "tombola" + ], + "related_ids": [], + "broader_ids": [ + "3334" + ], + "geo_area_code": null + }, + { + "id": "1528", + "label": "young person", + "alt_labels": [ + "adolescence", + "adolescent", + "minor", + "teenager", + "young people", + "youth" + ], + "related_ids": [ + "1529", + "1764", + "375", + "5297", + "6215", + "6230", + "6615" + ], + "broader_ids": [ + "3327" + ], + "geo_area_code": null + }, + { + "id": "1529", + "label": "young worker", + "alt_labels": [], + "related_ids": [ + "1528", + "3529", + "5978", + "6230" + ], + "broader_ids": [ + "1737" + ], + "geo_area_code": null + }, + { + "id": "153", + "label": "road building", + "alt_labels": [], + "related_ids": [ + "3438" + ], + "broader_ids": [ + "4565" + ], + "geo_area_code": null + }, + { + "id": "1530", + "label": "Olympic games", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5723" + ], + "geo_area_code": null + }, + { + "id": "1531", + "label": "Joint European Torus", + "alt_labels": [ + "JET", + "Next European Torus" + ], + "related_ids": [ + "1123" + ], + "broader_ids": [ + "4037" + ], + "geo_area_code": null + }, + { + "id": "1532", + "label": "Jordan", + "alt_labels": [ + "Hashemite Kingdom of Jordan" + ], + "related_ids": [], + "broader_ids": [ + "1658", + "1727", + "1794", + "5780", + "8369", + "c_6e703074" + ], + "geo_area_code": "JOR" + }, + { + "id": "1533", + "label": "Official Journal", + "alt_labels": [], + "related_ids": [ + "2861" + ], + "broader_ids": [ + "492" + ], + "geo_area_code": null + }, + { + "id": "1534", + "label": "water management in agriculture", + "alt_labels": [ + "agricultural drainage", + "irrigation canal", + "irrigation plan" + ], + "related_ids": [ + "1278", + "1542", + "510", + "6317" + ], + "broader_ids": [ + "1483" + ], + "geo_area_code": null + }, + { + "id": "1535", + "label": "continuous working day", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "592" + ], + "geo_area_code": null + }, + { + "id": "1536", + "label": "Judaism", + "alt_labels": [], + "related_ids": [ + "5690", + "6733" + ], + "broader_ids": [ + "3257" + ], + "geo_area_code": null + }, + { + "id": "1537", + "label": "judge", + "alt_labels": [ + "children's magistrate", + "examining magistrate", + "the bench" + ], + "related_ids": [ + "8458" + ], + "broader_ids": [ + "2351" + ], + "geo_area_code": null + }, + { + "id": "1538", + "label": "ruling", + "alt_labels": [ + "court decision", + "court judgment", + "court ruling" + ], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1539", + "label": "administrative court", + "alt_labels": [ + "administrative tribunal", + "court of auditors" + ], + "related_ids": [ + "159", + "171", + "2701", + "517" + ], + "broader_ids": [ + "5923" + ], + "geo_area_code": null + }, + { + "id": "154", + "label": "metal structure", + "alt_labels": [ + "steel structure" + ], + "related_ids": [ + "1868" + ], + "broader_ids": [ + "3879" + ], + "geo_area_code": null + }, + { + "id": "1540", + "label": "court of civil jurisdiction", + "alt_labels": [], + "related_ids": [ + "2699", + "523" + ], + "broader_ids": [ + "1543" + ], + "geo_area_code": null + }, + { + "id": "1541", + "label": "court having special jurisdiction", + "alt_labels": [ + "court for State security" + ], + "related_ids": [ + "885" + ], + "broader_ids": [ + "5923" + ], + "geo_area_code": null + }, + { + "id": "1542", + "label": "rural development", + "alt_labels": [ + "rural planning" + ], + "related_ids": [ + "1513", + "1534", + "222", + "2493", + "4630" + ], + "broader_ids": [ + "2515" + ], + "geo_area_code": null + }, + { + "id": "1543", + "label": "ordinary court of law", + "alt_labels": [ + "county court", + "court of bankruptcy", + "court of first instance", + "court of justice", + "district court" + ], + "related_ids": [ + "2701" + ], + "broader_ids": [ + "5923" + ], + "geo_area_code": null + }, + { + "id": "1544", + "label": "military court", + "alt_labels": [ + "military tribunal" + ], + "related_ids": [ + "7809" + ], + "broader_ids": [ + "1543" + ], + "geo_area_code": null + }, + { + "id": "1545", + "label": "criminal court", + "alt_labels": [ + "general criminal panel", + "police court" + ], + "related_ids": [ + "2704", + "573" + ], + "broader_ids": [ + "1543" + ], + "geo_area_code": null + }, + { + "id": "1546", + "label": "juvenile court", + "alt_labels": [ + "children's panel", + "children's tribunal" + ], + "related_ids": [ + "1940", + "375" + ], + "broader_ids": [ + "1543" + ], + "geo_area_code": null + }, + { + "id": "1547", + "label": "social court", + "alt_labels": [ + "social security tribunal" + ], + "related_ids": [ + "3359", + "580" + ], + "broader_ids": [ + "1543" + ], + "geo_area_code": null + }, + { + "id": "1548", + "label": "higher court", + "alt_labels": [ + "Crown court", + "Queen's Bench Division", + "high court", + "high court of justice", + "supreme court", + "supreme court of appeal" + ], + "related_ids": [], + "broader_ids": [ + "5691" + ], + "geo_area_code": null + }, + { + "id": "1549", + "label": "fine", + "alt_labels": [ + "pecuniary sanction" + ], + "related_ids": [ + "3866" + ], + "broader_ids": [ + "3878" + ], + "geo_area_code": null + }, + { + "id": "155", + "label": "shipbuilding", + "alt_labels": [ + "naval engineering", + "shipbuilding industry", + "shipyard" + ], + "related_ids": [ + "4827", + "4829" + ], + "broader_ids": [ + "1410" + ], + "geo_area_code": null + }, + { + "id": "1550", + "label": "case-law", + "alt_labels": [ + "case law" + ], + "related_ids": [ + "1551", + "3935" + ], + "broader_ids": [ + "4222" + ], + "geo_area_code": null + }, + { + "id": "1551", + "label": "case law (EU)", + "alt_labels": [ + "EC case law", + "EC case-law" + ], + "related_ids": [ + "1550" + ], + "broader_ids": [ + "525" + ], + "geo_area_code": null + }, + { + "id": "1552", + "label": "fruit juice", + "alt_labels": [ + "fruit juice concentrate" + ], + "related_ids": [ + "1115", + "2730" + ], + "broader_ids": [ + "5019" + ], + "geo_area_code": null + }, + { + "id": "1553", + "label": "vegetable juice", + "alt_labels": [], + "related_ids": [ + "1602", + "2731" + ], + "broader_ids": [ + "5019" + ], + "geo_area_code": null + }, + { + "id": "1554", + "label": "jute", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2417" + ], + "geo_area_code": null + }, + { + "id": "1555", + "label": "Cambodia", + "alt_labels": [ + "Kampuchea", + "Kingdom of Cambodia" + ], + "related_ids": [], + "broader_ids": [ + "1847", + "2858" + ], + "geo_area_code": "KHM" + }, + { + "id": "1556", + "label": "kapok", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2417" + ], + "geo_area_code": null + }, + { + "id": "1557", + "label": "Kenya", + "alt_labels": [ + "Republic of Kenya" + ], + "related_ids": [], + "broader_ids": [ + "357", + "5083", + "5107", + "8365" + ], + "geo_area_code": "KEN" + }, + { + "id": "1558", + "label": "amendment", + "alt_labels": [ + "parliamentary veto" + ], + "related_ids": [], + "broader_ids": [ + "2702" + ], + "geo_area_code": null + }, + { + "id": "1559", + "label": "Kiribati", + "alt_labels": [ + "Gilbert Islands", + "Republic of Kiribati" + ], + "related_ids": [], + "broader_ids": [ + "1903", + "5083", + "8366", + "c_b2c019c8" + ], + "geo_area_code": "KIR" + }, + { + "id": "156", + "label": "consultation of information", + "alt_labels": [], + "related_ids": [ + "2918" + ], + "broader_ids": [ + "1422" + ], + "geo_area_code": null + }, + { + "id": "1560", + "label": "Kuwait", + "alt_labels": [ + "State of Kuwait" + ], + "related_ids": [], + "broader_ids": [ + "1658", + "2148", + "5776", + "5777", + "c_6e703074" + ], + "geo_area_code": "KWT" + }, + { + "id": "1561", + "label": "R\u00e9union", + "alt_labels": [ + "Department of R\u00e9union" + ], + "related_ids": [], + "broader_ids": [ + "1086", + "357" + ], + "geo_area_code": "REU" + }, + { + "id": "1562", + "label": "quality label", + "alt_labels": [ + "quality mark", + "standards certificate" + ], + "related_ids": [ + "1252", + "2076", + "2871", + "5233", + "5573" + ], + "broader_ids": [ + "13" + ], + "geo_area_code": null + }, + { + "id": "1563", + "label": "lactose", + "alt_labels": [ + "milk sugar" + ], + "related_ids": [ + "4227" + ], + "broader_ids": [ + "4314" + ], + "geo_area_code": null + }, + { + "id": "1564", + "label": "wool", + "alt_labels": [], + "related_ids": [ + "1418", + "2211", + "3893" + ], + "broader_ids": [ + "2737" + ], + "geo_area_code": null + }, + { + "id": "1565", + "label": "milk", + "alt_labels": [], + "related_ids": [ + "2847", + "4404", + "4639", + "5698" + ], + "broader_ids": [ + "2763" + ], + "geo_area_code": null + }, + { + "id": "1566", + "label": "drinking milk", + "alt_labels": [], + "related_ids": [ + "5017" + ], + "broader_ids": [ + "1565" + ], + "geo_area_code": null + }, + { + "id": "1567", + "label": "trade agreement", + "alt_labels": [ + "trade negotiations", + "trade treaty" + ], + "related_ids": [ + "1792", + "2050", + "207", + "2295", + "2449", + "3461", + "3462", + "3463", + "4130", + "5403", + "6007" + ], + "broader_ids": [ + "3185" + ], + "geo_area_code": null + }, + { + "id": "1568", + "label": "concentrated milk", + "alt_labels": [], + "related_ids": [ + "2741" + ], + "broader_ids": [ + "2763" + ], + "geo_area_code": null + }, + { + "id": "1569", + "label": "raw milk", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1565" + ], + "geo_area_code": null + }, + { + "id": "157", + "label": "worker consultation", + "alt_labels": [ + "trade union consultation" + ], + "related_ids": [], + "broader_ids": [ + "2266" + ], + "geo_area_code": null + }, + { + "id": "1570", + "label": "skimmed milk", + "alt_labels": [ + "liquid skimmed milk", + "processed skimmed milk" + ], + "related_ids": [], + "broader_ids": [ + "1565" + ], + "geo_area_code": null + }, + { + "id": "1571", + "label": "powdered milk", + "alt_labels": [ + "dehydrated milk", + "dried milk", + "freeze-dried milk", + "milk powder" + ], + "related_ids": [ + "2752", + "2764" + ], + "broader_ids": [ + "2763" + ], + "geo_area_code": null + }, + { + "id": "1572", + "label": "whole milk", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1565" + ], + "geo_area_code": null + }, + { + "id": "1573", + "label": "fermented milk", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2763" + ], + "geo_area_code": null + }, + { + "id": "1574", + "label": "homogenised milk", + "alt_labels": [ + "homogenized milk" + ], + "related_ids": [], + "broader_ids": [ + "1565" + ], + "geo_area_code": null + }, + { + "id": "1575", + "label": "pasteurised milk", + "alt_labels": [ + "pasteurized milk" + ], + "related_ids": [ + "2273" + ], + "broader_ids": [ + "1565" + ], + "geo_area_code": null + }, + { + "id": "1576", + "label": "sterilised milk", + "alt_labels": [ + "UHT milk", + "sterilized milk" + ], + "related_ids": [], + "broader_ids": [ + "1565" + ], + "geo_area_code": null + }, + { + "id": "1577", + "label": "soil conditioning", + "alt_labels": [ + "fertilisation", + "land application" + ], + "related_ids": [ + "764" + ], + "broader_ids": [ + "1483" + ], + "geo_area_code": null + }, + { + "id": "1578", + "label": "launching of a product", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3204" + ], + "geo_area_code": null + }, + { + "id": "1579", + "label": "Federation State", + "alt_labels": [ + "Bundesland", + "Land (Germany)", + "State of a Federation" + ], + "related_ids": [], + "broader_ids": [ + "5623" + ], + "geo_area_code": null + }, + { + "id": "158", + "label": "container", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4509" + ], + "geo_area_code": null + }, + { + "id": "1580", + "label": "language", + "alt_labels": [], + "related_ids": [ + "c_090e8e94" + ], + "broader_ids": [ + "1670" + ], + "geo_area_code": null + }, + { + "id": "1581", + "label": "foreign language", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "783" + ], + "geo_area_code": null + }, + { + "id": "1582", + "label": "mother tongue", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "783" + ], + "geo_area_code": null + }, + { + "id": "1583", + "label": "Languedoc-Roussillon", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "c_791e9f27" + ], + "geo_area_code": null + }, + { + "id": "1584", + "label": "Laos", + "alt_labels": [ + "Lao People\u2019s Democratic Republic" + ], + "related_ids": [], + "broader_ids": [ + "1847", + "2858" + ], + "geo_area_code": "LAO" + }, + { + "id": "1585", + "label": "rabbit", + "alt_labels": [], + "related_ids": [ + "2955", + "5439", + "5874" + ], + "broader_ids": [ + "2711" + ], + "geo_area_code": null + }, + { + "id": "1586", + "label": "Latium", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1520" + ], + "geo_area_code": null + }, + { + "id": "1587", + "label": "America", + "alt_labels": [ + "American countries" + ], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1588", + "label": "legality", + "alt_labels": [ + "illegality" + ], + "related_ids": [ + "151" + ], + "broader_ids": [ + "2370" + ], + "geo_area_code": null + }, + { + "id": "1589", + "label": "legislation", + "alt_labels": [ + "legislative act", + "legislative provision" + ], + "related_ids": [ + "2586", + "2702" + ], + "broader_ids": [ + "4222" + ], + "geo_area_code": null + }, + { + "id": "159", + "label": "objections to an election result", + "alt_labels": [], + "related_ids": [ + "1539" + ], + "broader_ids": [ + "3035" + ], + "geo_area_code": null + }, + { + "id": "1590", + "label": "foodstuffs legislation", + "alt_labels": [ + "food legislation", + "regulations on foodstuffs" + ], + "related_ids": [ + "1360", + "1595", + "1596", + "1598", + "1755", + "2710", + "387", + "4307", + "5967", + "6052", + "6307", + "c_60d786af" + ], + "broader_ids": [ + "1268" + ], + "geo_area_code": null + }, + { + "id": "1591", + "label": "anti-dumping legislation", + "alt_labels": [ + "anti-dumping code", + "anti-dumping proceeding" + ], + "related_ids": [ + "588" + ], + "broader_ids": [ + "539" + ], + "geo_area_code": null + }, + { + "id": "1592", + "label": "anti-trust legislation", + "alt_labels": [], + "related_ids": [ + "110", + "3145", + "4574" + ], + "broader_ids": [ + "539" + ], + "geo_area_code": null + }, + { + "id": "1593", + "label": "delegated legislation", + "alt_labels": [], + "related_ids": [ + "2158", + "3038", + "3237" + ], + "broader_ids": [ + "39" + ], + "geo_area_code": null + }, + { + "id": "1594", + "label": "pharmaceutical legislation", + "alt_labels": [ + "control of medicines", + "pharmaceutical regulations" + ], + "related_ids": [ + "1415", + "2367", + "2773" + ], + "broader_ids": [ + "5764" + ], + "geo_area_code": null + }, + { + "id": "1595", + "label": "plant health legislation", + "alt_labels": [ + "phytosanitary legislation", + "regulations on plant health" + ], + "related_ids": [ + "1590", + "1596", + "1763", + "2985", + "4490", + "7222", + "811" + ], + "broader_ids": [ + "2442" + ], + "geo_area_code": null + }, + { + "id": "1596", + "label": "health legislation", + "alt_labels": [ + "health regulations", + "health standard" + ], + "related_ids": [ + "1590", + "1595", + "1755", + "2077", + "5369", + "6304", + "811", + "c_e5d85c14" + ], + "broader_ids": [ + "3885" + ], + "geo_area_code": null + }, + { + "id": "1597", + "label": "school legislation", + "alt_labels": [], + "related_ids": [ + "789" + ], + "broader_ids": [ + "2467" + ], + "geo_area_code": null + }, + { + "id": "1598", + "label": "veterinary legislation", + "alt_labels": [ + "veterinary regulations" + ], + "related_ids": [ + "1590", + "1755", + "1856", + "2785", + "6307", + "811" + ], + "broader_ids": [ + "2442" + ], + "geo_area_code": null + }, + { + "id": "1599", + "label": "legislative period", + "alt_labels": [], + "related_ids": [ + "4147" + ], + "broader_ids": [ + "41" + ], + "geo_area_code": null + }, + { + "id": "16", + "label": "16 ECONOMICS", + "alt_labels": [], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "160", + "label": "adult", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3327" + ], + "geo_area_code": null + }, + { + "id": "1600", + "label": "self-defence", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5490" + ], + "geo_area_code": null + }, + { + "id": "1601", + "label": "legitimacy", + "alt_labels": [], + "related_ids": [ + "1172", + "1173", + "1174", + "695" + ], + "broader_ids": [ + "2370" + ], + "geo_area_code": null + }, + { + "id": "1602", + "label": "vegetable", + "alt_labels": [], + "related_ids": [ + "1553", + "2625", + "2731", + "324" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1603", + "label": "bulb vegetable", + "alt_labels": [ + "garlic", + "onion", + "scallion", + "shallot" + ], + "related_ids": [], + "broader_ids": [ + "1602" + ], + "geo_area_code": null + }, + { + "id": "1604", + "label": "leaf vegetable", + "alt_labels": [ + "Brussels sprout", + "beet", + "cabbage", + "cauliflower", + "celery", + "chicory", + "leek", + "salad vegetable", + "spinach" + ], + "related_ids": [], + "broader_ids": [ + "1602" + ], + "geo_area_code": null + }, + { + "id": "1605", + "label": "fruit vegetable", + "alt_labels": [ + "aubergine", + "capsicum", + "courgette", + "cucumber", + "gherkin", + "marrow", + "melon", + "paprika", + "pimiento", + "pumpkin", + "red pepper", + "sweet pepper", + "tomato" + ], + "related_ids": [], + "broader_ids": [ + "1602" + ], + "geo_area_code": null + }, + { + "id": "1606", + "label": "Central America", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1632" + ], + "geo_area_code": null + }, + { + "id": "1607", + "label": "root vegetable", + "alt_labels": [ + "beetroot", + "carrot", + "celeriac", + "parsnip", + "radish", + "salsify", + "turnip" + ], + "related_ids": [ + "1285", + "1781", + "2548", + "4857", + "4858" + ], + "broader_ids": [ + "1602" + ], + "geo_area_code": null + }, + { + "id": "1608", + "label": "fresh vegetable", + "alt_labels": [], + "related_ids": [ + "2625", + "324", + "5232" + ], + "broader_ids": [ + "1602" + ], + "geo_area_code": null + }, + { + "id": "1609", + "label": "leguminous vegetable", + "alt_labels": [ + "bean", + "broad bean", + "dried legume", + "field bean", + "lentil", + "pea" + ], + "related_ids": [], + "broader_ids": [ + "1602" + ], + "geo_area_code": null + }, + { + "id": "161", + "label": "tariff quota", + "alt_labels": [ + "administration of tariff quota", + "allocation of tariff quota", + "opening of tariff quota", + "quota at a reduced level of duty", + "zero-duty quota" + ], + "related_ids": [ + "2590", + "2781" + ], + "broader_ids": [ + "2519" + ], + "geo_area_code": null + }, + { + "id": "1610", + "label": "Leinster", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1506" + ], + "geo_area_code": null + }, + { + "id": "1611", + "label": "Lesotho", + "alt_labels": [ + "Basutoland", + "Kingdom of Lesotho" + ], + "related_ids": [], + "broader_ids": [ + "342", + "5083", + "c_b2c019c8" + ], + "geo_area_code": "LSO" + }, + { + "id": "1612", + "label": "animal leucosis", + "alt_labels": [ + "bovine leucosis" + ], + "related_ids": [ + "5717" + ], + "broader_ids": [ + "1755" + ], + "geo_area_code": null + }, + { + "id": "1613", + "label": "Lebanon", + "alt_labels": [ + "Lebanese Republic" + ], + "related_ids": [], + "broader_ids": [ + "1658", + "1727", + "5780", + "c_6e703074" + ], + "geo_area_code": "LBN" + }, + { + "id": "1614", + "label": "Liberalism", + "alt_labels": [ + "neo-liberalism" + ], + "related_ids": [ + "2257", + "381", + "4077" + ], + "broader_ids": [ + "1282" + ], + "geo_area_code": null + }, + { + "id": "1615", + "label": "North America", + "alt_labels": [], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1616", + "label": "liberalisation of trade", + "alt_labels": [ + "elimination of trade barriers", + "liberalisation of commerce", + "liberalization of trade" + ], + "related_ids": [ + "2275", + "2957", + "5707", + "614" + ], + "broader_ids": [ + "11" + ], + "geo_area_code": null + }, + { + "id": "1617", + "label": "Liberia", + "alt_labels": [ + "Republic of Liberia" + ], + "related_ids": [], + "broader_ids": [ + "351", + "5083", + "5302" + ], + "geo_area_code": "LBR" + }, + { + "id": "1618", + "label": "freedom of association", + "alt_labels": [ + "right of association", + "right to associate" + ], + "related_ids": [], + "broader_ids": [ + "3900" + ], + "geo_area_code": null + }, + { + "id": "1619", + "label": "freedom of expression", + "alt_labels": [], + "related_ids": [ + "437539", + "5348" + ], + "broader_ids": [ + "3900" + ], + "geo_area_code": null + }, + { + "id": "162", + "label": "contraception", + "alt_labels": [ + "contraceptive", + "contraceptive method", + "female contraception", + "male contraception" + ], + "related_ids": [ + "2003" + ], + "broader_ids": [ + "3168" + ], + "geo_area_code": null + }, + { + "id": "1620", + "label": "freedom of opinion", + "alt_labels": [ + "freedom of thought" + ], + "related_ids": [ + "2001", + "2097", + "3575", + "c_3cd258a4" + ], + "broader_ids": [ + "538" + ], + "geo_area_code": null + }, + { + "id": "1621", + "label": "freedom of communication", + "alt_labels": [], + "related_ids": [ + "175", + "437539", + "513", + "5348" + ], + "broader_ids": [ + "3900" + ], + "geo_area_code": null + }, + { + "id": "1622", + "label": "freedom of the press", + "alt_labels": [ + "media freedom" + ], + "related_ids": [ + "2599", + "5196", + "5348" + ], + "broader_ids": [ + "1621" + ], + "geo_area_code": null + }, + { + "id": "1623", + "label": "freedom of navigation", + "alt_labels": [], + "related_ids": [ + "2040", + "2041", + "569" + ], + "broader_ids": [ + "542" + ], + "geo_area_code": null + }, + { + "id": "1624", + "label": "South America", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1632" + ], + "geo_area_code": null + }, + { + "id": "1625", + "label": "freedom of assembly", + "alt_labels": [ + "right of public meeting" + ], + "related_ids": [], + "broader_ids": [ + "3900" + ], + "geo_area_code": null + }, + { + "id": "1626", + "label": "freedom of trade", + "alt_labels": [], + "related_ids": [ + "1631", + "1638", + "532" + ], + "broader_ids": [ + "3901" + ], + "geo_area_code": null + }, + { + "id": "1628", + "label": "freedom of religious beliefs", + "alt_labels": [ + "freedom of religious worship" + ], + "related_ids": [ + "3257", + "3486", + "459", + "6560", + "c_847fc9f2" + ], + "broader_ids": [ + "538" + ], + "geo_area_code": null + }, + { + "id": "1629", + "label": "bookshop", + "alt_labels": [], + "related_ids": [ + "1680" + ], + "broader_ids": [ + "1370" + ], + "geo_area_code": null + }, + { + "id": "163", + "label": "shorter working week", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1503" + ], + "geo_area_code": null + }, + { + "id": "1630", + "label": "free movement of capital", + "alt_labels": [], + "related_ids": [ + "3299", + "4608" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1631", + "label": "free movement of goods", + "alt_labels": [ + "free movement of commodities", + "free movement of products", + "free trade" + ], + "related_ids": [ + "1626", + "1810", + "3299", + "4380", + "4789", + "6145" + ], + "broader_ids": [ + "1136" + ], + "geo_area_code": null + }, + { + "id": "1632", + "label": "Latin America", + "alt_labels": [], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1633", + "label": "free movement of persons", + "alt_labels": [], + "related_ids": [ + "1634", + "1638", + "1948", + "3299", + "3906", + "5629", + "6222", + "6541", + "8480" + ], + "broader_ids": [ + "567" + ], + "geo_area_code": null + }, + { + "id": "1634", + "label": "free movement of workers", + "alt_labels": [ + "freedom of movement for workers" + ], + "related_ids": [ + "1633", + "1922", + "1946", + "3299", + "3906", + "4557", + "4562", + "5592", + "5629" + ], + "broader_ids": [ + "2454" + ], + "geo_area_code": null + }, + { + "id": "1635", + "label": "free competition", + "alt_labels": [ + "free market" + ], + "related_ids": [ + "2678" + ], + "broader_ids": [ + "2474" + ], + "geo_area_code": null + }, + { + "id": "1636", + "label": "freedom of self-determination", + "alt_labels": [ + "human dignity", + "right to commit suicide" + ], + "related_ids": [ + "4323" + ], + "broader_ids": [ + "538" + ], + "geo_area_code": null + }, + { + "id": "1637", + "label": "free circulation", + "alt_labels": [ + "putting into free circulation" + ], + "related_ids": [ + "1309", + "2771" + ], + "broader_ids": [ + "5842" + ], + "geo_area_code": null + }, + { + "id": "1638", + "label": "freedom to provide services", + "alt_labels": [ + "free movement of services" + ], + "related_ids": [ + "1626", + "1633", + "2602", + "2788", + "3299", + "4021", + "4099" + ], + "broader_ids": [ + "2454" + ], + "geo_area_code": null + }, + { + "id": "1639", + "label": "Libya", + "alt_labels": [ + "Great Socialist People\u2019s Libyan Arab Jamahiriya", + "Libyan Arab Jamahiriya" + ], + "related_ids": [], + "broader_ids": [ + "1658", + "1794", + "2148", + "3407", + "8369", + "c_6e703074" + ], + "geo_area_code": "LBY" + }, + { + "id": "164", + "label": "contract", + "alt_labels": [ + "conclusion of a contract", + "contract law", + "contractual agreement", + "contractual commitment", + "law of contract" + ], + "related_ids": [ + "165", + "166", + "3120", + "524", + "5536", + "6366", + "8480", + "c_e5dbcb63" + ], + "broader_ids": [ + "523" + ], + "geo_area_code": null + }, + { + "id": "1640", + "label": "patents licence", + "alt_labels": [ + "contractual licensing", + "licence under patent" + ], + "related_ids": [], + "broader_ids": [ + "2816" + ], + "geo_area_code": null + }, + { + "id": "1641", + "label": "trade licence", + "alt_labels": [ + "allocation of licence", + "licence authorisation" + ], + "related_ids": [ + "3661" + ], + "broader_ids": [ + "3123" + ], + "geo_area_code": null + }, + { + "id": "1642", + "label": "export licence", + "alt_labels": [ + "export authorisation", + "export certificate", + "export permit" + ], + "related_ids": [ + "2487" + ], + "broader_ids": [ + "491" + ], + "geo_area_code": null + }, + { + "id": "1643", + "label": "asbestos", + "alt_labels": [], + "related_ids": [ + "4307" + ], + "broader_ids": [ + "1935" + ], + "geo_area_code": null + }, + { + "id": "1644", + "label": "import licence", + "alt_labels": [ + "import authorisation", + "import certificate", + "import permit" + ], + "related_ids": [ + "2488" + ], + "broader_ids": [ + "491" + ], + "geo_area_code": null + }, + { + "id": "1645", + "label": "transport licence", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3160" + ], + "geo_area_code": null + }, + { + "id": "1646", + "label": "dismissal", + "alt_labels": [ + "firing" + ], + "related_ids": [ + "4029", + "4492", + "5383" + ], + "broader_ids": [ + "3522" + ], + "geo_area_code": null + }, + { + "id": "1647", + "label": "collective dismissal", + "alt_labels": [ + "collective redundancy" + ], + "related_ids": [], + "broader_ids": [ + "1646" + ], + "geo_area_code": null + }, + { + "id": "1648", + "label": "redundancy", + "alt_labels": [], + "related_ids": [ + "2910" + ], + "broader_ids": [ + "1646" + ], + "geo_area_code": null + }, + { + "id": "1649", + "label": "Liechtenstein", + "alt_labels": [ + "Principality of Liechtenstein" + ], + "related_ids": [], + "broader_ids": [ + "122", + "187", + "913" + ], + "geo_area_code": "LIE" + }, + { + "id": "165", + "label": "insurance contract", + "alt_labels": [ + "insurance policy" + ], + "related_ids": [ + "164" + ], + "broader_ids": [ + "3151" + ], + "geo_area_code": null + }, + { + "id": "1650", + "label": "cork", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2754" + ], + "geo_area_code": null + }, + { + "id": "1651", + "label": "Province of Li\u00e8ge", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3084" + ], + "geo_area_code": null + }, + { + "id": "1652", + "label": "fishing grounds", + "alt_labels": [ + "fisheries" + ], + "related_ids": [ + "4790" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1653", + "label": "workplace", + "alt_labels": [], + "related_ids": [ + "4544" + ], + "broader_ids": [ + "82" + ], + "geo_area_code": null + }, + { + "id": "1654", + "label": "starch", + "alt_labels": [ + "industrial starch", + "starch product", + "tapioca" + ], + "related_ids": [ + "1781", + "2548", + "2963" + ], + "broader_ids": [ + "2736" + ], + "geo_area_code": null + }, + { + "id": "1655", + "label": "transport lines", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3428" + ], + "geo_area_code": null + }, + { + "id": "1656", + "label": "lignite", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5386" + ], + "geo_area_code": null + }, + { + "id": "1657", + "label": "Arab League", + "alt_labels": [ + "league of Arab States" + ], + "related_ids": [ + "1658" + ], + "broader_ids": [ + "2171" + ], + "geo_area_code": null + }, + { + "id": "1658", + "label": "Arab League countries", + "alt_labels": [ + "countries of the Arab League" + ], + "related_ids": [ + "1657", + "2137" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1659", + "label": "Liguria", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1520" + ], + "geo_area_code": null + }, + { + "id": "166", + "label": "work contract", + "alt_labels": [ + "employment contract", + "labour contract" + ], + "related_ids": [ + "164", + "3527" + ], + "broader_ids": [ + "1163" + ], + "geo_area_code": null + }, + { + "id": "1660", + "label": "Limburg", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2288" + ], + "geo_area_code": null + }, + { + "id": "1661", + "label": "Province of Limbourg", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3061" + ], + "geo_area_code": null + }, + { + "id": "1662", + "label": "marketing restriction", + "alt_labels": [], + "related_ids": [ + "13", + "2452", + "2998" + ], + "broader_ids": [ + "806" + ], + "geo_area_code": null + }, + { + "id": "1663", + "label": "association agreement", + "alt_labels": [], + "related_ids": [ + "116", + "2285", + "4048" + ], + "broader_ids": [ + "3461" + ], + "geo_area_code": null + }, + { + "id": "1664", + "label": "Amnesty International", + "alt_labels": [], + "related_ids": [ + "1198", + "584" + ], + "broader_ids": [ + "2191" + ], + "geo_area_code": null + }, + { + "id": "1665", + "label": "aerated drink", + "alt_labels": [ + "lemonade", + "soft drink" + ], + "related_ids": [], + "broader_ids": [ + "5019" + ], + "geo_area_code": null + }, + { + "id": "1666", + "label": "Limousin", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "c_be8fda35" + ], + "geo_area_code": null + }, + { + "id": "1667", + "label": "flax", + "alt_labels": [ + "fibre flax" + ], + "related_ids": [ + "1668", + "3893" + ], + "broader_ids": [ + "2417" + ], + "geo_area_code": null + }, + { + "id": "1668", + "label": "seed flax", + "alt_labels": [ + "flax seed", + "linseed" + ], + "related_ids": [ + "1667" + ], + "broader_ids": [ + "2414" + ], + "geo_area_code": null + }, + { + "id": "1669", + "label": "ingot", + "alt_labels": [ + "billet", + "blank", + "bloom", + "flat bar", + "sheet bar", + "sheet billet", + "slab" + ], + "related_ids": [], + "broader_ids": [ + "3800" + ], + "geo_area_code": null + }, + { + "id": "167", + "label": "industrial counterfeiting", + "alt_labels": [ + "counterfeit medicine" + ], + "related_ids": [ + "1092", + "3169", + "3632", + "524", + "574", + "8434" + ], + "broader_ids": [ + "2816" + ], + "geo_area_code": null + }, + { + "id": "1670", + "label": "linguistics", + "alt_labels": [ + "etymology", + "grammar", + "lexicology", + "phonetics", + "pronunciation", + "semantics", + "spelling" + ], + "related_ids": [ + "1482", + "4441", + "4478", + "4501", + "783" + ], + "broader_ids": [ + "3956" + ], + "geo_area_code": null + }, + { + "id": "1671", + "label": "liqueur", + "alt_labels": [ + "anisette", + "arrack" + ], + "related_ids": [], + "broader_ids": [ + "5018" + ], + "geo_area_code": null + }, + { + "id": "1672", + "label": "liquidation", + "alt_labels": [ + "dissolution of a company", + "winding-up of company" + ], + "related_ids": [ + "524", + "8432" + ], + "broader_ids": [ + "4703" + ], + "geo_area_code": null + }, + { + "id": "1673", + "label": "amortisation", + "alt_labels": [ + "amortization", + "depreciation", + "tax amortisation" + ], + "related_ids": [ + "1682" + ], + "broader_ids": [ + "55" + ], + "geo_area_code": null + }, + { + "id": "1674", + "label": "receivership", + "alt_labels": [ + "compulsory liquidation" + ], + "related_ids": [], + "broader_ids": [ + "1672" + ], + "geo_area_code": null + }, + { + "id": "1675", + "label": "validation of expenditure", + "alt_labels": [ + "authorisation of expenditure" + ], + "related_ids": [], + "broader_ids": [ + "929" + ], + "geo_area_code": null + }, + { + "id": "1676", + "label": "money-market liquidity", + "alt_labels": [ + "banking liquidity" + ], + "related_ids": [], + "broader_ids": [ + "1809" + ], + "geo_area_code": null + }, + { + "id": "1677", + "label": "international liquidity", + "alt_labels": [], + "related_ids": [ + "2002", + "2365", + "5021" + ], + "broader_ids": [ + "1016" + ], + "geo_area_code": null + }, + { + "id": "1678", + "label": "fixed party list", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3977" + ], + "geo_area_code": null + }, + { + "id": "1679", + "label": "electoral register", + "alt_labels": [ + "electoral roll" + ], + "related_ids": [], + "broader_ids": [ + "706" + ], + "geo_area_code": null + }, + { + "id": "168", + "label": "EADI", + "alt_labels": [ + "European Association of Development Research and Training Institutes" + ], + "related_ids": [], + "broader_ids": [ + "2187", + "2191" + ], + "geo_area_code": null + }, + { + "id": "1680", + "label": "literature", + "alt_labels": [ + "novel", + "poem" + ], + "related_ids": [ + "1629", + "2278", + "4105", + "5160" + ], + "broader_ids": [ + "2688" + ], + "geo_area_code": null + }, + { + "id": "1681", + "label": "grey literature", + "alt_labels": [ + "underground literature", + "unpublished document" + ], + "related_ids": [], + "broader_ids": [ + "486" + ], + "geo_area_code": null + }, + { + "id": "1682", + "label": "redemption of public debt", + "alt_labels": [], + "related_ids": [ + "1300", + "1673" + ], + "broader_ids": [ + "424" + ], + "geo_area_code": null + }, + { + "id": "1683", + "label": "littoral", + "alt_labels": [ + "beach", + "coast" + ], + "related_ids": [ + "2532", + "3043", + "3142" + ], + "broader_ids": [ + "5742" + ], + "geo_area_code": null + }, + { + "id": "1684", + "label": "delivery", + "alt_labels": [ + "consignment", + "delivery costs", + "means of delivery", + "shipment" + ], + "related_ids": [ + "1099" + ], + "broader_ids": [ + "474" + ], + "geo_area_code": null + }, + { + "id": "1685", + "label": "energy site", + "alt_labels": [ + "geographical source of energy" + ], + "related_ids": [ + "2821", + "3326", + "3538", + "3764", + "941" + ], + "broader_ids": [ + "2498" + ], + "geo_area_code": null + }, + { + "id": "1686", + "label": "location of production", + "alt_labels": [ + "location of agricultural production" + ], + "related_ids": [ + "2709", + "3326", + "4630" + ], + "broader_ids": [ + "2477" + ], + "geo_area_code": null + }, + { + "id": "1687", + "label": "property leasing", + "alt_labels": [ + "house rental", + "real-estate leasing", + "rent" + ], + "related_ids": [ + "5710" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1688", + "label": "hire purchase", + "alt_labels": [ + "leasing" + ], + "related_ids": [ + "293" + ], + "broader_ids": [ + "5268" + ], + "geo_area_code": null + }, + { + "id": "1689", + "label": "lockout", + "alt_labels": [ + "lock-out" + ], + "related_ids": [], + "broader_ids": [ + "98" + ], + "geo_area_code": null + }, + { + "id": "169", + "label": "plywood", + "alt_labels": [], + "related_ids": [ + "3881" + ], + "broader_ids": [ + "2754" + ], + "geo_area_code": null + }, + { + "id": "1690", + "label": "housing", + "alt_labels": [ + "dwelling", + "residential building" + ], + "related_ids": [ + "2496", + "6900" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1691", + "label": "illiteracy", + "alt_labels": [], + "related_ids": [ + "1419", + "512" + ], + "broader_ids": [ + "2690" + ], + "geo_area_code": null + }, + { + "id": "1692", + "label": "multi-storey dwelling", + "alt_labels": [ + "block of flats" + ], + "related_ids": [ + "234" + ], + "broader_ids": [ + "1690" + ], + "geo_area_code": null + }, + { + "id": "1693", + "label": "single-family housing", + "alt_labels": [ + "house", + "villa" + ], + "related_ids": [], + "broader_ids": [ + "1690" + ], + "geo_area_code": null + }, + { + "id": "1694", + "label": "substandard housing", + "alt_labels": [ + "insanitary housing", + "sub-standard housing" + ], + "related_ids": [], + "broader_ids": [ + "1690" + ], + "geo_area_code": null + }, + { + "id": "1695", + "label": "subsidised housing", + "alt_labels": [ + "council housing", + "low rent accommodation", + "subsidized housing" + ], + "related_ids": [], + "broader_ids": [ + "1690" + ], + "geo_area_code": null + }, + { + "id": "1696", + "label": "software", + "alt_labels": [ + "computer programme", + "computer programming", + "software development", + "software engineering", + "software industry", + "software package" + ], + "related_ids": [ + "6182" + ], + "broader_ids": [ + "1405" + ], + "geo_area_code": null + }, + { + "id": "1697", + "label": "legal rule", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1589" + ], + "geo_area_code": null + }, + { + "id": "1698", + "label": "finance act", + "alt_labels": [ + "budget law" + ], + "related_ids": [], + "broader_ids": [ + "144" + ], + "geo_area_code": null + }, + { + "id": "1699", + "label": "outline law", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1697" + ], + "geo_area_code": null + }, + { + "id": "17", + "label": "UN Commission", + "alt_labels": [ + "United Nations Commission" + ], + "related_ids": [], + "broader_ids": [ + "8384" + ], + "geo_area_code": null + }, + { + "id": "170", + "label": "taxpayer", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1021" + ], + "geo_area_code": null + }, + { + "id": "1700", + "label": "leisure", + "alt_labels": [ + "free time", + "leisure policy", + "leisure society" + ], + "related_ids": [ + "3464", + "442", + "7195", + "c_ea3f5ed2" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1701", + "label": "Lombardy", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1520" + ], + "geo_area_code": null + }, + { + "id": "1702", + "label": "Lorraine", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "c_c44f1704" + ], + "geo_area_code": null + }, + { + "id": "1703", + "label": "low rent", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "556" + ], + "geo_area_code": null + }, + { + "id": "1704", + "label": "lubricants", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3798" + ], + "geo_area_code": null + }, + { + "id": "1705", + "label": "toy library", + "alt_labels": [], + "related_ids": [ + "3334" + ], + "broader_ids": [ + "4366" + ], + "geo_area_code": null + }, + { + "id": "1706", + "label": "fire protection", + "alt_labels": [ + "firefighting", + "protection against fire" + ], + "related_ids": [ + "1335", + "2759", + "5219" + ], + "broader_ids": [ + "2825" + ], + "geo_area_code": null + }, + { + "id": "1707", + "label": "pollution control measures", + "alt_labels": [ + "reduction of pollution" + ], + "related_ids": [ + "2524", + "4419", + "542", + "744" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1708", + "label": "fight against crime", + "alt_labels": [ + "crime prevention" + ], + "related_ids": [ + "3348", + "3355", + "574", + "c_9d09fbc3" + ], + "broader_ids": [ + "2517" + ], + "geo_area_code": null + }, + { + "id": "1709", + "label": "fight against wastage", + "alt_labels": [], + "related_ids": [ + "1135", + "1158", + "c_fa0acac6" + ], + "broader_ids": [ + "2470" + ], + "geo_area_code": null + }, + { + "id": "171", + "label": "administrative check", + "alt_labels": [ + "administrative control" + ], + "related_ids": [ + "1539", + "174", + "206", + "2579", + "5945" + ], + "broader_ids": [ + "39" + ], + "geo_area_code": null + }, + { + "id": "1710", + "label": "class struggle", + "alt_labels": [], + "related_ids": [ + "6002" + ], + "broader_ids": [ + "101" + ], + "geo_area_code": null + }, + { + "id": "1711", + "label": "cost-benefit analysis", + "alt_labels": [], + "related_ids": [ + "5972", + "6396" + ], + "broader_ids": [ + "1791" + ], + "geo_area_code": null + }, + { + "id": "1712", + "label": "Luxembourg", + "alt_labels": [ + "Grand Duchy of Luxembourg" + ], + "related_ids": [], + "broader_ids": [ + "122", + "2106", + "2200", + "4845", + "5283", + "913" + ], + "geo_area_code": "LUX" + }, + { + "id": "1713", + "label": "Province of Luxembourg", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3084" + ], + "geo_area_code": null + }, + { + "id": "1714", + "label": "lucerne", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2412" + ], + "geo_area_code": null + }, + { + "id": "1715", + "label": "freeze-drying", + "alt_labels": [], + "related_ids": [ + "2764" + ], + "broader_ids": [ + "132" + ], + "geo_area_code": null + }, + { + "id": "1716", + "label": "Macao", + "alt_labels": [ + "Macao (China)", + "Macao SAR", + "Macao Special Administrative Region", + "Macao Special Administrative Region of the People\u2019s Republic of China" + ], + "related_ids": [], + "broader_ids": [ + "956" + ], + "geo_area_code": "MAC" + }, + { + "id": "1717", + "label": "Macedonia", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1184" + ], + "geo_area_code": null + }, + { + "id": "1718", + "label": "machinery", + "alt_labels": [], + "related_ids": [ + "1719", + "1726", + "3831", + "3864" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1719", + "label": "agricultural machinery", + "alt_labels": [ + "farm machinery" + ], + "related_ids": [ + "1718", + "4655" + ], + "broader_ids": [ + "846" + ], + "geo_area_code": null + }, + { + "id": "172", + "label": "air traffic control", + "alt_labels": [ + "air corridor", + "air lane", + "airway" + ], + "related_ids": [ + "195", + "2039", + "4505", + "5887", + "906" + ], + "broader_ids": [ + "3131" + ], + "geo_area_code": null + }, + { + "id": "1720", + "label": "office equipment", + "alt_labels": [ + "calculator", + "dictating machine", + "photocopier", + "typewriter", + "word processor" + ], + "related_ids": [ + "5071", + "5646" + ], + "broader_ids": [ + "1400" + ], + "geo_area_code": null + }, + { + "id": "1721", + "label": "cost-effectiveness analysis", + "alt_labels": [], + "related_ids": [ + "4413", + "5972" + ], + "broader_ids": [ + "1791" + ], + "geo_area_code": null + }, + { + "id": "1722", + "label": "harvester", + "alt_labels": [ + "combine harvester", + "reaping machine" + ], + "related_ids": [ + "2925" + ], + "broader_ids": [ + "1719" + ], + "geo_area_code": null + }, + { + "id": "1723", + "label": "hydraulic machinery", + "alt_labels": [ + "hydraulic equipment", + "water turbine", + "water wheel" + ], + "related_ids": [ + "1523", + "750" + ], + "broader_ids": [ + "1718" + ], + "geo_area_code": null + }, + { + "id": "1724", + "label": "machine tool", + "alt_labels": [ + "transfer machine" + ], + "related_ids": [ + "1371" + ], + "broader_ids": [ + "1718" + ], + "geo_area_code": null + }, + { + "id": "1725", + "label": "pneumatic machinery", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1718" + ], + "geo_area_code": null + }, + { + "id": "1726", + "label": "textile machine", + "alt_labels": [ + "loom", + "sewing machine" + ], + "related_ids": [ + "1718" + ], + "broader_ids": [ + "1418" + ], + "geo_area_code": null + }, + { + "id": "1727", + "label": "Mashreq", + "alt_labels": [], + "related_ids": [ + "690" + ], + "broader_ids": [ + "2705" + ], + "geo_area_code": null + }, + { + "id": "1728", + "label": "macroeconomics", + "alt_labels": [], + "related_ids": [ + "3933", + "637", + "c_062f6587" + ], + "broader_ids": [ + "1800" + ], + "geo_area_code": null + }, + { + "id": "1729", + "label": "Madagascar", + "alt_labels": [ + "Malagasy Republic", + "Republic of Madagascar" + ], + "related_ids": [], + "broader_ids": [ + "357", + "5083" + ], + "geo_area_code": "MDG" + }, + { + "id": "173", + "label": "budgetary control", + "alt_labels": [ + "budget monitoring" + ], + "related_ids": [ + "256", + "4675" + ], + "broader_ids": [ + "929" + ], + "geo_area_code": null + }, + { + "id": "1730", + "label": "Madeira", + "alt_labels": [ + "Autonomous region of Madeira" + ], + "related_ids": [], + "broader_ids": [ + "2564" + ], + "geo_area_code": null + }, + { + "id": "1731", + "label": "input-output analysis", + "alt_labels": [ + "input-output table", + "sectoral analysis" + ], + "related_ids": [ + "2408", + "54" + ], + "broader_ids": [ + "1800" + ], + "geo_area_code": null + }, + { + "id": "1732", + "label": "supermarket", + "alt_labels": [ + "department store", + "hypermarket", + "large store", + "superstore" + ], + "related_ids": [], + "broader_ids": [ + "3199" + ], + "geo_area_code": null + }, + { + "id": "1733", + "label": "discount store", + "alt_labels": [ + "bargain store" + ], + "related_ids": [], + "broader_ids": [ + "3199" + ], + "geo_area_code": null + }, + { + "id": "1734", + "label": "Maghreb", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3407" + ], + "geo_area_code": null + }, + { + "id": "1735", + "label": "magistrate", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2351" + ], + "geo_area_code": null + }, + { + "id": "1736", + "label": "magnesium", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1885" + ], + "geo_area_code": null + }, + { + "id": "1737", + "label": "labour force", + "alt_labels": [ + "manpower", + "structure of the labour force", + "worker" + ], + "related_ids": [ + "1738", + "4299" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1738", + "label": "agricultural labour force", + "alt_labels": [ + "agricultural worker", + "farm employee", + "farm labourer", + "farm worker" + ], + "related_ids": [ + "1737", + "2207", + "4556", + "4563", + "808" + ], + "broader_ids": [ + "2551" + ], + "geo_area_code": null + }, + { + "id": "1739", + "label": "family worker", + "alt_labels": [], + "related_ids": [ + "3525", + "4552", + "650", + "821", + "942" + ], + "broader_ids": [ + "1737" + ], + "geo_area_code": null + }, + { + "id": "174", + "label": "management audit", + "alt_labels": [], + "related_ids": [ + "171", + "189", + "6064" + ], + "broader_ids": [ + "4413" + ], + "geo_area_code": null + }, + { + "id": "1740", + "label": "female worker", + "alt_labels": [ + "female labour", + "female work force" + ], + "related_ids": [ + "3530", + "4544", + "5977", + "687" + ], + "broader_ids": [ + "1737" + ], + "geo_area_code": null + }, + { + "id": "1741", + "label": "water analysis", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3144" + ], + "geo_area_code": null + }, + { + "id": "1742", + "label": "job preservation", + "alt_labels": [], + "related_ids": [ + "723", + "7949" + ], + "broader_ids": [ + "2468" + ], + "geo_area_code": null + }, + { + "id": "1743", + "label": "peacekeeping", + "alt_labels": [ + "keeping the peace", + "preserving peace", + "safeguarding peace" + ], + "related_ids": [ + "8481", + "c_2e08d60f" + ], + "broader_ids": [ + "6722" + ], + "geo_area_code": null + }, + { + "id": "1744", + "label": "maize", + "alt_labels": [], + "related_ids": [ + "2956" + ], + "broader_ids": [ + "5360" + ], + "geo_area_code": null + }, + { + "id": "1745", + "label": "publisher", + "alt_labels": [ + "publishing house" + ], + "related_ids": [], + "broader_ids": [ + "667" + ], + "geo_area_code": null + }, + { + "id": "1746", + "label": "absolute majority", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1748" + ], + "geo_area_code": null + }, + { + "id": "1747", + "label": "age of majority", + "alt_labels": [], + "related_ids": [ + "3513" + ], + "broader_ids": [ + "5161" + ], + "geo_area_code": null + }, + { + "id": "1748", + "label": "majority voting", + "alt_labels": [], + "related_ids": [ + "4754", + "4762" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1749", + "label": "political majority", + "alt_labels": [], + "related_ids": [ + "1197", + "2258" + ], + "broader_ids": [ + "4704" + ], + "geo_area_code": null + }, + { + "id": "175", + "label": "control of communications", + "alt_labels": [], + "related_ids": [ + "1621" + ], + "broader_ids": [ + "2473" + ], + "geo_area_code": null + }, + { + "id": "1750", + "label": "qualified majority", + "alt_labels": [ + "reinforced majority" + ], + "related_ids": [], + "broader_ids": [ + "1748" + ], + "geo_area_code": null + }, + { + "id": "1751", + "label": "silent majority", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2001" + ], + "geo_area_code": null + }, + { + "id": "1752", + "label": "information analysis", + "alt_labels": [ + "data analysis", + "documentary analysis" + ], + "related_ids": [], + "broader_ids": [ + "494" + ], + "geo_area_code": null + }, + { + "id": "1753", + "label": "simple majority", + "alt_labels": [ + "relative majority" + ], + "related_ids": [], + "broader_ids": [ + "1748" + ], + "geo_area_code": null + }, + { + "id": "1754", + "label": "illness", + "alt_labels": [ + "disease" + ], + "related_ids": [ + "102", + "1854", + "1991" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1755", + "label": "animal disease", + "alt_labels": [ + "animal pathology", + "epizootic disease", + "epizooty" + ], + "related_ids": [ + "1590", + "1596", + "1598", + "6152", + "6163" + ], + "broader_ids": [ + "5877" + ], + "geo_area_code": null + }, + { + "id": "1756", + "label": "respiratory disease", + "alt_labels": [ + "asthma", + "respiratory disorder" + ], + "related_ids": [], + "broader_ids": [ + "1754" + ], + "geo_area_code": null + }, + { + "id": "1757", + "label": "cardiovascular disease", + "alt_labels": [ + "heart disease" + ], + "related_ids": [], + "broader_ids": [ + "1754" + ], + "geo_area_code": null + }, + { + "id": "1758", + "label": "endemic disease", + "alt_labels": [], + "related_ids": [ + "5225", + "838" + ], + "broader_ids": [ + "1754" + ], + "geo_area_code": null + }, + { + "id": "1759", + "label": "infectious disease", + "alt_labels": [ + "bacterial disease", + "cholera", + "communicable disease", + "contagious disease", + "dengue", + "ebola", + "flu", + "influenza", + "leprosy", + "malaria", + "parasitic disease", + "sleeping sickness", + "smallpox", + "trypanosomiasis", + "tuberculosis", + "yellow fever" + ], + "related_ids": [ + "c_7dda56e2" + ], + "broader_ids": [ + "1754" + ], + "geo_area_code": null + }, + { + "id": "176", + "label": "EFTA", + "alt_labels": [ + "EFTA Surveillance Authority", + "European Free Trade Association" + ], + "related_ids": [ + "187", + "2275", + "4789", + "5618" + ], + "broader_ids": [ + "2187" + ], + "geo_area_code": null + }, + { + "id": "1760", + "label": "mental illness", + "alt_labels": [], + "related_ids": [ + "1480", + "2855", + "3351", + "5878" + ], + "broader_ids": [ + "1754" + ], + "geo_area_code": null + }, + { + "id": "1761", + "label": "occupational disease", + "alt_labels": [ + "asbestosis", + "industrial disease", + "pneumoconiosis" + ], + "related_ids": [ + "1993" + ], + "broader_ids": [ + "4039" + ], + "geo_area_code": null + }, + { + "id": "1762", + "label": "tropical disease", + "alt_labels": [], + "related_ids": [ + "5225" + ], + "broader_ids": [ + "1754" + ], + "geo_area_code": null + }, + { + "id": "1763", + "label": "plant disease", + "alt_labels": [ + "diseases of plants", + "plant pathology" + ], + "related_ids": [ + "1595", + "191", + "2232", + "4490" + ], + "broader_ids": [ + "2723" + ], + "geo_area_code": null + }, + { + "id": "1764", + "label": "disaffection of young people", + "alt_labels": [], + "related_ids": [ + "1528", + "2004" + ], + "broader_ids": [ + "2690" + ], + "geo_area_code": null + }, + { + "id": "1766", + "label": "Malawi", + "alt_labels": [ + "Nyasaland", + "Republic of Malawi" + ], + "related_ids": [], + "broader_ids": [ + "357", + "5083" + ], + "geo_area_code": "MWI" + }, + { + "id": "1767", + "label": "Malaysia", + "alt_labels": [ + "Eastern Malaysia", + "Labuan", + "Malaya", + "Peninsular Malaysia", + "Sabah", + "Sarawak", + "West Malaysia" + ], + "related_ids": [ + "c_7d7608fa" + ], + "broader_ids": [ + "1847", + "2858", + "6205" + ], + "geo_area_code": "MYS" + }, + { + "id": "1768", + "label": "Maldives", + "alt_labels": [ + "Maldive Islands", + "Republic of Maldives" + ], + "related_ids": [], + "broader_ids": [ + "2848", + "8367", + "c_b2c019c8" + ], + "geo_area_code": "MDV" + }, + { + "id": "1769", + "label": "Mali", + "alt_labels": [ + "Republic of Mali" + ], + "related_ids": [], + "broader_ids": [ + "351", + "4607", + "5083", + "5302" + ], + "geo_area_code": "MLI" + }, + { + "id": "177", + "label": "pollution control", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1707" + ], + "geo_area_code": null + }, + { + "id": "1770", + "label": "malnutrition", + "alt_labels": [], + "related_ids": [ + "2318" + ], + "broader_ids": [ + "5715" + ], + "geo_area_code": null + }, + { + "id": "1771", + "label": "Falkland Islands", + "alt_labels": [ + "Falklands", + "Malvinas", + "South Georgia", + "South Sandwich Islands" + ], + "related_ids": [], + "broader_ids": [ + "1624", + "3778" + ], + "geo_area_code": "FLK" + }, + { + "id": "1772", + "label": "malt", + "alt_labels": [ + "roasted malt", + "unroasted malt" + ], + "related_ids": [ + "1378", + "2193" + ], + "broader_ids": [ + "2729" + ], + "geo_area_code": null + }, + { + "id": "1773", + "label": "demographic analysis", + "alt_labels": [ + "population analysis" + ], + "related_ids": [ + "3318" + ], + "broader_ids": [ + "385" + ], + "geo_area_code": null + }, + { + "id": "1774", + "label": "Malta", + "alt_labels": [ + "Gozo", + "Republic of Malta" + ], + "related_ids": [], + "broader_ids": [ + "122", + "5283", + "912", + "c_b2c019c8" + ], + "geo_area_code": "MLT" + }, + { + "id": "1775", + "label": "marine mammal", + "alt_labels": [ + "cetacean" + ], + "related_ids": [], + "broader_ids": [ + "5722" + ], + "geo_area_code": null + }, + { + "id": "1776", + "label": "English Channel", + "alt_labels": [], + "related_ids": [ + "5212" + ], + "broader_ids": [ + "2110" + ], + "geo_area_code": null + }, + { + "id": "1777", + "label": "power of attorney", + "alt_labels": [ + "letter of attorney", + "procuration" + ], + "related_ids": [], + "broader_ids": [ + "164" + ], + "geo_area_code": null + }, + { + "id": "1778", + "label": "elective office", + "alt_labels": [ + "compulsory mandate", + "local mandate", + "national mandate", + "outgoing cabinet", + "outgoing government", + "outgoing member", + "parliamentary mandate", + "representative mandate", + "resignation of an elected representative", + "resigning member", + "term of office" + ], + "related_ids": [ + "471", + "695" + ], + "broader_ids": [ + "2246" + ], + "geo_area_code": null + }, + { + "id": "1779", + "label": "manganese", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1885" + ], + "geo_area_code": null + }, + { + "id": "178", + "label": "liquidity control", + "alt_labels": [ + "open-market operations", + "open-market policy" + ], + "related_ids": [ + "2495", + "521" + ], + "broader_ids": [ + "2510" + ], + "geo_area_code": null + }, + { + "id": "1780", + "label": "cultural event", + "alt_labels": [ + "art exhibition", + "socio-cultural promotion" + ], + "related_ids": [ + "5772" + ], + "broader_ids": [ + "2459" + ], + "geo_area_code": null + }, + { + "id": "1781", + "label": "cassava", + "alt_labels": [], + "related_ids": [ + "1607", + "1654", + "2418" + ], + "broader_ids": [ + "2416" + ], + "geo_area_code": null + }, + { + "id": "1782", + "label": "balance-sheet analysis", + "alt_labels": [], + "related_ids": [ + "1791", + "1800", + "4675", + "4884" + ], + "broader_ids": [ + "1164" + ], + "geo_area_code": null + }, + { + "id": "1783", + "label": "unskilled worker", + "alt_labels": [ + "labourer" + ], + "related_ids": [], + "broader_ids": [ + "2207" + ], + "geo_area_code": null + }, + { + "id": "1784", + "label": "school textbook", + "alt_labels": [ + "school book" + ], + "related_ids": [ + "486" + ], + "broader_ids": [ + "3278" + ], + "geo_area_code": null + }, + { + "id": "1785", + "label": "Maoism", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1282" + ], + "geo_area_code": null + }, + { + "id": "1786", + "label": "market", + "alt_labels": [ + "market State", + "market operation", + "market situation", + "market structure" + ], + "related_ids": [ + "1788", + "2128", + "3109" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1787", + "label": "futures market", + "alt_labels": [ + "contrat forward", + "financial future", + "forward contract", + "forward market", + "futures", + "futures contract" + ], + "related_ids": [ + "1799" + ], + "broader_ids": [ + "c_a18525ab" + ], + "geo_area_code": null + }, + { + "id": "1788", + "label": "agricultural market", + "alt_labels": [], + "related_ids": [ + "1786" + ], + "broader_ids": [ + "2442" + ], + "geo_area_code": null + }, + { + "id": "1789", + "label": "EU agricultural market", + "alt_labels": [ + "Community agricultural market", + "European Union agricultural market", + "agricultural market of the EU", + "agricultural market of the European Union" + ], + "related_ids": [ + "1795", + "2443" + ], + "broader_ids": [ + "1788" + ], + "geo_area_code": null + }, + { + "id": "179", + "label": "production control", + "alt_labels": [ + "product inspection" + ], + "related_ids": [], + "broader_ids": [ + "3632" + ], + "geo_area_code": null + }, + { + "id": "1790", + "label": "spot market", + "alt_labels": [ + "cash market" + ], + "related_ids": [ + "1799" + ], + "broader_ids": [ + "1804" + ], + "geo_area_code": null + }, + { + "id": "1791", + "label": "cost analysis", + "alt_labels": [], + "related_ids": [ + "1782", + "1800", + "1811" + ], + "broader_ids": [ + "1155" + ], + "geo_area_code": null + }, + { + "id": "1792", + "label": "common market", + "alt_labels": [], + "related_ids": [ + "1463", + "1567", + "1793", + "3299", + "3727", + "5738", + "8400" + ], + "broader_ids": [ + "3013" + ], + "geo_area_code": null + }, + { + "id": "1793", + "label": "Arab Common Market", + "alt_labels": [], + "related_ids": [ + "1792", + "1794" + ], + "broader_ids": [ + "8370" + ], + "geo_area_code": null + }, + { + "id": "1794", + "label": "Arab Common Market countries", + "alt_labels": [ + "countries of the Arab Common Market" + ], + "related_ids": [ + "1793" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1795", + "label": "EU market", + "alt_labels": [ + "Community market", + "European Union market" + ], + "related_ids": [ + "1789", + "3299" + ], + "broader_ids": [ + "1786" + ], + "geo_area_code": null + }, + { + "id": "1796", + "label": "supplies contract", + "alt_labels": [ + "public supply contract" + ], + "related_ids": [], + "broader_ids": [ + "1810" + ], + "geo_area_code": null + }, + { + "id": "1797", + "label": "negotiated contract", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1810" + ], + "geo_area_code": null + }, + { + "id": "1798", + "label": "works contract", + "alt_labels": [ + "public works contract" + ], + "related_ids": [], + "broader_ids": [ + "1810" + ], + "geo_area_code": null + }, + { + "id": "1799", + "label": "foreign exchange market", + "alt_labels": [ + "FX market", + "Forex market", + "foreign currency market" + ], + "related_ids": [ + "1787", + "1790", + "2002", + "2151", + "3239" + ], + "broader_ids": [ + "2486" + ], + "geo_area_code": null + }, + { + "id": "18", + "label": "parliamentary committee", + "alt_labels": [ + "parliamentary sub-committee" + ], + "related_ids": [ + "19", + "2895" + ], + "broader_ids": [ + "53" + ], + "geo_area_code": null + }, + { + "id": "180", + "label": "quality control of industrial products", + "alt_labels": [ + "quality assurance of industrial products" + ], + "related_ids": [ + "2758", + "5480", + "6271" + ], + "broader_ids": [ + "3632" + ], + "geo_area_code": null + }, + { + "id": "1800", + "label": "economic analysis", + "alt_labels": [ + "analysis of economic activity", + "economic evaluation", + "economic study" + ], + "related_ids": [ + "1782", + "1791", + "1811", + "2128", + "310", + "56", + "6362", + "c_87ccc7c3" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1801", + "label": "commodities market", + "alt_labels": [], + "related_ids": [ + "2665", + "2748", + "4828" + ], + "broader_ids": [ + "1786" + ], + "geo_area_code": null + }, + { + "id": "1802", + "label": "labour market", + "alt_labels": [ + "employment level", + "employment situation" + ], + "related_ids": [ + "2468", + "4299", + "4700", + "5974" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1803", + "label": "foreign market", + "alt_labels": [], + "related_ids": [ + "9" + ], + "broader_ids": [ + "1786" + ], + "geo_area_code": null + }, + { + "id": "1804", + "label": "financial market", + "alt_labels": [ + "financial activity", + "international financial market", + "securities market" + ], + "related_ids": [ + "1452", + "1809", + "2129", + "c_20fde7af", + "c_896e199b", + "c_96124aaf", + "c_ab84e157", + "c_b499ede2" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1805", + "label": "real estate market", + "alt_labels": [], + "related_ids": [ + "2813", + "2814", + "4243" + ], + "broader_ids": [ + "4619" + ], + "geo_area_code": null + }, + { + "id": "1806", + "label": "domestic market", + "alt_labels": [ + "national market" + ], + "related_ids": [ + "10", + "146", + "3299" + ], + "broader_ids": [ + "1786" + ], + "geo_area_code": null + }, + { + "id": "1807", + "label": "international market", + "alt_labels": [ + "world market", + "world market situation" + ], + "related_ids": [ + "11", + "c_8150867f" + ], + "broader_ids": [ + "1786" + ], + "geo_area_code": null + }, + { + "id": "1808", + "label": "open market", + "alt_labels": [], + "related_ids": [ + "2959" + ], + "broader_ids": [ + "1799" + ], + "geo_area_code": null + }, + { + "id": "1809", + "label": "money market", + "alt_labels": [ + "international money market" + ], + "related_ids": [ + "1804", + "4798" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1810", + "label": "public contract", + "alt_labels": [], + "related_ids": [ + "1018", + "1631", + "5536", + "7934", + "809" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1811", + "label": "financial analysis", + "alt_labels": [], + "related_ids": [ + "1791", + "1800", + "4263", + "54" + ], + "broader_ids": [ + "1164" + ], + "geo_area_code": null + }, + { + "id": "1812", + "label": "official market", + "alt_labels": [ + "controlled market", + "regulated market" + ], + "related_ids": [], + "broader_ids": [ + "1799" + ], + "geo_area_code": null + }, + { + "id": "1813", + "label": "Marches", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1520" + ], + "geo_area_code": null + }, + { + "id": "1814", + "label": "margarine", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "239" + ], + "geo_area_code": null + }, + { + "id": "1815", + "label": "trading margin", + "alt_labels": [ + "mark-up", + "profit margin" + ], + "related_ids": [], + "broader_ids": [ + "55" + ], + "geo_area_code": null + }, + { + "id": "1816", + "label": "fluctuation margin", + "alt_labels": [], + "related_ids": [ + "5562" + ], + "broader_ids": [ + "4394" + ], + "geo_area_code": null + }, + { + "id": "1817", + "label": "marginalisation", + "alt_labels": [ + "fringe of society", + "marginalization", + "social exclusion" + ], + "related_ids": [ + "1469", + "2270", + "6253" + ], + "broader_ids": [ + "2690" + ], + "geo_area_code": null + }, + { + "id": "1818", + "label": "marriage", + "alt_labels": [ + "adultery", + "matrimony", + "wedlock" + ], + "related_ids": [ + "2034", + "2092", + "2335" + ], + "broader_ids": [ + "540" + ], + "geo_area_code": null + }, + { + "id": "1819", + "label": "Morocco", + "alt_labels": [ + "Kingdom of Morocco" + ], + "related_ids": [], + "broader_ids": [ + "1658", + "1734", + "5780", + "c_6e703074" + ], + "geo_area_code": "MAR" + }, + { + "id": "182", + "label": "exchange control", + "alt_labels": [], + "related_ids": [ + "521" + ], + "broader_ids": [ + "2486" + ], + "geo_area_code": null + }, + { + "id": "1820", + "label": "social analysis", + "alt_labels": [ + "social research" + ], + "related_ids": [ + "3956", + "4205", + "c_4254375b" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1821", + "label": "trademark", + "alt_labels": [ + "manufacturer's trademark", + "product brand", + "service mark", + "stamp of origin", + "trade mark" + ], + "related_ids": [ + "1423", + "2871", + "5573", + "893" + ], + "broader_ids": [ + "2816" + ], + "geo_area_code": null + }, + { + "id": "1822", + "label": "Martinique", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1086", + "2032" + ], + "geo_area_code": "MTQ" + }, + { + "id": "1823", + "label": "Marxism", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1282" + ], + "geo_area_code": null + }, + { + "id": "1824", + "label": "budget volume", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2448" + ], + "geo_area_code": null + }, + { + "id": "1825", + "label": "money supply", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1809" + ], + "geo_area_code": null + }, + { + "id": "1826", + "label": "building materials", + "alt_labels": [], + "related_ids": [ + "3756", + "5014", + "5359" + ], + "broader_ids": [ + "3879" + ], + "geo_area_code": null + }, + { + "id": "1827", + "label": "heat-resisting materials", + "alt_labels": [ + "heat-resistant product", + "high-temperature materials" + ], + "related_ids": [], + "broader_ids": [ + "1826" + ], + "geo_area_code": null + }, + { + "id": "1828", + "label": "lighting equipment", + "alt_labels": [ + "electric lamp", + "electric tube", + "fluorescent tube", + "halogen lamp", + "incandescent lamp", + "light bulb", + "neon tube", + "standard lamp" + ], + "related_ids": [ + "626" + ], + "broader_ids": [ + "1401" + ], + "geo_area_code": null + }, + { + "id": "1829", + "label": "anarchism", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1282" + ], + "geo_area_code": null + }, + { + "id": "183", + "label": "merger control", + "alt_labels": [ + "Monopolies and Mergers Commission" + ], + "related_ids": [ + "3060", + "69" + ], + "broader_ids": [ + "539" + ], + "geo_area_code": null + }, + { + "id": "1830", + "label": "construction equipment", + "alt_labels": [ + "construction plant", + "construction site equipment", + "public works equipment", + "site equipment" + ], + "related_ids": [ + "850" + ], + "broader_ids": [ + "3879" + ], + "geo_area_code": null + }, + { + "id": "1831", + "label": "drilling equipment", + "alt_labels": [ + "mining equipment" + ], + "related_ids": [], + "broader_ids": [ + "3753" + ], + "geo_area_code": null + }, + { + "id": "1832", + "label": "hoisting equipment", + "alt_labels": [ + "crane", + "handling equipment machinery", + "hoisting apparatus", + "overhead travelling crane", + "travelling gantry" + ], + "related_ids": [ + "3629", + "850" + ], + "broader_ids": [ + "1718" + ], + "geo_area_code": null + }, + { + "id": "1833", + "label": "electrical equipment", + "alt_labels": [ + "circuit-breaker", + "contact socket", + "electric meter", + "electrical apparatus", + "fuse", + "holder socket", + "socket-outlet and plug", + "switch" + ], + "related_ids": [ + "850" + ], + "broader_ids": [ + "1401" + ], + "geo_area_code": null + }, + { + "id": "1834", + "label": "mechanical equipment", + "alt_labels": [ + "mechanical gear" + ], + "related_ids": [ + "1848", + "850" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1835", + "label": "mathematics", + "alt_labels": [ + "geometry" + ], + "related_ids": [ + "4256", + "5473", + "6267" + ], + "broader_ids": [ + "3949" + ], + "geo_area_code": null + }, + { + "id": "1836", + "label": "milk fat", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2763" + ], + "geo_area_code": null + }, + { + "id": "1837", + "label": "plastics", + "alt_labels": [ + "PVC", + "plastic", + "polyester", + "polyethylene", + "polypropylene", + "polyurethane", + "polyurethane foam", + "polyvinyl chloride" + ], + "related_ids": [ + "2366", + "2420" + ], + "broader_ids": [ + "1383" + ], + "geo_area_code": null + }, + { + "id": "1838", + "label": "ASEAN", + "alt_labels": [ + "Association of South-East Asian Nations" + ], + "related_ids": [ + "1847" + ], + "broader_ids": [ + "2172" + ], + "geo_area_code": null + }, + { + "id": "1839", + "label": "raw material", + "alt_labels": [ + "reference material" + ], + "related_ids": [], + "broader_ids": [ + "2748" + ], + "geo_area_code": null + }, + { + "id": "184", + "label": "assessment", + "alt_labels": [ + "continuous assessment" + ], + "related_ids": [], + "broader_ids": [ + "4554" + ], + "geo_area_code": null + }, + { + "id": "1840", + "label": "radioactive materials", + "alt_labels": [ + "nuclear materials", + "radioactive substance" + ], + "related_ids": [ + "2376", + "2882", + "686", + "c_be0de7b7" + ], + "broader_ids": [ + "753" + ], + "geo_area_code": null + }, + { + "id": "1841", + "label": "Mauritius", + "alt_labels": [ + "Island of Mauritius", + "Republic of Mauritius" + ], + "related_ids": [], + "broader_ids": [ + "357", + "5083", + "c_b2c019c8" + ], + "geo_area_code": "MUS" + }, + { + "id": "1842", + "label": "Mauritania", + "alt_labels": [ + "Islamic Republic of Mauritania" + ], + "related_ids": [], + "broader_ids": [ + "1658", + "1794", + "351", + "5083", + "8369", + "c_6e703074" + ], + "geo_area_code": "MRT" + }, + { + "id": "1843", + "label": "Mayotte", + "alt_labels": [ + "Territorial Collectivity of Mayotte" + ], + "related_ids": [], + "broader_ids": [ + "1086", + "357" + ], + "geo_area_code": "MYT" + }, + { + "id": "1844", + "label": "CACM countries", + "alt_labels": [], + "related_ids": [ + "3727" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1845", + "label": "precision engineering", + "alt_labels": [ + "precision instruments industry" + ], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1846", + "label": "general mechanical engineering", + "alt_labels": [ + "vehicle repair and maintenance" + ], + "related_ids": [ + "2378" + ], + "broader_ids": [ + "1410" + ], + "geo_area_code": null + }, + { + "id": "1847", + "label": "ASEAN countries", + "alt_labels": [], + "related_ids": [ + "1838" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1848", + "label": "mechanisation", + "alt_labels": [ + "mechanization" + ], + "related_ids": [ + "1410", + "1834", + "1849" + ], + "broader_ids": [ + "3632" + ], + "geo_area_code": null + }, + { + "id": "1849", + "label": "mechanisation of agriculture", + "alt_labels": [ + "agricultural mechanisation", + "farm mechanisation", + "mechanization of agriculture" + ], + "related_ids": [ + "1848", + "1958", + "4412" + ], + "broader_ids": [ + "2442" + ], + "geo_area_code": null + }, + { + "id": "185", + "label": "migration control", + "alt_labels": [ + "halting of immigration", + "managed migration" + ], + "related_ids": [ + "4005" + ], + "broader_ids": [ + "2509" + ], + "geo_area_code": null + }, + { + "id": "1850", + "label": "exchange-rate mechanism", + "alt_labels": [ + "ERM", + "monetary intervention mechanism" + ], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1851", + "label": "support mechanism", + "alt_labels": [ + "financial assistance facility", + "financial assistance mechanism", + "financial support mechanism" + ], + "related_ids": [ + "219", + "4671", + "c_062f6587" + ], + "broader_ids": [ + "1460" + ], + "geo_area_code": null + }, + { + "id": "1852", + "label": "medicine", + "alt_labels": [], + "related_ids": [ + "1431", + "1853", + "2773", + "6565", + "6929", + "788" + ], + "broader_ids": [ + "5881" + ], + "geo_area_code": null + }, + { + "id": "1853", + "label": "occupational medicine", + "alt_labels": [], + "related_ids": [ + "1852" + ], + "broader_ids": [ + "4039" + ], + "geo_area_code": null + }, + { + "id": "1854", + "label": "disease prevention", + "alt_labels": [ + "prevention of disease", + "prevention of illness", + "preventive medicine", + "prophylaxis", + "screening for disease", + "screening for illness" + ], + "related_ids": [ + "1754", + "7983", + "c_814bb9e4" + ], + "broader_ids": [ + "5764" + ], + "geo_area_code": null + }, + { + "id": "1855", + "label": "school medicine", + "alt_labels": [], + "related_ids": [ + "680" + ], + "broader_ids": [ + "5764" + ], + "geo_area_code": null + }, + { + "id": "1856", + "label": "veterinary medicine", + "alt_labels": [ + "animal medecine", + "veterinary surgery" + ], + "related_ids": [ + "1445", + "1598", + "2785", + "3595", + "7222" + ], + "broader_ids": [ + "5877" + ], + "geo_area_code": null + }, + { + "id": "1857", + "label": "slaughter of animals", + "alt_labels": [ + "slaughter of livestock", + "stunning of animals" + ], + "related_ids": [ + "1374", + "2620", + "711" + ], + "broader_ids": [ + "4416" + ], + "geo_area_code": null + }, + { + "id": "1858", + "label": "Bretton Woods Agreement", + "alt_labels": [ + "Bretton Woods" + ], + "related_ids": [ + "4344" + ], + "broader_ids": [ + "4371" + ], + "geo_area_code": null + }, + { + "id": "1859", + "label": "anatomy", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5881" + ], + "geo_area_code": null + }, + { + "id": "186", + "label": "abuse of power", + "alt_labels": [ + "misuse of power" + ], + "related_ids": [ + "245", + "2940" + ], + "broader_ids": [ + "523" + ], + "geo_area_code": null + }, + { + "id": "1860", + "label": "mediator", + "alt_labels": [ + "ombudsman" + ], + "related_ids": [ + "2140" + ], + "broader_ids": [ + "5852" + ], + "geo_area_code": null + }, + { + "id": "1861", + "label": "megalopolis", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4709" + ], + "geo_area_code": null + }, + { + "id": "1862", + "label": "Melanesia", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2113" + ], + "geo_area_code": null + }, + { + "id": "1863", + "label": "molasses", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2733" + ], + "geo_area_code": null + }, + { + "id": "1864", + "label": "household", + "alt_labels": [ + "household unit" + ], + "related_ids": [ + "5961", + "965" + ], + "broader_ids": [ + "52" + ], + "geo_area_code": null + }, + { + "id": "1865", + "label": "farm household", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2558" + ], + "geo_area_code": null + }, + { + "id": "1866", + "label": "monthly pay", + "alt_labels": [ + "monthly payment of wages" + ], + "related_ids": [], + "broader_ids": [ + "2491" + ], + "geo_area_code": null + }, + { + "id": "1867", + "label": "joinery", + "alt_labels": [ + "cabinet-making" + ], + "related_ids": [ + "1868", + "814" + ], + "broader_ids": [ + "1386" + ], + "geo_area_code": null + }, + { + "id": "1868", + "label": "metalwork", + "alt_labels": [], + "related_ids": [ + "154", + "1867" + ], + "broader_ids": [ + "3820" + ], + "geo_area_code": null + }, + { + "id": "1869", + "label": "ex-serviceman", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4697" + ], + "geo_area_code": null + }, + { + "id": "187", + "label": "EFTA countries", + "alt_labels": [], + "related_ids": [ + "176" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1870", + "label": "sea", + "alt_labels": [], + "related_ids": [ + "2535", + "3531", + "542" + ], + "broader_ids": [ + "3146" + ], + "geo_area_code": null + }, + { + "id": "1871", + "label": "Baltic Sea", + "alt_labels": [], + "related_ids": [ + "8396", + "c_12742da8" + ], + "broader_ids": [ + "2110" + ], + "geo_area_code": null + }, + { + "id": "1872", + "label": "Irish Sea", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2110" + ], + "geo_area_code": null + }, + { + "id": "1873", + "label": "Andalusia", + "alt_labels": [ + "Autonomous Community of Andalusia" + ], + "related_ids": [], + "broader_ids": [ + "864" + ], + "geo_area_code": null + }, + { + "id": "1874", + "label": "Andorra", + "alt_labels": [ + "Principality of Andorra" + ], + "related_ids": [], + "broader_ids": [ + "122", + "913" + ], + "geo_area_code": "AND" + }, + { + "id": "1875", + "label": "Norwegian Sea", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2110" + ], + "geo_area_code": null + }, + { + "id": "1876", + "label": "Angola", + "alt_labels": [ + "Cabinda", + "Republic of Angola" + ], + "related_ids": [], + "broader_ids": [ + "302", + "5083" + ], + "geo_area_code": "AGO" + }, + { + "id": "1877", + "label": "North Sea", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2110" + ], + "geo_area_code": null + }, + { + "id": "1878", + "label": "anhydride", + "alt_labels": [ + "sulphur dioxide" + ], + "related_ids": [], + "broader_ids": [ + "3810" + ], + "geo_area_code": null + }, + { + "id": "1879", + "label": "Mediterranean Sea", + "alt_labels": [ + "Mediterranean" + ], + "related_ids": [ + "c_a6b5bad0" + ], + "broader_ids": [ + "1870" + ], + "geo_area_code": null + }, + { + "id": "188", + "label": "price control", + "alt_labels": [], + "related_ids": [ + "1421" + ], + "broader_ids": [ + "2489" + ], + "geo_area_code": null + }, + { + "id": "1880", + "label": "mercury", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1885" + ], + "geo_area_code": null + }, + { + "id": "1881", + "label": "measure having equivalent effect", + "alt_labels": [], + "related_ids": [ + "4078", + "6364" + ], + "broader_ids": [ + "809" + ], + "geo_area_code": null + }, + { + "id": "1882", + "label": "metals", + "alt_labels": [], + "related_ids": [ + "2133", + "2767", + "3162", + "3809" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1883", + "label": "ferrous metal", + "alt_labels": [], + "related_ids": [ + "1933" + ], + "broader_ids": [ + "1882" + ], + "geo_area_code": null + }, + { + "id": "1884", + "label": "heavy metal", + "alt_labels": [], + "related_ids": [ + "2521", + "6408" + ], + "broader_ids": [ + "1882" + ], + "geo_area_code": null + }, + { + "id": "1885", + "label": "non-ferrous metal", + "alt_labels": [ + "zirconium" + ], + "related_ids": [ + "1934", + "2429", + "4617" + ], + "broader_ids": [ + "1882" + ], + "geo_area_code": null + }, + { + "id": "1886", + "label": "precious metal", + "alt_labels": [], + "related_ids": [ + "2381" + ], + "broader_ids": [ + "1882" + ], + "geo_area_code": null + }, + { + "id": "1887", + "label": "metalloid", + "alt_labels": [ + "non-metal" + ], + "related_ids": [], + "broader_ids": [ + "3809" + ], + "geo_area_code": null + }, + { + "id": "1888", + "label": "slaughter animal", + "alt_labels": [ + "animal for slaughter" + ], + "related_ids": [ + "4681" + ], + "broader_ids": [ + "1898" + ], + "geo_area_code": null + }, + { + "id": "1889", + "label": "powder metallurgy", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3820" + ], + "geo_area_code": null + }, + { + "id": "189", + "label": "financial control", + "alt_labels": [], + "related_ids": [ + "174", + "4675" + ], + "broader_ids": [ + "929" + ], + "geo_area_code": null + }, + { + "id": "1890", + "label": "share farming", + "alt_labels": [ + "share tenancy", + "share-cropping" + ], + "related_ids": [], + "broader_ids": [ + "962" + ], + "geo_area_code": null + }, + { + "id": "1891", + "label": "meslin", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5360" + ], + "geo_area_code": null + }, + { + "id": "1892", + "label": "meteorology", + "alt_labels": [ + "atmospheric science", + "meteorological forecast" + ], + "related_ids": [ + "2142", + "c_ea3f5ed2" + ], + "broader_ids": [ + "3952" + ], + "geo_area_code": null + }, + { + "id": "1893", + "label": "methanol", + "alt_labels": [ + "methyl alcohol" + ], + "related_ids": [ + "1143" + ], + "broader_ids": [ + "3739" + ], + "geo_area_code": null + }, + { + "id": "1894", + "label": "research method", + "alt_labels": [ + "methodology" + ], + "related_ids": [ + "1895", + "4082", + "4256", + "4426", + "5628", + "894" + ], + "broader_ids": [ + "2914" + ], + "geo_area_code": null + }, + { + "id": "1895", + "label": "statistical method", + "alt_labels": [ + "statistical harmonisation", + "statistical methodology" + ], + "related_ids": [ + "1894" + ], + "broader_ids": [ + "4256" + ], + "geo_area_code": null + }, + { + "id": "1896", + "label": "metrology", + "alt_labels": [ + "dosimetry", + "science of measurement", + "system of measurement" + ], + "related_ids": [ + "2159" + ], + "broader_ids": [ + "3949" + ], + "geo_area_code": null + }, + { + "id": "1897", + "label": "metropolis", + "alt_labels": [ + "large city" + ], + "related_ids": [], + "broader_ids": [ + "4709" + ], + "geo_area_code": null + }, + { + "id": "1898", + "label": "farm animal", + "alt_labels": [], + "related_ids": [ + "937" + ], + "broader_ids": [ + "2711" + ], + "geo_area_code": null + }, + { + "id": "1899", + "label": "Mexico", + "alt_labels": [ + "United Mexican States" + ], + "related_ids": [], + "broader_ids": [ + "1105", + "1615", + "2106", + "2119", + "4069", + "6205", + "7207" + ], + "geo_area_code": "MEX" + }, + { + "id": "19", + "label": "EP Committee", + "alt_labels": [ + "Committee of the EP", + "Parliamentary Committee of the EP" + ], + "related_ids": [ + "18" + ], + "broader_ids": [ + "2243" + ], + "geo_area_code": null + }, + { + "id": "190", + "label": "parliamentary scrutiny", + "alt_labels": [ + "democratic control", + "parliamentary control" + ], + "related_ids": [ + "15", + "2506", + "2579" + ], + "broader_ids": [ + "41" + ], + "geo_area_code": null + }, + { + "id": "1900", + "label": "Mezzogiorno", + "alt_labels": [], + "related_ids": [ + "1520", + "645" + ], + "broader_ids": [ + "3052" + ], + "geo_area_code": null + }, + { + "id": "1901", + "label": "microeconomics", + "alt_labels": [ + "micro-economics" + ], + "related_ids": [ + "3933", + "637", + "813" + ], + "broader_ids": [ + "1800" + ], + "geo_area_code": null + }, + { + "id": "1902", + "label": "microform", + "alt_labels": [ + "microcopy", + "microfiche", + "microfilm", + "microphotograph" + ], + "related_ids": [], + "broader_ids": [ + "486" + ], + "geo_area_code": null + }, + { + "id": "1903", + "label": "Micronesia", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2113" + ], + "geo_area_code": "FSM" + }, + { + "id": "1904", + "label": "Midi-Pyren\u00e9es", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "c_791e9f27" + ], + "geo_area_code": null + }, + { + "id": "1905", + "label": "East Midlands", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5438" + ], + "geo_area_code": null + }, + { + "id": "1906", + "label": "West Midlands", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5438" + ], + "geo_area_code": null + }, + { + "id": "1907", + "label": "honey", + "alt_labels": [], + "related_ids": [ + "2115" + ], + "broader_ids": [ + "2737" + ], + "geo_area_code": null + }, + { + "id": "1908", + "label": "draught animal", + "alt_labels": [ + "animal draught power" + ], + "related_ids": [], + "broader_ids": [ + "1898" + ], + "geo_area_code": null + }, + { + "id": "1909", + "label": "migration", + "alt_labels": [ + "rate of migration", + "rhythm of migration" + ], + "related_ids": [ + "5991" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "191", + "label": "plant health control", + "alt_labels": [ + "phytosanitary control", + "phytosanitary inspection", + "plant health inspection" + ], + "related_ids": [ + "1763", + "192", + "2985" + ], + "broader_ids": [ + "1595" + ], + "geo_area_code": null + }, + { + "id": "1910", + "label": "commuting", + "alt_labels": [ + "commuter journey", + "work journey" + ], + "related_ids": [ + "3113" + ], + "broader_ids": [ + "1916" + ], + "geo_area_code": null + }, + { + "id": "1911", + "label": "return migration", + "alt_labels": [ + "repatriate", + "repatriated person", + "repatriation" + ], + "related_ids": [ + "4562" + ], + "broader_ids": [ + "1909" + ], + "geo_area_code": null + }, + { + "id": "1912", + "label": "family migration", + "alt_labels": [], + "related_ids": [ + "552" + ], + "broader_ids": [ + "1909" + ], + "geo_area_code": null + }, + { + "id": "1913", + "label": "forced migration", + "alt_labels": [], + "related_ids": [ + "2986", + "3906" + ], + "broader_ids": [ + "1909" + ], + "geo_area_code": null + }, + { + "id": "1914", + "label": "frontier migration", + "alt_labels": [], + "related_ids": [ + "4558" + ], + "broader_ids": [ + "1909" + ], + "geo_area_code": null + }, + { + "id": "1915", + "label": "illegal migration", + "alt_labels": [ + "clandestine migration", + "illegal immigration" + ], + "related_ids": [ + "6625" + ], + "broader_ids": [ + "185" + ], + "geo_area_code": null + }, + { + "id": "1916", + "label": "internal migration", + "alt_labels": [], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1917", + "label": "interurban migration", + "alt_labels": [ + "inter-urban migration" + ], + "related_ids": [], + "broader_ids": [ + "1916" + ], + "geo_area_code": null + }, + { + "id": "1918", + "label": "clearing agreement", + "alt_labels": [], + "related_ids": [ + "4344" + ], + "broader_ids": [ + "2219" + ], + "geo_area_code": null + }, + { + "id": "1919", + "label": "domestic animal", + "alt_labels": [ + "domestic cat", + "domestic dog", + "pet" + ], + "related_ids": [ + "4163", + "442884" + ], + "broader_ids": [ + "2711" + ], + "geo_area_code": null + }, + { + "id": "192", + "label": "health control", + "alt_labels": [ + "biosafety", + "health inspection", + "health inspectorate", + "health watch" + ], + "related_ids": [ + "1442", + "191", + "5768", + "837" + ], + "broader_ids": [ + "3885" + ], + "geo_area_code": null + }, + { + "id": "1920", + "label": "intraurban commuting", + "alt_labels": [ + "intra-urban commuting" + ], + "related_ids": [], + "broader_ids": [ + "1916" + ], + "geo_area_code": null + }, + { + "id": "1921", + "label": "Community migration", + "alt_labels": [ + "Community migrant", + "inter-Community migration" + ], + "related_ids": [], + "broader_ids": [ + "1909" + ], + "geo_area_code": null + }, + { + "id": "1922", + "label": "occupational migration", + "alt_labels": [ + "migratory labour" + ], + "related_ids": [ + "1634", + "4558", + "532" + ], + "broader_ids": [ + "1909" + ], + "geo_area_code": null + }, + { + "id": "1923", + "label": "rural migration", + "alt_labels": [ + "migration from the countryside to the town", + "rural depopulation", + "rural exodus" + ], + "related_ids": [ + "4231" + ], + "broader_ids": [ + "1916" + ], + "geo_area_code": null + }, + { + "id": "1925", + "label": "seasonal migration", + "alt_labels": [], + "related_ids": [ + "4470", + "4563" + ], + "broader_ids": [ + "1916" + ], + "geo_area_code": null + }, + { + "id": "1926", + "label": "working environment", + "alt_labels": [ + "occupational environment" + ], + "related_ids": [], + "broader_ids": [ + "82" + ], + "geo_area_code": null + }, + { + "id": "1927", + "label": "school environment", + "alt_labels": [ + "university environment" + ], + "related_ids": [], + "broader_ids": [ + "4705" + ], + "geo_area_code": null + }, + { + "id": "1928", + "label": "political militant", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2180" + ], + "geo_area_code": null + }, + { + "id": "1929", + "label": "breeding animal", + "alt_labels": [], + "related_ids": [ + "3408" + ], + "broader_ids": [ + "2711" + ], + "geo_area_code": null + }, + { + "id": "193", + "label": "CIV Convention", + "alt_labels": [ + "CIV" + ], + "related_ids": [ + "4511" + ], + "broader_ids": [ + "4514" + ], + "geo_area_code": null + }, + { + "id": "1930", + "label": "militarisation of space", + "alt_labels": [ + "militarization of space", + "military space race" + ], + "related_ids": [ + "1358", + "3431", + "4001" + ], + "broader_ids": [ + "3450" + ], + "geo_area_code": null + }, + { + "id": "1931", + "label": "militarism", + "alt_labels": [], + "related_ids": [ + "3016" + ], + "broader_ids": [ + "2001" + ], + "geo_area_code": null + }, + { + "id": "1932", + "label": "millet", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5360" + ], + "geo_area_code": null + }, + { + "id": "1933", + "label": "iron ore", + "alt_labels": [], + "related_ids": [ + "1883" + ], + "broader_ids": [ + "3754" + ], + "geo_area_code": null + }, + { + "id": "1934", + "label": "non-ferrous ore", + "alt_labels": [], + "related_ids": [ + "1885" + ], + "broader_ids": [ + "3754" + ], + "geo_area_code": null + }, + { + "id": "1935", + "label": "non-metallic ore", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2767" + ], + "geo_area_code": null + }, + { + "id": "1936", + "label": "mineralogy", + "alt_labels": [], + "related_ids": [ + "2767", + "3546", + "51" + ], + "broader_ids": [ + "1151" + ], + "geo_area_code": null + }, + { + "id": "1937", + "label": "live animal", + "alt_labels": [ + "animal on the hoof" + ], + "related_ids": [], + "broader_ids": [ + "2711" + ], + "geo_area_code": null + }, + { + "id": "1938", + "label": "public prosecutor's department", + "alt_labels": [ + "Crown Prosecution Service", + "public prosecutor's office" + ], + "related_ids": [ + "5417" + ], + "broader_ids": [ + "2351" + ], + "geo_area_code": null + }, + { + "id": "1939", + "label": "minister", + "alt_labels": [ + "departmental staff of a minister" + ], + "related_ids": [ + "3644" + ], + "broader_ids": [ + "1172" + ], + "geo_area_code": null + }, + { + "id": "194", + "label": "collective agreement", + "alt_labels": [ + "industry-wide collective agreement" + ], + "related_ids": [], + "broader_ids": [ + "3209" + ], + "geo_area_code": null + }, + { + "id": "1940", + "label": "infancy", + "alt_labels": [], + "related_ids": [ + "1546", + "3513" + ], + "broader_ids": [ + "5161" + ], + "geo_area_code": null + }, + { + "id": "1941", + "label": "national minority", + "alt_labels": [], + "related_ids": [ + "439" + ], + "broader_ids": [ + "2834" + ], + "geo_area_code": null + }, + { + "id": "1942", + "label": "sexual minority", + "alt_labels": [ + "homosexual", + "lesbian", + "transsexual" + ], + "related_ids": [ + "688", + "7414" + ], + "broader_ids": [ + "6231" + ], + "geo_area_code": null + }, + { + "id": "1943", + "label": "flour milling", + "alt_labels": [ + "flour-milling works" + ], + "related_ids": [ + "970" + ], + "broader_ids": [ + "1360" + ], + "geo_area_code": null + }, + { + "id": "1944", + "label": "missile", + "alt_labels": [ + "nuclear missile" + ], + "related_ids": [ + "3505", + "4422" + ], + "broader_ids": [ + "2647" + ], + "geo_area_code": null + }, + { + "id": "1945", + "label": "metal furniture", + "alt_labels": [ + "article of metal furniture" + ], + "related_ids": [ + "1393" + ], + "broader_ids": [ + "3820" + ], + "geo_area_code": null + }, + { + "id": "1946", + "label": "labour mobility", + "alt_labels": [ + "manpower mobility", + "staff mobility", + "worker exchange" + ], + "related_ids": [ + "1634", + "3540" + ], + "broader_ids": [ + "1802" + ], + "geo_area_code": null + }, + { + "id": "1947", + "label": "land mobility", + "alt_labels": [ + "mobility of ownership" + ], + "related_ids": [], + "broader_ids": [ + "2814" + ], + "geo_area_code": null + }, + { + "id": "1948", + "label": "geographical mobility", + "alt_labels": [], + "related_ids": [ + "1633", + "3326" + ], + "broader_ids": [ + "1909" + ], + "geo_area_code": null + }, + { + "id": "1949", + "label": "residential mobility", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3460" + ], + "geo_area_code": null + }, + { + "id": "195", + "label": "airport", + "alt_labels": [ + "aerodrome", + "airport facilities", + "airport infrastructure", + "heliport", + "high altitude airport", + "regional airport", + "runway", + "seaplane base" + ], + "related_ids": [ + "1433", + "172", + "5048" + ], + "broader_ids": [ + "4505" + ], + "geo_area_code": null + }, + { + "id": "1950", + "label": "student mobility", + "alt_labels": [ + "pupil mobility" + ], + "related_ids": [], + "broader_ids": [ + "4705" + ], + "geo_area_code": null + }, + { + "id": "1951", + "label": "social mobility", + "alt_labels": [], + "related_ids": [ + "3325" + ], + "broader_ids": [ + "4305" + ], + "geo_area_code": null + }, + { + "id": "1952", + "label": "financing method", + "alt_labels": [ + "financing arrangements", + "source of financing" + ], + "related_ids": [ + "5844" + ], + "broader_ids": [ + "2466" + ], + "geo_area_code": null + }, + { + "id": "1953", + "label": "voting method", + "alt_labels": [], + "related_ids": [ + "3313" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1954", + "label": "mode of transport", + "alt_labels": [], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "1955", + "label": "economic model", + "alt_labels": [ + "econometric model" + ], + "related_ids": [ + "1165" + ], + "broader_ids": [ + "634" + ], + "geo_area_code": null + }, + { + "id": "1956", + "label": "company modernisation", + "alt_labels": [ + "company modernization" + ], + "related_ids": [ + "1957", + "4253" + ], + "broader_ids": [ + "2469" + ], + "geo_area_code": null + }, + { + "id": "1957", + "label": "modernisation of industry", + "alt_labels": [ + "modernization of industry" + ], + "related_ids": [ + "1956", + "3071", + "5149", + "786" + ], + "broader_ids": [ + "2507" + ], + "geo_area_code": null + }, + { + "id": "1958", + "label": "farm modernisation", + "alt_labels": [ + "farm development", + "farm modernization", + "modernisation of agricultural structures", + "modernisation of farming" + ], + "related_ids": [ + "1849", + "2971", + "5023", + "786", + "937" + ], + "broader_ids": [ + "2493" + ], + "geo_area_code": null + }, + { + "id": "1959", + "label": "budgetary amendment", + "alt_labels": [ + "budgetary modification", + "modification proposal" + ], + "related_ids": [], + "broader_ids": [ + "144" + ], + "geo_area_code": null + }, + { + "id": "196", + "label": "Arusha Convention", + "alt_labels": [], + "related_ids": [ + "4789" + ], + "broader_ids": [ + "4049" + ], + "geo_area_code": null + }, + { + "id": "1960", + "label": "Molise", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1520" + ], + "geo_area_code": null + }, + { + "id": "1961", + "label": "mollusc", + "alt_labels": [ + "cephalopod", + "shellfish", + "squid" + ], + "related_ids": [ + "2999" + ], + "broader_ids": [ + "3544" + ], + "geo_area_code": null + }, + { + "id": "1962", + "label": "yearbook", + "alt_labels": [ + "almanac", + "official yearbook" + ], + "related_ids": [], + "broader_ids": [ + "486" + ], + "geo_area_code": null + }, + { + "id": "1963", + "label": "Moluccas", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1355" + ], + "geo_area_code": null + }, + { + "id": "1964", + "label": "molybdenum", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1885" + ], + "geo_area_code": null + }, + { + "id": "1965", + "label": "Monaco", + "alt_labels": [ + "Principality of Monaco" + ], + "related_ids": [], + "broader_ids": [ + "122", + "913" + ], + "geo_area_code": "MCO" + }, + { + "id": "1966", + "label": "constitutional monarchy", + "alt_labels": [ + "parliamentary monarchy" + ], + "related_ids": [ + "2242" + ], + "broader_ids": [ + "3025" + ], + "geo_area_code": null + }, + { + "id": "1967", + "label": "Universalism", + "alt_labels": [], + "related_ids": [ + "6125" + ], + "broader_ids": [ + "1282" + ], + "geo_area_code": null + }, + { + "id": "1968", + "label": "Mongolia", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5087", + "956" + ], + "geo_area_code": "MNG" + }, + { + "id": "1969", + "label": "money", + "alt_labels": [ + "currency" + ], + "related_ids": [ + "204", + "2156" + ], + "broader_ids": [ + "1809" + ], + "geo_area_code": null + }, + { + "id": "197", + "label": "Lom\u00e9 Convention", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4049" + ], + "geo_area_code": null + }, + { + "id": "1970", + "label": "reserve currency", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1677" + ], + "geo_area_code": null + }, + { + "id": "1971", + "label": "electronic money", + "alt_labels": [ + "auto-bank card", + "cash card", + "charge card", + "credit card", + "debit card", + "defered debit card", + "delayed debit card", + "e-money", + "e-money payment", + "electronic purse", + "multiservices card", + "payment card" + ], + "related_ids": [ + "3248", + "c_e749c083" + ], + "broader_ids": [ + "1975" + ], + "geo_area_code": null + }, + { + "id": "1972", + "label": "paper money", + "alt_labels": [ + "bank note" + ], + "related_ids": [ + "c_4c441ea0" + ], + "broader_ids": [ + "1969" + ], + "geo_area_code": null + }, + { + "id": "1973", + "label": "international currency", + "alt_labels": [], + "related_ids": [ + "433", + "6332" + ], + "broader_ids": [ + "1677" + ], + "geo_area_code": null + }, + { + "id": "1974", + "label": "national currency", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1969" + ], + "geo_area_code": null + }, + { + "id": "1975", + "label": "deposit money", + "alt_labels": [ + "bank money" + ], + "related_ids": [ + "2149" + ], + "broader_ids": [ + "1969" + ], + "geo_area_code": null + }, + { + "id": "1976", + "label": "unicameral system", + "alt_labels": [ + "single-chamber system", + "unicameralism" + ], + "related_ids": [], + "broader_ids": [ + "5379" + ], + "geo_area_code": null + }, + { + "id": "1977", + "label": "monocracy", + "alt_labels": [ + "absolute monarchy", + "autocracy" + ], + "related_ids": [ + "5805" + ], + "broader_ids": [ + "3025" + ], + "geo_area_code": null + }, + { + "id": "1978", + "label": "monograph", + "alt_labels": [], + "related_ids": [ + "1332" + ], + "broader_ids": [ + "486" + ], + "geo_area_code": null + }, + { + "id": "1979", + "label": "monopoly", + "alt_labels": [ + "marketing monopoly", + "trading monopoly" + ], + "related_ids": [ + "5267", + "7136" + ], + "broader_ids": [ + "3581" + ], + "geo_area_code": null + }, + { + "id": "198", + "label": "first Lom\u00e9 Convention", + "alt_labels": [], + "related_ids": [ + "2851" + ], + "broader_ids": [ + "197" + ], + "geo_area_code": null + }, + { + "id": "1980", + "label": "monopsony", + "alt_labels": [ + "buyer's monopoly", + "monopoly of demand", + "sole buyer" + ], + "related_ids": [], + "broader_ids": [ + "1979" + ], + "geo_area_code": null + }, + { + "id": "1981", + "label": "State monopoly", + "alt_labels": [ + "government monopoly" + ], + "related_ids": [ + "1984", + "1985" + ], + "broader_ids": [ + "1979" + ], + "geo_area_code": null + }, + { + "id": "1982", + "label": "import monopoly", + "alt_labels": [], + "related_ids": [ + "1309" + ], + "broader_ids": [ + "1979" + ], + "geo_area_code": null + }, + { + "id": "1983", + "label": "Antarctica", + "alt_labels": [ + "Antarctic", + "Antarctic continent", + "South Pole" + ], + "related_ids": [], + "broader_ids": [ + "3414" + ], + "geo_area_code": "ATA" + }, + { + "id": "1984", + "label": "monopoly of information", + "alt_labels": [], + "related_ids": [ + "1981", + "69" + ], + "broader_ids": [ + "175" + ], + "geo_area_code": null + }, + { + "id": "1985", + "label": "fiscal monopoly", + "alt_labels": [], + "related_ids": [ + "1981" + ], + "broader_ids": [ + "2504" + ], + "geo_area_code": null + }, + { + "id": "1986", + "label": "Montserrat", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2024", + "3778", + "5265" + ], + "geo_area_code": "MSR" + }, + { + "id": "1987", + "label": "mountain", + "alt_labels": [], + "related_ids": [ + "3051", + "604", + "8437" + ], + "broader_ids": [ + "3146" + ], + "geo_area_code": null + }, + { + "id": "1988", + "label": "monetary compensatory amount", + "alt_labels": [ + "MCA", + "accession compensatory amount", + "compensatory amount", + "dismantling of MCA" + ], + "related_ids": [ + "4390", + "613", + "665" + ], + "broader_ids": [ + "2511" + ], + "geo_area_code": null + }, + { + "id": "1989", + "label": "ethics", + "alt_labels": [ + "moral science" + ], + "related_ids": [ + "3566", + "5169" + ], + "broader_ids": [ + "2369" + ], + "geo_area_code": null + }, + { + "id": "199", + "label": "second Lom\u00e9 Convention", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "197" + ], + "geo_area_code": null + }, + { + "id": "1990", + "label": "public morality", + "alt_labels": [ + "public morals" + ], + "related_ids": [ + "2162", + "5748", + "c_2f00dd5a" + ], + "broader_ids": [ + "4706" + ], + "geo_area_code": null + }, + { + "id": "1991", + "label": "mortality", + "alt_labels": [ + "death rate", + "mortality figures", + "mortality rate" + ], + "related_ids": [ + "1754", + "4256", + "4323", + "5291" + ], + "broader_ids": [ + "385" + ], + "geo_area_code": null + }, + { + "id": "1992", + "label": "infant mortality", + "alt_labels": [ + "antenatal mortality", + "foetal mortality", + "infant death rate", + "perinatal mortality" + ], + "related_ids": [ + "758" + ], + "broader_ids": [ + "1991" + ], + "geo_area_code": null + }, + { + "id": "1993", + "label": "occupational mortality", + "alt_labels": [], + "related_ids": [ + "1761", + "825" + ], + "broader_ids": [ + "1991" + ], + "geo_area_code": null + }, + { + "id": "1994", + "label": "engine", + "alt_labels": [ + "combustion engine" + ], + "related_ids": [ + "3739", + "3864", + "4654" + ], + "broader_ids": [ + "1718" + ], + "geo_area_code": null + }, + { + "id": "1995", + "label": "motion of censure", + "alt_labels": [], + "related_ids": [ + "3507", + "379" + ], + "broader_ids": [ + "190" + ], + "geo_area_code": null + }, + { + "id": "1996", + "label": "consumer motivation", + "alt_labels": [], + "related_ids": [ + "771" + ], + "broader_ids": [ + "47" + ], + "geo_area_code": null + }, + { + "id": "1997", + "label": "antibiotic", + "alt_labels": [], + "related_ids": [ + "c_7dda56e2" + ], + "broader_ids": [ + "3813" + ], + "geo_area_code": null + }, + { + "id": "1998", + "label": "political motivation", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4704" + ], + "geo_area_code": null + }, + { + "id": "1999", + "label": "autonomous movement", + "alt_labels": [ + "separatist movement" + ], + "related_ids": [ + "1346", + "3096", + "4272" + ], + "broader_ids": [ + "2001" + ], + "geo_area_code": null + }, + { + "id": "2", + "label": "breach of trust", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3944" + ], + "geo_area_code": null + }, + { + "id": "20", + "label": "20 TRADE", + "alt_labels": [], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "200", + "label": "Yaound\u00e9 Convention", + "alt_labels": [ + "first Yaound\u00e9 Convention", + "second Yaound\u00e9 Convention" + ], + "related_ids": [ + "594" + ], + "broader_ids": [ + "4049" + ], + "geo_area_code": null + }, + { + "id": "2000", + "label": "anti-racist movement", + "alt_labels": [], + "related_ids": [ + "2881", + "458" + ], + "broader_ids": [ + "2001" + ], + "geo_area_code": null + }, + { + "id": "2001", + "label": "trends of opinion", + "alt_labels": [ + "political movement" + ], + "related_ids": [ + "1192", + "1620", + "2008", + "3678", + "5891", + "c_eb0b5431" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2002", + "label": "capital movement", + "alt_labels": [ + "flow of capital" + ], + "related_ids": [ + "1016", + "1452", + "1677", + "1799", + "2219", + "2220", + "4371", + "4671" + ], + "broader_ids": [ + "1630" + ], + "geo_area_code": null + }, + { + "id": "2003", + "label": "women's movement", + "alt_labels": [ + "feminism", + "women's organisation" + ], + "related_ids": [ + "162", + "2265", + "3913", + "585", + "81" + ], + "broader_ids": [ + "2001" + ], + "geo_area_code": null + }, + { + "id": "2004", + "label": "youth movement", + "alt_labels": [ + "young people's movement", + "youth organisation" + ], + "related_ids": [ + "1764" + ], + "broader_ids": [ + "2001" + ], + "geo_area_code": null + }, + { + "id": "2005", + "label": "national liberation movement", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1346" + ], + "geo_area_code": null + }, + { + "id": "2006", + "label": "complementarity agreement", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "213" + ], + "geo_area_code": null + }, + { + "id": "2007", + "label": "ecology movement", + "alt_labels": [], + "related_ids": [ + "2254", + "2470", + "4042", + "633" + ], + "broader_ids": [ + "2001" + ], + "geo_area_code": null + }, + { + "id": "2008", + "label": "European Movement", + "alt_labels": [ + "European Interests Movement", + "European federalism", + "European idea", + "Europeanism", + "pan-European movement" + ], + "related_ids": [ + "2001", + "2255", + "5891" + ], + "broader_ids": [ + "1464" + ], + "geo_area_code": null + }, + { + "id": "2009", + "label": "workers' movement", + "alt_labels": [], + "related_ids": [ + "1478", + "6000" + ], + "broader_ids": [ + "2001" + ], + "geo_area_code": null + }, + { + "id": "201", + "label": "UN convention", + "alt_labels": [ + "United Nations convention" + ], + "related_ids": [ + "434004", + "434056", + "c_a4094c9b" + ], + "broader_ids": [ + "3468" + ], + "geo_area_code": null + }, + { + "id": "2010", + "label": "farmers' movement", + "alt_labels": [], + "related_ids": [ + "6001" + ], + "broader_ids": [ + "2001" + ], + "geo_area_code": null + }, + { + "id": "2011", + "label": "social movement", + "alt_labels": [], + "related_ids": [ + "2270", + "3678" + ], + "broader_ids": [ + "2001" + ], + "geo_area_code": null + }, + { + "id": "2012", + "label": "means of communication", + "alt_labels": [], + "related_ids": [ + "4359" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2013", + "label": "mass media", + "alt_labels": [ + "means of mass communication", + "media" + ], + "related_ids": [ + "29", + "779" + ], + "broader_ids": [ + "2012" + ], + "geo_area_code": null + }, + { + "id": "2014", + "label": "means of agricultural production", + "alt_labels": [ + "agricultural engineering", + "agricultural infrastructure", + "agricultural technology" + ], + "related_ids": [ + "2477", + "2709" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2015", + "label": "means of transport", + "alt_labels": [], + "related_ids": [ + "3136" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2016", + "label": "medium-sized business", + "alt_labels": [ + "medium-sized enterprise", + "medium-sized undertaking" + ], + "related_ids": [], + "broader_ids": [ + "2359" + ], + "geo_area_code": null + }, + { + "id": "2017", + "label": "medium-sized holding", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4337" + ], + "geo_area_code": null + }, + { + "id": "2018", + "label": "Mozambique", + "alt_labels": [ + "Republic of Mozambique" + ], + "related_ids": [], + "broader_ids": [ + "357", + "5083" + ], + "geo_area_code": "MOZ" + }, + { + "id": "2019", + "label": "multilingualism", + "alt_labels": [], + "related_ids": [ + "783" + ], + "broader_ids": [ + "1670" + ], + "geo_area_code": null + }, + { + "id": "202", + "label": "economic convergence", + "alt_labels": [ + "convergence of economic performances", + "economic alignment", + "economic harmonisation", + "monetary convergence" + ], + "related_ids": [ + "209", + "5555", + "6340", + "c_9a1bc51d" + ], + "broader_ids": [ + "2497" + ], + "geo_area_code": null + }, + { + "id": "2020", + "label": "multiparty system", + "alt_labels": [ + "multiparty democracy" + ], + "related_ids": [ + "2258" + ], + "broader_ids": [ + "3025" + ], + "geo_area_code": null + }, + { + "id": "2021", + "label": "Munster", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1506" + ], + "geo_area_code": null + }, + { + "id": "2022", + "label": "museum", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2459" + ], + "geo_area_code": null + }, + { + "id": "2023", + "label": "music", + "alt_labels": [], + "related_ids": [ + "1366", + "1458", + "5192" + ], + "broader_ids": [ + "2688" + ], + "geo_area_code": null + }, + { + "id": "2024", + "label": "British West Indies", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2362" + ], + "geo_area_code": null + }, + { + "id": "2025", + "label": "mushroom-growing", + "alt_labels": [ + "mushroom" + ], + "related_ids": [], + "broader_ids": [ + "2723" + ], + "geo_area_code": null + }, + { + "id": "2026", + "label": "North-West Atlantic Fisheries Organisation", + "alt_labels": [ + "ICNAF", + "International Commission for the Northwest Atlantic Fisheries", + "NAFO", + "Northwest Atlantic Fisheries Organisation" + ], + "related_ids": [ + "1372", + "2110" + ], + "broader_ids": [ + "2188" + ], + "geo_area_code": null + }, + { + "id": "2027", + "label": "Namibia", + "alt_labels": [ + "Republic of Namibia" + ], + "related_ids": [], + "broader_ids": [ + "342", + "5083", + "c_b2c019c8" + ], + "geo_area_code": "NAM" + }, + { + "id": "2028", + "label": "Province of Namur", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3084" + ], + "geo_area_code": null + }, + { + "id": "2029", + "label": "births", + "alt_labels": [ + "birth rate" + ], + "related_ids": [ + "3168" + ], + "broader_ids": [ + "385" + ], + "geo_area_code": null + }, + { + "id": "203", + "label": "energy conversion", + "alt_labels": [], + "related_ids": [ + "744" + ], + "broader_ids": [ + "3737" + ], + "geo_area_code": null + }, + { + "id": "2030", + "label": "National Socialism", + "alt_labels": [ + "Nazism", + "neo-Nazism" + ], + "related_ids": [ + "8415", + "954" + ], + "broader_ids": [ + "1282" + ], + "geo_area_code": null + }, + { + "id": "2031", + "label": "nationalisation", + "alt_labels": [ + "nationalization" + ], + "related_ids": [ + "4136", + "654", + "830" + ], + "broader_ids": [ + "3929" + ], + "geo_area_code": null + }, + { + "id": "2032", + "label": "French West Indies", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2362" + ], + "geo_area_code": null + }, + { + "id": "2033", + "label": "nationalism", + "alt_labels": [ + "chauvinism" + ], + "related_ids": [ + "6886", + "8442" + ], + "broader_ids": [ + "1282" + ], + "geo_area_code": null + }, + { + "id": "2034", + "label": "nationality", + "alt_labels": [ + "acquisition of nationality", + "citizenship", + "loss of nationality" + ], + "related_ids": [ + "1818", + "3314", + "4503" + ], + "broader_ids": [ + "566" + ], + "geo_area_code": null + }, + { + "id": "2035", + "label": "nationality of legal persons", + "alt_labels": [ + "nationality of companies" + ], + "related_ids": [ + "2337", + "4158", + "819", + "828" + ], + "broader_ids": [ + "566" + ], + "geo_area_code": null + }, + { + "id": "2036", + "label": "naturalisation", + "alt_labels": [ + "naturalization" + ], + "related_ids": [], + "broader_ids": [ + "2034" + ], + "geo_area_code": null + }, + { + "id": "2037", + "label": "Nauru", + "alt_labels": [ + "Republic of Nauru" + ], + "related_ids": [], + "broader_ids": [ + "1903", + "5083", + "8366", + "c_b2c019c8" + ], + "geo_area_code": "NRU" + }, + { + "id": "2038", + "label": "Navarre", + "alt_labels": [ + "Autonomous Community of Navarre", + "Foral Community of Navarre" + ], + "related_ids": [], + "broader_ids": [ + "864" + ], + "geo_area_code": null + }, + { + "id": "2039", + "label": "air traffic", + "alt_labels": [ + "air navigation" + ], + "related_ids": [ + "172", + "4162" + ], + "broader_ids": [ + "4505" + ], + "geo_area_code": null + }, + { + "id": "204", + "label": "currency convertibility", + "alt_labels": [], + "related_ids": [ + "1969", + "4437", + "729", + "880" + ], + "broader_ids": [ + "2486" + ], + "geo_area_code": null + }, + { + "id": "2040", + "label": "inland waterway shipping", + "alt_labels": [ + "inland navigation" + ], + "related_ids": [ + "1623", + "260", + "3100", + "4162", + "4832", + "6021", + "603", + "7186", + "8461", + "8488" + ], + "broader_ids": [ + "4515" + ], + "geo_area_code": null + }, + { + "id": "2041", + "label": "maritime shipping", + "alt_labels": [], + "related_ids": [ + "1623", + "3100", + "4162", + "6021", + "c_9a27a573" + ], + "broader_ids": [ + "4522" + ], + "geo_area_code": null + }, + { + "id": "2042", + "label": "Netherlands Antilles", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2362" + ], + "geo_area_code": "ANT" + }, + { + "id": "2043", + "label": "cargo vessel", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4827" + ], + "geo_area_code": null + }, + { + "id": "2044", + "label": "barge carrier ship", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1036" + ], + "geo_area_code": null + }, + { + "id": "2045", + "label": "merchant", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "474" + ], + "geo_area_code": null + }, + { + "id": "2046", + "label": "collective bargaining", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3209" + ], + "geo_area_code": null + }, + { + "id": "2047", + "label": "Tokyo Round", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2050" + ], + "geo_area_code": null + }, + { + "id": "2048", + "label": "Dillon Round", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2050" + ], + "geo_area_code": null + }, + { + "id": "2049", + "label": "Kennedy Round", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2050" + ], + "geo_area_code": null + }, + { + "id": "205", + "label": "Cook Islands", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2546", + "5083", + "8366" + ], + "geo_area_code": "COK" + }, + { + "id": "2050", + "label": "tariff negotiations", + "alt_labels": [ + "MTN", + "multilateral trade negotiations" + ], + "related_ids": [ + "1567", + "3465", + "5765" + ], + "broader_ids": [ + "2519" + ], + "geo_area_code": null + }, + { + "id": "2051", + "label": "antisemitism", + "alt_labels": [ + "anti-semitism" + ], + "related_ids": [], + "broader_ids": [ + "458" + ], + "geo_area_code": null + }, + { + "id": "2052", + "label": "Nepal", + "alt_labels": [ + "Federal Democratic Republic of Nepal", + "Kingdom of Nepal" + ], + "related_ids": [], + "broader_ids": [ + "2848", + "8367" + ], + "geo_area_code": "NPL" + }, + { + "id": "2053", + "label": "neutrality", + "alt_labels": [ + "neutral country" + ], + "related_ids": [ + "3450", + "99" + ], + "broader_ids": [ + "2500" + ], + "geo_area_code": null + }, + { + "id": "2054", + "label": "New Community Instrument", + "alt_labels": [ + "NCI", + "New Community Instrument for borrowing and lending", + "Ortoli facility", + "Ortoli loan" + ], + "related_ids": [ + "4838" + ], + "broader_ids": [ + "2609" + ], + "geo_area_code": null + }, + { + "id": "2055", + "label": "Nicaragua", + "alt_labels": [ + "Republic of Nicaragua" + ], + "related_ids": [], + "broader_ids": [ + "1606", + "1844", + "2117", + "2119", + "4069" + ], + "geo_area_code": "NIC" + }, + { + "id": "2056", + "label": "nickel", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1885" + ], + "geo_area_code": null + }, + { + "id": "2057", + "label": "Niger", + "alt_labels": [ + "Republic of Niger" + ], + "related_ids": [], + "broader_ids": [ + "351", + "4607", + "5083", + "5302" + ], + "geo_area_code": "NER" + }, + { + "id": "2058", + "label": "Nigeria", + "alt_labels": [ + "Federal Republic of Nigeria" + ], + "related_ids": [], + "broader_ids": [ + "2148", + "351", + "5083", + "5302" + ], + "geo_area_code": "NGA" + }, + { + "id": "2059", + "label": "level of education", + "alt_labels": [ + "educational attainment", + "level of training" + ], + "related_ids": [ + "317", + "4554" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "206", + "label": "administrative cooperation", + "alt_labels": [], + "related_ids": [ + "171" + ], + "broader_ids": [ + "2166" + ], + "geo_area_code": null + }, + { + "id": "2060", + "label": "degree of pollution", + "alt_labels": [ + "pollution index", + "pollution level" + ], + "related_ids": [ + "2063", + "2524" + ], + "broader_ids": [ + "177" + ], + "geo_area_code": null + }, + { + "id": "2061", + "label": "Province of Antwerp", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3061" + ], + "geo_area_code": null + }, + { + "id": "2062", + "label": "standard of living", + "alt_labels": [], + "related_ids": [ + "139", + "2870", + "4086", + "83" + ], + "broader_ids": [ + "3659" + ], + "geo_area_code": null + }, + { + "id": "2063", + "label": "noise level", + "alt_labels": [], + "related_ids": [ + "2060" + ], + "broader_ids": [ + "5048" + ], + "geo_area_code": null + }, + { + "id": "2064", + "label": "palm nut", + "alt_labels": [], + "related_ids": [ + "1270" + ], + "broader_ids": [ + "2414" + ], + "geo_area_code": null + }, + { + "id": "2065", + "label": "nomadism", + "alt_labels": [ + "nomad" + ], + "related_ids": [ + "5653" + ], + "broader_ids": [ + "1916" + ], + "geo_area_code": null + }, + { + "id": "2066", + "label": "nomenclature", + "alt_labels": [ + "statistical nomenclature" + ], + "related_ids": [ + "2067", + "2068", + "2069", + "2739", + "5751", + "5752" + ], + "broader_ids": [ + "4256" + ], + "geo_area_code": null + }, + { + "id": "2067", + "label": "budgetary classification", + "alt_labels": [], + "related_ids": [ + "2066" + ], + "broader_ids": [ + "1018" + ], + "geo_area_code": null + }, + { + "id": "2068", + "label": "agricultural product nomenclature", + "alt_labels": [ + "nomenclature of agricultural products" + ], + "related_ids": [ + "2066", + "2734" + ], + "broader_ids": [ + "2477" + ], + "geo_area_code": null + }, + { + "id": "2069", + "label": "tariff nomenclature", + "alt_labels": [ + "Brussels tariff nomenclature", + "customs nomenclature", + "tariff classification", + "tariff heading" + ], + "related_ids": [ + "2066" + ], + "broader_ids": [ + "4380" + ], + "geo_area_code": null + }, + { + "id": "207", + "label": "trade cooperation", + "alt_labels": [], + "related_ids": [ + "1567", + "2449" + ], + "broader_ids": [ + "3489" + ], + "geo_area_code": null + }, + { + "id": "2070", + "label": "Anzus", + "alt_labels": [ + "Anzus Council", + "Pacific Council" + ], + "related_ids": [ + "2079" + ], + "broader_ids": [ + "2188" + ], + "geo_area_code": null + }, + { + "id": "2071", + "label": "non-alignment", + "alt_labels": [ + "non-aligned country" + ], + "related_ids": [ + "3450" + ], + "broader_ids": [ + "2500" + ], + "geo_area_code": null + }, + { + "id": "2072", + "label": "non-attached member", + "alt_labels": [ + "group of independent members", + "group of non-attached members", + "independent member", + "non-affiliated group", + "non-affiliated member" + ], + "related_ids": [], + "broader_ids": [ + "53" + ], + "geo_area_code": null + }, + { + "id": "2073", + "label": "non-violence", + "alt_labels": [], + "related_ids": [ + "2097", + "4728" + ], + "broader_ids": [ + "2001" + ], + "geo_area_code": null + }, + { + "id": "2075", + "label": "Nord-Pas-de-Calais", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "c_bbd07d89" + ], + "geo_area_code": null + }, + { + "id": "2076", + "label": "standardisation", + "alt_labels": [ + "institute for standardisation", + "normalisation", + "standardization" + ], + "related_ids": [ + "1562", + "213", + "5811", + "6091", + "811", + "893" + ], + "broader_ids": [ + "3641" + ], + "geo_area_code": null + }, + { + "id": "2077", + "label": "standard", + "alt_labels": [ + "national standard" + ], + "related_ids": [ + "1596", + "2078", + "2080", + "2081", + "2082", + "3635", + "5754", + "6609" + ], + "broader_ids": [ + "2076" + ], + "geo_area_code": null + }, + { + "id": "2078", + "label": "food standard", + "alt_labels": [ + "codex alimentarius" + ], + "related_ids": [ + "2077" + ], + "broader_ids": [ + "1590" + ], + "geo_area_code": null + }, + { + "id": "2079", + "label": "Anzus countries", + "alt_labels": [], + "related_ids": [ + "2070" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "208", + "label": "cultural cooperation", + "alt_labels": [ + "cultural agreement" + ], + "related_ids": [ + "2174", + "2459", + "3200" + ], + "broader_ids": [ + "3489" + ], + "geo_area_code": null + }, + { + "id": "2080", + "label": "biological standard", + "alt_labels": [], + "related_ids": [ + "2077", + "4921", + "811" + ], + "broader_ids": [ + "5754" + ], + "geo_area_code": null + }, + { + "id": "2081", + "label": "marketing standard", + "alt_labels": [ + "grading" + ], + "related_ids": [ + "2077", + "2871", + "4082", + "811" + ], + "broader_ids": [ + "13" + ], + "geo_area_code": null + }, + { + "id": "2082", + "label": "labour standard", + "alt_labels": [ + "employment standard", + "work standard" + ], + "related_ids": [ + "2077", + "82" + ], + "broader_ids": [ + "557" + ], + "geo_area_code": null + }, + { + "id": "2083", + "label": "social norm", + "alt_labels": [], + "related_ids": [ + "6081" + ], + "broader_ids": [ + "85" + ], + "geo_area_code": null + }, + { + "id": "2084", + "label": "Norway", + "alt_labels": [ + "Kingdom of Norway" + ], + "related_ids": [], + "broader_ids": [ + "122", + "130", + "187", + "2106", + "2200", + "911" + ], + "geo_area_code": "NOR" + }, + { + "id": "2085", + "label": "notary", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2124" + ], + "geo_area_code": null + }, + { + "id": "2086", + "label": "apartheid", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "458" + ], + "geo_area_code": null + }, + { + "id": "2087", + "label": "new economic order", + "alt_labels": [ + "new international economic order" + ], + "related_ids": [ + "3915", + "7951" + ], + "broader_ids": [ + "3474" + ], + "geo_area_code": null + }, + { + "id": "2088", + "label": "New Caledonia", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1087", + "1862", + "8366" + ], + "geo_area_code": "NCL" + }, + { + "id": "2089", + "label": "New Zealand", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2079", + "2106", + "2113", + "6205" + ], + "geo_area_code": "NZL" + }, + { + "id": "209", + "label": "economic cooperation", + "alt_labels": [], + "related_ids": [ + "1463", + "202", + "219", + "2497", + "2928", + "3219", + "899" + ], + "broader_ids": [ + "3489" + ], + "geo_area_code": null + }, + { + "id": "2090", + "label": "nuisance", + "alt_labels": [], + "related_ids": [ + "2524" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2091", + "label": "invalidity of an election", + "alt_labels": [ + "election declared null and void" + ], + "related_ids": [], + "broader_ids": [ + "159" + ], + "geo_area_code": null + }, + { + "id": "2092", + "label": "marriage rate", + "alt_labels": [], + "related_ids": [ + "1818" + ], + "broader_ids": [ + "385" + ], + "geo_area_code": null + }, + { + "id": "2093", + "label": "International Civil Aviation Organisation", + "alt_labels": [ + "ICAO", + "International Civil Aviation Organization" + ], + "related_ids": [ + "4408", + "5284" + ], + "broader_ids": [ + "1455" + ], + "geo_area_code": null + }, + { + "id": "2094", + "label": "Asian Productivity Organisation", + "alt_labels": [ + "APO", + "Asian Productivity Organization" + ], + "related_ids": [], + "broader_ids": [ + "2172" + ], + "geo_area_code": null + }, + { + "id": "2095", + "label": "cooperation agreement", + "alt_labels": [], + "related_ids": [ + "210", + "216", + "226", + "5404" + ], + "broader_ids": [ + "3461" + ], + "geo_area_code": null + }, + { + "id": "2096", + "label": "stateless person", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2034" + ], + "geo_area_code": null + }, + { + "id": "2097", + "label": "conscientious objection", + "alt_labels": [ + "conscientious objector" + ], + "related_ids": [ + "1620", + "2073", + "419" + ], + "broader_ids": [ + "4127" + ], + "geo_area_code": null + }, + { + "id": "2098", + "label": "bond", + "alt_labels": [ + "bond issue", + "bond loan", + "bond market", + "debenture", + "debenture loan" + ], + "related_ids": [ + "3674" + ], + "broader_ids": [ + "4646" + ], + "geo_area_code": null + }, + { + "id": "2099", + "label": "maintenance obligation", + "alt_labels": [ + "maintenance claim", + "maintenance payments" + ], + "related_ids": [ + "2334", + "5390", + "5598" + ], + "broader_ids": [ + "540" + ], + "geo_area_code": null + }, + { + "id": "21", + "label": "standing committee", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "18" + ], + "geo_area_code": null + }, + { + "id": "210", + "label": "European cooperation", + "alt_labels": [], + "related_ids": [ + "2095", + "3637", + "5547" + ], + "broader_ids": [ + "3489" + ], + "geo_area_code": null + }, + { + "id": "2100", + "label": "non-competition clause", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3581" + ], + "geo_area_code": null + }, + { + "id": "2101", + "label": "obstacle to development", + "alt_labels": [], + "related_ids": [ + "2465" + ], + "broader_ids": [ + "4223" + ], + "geo_area_code": null + }, + { + "id": "2102", + "label": "African and Mauritian Common Organisation", + "alt_labels": [ + "AMCO", + "African and Mauritian Common Organization", + "Afro-Malagasy Organization for Economic Cooperation", + "Afro-Malagasy Union for Economic Cooperation", + "OAMCE", + "UAMCE" + ], + "related_ids": [], + "broader_ids": [ + "2167" + ], + "geo_area_code": null + }, + { + "id": "2104", + "label": "aperitif", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5018" + ], + "geo_area_code": null + }, + { + "id": "2105", + "label": "OECD", + "alt_labels": [ + "OEEC", + "Organisation for Economic Cooperation and Development", + "Organisation for European Economic Cooperation" + ], + "related_ids": [ + "2106" + ], + "broader_ids": [ + "2188" + ], + "geo_area_code": null + }, + { + "id": "2106", + "label": "OECD countries", + "alt_labels": [], + "related_ids": [ + "2105" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2107", + "label": "ocean", + "alt_labels": [], + "related_ids": [ + "2114", + "2535", + "3531", + "542" + ], + "broader_ids": [ + "3146" + ], + "geo_area_code": null + }, + { + "id": "2108", + "label": "Antarctic Ocean", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2107" + ], + "geo_area_code": null + }, + { + "id": "2109", + "label": "Arctic Ocean", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2107" + ], + "geo_area_code": null + }, + { + "id": "211", + "label": "financial cooperation", + "alt_labels": [], + "related_ids": [ + "219", + "3186", + "4812", + "922" + ], + "broader_ids": [ + "3489" + ], + "geo_area_code": null + }, + { + "id": "2110", + "label": "Atlantic Ocean", + "alt_labels": [ + "Atlantic", + "Atlantic Region", + "Gulf Stream" + ], + "related_ids": [ + "2026" + ], + "broader_ids": [ + "2107" + ], + "geo_area_code": null + }, + { + "id": "2111", + "label": "Indian Ocean", + "alt_labels": [ + "Indian Ocean Region" + ], + "related_ids": [], + "broader_ids": [ + "2107" + ], + "geo_area_code": null + }, + { + "id": "2112", + "label": "Pacific Ocean", + "alt_labels": [ + "Pacific", + "Pacific Region" + ], + "related_ids": [], + "broader_ids": [ + "2107" + ], + "geo_area_code": null + }, + { + "id": "2113", + "label": "Oceania", + "alt_labels": [], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2114", + "label": "oceanography", + "alt_labels": [ + "oceanology" + ], + "related_ids": [ + "1050", + "2107", + "3531", + "743", + "752" + ], + "broader_ids": [ + "3952" + ], + "geo_area_code": null + }, + { + "id": "2115", + "label": "apiculture", + "alt_labels": [ + "beekeeping" + ], + "related_ids": [ + "1907" + ], + "broader_ids": [ + "711" + ], + "geo_area_code": null + }, + { + "id": "2116", + "label": "Central American Integration System", + "alt_labels": [ + "CAIS", + "OCAS", + "Organisation of Central American States", + "Organization of Central American States", + "SICA" + ], + "related_ids": [ + "2117" + ], + "broader_ids": [ + "2190" + ], + "geo_area_code": null + }, + { + "id": "2117", + "label": "CAIS countries", + "alt_labels": [ + "OCAS countries", + "SICA countries" + ], + "related_ids": [ + "2116" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2118", + "label": "Organisation of American States", + "alt_labels": [ + "OAS" + ], + "related_ids": [ + "2119" + ], + "broader_ids": [ + "2170" + ], + "geo_area_code": null + }, + { + "id": "2119", + "label": "OAS countries", + "alt_labels": [], + "related_ids": [ + "2118" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "212", + "label": "aerosol", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3798" + ], + "geo_area_code": null + }, + { + "id": "2121", + "label": "egg", + "alt_labels": [], + "related_ids": [ + "2212", + "2845", + "4743" + ], + "broader_ids": [ + "2737" + ], + "geo_area_code": null + }, + { + "id": "2122", + "label": "work of art", + "alt_labels": [ + "antique", + "art object", + "objet d'art" + ], + "related_ids": [], + "broader_ids": [ + "2278" + ], + "geo_area_code": null + }, + { + "id": "2123", + "label": "European Patent Office", + "alt_labels": [ + "EPO" + ], + "related_ids": [ + "5042" + ], + "broader_ids": [ + "2187" + ], + "geo_area_code": null + }, + { + "id": "2124", + "label": "public legal official", + "alt_labels": [ + "solicitor" + ], + "related_ids": [ + "2788" + ], + "broader_ids": [ + "2351" + ], + "geo_area_code": null + }, + { + "id": "2125", + "label": "recording equipment", + "alt_labels": [ + "tape recorder", + "video camera", + "video recorder" + ], + "related_ids": [], + "broader_ids": [ + "3855" + ], + "geo_area_code": null + }, + { + "id": "2126", + "label": "job vacancy", + "alt_labels": [ + "notification of a vacancy" + ], + "related_ids": [], + "broader_ids": [ + "1802" + ], + "geo_area_code": null + }, + { + "id": "2127", + "label": "available energy", + "alt_labels": [ + "energy offer" + ], + "related_ids": [], + "broader_ids": [ + "4886" + ], + "geo_area_code": null + }, + { + "id": "2128", + "label": "supply and demand", + "alt_labels": [ + "demand" + ], + "related_ids": [ + "1072", + "1786", + "1800", + "2449", + "4633", + "646" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2129", + "label": "takeover bid", + "alt_labels": [ + "offer to exchange shares" + ], + "related_ids": [ + "1804", + "2831" + ], + "broader_ids": [ + "69" + ], + "geo_area_code": null + }, + { + "id": "213", + "label": "industrial cooperation", + "alt_labels": [], + "related_ids": [ + "2076", + "2507", + "2922", + "3224", + "3616", + "3909" + ], + "broader_ids": [ + "3489" + ], + "geo_area_code": null + }, + { + "id": "2130", + "label": "International Labour Organisation", + "alt_labels": [ + "ILO (International Labour Organisation)", + "International Labour Organization" + ], + "related_ids": [ + "4543" + ], + "broader_ids": [ + "1455" + ], + "geo_area_code": null + }, + { + "id": "2131", + "label": "olive-growing", + "alt_labels": [], + "related_ids": [ + "2136", + "2414" + ], + "broader_ids": [ + "2723" + ], + "geo_area_code": null + }, + { + "id": "2132", + "label": "oil pipeline", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4528" + ], + "geo_area_code": null + }, + { + "id": "2133", + "label": "trace element", + "alt_labels": [], + "related_ids": [ + "1882", + "3809", + "6789" + ], + "broader_ids": [ + "6052" + ], + "geo_area_code": null + }, + { + "id": "2134", + "label": "oligopoly", + "alt_labels": [ + "duopoly" + ], + "related_ids": [], + "broader_ids": [ + "3581" + ], + "geo_area_code": null + }, + { + "id": "2135", + "label": "oligopsony", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3581" + ], + "geo_area_code": null + }, + { + "id": "2136", + "label": "olive", + "alt_labels": [ + "olive residue" + ], + "related_ids": [ + "1117", + "1264", + "2131" + ], + "broader_ids": [ + "2414" + ], + "geo_area_code": null + }, + { + "id": "2137", + "label": "Palestine Liberation Organisation", + "alt_labels": [ + "PLO", + "Palestine Liberation Organization" + ], + "related_ids": [ + "1658", + "3501" + ], + "broader_ids": [ + "2171" + ], + "geo_area_code": null + }, + { + "id": "2138", + "label": "Oman", + "alt_labels": [ + "Sultanate of Oman" + ], + "related_ids": [], + "broader_ids": [ + "1658", + "5776", + "5777", + "c_6e703074" + ], + "geo_area_code": "OMN" + }, + { + "id": "2139", + "label": "Umbria", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1520" + ], + "geo_area_code": null + }, + { + "id": "214", + "label": "institutional cooperation", + "alt_labels": [ + "institutional conciliation", + "interinstitutional cooperation" + ], + "related_ids": [ + "5548" + ], + "broader_ids": [ + "3226" + ], + "geo_area_code": null + }, + { + "id": "2140", + "label": "European Ombudsman", + "alt_labels": [ + "Community Mediator", + "EC Mediator", + "EC Ombudsman", + "European Mediator" + ], + "related_ids": [ + "1860", + "5834" + ], + "broader_ids": [ + "2163" + ], + "geo_area_code": null + }, + { + "id": "2141", + "label": "International Maritime Organisation", + "alt_labels": [ + "IMO" + ], + "related_ids": [ + "5889" + ], + "broader_ids": [ + "1455" + ], + "geo_area_code": null + }, + { + "id": "2142", + "label": "World Meteorological Organisation", + "alt_labels": [ + "WMO", + "World Meteorological Organization" + ], + "related_ids": [ + "1892", + "434664" + ], + "broader_ids": [ + "1455" + ], + "geo_area_code": null + }, + { + "id": "2143", + "label": "World Intellectual Property Organisation", + "alt_labels": [ + "WIPO", + "World Intellectual Property Organization" + ], + "related_ids": [ + "2817" + ], + "broader_ids": [ + "1455" + ], + "geo_area_code": null + }, + { + "id": "2144", + "label": "World Health Organisation", + "alt_labels": [ + "WHO", + "World Health Organization" + ], + "related_ids": [ + "2479" + ], + "broader_ids": [ + "1455" + ], + "geo_area_code": null + }, + { + "id": "2145", + "label": "UN Industrial Development Organisation", + "alt_labels": [ + "UN Industrial Development Organization", + "UNIDO", + "United Nations Industrial Development Organisation", + "United Nations Industrial Development Organization" + ], + "related_ids": [ + "429" + ], + "broader_ids": [ + "1455" + ], + "geo_area_code": null + }, + { + "id": "2146", + "label": "Organisation of Arab Petroleum Exporting Countries", + "alt_labels": [ + "OAPEC", + "Organization of Arab Petroleum Exporting Countries" + ], + "related_ids": [], + "broader_ids": [ + "2171" + ], + "geo_area_code": null + }, + { + "id": "2147", + "label": "OPEC", + "alt_labels": [ + "Organisation of Petroleum Exporting Countries", + "Organization of Petroleum Exporting Countries" + ], + "related_ids": [ + "2148" + ], + "broader_ids": [ + "2188" + ], + "geo_area_code": null + }, + { + "id": "2148", + "label": "OPEC countries", + "alt_labels": [], + "related_ids": [ + "2147" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2149", + "label": "banking", + "alt_labels": [ + "banking operation", + "banking services", + "banking transaction" + ], + "related_ids": [ + "1975", + "4731", + "4738", + "8469", + "c_6fb74d78" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "215", + "label": "inter-company cooperation", + "alt_labels": [ + "Business Cooperation Centre", + "European Cooperation Grouping", + "business cooperation", + "business network", + "cooperation between undertakings" + ], + "related_ids": [ + "1200", + "3224" + ], + "broader_ids": [ + "2469" + ], + "geo_area_code": null + }, + { + "id": "2150", + "label": "stock-exchange transaction", + "alt_labels": [], + "related_ids": [ + "5570" + ], + "broader_ids": [ + "1804" + ], + "geo_area_code": null + }, + { + "id": "2151", + "label": "exchange transaction", + "alt_labels": [ + "exchange of currency" + ], + "related_ids": [ + "1799" + ], + "broader_ids": [ + "2149" + ], + "geo_area_code": null + }, + { + "id": "2152", + "label": "public opinion", + "alt_labels": [], + "related_ids": [ + "3255", + "7413", + "8418" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2153", + "label": "Publications Office of the European Union", + "alt_labels": [ + "Euroffice", + "OP", + "OPOCE", + "Office for Official Publications of the European Communities", + "Publications Office" + ], + "related_ids": [ + "2860", + "667" + ], + "broader_ids": [ + "5769" + ], + "geo_area_code": null + }, + { + "id": "2154", + "label": "opposition", + "alt_labels": [], + "related_ids": [ + "2155", + "2991", + "538" + ], + "broader_ids": [ + "2001" + ], + "geo_area_code": null + }, + { + "id": "2155", + "label": "political opposition", + "alt_labels": [], + "related_ids": [ + "2154", + "2258", + "419", + "470" + ], + "broader_ids": [ + "4704" + ], + "geo_area_code": null + }, + { + "id": "2156", + "label": "gold", + "alt_labels": [], + "related_ids": [ + "1969", + "2240", + "3449" + ], + "broader_ids": [ + "1886" + ], + "geo_area_code": null + }, + { + "id": "2157", + "label": "computer", + "alt_labels": [ + "mini-computer" + ], + "related_ids": [ + "4488" + ], + "broader_ids": [ + "5613" + ], + "geo_area_code": null + }, + { + "id": "2158", + "label": "ordinance", + "alt_labels": [], + "related_ids": [ + "1593" + ], + "broader_ids": [ + "1589" + ], + "geo_area_code": null + }, + { + "id": "2159", + "label": "measuring equipment", + "alt_labels": [ + "measuring instrument", + "meter" + ], + "related_ids": [ + "1896", + "4082" + ], + "broader_ids": [ + "1845" + ], + "geo_area_code": null + }, + { + "id": "216", + "label": "international cooperation", + "alt_labels": [], + "related_ids": [ + "2095", + "2500", + "3196", + "3228", + "3241", + "3461", + "3650", + "5337" + ], + "broader_ids": [ + "3489" + ], + "geo_area_code": null + }, + { + "id": "2160", + "label": "agenda", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3984" + ], + "geo_area_code": null + }, + { + "id": "2161", + "label": "professional society", + "alt_labels": [ + "doctors' association", + "lawyers' association" + ], + "related_ids": [ + "2788", + "3545" + ], + "broader_ids": [ + "2178" + ], + "geo_area_code": null + }, + { + "id": "2162", + "label": "public order", + "alt_labels": [], + "related_ids": [ + "1990", + "3993" + ], + "broader_ids": [ + "4045" + ], + "geo_area_code": null + }, + { + "id": "2163", + "label": "EU body", + "alt_labels": [ + "Community body (established by the Treaties)", + "European Union body" + ], + "related_ids": [ + "5769", + "8465" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2165", + "label": "organisation chart", + "alt_labels": [ + "organization chart" + ], + "related_ids": [ + "4300", + "4304" + ], + "broader_ids": [ + "4413" + ], + "geo_area_code": null + }, + { + "id": "2166", + "label": "administrative structures", + "alt_labels": [ + "administrative organisation" + ], + "related_ids": [ + "3923" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2167", + "label": "African organisation", + "alt_labels": [ + "African intergovernmental organisation", + "African intergovernmental organization", + "African organization", + "African regional organisation", + "African regional organization", + "Organisation of Central Africa", + "Organisation of East Africa", + "Organisation of Southern Africa", + "Organisation of West Africa", + "Organization of Central Africa", + "Organization of East Africa", + "Organization of Southern Africa", + "Organization of West Africa" + ], + "related_ids": [ + "2189" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2169", + "label": "precision instrument", + "alt_labels": [ + "precision equipment" + ], + "related_ids": [], + "broader_ids": [ + "1845" + ], + "geo_area_code": null + }, + { + "id": "217", + "label": "judicial cooperation", + "alt_labels": [ + "mutual assistance in legal matters" + ], + "related_ids": [ + "3961", + "4452", + "5550", + "8455", + "8480" + ], + "broader_ids": [ + "3489" + ], + "geo_area_code": null + }, + { + "id": "2170", + "label": "American organisation", + "alt_labels": [ + "American intergovernmental organisation", + "American intergovernmental organization", + "American organization", + "American regional organisation", + "American regional organization" + ], + "related_ids": [ + "2189" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2171", + "label": "Arab organisation", + "alt_labels": [ + "Arab intergovernmental organisation", + "Arab intergovernmental organization", + "Arab organization", + "Arab regional organisation", + "Arab regional organization" + ], + "related_ids": [ + "2189" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2172", + "label": "Asian organisation", + "alt_labels": [ + "Asian intergovernmental organisation", + "Asian intergovernmental organization", + "Asian organization", + "Asian regional organisation", + "Asian regional organization" + ], + "related_ids": [ + "2189" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2173", + "label": "common organisation of markets", + "alt_labels": [ + "CMO", + "Single CMO", + "common market organisation", + "common organization of markets", + "single common market organisation" + ], + "related_ids": [ + "1486", + "2182", + "2450", + "2456", + "2462", + "3568" + ], + "broader_ids": [ + "2443" + ], + "geo_area_code": null + }, + { + "id": "2174", + "label": "cultural organisation", + "alt_labels": [ + "cultural centre", + "cultural institution", + "cultural organization" + ], + "related_ids": [ + "208", + "2459" + ], + "broader_ids": [ + "4702" + ], + "geo_area_code": null + }, + { + "id": "2175", + "label": "organisation of teaching", + "alt_labels": [ + "organization of teaching" + ], + "related_ids": [ + "2467" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2176", + "label": "radio equipment", + "alt_labels": [ + "radio receiver", + "radio transmitter", + "radio transmitter-receiver" + ], + "related_ids": [ + "2883" + ], + "broader_ids": [ + "3855" + ], + "geo_area_code": null + }, + { + "id": "2177", + "label": "organisation of production", + "alt_labels": [ + "organization of production" + ], + "related_ids": [ + "2837", + "896" + ], + "broader_ids": [ + "2481" + ], + "geo_area_code": null + }, + { + "id": "2178", + "label": "organisation of professions", + "alt_labels": [ + "organization of professions" + ], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2179", + "label": "UNO", + "alt_labels": [ + "UN system", + "United Nations", + "United Nations Organisation", + "United Nations Organization", + "United Nations system" + ], + "related_ids": [ + "2189", + "5394", + "91" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "218", + "label": "military cooperation", + "alt_labels": [ + "military agreement", + "military aid" + ], + "related_ids": [ + "2464", + "3441", + "5557", + "7412", + "8475" + ], + "broader_ids": [ + "3489" + ], + "geo_area_code": null + }, + { + "id": "2180", + "label": "party organisation", + "alt_labels": [ + "party organization" + ], + "related_ids": [ + "4179", + "4704" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2181", + "label": "organisation of transport", + "alt_labels": [ + "organization of transport" + ], + "related_ids": [ + "2494", + "5938" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2182", + "label": "market organisation", + "alt_labels": [ + "market organization", + "national market organisation" + ], + "related_ids": [ + "2173", + "3306", + "3591" + ], + "broader_ids": [ + "2449" + ], + "geo_area_code": null + }, + { + "id": "2183", + "label": "Warsaw Pact Organisation", + "alt_labels": [ + "Warsaw Pact", + "Warsaw Pact Organization", + "Warsaw Treaty" + ], + "related_ids": [], + "broader_ids": [ + "2187" + ], + "geo_area_code": null + }, + { + "id": "2184", + "label": "organisation of work", + "alt_labels": [ + "organization of work" + ], + "related_ids": [ + "104", + "6350", + "6395" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2185", + "label": "television equipment", + "alt_labels": [ + "TV receiver", + "television set" + ], + "related_ids": [ + "4432" + ], + "broader_ids": [ + "3855" + ], + "geo_area_code": null + }, + { + "id": "2186", + "label": "organisation of elections", + "alt_labels": [ + "organization of elections" + ], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2187", + "label": "European organisation", + "alt_labels": [ + "European intergovernmental organisation", + "European intergovernmental organization", + "European organization", + "European regional organisation", + "European regional organization" + ], + "related_ids": [ + "2189" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2188", + "label": "world organisation", + "alt_labels": [ + "global organisation", + "global organization", + "intergovernmental world organisation", + "intergovernmental world organization", + "world organization" + ], + "related_ids": [ + "2189" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2189", + "label": "international organisation", + "alt_labels": [ + "international administration", + "international association", + "international body", + "international institution", + "international organization" + ], + "related_ids": [ + "2167", + "2170", + "2171", + "2172", + "2179", + "2187", + "2188", + "2190", + "2191", + "4179" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "219", + "label": "monetary cooperation", + "alt_labels": [], + "related_ids": [ + "1851", + "209", + "211", + "4602" + ], + "broader_ids": [ + "3239" + ], + "geo_area_code": null + }, + { + "id": "2190", + "label": "Latin American organisation", + "alt_labels": [ + "Central American organisation", + "Central American organization", + "Latin American intergovernmental organisation", + "Latin American intergovernmental organization", + "Latin American organization", + "Latin American regional organisation", + "Latin American regional organization" + ], + "related_ids": [ + "2189" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2191", + "label": "non-governmental organisation", + "alt_labels": [ + "NGO", + "non-governmental international organisation", + "non-governmental international organization", + "non-governmental organization", + "non-governmental regional organisation", + "non-governmental regional organization", + "non-governmental world organisation", + "non-governmental world organization" + ], + "related_ids": [ + "2189", + "3331", + "8428", + "c_eb0b5431" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2192", + "label": "electronic device", + "alt_labels": [], + "related_ids": [ + "709", + "c_12e208c8" + ], + "broader_ids": [ + "1400" + ], + "geo_area_code": null + }, + { + "id": "2193", + "label": "barley", + "alt_labels": [], + "related_ids": [ + "1772" + ], + "broader_ids": [ + "5360" + ], + "geo_area_code": null + }, + { + "id": "2194", + "label": "agricultural guidance", + "alt_labels": [ + "production premium" + ], + "related_ids": [], + "broader_ids": [ + "2972" + ], + "geo_area_code": null + }, + { + "id": "2195", + "label": "vocational guidance", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2175" + ], + "geo_area_code": null + }, + { + "id": "2196", + "label": "educational guidance", + "alt_labels": [ + "pedagogical guidance" + ], + "related_ids": [], + "broader_ids": [ + "2175" + ], + "geo_area_code": null + }, + { + "id": "2197", + "label": "orphan", + "alt_labels": [], + "related_ids": [ + "2601" + ], + "broader_ids": [ + "2239" + ], + "geo_area_code": null + }, + { + "id": "2198", + "label": "Eurostat", + "alt_labels": [ + "ESTAT", + "SOEC", + "statistical office of the European Communities", + "statistical office of the European Union" + ], + "related_ids": [ + "4258", + "c_d0e30aa9" + ], + "broader_ids": [ + "5769" + ], + "geo_area_code": null + }, + { + "id": "2199", + "label": "NATO", + "alt_labels": [ + "Atlantic Alliance", + "Atlantic Community", + "North Atlantic Treaty Organisation", + "North Atlantic Treaty Organization" + ], + "related_ids": [ + "2200", + "5788", + "8476" + ], + "broader_ids": [ + "2188" + ], + "geo_area_code": null + }, + { + "id": "22", + "label": "specialised committee", + "alt_labels": [ + "select committee", + "specialized committee" + ], + "related_ids": [], + "broader_ids": [ + "18" + ], + "geo_area_code": null + }, + { + "id": "220", + "label": "political cooperation", + "alt_labels": [], + "related_ids": [ + "4704" + ], + "broader_ids": [ + "3489" + ], + "geo_area_code": null + }, + { + "id": "2200", + "label": "NATO countries", + "alt_labels": [], + "related_ids": [ + "2199" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2201", + "label": "SEATO", + "alt_labels": [ + "SEATO countries", + "South-East Asia Treaty Organisation", + "South-East Asia Treaty Organization" + ], + "related_ids": [], + "broader_ids": [ + "2172", + "2188" + ], + "geo_area_code": null + }, + { + "id": "2202", + "label": "African Union", + "alt_labels": [ + "AU", + "African Unity Organisation", + "African Unity Organization", + "OAU", + "Organisation of African Unity", + "Organization of African Unity" + ], + "related_ids": [ + "6077" + ], + "broader_ids": [ + "2167" + ], + "geo_area_code": null + }, + { + "id": "2203", + "label": "Uganda", + "alt_labels": [ + "Republic of Uganda" + ], + "related_ids": [], + "broader_ids": [ + "357", + "5083", + "5107", + "8365" + ], + "geo_area_code": "UGA" + }, + { + "id": "2204", + "label": "agricultural implement", + "alt_labels": [ + "farm implement" + ], + "related_ids": [ + "3841" + ], + "broader_ids": [ + "846" + ], + "geo_area_code": null + }, + { + "id": "2205", + "label": "hand tool", + "alt_labels": [ + "DIY equipment", + "electric portable tools", + "hand drill" + ], + "related_ids": [ + "1401", + "3841" + ], + "broader_ids": [ + "3895" + ], + "geo_area_code": null + }, + { + "id": "2206", + "label": "engineering structure", + "alt_labels": [ + "aqueduct", + "civil engineering structure", + "dam", + "dike", + "dock", + "quay", + "sluice" + ], + "related_ids": [ + "1145", + "3882" + ], + "broader_ids": [ + "1433" + ], + "geo_area_code": null + }, + { + "id": "2207", + "label": "blue-collar worker", + "alt_labels": [], + "related_ids": [ + "1738", + "4561", + "5604", + "6000" + ], + "broader_ids": [ + "5275" + ], + "geo_area_code": null + }, + { + "id": "2208", + "label": "skilled worker", + "alt_labels": [ + "skilled labour" + ], + "related_ids": [ + "3587", + "3909" + ], + "broader_ids": [ + "2207" + ], + "geo_area_code": null + }, + { + "id": "2209", + "label": "semi-skilled worker", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2207" + ], + "geo_area_code": null + }, + { + "id": "221", + "label": "regional cooperation", + "alt_labels": [ + "inter-regional cooperation" + ], + "related_ids": [ + "2445", + "2507", + "2515", + "976", + "c_2a1a9fdc" + ], + "broader_ids": [ + "3489" + ], + "geo_area_code": null + }, + { + "id": "2210", + "label": "Overijssel", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2288" + ], + "geo_area_code": null + }, + { + "id": "2211", + "label": "sheep", + "alt_labels": [ + "ewe", + "lamb", + "ovine species" + ], + "related_ids": [ + "1564", + "4691" + ], + "broader_ids": [ + "5962" + ], + "geo_area_code": null + }, + { + "id": "2212", + "label": "egg product", + "alt_labels": [ + "egg preparation" + ], + "related_ids": [ + "2121" + ], + "broader_ids": [ + "2736" + ], + "geo_area_code": null + }, + { + "id": "2213", + "label": "oxide", + "alt_labels": [ + "calcium oxide", + "carbon monoxide", + "hydrogen peroxide", + "nitrogen oxide", + "peroxide", + "titanium dioxide" + ], + "related_ids": [], + "broader_ids": [ + "3810" + ], + "geo_area_code": null + }, + { + "id": "2214", + "label": "oxygen", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3809" + ], + "geo_area_code": null + }, + { + "id": "2215", + "label": "ozone", + "alt_labels": [], + "related_ids": [ + "2540" + ], + "broader_ids": [ + "3967" + ], + "geo_area_code": null + }, + { + "id": "2216", + "label": "payment", + "alt_labels": [ + "reimbursement", + "terms of payment" + ], + "related_ids": [ + "4491" + ], + "broader_ids": [ + "1155" + ], + "geo_area_code": null + }, + { + "id": "2217", + "label": "advance payment", + "alt_labels": [ + "payment on account" + ], + "related_ids": [], + "broader_ids": [ + "2216" + ], + "geo_area_code": null + }, + { + "id": "2218", + "label": "invitation to tender", + "alt_labels": [ + "standing invitation to tender" + ], + "related_ids": [ + "75" + ], + "broader_ids": [ + "1810" + ], + "geo_area_code": null + }, + { + "id": "2219", + "label": "international payment", + "alt_labels": [ + "international settlements" + ], + "related_ids": [ + "2002", + "297", + "4671" + ], + "broader_ids": [ + "1016" + ], + "geo_area_code": null + }, + { + "id": "222", + "label": "allocation of land", + "alt_labels": [], + "related_ids": [ + "1542", + "3536", + "4337", + "4630" + ], + "broader_ids": [ + "2493" + ], + "geo_area_code": null + }, + { + "id": "2220", + "label": "intra-EU payment", + "alt_labels": [ + "TARGET2", + "Target payment system", + "Target system", + "Trans-European Automated Real-time Gross settlement Express Transfer system", + "intra-Community payment", + "intra-Eurosystem transaction" + ], + "related_ids": [ + "2002", + "4491" + ], + "broader_ids": [ + "c_d1f03d01" + ], + "geo_area_code": null + }, + { + "id": "2221", + "label": "bread", + "alt_labels": [], + "related_ids": [ + "2226", + "5031", + "5364" + ], + "broader_ids": [ + "2729" + ], + "geo_area_code": null + }, + { + "id": "2222", + "label": "Pakistan", + "alt_labels": [ + "Islamic Republic of Pakistan" + ], + "related_ids": [ + "8356" + ], + "broader_ids": [ + "2848", + "8367" + ], + "geo_area_code": "PAK" + }, + { + "id": "2223", + "label": "cross voting", + "alt_labels": [ + "vote splitting" + ], + "related_ids": [], + "broader_ids": [ + "3977" + ], + "geo_area_code": null + }, + { + "id": "2224", + "label": "Panama", + "alt_labels": [ + "Republic of Panama" + ], + "related_ids": [ + "5101" + ], + "broader_ids": [ + "1606", + "2117", + "2119", + "4069" + ], + "geo_area_code": "PAN" + }, + { + "id": "2225", + "label": "basket of currencies", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "665" + ], + "geo_area_code": null + }, + { + "id": "2226", + "label": "bread-making", + "alt_labels": [], + "related_ids": [ + "2221", + "5031" + ], + "broader_ids": [ + "4416" + ], + "geo_area_code": null + }, + { + "id": "2227", + "label": "direct applicability", + "alt_labels": [ + "direct effect", + "immediate applicability", + "immediate effect" + ], + "related_ids": [], + "broader_ids": [ + "5127" + ], + "geo_area_code": null + }, + { + "id": "2228", + "label": "paper", + "alt_labels": [ + "pulp" + ], + "related_ids": [], + "broader_ids": [ + "1375" + ], + "geo_area_code": null + }, + { + "id": "2229", + "label": "Papua New Guinea", + "alt_labels": [ + "Independent State of Papua New Guinea", + "New Guinea" + ], + "related_ids": [], + "broader_ids": [ + "1862", + "5083", + "6205", + "8366" + ], + "geo_area_code": "PNG" + }, + { + "id": "223", + "label": "scientific cooperation", + "alt_labels": [], + "related_ids": [ + "2478", + "2924", + "5236" + ], + "broader_ids": [ + "3489" + ], + "geo_area_code": null + }, + { + "id": "2230", + "label": "quasi-fiscal charge", + "alt_labels": [ + "licence fee", + "parafiscal charge", + "television licence fee" + ], + "related_ids": [], + "broader_ids": [ + "1310" + ], + "geo_area_code": null + }, + { + "id": "2231", + "label": "Paraguay", + "alt_labels": [ + "Republic of Paraguay" + ], + "related_ids": [], + "broader_ids": [ + "1105", + "1624", + "2119", + "4069", + "5778" + ], + "geo_area_code": "PRY" + }, + { + "id": "2232", + "label": "parasitology", + "alt_labels": [], + "related_ids": [ + "1763", + "4490" + ], + "broader_ids": [ + "3941" + ], + "geo_area_code": null + }, + { + "id": "2233", + "label": "vehicle fleet", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4533" + ], + "geo_area_code": null + }, + { + "id": "2234", + "label": "rolling stock", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4514" + ], + "geo_area_code": null + }, + { + "id": "2235", + "label": "national park", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4801" + ], + "geo_area_code": null + }, + { + "id": "2236", + "label": "application of the law", + "alt_labels": [ + "derogation from the law", + "enforcement of the law", + "implementation of the law", + "validity of the law" + ], + "related_ids": [ + "2247" + ], + "broader_ids": [ + "1697" + ], + "geo_area_code": null + }, + { + "id": "2237", + "label": "plot", + "alt_labels": [ + "parcel of land" + ], + "related_ids": [ + "3265" + ], + "broader_ids": [ + "4337" + ], + "geo_area_code": null + }, + { + "id": "2238", + "label": "single parent", + "alt_labels": [ + "single father", + "single mother" + ], + "related_ids": [ + "3301" + ], + "broader_ids": [ + "4184" + ], + "geo_area_code": null + }, + { + "id": "2239", + "label": "relationship", + "alt_labels": [ + "father", + "mother", + "parents" + ], + "related_ids": [ + "3314" + ], + "broader_ids": [ + "965" + ], + "geo_area_code": null + }, + { + "id": "224", + "label": "South-South cooperation", + "alt_labels": [ + "South-South dialogue", + "South-South relations", + "economic cooperation between developing countries" + ], + "related_ids": [ + "2295" + ], + "broader_ids": [ + "3489" + ], + "geo_area_code": null + }, + { + "id": "2240", + "label": "exchange parity", + "alt_labels": [ + "gold parity", + "par value of currencies" + ], + "related_ids": [ + "2156" + ], + "broader_ids": [ + "4390" + ], + "geo_area_code": null + }, + { + "id": "2241", + "label": "purchasing power parity", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2575" + ], + "geo_area_code": null + }, + { + "id": "2242", + "label": "parliament", + "alt_labels": [], + "related_ids": [ + "1966", + "2243", + "2702", + "3020", + "471", + "5449", + "701", + "8395", + "8424" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2243", + "label": "European Parliament", + "alt_labels": [ + "EP", + "European Assembly", + "European Parliamentary Assembly" + ], + "related_ids": [ + "2242", + "2574", + "2579", + "2809", + "3046", + "3087", + "4322", + "4473", + "5115", + "697" + ], + "broader_ids": [ + "1451" + ], + "geo_area_code": null + }, + { + "id": "2244", + "label": "national parliament", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2242" + ], + "geo_area_code": null + }, + { + "id": "2245", + "label": "regional parliament", + "alt_labels": [], + "related_ids": [ + "2515", + "3042", + "3088", + "4272", + "5120", + "6882" + ], + "broader_ids": [ + "2242" + ], + "geo_area_code": null + }, + { + "id": "2246", + "label": "Member of Parliament", + "alt_labels": [], + "related_ids": [ + "2248" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2247", + "label": "application of EU law", + "alt_labels": [ + "application of European Union law", + "implementation of Community law", + "national implementation", + "national implementation of Community law", + "national means of execution" + ], + "related_ids": [ + "2236", + "3102" + ], + "broader_ids": [ + "525" + ], + "geo_area_code": null + }, + { + "id": "2248", + "label": "Member of the European Parliament", + "alt_labels": [], + "related_ids": [ + "2246", + "4120", + "8465" + ], + "broader_ids": [ + "2243" + ], + "geo_area_code": null + }, + { + "id": "2249", + "label": "division of property", + "alt_labels": [ + "joint possession" + ], + "related_ids": [], + "broader_ids": [ + "3929" + ], + "geo_area_code": null + }, + { + "id": "225", + "label": "technical cooperation", + "alt_labels": [ + "technical aid", + "technical assistance" + ], + "related_ids": [ + "4415" + ], + "broader_ids": [ + "3489" + ], + "geo_area_code": null + }, + { + "id": "2250", + "label": "Communist Party", + "alt_labels": [], + "related_ids": [ + "1478", + "32" + ], + "broader_ids": [ + "2258" + ], + "geo_area_code": null + }, + { + "id": "2251", + "label": "Conservative Party", + "alt_labels": [ + "Tory Party" + ], + "related_ids": [ + "135" + ], + "broader_ids": [ + "2258" + ], + "geo_area_code": null + }, + { + "id": "2252", + "label": "Democratic Party", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2258" + ], + "geo_area_code": null + }, + { + "id": "2253", + "label": "Christian Democratic Party", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2258" + ], + "geo_area_code": null + }, + { + "id": "2254", + "label": "Ecology Party", + "alt_labels": [], + "related_ids": [ + "2007", + "633" + ], + "broader_ids": [ + "2258" + ], + "geo_area_code": null + }, + { + "id": "2255", + "label": "European party", + "alt_labels": [], + "related_ids": [ + "2008" + ], + "broader_ids": [ + "2258" + ], + "geo_area_code": null + }, + { + "id": "2256", + "label": "solar energy end-use applications", + "alt_labels": [ + "solar energy enduse applications" + ], + "related_ids": [ + "5503" + ], + "broader_ids": [ + "756" + ], + "geo_area_code": null + }, + { + "id": "2257", + "label": "Liberal Party", + "alt_labels": [], + "related_ids": [ + "1614" + ], + "broader_ids": [ + "2258" + ], + "geo_area_code": null + }, + { + "id": "2258", + "label": "political parties", + "alt_labels": [ + "political party" + ], + "related_ids": [ + "1197", + "1282", + "1359", + "1749", + "2020", + "2155" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2259", + "label": "Republican Party", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2258" + ], + "geo_area_code": null + }, + { + "id": "226", + "label": "cross-border cooperation", + "alt_labels": [ + "trans-border cooperation" + ], + "related_ids": [ + "2095", + "3064", + "7932", + "c_2a1a9fdc", + "c_c8363c09" + ], + "broader_ids": [ + "3489" + ], + "geo_area_code": null + }, + { + "id": "2260", + "label": "Social Democratic Party", + "alt_labels": [], + "related_ids": [ + "7216" + ], + "broader_ids": [ + "2258" + ], + "geo_area_code": null + }, + { + "id": "2261", + "label": "Socialist Party", + "alt_labels": [], + "related_ids": [ + "1478", + "4188" + ], + "broader_ids": [ + "2258" + ], + "geo_area_code": null + }, + { + "id": "2262", + "label": "Labour Party", + "alt_labels": [], + "related_ids": [ + "1478" + ], + "broader_ids": [ + "2258" + ], + "geo_area_code": null + }, + { + "id": "2263", + "label": "one-party system", + "alt_labels": [ + "single party", + "single-party system" + ], + "related_ids": [], + "broader_ids": [ + "3025" + ], + "geo_area_code": null + }, + { + "id": "2264", + "label": "shareholding", + "alt_labels": [ + "controlling interest", + "equity interest", + "equity investment", + "equity ownership", + "equity participation", + "holding in a company", + "majority holding", + "participating interest" + ], + "related_ids": [ + "1247", + "2266", + "3569", + "4201", + "4842", + "5218" + ], + "broader_ids": [ + "69" + ], + "geo_area_code": null + }, + { + "id": "2265", + "label": "participation of women", + "alt_labels": [], + "related_ids": [ + "2003", + "585", + "8382" + ], + "broader_ids": [ + "2270" + ], + "geo_area_code": null + }, + { + "id": "2266", + "label": "worker participation", + "alt_labels": [ + "employee participation", + "industrial democracy", + "workplace democracy" + ], + "related_ids": [ + "2264", + "5480" + ], + "broader_ids": [ + "3209" + ], + "geo_area_code": null + }, + { + "id": "2267", + "label": "staff assessment", + "alt_labels": [ + "staff report" + ], + "related_ids": [], + "broader_ids": [ + "1163" + ], + "geo_area_code": null + }, + { + "id": "2268", + "label": "turnout of voters", + "alt_labels": [ + "voters" + ], + "related_ids": [ + "2269" + ], + "broader_ids": [ + "4750" + ], + "geo_area_code": null + }, + { + "id": "2269", + "label": "political involvement", + "alt_labels": [], + "related_ids": [ + "2268", + "2270", + "435136" + ], + "broader_ids": [ + "49" + ], + "geo_area_code": null + }, + { + "id": "227", + "label": "cooperative", + "alt_labels": [ + "cooperative company", + "cooperative entreprise", + "cooperative society", + "workers' cooperative" + ], + "related_ids": [ + "228", + "229", + "230", + "3082" + ], + "broader_ids": [ + "4189" + ], + "geo_area_code": null + }, + { + "id": "2270", + "label": "social participation", + "alt_labels": [], + "related_ids": [ + "1817", + "2011", + "2269", + "8428" + ], + "broader_ids": [ + "4706" + ], + "geo_area_code": null + }, + { + "id": "2271", + "label": "passport", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "488" + ], + "geo_area_code": null + }, + { + "id": "2272", + "label": "European passport", + "alt_labels": [ + "passport union" + ], + "related_ids": [ + "6222", + "7410" + ], + "broader_ids": [ + "2271" + ], + "geo_area_code": null + }, + { + "id": "2273", + "label": "pasteurisation", + "alt_labels": [ + "pasteurization" + ], + "related_ids": [ + "1575" + ], + "broader_ids": [ + "132" + ], + "geo_area_code": null + }, + { + "id": "2274", + "label": "pasta", + "alt_labels": [ + "macaroni", + "noodle", + "spaghetti" + ], + "related_ids": [], + "broader_ids": [ + "2729" + ], + "geo_area_code": null + }, + { + "id": "2275", + "label": "free-trade agreement", + "alt_labels": [], + "related_ids": [ + "1094", + "1616", + "176", + "4789", + "5264", + "5430", + "5618", + "7185", + "7220" + ], + "broader_ids": [ + "3185" + ], + "geo_area_code": null + }, + { + "id": "2276", + "label": "apprentice", + "alt_labels": [], + "related_ids": [ + "2284" + ], + "broader_ids": [ + "2207" + ], + "geo_area_code": null + }, + { + "id": "2277", + "label": "pastry-making", + "alt_labels": [ + "industrial pastry-making" + ], + "related_ids": [ + "2749" + ], + "broader_ids": [ + "1360" + ], + "geo_area_code": null + }, + { + "id": "2278", + "label": "cultural heritage", + "alt_labels": [ + "bibliographic heritage", + "documentary heritage", + "human heritage", + "linguistic heritage", + "literary heritage" + ], + "related_ids": [ + "1680", + "2453", + "443600", + "c_827bea7d" + ], + "broader_ids": [ + "2459" + ], + "geo_area_code": null + }, + { + "id": "2279", + "label": "employers' organisation", + "alt_labels": [ + "employers' association", + "employers' organization" + ], + "related_ids": [ + "3543", + "735" + ], + "broader_ids": [ + "3572" + ], + "geo_area_code": null + }, + { + "id": "228", + "label": "agricultural cooperative", + "alt_labels": [ + "dairy cooperative", + "farm cooperative", + "farm machinery cooperative", + "farmers' distribution cooperative", + "livestock farming cooperative", + "winegrowers' cooperative" + ], + "related_ids": [ + "227", + "944", + "983" + ], + "broader_ids": [ + "2983" + ], + "geo_area_code": null + }, + { + "id": "2280", + "label": "pauperisation", + "alt_labels": [ + "pauperization" + ], + "related_ids": [ + "2873" + ], + "broader_ids": [ + "3319" + ], + "geo_area_code": null + }, + { + "id": "2281", + "label": "poverty", + "alt_labels": [ + "economically weak", + "fight against poverty", + "new poor", + "poor" + ], + "related_ids": [ + "2873", + "3352", + "4086", + "4229", + "4230", + "6713", + "6745", + "826", + "c_aa454f82" + ], + "broader_ids": [ + "3319" + ], + "geo_area_code": null + }, + { + "id": "2282", + "label": "ship's flag", + "alt_labels": [ + "nationality of ships" + ], + "related_ids": [], + "broader_ids": [ + "569" + ], + "geo_area_code": null + }, + { + "id": "2283", + "label": "flag of convenience", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "569" + ], + "geo_area_code": null + }, + { + "id": "2284", + "label": "apprenticeship", + "alt_labels": [ + "vocational apprenticeship" + ], + "related_ids": [ + "2276" + ], + "broader_ids": [ + "1074" + ], + "geo_area_code": null + }, + { + "id": "2285", + "label": "associated country", + "alt_labels": [ + "associated State" + ], + "related_ids": [ + "1663" + ], + "broader_ids": [ + "3489" + ], + "geo_area_code": null + }, + { + "id": "2286", + "label": "Netherlands", + "alt_labels": [ + "Holland", + "Kingdom of the Netherlands" + ], + "related_ids": [ + "2287", + "2288" + ], + "broader_ids": [ + "122", + "2106", + "2200", + "4845", + "5283", + "913" + ], + "geo_area_code": "NLD" + }, + { + "id": "2287", + "label": "Netherlands OCT", + "alt_labels": [ + "Overseas countries of the Kingdom of the Netherlands" + ], + "related_ids": [ + "2286", + "2296" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2288", + "label": "regions of the Netherlands", + "alt_labels": [], + "related_ids": [ + "2286" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2289", + "label": "Basque Country", + "alt_labels": [ + "Autonomous Community of the Basque country" + ], + "related_ids": [], + "broader_ids": [ + "864" + ], + "geo_area_code": null + }, + { + "id": "229", + "label": "consumer cooperative", + "alt_labels": [], + "related_ids": [ + "227" + ], + "broader_ids": [ + "3199" + ], + "geo_area_code": null + }, + { + "id": "2290", + "label": "Wales", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3780" + ], + "geo_area_code": null + }, + { + "id": "2291", + "label": "Eastern Bloc countries", + "alt_labels": [ + "Eastern Bloc" + ], + "related_ids": [ + "5087" + ], + "broader_ids": [ + "5437" + ], + "geo_area_code": null + }, + { + "id": "2292", + "label": "supply", + "alt_labels": [], + "related_ids": [ + "1078", + "2312" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2293", + "label": "Loire Region", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1088" + ], + "geo_area_code": null + }, + { + "id": "2294", + "label": "donor country", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3003" + ], + "geo_area_code": null + }, + { + "id": "2295", + "label": "developing countries", + "alt_labels": [ + "Third World", + "Third World countries" + ], + "related_ids": [ + "1345", + "1347", + "1567", + "224", + "2590", + "3915", + "434909", + "435", + "4496" + ], + "broader_ids": [ + "427" + ], + "geo_area_code": null + }, + { + "id": "2296", + "label": "overseas countries and territories", + "alt_labels": [ + "OCT" + ], + "related_ids": [ + "1087", + "2287", + "3778" + ], + "broader_ids": [ + "6034" + ], + "geo_area_code": null + }, + { + "id": "2297", + "label": "industrialised country", + "alt_labels": [ + "developed country", + "developed nation", + "first world country", + "first world nation", + "industrialized country", + "industrialized nation", + "rich country", + "rich nation" + ], + "related_ids": [ + "435", + "6114" + ], + "broader_ids": [ + "427" + ], + "geo_area_code": null + }, + { + "id": "2298", + "label": "member country", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3489" + ], + "geo_area_code": null + }, + { + "id": "2299", + "label": "least-developed country", + "alt_labels": [ + "LDC" + ], + "related_ids": [], + "broader_ids": [ + "427" + ], + "geo_area_code": null + }, + { + "id": "23", + "label": "UN technical commission", + "alt_labels": [ + "UN Commission for Social Development", + "UN Commission on Crime Prevention and Criminal Justice", + "UN Commission on Narcotic Drugs", + "UN Commission on Population and Development", + "UN Commission on Science and Technology for Development", + "UN Commission on Sustainable Development", + "UN Commission on the Status of Women", + "UN Forum on Forests", + "UN Statistical Commission", + "UNFF", + "United Nations Commission for Social Development", + "United Nations Commission on Crime Prevention and Criminal Justice", + "United Nations Commission on Narcotic Drugs", + "United Nations Commission on Population and Development", + "United Nations Commission on Science and Technology for Development", + "United Nations Commission on Sustainable Development", + "United Nations Commission on the Status of Women", + "United Nations Forum on Forests", + "United Nations Statistical Commission", + "United Nations technical commission" + ], + "related_ids": [], + "broader_ids": [ + "3709" + ], + "geo_area_code": null + }, + { + "id": "230", + "label": "credit union", + "alt_labels": [ + "credit cooperative" + ], + "related_ids": [ + "227", + "285" + ], + "broader_ids": [ + "4784" + ], + "geo_area_code": null + }, + { + "id": "2300", + "label": "third country", + "alt_labels": [], + "related_ids": [ + "2771", + "4003", + "5780", + "737" + ], + "broader_ids": [ + "3489" + ], + "geo_area_code": null + }, + { + "id": "2301", + "label": "toll", + "alt_labels": [ + "motorway toll", + "road tax disc" + ], + "related_ids": [], + "broader_ids": [ + "4387" + ], + "geo_area_code": null + }, + { + "id": "2302", + "label": "animal skin", + "alt_labels": [ + "prepared hide" + ], + "related_ids": [ + "3887" + ], + "broader_ids": [ + "2737" + ], + "geo_area_code": null + }, + { + "id": "2303", + "label": "arms supply", + "alt_labels": [ + "arms delivery" + ], + "related_ids": [], + "broader_ids": [ + "3451" + ], + "geo_area_code": null + }, + { + "id": "2304", + "label": "inshore fishing", + "alt_labels": [], + "related_ids": [ + "1049" + ], + "broader_ids": [ + "2308" + ], + "geo_area_code": null + }, + { + "id": "2305", + "label": "freshwater fishing", + "alt_labels": [], + "related_ids": [ + "2436", + "260", + "3338" + ], + "broader_ids": [ + "1652" + ], + "geo_area_code": null + }, + { + "id": "2306", + "label": "deep-sea fishing", + "alt_labels": [ + "high-seas fishing", + "middle-water fishing" + ], + "related_ids": [], + "broader_ids": [ + "2308" + ], + "geo_area_code": null + }, + { + "id": "2307", + "label": "industrial fishing", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1372" + ], + "geo_area_code": null + }, + { + "id": "2308", + "label": "sea fishing", + "alt_labels": [], + "related_ids": [ + "2437", + "3531" + ], + "broader_ids": [ + "1652" + ], + "geo_area_code": null + }, + { + "id": "2309", + "label": "discarded fish", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5255" + ], + "geo_area_code": null + }, + { + "id": "231", + "label": "coordination of aid", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3003" + ], + "geo_area_code": null + }, + { + "id": "2310", + "label": "traditional fishing", + "alt_labels": [ + "artisanal fishing" + ], + "related_ids": [ + "3639" + ], + "broader_ids": [ + "1372" + ], + "geo_area_code": null + }, + { + "id": "2311", + "label": "fisherman", + "alt_labels": [ + "skipper", + "trawlerman" + ], + "related_ids": [], + "broader_ids": [ + "1372" + ], + "geo_area_code": null + }, + { + "id": "2312", + "label": "energy supply", + "alt_labels": [], + "related_ids": [ + "2292" + ], + "broader_ids": [ + "4886" + ], + "geo_area_code": null + }, + { + "id": "2313", + "label": "new educational methods", + "alt_labels": [ + "educational experiment", + "educational innovation", + "educational research", + "experimental school", + "open-access school", + "parallel school", + "pilot school" + ], + "related_ids": [ + "5174", + "c_243b7be2" + ], + "broader_ids": [ + "3683" + ], + "geo_area_code": null + }, + { + "id": "2314", + "label": "death penalty", + "alt_labels": [ + "capital punishment", + "criminal execution" + ], + "related_ids": [], + "broader_ids": [ + "3878" + ], + "geo_area_code": null + }, + { + "id": "2315", + "label": "Peloponnese", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1184" + ], + "geo_area_code": null + }, + { + "id": "2316", + "label": "barge", + "alt_labels": [ + "canal boat" + ], + "related_ids": [], + "broader_ids": [ + "1036" + ], + "geo_area_code": null + }, + { + "id": "2317", + "label": "shortage", + "alt_labels": [], + "related_ids": [ + "807" + ], + "broader_ids": [ + "2292" + ], + "geo_area_code": null + }, + { + "id": "2318", + "label": "food shortage", + "alt_labels": [], + "related_ids": [ + "1770", + "6315" + ], + "broader_ids": [ + "1268" + ], + "geo_area_code": null + }, + { + "id": "2319", + "label": "financial equalisation", + "alt_labels": [ + "financial compensation", + "financial equalization" + ], + "related_ids": [], + "broader_ids": [ + "1018" + ], + "geo_area_code": null + }, + { + "id": "2320", + "label": "aquaculture", + "alt_labels": [], + "related_ids": [ + "1204", + "5150" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2321", + "label": "inward processing", + "alt_labels": [ + "inward processing arrangements", + "inward processing traffic" + ], + "related_ids": [ + "2961" + ], + "broader_ids": [ + "3174" + ], + "geo_area_code": null + }, + { + "id": "2322", + "label": "outward processing", + "alt_labels": [ + "outward processing arrangements", + "outward processing traffic" + ], + "related_ids": [ + "3175" + ], + "broader_ids": [ + "3174" + ], + "geo_area_code": null + }, + { + "id": "2323", + "label": "fishing season", + "alt_labels": [ + "biological recovery", + "closed period for fishing", + "closed season for fishing" + ], + "related_ids": [], + "broader_ids": [ + "5228" + ], + "geo_area_code": null + }, + { + "id": "2324", + "label": "transitional period (EU)", + "alt_labels": [ + "EC limited period", + "EC transitional measures", + "EC transitional period", + "transition period (EU)" + ], + "related_ids": [], + "broader_ids": [ + "4057" + ], + "geo_area_code": null + }, + { + "id": "2325", + "label": "driving licence", + "alt_labels": [ + "penalty points driving licence" + ], + "related_ids": [ + "4533" + ], + "broader_ids": [ + "3131" + ], + "geo_area_code": null + }, + { + "id": "2326", + "label": "European driving licence", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2325" + ], + "geo_area_code": null + }, + { + "id": "2327", + "label": "building permit", + "alt_labels": [], + "related_ids": [ + "3124", + "5079" + ], + "broader_ids": [ + "2475" + ], + "geo_area_code": null + }, + { + "id": "2328", + "label": "Aquitaine", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "c_be8fda35" + ], + "geo_area_code": null + }, + { + "id": "2329", + "label": "fishing permit", + "alt_labels": [ + "fishing authorization" + ], + "related_ids": [], + "broader_ids": [ + "5228" + ], + "geo_area_code": null + }, + { + "id": "233", + "label": "publishing of prices", + "alt_labels": [ + "display of prices" + ], + "related_ids": [ + "2836", + "2865" + ], + "broader_ids": [ + "2489" + ], + "geo_area_code": null + }, + { + "id": "2330", + "label": "work permit", + "alt_labels": [], + "related_ids": [ + "4004", + "4562" + ], + "broader_ids": [ + "2468" + ], + "geo_area_code": null + }, + { + "id": "2331", + "label": "Peru", + "alt_labels": [ + "Republic of Peru" + ], + "related_ids": [], + "broader_ids": [ + "1105", + "1191", + "1624", + "2119", + "4069", + "6205" + ], + "geo_area_code": "PER" + }, + { + "id": "2332", + "label": "personalisation of power", + "alt_labels": [ + "personalization of power" + ], + "related_ids": [ + "5805" + ], + "broader_ids": [ + "49" + ], + "geo_area_code": null + }, + { + "id": "2333", + "label": "elderly person", + "alt_labels": [ + "aged person", + "old age", + "old person", + "older people", + "senior citizen" + ], + "related_ids": [ + "1153", + "3324", + "3361", + "3364", + "3623", + "3751", + "4555", + "5636", + "6230", + "6233", + "6539", + "6542", + "7946", + "c_58d943b0", + "c_c6be3d6d" + ], + "broader_ids": [ + "3327" + ], + "geo_area_code": null + }, + { + "id": "2334", + "label": "divorced person", + "alt_labels": [], + "related_ids": [ + "2099", + "2340", + "483" + ], + "broader_ids": [ + "4184" + ], + "geo_area_code": null + }, + { + "id": "2335", + "label": "married person", + "alt_labels": [ + "husband", + "spouse", + "wife" + ], + "related_ids": [ + "1818" + ], + "broader_ids": [ + "4184" + ], + "geo_area_code": null + }, + { + "id": "2336", + "label": "Saudi Arabia", + "alt_labels": [ + "Kingdom of Saudi Arabia" + ], + "related_ids": [], + "broader_ids": [ + "1658", + "2148", + "5776", + "5777" + ], + "geo_area_code": "SAU" + }, + { + "id": "2337", + "label": "legal person", + "alt_labels": [], + "related_ids": [ + "1331", + "2035", + "4189" + ], + "broader_ids": [ + "4274" + ], + "geo_area_code": null + }, + { + "id": "2338", + "label": "natural person", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4274" + ], + "geo_area_code": null + }, + { + "id": "2339", + "label": "separated person", + "alt_labels": [], + "related_ids": [ + "2340", + "3317" + ], + "broader_ids": [ + "4184" + ], + "geo_area_code": null + }, + { + "id": "234", + "label": "joint ownership", + "alt_labels": [], + "related_ids": [ + "1692" + ], + "broader_ids": [ + "3929" + ], + "geo_area_code": null + }, + { + "id": "2340", + "label": "one person household", + "alt_labels": [ + "person living alone", + "single person" + ], + "related_ids": [ + "2334", + "2339", + "2341", + "5345" + ], + "broader_ids": [ + "1864" + ], + "geo_area_code": null + }, + { + "id": "2341", + "label": "widowed person", + "alt_labels": [ + "war widow", + "widow", + "widower", + "widowhood" + ], + "related_ids": [ + "2340", + "2601" + ], + "broader_ids": [ + "4184" + ], + "geo_area_code": null + }, + { + "id": "2342", + "label": "staff", + "alt_labels": [ + "human resources" + ], + "related_ids": [], + "broader_ids": [ + "1163" + ], + "geo_area_code": null + }, + { + "id": "2343", + "label": "ground staff", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2350" + ], + "geo_area_code": null + }, + { + "id": "2345", + "label": "groundnut", + "alt_labels": [], + "related_ids": [ + "1263" + ], + "broader_ids": [ + "2414" + ], + "geo_area_code": null + }, + { + "id": "2349", + "label": "drivers", + "alt_labels": [ + "chauffeur", + "driving personnel", + "driving staff", + "heavy goods vehicle driver", + "lorry driver", + "train driver" + ], + "related_ids": [], + "broader_ids": [ + "2350" + ], + "geo_area_code": null + }, + { + "id": "235", + "label": "South Korea", + "alt_labels": [ + "Republic of Korea" + ], + "related_ids": [], + "broader_ids": [ + "2106", + "6205", + "956" + ], + "geo_area_code": "KOR" + }, + { + "id": "2350", + "label": "transport staff", + "alt_labels": [], + "related_ids": [ + "4505", + "4514", + "4515", + "4522" + ], + "broader_ids": [ + "2181" + ], + "geo_area_code": null + }, + { + "id": "2351", + "label": "legal profession", + "alt_labels": [ + "legal professional" + ], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2352", + "label": "crew", + "alt_labels": [ + "air hostess", + "air steward", + "aircrew", + "airline pilot", + "sailor", + "sea-going personnel", + "ship's captain", + "ship's crew" + ], + "related_ids": [ + "5887" + ], + "broader_ids": [ + "2350" + ], + "geo_area_code": null + }, + { + "id": "2353", + "label": "penitentiary staff", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3954" + ], + "geo_area_code": null + }, + { + "id": "2354", + "label": "Aragon", + "alt_labels": [ + "Autonomous Community of Aragon" + ], + "related_ids": [], + "broader_ids": [ + "864" + ], + "geo_area_code": null + }, + { + "id": "2355", + "label": "financial loss", + "alt_labels": [ + "loss of income" + ], + "related_ids": [ + "960" + ], + "broader_ids": [ + "3602" + ], + "geo_area_code": null + }, + { + "id": "2356", + "label": "animal plague", + "alt_labels": [ + "cattle plague", + "rinderpest", + "swine fever" + ], + "related_ids": [], + "broader_ids": [ + "1755" + ], + "geo_area_code": null + }, + { + "id": "2357", + "label": "pesticide", + "alt_labels": [ + "fungicide" + ], + "related_ids": [ + "2538", + "3135", + "3469", + "420", + "832" + ], + "broader_ids": [ + "2985" + ], + "geo_area_code": null + }, + { + "id": "2358", + "label": "small business", + "alt_labels": [ + "small enterprise" + ], + "related_ids": [], + "broader_ids": [ + "2359" + ], + "geo_area_code": null + }, + { + "id": "2359", + "label": "small and medium-sized enterprises", + "alt_labels": [ + "EBIC", + "European Business and Innovation Centre", + "European Observatory for SMEs", + "SMEs", + "SMUs", + "small and medium-sized businesses", + "small and medium-sized undertakings" + ], + "related_ids": [ + "3622", + "3669" + ], + "broader_ids": [ + "445" + ], + "geo_area_code": null + }, + { + "id": "236", + "label": "North Korea", + "alt_labels": [ + "DPRK", + "Democratic People\u2019s Republic of Korea" + ], + "related_ids": [], + "broader_ids": [ + "956" + ], + "geo_area_code": "PRK" + }, + { + "id": "2360", + "label": "smallholding", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4337" + ], + "geo_area_code": null + }, + { + "id": "2361", + "label": "small town", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4709" + ], + "geo_area_code": null + }, + { + "id": "2362", + "label": "Lesser Antilles", + "alt_labels": [ + "Leeward Islands", + "Windward Islands" + ], + "related_ids": [], + "broader_ids": [ + "5259" + ], + "geo_area_code": null + }, + { + "id": "2363", + "label": "petition", + "alt_labels": [ + "popular initiative" + ], + "related_ids": [ + "5491", + "8423", + "c_c4c48e5c" + ], + "broader_ids": [ + "190" + ], + "geo_area_code": null + }, + { + "id": "2364", + "label": "petrochemicals", + "alt_labels": [ + "petrochemical industry" + ], + "related_ids": [ + "1362", + "1414", + "5966" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2365", + "label": "petrodollar", + "alt_labels": [], + "related_ids": [ + "1677" + ], + "broader_ids": [ + "1809" + ], + "geo_area_code": null + }, + { + "id": "2366", + "label": "petroleum", + "alt_labels": [ + "naphtha" + ], + "related_ids": [ + "1837", + "2716", + "3546", + "3756", + "6045" + ], + "broader_ids": [ + "1274" + ], + "geo_area_code": null + }, + { + "id": "2367", + "label": "pharmacology", + "alt_labels": [ + "pharmaceutics" + ], + "related_ids": [ + "1594", + "2773", + "7355" + ], + "broader_ids": [ + "3941" + ], + "geo_area_code": null + }, + { + "id": "2368", + "label": "Philippines", + "alt_labels": [ + "Republic of the Philippines" + ], + "related_ids": [ + "c_7d7608fa" + ], + "broader_ids": [ + "1847", + "2858", + "6205" + ], + "geo_area_code": "PHL" + }, + { + "id": "2369", + "label": "philosophy", + "alt_labels": [], + "related_ids": [ + "2370", + "5789" + ], + "broader_ids": [ + "3956" + ], + "geo_area_code": null + }, + { + "id": "237", + "label": "Coreper", + "alt_labels": [ + "Permanent Representatives Committee" + ], + "related_ids": [ + "7417" + ], + "broader_ids": [ + "114" + ], + "geo_area_code": null + }, + { + "id": "2370", + "label": "political philosophy", + "alt_labels": [ + "political principle", + "political theory" + ], + "related_ids": [ + "2369", + "3947" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2371", + "label": "arbitrage", + "alt_labels": [], + "related_ids": [ + "6617" + ], + "broader_ids": [ + "2149" + ], + "geo_area_code": null + }, + { + "id": "2372", + "label": "phosphorus", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3809" + ], + "geo_area_code": null + }, + { + "id": "2373", + "label": "photochemistry", + "alt_labels": [], + "related_ids": [ + "1416" + ], + "broader_ids": [ + "5966" + ], + "geo_area_code": null + }, + { + "id": "2374", + "label": "photovoltaic cell", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "756" + ], + "geo_area_code": null + }, + { + "id": "2375", + "label": "occupational physiology", + "alt_labels": [ + "fatigue", + "industrial physiology", + "physiology of work", + "work physiology" + ], + "related_ids": [ + "5208" + ], + "broader_ids": [ + "855" + ], + "geo_area_code": null + }, + { + "id": "2376", + "label": "nuclear physics", + "alt_labels": [], + "related_ids": [ + "1840", + "3789", + "4422", + "753" + ], + "broader_ids": [ + "3946" + ], + "geo_area_code": null + }, + { + "id": "2377", + "label": "Picardy", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "c_bbd07d89" + ], + "geo_area_code": null + }, + { + "id": "2378", + "label": "spare part", + "alt_labels": [ + "replacement part" + ], + "related_ids": [ + "1846" + ], + "broader_ids": [ + "1834" + ], + "geo_area_code": null + }, + { + "id": "2379", + "label": "Piedmont", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1520" + ], + "geo_area_code": null + }, + { + "id": "238", + "label": "corporatism", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2178" + ], + "geo_area_code": null + }, + { + "id": "2380", + "label": "international arbitration", + "alt_labels": [ + "Permanent Court of Arbitration", + "international conciliation", + "international mediation" + ], + "related_ids": [ + "3986", + "6367", + "6617" + ], + "broader_ids": [ + "3112" + ], + "geo_area_code": null + }, + { + "id": "2381", + "label": "precious stones", + "alt_labels": [ + "diamond", + "gem", + "jewel" + ], + "related_ids": [ + "1886", + "3897" + ], + "broader_ids": [ + "2767" + ], + "geo_area_code": null + }, + { + "id": "2382", + "label": "fuel cell", + "alt_labels": [], + "related_ids": [ + "707" + ], + "broader_ids": [ + "4420" + ], + "geo_area_code": null + }, + { + "id": "2383", + "label": "piracy", + "alt_labels": [ + "air piracy", + "hijacker", + "hijacking of a ship", + "hijacking of an aircraft", + "piracy of the seas" + ], + "related_ids": [ + "3348" + ], + "broader_ids": [ + "3944" + ], + "geo_area_code": null + }, + { + "id": "2384", + "label": "fish farming", + "alt_labels": [], + "related_ids": [ + "2435" + ], + "broader_ids": [ + "2320" + ], + "geo_area_code": null + }, + { + "id": "2385", + "label": "cycle track", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3438" + ], + "geo_area_code": null + }, + { + "id": "2386", + "label": "investment transaction", + "alt_labels": [], + "related_ids": [ + "1488", + "4195" + ], + "broader_ids": [ + "2002" + ], + "geo_area_code": null + }, + { + "id": "2387", + "label": "tariff ceiling", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4380" + ], + "geo_area_code": null + }, + { + "id": "2388", + "label": "political arbitration", + "alt_labels": [], + "related_ids": [ + "2966" + ], + "broader_ids": [ + "309" + ], + "geo_area_code": null + }, + { + "id": "2389", + "label": "plain", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3146" + ], + "geo_area_code": null + }, + { + "id": "239", + "label": "fats", + "alt_labels": [ + "fat", + "fatty substance" + ], + "related_ids": [ + "1271", + "2977" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2390", + "label": "anti-crisis plan", + "alt_labels": [], + "related_ids": [ + "2910" + ], + "broader_ids": [ + "2458" + ], + "geo_area_code": null + }, + { + "id": "2391", + "label": "town-planning scheme", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4619" + ], + "geo_area_code": null + }, + { + "id": "2392", + "label": "Colombo Plan", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2188" + ], + "geo_area_code": null + }, + { + "id": "2393", + "label": "development plan", + "alt_labels": [ + "development planning", + "development programme", + "development project" + ], + "related_ids": [ + "2792", + "2971", + "918" + ], + "broader_ids": [ + "2402" + ], + "geo_area_code": null + }, + { + "id": "2394", + "label": "financing plan", + "alt_labels": [ + "finance plan" + ], + "related_ids": [ + "2402" + ], + "broader_ids": [ + "2466" + ], + "geo_area_code": null + }, + { + "id": "2395", + "label": "plankton", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3544" + ], + "geo_area_code": null + }, + { + "id": "2396", + "label": "arboriculture", + "alt_labels": [], + "related_ids": [ + "1063", + "2404", + "2621", + "4352", + "4674", + "5016" + ], + "broader_ids": [ + "2723" + ], + "geo_area_code": null + }, + { + "id": "2397", + "label": "educational planning", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2467" + ], + "geo_area_code": null + }, + { + "id": "2398", + "label": "family planning", + "alt_labels": [ + "family planning programme", + "family planning scheme" + ], + "related_ids": [ + "2484", + "7135" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2399", + "label": "production planning", + "alt_labels": [], + "related_ids": [ + "2402", + "2405", + "3632" + ], + "broader_ids": [ + "2481" + ], + "geo_area_code": null + }, + { + "id": "24", + "label": "commission agent", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2045" + ], + "geo_area_code": null + }, + { + "id": "240", + "label": "animal fats", + "alt_labels": [ + "fish fat" + ], + "related_ids": [ + "2737", + "4860", + "5073" + ], + "broader_ids": [ + "239" + ], + "geo_area_code": null + }, + { + "id": "2400", + "label": "transport planning", + "alt_labels": [ + "highway plan", + "transport plan" + ], + "related_ids": [ + "2402", + "c_28c51c2a" + ], + "broader_ids": [ + "2494" + ], + "geo_area_code": null + }, + { + "id": "2401", + "label": "market planning", + "alt_labels": [], + "related_ids": [ + "2402" + ], + "broader_ids": [ + "1486" + ], + "geo_area_code": null + }, + { + "id": "2402", + "label": "economic planning", + "alt_labels": [ + "directive planning", + "economic programming", + "indicative planning", + "normative planning", + "planning" + ], + "related_ids": [ + "2394", + "2399", + "2400", + "2401", + "2403", + "2405", + "2518", + "2798", + "649", + "657" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2403", + "label": "financial planning", + "alt_labels": [], + "related_ids": [ + "2402" + ], + "broader_ids": [ + "2448" + ], + "geo_area_code": null + }, + { + "id": "2404", + "label": "tree", + "alt_labels": [], + "related_ids": [ + "2396", + "2754" + ], + "broader_ids": [ + "1063" + ], + "geo_area_code": null + }, + { + "id": "2405", + "label": "industrial planning", + "alt_labels": [], + "related_ids": [ + "2399", + "2402", + "2481", + "3067", + "652" + ], + "broader_ids": [ + "2507" + ], + "geo_area_code": null + }, + { + "id": "2406", + "label": "national planning", + "alt_labels": [ + "national plan" + ], + "related_ids": [ + "2615", + "5052", + "655" + ], + "broader_ids": [ + "2402" + ], + "geo_area_code": null + }, + { + "id": "2407", + "label": "regional planning", + "alt_labels": [ + "inter-regional planning", + "regional management", + "regional plan", + "regional programming", + "territorial planning" + ], + "related_ids": [ + "1056", + "1497", + "2515", + "3627", + "5148", + "660" + ], + "broader_ids": [ + "2402" + ], + "geo_area_code": null + }, + { + "id": "2408", + "label": "sectoral planning", + "alt_labels": [], + "related_ids": [ + "1731" + ], + "broader_ids": [ + "2402" + ], + "geo_area_code": null + }, + { + "id": "2409", + "label": "seedling", + "alt_labels": [ + "cutting (plant)" + ], + "related_ids": [ + "2410", + "2723" + ], + "broader_ids": [ + "2014" + ], + "geo_area_code": null + }, + { + "id": "241", + "label": "vegetable fats", + "alt_labels": [], + "related_ids": [ + "2414" + ], + "broader_ids": [ + "239" + ], + "geo_area_code": null + }, + { + "id": "2410", + "label": "plantation", + "alt_labels": [], + "related_ids": [ + "1068", + "1260", + "2409", + "2723", + "5016" + ], + "broader_ids": [ + "4412" + ], + "geo_area_code": null + }, + { + "id": "2411", + "label": "aquatic plant", + "alt_labels": [], + "related_ids": [ + "1260" + ], + "broader_ids": [ + "3544" + ], + "geo_area_code": null + }, + { + "id": "2412", + "label": "fodder plant", + "alt_labels": [], + "related_ids": [ + "1224", + "320", + "4854", + "4857", + "5363" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2413", + "label": "industrial plant", + "alt_labels": [], + "related_ids": [ + "323" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2414", + "label": "oleaginous plant", + "alt_labels": [ + "oil seed" + ], + "related_ids": [ + "1270", + "1271", + "2131", + "241", + "6321" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2415", + "label": "conifer", + "alt_labels": [ + "fir tree", + "pine tree" + ], + "related_ids": [ + "3478" + ], + "broader_ids": [ + "2404" + ], + "geo_area_code": null + }, + { + "id": "2416", + "label": "root crop", + "alt_labels": [], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2417", + "label": "textile plant", + "alt_labels": [ + "fibre plant" + ], + "related_ids": [ + "1418", + "323", + "990" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2418", + "label": "tropical plant", + "alt_labels": [], + "related_ids": [ + "1120", + "1285", + "1781", + "329" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2419", + "label": "cultivation under plastic", + "alt_labels": [ + "plasticulture" + ], + "related_ids": [ + "324" + ], + "broader_ids": [ + "4363" + ], + "geo_area_code": null + }, + { + "id": "242", + "label": "correspondence", + "alt_labels": [ + "letter" + ], + "related_ids": [], + "broader_ids": [ + "486" + ], + "geo_area_code": null + }, + { + "id": "2420", + "label": "plasticiser", + "alt_labels": [ + "plasticizer" + ], + "related_ids": [ + "1837" + ], + "broader_ids": [ + "3798" + ], + "geo_area_code": null + }, + { + "id": "2421", + "label": "plate", + "alt_labels": [ + "rolled product" + ], + "related_ids": [], + "broader_ids": [ + "3801" + ], + "geo_area_code": null + }, + { + "id": "2422", + "label": "political programme", + "alt_labels": [ + "political platform" + ], + "related_ids": [ + "2796", + "3063" + ], + "broader_ids": [ + "2180" + ], + "geo_area_code": null + }, + { + "id": "2423", + "label": "continental shelf", + "alt_labels": [], + "related_ids": [ + "3992" + ], + "broader_ids": [ + "1050" + ], + "geo_area_code": null + }, + { + "id": "2424", + "label": "platinum", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1886" + ], + "geo_area_code": null + }, + { + "id": "2425", + "label": "plaster", + "alt_labels": [ + "gypsum" + ], + "related_ids": [], + "broader_ids": [ + "1826" + ], + "geo_area_code": null + }, + { + "id": "2426", + "label": "deciduous tree", + "alt_labels": [ + "beech", + "broadleaved tree", + "eucalyptus", + "oak" + ], + "related_ids": [], + "broader_ids": [ + "2404" + ], + "geo_area_code": null + }, + { + "id": "2427", + "label": "full employment", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2468" + ], + "geo_area_code": null + }, + { + "id": "2428", + "label": "lead", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1885" + ], + "geo_area_code": null + }, + { + "id": "2429", + "label": "plutonium", + "alt_labels": [], + "related_ids": [ + "1885", + "3809" + ], + "broader_ids": [ + "1840" + ], + "geo_area_code": null + }, + { + "id": "243", + "label": "corrosion", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "371" + ], + "geo_area_code": null + }, + { + "id": "2430", + "label": "pneumatic tyre", + "alt_labels": [ + "inner tube", + "tyre" + ], + "related_ids": [ + "848" + ], + "broader_ids": [ + "1387" + ], + "geo_area_code": null + }, + { + "id": "2431", + "label": "UN Development Programme", + "alt_labels": [ + "UN Capital Development Fund", + "UN Development Fund for Women", + "UN Volunteers Programme", + "UNCDF", + "UNDP", + "UNIFEM", + "UNV", + "United Nations Capital Development Fund", + "United Nations Development Fund for Women", + "United Nations Development Programme", + "United Nations Volunteers" + ], + "related_ids": [], + "broader_ids": [ + "4365" + ], + "geo_area_code": null + }, + { + "id": "2432", + "label": "UN Environment Programme", + "alt_labels": [ + "UNEP", + "United Nations Environment Programme" + ], + "related_ids": [], + "broader_ids": [ + "4365" + ], + "geo_area_code": null + }, + { + "id": "2433", + "label": "weight and size", + "alt_labels": [ + "maximum weight", + "per axle weight", + "total authorised weight", + "total laden weight", + "towing weight" + ], + "related_ids": [], + "broader_ids": [ + "4651" + ], + "geo_area_code": null + }, + { + "id": "2434", + "label": "retail outlet", + "alt_labels": [ + "shop" + ], + "related_ids": [], + "broader_ids": [ + "5" + ], + "geo_area_code": null + }, + { + "id": "2435", + "label": "fish", + "alt_labels": [ + "piscicultural species", + "species of fish" + ], + "related_ids": [ + "1265", + "1372", + "2384", + "2732", + "5255", + "6124" + ], + "broader_ids": [ + "3544" + ], + "geo_area_code": null + }, + { + "id": "2436", + "label": "freshwater fish", + "alt_labels": [], + "related_ids": [ + "2305" + ], + "broader_ids": [ + "2435" + ], + "geo_area_code": null + }, + { + "id": "2437", + "label": "sea fish", + "alt_labels": [], + "related_ids": [ + "2308" + ], + "broader_ids": [ + "2435" + ], + "geo_area_code": null + }, + { + "id": "2438", + "label": "fresh fish", + "alt_labels": [], + "related_ids": [ + "5232" + ], + "broader_ids": [ + "2718" + ], + "geo_area_code": null + }, + { + "id": "2439", + "label": "Poitou-Charentes", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "c_be8fda35" + ], + "geo_area_code": null + }, + { + "id": "244", + "label": "political affiliation", + "alt_labels": [], + "related_ids": [ + "1282", + "4436" + ], + "broader_ids": [ + "2180" + ], + "geo_area_code": null + }, + { + "id": "2440", + "label": "police", + "alt_labels": [ + "national police" + ], + "related_ids": [ + "5551", + "5552", + "5630", + "7986", + "8481" + ], + "broader_ids": [ + "2162" + ], + "geo_area_code": null + }, + { + "id": "2441", + "label": "criminal investigation department", + "alt_labels": [], + "related_ids": [ + "2704", + "573" + ], + "broader_ids": [ + "2351" + ], + "geo_area_code": null + }, + { + "id": "2442", + "label": "agricultural policy", + "alt_labels": [ + "agricultural development", + "agricultural planning", + "farm policy", + "farming policy" + ], + "related_ids": [ + "2493", + "2518", + "2639", + "3170", + "613", + "6917", + "992" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2443", + "label": "common agricultural policy", + "alt_labels": [ + "CAP", + "common agricultural market", + "green Europe" + ], + "related_ids": [ + "1789", + "2445", + "2451", + "2477", + "2483", + "2493", + "2516", + "2639", + "2967", + "3165", + "4117", + "4402", + "978", + "c_a62dbeba" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2444", + "label": "national agricultural policy", + "alt_labels": [ + "national farm policy" + ], + "related_ids": [], + "broader_ids": [ + "2442" + ], + "geo_area_code": null + }, + { + "id": "2445", + "label": "regional farm policy", + "alt_labels": [ + "regional agricultural policy" + ], + "related_ids": [ + "221", + "2443", + "2515", + "2516", + "3058" + ], + "broader_ids": [ + "2442" + ], + "geo_area_code": null + }, + { + "id": "2446", + "label": "food policy", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1268" + ], + "geo_area_code": null + }, + { + "id": "2447", + "label": "banking policy", + "alt_labels": [], + "related_ids": [ + "410" + ], + "broader_ids": [ + "2149" + ], + "geo_area_code": null + }, + { + "id": "2448", + "label": "budget policy", + "alt_labels": [ + "annuality of the budget", + "budgetary discipline", + "budgetary reform", + "yearly nature of the budget" + ], + "related_ids": [ + "1012", + "2497", + "5555", + "929", + "c_9a1bc51d" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2449", + "label": "trade policy", + "alt_labels": [ + "trade system" + ], + "related_ids": [ + "1567", + "207", + "2128", + "2519", + "6007" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "245", + "label": "corruption", + "alt_labels": [], + "related_ids": [ + "186", + "3348", + "5748", + "c_2f00dd5a", + "c_9fe65404" + ], + "broader_ids": [ + "1432" + ], + "geo_area_code": null + }, + { + "id": "2450", + "label": "common commercial policy", + "alt_labels": [ + "EU trade policy" + ], + "related_ids": [ + "1136", + "2173", + "2451", + "2520", + "2590", + "2696", + "4385", + "4600" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2451", + "label": "EU policy", + "alt_labels": [ + "Community policy" + ], + "related_ids": [ + "2443", + "2450", + "2454", + "2455", + "2457", + "2474", + "2516", + "3346", + "3617", + "3656", + "435330", + "4602", + "5794", + "8480", + "c_46f6aaeb", + "c_d6ede0c7", + "c_d8d35f08" + ], + "broader_ids": [ + "5418" + ], + "geo_area_code": null + }, + { + "id": "2452", + "label": "voluntary restraint agreement", + "alt_labels": [ + "agreement on voluntary restraint", + "auto-limitation agreement" + ], + "related_ids": [ + "1662", + "4242", + "946" + ], + "broader_ids": [ + "3185" + ], + "geo_area_code": null + }, + { + "id": "2453", + "label": "archaeology", + "alt_labels": [], + "related_ids": [ + "2278" + ], + "broader_ids": [ + "3956" + ], + "geo_area_code": null + }, + { + "id": "2454", + "label": "EU employment policy", + "alt_labels": [ + "Community employment policy", + "European Union employment policy" + ], + "related_ids": [ + "2451", + "4557", + "5675" + ], + "broader_ids": [ + "2468" + ], + "geo_area_code": null + }, + { + "id": "2455", + "label": "common fisheries policy", + "alt_labels": [], + "related_ids": [ + "2451", + "598", + "8284", + "978", + "c_8d31aed6" + ], + "broader_ids": [ + "2476" + ], + "geo_area_code": null + }, + { + "id": "2456", + "label": "common price policy", + "alt_labels": [ + "Community price", + "common price" + ], + "related_ids": [ + "2173" + ], + "broader_ids": [ + "2489" + ], + "geo_area_code": null + }, + { + "id": "2457", + "label": "common transport policy", + "alt_labels": [ + "CTP", + "EU transport policy", + "European transport policy", + "transport policy of the EU", + "transport policy of the European Union" + ], + "related_ids": [ + "2451", + "c_52792cef" + ], + "broader_ids": [ + "2494" + ], + "geo_area_code": null + }, + { + "id": "2458", + "label": "short-term economic policy", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2497" + ], + "geo_area_code": null + }, + { + "id": "2459", + "label": "cultural policy", + "alt_labels": [], + "related_ids": [ + "208", + "2174", + "2467", + "4595", + "5160", + "851" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "246", + "label": "Corsica", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1088" + ], + "geo_area_code": null + }, + { + "id": "2460", + "label": "aid policy", + "alt_labels": [], + "related_ids": [ + "2465", + "3481", + "427", + "c_8f1cd55b" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2461", + "label": "austerity policy", + "alt_labels": [], + "related_ids": [ + "1421", + "2491", + "2910", + "3555" + ], + "broader_ids": [ + "2497" + ], + "geo_area_code": null + }, + { + "id": "2462", + "label": "intervention policy", + "alt_labels": [ + "State intervention", + "interventionism" + ], + "related_ids": [ + "1485", + "1486", + "2173", + "2463", + "4012", + "640", + "887", + "889" + ], + "broader_ids": [ + "2497" + ], + "geo_area_code": null + }, + { + "id": "2463", + "label": "investment policy", + "alt_labels": [], + "related_ids": [ + "2462", + "2469", + "2497", + "2507", + "2518", + "295", + "4195", + "4795", + "766" + ], + "broader_ids": [ + "1488" + ], + "geo_area_code": null + }, + { + "id": "2464", + "label": "defence policy", + "alt_labels": [ + "defence programme", + "military programme", + "national defence" + ], + "related_ids": [ + "218", + "3228", + "4794" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2465", + "label": "development policy", + "alt_labels": [ + "development strategy", + "growth policy" + ], + "related_ids": [ + "1356", + "2101", + "2460", + "310", + "4223", + "427", + "4806", + "6311", + "c_8f1cd55b" + ], + "broader_ids": [ + "2497" + ], + "geo_area_code": null + }, + { + "id": "2466", + "label": "financing policy", + "alt_labels": [], + "related_ids": [ + "1009", + "1452", + "c_f007e95f" + ], + "broader_ids": [ + "1000" + ], + "geo_area_code": null + }, + { + "id": "2467", + "label": "education policy", + "alt_labels": [], + "related_ids": [ + "1380", + "2175", + "2459", + "5675", + "6920" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2468", + "label": "employment policy", + "alt_labels": [ + "labour policy" + ], + "related_ids": [ + "1503", + "1802", + "3007" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2469", + "label": "business policy", + "alt_labels": [], + "related_ids": [ + "1164", + "2463", + "2481", + "2507", + "3255", + "5985", + "6913", + "813", + "835" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "247", + "label": "Costa Rica", + "alt_labels": [ + "Republic of Costa Rica" + ], + "related_ids": [], + "broader_ids": [ + "1606", + "1844", + "2117", + "2119", + "4069" + ], + "geo_area_code": "CRI" + }, + { + "id": "2470", + "label": "environmental policy", + "alt_labels": [ + "environmental management" + ], + "related_ids": [ + "2007", + "2505", + "5585", + "5675", + "632", + "833" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2471", + "label": "architecture", + "alt_labels": [], + "related_ids": [ + "2482", + "4619" + ], + "broader_ids": [ + "4837" + ], + "geo_area_code": null + }, + { + "id": "2472", + "label": "information policy", + "alt_labels": [], + "related_ids": [ + "3925" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2473", + "label": "communications policy", + "alt_labels": [ + "communications", + "development of communications" + ], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2474", + "label": "competition policy", + "alt_labels": [], + "related_ids": [ + "2451", + "2816", + "69", + "835", + "889" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2475", + "label": "construction policy", + "alt_labels": [], + "related_ids": [ + "3879", + "4565" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2476", + "label": "fisheries policy", + "alt_labels": [ + "fishery organisation", + "organisation of fishing" + ], + "related_ids": [ + "2518", + "3992", + "5150" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2477", + "label": "agricultural production policy", + "alt_labels": [], + "related_ids": [ + "2014", + "2443", + "2483", + "2709", + "3488", + "4074", + "4630" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2478", + "label": "research policy", + "alt_labels": [ + "promotion of research", + "scientific policy", + "technological policy" + ], + "related_ids": [ + "223", + "2481", + "2507", + "2914", + "3627", + "5122", + "5973", + "6302", + "7951" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2479", + "label": "health policy", + "alt_labels": [ + "health", + "health protection" + ], + "related_ids": [ + "2144", + "680" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "248", + "label": "stock-exchange listing", + "alt_labels": [ + "initial public offering", + "market quotation" + ], + "related_ids": [], + "broader_ids": [ + "3233" + ], + "geo_area_code": null + }, + { + "id": "2480", + "label": "birth policy", + "alt_labels": [], + "related_ids": [ + "2501", + "3168", + "966" + ], + "broader_ids": [ + "2484" + ], + "geo_area_code": null + }, + { + "id": "2481", + "label": "production policy", + "alt_labels": [ + "industrial management", + "production management", + "reorganisation of production" + ], + "related_ids": [ + "2405", + "2469", + "2478", + "2497", + "2720", + "2724", + "6298", + "652", + "797" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2482", + "label": "solar architecture", + "alt_labels": [], + "related_ids": [ + "2471" + ], + "broader_ids": [ + "756" + ], + "geo_area_code": null + }, + { + "id": "2483", + "label": "support policy", + "alt_labels": [ + "granting of a subsidy" + ], + "related_ids": [ + "2443", + "2477", + "3003", + "4236", + "712" + ], + "broader_ids": [ + "2462" + ], + "geo_area_code": null + }, + { + "id": "2484", + "label": "population policy", + "alt_labels": [ + "demographic policy" + ], + "related_ids": [ + "2398" + ], + "broader_ids": [ + "385" + ], + "geo_area_code": null + }, + { + "id": "2485", + "label": "East-West policy", + "alt_labels": [], + "related_ids": [ + "3223" + ], + "broader_ids": [ + "6722" + ], + "geo_area_code": null + }, + { + "id": "2486", + "label": "exchange policy", + "alt_labels": [], + "related_ids": [ + "3239", + "522", + "5795", + "665" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2487", + "label": "export policy", + "alt_labels": [ + "export scheme", + "export system" + ], + "related_ids": [ + "1402", + "1642", + "2634", + "3577", + "4399", + "946" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2488", + "label": "import policy", + "alt_labels": [ + "autonomous system of imports", + "system of imports" + ], + "related_ids": [ + "1644", + "2635", + "2844", + "3579", + "4400" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2489", + "label": "prices policy", + "alt_labels": [ + "price system" + ], + "related_ids": [ + "2497", + "410" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "249", + "label": "C\u00f4te d'Ivoire", + "alt_labels": [ + "Ivory Coast", + "Republic of C\u00f4te d\u2019Ivoire" + ], + "related_ids": [], + "broader_ids": [ + "351", + "4607", + "5083", + "5302" + ], + "geo_area_code": "CIV" + }, + { + "id": "2490", + "label": "incomes policy", + "alt_labels": [], + "related_ids": [ + "2491", + "3072", + "3659" + ], + "broader_ids": [ + "2497" + ], + "geo_area_code": null + }, + { + "id": "2491", + "label": "pay policy", + "alt_labels": [], + "related_ids": [ + "2461", + "2490" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2492", + "label": "archives", + "alt_labels": [ + "filing", + "records management" + ], + "related_ids": [ + "486", + "8470" + ], + "broader_ids": [ + "4366" + ], + "geo_area_code": null + }, + { + "id": "2493", + "label": "policy on agricultural structures", + "alt_labels": [], + "related_ids": [ + "1542", + "2442", + "2443", + "2516", + "2725" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2494", + "label": "transport policy", + "alt_labels": [ + "transport development" + ], + "related_ids": [ + "2181", + "410" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2495", + "label": "credit policy", + "alt_labels": [ + "bank-rate policy", + "credit volume" + ], + "related_ids": [ + "1009", + "1421", + "178", + "2497", + "2510", + "3246", + "3942", + "4763" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2496", + "label": "housing policy", + "alt_labels": [ + "housing construction" + ], + "related_ids": [ + "1690" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2497", + "label": "economic policy", + "alt_labels": [ + "economic approach", + "economic choice" + ], + "related_ids": [ + "112", + "209", + "2448", + "2463", + "2481", + "2489", + "2495", + "2498", + "2502", + "2507", + "2510", + "2928", + "427", + "5555" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2498", + "label": "energy policy", + "alt_labels": [], + "related_ids": [ + "1024", + "2497", + "3538", + "3731", + "3733", + "3745", + "435164", + "4420", + "447917", + "744" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2499", + "label": "European defence policy", + "alt_labels": [], + "related_ids": [ + "3453", + "6709", + "908" + ], + "broader_ids": [ + "2464" + ], + "geo_area_code": null + }, + { + "id": "25", + "label": "Commonwealth", + "alt_labels": [ + "British Commonwealth", + "British Community" + ], + "related_ids": [], + "broader_ids": [ + "2188" + ], + "geo_area_code": null + }, + { + "id": "250", + "label": "social-security contribution", + "alt_labels": [ + "employee's contribution", + "employer's contribution" + ], + "related_ids": [ + "279", + "5869" + ], + "broader_ids": [ + "4050" + ], + "geo_area_code": null + }, + { + "id": "2500", + "label": "foreign policy", + "alt_labels": [ + "foreign affairs", + "foreign relations" + ], + "related_ids": [ + "216", + "5788" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2501", + "label": "family policy", + "alt_labels": [ + "family aid policy" + ], + "related_ids": [ + "108", + "1399", + "2480", + "2604", + "7981" + ], + "broader_ids": [ + "965" + ], + "geo_area_code": null + }, + { + "id": "2502", + "label": "financial policy", + "alt_labels": [ + "financial reform" + ], + "related_ids": [ + "1452", + "2497" + ], + "broader_ids": [ + "1630" + ], + "geo_area_code": null + }, + { + "id": "2503", + "label": "Arctic", + "alt_labels": [ + "Arctic Circle", + "Arctic continent", + "North Pole" + ], + "related_ids": [ + "6323" + ], + "broader_ids": [ + "3414" + ], + "geo_area_code": null + }, + { + "id": "2504", + "label": "fiscal policy", + "alt_labels": [ + "tax policy", + "taxation policy" + ], + "related_ids": [ + "5052" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2505", + "label": "forestry policy", + "alt_labels": [ + "forestry programme" + ], + "related_ids": [ + "2470", + "2827", + "4630" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2506", + "label": "government policy", + "alt_labels": [], + "related_ids": [ + "190", + "8466" + ], + "broader_ids": [ + "39" + ], + "geo_area_code": null + }, + { + "id": "2507", + "label": "industrial policy", + "alt_labels": [], + "related_ids": [ + "213", + "221", + "2463", + "2469", + "2478", + "2497", + "2518", + "2816", + "4279", + "652", + "835", + "c_1138d9d2" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2508", + "label": "domestic policy", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "39" + ], + "geo_area_code": null + }, + { + "id": "2509", + "label": "migration policy", + "alt_labels": [], + "related_ids": [ + "4003", + "4004", + "552" + ], + "broader_ids": [ + "1909" + ], + "geo_area_code": null + }, + { + "id": "251", + "label": "sugar levy", + "alt_labels": [ + "isoglucose levy" + ], + "related_ids": [ + "4314" + ], + "broader_ids": [ + "3560" + ], + "geo_area_code": null + }, + { + "id": "2510", + "label": "monetary policy", + "alt_labels": [ + "currency reform", + "currency situation", + "money policy" + ], + "related_ids": [ + "1421", + "2495", + "2497", + "3239", + "369", + "4798", + "5555", + "5797", + "6212" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2511", + "label": "agri-monetary policy", + "alt_labels": [ + "agricultural monetary policy" + ], + "related_ids": [ + "1460", + "2591", + "5866" + ], + "broader_ids": [ + "2443" + ], + "geo_area_code": null + }, + { + "id": "2512", + "label": "ports policy", + "alt_labels": [], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2513", + "label": "common ports policy", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2512" + ], + "geo_area_code": null + }, + { + "id": "2514", + "label": "silver", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1886" + ], + "geo_area_code": null + }, + { + "id": "2515", + "label": "regional policy", + "alt_labels": [], + "related_ids": [ + "221", + "2245", + "2407", + "2445", + "2518", + "3256", + "5120", + "660", + "68", + "976" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2516", + "label": "EU regional policy", + "alt_labels": [ + "Community regional policy", + "European Union regional policy", + "regional policy committee", + "regional policy of the EU", + "regional policy of the European Union" + ], + "related_ids": [ + "1056", + "2443", + "2445", + "2451", + "2493", + "4056", + "430", + "5138", + "5499", + "5674" + ], + "broader_ids": [ + "2515" + ], + "geo_area_code": null + }, + { + "id": "2517", + "label": "social policy", + "alt_labels": [ + "social plan", + "social planning" + ], + "related_ids": [ + "1004", + "1181" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2518", + "label": "structural policy", + "alt_labels": [ + "sectoral policy" + ], + "related_ids": [ + "2402", + "2442", + "2463", + "2476", + "2507", + "2515", + "5138", + "5150", + "995", + "c_9a1bc51d" + ], + "broader_ids": [ + "2497" + ], + "geo_area_code": null + }, + { + "id": "2519", + "label": "tariff policy", + "alt_labels": [ + "customs policy" + ], + "related_ids": [ + "2449", + "2844", + "6129" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "252", + "label": "cotton", + "alt_labels": [ + "cottonseed" + ], + "related_ids": [ + "3893" + ], + "broader_ids": [ + "2417" + ], + "geo_area_code": null + }, + { + "id": "2520", + "label": "common tariff policy", + "alt_labels": [ + "Common Customs Policy" + ], + "related_ids": [ + "2450", + "6007", + "810" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2521", + "label": "pollutant", + "alt_labels": [ + "micropollutant", + "polluting product" + ], + "related_ids": [ + "1884", + "2524", + "5533" + ], + "broader_ids": [ + "2090" + ], + "geo_area_code": null + }, + { + "id": "2522", + "label": "atmospheric pollutant", + "alt_labels": [ + "air pollutant", + "smoke" + ], + "related_ids": [ + "2527", + "4039" + ], + "broader_ids": [ + "2521" + ], + "geo_area_code": null + }, + { + "id": "2523", + "label": "water pollutant", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2521" + ], + "geo_area_code": null + }, + { + "id": "2524", + "label": "pollution", + "alt_labels": [ + "contamination", + "discharge of pollutants" + ], + "related_ids": [ + "1707", + "2060", + "2090", + "2521", + "2611", + "272", + "3140" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2525", + "label": "Argentina", + "alt_labels": [ + "Argentine Republic" + ], + "related_ids": [], + "broader_ids": [ + "1105", + "1624", + "2119", + "4069", + "5778" + ], + "geo_area_code": "ARG" + }, + { + "id": "2526", + "label": "noise pollution", + "alt_labels": [ + "sound pollution" + ], + "related_ids": [ + "2824", + "5048" + ], + "broader_ids": [ + "2524" + ], + "geo_area_code": null + }, + { + "id": "2527", + "label": "air quality", + "alt_labels": [ + "air pollution", + "atmospheric pollution", + "smog" + ], + "related_ids": [ + "2522", + "3967" + ], + "broader_ids": [ + "2524" + ], + "geo_area_code": null + }, + { + "id": "2528", + "label": "chemical pollution", + "alt_labels": [], + "related_ids": [ + "1362", + "6914" + ], + "broader_ids": [ + "2524" + ], + "geo_area_code": null + }, + { + "id": "2529", + "label": "pollution from land-based sources", + "alt_labels": [], + "related_ids": [ + "260" + ], + "broader_ids": [ + "2535" + ], + "geo_area_code": null + }, + { + "id": "253", + "label": "coup d'\u00e9tat", + "alt_labels": [ + "pronunciamento" + ], + "related_ids": [], + "broader_ids": [ + "4730" + ], + "geo_area_code": null + }, + { + "id": "2530", + "label": "water pollution", + "alt_labels": [], + "related_ids": [ + "3144", + "597", + "6398", + "764", + "c_4cd2a8f4" + ], + "broader_ids": [ + "2524" + ], + "geo_area_code": null + }, + { + "id": "2531", + "label": "food contamination", + "alt_labels": [ + "food contaminant" + ], + "related_ids": [ + "1442", + "2735", + "2836", + "2985", + "5689", + "6052", + "6569" + ], + "broader_ids": [ + "2524" + ], + "geo_area_code": null + }, + { + "id": "2532", + "label": "coastal pollution", + "alt_labels": [], + "related_ids": [ + "1683", + "3043", + "3142", + "542", + "611" + ], + "broader_ids": [ + "2524" + ], + "geo_area_code": null + }, + { + "id": "2533", + "label": "pollution of waterways", + "alt_labels": [], + "related_ids": [ + "260" + ], + "broader_ids": [ + "2530" + ], + "geo_area_code": null + }, + { + "id": "2534", + "label": "soil pollution", + "alt_labels": [ + "underground pollution" + ], + "related_ids": [ + "3931", + "764" + ], + "broader_ids": [ + "2524" + ], + "geo_area_code": null + }, + { + "id": "2535", + "label": "marine pollution", + "alt_labels": [ + "disposal of waste at sea", + "pollution of the seas" + ], + "related_ids": [ + "1870", + "2107", + "3132", + "542" + ], + "broader_ids": [ + "2530" + ], + "geo_area_code": null + }, + { + "id": "2536", + "label": "dry farming", + "alt_labels": [], + "related_ids": [ + "4785" + ], + "broader_ids": [ + "4363" + ], + "geo_area_code": null + }, + { + "id": "2537", + "label": "organic pollution", + "alt_labels": [], + "related_ids": [ + "3817" + ], + "broader_ids": [ + "2524" + ], + "geo_area_code": null + }, + { + "id": "2538", + "label": "pollution from agricultural sources", + "alt_labels": [], + "related_ids": [ + "2357", + "344", + "765" + ], + "broader_ids": [ + "2524" + ], + "geo_area_code": null + }, + { + "id": "2539", + "label": "radioactive pollution", + "alt_labels": [ + "radioactive contamination" + ], + "related_ids": [ + "2882", + "347", + "4042", + "5287", + "686", + "921", + "c_be0de7b7" + ], + "broader_ids": [ + "2524" + ], + "geo_area_code": null + }, + { + "id": "254", + "label": "chartering", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3097" + ], + "geo_area_code": null + }, + { + "id": "2540", + "label": "stratospheric pollution", + "alt_labels": [ + "depletion of the ozone layer", + "destruction of the ozone layer", + "deterioration of the ozone layer" + ], + "related_ids": [ + "2215" + ], + "broader_ids": [ + "2524" + ], + "geo_area_code": null + }, + { + "id": "2541", + "label": "thermal pollution", + "alt_labels": [], + "related_ids": [ + "3188" + ], + "broader_ids": [ + "2524" + ], + "geo_area_code": null + }, + { + "id": "2542", + "label": "transfrontier pollution", + "alt_labels": [], + "related_ids": [ + "581" + ], + "broader_ids": [ + "2524" + ], + "geo_area_code": null + }, + { + "id": "2543", + "label": "Poland", + "alt_labels": [ + "Republic of Poland" + ], + "related_ids": [ + "7814" + ], + "broader_ids": [ + "122", + "2106", + "2200", + "5087", + "5283", + "5655", + "5781", + "914" + ], + "geo_area_code": "POL" + }, + { + "id": "2544", + "label": "mixed cropping", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4363" + ], + "geo_area_code": null + }, + { + "id": "2545", + "label": "polymer", + "alt_labels": [], + "related_ids": [ + "3694" + ], + "broader_ids": [ + "1837" + ], + "geo_area_code": null + }, + { + "id": "2546", + "label": "Polynesia", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2113" + ], + "geo_area_code": null + }, + { + "id": "2547", + "label": "French Polynesia", + "alt_labels": [ + "Austral Islands", + "Clipperton Island", + "Gambier Islands", + "Marquesas Islands", + "Overseas Country of French Polynesia", + "Society Islands", + "Tahiti", + "Tuamotu Islands" + ], + "related_ids": [], + "broader_ids": [ + "1087", + "2113", + "8366" + ], + "geo_area_code": "PYF" + }, + { + "id": "2548", + "label": "potato", + "alt_labels": [ + "batata", + "sweet potato" + ], + "related_ids": [ + "1607", + "1654" + ], + "broader_ids": [ + "2416" + ], + "geo_area_code": null + }, + { + "id": "2549", + "label": "heat pump", + "alt_labels": [], + "related_ids": [ + "2945", + "3851", + "5503" + ], + "broader_ids": [ + "5615" + ], + "geo_area_code": null + }, + { + "id": "255", + "label": "Court of Justice of the European Union", + "alt_labels": [ + "CJEC", + "CJEU", + "Community court", + "Court of Justice of the European Communities", + "Court of Justice of the European Union (institution)", + "EC Court of Justice", + "European Court of Justice" + ], + "related_ids": [ + "525" + ], + "broader_ids": [ + "1451" + ], + "geo_area_code": null + }, + { + "id": "2550", + "label": "working population", + "alt_labels": [], + "related_ids": [ + "2551" + ], + "broader_ids": [ + "1737" + ], + "geo_area_code": null + }, + { + "id": "2551", + "label": "working population engaged in agriculture", + "alt_labels": [], + "related_ids": [ + "2550", + "2558" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2552", + "label": "persons in work", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2550" + ], + "geo_area_code": null + }, + { + "id": "2553", + "label": "population of working age", + "alt_labels": [ + "legal working age" + ], + "related_ids": [], + "broader_ids": [ + "2550" + ], + "geo_area_code": null + }, + { + "id": "2554", + "label": "world population", + "alt_labels": [], + "related_ids": [ + "c_789ead37" + ], + "broader_ids": [ + "1773" + ], + "geo_area_code": null + }, + { + "id": "2555", + "label": "non-working population", + "alt_labels": [ + "inactive" + ], + "related_ids": [ + "5974" + ], + "broader_ids": [ + "1737" + ], + "geo_area_code": null + }, + { + "id": "2556", + "label": "fishing agreement", + "alt_labels": [], + "related_ids": [ + "3462", + "3468", + "5537" + ], + "broader_ids": [ + "2476" + ], + "geo_area_code": null + }, + { + "id": "2557", + "label": "chemical weapon", + "alt_labels": [], + "related_ids": [ + "3157" + ], + "broader_ids": [ + "3420" + ], + "geo_area_code": null + }, + { + "id": "2558", + "label": "rural population", + "alt_labels": [], + "related_ids": [ + "1222", + "2551", + "507", + "6001", + "6033" + ], + "broader_ids": [ + "3300" + ], + "geo_area_code": null + }, + { + "id": "2559", + "label": "urban population", + "alt_labels": [], + "related_ids": [ + "1223", + "4618", + "4809", + "6035" + ], + "broader_ids": [ + "3300" + ], + "geo_area_code": null + }, + { + "id": "256", + "label": "European Court of Auditors", + "alt_labels": [ + "Court of Auditors of the European Communities", + "Court of Auditors of the European Union", + "EC Court of Auditors", + "ECA" + ], + "related_ids": [ + "173", + "438855", + "6285" + ], + "broader_ids": [ + "1451" + ], + "geo_area_code": null + }, + { + "id": "2560", + "label": "swine", + "alt_labels": [ + "boar", + "hog", + "pig", + "porcine species", + "sow" + ], + "related_ids": [ + "4692" + ], + "broader_ids": [ + "5962" + ], + "geo_area_code": null + }, + { + "id": "2561", + "label": "fishing port", + "alt_labels": [], + "related_ids": [ + "1447" + ], + "broader_ids": [ + "5913" + ], + "geo_area_code": null + }, + { + "id": "2562", + "label": "Puerto Rico", + "alt_labels": [ + "Commonwealth of Puerto Rico" + ], + "related_ids": [ + "888" + ], + "broader_ids": [ + "1180" + ], + "geo_area_code": "PRI" + }, + { + "id": "2563", + "label": "Portugal", + "alt_labels": [ + "Portuguese Republic" + ], + "related_ids": [ + "2564" + ], + "broader_ids": [ + "122", + "2106", + "2200", + "5283", + "912" + ], + "geo_area_code": "PRT" + }, + { + "id": "2564", + "label": "regions of Portugal", + "alt_labels": [], + "related_ids": [ + "2563" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2565", + "label": "dominant position", + "alt_labels": [ + "abuse of dominant position", + "company in a dominant position" + ], + "related_ids": [], + "broader_ids": [ + "3581" + ], + "geo_area_code": null + }, + { + "id": "2566", + "label": "postal and telecommunications services", + "alt_labels": [ + "P & T" + ], + "related_ids": [ + "4616" + ], + "broader_ids": [ + "4361" + ], + "geo_area_code": null + }, + { + "id": "2567", + "label": "conventional weapon", + "alt_labels": [ + "artillery" + ], + "related_ids": [ + "5495" + ], + "broader_ids": [ + "2647" + ], + "geo_area_code": null + }, + { + "id": "2568", + "label": "potassium", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1885" + ], + "geo_area_code": null + }, + { + "id": "2569", + "label": "development potential", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "427" + ], + "geo_area_code": null + }, + { + "id": "257", + "label": "European Court of Human Rights", + "alt_labels": [ + "Court of Human Rights", + "ECHR", + "European Commission on Human Rights" + ], + "related_ids": [ + "584" + ], + "broader_ids": [ + "121" + ], + "geo_area_code": null + }, + { + "id": "2570", + "label": "Apulia", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1520" + ], + "geo_area_code": null + }, + { + "id": "2571", + "label": "push towing", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4515" + ], + "geo_area_code": null + }, + { + "id": "2572", + "label": "dust", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2522" + ], + "geo_area_code": null + }, + { + "id": "2573", + "label": "political power", + "alt_labels": [], + "related_ids": [ + "4093", + "4182", + "67" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2574", + "label": "budgetary power", + "alt_labels": [ + "budgetary authority" + ], + "related_ids": [ + "2243" + ], + "broader_ids": [ + "2698" + ], + "geo_area_code": null + }, + { + "id": "2575", + "label": "purchasing power", + "alt_labels": [], + "related_ids": [ + "1354", + "139", + "274", + "3653", + "3850" + ], + "broader_ids": [ + "3659" + ], + "geo_area_code": null + }, + { + "id": "2576", + "label": "power of assessment", + "alt_labels": [], + "related_ids": [ + "15" + ], + "broader_ids": [ + "2573" + ], + "geo_area_code": null + }, + { + "id": "2577", + "label": "power of implementation", + "alt_labels": [], + "related_ids": [ + "2584", + "2587", + "39", + "4038", + "5511" + ], + "broader_ids": [ + "2573" + ], + "geo_area_code": null + }, + { + "id": "2578", + "label": "power of initiative", + "alt_labels": [ + "right of initiative" + ], + "related_ids": [ + "114", + "1438", + "4038" + ], + "broader_ids": [ + "2573" + ], + "geo_area_code": null + }, + { + "id": "2579", + "label": "supervisory power", + "alt_labels": [ + "supervisory authority" + ], + "related_ids": [ + "114", + "15", + "171", + "190", + "2243", + "4038", + "41" + ], + "broader_ids": [ + "2573" + ], + "geo_area_code": null + }, + { + "id": "258", + "label": "International Court of Justice", + "alt_labels": [ + "ICJ" + ], + "related_ids": [ + "3986" + ], + "broader_ids": [ + "2179" + ], + "geo_area_code": null + }, + { + "id": "2580", + "label": "power of decision", + "alt_labels": [], + "related_ids": [ + "114", + "2629", + "39" + ], + "broader_ids": [ + "2573" + ], + "geo_area_code": null + }, + { + "id": "2581", + "label": "power to negotiate", + "alt_labels": [], + "related_ids": [ + "3461" + ], + "broader_ids": [ + "2573" + ], + "geo_area_code": null + }, + { + "id": "2582", + "label": "power of ratification", + "alt_labels": [], + "related_ids": [ + "2901", + "3461", + "4030" + ], + "broader_ids": [ + "2573" + ], + "geo_area_code": null + }, + { + "id": "2583", + "label": "discretionary power", + "alt_labels": [], + "related_ids": [ + "77" + ], + "broader_ids": [ + "2573" + ], + "geo_area_code": null + }, + { + "id": "2584", + "label": "executive power", + "alt_labels": [], + "related_ids": [ + "2577", + "3237" + ], + "broader_ids": [ + "4093" + ], + "geo_area_code": null + }, + { + "id": "2585", + "label": "judicial power", + "alt_labels": [], + "related_ids": [ + "5923" + ], + "broader_ids": [ + "4093" + ], + "geo_area_code": null + }, + { + "id": "2586", + "label": "legislative power", + "alt_labels": [], + "related_ids": [ + "1589", + "2702", + "3237", + "41" + ], + "broader_ids": [ + "4093" + ], + "geo_area_code": null + }, + { + "id": "2587", + "label": "statutory power", + "alt_labels": [], + "related_ids": [ + "2577" + ], + "broader_ids": [ + "39" + ], + "geo_area_code": null + }, + { + "id": "2588", + "label": "public authorities", + "alt_labels": [], + "related_ids": [ + "77", + "7934" + ], + "broader_ids": [ + "1453" + ], + "geo_area_code": null + }, + { + "id": "2589", + "label": "pre-packaging", + "alt_labels": [ + "bulk pre-packaging", + "mass pre-packaging" + ], + "related_ids": [], + "broader_ids": [ + "87" + ], + "geo_area_code": null + }, + { + "id": "259", + "label": "migratory movement", + "alt_labels": [ + "migratory flow" + ], + "related_ids": [], + "broader_ids": [ + "1909" + ], + "geo_area_code": null + }, + { + "id": "2590", + "label": "generalised preferences", + "alt_labels": [ + "GSP", + "general system of preferences", + "generalised preferences scheme", + "generalised preferences system", + "generalised tariff preferences", + "generalized preferences" + ], + "related_ids": [ + "1136", + "161", + "2295", + "2450", + "2771", + "2781", + "4385", + "4836" + ], + "broader_ids": [ + "2449" + ], + "geo_area_code": null + }, + { + "id": "2591", + "label": "agricultural levy", + "alt_labels": [ + "agricultural customs duty" + ], + "related_ids": [ + "2511", + "2643", + "2649", + "2661", + "2676", + "3167" + ], + "broader_ids": [ + "3560" + ], + "geo_area_code": null + }, + { + "id": "2592", + "label": "ECSC levy", + "alt_labels": [], + "related_ids": [ + "5057" + ], + "broader_ids": [ + "3258" + ], + "geo_area_code": null + }, + { + "id": "2593", + "label": "first job", + "alt_labels": [], + "related_ids": [ + "4700" + ], + "broader_ids": [ + "1802" + ], + "geo_area_code": null + }, + { + "id": "2594", + "label": "early childhood", + "alt_labels": [ + "baby", + "infant", + "newborn" + ], + "related_ids": [], + "broader_ids": [ + "3327" + ], + "geo_area_code": null + }, + { + "id": "2595", + "label": "nuclear weapon", + "alt_labels": [ + "atom bomb", + "atomic bomb", + "atomic weapon", + "hydrogen bomb", + "neutron bomb", + "nuclear bomb", + "nuclear device" + ], + "related_ids": [ + "1215", + "4422", + "868" + ], + "broader_ids": [ + "3420" + ], + "geo_area_code": null + }, + { + "id": "2596", + "label": "soil preparation", + "alt_labels": [ + "harrowing", + "ploughing", + "tilling" + ], + "related_ids": [ + "846" + ], + "broader_ids": [ + "4412" + ], + "geo_area_code": null + }, + { + "id": "2597", + "label": "barring of penalties by limitation", + "alt_labels": [ + "amnesty", + "pardon", + "rehabilitation" + ], + "related_ids": [], + "broader_ids": [ + "5631" + ], + "geo_area_code": null + }, + { + "id": "2598", + "label": "Speaker of Parliament", + "alt_labels": [], + "related_ids": [ + "5133" + ], + "broader_ids": [ + "5068" + ], + "geo_area_code": null + }, + { + "id": "2599", + "label": "press", + "alt_labels": [ + "journalism" + ], + "related_ids": [ + "1622", + "31", + "3580", + "4144" + ], + "broader_ids": [ + "2013" + ], + "geo_area_code": null + }, + { + "id": "26", + "label": "European Communities", + "alt_labels": [], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "260", + "label": "watercourse", + "alt_labels": [ + "delta", + "river", + "river basin" + ], + "related_ids": [ + "1440", + "2040", + "2305", + "2529", + "2533", + "603" + ], + "broader_ids": [ + "3146" + ], + "geo_area_code": null + }, + { + "id": "2600", + "label": "political press", + "alt_labels": [], + "related_ids": [ + "4704", + "c_9eea2203" + ], + "broader_ids": [ + "2599" + ], + "geo_area_code": null + }, + { + "id": "2601", + "label": "survivor's benefit", + "alt_labels": [ + "orphan's benefit", + "survivor's pension", + "widow's pension" + ], + "related_ids": [ + "2197", + "2341" + ], + "broader_ids": [ + "2605" + ], + "geo_area_code": null + }, + { + "id": "2602", + "label": "provision of services", + "alt_labels": [], + "related_ids": [ + "1384", + "1638", + "3610", + "4099", + "4768", + "5206", + "6115", + "6369", + "6855", + "c_9eb9cbaa" + ], + "broader_ids": [ + "5268" + ], + "geo_area_code": null + }, + { + "id": "2603", + "label": "tactical nuclear weapon", + "alt_labels": [ + "TNW", + "tactical weapon" + ], + "related_ids": [], + "broader_ids": [ + "2595" + ], + "geo_area_code": null + }, + { + "id": "2604", + "label": "family benefit", + "alt_labels": [ + "accommodation allowance", + "child benefit", + "family allowance", + "family income support", + "head-of-household allowance", + "household allowance", + "rent allowance", + "single parent allowance" + ], + "related_ids": [ + "2501" + ], + "broader_ids": [ + "2605" + ], + "geo_area_code": null + }, + { + "id": "2605", + "label": "social-security benefit", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4050" + ], + "geo_area_code": null + }, + { + "id": "2606", + "label": "loan", + "alt_labels": [ + "bank loan" + ], + "related_ids": [ + "1000", + "1476" + ], + "broader_ids": [ + "285" + ], + "geo_area_code": null + }, + { + "id": "2607", + "label": "EIB loan", + "alt_labels": [], + "related_ids": [ + "4838", + "5675" + ], + "broader_ids": [ + "441716" + ], + "geo_area_code": null + }, + { + "id": "2608", + "label": "ECSC loan", + "alt_labels": [], + "related_ids": [ + "852" + ], + "broader_ids": [ + "2609" + ], + "geo_area_code": null + }, + { + "id": "2609", + "label": "Community loan", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1460" + ], + "geo_area_code": null + }, + { + "id": "261", + "label": "Afghanistan", + "alt_labels": [ + "Islamic Republic of Afghanistan" + ], + "related_ids": [], + "broader_ids": [ + "5448" + ], + "geo_area_code": "AFG" + }, + { + "id": "2610", + "label": "Euratom loan", + "alt_labels": [], + "related_ids": [ + "5344" + ], + "broader_ids": [ + "2609" + ], + "geo_area_code": null + }, + { + "id": "2611", + "label": "prevention of pollution", + "alt_labels": [], + "related_ids": [ + "2524" + ], + "broader_ids": [ + "1707" + ], + "geo_area_code": null + }, + { + "id": "2612", + "label": "short-term forecast", + "alt_labels": [ + "short-term outlook" + ], + "related_ids": [], + "broader_ids": [ + "2616" + ], + "geo_area_code": null + }, + { + "id": "2613", + "label": "long-term forecast", + "alt_labels": [ + "long-term outlook" + ], + "related_ids": [], + "broader_ids": [ + "2616" + ], + "geo_area_code": null + }, + { + "id": "2614", + "label": "medium-term forecast", + "alt_labels": [ + "medium-term outlook" + ], + "related_ids": [], + "broader_ids": [ + "2616" + ], + "geo_area_code": null + }, + { + "id": "2615", + "label": "budget estimate", + "alt_labels": [ + "budget forecast" + ], + "related_ids": [ + "2406" + ], + "broader_ids": [ + "2698" + ], + "geo_area_code": null + }, + { + "id": "2616", + "label": "economic forecasting", + "alt_labels": [ + "economic projection", + "economic prospects" + ], + "related_ids": [ + "c_0b6b83e1", + "c_87ccc7c3" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2617", + "label": "primacy of the law", + "alt_labels": [], + "related_ids": [ + "2618", + "5622" + ], + "broader_ids": [ + "2236" + ], + "geo_area_code": null + }, + { + "id": "2618", + "label": "primacy of EU law", + "alt_labels": [ + "precedence of Community law", + "primacy of European Union law" + ], + "related_ids": [ + "1484", + "2617" + ], + "broader_ids": [ + "5127" + ], + "geo_area_code": null + }, + { + "id": "2619", + "label": "bonus payment", + "alt_labels": [ + "bonus determination", + "bonus system", + "end of year bonus", + "reward", + "seniority bonus", + "thirteenth month's salary", + "wage premium" + ], + "related_ids": [], + "broader_ids": [ + "3273" + ], + "geo_area_code": null + }, + { + "id": "262", + "label": "price of securities", + "alt_labels": [ + "share price" + ], + "related_ids": [], + "broader_ids": [ + "3233" + ], + "geo_area_code": null + }, + { + "id": "2620", + "label": "slaughter premium", + "alt_labels": [ + "slaughter bonus" + ], + "related_ids": [ + "1857" + ], + "broader_ids": [ + "2938" + ], + "geo_area_code": null + }, + { + "id": "2621", + "label": "grubbing premium", + "alt_labels": [ + "grubbing-up grant" + ], + "related_ids": [ + "2396", + "4708", + "4734", + "5373" + ], + "broader_ids": [ + "2938" + ], + "geo_area_code": null + }, + { + "id": "2622", + "label": "non-marketing premium", + "alt_labels": [ + "product withdrawn from the market" + ], + "related_ids": [], + "broader_ids": [ + "2972" + ], + "geo_area_code": null + }, + { + "id": "2623", + "label": "insurance premium", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "165" + ], + "geo_area_code": null + }, + { + "id": "2624", + "label": "storage premium", + "alt_labels": [ + "storage aid", + "subsidy for storage" + ], + "related_ids": [], + "broader_ids": [ + "2972" + ], + "geo_area_code": null + }, + { + "id": "2625", + "label": "early fruit and vegetables", + "alt_labels": [], + "related_ids": [ + "1115", + "1119", + "1602", + "1608", + "5231" + ], + "broader_ids": [ + "2723" + ], + "geo_area_code": null + }, + { + "id": "2626", + "label": "polluter pays principle", + "alt_labels": [ + "polluter pays", + "polluter pays policy" + ], + "related_ids": [ + "1339", + "5839", + "6401" + ], + "broader_ids": [ + "1707" + ], + "geo_area_code": null + }, + { + "id": "2627", + "label": "economic priority", + "alt_labels": [ + "priority action", + "priority measure" + ], + "related_ids": [ + "3078" + ], + "broader_ids": [ + "2465" + ], + "geo_area_code": null + }, + { + "id": "2628", + "label": "armed forces", + "alt_labels": [ + "armed services", + "legion", + "military", + "militia" + ], + "related_ids": [ + "1210", + "3016", + "7412", + "7959", + "8475", + "8476" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2629", + "label": "decision-making", + "alt_labels": [ + "decision-making process" + ], + "related_ids": [ + "2580", + "c_46f6aaeb", + "c_bf1e2c81" + ], + "broader_ids": [ + "1154" + ], + "geo_area_code": null + }, + { + "id": "263", + "label": "broker", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2786" + ], + "geo_area_code": null + }, + { + "id": "2630", + "label": "political prisoner", + "alt_labels": [], + "related_ids": [ + "3955" + ], + "broader_ids": [ + "4730" + ], + "geo_area_code": null + }, + { + "id": "2631", + "label": "deprivation of rights", + "alt_labels": [ + "forfeiture of civil rights" + ], + "related_ids": [ + "583" + ], + "broader_ids": [ + "3878" + ], + "geo_area_code": null + }, + { + "id": "2632", + "label": "prices", + "alt_labels": [], + "related_ids": [ + "3101", + "45" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2633", + "label": "bracket price", + "alt_labels": [], + "related_ids": [ + "3266" + ], + "broader_ids": [ + "2632" + ], + "geo_area_code": null + }, + { + "id": "2634", + "label": "export price", + "alt_labels": [], + "related_ids": [ + "2487", + "588" + ], + "broader_ids": [ + "2656" + ], + "geo_area_code": null + }, + { + "id": "2635", + "label": "import price", + "alt_labels": [ + "entry price" + ], + "related_ids": [ + "2488" + ], + "broader_ids": [ + "2656" + ], + "geo_area_code": null + }, + { + "id": "2636", + "label": "consumer price", + "alt_labels": [ + "price to the consumer" + ], + "related_ids": [], + "broader_ids": [ + "2656" + ], + "geo_area_code": null + }, + { + "id": "2637", + "label": "professional army", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2628" + ], + "geo_area_code": null + }, + { + "id": "2638", + "label": "producer price", + "alt_labels": [ + "average producer price", + "output price" + ], + "related_ids": [], + "broader_ids": [ + "2656" + ], + "geo_area_code": null + }, + { + "id": "2639", + "label": "farm prices", + "alt_labels": [ + "Community farm price", + "EC farm price", + "price for the marketing year" + ], + "related_ids": [ + "2442", + "2443", + "2975", + "3272", + "3568", + "4236", + "5096" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "264", + "label": "equipment cost", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5092" + ], + "geo_area_code": null + }, + { + "id": "2640", + "label": "food price", + "alt_labels": [], + "related_ids": [ + "393" + ], + "broader_ids": [ + "2656" + ], + "geo_area_code": null + }, + { + "id": "2641", + "label": "cif price", + "alt_labels": [ + "cif delivery", + "cost insurance freight", + "delivery at port of unloading", + "forward delivery price" + ], + "related_ids": [ + "4522" + ], + "broader_ids": [ + "1099" + ], + "geo_area_code": null + }, + { + "id": "2642", + "label": "purchase price", + "alt_labels": [], + "related_ids": [ + "4983" + ], + "broader_ids": [ + "2656" + ], + "geo_area_code": null + }, + { + "id": "2643", + "label": "sluice-gate price", + "alt_labels": [], + "related_ids": [ + "2591" + ], + "broader_ids": [ + "2639" + ], + "geo_area_code": null + }, + { + "id": "2644", + "label": "intervention price", + "alt_labels": [], + "related_ids": [ + "4236" + ], + "broader_ids": [ + "2639" + ], + "geo_area_code": null + }, + { + "id": "2645", + "label": "norm price", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2639" + ], + "geo_area_code": null + }, + { + "id": "2646", + "label": "price agreement", + "alt_labels": [ + "price fixing", + "resale price maintenance", + "retail price maintenance", + "understanding on prices" + ], + "related_ids": [ + "2666" + ], + "broader_ids": [ + "3581" + ], + "geo_area_code": null + }, + { + "id": "2647", + "label": "military equipment", + "alt_labels": [ + "arms", + "military material", + "war material", + "weapon" + ], + "related_ids": [ + "1365", + "3671" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2648", + "label": "offer price", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2656" + ], + "geo_area_code": null + }, + { + "id": "2649", + "label": "guide price", + "alt_labels": [], + "related_ids": [ + "2591" + ], + "broader_ids": [ + "2639" + ], + "geo_area_code": null + }, + { + "id": "265", + "label": "investment cost", + "alt_labels": [], + "related_ids": [ + "1488", + "295" + ], + "broader_ids": [ + "5092" + ], + "geo_area_code": null + }, + { + "id": "2650", + "label": "basic price", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2639" + ], + "geo_area_code": null + }, + { + "id": "2651", + "label": "activating price", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2639" + ], + "geo_area_code": null + }, + { + "id": "2652", + "label": "retail price", + "alt_labels": [], + "related_ids": [ + "4666", + "5" + ], + "broader_ids": [ + "2656" + ], + "geo_area_code": null + }, + { + "id": "2653", + "label": "wholesale price", + "alt_labels": [], + "related_ids": [ + "4670", + "6" + ], + "broader_ids": [ + "2656" + ], + "geo_area_code": null + }, + { + "id": "2654", + "label": "price of energy", + "alt_labels": [ + "cost of energy" + ], + "related_ids": [], + "broader_ids": [ + "4886" + ], + "geo_area_code": null + }, + { + "id": "2655", + "label": "price of farm land", + "alt_labels": [], + "related_ids": [ + "2813", + "4630", + "5173" + ], + "broader_ids": [ + "2814" + ], + "geo_area_code": null + }, + { + "id": "2656", + "label": "market prices", + "alt_labels": [], + "related_ids": [ + "1072", + "2677", + "2686" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2657", + "label": "reference price", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2639" + ], + "geo_area_code": null + }, + { + "id": "2658", + "label": "flavouring", + "alt_labels": [ + "foodstuff with a flavouring effect" + ], + "related_ids": [ + "2948" + ], + "broader_ids": [ + "6052" + ], + "geo_area_code": null + }, + { + "id": "2659", + "label": "withdrawal price", + "alt_labels": [], + "related_ids": [ + "3618" + ], + "broader_ids": [ + "2639" + ], + "geo_area_code": null + }, + { + "id": "266", + "label": "cost of capital", + "alt_labels": [], + "related_ids": [ + "278" + ], + "broader_ids": [ + "5092" + ], + "geo_area_code": null + }, + { + "id": "2660", + "label": "cost price", + "alt_labels": [], + "related_ids": [ + "275", + "5092" + ], + "broader_ids": [ + "2632" + ], + "geo_area_code": null + }, + { + "id": "2661", + "label": "threshold price", + "alt_labels": [], + "related_ids": [ + "2591" + ], + "broader_ids": [ + "2639" + ], + "geo_area_code": null + }, + { + "id": "2662", + "label": "support price", + "alt_labels": [ + "preferential price for agricultural products" + ], + "related_ids": [], + "broader_ids": [ + "2639" + ], + "geo_area_code": null + }, + { + "id": "2663", + "label": "parking charge", + "alt_labels": [ + "parking meter" + ], + "related_ids": [], + "broader_ids": [ + "4387" + ], + "geo_area_code": null + }, + { + "id": "2664", + "label": "selling price", + "alt_labels": [], + "related_ids": [ + "4663" + ], + "broader_ids": [ + "2656" + ], + "geo_area_code": null + }, + { + "id": "2665", + "label": "commodity price", + "alt_labels": [], + "related_ids": [ + "1801", + "2748", + "4290" + ], + "broader_ids": [ + "2632" + ], + "geo_area_code": null + }, + { + "id": "2666", + "label": "discriminatory price", + "alt_labels": [ + "differentiated price" + ], + "related_ids": [ + "2646", + "3581", + "802" + ], + "broader_ids": [ + "2632" + ], + "geo_area_code": null + }, + { + "id": "2667", + "label": "farm rent", + "alt_labels": [ + "land rent" + ], + "related_ids": [], + "broader_ids": [ + "982" + ], + "geo_area_code": null + }, + { + "id": "2668", + "label": "world market price", + "alt_labels": [ + "world price", + "world rate" + ], + "related_ids": [ + "3568" + ], + "broader_ids": [ + "2656" + ], + "geo_area_code": null + }, + { + "id": "2669", + "label": "administrative order", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3099" + ], + "geo_area_code": null + }, + { + "id": "267", + "label": "distribution cost", + "alt_labels": [], + "related_ids": [ + "474" + ], + "broader_ids": [ + "5092" + ], + "geo_area_code": null + }, + { + "id": "2670", + "label": "price fixed in advance", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2632" + ], + "geo_area_code": null + }, + { + "id": "2671", + "label": "free-on-board price", + "alt_labels": [ + "delivery at port of shipment", + "fob delivery", + "fob price" + ], + "related_ids": [ + "4522" + ], + "broader_ids": [ + "1099" + ], + "geo_area_code": null + }, + { + "id": "2672", + "label": "free-at-frontier price", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2639" + ], + "geo_area_code": null + }, + { + "id": "2673", + "label": "trigger price", + "alt_labels": [], + "related_ids": [ + "1417" + ], + "broader_ids": [ + "2632" + ], + "geo_area_code": null + }, + { + "id": "2674", + "label": "guaranteed price", + "alt_labels": [ + "price guarantee" + ], + "related_ids": [], + "broader_ids": [ + "2632" + ], + "geo_area_code": null + }, + { + "id": "2675", + "label": "imposed price", + "alt_labels": [ + "single price" + ], + "related_ids": [], + "broader_ids": [ + "1025" + ], + "geo_area_code": null + }, + { + "id": "2676", + "label": "target price", + "alt_labels": [ + "market target price", + "production target price" + ], + "related_ids": [ + "2591" + ], + "broader_ids": [ + "2639" + ], + "geo_area_code": null + }, + { + "id": "2677", + "label": "industrial price", + "alt_labels": [], + "related_ids": [ + "2656" + ], + "broader_ids": [ + "2507" + ], + "geo_area_code": null + }, + { + "id": "2678", + "label": "free price", + "alt_labels": [ + "freeing of prices", + "liberalisation of prices" + ], + "related_ids": [ + "1635", + "75" + ], + "broader_ids": [ + "1025" + ], + "geo_area_code": null + }, + { + "id": "2679", + "label": "maximum price", + "alt_labels": [ + "ceiling price" + ], + "related_ids": [], + "broader_ids": [ + "2632" + ], + "geo_area_code": null + }, + { + "id": "268", + "label": "operating cost", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5092" + ], + "geo_area_code": null + }, + { + "id": "2680", + "label": "irrigation", + "alt_labels": [ + "watering" + ], + "related_ids": [ + "597", + "6317" + ], + "broader_ids": [ + "1534" + ], + "geo_area_code": null + }, + { + "id": "2681", + "label": "minimum price", + "alt_labels": [ + "floor price" + ], + "related_ids": [], + "broader_ids": [ + "2632" + ], + "geo_area_code": null + }, + { + "id": "2682", + "label": "guaranteed minimum price", + "alt_labels": [], + "related_ids": [ + "4236" + ], + "broader_ids": [ + "2639" + ], + "geo_area_code": null + }, + { + "id": "2683", + "label": "average price", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2632" + ], + "geo_area_code": null + }, + { + "id": "2684", + "label": "preferential price", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2666" + ], + "geo_area_code": null + }, + { + "id": "2685", + "label": "reduced price", + "alt_labels": [ + "rebate", + "reduced charge", + "special offer price", + "special offer rate", + "special price", + "special rate" + ], + "related_ids": [ + "3210", + "4667" + ], + "broader_ids": [ + "2632" + ], + "geo_area_code": null + }, + { + "id": "2686", + "label": "delivered price", + "alt_labels": [], + "related_ids": [ + "2656" + ], + "broader_ids": [ + "2677" + ], + "geo_area_code": null + }, + { + "id": "2687", + "label": "representative price", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2632" + ], + "geo_area_code": null + }, + { + "id": "2688", + "label": "arts", + "alt_labels": [], + "related_ids": [ + "283", + "670" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2689", + "label": "representative market price", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2632" + ], + "geo_area_code": null + }, + { + "id": "269", + "label": "education costs", + "alt_labels": [], + "related_ids": [ + "1081", + "785" + ], + "broader_ids": [ + "2467" + ], + "geo_area_code": null + }, + { + "id": "2690", + "label": "social problem", + "alt_labels": [ + "social unrest" + ], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2691", + "label": "urban problem", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4619" + ], + "geo_area_code": null + }, + { + "id": "2692", + "label": "chemical process", + "alt_labels": [ + "chemical reaction", + "combustion", + "deacidification", + "desulphurisation" + ], + "related_ids": [ + "707" + ], + "broader_ids": [ + "3640" + ], + "geo_area_code": null + }, + { + "id": "2693", + "label": "electrical process", + "alt_labels": [ + "electrolysis" + ], + "related_ids": [ + "708", + "747" + ], + "broader_ids": [ + "3640" + ], + "geo_area_code": null + }, + { + "id": "2694", + "label": "physical process", + "alt_labels": [ + "cooling", + "dissolving", + "evaporation", + "hydrogenation", + "liquefaction", + "refrigerating engineering", + "refrigeration", + "solidification", + "vaporisation" + ], + "related_ids": [], + "broader_ids": [ + "3640" + ], + "geo_area_code": null + }, + { + "id": "2695", + "label": "administrative procedure", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "517" + ], + "geo_area_code": null + }, + { + "id": "2696", + "label": "anti-subsidy proceeding", + "alt_labels": [], + "related_ids": [ + "2450", + "5790" + ], + "broader_ids": [ + "539" + ], + "geo_area_code": null + }, + { + "id": "2697", + "label": "popular art", + "alt_labels": [], + "related_ids": [ + "326" + ], + "broader_ids": [ + "2688" + ], + "geo_area_code": null + }, + { + "id": "2698", + "label": "budgetary procedure", + "alt_labels": [ + "Notenboom procedure", + "budgetary method" + ], + "related_ids": [ + "2703", + "41" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2699", + "label": "civil procedure", + "alt_labels": [], + "related_ids": [ + "1540", + "523" + ], + "broader_ids": [ + "2701" + ], + "geo_area_code": null + }, + { + "id": "27", + "label": "municipality", + "alt_labels": [ + "borough" + ], + "related_ids": [ + "4876" + ], + "broader_ids": [ + "6034" + ], + "geo_area_code": null + }, + { + "id": "2700", + "label": "disciplinary proceedings", + "alt_labels": [ + "disciplinary action", + "disciplinary hearing", + "disciplinary investigation", + "disciplinary law", + "disciplinary measures", + "disciplinary procedure" + ], + "related_ids": [ + "557" + ], + "broader_ids": [ + "517" + ], + "geo_area_code": null + }, + { + "id": "2701", + "label": "judicial proceedings", + "alt_labels": [ + "court proceedings", + "discontinuance of judicial proceedings", + "end of judicial proceedings", + "judicial procedure", + "legal procedure", + "legal proceedings", + "withdrawal of judicial proceedings" + ], + "related_ids": [ + "1539", + "1543" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2702", + "label": "legislative procedure", + "alt_labels": [ + "legislative process", + "legislative technique" + ], + "related_ids": [ + "1589", + "2242", + "2586", + "41" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2703", + "label": "parliamentary procedure", + "alt_labels": [], + "related_ids": [ + "2698", + "41", + "527" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2704", + "label": "criminal procedure", + "alt_labels": [ + "law of criminal procedure", + "simplified procedure", + "special criminal procedure" + ], + "related_ids": [ + "1545", + "2441", + "573" + ], + "broader_ids": [ + "2701" + ], + "geo_area_code": null + }, + { + "id": "2705", + "label": "Middle East", + "alt_labels": [ + "Near East" + ], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2706", + "label": "gift item", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3895" + ], + "geo_area_code": null + }, + { + "id": "2707", + "label": "production", + "alt_labels": [ + "level of production", + "volume of output" + ], + "related_ids": [ + "2709", + "2720", + "275" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2708", + "label": "assembly line production", + "alt_labels": [], + "related_ids": [ + "4546" + ], + "broader_ids": [ + "2177" + ], + "geo_area_code": null + }, + { + "id": "2709", + "label": "agricultural production", + "alt_labels": [], + "related_ids": [ + "1201", + "1686", + "2014", + "2477", + "2707", + "2972", + "2974", + "2976", + "4298" + ], + "broader_ids": [ + "2725" + ], + "geo_area_code": null + }, + { + "id": "271", + "label": "construction costs", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2475" + ], + "geo_area_code": null + }, + { + "id": "2710", + "label": "food production", + "alt_labels": [], + "related_ids": [ + "1590", + "2735", + "330" + ], + "broader_ids": [ + "656" + ], + "geo_area_code": null + }, + { + "id": "2711", + "label": "animal production", + "alt_labels": [], + "related_ids": [ + "2718", + "2737", + "2830", + "3528", + "5962", + "939" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2712", + "label": "craft production", + "alt_labels": [ + "craft product", + "handmade goods" + ], + "related_ids": [ + "2784", + "814", + "821", + "824" + ], + "broader_ids": [ + "3619" + ], + "geo_area_code": null + }, + { + "id": "2713", + "label": "EU production", + "alt_labels": [ + "Community production", + "European Union production" + ], + "related_ids": [], + "broader_ids": [ + "2707" + ], + "geo_area_code": null + }, + { + "id": "2714", + "label": "continuous production", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2177" + ], + "geo_area_code": null + }, + { + "id": "2715", + "label": "energy production", + "alt_labels": [ + "power production" + ], + "related_ids": [ + "3741", + "3767" + ], + "broader_ids": [ + "4886" + ], + "geo_area_code": null + }, + { + "id": "2716", + "label": "hydrogen production", + "alt_labels": [ + "liquid hydrogen" + ], + "related_ids": [ + "1141", + "1275", + "2366" + ], + "broader_ids": [ + "1362" + ], + "geo_area_code": null + }, + { + "id": "2717", + "label": "mass production", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2177" + ], + "geo_area_code": null + }, + { + "id": "2718", + "label": "fishery product", + "alt_labels": [], + "related_ids": [ + "1204", + "2711", + "2732", + "3544" + ], + "broader_ids": [ + "1372" + ], + "geo_area_code": null + }, + { + "id": "2719", + "label": "underproduction", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5123" + ], + "geo_area_code": null + }, + { + "id": "272", + "label": "cost of pollution", + "alt_labels": [ + "cost of damage to environment", + "cost of damage to health" + ], + "related_ids": [ + "2524" + ], + "broader_ids": [ + "c_bb1a60eb" + ], + "geo_area_code": null + }, + { + "id": "2720", + "label": "industrial production", + "alt_labels": [], + "related_ids": [ + "2481", + "2707", + "3634", + "4016", + "652", + "827" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2721", + "label": "world production", + "alt_labels": [], + "related_ids": [ + "653" + ], + "broader_ids": [ + "2707" + ], + "geo_area_code": null + }, + { + "id": "2722", + "label": "national production", + "alt_labels": [ + "domestic production" + ], + "related_ids": [ + "655" + ], + "broader_ids": [ + "2707" + ], + "geo_area_code": null + }, + { + "id": "2723", + "label": "crop production", + "alt_labels": [ + "plant product" + ], + "related_ids": [ + "1475", + "2409", + "2410", + "6076", + "6296" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2724", + "label": "productivity", + "alt_labels": [ + "capital-labour ratio", + "capital-output ratio", + "efficiency" + ], + "related_ids": [ + "2481", + "2728", + "3616", + "5480", + "6362", + "c_ab46334d" + ], + "broader_ids": [ + "1721" + ], + "geo_area_code": null + }, + { + "id": "2725", + "label": "agricultural productivity", + "alt_labels": [], + "related_ids": [ + "2493", + "2728" + ], + "broader_ids": [ + "3605" + ], + "geo_area_code": null + }, + { + "id": "2726", + "label": "decorative item", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3895" + ], + "geo_area_code": null + }, + { + "id": "2727", + "label": "land productivity", + "alt_labels": [], + "related_ids": [ + "1483", + "636" + ], + "broader_ids": [ + "2725" + ], + "geo_area_code": null + }, + { + "id": "2728", + "label": "work productivity", + "alt_labels": [ + "standard performance" + ], + "related_ids": [ + "2724", + "2725", + "3845", + "6298" + ], + "broader_ids": [ + "896" + ], + "geo_area_code": null + }, + { + "id": "2729", + "label": "cereal product", + "alt_labels": [ + "cereal preparation", + "processed cereal product" + ], + "related_ids": [ + "1233", + "5360" + ], + "broader_ids": [ + "2736" + ], + "geo_area_code": null + }, + { + "id": "273", + "label": "health costs", + "alt_labels": [], + "related_ids": [ + "282", + "3344", + "3512" + ], + "broader_ids": [ + "2479" + ], + "geo_area_code": null + }, + { + "id": "2730", + "label": "fruit product", + "alt_labels": [ + "fruit must", + "fruit pulp", + "grape must", + "jam", + "marmalade", + "preserves" + ], + "related_ids": [ + "1115", + "1552" + ], + "broader_ids": [ + "2736" + ], + "geo_area_code": null + }, + { + "id": "2731", + "label": "vegetable product", + "alt_labels": [ + "pickles", + "sauerkraut", + "tomato concentrate", + "tomato paste", + "vegetable pulp" + ], + "related_ids": [ + "1553", + "1602" + ], + "broader_ids": [ + "2736" + ], + "geo_area_code": null + }, + { + "id": "2732", + "label": "fish product", + "alt_labels": [ + "caviar", + "fish croquette", + "fish egg", + "fish fillet", + "fish meal", + "surimi" + ], + "related_ids": [ + "1265", + "2435", + "2718" + ], + "broader_ids": [ + "2736" + ], + "geo_area_code": null + }, + { + "id": "2733", + "label": "sugar product", + "alt_labels": [], + "related_ids": [ + "1394", + "4314" + ], + "broader_ids": [ + "2736" + ], + "geo_area_code": null + }, + { + "id": "2734", + "label": "agricultural product", + "alt_labels": [ + "farm product" + ], + "related_ids": [ + "2068", + "3272", + "4247", + "4389", + "5950", + "870" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2735", + "label": "foodstuff", + "alt_labels": [ + "agri-foodstuffs product" + ], + "related_ids": [ + "2531", + "2710", + "c_5214cfc9", + "c_7951978e" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2736", + "label": "processed food product", + "alt_labels": [], + "related_ids": [ + "4498" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2737", + "label": "animal product", + "alt_labels": [ + "livestock product", + "product of animal origin" + ], + "related_ids": [ + "240", + "2711", + "2990", + "4225", + "6787" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2738", + "label": "meat product", + "alt_labels": [ + "bacon", + "cold meats", + "corned beef", + "foie gras", + "frogs' legs", + "goose liver", + "ham", + "meat extract", + "meat paste", + "prepared meats", + "processed meat product", + "p\u00e2t\u00e9", + "sausage" + ], + "related_ids": [ + "1374", + "4681" + ], + "broader_ids": [ + "2736" + ], + "geo_area_code": null + }, + { + "id": "2739", + "label": "chemical product", + "alt_labels": [ + "chemical agent", + "chemical body", + "chemical nomenclature", + "chemical substance", + "chemicals" + ], + "related_ids": [ + "2066", + "2740", + "2746", + "3809", + "3810", + "3817", + "4291", + "5966", + "6410", + "c_e5d85c14" + ], + "broader_ids": [ + "1362" + ], + "geo_area_code": null + }, + { + "id": "274", + "label": "cost of living", + "alt_labels": [ + "cost of living index" + ], + "related_ids": [ + "1354", + "2575", + "278", + "3653", + "393", + "396", + "83" + ], + "broader_ids": [ + "84" + ], + "geo_area_code": null + }, + { + "id": "2740", + "label": "inorganic chemical product", + "alt_labels": [ + "mineral chemical product" + ], + "related_ids": [ + "2739" + ], + "broader_ids": [ + "3810" + ], + "geo_area_code": null + }, + { + "id": "2741", + "label": "concentrated product", + "alt_labels": [ + "concentrate", + "condensed foodstuff", + "condensed product" + ], + "related_ids": [ + "1568" + ], + "broader_ids": [ + "1258" + ], + "geo_area_code": null + }, + { + "id": "2742", + "label": "packaged product", + "alt_labels": [ + "packed product", + "pre-packaged product", + "pre-packed product" + ], + "related_ids": [], + "broader_ids": [ + "87" + ], + "geo_area_code": null + }, + { + "id": "2743", + "label": "frozen product", + "alt_labels": [ + "frozen food", + "frozen foodstuff" + ], + "related_ids": [ + "109" + ], + "broader_ids": [ + "1258" + ], + "geo_area_code": null + }, + { + "id": "2744", + "label": "cosmetic product", + "alt_labels": [ + "beauty product", + "cosmetic", + "perfume", + "soap", + "toilet preparation" + ], + "related_ids": [ + "2755" + ], + "broader_ids": [ + "6915" + ], + "geo_area_code": null + }, + { + "id": "2745", + "label": "sports equipment", + "alt_labels": [], + "related_ids": [ + "853" + ], + "broader_ids": [ + "3895" + ], + "geo_area_code": null + }, + { + "id": "2746", + "label": "packaging product", + "alt_labels": [ + "bag", + "bottle", + "box", + "packaging article", + "packaging materials", + "receptacle" + ], + "related_ids": [ + "1375", + "1383", + "2739", + "5533" + ], + "broader_ids": [ + "720" + ], + "geo_area_code": null + }, + { + "id": "2747", + "label": "polishing and scouring preparations", + "alt_labels": [ + "cleaning product", + "detergent" + ], + "related_ids": [], + "broader_ids": [ + "3798" + ], + "geo_area_code": null + }, + { + "id": "2748", + "label": "primary product", + "alt_labels": [ + "commodity", + "primary good" + ], + "related_ids": [ + "1801", + "2665", + "4828" + ], + "broader_ids": [ + "11" + ], + "geo_area_code": null + }, + { + "id": "2749", + "label": "confectionery product", + "alt_labels": [ + "biscuit", + "chocolate", + "chocolate product", + "cocoa product", + "pastry product", + "sweets", + "toffee" + ], + "related_ids": [ + "2277", + "4314", + "5078", + "93" + ], + "broader_ids": [ + "2736" + ], + "geo_area_code": null + }, + { + "id": "275", + "label": "production cost", + "alt_labels": [], + "related_ids": [ + "2660", + "2707", + "641" + ], + "broader_ids": [ + "5092" + ], + "geo_area_code": null + }, + { + "id": "2750", + "label": "mass-consumption product", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4878" + ], + "geo_area_code": null + }, + { + "id": "2751", + "label": "substitute product", + "alt_labels": [ + "alternative product" + ], + "related_ids": [ + "4311", + "6044" + ], + "broader_ids": [ + "2758" + ], + "geo_area_code": null + }, + { + "id": "2752", + "label": "desiccated product", + "alt_labels": [ + "desiccated food", + "desiccated foodstuff" + ], + "related_ids": [ + "1571", + "417" + ], + "broader_ids": [ + "1258" + ], + "geo_area_code": null + }, + { + "id": "2753", + "label": "dietary product", + "alt_labels": [ + "Parnuts", + "diet food", + "dietary food", + "dietetic food", + "foods for particular nutritional uses" + ], + "related_ids": [ + "6790" + ], + "broader_ids": [ + "2736" + ], + "geo_area_code": null + }, + { + "id": "2754", + "label": "wood product", + "alt_labels": [ + "timber" + ], + "related_ids": [ + "1063", + "2404" + ], + "broader_ids": [ + "1386" + ], + "geo_area_code": null + }, + { + "id": "2755", + "label": "toilet article", + "alt_labels": [], + "related_ids": [ + "2744" + ], + "broader_ids": [ + "3895" + ], + "geo_area_code": null + }, + { + "id": "2756", + "label": "bulk product", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "87" + ], + "geo_area_code": null + }, + { + "id": "2757", + "label": "smoked product", + "alt_labels": [ + "smoked food", + "smoked foodstuff" + ], + "related_ids": [], + "broader_ids": [ + "1258" + ], + "geo_area_code": null + }, + { + "id": "2758", + "label": "industrial product", + "alt_labels": [], + "related_ids": [ + "180" + ], + "broader_ids": [ + "2720" + ], + "geo_area_code": null + }, + { + "id": "2759", + "label": "inflammable product", + "alt_labels": [], + "related_ids": [ + "1706", + "4291" + ], + "broader_ids": [ + "4308" + ], + "geo_area_code": null + }, + { + "id": "276", + "label": "storage cost", + "alt_labels": [], + "related_ids": [ + "1161", + "4291" + ], + "broader_ids": [ + "5092" + ], + "geo_area_code": null + }, + { + "id": "2760", + "label": "instant product", + "alt_labels": [ + "instant cocoa", + "instant coffee", + "instant tea" + ], + "related_ids": [ + "4454", + "5078", + "5088" + ], + "broader_ids": [ + "1258" + ], + "geo_area_code": null + }, + { + "id": "2761", + "label": "gross domestic product", + "alt_labels": [ + "GDP" + ], + "related_ids": [], + "broader_ids": [ + "536" + ], + "geo_area_code": null + }, + { + "id": "2762", + "label": "irradiated product", + "alt_labels": [ + "ionised food", + "irradiated food", + "irradiated foodstuff" + ], + "related_ids": [ + "4085" + ], + "broader_ids": [ + "1258" + ], + "geo_area_code": null + }, + { + "id": "2763", + "label": "milk product", + "alt_labels": [ + "dairy produce" + ], + "related_ids": [ + "1406", + "2989", + "4639", + "944" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2764", + "label": "freeze-dried product", + "alt_labels": [ + "freeze-dried food", + "freeze-dried foodstuff" + ], + "related_ids": [ + "1571", + "1715" + ], + "broader_ids": [ + "1258" + ], + "geo_area_code": null + }, + { + "id": "2765", + "label": "manufactured goods", + "alt_labels": [ + "finished goods", + "finished product" + ], + "related_ids": [ + "1377" + ], + "broader_ids": [ + "2758" + ], + "geo_area_code": null + }, + { + "id": "2766", + "label": "metal product", + "alt_labels": [ + "metallurgical product" + ], + "related_ids": [], + "broader_ids": [ + "3820" + ], + "geo_area_code": null + }, + { + "id": "2767", + "label": "mining product", + "alt_labels": [ + "mineral", + "ore" + ], + "related_ids": [ + "1882", + "1936", + "3546", + "4355" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2768", + "label": "domestic product", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "536" + ], + "geo_area_code": null + }, + { + "id": "2769", + "label": "gross national product", + "alt_labels": [ + "GNP" + ], + "related_ids": [ + "1352" + ], + "broader_ids": [ + "2768" + ], + "geo_area_code": null + }, + { + "id": "277", + "label": "direct cost", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5092" + ], + "geo_area_code": null + }, + { + "id": "2770", + "label": "new product", + "alt_labels": [], + "related_ids": [ + "71" + ], + "broader_ids": [ + "2720" + ], + "geo_area_code": null + }, + { + "id": "2771", + "label": "originating product", + "alt_labels": [ + "origin of goods", + "product origin", + "rule of origin" + ], + "related_ids": [ + "1637", + "2300", + "2590", + "3579", + "4385", + "4828" + ], + "broader_ids": [ + "11" + ], + "geo_area_code": null + }, + { + "id": "2772", + "label": "petroleum product", + "alt_labels": [ + "oil by-products", + "petrochemical product", + "tar" + ], + "related_ids": [], + "broader_ids": [ + "2364" + ], + "geo_area_code": null + }, + { + "id": "2773", + "label": "pharmaceutical product", + "alt_labels": [ + "disinfectant", + "pharmaceutical preparation", + "pharmaceutical speciality" + ], + "related_ids": [ + "1084", + "1594", + "1852", + "2367", + "442990", + "c_41ef4cb8", + "c_e307d2a8" + ], + "broader_ids": [ + "3813" + ], + "geo_area_code": null + }, + { + "id": "2774", + "label": "household article", + "alt_labels": [ + "crockery", + "plates and dishes" + ], + "related_ids": [ + "3861" + ], + "broader_ids": [ + "3895" + ], + "geo_area_code": null + }, + { + "id": "2775", + "label": "protein products", + "alt_labels": [ + "albumin" + ], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2776", + "label": "reconstituted product", + "alt_labels": [ + "reconstituted food", + "reconstituted foodstuff" + ], + "related_ids": [], + "broader_ids": [ + "1258" + ], + "geo_area_code": null + }, + { + "id": "2777", + "label": "refrigerated product", + "alt_labels": [ + "refrigerated food", + "refrigerated foodstuff" + ], + "related_ids": [], + "broader_ids": [ + "1258" + ], + "geo_area_code": null + }, + { + "id": "2778", + "label": "gross regional product", + "alt_labels": [], + "related_ids": [ + "1352" + ], + "broader_ids": [ + "56" + ], + "geo_area_code": null + }, + { + "id": "2779", + "label": "salted product", + "alt_labels": [ + "food in brine", + "foodstuff in brine", + "product in brine", + "salted food", + "salted foodstuff" + ], + "related_ids": [], + "broader_ids": [ + "1258" + ], + "geo_area_code": null + }, + { + "id": "278", + "label": "cost of borrowing", + "alt_labels": [ + "cost of credit" + ], + "related_ids": [ + "266", + "274" + ], + "broader_ids": [ + "2495" + ], + "geo_area_code": null + }, + { + "id": "2780", + "label": "semi-manufactured goods", + "alt_labels": [ + "semi-finished goods", + "semi-finished product" + ], + "related_ids": [ + "1377" + ], + "broader_ids": [ + "2758" + ], + "geo_area_code": null + }, + { + "id": "2781", + "label": "sensitive product", + "alt_labels": [ + "non-sensitive product", + "sensitive good" + ], + "related_ids": [ + "161", + "2590", + "4828" + ], + "broader_ids": [ + "11" + ], + "geo_area_code": null + }, + { + "id": "2782", + "label": "deep-frozen product", + "alt_labels": [ + "deep-frozen food", + "deep-frozen foodstuff" + ], + "related_ids": [ + "1250", + "4340" + ], + "broader_ids": [ + "1258" + ], + "geo_area_code": null + }, + { + "id": "2783", + "label": "textile product", + "alt_labels": [ + "fabric", + "furnishing fabric" + ], + "related_ids": [], + "broader_ids": [ + "1418" + ], + "geo_area_code": null + }, + { + "id": "2784", + "label": "craftsman", + "alt_labels": [], + "related_ids": [ + "2712", + "3619", + "4561", + "814" + ], + "broader_ids": [ + "4276" + ], + "geo_area_code": null + }, + { + "id": "2785", + "label": "veterinary medicinal product", + "alt_labels": [ + "VMP", + "medicinal product for veterinary use", + "veterinary pharmaceutical product", + "veterinary product" + ], + "related_ids": [ + "1598", + "1856", + "3135" + ], + "broader_ids": [ + "1415" + ], + "geo_area_code": null + }, + { + "id": "2786", + "label": "sales occupation", + "alt_labels": [ + "trade occupation" + ], + "related_ids": [ + "3277", + "3590" + ], + "broader_ids": [ + "474" + ], + "geo_area_code": null + }, + { + "id": "2787", + "label": "financial occupation", + "alt_labels": [ + "financial intermediary", + "stockbroker" + ], + "related_ids": [ + "60" + ], + "broader_ids": [ + "1804" + ], + "geo_area_code": null + }, + { + "id": "2788", + "label": "liberal profession", + "alt_labels": [], + "related_ids": [ + "1638", + "2124", + "2161", + "2789", + "2790", + "3688", + "4192", + "532" + ], + "broader_ids": [ + "4276" + ], + "geo_area_code": null + }, + { + "id": "2789", + "label": "health care profession", + "alt_labels": [], + "related_ids": [ + "2788", + "788" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "279", + "label": "wage cost", + "alt_labels": [ + "labour cost", + "payroll cost" + ], + "related_ids": [ + "250", + "3843" + ], + "broader_ids": [ + "5092" + ], + "geo_area_code": null + }, + { + "id": "2790", + "label": "paramedical profession", + "alt_labels": [ + "dental technician", + "medical auxiliary", + "optician", + "paramedical staff", + "prosthesist" + ], + "related_ids": [ + "2788", + "790" + ], + "broader_ids": [ + "2789" + ], + "geo_area_code": null + }, + { + "id": "2791", + "label": "World Food Programme", + "alt_labels": [ + "WFC", + "WFP", + "World Food Council" + ], + "related_ids": [ + "807", + "968" + ], + "broader_ids": [ + "4365" + ], + "geo_area_code": null + }, + { + "id": "2792", + "label": "action programme", + "alt_labels": [ + "action plan", + "framework programme", + "plan of action", + "work programme" + ], + "related_ids": [ + "2393", + "2795", + "2801", + "5973" + ], + "broader_ids": [ + "1154" + ], + "geo_area_code": null + }, + { + "id": "2793", + "label": "aid programme", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3003" + ], + "geo_area_code": null + }, + { + "id": "2794", + "label": "teaching curriculum", + "alt_labels": [ + "educational curriculum", + "school curriculum", + "school subjects", + "subjects taught", + "training curriculum" + ], + "related_ids": [ + "784" + ], + "broader_ids": [ + "2175" + ], + "geo_area_code": null + }, + { + "id": "2795", + "label": "research programme", + "alt_labels": [ + "research measure" + ], + "related_ids": [ + "2792", + "5315", + "5578" + ], + "broader_ids": [ + "2478" + ], + "geo_area_code": null + }, + { + "id": "2796", + "label": "election programme", + "alt_labels": [ + "election manifesto" + ], + "related_ids": [ + "2422", + "3063" + ], + "broader_ids": [ + "5097" + ], + "geo_area_code": null + }, + { + "id": "2797", + "label": "scientific progress", + "alt_labels": [], + "related_ids": [ + "5383", + "6300" + ], + "broader_ids": [ + "2478" + ], + "geo_area_code": null + }, + { + "id": "2798", + "label": "investment project", + "alt_labels": [], + "related_ids": [ + "2402" + ], + "broader_ids": [ + "2463" + ], + "geo_area_code": null + }, + { + "id": "2799", + "label": "draft budget", + "alt_labels": [], + "related_ids": [ + "5825" + ], + "broader_ids": [ + "875" + ], + "geo_area_code": null + }, + { + "id": "28", + "label": "adjuvant", + "alt_labels": [ + "non-food additive" + ], + "related_ids": [ + "6052" + ], + "broader_ids": [ + "3798" + ], + "geo_area_code": null + }, + { + "id": "280", + "label": "access to education", + "alt_labels": [], + "related_ids": [ + "512", + "688" + ], + "broader_ids": [ + "2467" + ], + "geo_area_code": null + }, + { + "id": "2800", + "label": "government bill", + "alt_labels": [], + "related_ids": [ + "39" + ], + "broader_ids": [ + "1438" + ], + "geo_area_code": null + }, + { + "id": "2801", + "label": "research project", + "alt_labels": [], + "related_ids": [ + "2792", + "918", + "c_f9c004eb" + ], + "broader_ids": [ + "2478" + ], + "geo_area_code": null + }, + { + "id": "2802", + "label": "industrial project", + "alt_labels": [], + "related_ids": [ + "3085", + "918" + ], + "broader_ids": [ + "2507" + ], + "geo_area_code": null + }, + { + "id": "2803", + "label": "sales promotion", + "alt_labels": [ + "sales campaign" + ], + "related_ids": [ + "4667" + ], + "broader_ids": [ + "13" + ], + "geo_area_code": null + }, + { + "id": "2804", + "label": "trade promotion", + "alt_labels": [ + "promotion of exports" + ], + "related_ids": [ + "614" + ], + "broader_ids": [ + "2449" + ], + "geo_area_code": null + }, + { + "id": "2805", + "label": "investment promotion", + "alt_labels": [ + "investment incentive", + "investment support" + ], + "related_ids": [ + "4279", + "5023" + ], + "broader_ids": [ + "2463" + ], + "geo_area_code": null + }, + { + "id": "2806", + "label": "property development", + "alt_labels": [ + "building development", + "property developer" + ], + "related_ids": [], + "broader_ids": [ + "2475" + ], + "geo_area_code": null + }, + { + "id": "2807", + "label": "promotion", + "alt_labels": [ + "career development" + ], + "related_ids": [], + "broader_ids": [ + "5475" + ], + "geo_area_code": null + }, + { + "id": "2808", + "label": "election campaign publicity", + "alt_labels": [ + "election campaign posters" + ], + "related_ids": [ + "6770", + "7385" + ], + "broader_ids": [ + "5097" + ], + "geo_area_code": null + }, + { + "id": "2809", + "label": "proposal (EU)", + "alt_labels": [ + "Commission proposal", + "EC proposal", + "amended Commission proposal", + "modified proposal", + "pending proposal" + ], + "related_ids": [ + "2243", + "4038" + ], + "broader_ids": [ + "5606" + ], + "geo_area_code": null + }, + { + "id": "281", + "label": "Africa", + "alt_labels": [ + "African countries" + ], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2810", + "label": "performing arts", + "alt_labels": [ + "ballet", + "circus", + "concert", + "dancing", + "opera", + "theatre" + ], + "related_ids": [], + "broader_ids": [ + "2688" + ], + "geo_area_code": null + }, + { + "id": "2811", + "label": "non-government bill", + "alt_labels": [ + "private member's bill" + ], + "related_ids": [ + "41" + ], + "broader_ids": [ + "1438" + ], + "geo_area_code": null + }, + { + "id": "2812", + "label": "public property", + "alt_labels": [ + "State property", + "national heritage", + "public domain" + ], + "related_ids": [ + "2996", + "4446", + "938", + "c_a62dbeba" + ], + "broader_ids": [ + "3929" + ], + "geo_area_code": null + }, + { + "id": "2813", + "label": "land and buildings", + "alt_labels": [ + "land law" + ], + "related_ids": [ + "1314", + "1805", + "2655", + "2814", + "4442", + "4443", + "579" + ], + "broader_ids": [ + "3929" + ], + "geo_area_code": null + }, + { + "id": "2814", + "label": "agricultural real estate", + "alt_labels": [ + "agricultural property" + ], + "related_ids": [ + "1805", + "2813", + "2995", + "4312", + "4337", + "5093", + "6311", + "962" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2815", + "label": "real property", + "alt_labels": [ + "immovable property", + "law of real property", + "real estate" + ], + "related_ids": [ + "298", + "3378", + "4442", + "4443", + "823" + ], + "broader_ids": [ + "3929" + ], + "geo_area_code": null + }, + { + "id": "2816", + "label": "industrial property", + "alt_labels": [], + "related_ids": [ + "2474", + "2507", + "3909", + "6146" + ], + "broader_ids": [ + "2817" + ], + "geo_area_code": null + }, + { + "id": "2817", + "label": "intellectual property", + "alt_labels": [ + "intellectual property right" + ], + "related_ids": [ + "2143", + "3173", + "4105", + "7133", + "7926", + "8426", + "c_243b7be2", + "c_fa8f51b0" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2818", + "label": "personal property", + "alt_labels": [ + "law of personal property", + "movable property" + ], + "related_ids": [], + "broader_ids": [ + "3929" + ], + "geo_area_code": null + }, + { + "id": "2819", + "label": "private property", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3929" + ], + "geo_area_code": null + }, + { + "id": "282", + "label": "social cost", + "alt_labels": [ + "social expenditure" + ], + "related_ids": [ + "273", + "403" + ], + "broader_ids": [ + "2517" + ], + "geo_area_code": null + }, + { + "id": "2820", + "label": "Aruba", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2287", + "2362" + ], + "geo_area_code": "ABW" + }, + { + "id": "2821", + "label": "mineral prospecting", + "alt_labels": [ + "geochemical prospecting", + "geophysical prospecting", + "mining research" + ], + "related_ids": [ + "1685", + "3546", + "3687", + "3764" + ], + "broader_ids": [ + "1411" + ], + "geo_area_code": null + }, + { + "id": "2822", + "label": "forward studies", + "alt_labels": [ + "very long-term forecast" + ], + "related_ids": [], + "broader_ids": [ + "2616" + ], + "geo_area_code": null + }, + { + "id": "2823", + "label": "prostitution", + "alt_labels": [ + "child prostitution", + "female prostitution", + "male prostitution", + "procuring" + ], + "related_ids": [ + "3916", + "3919", + "4727" + ], + "broader_ids": [ + "2690" + ], + "geo_area_code": null + }, + { + "id": "2824", + "label": "noise protection", + "alt_labels": [ + "fight against noise", + "noise abatement" + ], + "related_ids": [ + "1515", + "2526", + "5048", + "82" + ], + "broader_ids": [ + "1707" + ], + "geo_area_code": null + }, + { + "id": "2825", + "label": "environmental protection", + "alt_labels": [ + "conservation of nature", + "nature protection", + "preservation of the environment", + "protection of nature" + ], + "related_ids": [ + "2842", + "3638", + "412", + "5219", + "5546", + "6304", + "6402", + "844", + "8471", + "c_d59d3160" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2826", + "label": "protection of animal life", + "alt_labels": [ + "protection of birds" + ], + "related_ids": [ + "3528", + "5722", + "5728", + "865", + "972" + ], + "broader_ids": [ + "2825" + ], + "geo_area_code": null + }, + { + "id": "2827", + "label": "protection of plant life", + "alt_labels": [ + "protection of plant health", + "protection of plants" + ], + "related_ids": [ + "1030", + "2505", + "3153", + "5219", + "865" + ], + "broader_ids": [ + "2825" + ], + "geo_area_code": null + }, + { + "id": "2828", + "label": "protection of privacy", + "alt_labels": [ + "right to privacy" + ], + "related_ids": [ + "3028", + "5595", + "c_7bb1a021" + ], + "broader_ids": [ + "538" + ], + "geo_area_code": null + }, + { + "id": "2829", + "label": "European Space Agency", + "alt_labels": [ + "ELDO", + "ESA", + "ESRO", + "European Launcher Development Organisation", + "European Launcher Development Organization", + "European Organization for the Development and Construction of Space Vehicle Launchers", + "European Space Research Organisation", + "European Space Research Organization", + "European Space Vehicle Launcher Development Organisation", + "European Space Vehicle Launcher Development Organization" + ], + "related_ids": [ + "3092", + "5238" + ], + "broader_ids": [ + "2187" + ], + "geo_area_code": null + }, + { + "id": "283", + "label": "artistic creation", + "alt_labels": [], + "related_ids": [ + "2688", + "5183", + "5187" + ], + "broader_ids": [ + "2459" + ], + "geo_area_code": null + }, + { + "id": "2830", + "label": "protection of animals", + "alt_labels": [], + "related_ids": [ + "2711", + "4152", + "442884", + "5462", + "5903", + "6121", + "6295" + ], + "broader_ids": [ + "2826" + ], + "geo_area_code": null + }, + { + "id": "2831", + "label": "protection of shareholders", + "alt_labels": [ + "protection of company members" + ], + "related_ids": [ + "2129", + "5389" + ], + "broader_ids": [ + "554" + ], + "geo_area_code": null + }, + { + "id": "2832", + "label": "protection of communications", + "alt_labels": [ + "data espionage", + "eavesdropping", + "interception of communications", + "telephone tapping", + "wiretapping" + ], + "related_ids": [ + "6378", + "92" + ], + "broader_ids": [ + "2828" + ], + "geo_area_code": null + }, + { + "id": "2833", + "label": "protection of freedoms", + "alt_labels": [ + "maintaining freedom", + "preservation of freedom" + ], + "related_ids": [], + "broader_ids": [ + "584" + ], + "geo_area_code": null + }, + { + "id": "2834", + "label": "protection of minorities", + "alt_labels": [], + "related_ids": [ + "5667", + "5799" + ], + "broader_ids": [ + "3908" + ], + "geo_area_code": null + }, + { + "id": "2835", + "label": "diplomatic protection", + "alt_labels": [ + "consular protection" + ], + "related_ids": [ + "5491", + "951" + ], + "broader_ids": [ + "3206" + ], + "geo_area_code": null + }, + { + "id": "2836", + "label": "consumer protection", + "alt_labels": [ + "consumer policy action plan", + "consumerism", + "consumers' rights" + ], + "related_ids": [ + "233", + "2531", + "2862", + "2863", + "3581", + "3635", + "3885", + "437483", + "556", + "6569", + "c_0f3b8370", + "c_1af36ac9", + "c_a02c420c", + "c_aaa8331c", + "c_af502da0" + ], + "broader_ids": [ + "138" + ], + "geo_area_code": null + }, + { + "id": "2837", + "label": "specialisation agreement", + "alt_labels": [ + "specialization agreement" + ], + "related_ids": [ + "2177" + ], + "broader_ids": [ + "806" + ], + "geo_area_code": null + }, + { + "id": "2838", + "label": "Asia", + "alt_labels": [ + "Asian countries" + ], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2839", + "label": "market protection", + "alt_labels": [], + "related_ids": [ + "2844", + "803" + ], + "broader_ids": [ + "1486" + ], + "geo_area_code": null + }, + { + "id": "284", + "label": "job creation", + "alt_labels": [ + "employment promotion", + "promotion of employment" + ], + "related_ids": [ + "3625", + "5205" + ], + "broader_ids": [ + "2468" + ], + "geo_area_code": null + }, + { + "id": "2840", + "label": "heritage protection", + "alt_labels": [ + "National Trust", + "conservation area", + "preservation of monuments", + "protection of the cultural heritage", + "restoration of the cultural heritage" + ], + "related_ids": [], + "broader_ids": [ + "2459" + ], + "geo_area_code": null + }, + { + "id": "2841", + "label": "countryside conservation", + "alt_labels": [ + "countryside preservation", + "protection of beauty spots", + "protection of the landscape" + ], + "related_ids": [ + "861" + ], + "broader_ids": [ + "2825" + ], + "geo_area_code": null + }, + { + "id": "2842", + "label": "soil protection", + "alt_labels": [ + "soil conservation" + ], + "related_ids": [ + "134", + "2825", + "4142", + "4801" + ], + "broader_ids": [ + "4412" + ], + "geo_area_code": null + }, + { + "id": "2843", + "label": "care of mothers and infants", + "alt_labels": [ + "maternity protection", + "protection of mothers" + ], + "related_ids": [ + "3305", + "5159" + ], + "broader_ids": [ + "5764" + ], + "geo_area_code": null + }, + { + "id": "2844", + "label": "protectionism", + "alt_labels": [], + "related_ids": [ + "2488", + "2519", + "2839", + "3584", + "4380", + "6364" + ], + "broader_ids": [ + "2497" + ], + "geo_area_code": null + }, + { + "id": "2845", + "label": "animal protein", + "alt_labels": [], + "related_ids": [ + "2121" + ], + "broader_ids": [ + "2775" + ], + "geo_area_code": null + }, + { + "id": "2846", + "label": "synthetic protein", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2775" + ], + "geo_area_code": null + }, + { + "id": "2847", + "label": "milk protein", + "alt_labels": [], + "related_ids": [ + "1565", + "4227" + ], + "broader_ids": [ + "2775" + ], + "geo_area_code": null + }, + { + "id": "2848", + "label": "South Asia", + "alt_labels": [ + "Indian Subcontinent", + "South Asian countries" + ], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2849", + "label": "vegetable protein", + "alt_labels": [], + "related_ids": [ + "4210" + ], + "broader_ids": [ + "2775" + ], + "geo_area_code": null + }, + { + "id": "285", + "label": "credit", + "alt_labels": [ + "credit facility", + "credit system" + ], + "related_ids": [ + "230", + "300", + "3246", + "4463", + "900" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2850", + "label": "protocol to an agreement", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3461" + ], + "geo_area_code": null + }, + { + "id": "2851", + "label": "protocol on sugar", + "alt_labels": [], + "related_ids": [ + "198", + "4314", + "5083" + ], + "broader_ids": [ + "3185" + ], + "geo_area_code": null + }, + { + "id": "2852", + "label": "prototype", + "alt_labels": [ + "industrial model" + ], + "related_ids": [ + "2922" + ], + "broader_ids": [ + "71" + ], + "geo_area_code": null + }, + { + "id": "2853", + "label": "Provence-Alpes-C\u00f4te d'Azur", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1088" + ], + "geo_area_code": null + }, + { + "id": "2854", + "label": "province", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "6034" + ], + "geo_area_code": null + }, + { + "id": "2855", + "label": "psychiatry", + "alt_labels": [], + "related_ids": [ + "1256", + "1760", + "2856", + "4094" + ], + "broader_ids": [ + "5902" + ], + "geo_area_code": null + }, + { + "id": "2856", + "label": "psychology", + "alt_labels": [ + "child psychology", + "educational psychology", + "prison psychology", + "psychophysiology", + "social psychology" + ], + "related_ids": [ + "2855", + "2857", + "3250" + ], + "broader_ids": [ + "3928" + ], + "geo_area_code": null + }, + { + "id": "2857", + "label": "occupational psychology", + "alt_labels": [ + "industrial psychology", + "psychology of work", + "work psychology" + ], + "related_ids": [ + "2856" + ], + "broader_ids": [ + "855" + ], + "geo_area_code": null + }, + { + "id": "2858", + "label": "South-East Asia", + "alt_labels": [ + "Countries of South-East Asia" + ], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2859", + "label": "publication", + "alt_labels": [], + "related_ids": [ + "1332", + "667" + ], + "broader_ids": [ + "486" + ], + "geo_area_code": null + }, + { + "id": "286", + "label": "short-term credit", + "alt_labels": [ + "cash credit", + "overdraft" + ], + "related_ids": [ + "1001" + ], + "broader_ids": [ + "285" + ], + "geo_area_code": null + }, + { + "id": "2860", + "label": "EU publication", + "alt_labels": [ + "Community publication", + "European Union publication" + ], + "related_ids": [ + "2153" + ], + "broader_ids": [ + "2859" + ], + "geo_area_code": null + }, + { + "id": "2861", + "label": "publication of a law", + "alt_labels": [], + "related_ids": [ + "1533" + ], + "broader_ids": [ + "2702" + ], + "geo_area_code": null + }, + { + "id": "2862", + "label": "advertising", + "alt_labels": [ + "advertisement", + "advertising campaign" + ], + "related_ids": [ + "2836", + "2863", + "3255", + "6134", + "720", + "8426" + ], + "broader_ids": [ + "13" + ], + "geo_area_code": null + }, + { + "id": "2863", + "label": "advertising malpractice", + "alt_labels": [ + "deceptive advertising", + "false advertising", + "misleading advertising", + "subliminal advertising", + "unfair advertising" + ], + "related_ids": [ + "2836", + "2862" + ], + "broader_ids": [ + "3581" + ], + "geo_area_code": null + }, + { + "id": "2864", + "label": "publication of accounts", + "alt_labels": [ + "disclosure of accounts" + ], + "related_ids": [], + "broader_ids": [ + "1155" + ], + "geo_area_code": null + }, + { + "id": "2865", + "label": "publication of tariffs", + "alt_labels": [ + "publication of transport tariffs" + ], + "related_ids": [ + "233" + ], + "broader_ids": [ + "4379" + ], + "geo_area_code": null + }, + { + "id": "2866", + "label": "Qatar", + "alt_labels": [ + "State of Qatar" + ], + "related_ids": [], + "broader_ids": [ + "1658", + "2148", + "5776", + "5777", + "c_6e703074", + "c_b2c019c8" + ], + "geo_area_code": "QAT" + }, + { + "id": "2867", + "label": "political asylum", + "alt_labels": [ + "diplomatic asylum", + "request for political asylum" + ], + "related_ids": [ + "2991", + "c_b0c14f45" + ], + "broader_ids": [ + "4005" + ], + "geo_area_code": null + }, + { + "id": "2868", + "label": "professional qualifications", + "alt_labels": [ + "professional ability", + "professional competence", + "professional incompetence", + "required job qualifications" + ], + "related_ids": [ + "1074", + "2943", + "414", + "5632" + ], + "broader_ids": [ + "1737" + ], + "geo_area_code": null + }, + { + "id": "2869", + "label": "quality of the environment", + "alt_labels": [ + "improvement of the environment" + ], + "related_ids": [ + "2870" + ], + "broader_ids": [ + "2470" + ], + "geo_area_code": null + }, + { + "id": "287", + "label": "export credit", + "alt_labels": [], + "related_ids": [ + "745", + "889" + ], + "broader_ids": [ + "1010" + ], + "geo_area_code": null + }, + { + "id": "2870", + "label": "quality of life", + "alt_labels": [], + "related_ids": [ + "2062", + "2869", + "6781" + ], + "broader_ids": [ + "86" + ], + "geo_area_code": null + }, + { + "id": "2871", + "label": "product quality", + "alt_labels": [ + "quality criterion" + ], + "related_ids": [ + "1465", + "1562", + "1821", + "2081", + "3173", + "3632", + "3635", + "45", + "5233", + "5480", + "6100" + ], + "broader_ids": [ + "2836" + ], + "geo_area_code": null + }, + { + "id": "2872", + "label": "quantity of fish landed", + "alt_labels": [ + "landed quantity" + ], + "related_ids": [], + "broader_ids": [ + "5255" + ], + "geo_area_code": null + }, + { + "id": "2873", + "label": "socially disadvantaged class", + "alt_labels": [ + "Fourth World", + "deprived persons", + "disadvantaged categories", + "underclass" + ], + "related_ids": [ + "2280", + "2281", + "826" + ], + "broader_ids": [ + "4305" + ], + "geo_area_code": null + }, + { + "id": "2874", + "label": "written question", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2876" + ], + "geo_area_code": null + }, + { + "id": "2875", + "label": "oral question", + "alt_labels": [], + "related_ids": [ + "1242" + ], + "broader_ids": [ + "2876" + ], + "geo_area_code": null + }, + { + "id": "2876", + "label": "parliamentary question", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "190" + ], + "geo_area_code": null + }, + { + "id": "2877", + "label": "decontamination", + "alt_labels": [ + "disinfection" + ], + "related_ids": [], + "broader_ids": [ + "1707" + ], + "geo_area_code": null + }, + { + "id": "2878", + "label": "quorum", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4762" + ], + "geo_area_code": null + }, + { + "id": "2879", + "label": "catch quota", + "alt_labels": [ + "catch plan", + "fishing plan" + ], + "related_ids": [ + "2974" + ], + "broader_ids": [ + "2476" + ], + "geo_area_code": null + }, + { + "id": "288", + "label": "import credit", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2488" + ], + "geo_area_code": null + }, + { + "id": "2880", + "label": "electoral quota", + "alt_labels": [ + "electoral threshold" + ], + "related_ids": [ + "3383" + ], + "broader_ids": [ + "3313" + ], + "geo_area_code": null + }, + { + "id": "2881", + "label": "racism", + "alt_labels": [ + "fight against racism" + ], + "related_ids": [ + "1462", + "2000", + "6219" + ], + "broader_ids": [ + "458" + ], + "geo_area_code": null + }, + { + "id": "2882", + "label": "radioactivity", + "alt_labels": [ + "atomic radiation" + ], + "related_ids": [ + "1840", + "2539", + "347", + "5287" + ], + "broader_ids": [ + "4042" + ], + "geo_area_code": null + }, + { + "id": "2883", + "label": "broadcasting", + "alt_labels": [ + "radio broadcast", + "streaming" + ], + "related_ids": [ + "2176", + "3720", + "5184" + ], + "broader_ids": [ + "2013" + ], + "geo_area_code": null + }, + { + "id": "2884", + "label": "radiation protection", + "alt_labels": [ + "protection against radiation" + ], + "related_ids": [ + "347", + "4039", + "5287", + "5338" + ], + "broader_ids": [ + "4042" + ], + "geo_area_code": null + }, + { + "id": "2885", + "label": "UN General Assembly", + "alt_labels": [ + "General Assembly of the United Nations", + "United Nations General Assembly" + ], + "related_ids": [], + "broader_ids": [ + "2179" + ], + "geo_area_code": null + }, + { + "id": "2886", + "label": "oil refining", + "alt_labels": [ + "cracking", + "oil refinery" + ], + "related_ids": [], + "broader_ids": [ + "4423" + ], + "geo_area_code": null + }, + { + "id": "2887", + "label": "sugar refining", + "alt_labels": [], + "related_ids": [ + "1394", + "4315" + ], + "broader_ids": [ + "4416" + ], + "geo_area_code": null + }, + { + "id": "2888", + "label": "grape", + "alt_labels": [ + "table grape" + ], + "related_ids": [ + "2962", + "4708", + "4713", + "4726", + "4734", + "5385" + ], + "broader_ids": [ + "1115" + ], + "geo_area_code": null + }, + { + "id": "2889", + "label": "business name", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4703" + ], + "geo_area_code": null + }, + { + "id": "289", + "label": "consumer credit", + "alt_labels": [], + "related_ids": [ + "139", + "4664" + ], + "broader_ids": [ + "285" + ], + "geo_area_code": null + }, + { + "id": "2890", + "label": "repatriation of capital", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2002" + ], + "geo_area_code": null + }, + { + "id": "2891", + "label": "report", + "alt_labels": [], + "related_ids": [ + "6904" + ], + "broader_ids": [ + "486" + ], + "geo_area_code": null + }, + { + "id": "2892", + "label": "agriculture-trade relationship", + "alt_labels": [], + "related_ids": [ + "539", + "577", + "613" + ], + "broader_ids": [ + "2972" + ], + "geo_area_code": null + }, + { + "id": "2893", + "label": "agriculture-industry relationship", + "alt_labels": [], + "related_ids": [ + "1360", + "666" + ], + "broader_ids": [ + "2972" + ], + "geo_area_code": null + }, + { + "id": "2894", + "label": "activity report", + "alt_labels": [ + "AAR", + "activity report (EU)", + "annual activity report", + "annual report", + "management report" + ], + "related_ids": [], + "broader_ids": [ + "2891" + ], + "geo_area_code": null + }, + { + "id": "2895", + "label": "committee report", + "alt_labels": [], + "related_ids": [ + "18" + ], + "broader_ids": [ + "489" + ], + "geo_area_code": null + }, + { + "id": "2896", + "label": "research report", + "alt_labels": [], + "related_ids": [ + "2914", + "c_99a79cea" + ], + "broader_ids": [ + "2891" + ], + "geo_area_code": null + }, + { + "id": "2897", + "label": "approximation of laws", + "alt_labels": [ + "legislative harmonisation" + ], + "related_ids": [ + "1232", + "1234", + "3491", + "4028", + "449", + "571", + "7366" + ], + "broader_ids": [ + "525" + ], + "geo_area_code": null + }, + { + "id": "2898", + "label": "approximation of policies", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1467" + ], + "geo_area_code": null + }, + { + "id": "29", + "label": "mass communications", + "alt_labels": [], + "related_ids": [ + "2013" + ], + "broader_ids": [ + "2473" + ], + "geo_area_code": null + }, + { + "id": "290", + "label": "long-term credit", + "alt_labels": [], + "related_ids": [ + "1002" + ], + "broader_ids": [ + "285" + ], + "geo_area_code": null + }, + { + "id": "2900", + "label": "basis of tax assessment", + "alt_labels": [ + "common basis of assessment", + "tax liability", + "taxation basis", + "uniform basis of assessment" + ], + "related_ids": [ + "3685" + ], + "broader_ids": [ + "3298" + ], + "geo_area_code": null + }, + { + "id": "2901", + "label": "ratification of an agreement", + "alt_labels": [ + "conclusion of an agreement" + ], + "related_ids": [ + "2582" + ], + "broader_ids": [ + "3461" + ], + "geo_area_code": null + }, + { + "id": "2902", + "label": "ratio", + "alt_labels": [], + "related_ids": [ + "1155" + ], + "broader_ids": [ + "4256" + ], + "geo_area_code": null + }, + { + "id": "2903", + "label": "nuclear reactor", + "alt_labels": [ + "atomic power cell", + "boiling water reactor", + "fast neutron reactor", + "fusion reactor", + "gas-cooled reactor", + "light-water reactor", + "power reactor", + "pressurised water reactor", + "thermal reactor", + "thermonuclear reactor", + "water reactor", + "water-moderated reactor" + ], + "related_ids": [], + "broader_ids": [ + "5350" + ], + "geo_area_code": null + }, + { + "id": "2904", + "label": "vocational retraining", + "alt_labels": [ + "occupational retraining", + "retraining of workers" + ], + "related_ids": [ + "1074", + "2936", + "5383" + ], + "broader_ids": [ + "2468" + ], + "geo_area_code": null + }, + { + "id": "2905", + "label": "rearmament", + "alt_labels": [], + "related_ids": [ + "411" + ], + "broader_ids": [ + "2464" + ], + "geo_area_code": null + }, + { + "id": "2906", + "label": "reinsurance", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3151" + ], + "geo_area_code": null + }, + { + "id": "2907", + "label": "census", + "alt_labels": [ + "enumeration" + ], + "related_ids": [ + "2908", + "6316" + ], + "broader_ids": [ + "4256" + ], + "geo_area_code": null + }, + { + "id": "2908", + "label": "population census", + "alt_labels": [ + "population register" + ], + "related_ids": [ + "2907" + ], + "broader_ids": [ + "1773" + ], + "geo_area_code": null + }, + { + "id": "2909", + "label": "assistance in training", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2460" + ], + "geo_area_code": null + }, + { + "id": "291", + "label": "English-speaking Africa", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "281" + ], + "geo_area_code": null + }, + { + "id": "2910", + "label": "economic recession", + "alt_labels": [ + "deterioration of the economy", + "economic crisis", + "economic depression" + ], + "related_ids": [ + "1648", + "2390", + "2461", + "5975", + "5982" + ], + "broader_ids": [ + "335" + ], + "geo_area_code": null + }, + { + "id": "2911", + "label": "revenue", + "alt_labels": [], + "related_ids": [ + "2912", + "3558", + "3560" + ], + "broader_ids": [ + "3602" + ], + "geo_area_code": null + }, + { + "id": "2912", + "label": "export revenue", + "alt_labels": [ + "export earnings" + ], + "related_ids": [ + "2911", + "4247" + ], + "broader_ids": [ + "2487" + ], + "geo_area_code": null + }, + { + "id": "2913", + "label": "admissibility", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2701" + ], + "geo_area_code": null + }, + { + "id": "2914", + "label": "research", + "alt_labels": [], + "related_ids": [ + "2478", + "2896", + "2915", + "2923", + "3657", + "3660", + "5237", + "5238", + "6703", + "71" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2915", + "label": "agronomic research", + "alt_labels": [ + "agricultural research" + ], + "related_ids": [ + "2914", + "2920", + "2921", + "4363", + "4490", + "685" + ], + "broader_ids": [ + "2442" + ], + "geo_area_code": null + }, + { + "id": "2916", + "label": "applied research", + "alt_labels": [ + "technical research", + "technological research" + ], + "related_ids": [ + "3949", + "4415", + "5237" + ], + "broader_ids": [ + "2914" + ], + "geo_area_code": null + }, + { + "id": "2917", + "label": "energy research", + "alt_labels": [], + "related_ids": [ + "2924" + ], + "broader_ids": [ + "2498" + ], + "geo_area_code": null + }, + { + "id": "2918", + "label": "document retrieval", + "alt_labels": [], + "related_ids": [ + "156", + "4220" + ], + "broader_ids": [ + "494" + ], + "geo_area_code": null + }, + { + "id": "2919", + "label": "environmental research", + "alt_labels": [ + "environmental studies" + ], + "related_ids": [ + "2921", + "632" + ], + "broader_ids": [ + "2470" + ], + "geo_area_code": null + }, + { + "id": "292", + "label": "medium-term credit", + "alt_labels": [], + "related_ids": [ + "1003" + ], + "broader_ids": [ + "285" + ], + "geo_area_code": null + }, + { + "id": "2920", + "label": "forestry research", + "alt_labels": [], + "related_ids": [ + "2915" + ], + "broader_ids": [ + "2505" + ], + "geo_area_code": null + }, + { + "id": "2921", + "label": "fishery research", + "alt_labels": [ + "halieutic research" + ], + "related_ids": [ + "2915", + "2919" + ], + "broader_ids": [ + "2476" + ], + "geo_area_code": null + }, + { + "id": "2922", + "label": "industrial research", + "alt_labels": [], + "related_ids": [ + "1358", + "1410", + "213", + "2852", + "3707", + "3997" + ], + "broader_ids": [ + "2914" + ], + "geo_area_code": null + }, + { + "id": "2923", + "label": "medical research", + "alt_labels": [], + "related_ids": [ + "2914", + "3668" + ], + "broader_ids": [ + "5881" + ], + "geo_area_code": null + }, + { + "id": "2924", + "label": "scientific research", + "alt_labels": [], + "related_ids": [ + "223", + "2917", + "5236", + "6322", + "7130" + ], + "broader_ids": [ + "2914" + ], + "geo_area_code": null + }, + { + "id": "2925", + "label": "harvest", + "alt_labels": [ + "gathering", + "picking", + "reaping" + ], + "related_ids": [ + "1722", + "6315" + ], + "broader_ids": [ + "4412" + ], + "geo_area_code": null + }, + { + "id": "2926", + "label": "recommendation", + "alt_labels": [], + "related_ids": [ + "2927" + ], + "broader_ids": [ + "3467" + ], + "geo_area_code": null + }, + { + "id": "2927", + "label": "recommendation (EU)", + "alt_labels": [ + "Commission recommendation", + "Community recommendation", + "Council recommendation", + "recommendation of the European Central Bank" + ], + "related_ids": [ + "2926" + ], + "broader_ids": [ + "5258" + ], + "geo_area_code": null + }, + { + "id": "2928", + "label": "economic agreement", + "alt_labels": [], + "related_ids": [ + "209", + "2497" + ], + "broader_ids": [ + "3461" + ], + "geo_area_code": null + }, + { + "id": "2929", + "label": "mutual assistance scheme", + "alt_labels": [ + "friendly society", + "mutual aid society", + "mutual benefit scheme", + "mutual organisation" + ], + "related_ids": [ + "3082", + "3512" + ], + "broader_ids": [ + "1004" + ], + "geo_area_code": null + }, + { + "id": "293", + "label": "trade credit", + "alt_labels": [ + "commercial credit" + ], + "related_ids": [ + "1688", + "4664", + "4774", + "5015" + ], + "broader_ids": [ + "285" + ], + "geo_area_code": null + }, + { + "id": "2930", + "label": "ECSC recommendation", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5327" + ], + "geo_area_code": null + }, + { + "id": "2931", + "label": "EAEC recommendation", + "alt_labels": [ + "Euratom recommendation" + ], + "related_ids": [], + "broader_ids": [ + "5344" + ], + "geo_area_code": null + }, + { + "id": "2932", + "label": "recognition of diplomas", + "alt_labels": [ + "mutual recognition of diplomas", + "recognition of qualifications" + ], + "related_ids": [ + "446", + "532", + "5811", + "c_3bd33e24" + ], + "broader_ids": [ + "2467" + ], + "geo_area_code": null + }, + { + "id": "2933", + "label": "economic reconstruction", + "alt_labels": [], + "related_ids": [ + "3400", + "c_7cbc24fd" + ], + "broader_ids": [ + "427" + ], + "geo_area_code": null + }, + { + "id": "2934", + "label": "conversion to horticulture", + "alt_labels": [], + "related_ids": [ + "1260" + ], + "broader_ids": [ + "2938" + ], + "geo_area_code": null + }, + { + "id": "2935", + "label": "herd conversion", + "alt_labels": [], + "related_ids": [ + "5962" + ], + "broader_ids": [ + "2938" + ], + "geo_area_code": null + }, + { + "id": "2936", + "label": "industrial conversion", + "alt_labels": [ + "industrial reconversion", + "reconversion of industry", + "reconversion of undertakings" + ], + "related_ids": [ + "2904", + "3066", + "3068", + "3071", + "3523", + "7956" + ], + "broader_ids": [ + "3290" + ], + "geo_area_code": null + }, + { + "id": "2937", + "label": "conversion to beef production", + "alt_labels": [ + "dairy herd conversion" + ], + "related_ids": [ + "5962" + ], + "broader_ids": [ + "2938" + ], + "geo_area_code": null + }, + { + "id": "2938", + "label": "redirection of production", + "alt_labels": [], + "related_ids": [ + "1342", + "2970", + "3068", + "3165" + ], + "broader_ids": [ + "2477" + ], + "geo_area_code": null + }, + { + "id": "2939", + "label": "appeal to an administrative authority", + "alt_labels": [ + "claim to an administrative authority", + "complaint through administrative channels", + "complaint through official channels" + ], + "related_ids": [ + "5217", + "5835" + ], + "broader_ids": [ + "5852" + ], + "geo_area_code": null + }, + { + "id": "294", + "label": "swap arrangement", + "alt_labels": [ + "asset swaps", + "currency swap", + "liability swap" + ], + "related_ids": [], + "broader_ids": [ + "c_a18525ab" + ], + "geo_area_code": null + }, + { + "id": "2940", + "label": "action for annulment", + "alt_labels": [], + "related_ids": [ + "186", + "5217" + ], + "broader_ids": [ + "5835" + ], + "geo_area_code": null + }, + { + "id": "2941", + "label": "action for failure to act", + "alt_labels": [ + "appeal against Community inaction" + ], + "related_ids": [ + "8449" + ], + "broader_ids": [ + "5836" + ], + "geo_area_code": null + }, + { + "id": "2942", + "label": "action for failure to fulfil an obligation", + "alt_labels": [ + "appeal against non-compliance of the State" + ], + "related_ids": [ + "5790", + "5814" + ], + "broader_ids": [ + "5836" + ], + "geo_area_code": null + }, + { + "id": "2943", + "label": "recruitment", + "alt_labels": [], + "related_ids": [ + "2868", + "7812" + ], + "broader_ids": [ + "1163" + ], + "geo_area_code": null + }, + { + "id": "2944", + "label": "association", + "alt_labels": [ + "club", + "membership organisation" + ], + "related_ids": [], + "broader_ids": [ + "4702" + ], + "geo_area_code": null + }, + { + "id": "2945", + "label": "energy recovery", + "alt_labels": [ + "heat recovery" + ], + "related_ids": [ + "2549", + "754" + ], + "broader_ids": [ + "642" + ], + "geo_area_code": null + }, + { + "id": "2946", + "label": "recycling of capital", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2002" + ], + "geo_area_code": null + }, + { + "id": "2947", + "label": "waste recycling", + "alt_labels": [ + "conversion of waste", + "recovery of waste", + "recycling of materials", + "recycling of waste", + "reprocessing of waste", + "reuse of waste", + "selective waste collection", + "separate waste collection", + "use of waste" + ], + "related_ids": [ + "1375", + "346", + "3471", + "3638", + "3651", + "5533", + "c_1138d9d2" + ], + "broader_ids": [ + "1158" + ], + "geo_area_code": null + }, + { + "id": "2948", + "label": "aromatic plant", + "alt_labels": [ + "camphor", + "culinary herb", + "seasoning plant", + "spice" + ], + "related_ids": [ + "2658", + "6788", + "79" + ], + "broader_ids": [ + "2413" + ], + "geo_area_code": null + }, + { + "id": "2949", + "label": "force reduction", + "alt_labels": [ + "MBFR", + "MBFR Agreement", + "Mutual Balanced Force Reductions", + "demilitarisation" + ], + "related_ids": [], + "broader_ids": [ + "411" + ], + "geo_area_code": null + }, + { + "id": "295", + "label": "investment loan", + "alt_labels": [], + "related_ids": [ + "1488", + "2463", + "265" + ], + "broader_ids": [ + "285" + ], + "geo_area_code": null + }, + { + "id": "2950", + "label": "medical plant", + "alt_labels": [], + "related_ids": [ + "3289", + "3813" + ], + "broader_ids": [ + "2413" + ], + "geo_area_code": null + }, + { + "id": "2951", + "label": "soya bean oil", + "alt_labels": [], + "related_ids": [ + "4210" + ], + "broader_ids": [ + "1270" + ], + "geo_area_code": null + }, + { + "id": "2952", + "label": "sunflower seed oil", + "alt_labels": [], + "related_ids": [ + "4472" + ], + "broader_ids": [ + "1270" + ], + "geo_area_code": null + }, + { + "id": "2953", + "label": "reduction of working time", + "alt_labels": [], + "related_ids": [ + "3520", + "3555" + ], + "broader_ids": [ + "592" + ], + "geo_area_code": null + }, + { + "id": "2954", + "label": "game meat", + "alt_labels": [ + "meat from game", + "venison", + "wildfowl" + ], + "related_ids": [ + "1167" + ], + "broader_ids": [ + "4681" + ], + "geo_area_code": null + }, + { + "id": "2955", + "label": "rabbit meat", + "alt_labels": [], + "related_ids": [ + "1585" + ], + "broader_ids": [ + "4681" + ], + "geo_area_code": null + }, + { + "id": "2956", + "label": "maize oil", + "alt_labels": [], + "related_ids": [ + "1744" + ], + "broader_ids": [ + "1270" + ], + "geo_area_code": null + }, + { + "id": "2957", + "label": "tariff reduction", + "alt_labels": [ + "reduction of customs duties", + "reduction of customs tariff" + ], + "related_ids": [ + "1616" + ], + "broader_ids": [ + "2519" + ], + "geo_area_code": null + }, + { + "id": "2958", + "label": "skimmed milk powder", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2763" + ], + "geo_area_code": null + }, + { + "id": "2959", + "label": "rediscounting", + "alt_labels": [ + "rediscount rate" + ], + "related_ids": [ + "1808" + ], + "broader_ids": [ + "2495" + ], + "geo_area_code": null + }, + { + "id": "296", + "label": "payment appropriation", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "929" + ], + "geo_area_code": null + }, + { + "id": "2960", + "label": "revaluation", + "alt_labels": [ + "currency revaluation" + ], + "related_ids": [], + "broader_ids": [ + "1075" + ], + "geo_area_code": null + }, + { + "id": "2961", + "label": "re-export", + "alt_labels": [], + "related_ids": [ + "2321", + "97" + ], + "broader_ids": [ + "946" + ], + "geo_area_code": null + }, + { + "id": "2962", + "label": "dried product", + "alt_labels": [ + "dried fig", + "dried food", + "dried foodstuff", + "prune", + "raisin" + ], + "related_ids": [ + "2888" + ], + "broader_ids": [ + "1258" + ], + "geo_area_code": null + }, + { + "id": "2963", + "label": "texture agent", + "alt_labels": [ + "stabiliser", + "thickener" + ], + "related_ids": [ + "1654", + "6787" + ], + "broader_ids": [ + "6052" + ], + "geo_area_code": null + }, + { + "id": "2964", + "label": "summary procedure", + "alt_labels": [ + "emergency hearing", + "emergency procedure" + ], + "related_ids": [], + "broader_ids": [ + "5817" + ], + "geo_area_code": null + }, + { + "id": "2965", + "label": "aid to agriculture", + "alt_labels": [ + "farm subsidy" + ], + "related_ids": [ + "2981", + "6339", + "786", + "862", + "889" + ], + "broader_ids": [ + "2442" + ], + "geo_area_code": null + }, + { + "id": "2966", + "label": "referendum", + "alt_labels": [], + "related_ids": [ + "2388", + "4216", + "527", + "8422" + ], + "broader_ids": [ + "4367" + ], + "geo_area_code": null + }, + { + "id": "2967", + "label": "Community preference", + "alt_labels": [], + "related_ids": [ + "2443" + ], + "broader_ids": [ + "2450" + ], + "geo_area_code": null + }, + { + "id": "2968", + "label": "administrative reform", + "alt_labels": [], + "related_ids": [ + "4181" + ], + "broader_ids": [ + "2166" + ], + "geo_area_code": null + }, + { + "id": "2969", + "label": "reform of the CAP", + "alt_labels": [ + "rationalisation of the CAP", + "revision of the CAP" + ], + "related_ids": [ + "2974", + "2975", + "4404" + ], + "broader_ids": [ + "2443" + ], + "geo_area_code": null + }, + { + "id": "297", + "label": "documentary credit", + "alt_labels": [], + "related_ids": [ + "2219" + ], + "broader_ids": [ + "285" + ], + "geo_area_code": null + }, + { + "id": "2970", + "label": "agrarian reform", + "alt_labels": [ + "agricultural reform", + "reform of agricultural structures" + ], + "related_ids": [ + "2938", + "2978", + "4298" + ], + "broader_ids": [ + "2442" + ], + "geo_area_code": null + }, + { + "id": "2971", + "label": "farm development plan", + "alt_labels": [ + "agricultural development plan", + "physical improvement plan" + ], + "related_ids": [ + "1958", + "2393", + "2981", + "430" + ], + "broader_ids": [ + "2443" + ], + "geo_area_code": null + }, + { + "id": "2972", + "label": "regulation of agricultural production", + "alt_labels": [], + "related_ids": [ + "2709" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "2973", + "label": "educational reform", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2175" + ], + "geo_area_code": null + }, + { + "id": "2974", + "label": "agricultural quota", + "alt_labels": [ + "farm quota", + "milk quota" + ], + "related_ids": [ + "2709", + "2879", + "2969", + "2989", + "3633" + ], + "broader_ids": [ + "2972" + ], + "geo_area_code": null + }, + { + "id": "2975", + "label": "guarantee threshold", + "alt_labels": [], + "related_ids": [ + "2639", + "2969" + ], + "broader_ids": [ + "2972" + ], + "geo_area_code": null + }, + { + "id": "2976", + "label": "alternative agricultural production", + "alt_labels": [ + "alternative crops", + "substitute agricultural production" + ], + "related_ids": [ + "2709" + ], + "broader_ids": [ + "2477" + ], + "geo_area_code": null + }, + { + "id": "2977", + "label": "tax on oils and fats", + "alt_labels": [], + "related_ids": [ + "239" + ], + "broader_ids": [ + "2972" + ], + "geo_area_code": null + }, + { + "id": "2978", + "label": "land reform", + "alt_labels": [], + "related_ids": [ + "2970" + ], + "broader_ids": [ + "2814" + ], + "geo_area_code": null + }, + { + "id": "2979", + "label": "less-favoured agricultural area", + "alt_labels": [ + "area with specific problems", + "less-favoured agricultural region" + ], + "related_ids": [ + "3034", + "3052" + ], + "broader_ids": [ + "2445" + ], + "geo_area_code": null + }, + { + "id": "298", + "label": "real estate credit", + "alt_labels": [ + "building loan", + "housing loan", + "loan on real estate", + "mortgage loan" + ], + "related_ids": [ + "2815", + "5090", + "775" + ], + "broader_ids": [ + "285" + ], + "geo_area_code": null + }, + { + "id": "2980", + "label": "woman farmer", + "alt_labels": [], + "related_ids": [ + "3530" + ], + "broader_ids": [ + "2551" + ], + "geo_area_code": null + }, + { + "id": "2981", + "label": "young farmer", + "alt_labels": [ + "young farm holder" + ], + "related_ids": [ + "1342", + "2965", + "2971" + ], + "broader_ids": [ + "2551" + ], + "geo_area_code": null + }, + { + "id": "2982", + "label": "judicial reform", + "alt_labels": [], + "related_ids": [ + "4181" + ], + "broader_ids": [ + "5923" + ], + "geo_area_code": null + }, + { + "id": "2983", + "label": "grouping of farms", + "alt_labels": [], + "related_ids": [ + "1201", + "2992", + "4811" + ], + "broader_ids": [ + "4358" + ], + "geo_area_code": null + }, + { + "id": "2984", + "label": "farm return", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3424" + ], + "geo_area_code": null + }, + { + "id": "2985", + "label": "plant health product", + "alt_labels": [ + "plant protection product" + ], + "related_ids": [ + "1595", + "191", + "2531", + "3818", + "4490" + ], + "broader_ids": [ + "2014" + ], + "geo_area_code": null + }, + { + "id": "2986", + "label": "refugee", + "alt_labels": [], + "related_ids": [ + "1913", + "2991", + "3075", + "3710", + "c_b0c14f45" + ], + "broader_ids": [ + "3476" + ], + "geo_area_code": null + }, + { + "id": "2987", + "label": "herbicide", + "alt_labels": [ + "weedkiller" + ], + "related_ids": [ + "3157" + ], + "broader_ids": [ + "2985" + ], + "geo_area_code": null + }, + { + "id": "2988", + "label": "rabies", + "alt_labels": [], + "related_ids": [ + "6152" + ], + "broader_ids": [ + "1755" + ], + "geo_area_code": null + }, + { + "id": "2989", + "label": "dairy production", + "alt_labels": [ + "milk production" + ], + "related_ids": [ + "1406", + "2763", + "2974", + "4639", + "944" + ], + "broader_ids": [ + "2711" + ], + "geo_area_code": null + }, + { + "id": "299", + "label": "industrial credit", + "alt_labels": [ + "industrial loan" + ], + "related_ids": [ + "3247" + ], + "broader_ids": [ + "1009" + ], + "geo_area_code": null + }, + { + "id": "2990", + "label": "cereal substitute", + "alt_labels": [ + "meat and bonemeal" + ], + "related_ids": [ + "2737" + ], + "broader_ids": [ + "1224" + ], + "geo_area_code": null + }, + { + "id": "2991", + "label": "political refugee", + "alt_labels": [ + "political exile" + ], + "related_ids": [ + "2154", + "2867", + "2986", + "3075" + ], + "broader_ids": [ + "4730" + ], + "geo_area_code": null + }, + { + "id": "2992", + "label": "forestry group", + "alt_labels": [], + "related_ids": [ + "2983" + ], + "broader_ids": [ + "651" + ], + "geo_area_code": null + }, + { + "id": "2993", + "label": "refusal to bid", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3581" + ], + "geo_area_code": null + }, + { + "id": "2994", + "label": "wood production", + "alt_labels": [], + "related_ids": [ + "1386" + ], + "broader_ids": [ + "651" + ], + "geo_area_code": null + }, + { + "id": "2995", + "label": "forestry property", + "alt_labels": [], + "related_ids": [ + "2814" + ], + "broader_ids": [ + "2505" + ], + "geo_area_code": null + }, + { + "id": "2996", + "label": "publicly owned forest", + "alt_labels": [ + "State forest", + "national forest" + ], + "related_ids": [ + "2812", + "4446" + ], + "broader_ids": [ + "2995" + ], + "geo_area_code": null + }, + { + "id": "2997", + "label": "private forest", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2995" + ], + "geo_area_code": null + }, + { + "id": "2998", + "label": "refusal to sell", + "alt_labels": [ + "refusal to deal", + "refusal to supply" + ], + "related_ids": [ + "1662", + "4663", + "478" + ], + "broader_ids": [ + "3581" + ], + "geo_area_code": null + }, + { + "id": "2999", + "label": "shellfish farming", + "alt_labels": [ + "mussel farming", + "oyster farming" + ], + "related_ids": [ + "1961", + "c_623f2583" + ], + "broader_ids": [ + "2320" + ], + "geo_area_code": null + }, + { + "id": "3", + "label": "adhesive", + "alt_labels": [ + "glue" + ], + "related_ids": [], + "broader_ids": [ + "3798" + ], + "geo_area_code": null + }, + { + "id": "30", + "label": "satellite communications", + "alt_labels": [ + "European communications satellite", + "communications satellite", + "direct broadcasting satellite", + "telecommunications satellite" + ], + "related_ids": [ + "3905", + "6852" + ], + "broader_ids": [ + "4424" + ], + "geo_area_code": null + }, + { + "id": "300", + "label": "international credit", + "alt_labels": [], + "related_ids": [ + "285" + ], + "broader_ids": [ + "1677" + ], + "geo_area_code": null + }, + { + "id": "3000", + "label": "fishery produce", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2320" + ], + "geo_area_code": null + }, + { + "id": "3001", + "label": "fishing licence", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5228" + ], + "geo_area_code": null + }, + { + "id": "3002", + "label": "authoritarian regime", + "alt_labels": [ + "totalitarian regime", + "totalitarianism" + ], + "related_ids": [], + "broader_ids": [ + "3025" + ], + "geo_area_code": null + }, + { + "id": "3003", + "label": "aid system", + "alt_labels": [ + "application for aid", + "fixing the amount of aid", + "general aid scheme", + "request for aid" + ], + "related_ids": [ + "2483", + "5844", + "8459" + ], + "broader_ids": [ + "2460" + ], + "geo_area_code": null + }, + { + "id": "3004", + "label": "demerger", + "alt_labels": [ + "division of companies", + "hiving-off", + "splitting of companies" + ], + "related_ids": [], + "broader_ids": [ + "69" + ], + "geo_area_code": null + }, + { + "id": "3005", + "label": "transnational corporation", + "alt_labels": [ + "transnational company" + ], + "related_ids": [], + "broader_ids": [ + "813" + ], + "geo_area_code": null + }, + { + "id": "3006", + "label": "exclusive purchasing agreement", + "alt_labels": [ + "exclusive buying agreement" + ], + "related_ids": [], + "broader_ids": [ + "802" + ], + "geo_area_code": null + }, + { + "id": "3007", + "label": "partly nationalised undertaking", + "alt_labels": [ + "partly nationalized undertaking" + ], + "related_ids": [ + "2468", + "6754" + ], + "broader_ids": [ + "4189" + ], + "geo_area_code": null + }, + { + "id": "3008", + "label": "selective distribution agreement", + "alt_labels": [], + "related_ids": [ + "474" + ], + "broader_ids": [ + "806" + ], + "geo_area_code": null + }, + { + "id": "3009", + "label": "landholding system", + "alt_labels": [ + "system of land ownership" + ], + "related_ids": [ + "4801", + "962" + ], + "broader_ids": [ + "2814" + ], + "geo_area_code": null + }, + { + "id": "301", + "label": "cream", + "alt_labels": [ + "dairy cream" + ], + "related_ids": [], + "broader_ids": [ + "2763" + ], + "geo_area_code": null + }, + { + "id": "3010", + "label": "electronic mail", + "alt_labels": [ + "e-mail", + "electronic message service", + "electronic messaging", + "email" + ], + "related_ids": [ + "4430", + "5071", + "7947" + ], + "broader_ids": [ + "4424" + ], + "geo_area_code": null + }, + { + "id": "3011", + "label": "cross-frontier data flow", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4502" + ], + "geo_area_code": null + }, + { + "id": "3012", + "label": "commercial media", + "alt_labels": [ + "commercial radio", + "commercial television" + ], + "related_ids": [], + "broader_ids": [ + "2013" + ], + "geo_area_code": null + }, + { + "id": "3013", + "label": "economic system", + "alt_labels": [], + "related_ids": [ + "6292" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "3014", + "label": "local media", + "alt_labels": [ + "alternative radio", + "free radio", + "local radio" + ], + "related_ids": [], + "broader_ids": [ + "2013" + ], + "geo_area_code": null + }, + { + "id": "3015", + "label": "private media", + "alt_labels": [ + "private radio", + "private television" + ], + "related_ids": [], + "broader_ids": [ + "2013" + ], + "geo_area_code": null + }, + { + "id": "3016", + "label": "military regime", + "alt_labels": [ + "military dictatorship", + "military junta" + ], + "related_ids": [ + "1931", + "2628", + "67" + ], + "broader_ids": [ + "3025" + ], + "geo_area_code": null + }, + { + "id": "3017", + "label": "transmission network", + "alt_labels": [ + "Euronet", + "Transpac", + "broadband", + "broadcasting network", + "data-transmission network", + "telecommunications network" + ], + "related_ids": [ + "5864" + ], + "broader_ids": [ + "4502" + ], + "geo_area_code": null + }, + { + "id": "3018", + "label": "videophone conference", + "alt_labels": [], + "related_ids": [ + "4430" + ], + "broader_ids": [ + "4424" + ], + "geo_area_code": null + }, + { + "id": "3019", + "label": "European television", + "alt_labels": [ + "Community television production", + "European television programme", + "multilingual Community programme", + "multilingual television broadcast" + ], + "related_ids": [], + "broader_ids": [ + "4432" + ], + "geo_area_code": null + }, + { + "id": "302", + "label": "Central Africa", + "alt_labels": [ + "Equatorial Africa" + ], + "related_ids": [], + "broader_ids": [ + "5424" + ], + "geo_area_code": null + }, + { + "id": "3020", + "label": "parliamentary system", + "alt_labels": [], + "related_ids": [ + "2242", + "8424" + ], + "broader_ids": [ + "3025" + ], + "geo_area_code": null + }, + { + "id": "3021", + "label": "pay television", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4432" + ], + "geo_area_code": null + }, + { + "id": "3022", + "label": "Videotex", + "alt_labels": [ + "Teletel" + ], + "related_ids": [], + "broader_ids": [ + "4424" + ], + "geo_area_code": null + }, + { + "id": "3023", + "label": "home computing", + "alt_labels": [ + "home computer" + ], + "related_ids": [ + "3704", + "4699" + ], + "broader_ids": [ + "3026" + ], + "geo_area_code": null + }, + { + "id": "3024", + "label": "information storage", + "alt_labels": [], + "related_ids": [ + "4295" + ], + "broader_ids": [ + "4488" + ], + "geo_area_code": null + }, + { + "id": "3025", + "label": "political system", + "alt_labels": [ + "political regime" + ], + "related_ids": [ + "3947" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "3026", + "label": "computer applications", + "alt_labels": [ + "applied computer science" + ], + "related_ids": [ + "3248", + "3293", + "3636", + "3925" + ], + "broader_ids": [ + "1426" + ], + "geo_area_code": null + }, + { + "id": "3027", + "label": "computer crime", + "alt_labels": [ + "computer offence", + "computer-related crime", + "cyber-vandalism", + "cybercrime", + "digital crime" + ], + "related_ids": [ + "5181", + "8453", + "c_7546272f" + ], + "broader_ids": [ + "3028" + ], + "geo_area_code": null + }, + { + "id": "3028", + "label": "data-processing law", + "alt_labels": [], + "related_ids": [ + "2828", + "453" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "303", + "label": "dairy ice cream", + "alt_labels": [ + "fruit ice cream" + ], + "related_ids": [], + "broader_ids": [ + "2763" + ], + "geo_area_code": null + }, + { + "id": "3030", + "label": "artificial intelligence", + "alt_labels": [ + "expert system" + ], + "related_ids": [ + "3293", + "3740", + "c_5a195ffd" + ], + "broader_ids": [ + "4486" + ], + "geo_area_code": null + }, + { + "id": "3031", + "label": "region", + "alt_labels": [], + "related_ids": [ + "6389" + ], + "broader_ids": [ + "6034" + ], + "geo_area_code": null + }, + { + "id": "3032", + "label": "EU Official Journal", + "alt_labels": [ + "EC Official Journal", + "Official Journal of the European Union" + ], + "related_ids": [], + "broader_ids": [ + "492" + ], + "geo_area_code": null + }, + { + "id": "3033", + "label": "computer piracy", + "alt_labels": [ + "hacking", + "software misuse", + "software piracy" + ], + "related_ids": [ + "5192", + "529", + "866" + ], + "broader_ids": [ + "3027" + ], + "geo_area_code": null + }, + { + "id": "3034", + "label": "agricultural region", + "alt_labels": [ + "agricultural area" + ], + "related_ids": [ + "2979", + "4630", + "6313" + ], + "broader_ids": [ + "3079" + ], + "geo_area_code": null + }, + { + "id": "3035", + "label": "election monitoring", + "alt_labels": [ + "election observation", + "verification of the regularity of an election" + ], + "related_ids": [], + "broader_ids": [ + "4750" + ], + "geo_area_code": null + }, + { + "id": "3036", + "label": "multiple office holding", + "alt_labels": [ + "dual mandate" + ], + "related_ids": [], + "broader_ids": [ + "1778" + ], + "geo_area_code": null + }, + { + "id": "3037", + "label": "election result", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "360" + ], + "geo_area_code": null + }, + { + "id": "3038", + "label": "delegation of power", + "alt_labels": [ + "delegation of competence", + "delegation of signature" + ], + "related_ids": [ + "1593" + ], + "broader_ids": [ + "517" + ], + "geo_area_code": null + }, + { + "id": "3039", + "label": "Brussels region", + "alt_labels": [ + "Brussels-capital region" + ], + "related_ids": [], + "broader_ids": [ + "4840" + ], + "geo_area_code": null + }, + { + "id": "304", + "label": "Scientific and Technical Research Committee", + "alt_labels": [ + "CREST" + ], + "related_ids": [], + "broader_ids": [ + "3656" + ], + "geo_area_code": null + }, + { + "id": "3040", + "label": "parliamentary delegation", + "alt_labels": [], + "related_ids": [ + "5128", + "7337" + ], + "broader_ids": [ + "53" + ], + "geo_area_code": null + }, + { + "id": "3041", + "label": "voting age", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "706" + ], + "geo_area_code": null + }, + { + "id": "3042", + "label": "federalism", + "alt_labels": [ + "federation of States" + ], + "related_ids": [ + "2245", + "5623" + ], + "broader_ids": [ + "3025" + ], + "geo_area_code": null + }, + { + "id": "3043", + "label": "coastal region", + "alt_labels": [ + "coastal zone", + "littoral zone" + ], + "related_ids": [ + "1049", + "1683", + "2532", + "611", + "c_6e3cbbca", + "c_d978c1fc" + ], + "broader_ids": [ + "3058" + ], + "geo_area_code": null + }, + { + "id": "3044", + "label": "plebiscite", + "alt_labels": [], + "related_ids": [ + "8422" + ], + "broader_ids": [ + "4367" + ], + "geo_area_code": null + }, + { + "id": "3045", + "label": "distribution of votes", + "alt_labels": [ + "percentage of votes" + ], + "related_ids": [], + "broader_ids": [ + "360" + ], + "geo_area_code": null + }, + { + "id": "3046", + "label": "advisory power", + "alt_labels": [], + "related_ids": [ + "2243", + "41" + ], + "broader_ids": [ + "2573" + ], + "geo_area_code": null + }, + { + "id": "3047", + "label": "development region", + "alt_labels": [ + "development area", + "development zone" + ], + "related_ids": [ + "427", + "429", + "430" + ], + "broader_ids": [ + "3058" + ], + "geo_area_code": null + }, + { + "id": "3048", + "label": "power to appoint", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2573" + ], + "geo_area_code": null + }, + { + "id": "3049", + "label": "privilege", + "alt_labels": [ + "parliamentary prerogative", + "parliamentary privilege" + ], + "related_ids": [ + "6893" + ], + "broader_ids": [ + "2246" + ], + "geo_area_code": null + }, + { + "id": "305", + "label": "Crete", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1184" + ], + "geo_area_code": null + }, + { + "id": "3050", + "label": "radical party", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2258" + ], + "geo_area_code": null + }, + { + "id": "3051", + "label": "mountain region", + "alt_labels": [ + "mountain area" + ], + "related_ids": [ + "1987", + "604" + ], + "broader_ids": [ + "3079" + ], + "geo_area_code": null + }, + { + "id": "3052", + "label": "less-favoured region", + "alt_labels": [ + "less-favoured area", + "underdeveloped region" + ], + "related_ids": [ + "2979", + "462", + "5499", + "976" + ], + "broader_ids": [ + "3058" + ], + "geo_area_code": null + }, + { + "id": "3053", + "label": "forced disappearance", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4730" + ], + "geo_area_code": null + }, + { + "id": "3054", + "label": "political minority", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4704" + ], + "geo_area_code": null + }, + { + "id": "3055", + "label": "police checks", + "alt_labels": [ + "check on persons", + "checking of vehicle papers", + "identification checks", + "roadside checks" + ], + "related_ids": [ + "488", + "5330" + ], + "broader_ids": [ + "2162" + ], + "geo_area_code": null + }, + { + "id": "3056", + "label": "pacifism", + "alt_labels": [ + "anti-militarism", + "pacifist movement", + "peace movement" + ], + "related_ids": [ + "6722" + ], + "broader_ids": [ + "2001" + ], + "geo_area_code": null + }, + { + "id": "3057", + "label": "civil defence", + "alt_labels": [ + "civil protection", + "emergency services" + ], + "related_ids": [ + "3076", + "412", + "413", + "6255" + ], + "broader_ids": [ + "4045" + ], + "geo_area_code": null + }, + { + "id": "3058", + "label": "economic region", + "alt_labels": [ + "economic area", + "economic zone" + ], + "related_ids": [ + "2445", + "4809", + "5847", + "6389" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "3059", + "label": "vote by delegation", + "alt_labels": [ + "delegation of voting rights" + ], + "related_ids": [], + "broader_ids": [ + "4762" + ], + "geo_area_code": null + }, + { + "id": "306", + "label": "war crime", + "alt_labels": [ + "war criminal" + ], + "related_ids": [ + "1210" + ], + "broader_ids": [ + "564" + ], + "geo_area_code": null + }, + { + "id": "3060", + "label": "consortium", + "alt_labels": [], + "related_ids": [ + "183", + "539", + "802", + "816" + ], + "broader_ids": [ + "4189" + ], + "geo_area_code": null + }, + { + "id": "3061", + "label": "Flanders (Belgium)", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4840" + ], + "geo_area_code": null + }, + { + "id": "3062", + "label": "executive body", + "alt_labels": [], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "3063", + "label": "government programme", + "alt_labels": [], + "related_ids": [ + "2422", + "2796" + ], + "broader_ids": [ + "2506" + ], + "geo_area_code": null + }, + { + "id": "3064", + "label": "frontier region", + "alt_labels": [ + "border region", + "frontier area", + "frontier zone" + ], + "related_ids": [ + "1114", + "226" + ], + "broader_ids": [ + "3058" + ], + "geo_area_code": null + }, + { + "id": "3065", + "label": "market support", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1486" + ], + "geo_area_code": null + }, + { + "id": "3066", + "label": "economic conversion", + "alt_labels": [ + "economic reconversion" + ], + "related_ids": [ + "2936" + ], + "broader_ids": [ + "2497" + ], + "geo_area_code": null + }, + { + "id": "3067", + "label": "industrial region", + "alt_labels": [ + "industrial zone" + ], + "related_ids": [ + "2405", + "3164", + "3624" + ], + "broader_ids": [ + "3058" + ], + "geo_area_code": null + }, + { + "id": "3068", + "label": "redevelopment aid", + "alt_labels": [], + "related_ids": [ + "2936", + "2938" + ], + "broader_ids": [ + "712" + ], + "geo_area_code": null + }, + { + "id": "3069", + "label": "aid for restructuring", + "alt_labels": [], + "related_ids": [ + "3600" + ], + "broader_ids": [ + "712" + ], + "geo_area_code": null + }, + { + "id": "307", + "label": "criminology", + "alt_labels": [], + "related_ids": [ + "3348", + "374", + "4728", + "573", + "5732" + ], + "broader_ids": [ + "3928" + ], + "geo_area_code": null + }, + { + "id": "3070", + "label": "sales aid", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "712" + ], + "geo_area_code": null + }, + { + "id": "3071", + "label": "aid to industry", + "alt_labels": [], + "related_ids": [ + "1957", + "2936", + "3600" + ], + "broader_ids": [ + "712" + ], + "geo_area_code": null + }, + { + "id": "3072", + "label": "redistribution of income", + "alt_labels": [], + "related_ids": [ + "1021", + "1409", + "2490", + "4050" + ], + "broader_ids": [ + "3659" + ], + "geo_area_code": null + }, + { + "id": "3073", + "label": "Mediterranean region (EU)", + "alt_labels": [ + "EC Mediterranean region", + "Mediterranean basin" + ], + "related_ids": [ + "462", + "5150", + "5780", + "645" + ], + "broader_ids": [ + "5848" + ], + "geo_area_code": null + }, + { + "id": "3074", + "label": "humanitarian aid", + "alt_labels": [ + "humanitarian action", + "humanitarian assistance" + ], + "related_ids": [ + "312", + "6255", + "c_54f7dd1f", + "c_5b447e3a", + "c_90dfa6c7" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "3075", + "label": "aid to refugees", + "alt_labels": [ + "refugee camp" + ], + "related_ids": [ + "2986", + "2991" + ], + "broader_ids": [ + "3074" + ], + "geo_area_code": null + }, + { + "id": "3076", + "label": "aid to disaster victims", + "alt_labels": [ + "aid to catastrophe victims" + ], + "related_ids": [ + "3057", + "3288", + "412", + "413" + ], + "broader_ids": [ + "3074" + ], + "geo_area_code": null + }, + { + "id": "3077", + "label": "development aid", + "alt_labels": [ + "aid to developing countries", + "co-development" + ], + "related_ids": [ + "3915", + "427", + "992" + ], + "broader_ids": [ + "2460" + ], + "geo_area_code": null + }, + { + "id": "3078", + "label": "priority region", + "alt_labels": [ + "priority area" + ], + "related_ids": [ + "2627" + ], + "broader_ids": [ + "3058" + ], + "geo_area_code": null + }, + { + "id": "3079", + "label": "rural region", + "alt_labels": [ + "rural area", + "rural zone" + ], + "related_ids": [ + "1222", + "4231", + "462", + "507", + "6033" + ], + "broader_ids": [ + "3058" + ], + "geo_area_code": null + }, + { + "id": "308", + "label": "energy crisis", + "alt_labels": [ + "power crisis" + ], + "related_ids": [], + "broader_ids": [ + "2498" + ], + "geo_area_code": null + }, + { + "id": "3080", + "label": "newly industrialised country", + "alt_labels": [ + "EAGLEs", + "emerging and growth-leading economies", + "emerging economy", + "newly industrialising countries", + "newly industrialising economy", + "newly industrialized country", + "newly industrializing country", + "newly industrializing economy" + ], + "related_ids": [ + "1356", + "c_964c9649" + ], + "broader_ids": [ + "427" + ], + "geo_area_code": null + }, + { + "id": "3081", + "label": "tourist region", + "alt_labels": [ + "tourist area" + ], + "related_ids": [ + "3705", + "4470" + ], + "broader_ids": [ + "3058" + ], + "geo_area_code": null + }, + { + "id": "3082", + "label": "social economy", + "alt_labels": [ + "economic solidarity" + ], + "related_ids": [ + "227", + "2929", + "4153", + "4204", + "4702", + "6364", + "c_5f90006e" + ], + "broader_ids": [ + "637" + ], + "geo_area_code": null + }, + { + "id": "3083", + "label": "economic accounts for agriculture", + "alt_labels": [], + "related_ids": [ + "3424", + "3605", + "54" + ], + "broader_ids": [ + "56" + ], + "geo_area_code": null + }, + { + "id": "3084", + "label": "Walloon region (Belgium)", + "alt_labels": [ + "Wallonia" + ], + "related_ids": [], + "broader_ids": [ + "4840" + ], + "geo_area_code": null + }, + { + "id": "3085", + "label": "impact study", + "alt_labels": [], + "related_ids": [ + "1305", + "2802", + "3139" + ], + "broader_ids": [ + "1800" + ], + "geo_area_code": null + }, + { + "id": "3086", + "label": "economic consequence", + "alt_labels": [ + "economic impact", + "economic implication" + ], + "related_ids": [], + "broader_ids": [ + "1800" + ], + "geo_area_code": null + }, + { + "id": "3087", + "label": "conciliation", + "alt_labels": [ + "conciliation procedure" + ], + "related_ids": [ + "2243" + ], + "broader_ids": [ + "438855" + ], + "geo_area_code": null + }, + { + "id": "3088", + "label": "regionalisation", + "alt_labels": [ + "regionalization" + ], + "related_ids": [ + "2245", + "3096" + ], + "broader_ids": [ + "2166" + ], + "geo_area_code": null + }, + { + "id": "3089", + "label": "underground railway", + "alt_labels": [ + "subway" + ], + "related_ids": [ + "4537", + "4657" + ], + "broader_ids": [ + "4541" + ], + "geo_area_code": null + }, + { + "id": "309", + "label": "political crisis", + "alt_labels": [], + "related_ids": [ + "696", + "c_5b447e3a" + ], + "broader_ids": [ + "4704" + ], + "geo_area_code": null + }, + { + "id": "3090", + "label": "large vehicle", + "alt_labels": [ + "heavy goods vehicle" + ], + "related_ids": [], + "broader_ids": [ + "4651" + ], + "geo_area_code": null + }, + { + "id": "3092", + "label": "space transport", + "alt_labels": [], + "related_ids": [ + "1358", + "2829", + "4185", + "6382" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "3093", + "label": "space vehicle", + "alt_labels": [], + "related_ids": [ + "3095" + ], + "broader_ids": [ + "3092" + ], + "geo_area_code": null + }, + { + "id": "3094", + "label": "regionalisation of trade", + "alt_labels": [ + "regionalization of trade" + ], + "related_ids": [], + "broader_ids": [ + "482" + ], + "geo_area_code": null + }, + { + "id": "3095", + "label": "space station", + "alt_labels": [], + "related_ids": [ + "3093" + ], + "broader_ids": [ + "5238" + ], + "geo_area_code": null + }, + { + "id": "3096", + "label": "regionalism", + "alt_labels": [], + "related_ids": [ + "1999", + "3088", + "340", + "4272", + "6882", + "7378" + ], + "broader_ids": [ + "1282" + ], + "geo_area_code": null + }, + { + "id": "3097", + "label": "vehicle rental", + "alt_labels": [ + "vehicle hire" + ], + "related_ids": [ + "5710", + "817" + ], + "broader_ids": [ + "2181" + ], + "geo_area_code": null + }, + { + "id": "3098", + "label": "destination of transport", + "alt_labels": [], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "3099", + "label": "regulation", + "alt_labels": [ + "regulatory provision" + ], + "related_ids": [ + "3102" + ], + "broader_ids": [ + "1589" + ], + "geo_area_code": null + }, + { + "id": "31", + "label": "press release", + "alt_labels": [ + "press conference", + "statement to the press" + ], + "related_ids": [ + "2599" + ], + "broader_ids": [ + "486" + ], + "geo_area_code": null + }, + { + "id": "310", + "label": "economic growth", + "alt_labels": [ + "economic expansion", + "growth rate", + "zero growth" + ], + "related_ids": [ + "1800", + "2465", + "5675", + "7951", + "c_749f2ce9", + "c_d08207d1" + ], + "broader_ids": [ + "427" + ], + "geo_area_code": null + }, + { + "id": "3100", + "label": "ship's passport", + "alt_labels": [ + "sea letter" + ], + "related_ids": [ + "2040", + "2041" + ], + "broader_ids": [ + "3131" + ], + "geo_area_code": null + }, + { + "id": "3101", + "label": "transport price", + "alt_labels": [ + "transport cost" + ], + "related_ids": [ + "2632", + "4407" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "3102", + "label": "regulation (EU)", + "alt_labels": [ + "Commission Regulation", + "Community regulation", + "Council Regulation", + "regulation of the European Central Bank", + "regulation of the European Parliament" + ], + "related_ids": [ + "2247", + "3099" + ], + "broader_ids": [ + "5258" + ], + "geo_area_code": null + }, + { + "id": "3103", + "label": "approval of tariffs", + "alt_labels": [ + "approval of transport tariffs" + ], + "related_ids": [], + "broader_ids": [ + "4379" + ], + "geo_area_code": null + }, + { + "id": "3105", + "label": "port traffic", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2512" + ], + "geo_area_code": null + }, + { + "id": "3106", + "label": "EAEC Regulation", + "alt_labels": [ + "Euratom Regulation" + ], + "related_ids": [], + "broader_ids": [ + "5344" + ], + "geo_area_code": null + }, + { + "id": "3107", + "label": "traffic control", + "alt_labels": [], + "related_ids": [ + "3127", + "4515", + "4522" + ], + "broader_ids": [ + "3131" + ], + "geo_area_code": null + }, + { + "id": "3108", + "label": "transport quota", + "alt_labels": [ + "bilateral quota" + ], + "related_ids": [], + "broader_ids": [ + "3160" + ], + "geo_area_code": null + }, + { + "id": "3109", + "label": "transport market", + "alt_labels": [], + "related_ids": [ + "1786" + ], + "broader_ids": [ + "2494" + ], + "geo_area_code": null + }, + { + "id": "311", + "label": "North Africa", + "alt_labels": [ + "Northern Africa" + ], + "related_ids": [ + "6282", + "6283" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "3110", + "label": "vehicle registration", + "alt_labels": [ + "number plate", + "registration plate" + ], + "related_ids": [], + "broader_ids": [ + "3160" + ], + "geo_area_code": null + }, + { + "id": "3111", + "label": "vehicle documents", + "alt_labels": [ + "car licence", + "green insurance card", + "logbook", + "ship's register", + "ships' papers", + "vehicle papers" + ], + "related_ids": [], + "broader_ids": [ + "3160" + ], + "geo_area_code": null + }, + { + "id": "3112", + "label": "settlement of disputes", + "alt_labels": [ + "conflict resolution", + "conflict settlement", + "dispute settlement", + "peace negotiations" + ], + "related_ids": [ + "3465", + "435469" + ], + "broader_ids": [ + "6722" + ], + "geo_area_code": null + }, + { + "id": "3113", + "label": "length of journey", + "alt_labels": [ + "time of transport" + ], + "related_ids": [ + "1910", + "3116" + ], + "broader_ids": [ + "2181" + ], + "geo_area_code": null + }, + { + "id": "3114", + "label": "high-speed transport", + "alt_labels": [ + "high speed", + "high-speed train", + "rapid-transit railway" + ], + "related_ids": [ + "4514" + ], + "broader_ids": [ + "2181" + ], + "geo_area_code": null + }, + { + "id": "3115", + "label": "transport document", + "alt_labels": [ + "TIR carnet", + "accompanying document", + "consignment note", + "way bill" + ], + "related_ids": [], + "broader_ids": [ + "3160" + ], + "geo_area_code": null + }, + { + "id": "3116", + "label": "driving period", + "alt_labels": [], + "related_ids": [ + "1257", + "3113", + "592" + ], + "broader_ids": [ + "3160" + ], + "geo_area_code": null + }, + { + "id": "3117", + "label": "roadworthiness tests", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3160" + ], + "geo_area_code": null + }, + { + "id": "3118", + "label": "travel agency", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4470" + ], + "geo_area_code": null + }, + { + "id": "3119", + "label": "financial regulation", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1018" + ], + "geo_area_code": null + }, + { + "id": "312", + "label": "Red Cross", + "alt_labels": [ + "ICRC", + "IFRC", + "International Committee of the Red Cross", + "International Federation of Red Cross and Red Crescent Societies", + "Red Crescent" + ], + "related_ids": [ + "3074" + ], + "broader_ids": [ + "2191" + ], + "geo_area_code": null + }, + { + "id": "3120", + "label": "contract of carriage", + "alt_labels": [ + "haulage contract" + ], + "related_ids": [ + "164" + ], + "broader_ids": [ + "2181" + ], + "geo_area_code": null + }, + { + "id": "3121", + "label": "company member", + "alt_labels": [ + "partner" + ], + "related_ids": [ + "4199" + ], + "broader_ids": [ + "4300" + ], + "geo_area_code": null + }, + { + "id": "3122", + "label": "composition", + "alt_labels": [ + "arrangement with creditors", + "court composition" + ], + "related_ids": [], + "broader_ids": [ + "5374" + ], + "geo_area_code": null + }, + { + "id": "3123", + "label": "trade regulations", + "alt_labels": [ + "business regulations" + ], + "related_ids": [ + "1423" + ], + "broader_ids": [ + "2449" + ], + "geo_area_code": null + }, + { + "id": "3124", + "label": "town-planning regulations", + "alt_labels": [ + "town-planning law" + ], + "related_ids": [ + "2327", + "3134", + "5079" + ], + "broader_ids": [ + "4619" + ], + "geo_area_code": null + }, + { + "id": "3125", + "label": "airline", + "alt_labels": [ + "air connection" + ], + "related_ids": [], + "broader_ids": [ + "4505" + ], + "geo_area_code": null + }, + { + "id": "3127", + "label": "road traffic", + "alt_labels": [], + "related_ids": [ + "3107", + "4162", + "5429", + "6020" + ], + "broader_ids": [ + "4533" + ], + "geo_area_code": null + }, + { + "id": "3128", + "label": "hunting regulations", + "alt_labels": [ + "hunting permit", + "hunting season", + "selective hunting" + ], + "related_ids": [ + "5396", + "5722" + ], + "broader_ids": [ + "2826" + ], + "geo_area_code": null + }, + { + "id": "3129", + "label": "shipping policy", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4522" + ], + "geo_area_code": null + }, + { + "id": "313", + "label": "crustacean", + "alt_labels": [ + "crab", + "crawfish", + "crayfish", + "lobster", + "prawn", + "shrimp" + ], + "related_ids": [ + "714" + ], + "broader_ids": [ + "3544" + ], + "geo_area_code": null + }, + { + "id": "3130", + "label": "maritime conference", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4522" + ], + "geo_area_code": null + }, + { + "id": "3131", + "label": "traffic regulations", + "alt_labels": [], + "related_ids": [ + "6849" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "3132", + "label": "dumping of waste", + "alt_labels": [], + "related_ids": [ + "2535" + ], + "broader_ids": [ + "718" + ], + "geo_area_code": null + }, + { + "id": "3133", + "label": "storage of waste", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1158" + ], + "geo_area_code": null + }, + { + "id": "3134", + "label": "building regulations", + "alt_labels": [ + "building legislation", + "building standard" + ], + "related_ids": [ + "3124", + "3641", + "c_6c8b04b9" + ], + "broader_ids": [ + "2475" + ], + "geo_area_code": null + }, + { + "id": "3135", + "label": "toxic substance", + "alt_labels": [ + "dioxin", + "harmful substance", + "toxic discharge", + "toxic product", + "toxic waste", + "toxicity" + ], + "related_ids": [ + "2357", + "2785", + "3813", + "4036", + "4291", + "4474", + "5689" + ], + "broader_ids": [ + "4308" + ], + "geo_area_code": null + }, + { + "id": "3136", + "label": "non-polluting vehicle", + "alt_labels": [], + "related_ids": [ + "1140", + "2015", + "3777" + ], + "broader_ids": [ + "1707" + ], + "geo_area_code": null + }, + { + "id": "3137", + "label": "exploitation of the sea-bed", + "alt_labels": [], + "related_ids": [ + "1050", + "3687" + ], + "broader_ids": [ + "941" + ], + "geo_area_code": null + }, + { + "id": "3138", + "label": "replacement of resources", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1160" + ], + "geo_area_code": null + }, + { + "id": "3139", + "label": "environmental impact", + "alt_labels": [ + "eco-balance", + "ecological assessment", + "ecological balance sheet", + "effect on the environment", + "environmental assessment", + "environmental effect", + "environmental footprint" + ], + "related_ids": [ + "3085" + ], + "broader_ids": [ + "2470" + ], + "geo_area_code": null + }, + { + "id": "314", + "label": "Cuba", + "alt_labels": [ + "Republic of Cuba" + ], + "related_ids": [ + "c_acf7832d" + ], + "broader_ids": [ + "1105", + "1180", + "2119", + "4069", + "5083", + "5087" + ], + "geo_area_code": "CUB" + }, + { + "id": "3140", + "label": "environmental monitoring", + "alt_labels": [ + "environmental inspection", + "environmental surveillance", + "environmental watch", + "monitoring of pollution" + ], + "related_ids": [ + "2524", + "5310" + ], + "broader_ids": [ + "2470" + ], + "geo_area_code": null + }, + { + "id": "3141", + "label": "seismic monitoring", + "alt_labels": [], + "related_ids": [ + "4176", + "5890" + ], + "broader_ids": [ + "2825" + ], + "geo_area_code": null + }, + { + "id": "3142", + "label": "coastal protection", + "alt_labels": [ + "coastal area management", + "coastal management", + "coastal zone management", + "shore protection" + ], + "related_ids": [ + "1683", + "2532", + "3158" + ], + "broader_ids": [ + "2825" + ], + "geo_area_code": null + }, + { + "id": "3143", + "label": "speed control", + "alt_labels": [ + "maximum speed", + "minimum speed", + "speed limit", + "tachograph" + ], + "related_ids": [], + "broader_ids": [ + "3131" + ], + "geo_area_code": null + }, + { + "id": "3144", + "label": "water management", + "alt_labels": [], + "related_ids": [ + "2530", + "3535", + "6398" + ], + "broader_ids": [ + "c_98d1408a" + ], + "geo_area_code": null + }, + { + "id": "3145", + "label": "control of restrictive practices", + "alt_labels": [ + "action against monopolies", + "action against restrictive practices" + ], + "related_ids": [ + "1592", + "802" + ], + "broader_ids": [ + "539" + ], + "geo_area_code": null + }, + { + "id": "3146", + "label": "geophysical environment", + "alt_labels": [], + "related_ids": [ + "6390" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "3147", + "label": "stagnant water", + "alt_labels": [ + "marsh", + "pond" + ], + "related_ids": [], + "broader_ids": [ + "597" + ], + "geo_area_code": null + }, + { + "id": "3148", + "label": "regulation of investments", + "alt_labels": [ + "notification of investment" + ], + "related_ids": [ + "560" + ], + "broader_ids": [ + "2463" + ], + "geo_area_code": null + }, + { + "id": "3149", + "label": "marine life", + "alt_labels": [ + "marine fauna", + "marine flora" + ], + "related_ids": [ + "5742" + ], + "broader_ids": [ + "3150" + ], + "geo_area_code": null + }, + { + "id": "315", + "label": "leather", + "alt_labels": [ + "leather article", + "leather product" + ], + "related_ids": [], + "broader_ids": [ + "1388" + ], + "geo_area_code": null + }, + { + "id": "3150", + "label": "wildlife", + "alt_labels": [], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "3151", + "label": "insurance", + "alt_labels": [], + "related_ids": [ + "3497", + "4695", + "6904", + "c_6fb74d78", + "c_f5ed5adb" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "3152", + "label": "price regulations", + "alt_labels": [ + "controlled price" + ], + "related_ids": [], + "broader_ids": [ + "2489" + ], + "geo_area_code": null + }, + { + "id": "3153", + "label": "plant resources", + "alt_labels": [], + "related_ids": [ + "2827", + "5463" + ], + "broader_ids": [ + "3549" + ], + "geo_area_code": null + }, + { + "id": "3154", + "label": "estuary", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3146" + ], + "geo_area_code": null + }, + { + "id": "3155", + "label": "agricultural disaster", + "alt_labels": [], + "related_ids": [ + "5225", + "6315" + ], + "broader_ids": [ + "413" + ], + "geo_area_code": null + }, + { + "id": "3156", + "label": "customs regulations", + "alt_labels": [ + "community customs code", + "customs legislation", + "customs treatment" + ], + "related_ids": [ + "5317", + "5545" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "3157", + "label": "defoliation", + "alt_labels": [], + "related_ids": [ + "2557", + "2987" + ], + "broader_ids": [ + "371" + ], + "geo_area_code": null + }, + { + "id": "3158", + "label": "erosion", + "alt_labels": [], + "related_ids": [ + "3142", + "3931" + ], + "broader_ids": [ + "413" + ], + "geo_area_code": null + }, + { + "id": "3159", + "label": "motor vehicle pollution", + "alt_labels": [], + "related_ids": [ + "1140", + "4261", + "6849" + ], + "broader_ids": [ + "2524" + ], + "geo_area_code": null + }, + { + "id": "316", + "label": "copper", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1885" + ], + "geo_area_code": null + }, + { + "id": "3160", + "label": "transport regulations", + "alt_labels": [], + "related_ids": [ + "3706" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "3161", + "label": "oil pollution", + "alt_labels": [ + "oil slick", + "oil spill" + ], + "related_ids": [ + "1274" + ], + "broader_ids": [ + "2524" + ], + "geo_area_code": null + }, + { + "id": "3162", + "label": "metal pollution", + "alt_labels": [ + "lead pollution", + "mercury pollution" + ], + "related_ids": [ + "1882" + ], + "broader_ids": [ + "2524" + ], + "geo_area_code": null + }, + { + "id": "3163", + "label": "pollution from ships", + "alt_labels": [ + "degassing", + "discharge into the sea" + ], + "related_ids": [ + "1274", + "4522", + "542" + ], + "broader_ids": [ + "2524" + ], + "geo_area_code": null + }, + { + "id": "3164", + "label": "industrial pollution", + "alt_labels": [], + "related_ids": [ + "3067", + "345", + "4076", + "5782", + "6914" + ], + "broader_ids": [ + "2524" + ], + "geo_area_code": null + }, + { + "id": "3165", + "label": "market stabilisation", + "alt_labels": [ + "improvement of market conditions", + "market regularisation", + "market regularization", + "market stabilization", + "stabilisation of prices", + "stabilization of prices" + ], + "related_ids": [ + "2443", + "2938", + "4248", + "4250" + ], + "broader_ids": [ + "2449" + ], + "geo_area_code": null + }, + { + "id": "3166", + "label": "export levy", + "alt_labels": [], + "related_ids": [ + "4399" + ], + "broader_ids": [ + "2487" + ], + "geo_area_code": null + }, + { + "id": "3167", + "label": "import levy", + "alt_labels": [], + "related_ids": [ + "2591" + ], + "broader_ids": [ + "2488" + ], + "geo_area_code": null + }, + { + "id": "3168", + "label": "birth control", + "alt_labels": [], + "related_ids": [ + "2029", + "2480" + ], + "broader_ids": [ + "2398" + ], + "geo_area_code": null + }, + { + "id": "3169", + "label": "illicit trade", + "alt_labels": [ + "black market", + "clandestine trade", + "contraband", + "fraudulent trade", + "smuggling" + ], + "related_ids": [ + "1092", + "167", + "3355", + "442884", + "5512", + "5513", + "574", + "661", + "7", + "c_65467c72", + "c_db56b1e0" + ], + "broader_ids": [ + "3123" + ], + "geo_area_code": null + }, + { + "id": "317", + "label": "culture", + "alt_labels": [], + "related_ids": [ + "1364", + "1370", + "2059", + "6387", + "892" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "3170", + "label": "intervention agency", + "alt_labels": [], + "related_ids": [ + "2442" + ], + "broader_ids": [ + "2449" + ], + "geo_area_code": null + }, + { + "id": "3172", + "label": "regulation of transactions", + "alt_labels": [], + "related_ids": [ + "4491", + "4671" + ], + "broader_ids": [ + "2449" + ], + "geo_area_code": null + }, + { + "id": "3173", + "label": "designation of origin", + "alt_labels": [ + "PDO", + "PGI", + "certificate of designation of origin", + "protected designation of origin", + "protected geographical indication", + "registered designation of origin" + ], + "related_ids": [ + "2817", + "2871", + "4717", + "5573" + ], + "broader_ids": [ + "13" + ], + "geo_area_code": null + }, + { + "id": "3174", + "label": "customs procedure suspending duties", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5842" + ], + "geo_area_code": null + }, + { + "id": "3175", + "label": "re-import", + "alt_labels": [], + "related_ids": [ + "2322" + ], + "broader_ids": [ + "1309" + ], + "geo_area_code": null + }, + { + "id": "3176", + "label": "customs drawback", + "alt_labels": [ + "remission of customs duties" + ], + "related_ids": [ + "3267" + ], + "broader_ids": [ + "2519" + ], + "geo_area_code": null + }, + { + "id": "3177", + "label": "re-integration into school", + "alt_labels": [], + "related_ids": [ + "682" + ], + "broader_ids": [ + "4554" + ], + "geo_area_code": null + }, + { + "id": "3178", + "label": "customs territory (EU)", + "alt_labels": [ + "EC customs territory", + "customs territory of the EEC" + ], + "related_ids": [], + "broader_ids": [ + "2520" + ], + "geo_area_code": null + }, + { + "id": "3179", + "label": "social rehabilitation", + "alt_labels": [], + "related_ids": [ + "374" + ], + "broader_ids": [ + "2517" + ], + "geo_area_code": null + }, + { + "id": "318", + "label": "cereal-growing", + "alt_labels": [ + "cereal production" + ], + "related_ids": [ + "5360" + ], + "broader_ids": [ + "2723" + ], + "geo_area_code": null + }, + { + "id": "3180", + "label": "single document", + "alt_labels": [ + "SAD", + "single administrative document", + "single customs document" + ], + "related_ids": [], + "broader_ids": [ + "491" + ], + "geo_area_code": null + }, + { + "id": "3181", + "label": "simplification of formalities", + "alt_labels": [ + "reduction of formalities", + "simplification of customs checks" + ], + "related_ids": [], + "broader_ids": [ + "1069" + ], + "geo_area_code": null + }, + { + "id": "3182", + "label": "rejection of the budget", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2698" + ], + "geo_area_code": null + }, + { + "id": "3183", + "label": "specification of tariff heading", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2069" + ], + "geo_area_code": null + }, + { + "id": "3185", + "label": "trade relations", + "alt_labels": [], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "3186", + "label": "financial agreement", + "alt_labels": [], + "related_ids": [ + "211" + ], + "broader_ids": [ + "1016" + ], + "geo_area_code": null + }, + { + "id": "3187", + "label": "export credit insurance", + "alt_labels": [ + "export credit guarantee" + ], + "related_ids": [ + "946" + ], + "broader_ids": [ + "3151" + ], + "geo_area_code": null + }, + { + "id": "3188", + "label": "thermal discharge", + "alt_labels": [], + "related_ids": [ + "2541", + "4042", + "757" + ], + "broader_ids": [ + "2090" + ], + "geo_area_code": null + }, + { + "id": "3189", + "label": "countertrade", + "alt_labels": [ + "three-way trade" + ], + "related_ids": [], + "broader_ids": [ + "614" + ], + "geo_area_code": null + }, + { + "id": "319", + "label": "terrace cropping", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4363" + ], + "geo_area_code": null + }, + { + "id": "3190", + "label": "export (EU)", + "alt_labels": [ + "Community export" + ], + "related_ids": [ + "3568" + ], + "broader_ids": [ + "946" + ], + "geo_area_code": null + }, + { + "id": "3191", + "label": "import (EU)", + "alt_labels": [ + "Community import" + ], + "related_ids": [], + "broader_ids": [ + "1309" + ], + "geo_area_code": null + }, + { + "id": "3193", + "label": "goods and services", + "alt_labels": [], + "related_ids": [ + "56", + "c_68ddcc11" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "3194", + "label": "reflation", + "alt_labels": [], + "related_ids": [ + "3400", + "5675" + ], + "broader_ids": [ + "2497" + ], + "geo_area_code": null + }, + { + "id": "3195", + "label": "intermediate goods", + "alt_labels": [ + "industrial goods" + ], + "related_ids": [ + "5147" + ], + "broader_ids": [ + "3193" + ], + "geo_area_code": null + }, + { + "id": "3196", + "label": "bilateral relations", + "alt_labels": [ + "bilateralism" + ], + "related_ids": [ + "216", + "3462", + "845", + "c_fd848a9f" + ], + "broader_ids": [ + "3474" + ], + "geo_area_code": null + }, + { + "id": "3197", + "label": "capital goods", + "alt_labels": [ + "fixed capital goods", + "investment goods", + "productive capital" + ], + "related_ids": [ + "846", + "850" + ], + "broader_ids": [ + "3193" + ], + "geo_area_code": null + }, + { + "id": "3198", + "label": "used goods", + "alt_labels": [ + "second-hand goods" + ], + "related_ids": [], + "broader_ids": [ + "3193" + ], + "geo_area_code": null + }, + { + "id": "3199", + "label": "integrated trade", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5" + ], + "geo_area_code": null + }, + { + "id": "32", + "label": "32 EDUCATION AND COMMUNICATIONS", + "alt_labels": [], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "320", + "label": "fodder-growing", + "alt_labels": [ + "forage-growing" + ], + "related_ids": [ + "1224", + "2412", + "4854", + "4857", + "5363" + ], + "broader_ids": [ + "2723" + ], + "geo_area_code": null + }, + { + "id": "3200", + "label": "cultural relations", + "alt_labels": [ + "cultural exchange" + ], + "related_ids": [ + "208", + "5122", + "671", + "898" + ], + "broader_ids": [ + "2459" + ], + "geo_area_code": null + }, + { + "id": "3201", + "label": "intermediate consumption", + "alt_labels": [ + "industrial consumption" + ], + "related_ids": [ + "4629" + ], + "broader_ids": [ + "139" + ], + "geo_area_code": null + }, + { + "id": "3202", + "label": "world consumption", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "139" + ], + "geo_area_code": null + }, + { + "id": "3204", + "label": "merchandising", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "13" + ], + "geo_area_code": null + }, + { + "id": "3205", + "label": "theory of marketing", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "13" + ], + "geo_area_code": null + }, + { + "id": "3206", + "label": "diplomatic relations", + "alt_labels": [ + "diplomacy", + "diplomatic recognition" + ], + "related_ids": [ + "8457" + ], + "broader_ids": [ + "3474" + ], + "geo_area_code": null + }, + { + "id": "3207", + "label": "trade event", + "alt_labels": [ + "fair", + "trade fair" + ], + "related_ids": [], + "broader_ids": [ + "13" + ], + "geo_area_code": null + }, + { + "id": "3208", + "label": "price net of tax", + "alt_labels": [], + "related_ids": [ + "4585", + "4672" + ], + "broader_ids": [ + "2632" + ], + "geo_area_code": null + }, + { + "id": "3209", + "label": "labour relations", + "alt_labels": [ + "employment relations", + "industrial relations", + "occupational relations", + "professional relations" + ], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "321", + "label": "South Africa", + "alt_labels": [ + "Ciskei", + "Republic of South Africa", + "South African Republic", + "Transkei" + ], + "related_ids": [], + "broader_ids": [ + "342", + "5083", + "c_964c9649" + ], + "geo_area_code": "ZAF" + }, + { + "id": "3210", + "label": "selling at a loss", + "alt_labels": [ + "loss leader", + "predatory pricing" + ], + "related_ids": [ + "2685" + ], + "broader_ids": [ + "4663" + ], + "geo_area_code": null + }, + { + "id": "3211", + "label": "self-service store", + "alt_labels": [], + "related_ids": [ + "5733" + ], + "broader_ids": [ + "5" + ], + "geo_area_code": null + }, + { + "id": "3212", + "label": "affiliated retailing", + "alt_labels": [ + "affiliated trade" + ], + "related_ids": [], + "broader_ids": [ + "5" + ], + "geo_area_code": null + }, + { + "id": "3213", + "label": "itinerant trade", + "alt_labels": [], + "related_ids": [ + "4665", + "4669" + ], + "broader_ids": [ + "5" + ], + "geo_area_code": null + }, + { + "id": "3214", + "label": "independent retailer", + "alt_labels": [ + "independent trade" + ], + "related_ids": [ + "821" + ], + "broader_ids": [ + "5" + ], + "geo_area_code": null + }, + { + "id": "3215", + "label": "chain store", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3199" + ], + "geo_area_code": null + }, + { + "id": "3216", + "label": "school-industry relations", + "alt_labels": [ + "education-industry relations", + "university-industry relations" + ], + "related_ids": [ + "3627" + ], + "broader_ids": [ + "4705" + ], + "geo_area_code": null + }, + { + "id": "3217", + "label": "wholesale trading centre", + "alt_labels": [ + "commercial market", + "covered market" + ], + "related_ids": [], + "broader_ids": [ + "6" + ], + "geo_area_code": null + }, + { + "id": "3218", + "label": "distributor", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "474" + ], + "geo_area_code": null + }, + { + "id": "3219", + "label": "economic relations", + "alt_labels": [ + "financial relations" + ], + "related_ids": [ + "1016", + "209", + "3239", + "4601", + "4812" + ], + "broader_ids": [ + "3474" + ], + "geo_area_code": null + }, + { + "id": "322", + "label": "fruit-growing", + "alt_labels": [ + "fruit production", + "fruit tree" + ], + "related_ids": [ + "1115", + "4674" + ], + "broader_ids": [ + "2723" + ], + "geo_area_code": null + }, + { + "id": "3220", + "label": "private-sector liquidity", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1825" + ], + "geo_area_code": null + }, + { + "id": "3221", + "label": "church-State relations", + "alt_labels": [], + "related_ids": [ + "3226" + ], + "broader_ids": [ + "2506" + ], + "geo_area_code": null + }, + { + "id": "3222", + "label": "personal accident insurance", + "alt_labels": [], + "related_ids": [ + "3249", + "3512", + "730" + ], + "broader_ids": [ + "3151" + ], + "geo_area_code": null + }, + { + "id": "3223", + "label": "East-West relations", + "alt_labels": [], + "related_ids": [ + "1214", + "2485", + "5495", + "6024", + "8" + ], + "broader_ids": [ + "3474" + ], + "geo_area_code": null + }, + { + "id": "3224", + "label": "inter-industrial relations", + "alt_labels": [ + "inter-industrial exchange", + "inter-market relations" + ], + "related_ids": [ + "213", + "215" + ], + "broader_ids": [ + "2507" + ], + "geo_area_code": null + }, + { + "id": "3225", + "label": "monetary crisis", + "alt_labels": [ + "currency crisis", + "financial crisis" + ], + "related_ids": [], + "broader_ids": [ + "1016" + ], + "geo_area_code": null + }, + { + "id": "3226", + "label": "interinstitutional relations", + "alt_labels": [], + "related_ids": [ + "3221", + "3232", + "3237", + "5854" + ], + "broader_ids": [ + "4179" + ], + "geo_area_code": null + }, + { + "id": "3227", + "label": "exchange restriction", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2486" + ], + "geo_area_code": null + }, + { + "id": "3228", + "label": "international relations", + "alt_labels": [], + "related_ids": [ + "11", + "216", + "2464", + "3450", + "435265" + ], + "broader_ids": [ + "3474" + ], + "geo_area_code": null + }, + { + "id": "3229", + "label": "free credit", + "alt_labels": [ + "interest-free credit" + ], + "related_ids": [ + "4664", + "5015" + ], + "broader_ids": [ + "285" + ], + "geo_area_code": null + }, + { + "id": "323", + "label": "agro-industrial cropping", + "alt_labels": [ + "industrial crop" + ], + "related_ids": [ + "2413", + "2417", + "636" + ], + "broader_ids": [ + "2723" + ], + "geo_area_code": null + }, + { + "id": "3230", + "label": "discount rate", + "alt_labels": [ + "discount interest rate", + "rate of discount" + ], + "related_ids": [], + "broader_ids": [ + "2495" + ], + "geo_area_code": null + }, + { + "id": "3231", + "label": "credit control", + "alt_labels": [ + "credit restriction", + "credit squeeze" + ], + "related_ids": [], + "broader_ids": [ + "2495" + ], + "geo_area_code": null + }, + { + "id": "3232", + "label": "interparliamentary relations", + "alt_labels": [], + "related_ids": [ + "3226" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "3233", + "label": "stock exchange", + "alt_labels": [ + "stock market" + ], + "related_ids": [], + "broader_ids": [ + "1804" + ], + "geo_area_code": null + }, + { + "id": "3234", + "label": "intra-EU relations", + "alt_labels": [ + "intra-Community relations", + "intra-European Union relations" + ], + "related_ids": [ + "4063" + ], + "broader_ids": [ + "5442" + ], + "geo_area_code": null + }, + { + "id": "3235", + "label": "outflow of capital", + "alt_labels": [ + "flight of capital" + ], + "related_ids": [ + "924" + ], + "broader_ids": [ + "2002" + ], + "geo_area_code": null + }, + { + "id": "3236", + "label": "transfer pricing", + "alt_labels": [], + "related_ids": [ + "828", + "924" + ], + "broader_ids": [ + "4493" + ], + "geo_area_code": null + }, + { + "id": "3237", + "label": "legislative-executive relations", + "alt_labels": [ + "executive-legislative", + "legislative-executive" + ], + "related_ids": [ + "1593", + "2584", + "2586", + "3226", + "4093" + ], + "broader_ids": [ + "4704" + ], + "geo_area_code": null + }, + { + "id": "3238", + "label": "very short-term financing", + "alt_labels": [ + "very short-term facility" + ], + "related_ids": [], + "broader_ids": [ + "1851" + ], + "geo_area_code": null + }, + { + "id": "3239", + "label": "monetary relations", + "alt_labels": [], + "related_ids": [ + "1799", + "2486", + "2510", + "3219", + "4812" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "324", + "label": "market gardening", + "alt_labels": [ + "market garden", + "market gardening production", + "production of fresh vegetables" + ], + "related_ids": [ + "1602", + "1608", + "2419", + "328" + ], + "broader_ids": [ + "2723" + ], + "geo_area_code": null + }, + { + "id": "3240", + "label": "corporate finance", + "alt_labels": [], + "related_ids": [ + "835" + ], + "broader_ids": [ + "2466" + ], + "geo_area_code": null + }, + { + "id": "3241", + "label": "multilateral relations", + "alt_labels": [ + "multilateralism" + ], + "related_ids": [ + "216", + "3463", + "949" + ], + "broader_ids": [ + "3474" + ], + "geo_area_code": null + }, + { + "id": "3242", + "label": "property insurance", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3151" + ], + "geo_area_code": null + }, + { + "id": "3243", + "label": "personal insurance", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3151" + ], + "geo_area_code": null + }, + { + "id": "3244", + "label": "co-insurance", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3151" + ], + "geo_area_code": null + }, + { + "id": "3245", + "label": "town-country relationship", + "alt_labels": [ + "rural relation", + "urban relation", + "urban/rural relations" + ], + "related_ids": [], + "broader_ids": [ + "3300" + ], + "geo_area_code": null + }, + { + "id": "3246", + "label": "credit institution", + "alt_labels": [ + "credit establishment" + ], + "related_ids": [ + "2495", + "285" + ], + "broader_ids": [ + "1452" + ], + "geo_area_code": null + }, + { + "id": "3247", + "label": "finance house", + "alt_labels": [ + "industrial bank" + ], + "related_ids": [ + "299" + ], + "broader_ids": [ + "4738" + ], + "geo_area_code": null + }, + { + "id": "3248", + "label": "electronic banking", + "alt_labels": [ + "ATM", + "HOBS", + "auto-bank", + "automatic teller machine", + "cash dispenser", + "home and office banking service", + "home banking", + "internet banking", + "online banking", + "self-service bank" + ], + "related_ids": [ + "1971", + "3026", + "6901", + "c_ab84e157" + ], + "broader_ids": [ + "2149" + ], + "geo_area_code": null + }, + { + "id": "3249", + "label": "occupational accident insurance", + "alt_labels": [ + "industrial accident insurance", + "industrial injuries scheme", + "work-related accident insurance" + ], + "related_ids": [ + "3222", + "825" + ], + "broader_ids": [ + "2605" + ], + "geo_area_code": null + }, + { + "id": "325", + "label": "permanent crop", + "alt_labels": [ + "perennial crop" + ], + "related_ids": [ + "568", + "6308" + ], + "broader_ids": [ + "4630" + ], + "geo_area_code": null + }, + { + "id": "3250", + "label": "human relations", + "alt_labels": [ + "interpersonal relations", + "social relations" + ], + "related_ids": [ + "2856", + "443345" + ], + "broader_ids": [ + "4706" + ], + "geo_area_code": null + }, + { + "id": "3251", + "label": "banking supervision", + "alt_labels": [], + "related_ids": [ + "c_047e5912", + "c_8f89faac", + "c_c565cff5" + ], + "broader_ids": [ + "2149" + ], + "geo_area_code": null + }, + { + "id": "3252", + "label": "bank charges", + "alt_labels": [], + "related_ids": [ + "5963" + ], + "broader_ids": [ + "2149" + ], + "geo_area_code": null + }, + { + "id": "3253", + "label": "budget appropriation", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "929" + ], + "geo_area_code": null + }, + { + "id": "3254", + "label": "general budget", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1018" + ], + "geo_area_code": null + }, + { + "id": "3255", + "label": "public relations", + "alt_labels": [], + "related_ids": [ + "1192", + "13", + "2152", + "2469", + "2862" + ], + "broader_ids": [ + "2473" + ], + "geo_area_code": null + }, + { + "id": "3256", + "label": "regional finances", + "alt_labels": [], + "related_ids": [ + "2515", + "5120" + ], + "broader_ids": [ + "1018" + ], + "geo_area_code": null + }, + { + "id": "3257", + "label": "religion", + "alt_labels": [], + "related_ids": [ + "1628", + "459", + "6554", + "6627", + "6862" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "3258", + "label": "financing of the EU budget", + "alt_labels": [ + "financing of the Community budget", + "financing of the EC budget", + "financing of the European Union budget", + "financing of the European Union's budget", + "financing of the budget of the European Union" + ], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "3259", + "label": "Member States' contribution", + "alt_labels": [ + "budget rebate", + "budgetary compensation", + "financial contribution" + ], + "related_ids": [], + "broader_ids": [ + "3258" + ], + "geo_area_code": null + }, + { + "id": "326", + "label": "popular culture", + "alt_labels": [], + "related_ids": [ + "2697" + ], + "broader_ids": [ + "317" + ], + "geo_area_code": null + }, + { + "id": "3260", + "label": "cabinet reshuffle", + "alt_labels": [], + "related_ids": [ + "1172" + ], + "broader_ids": [ + "309" + ], + "geo_area_code": null + }, + { + "id": "3261", + "label": "tax convention", + "alt_labels": [ + "international tax convention", + "taxation agreement", + "taxation convention", + "taxation treaty" + ], + "related_ids": [ + "3468" + ], + "broader_ids": [ + "2504" + ], + "geo_area_code": null + }, + { + "id": "3262", + "label": "tax inspection", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2504" + ], + "geo_area_code": null + }, + { + "id": "3263", + "label": "redemption", + "alt_labels": [ + "repayment terms" + ], + "related_ids": [], + "broader_ids": [ + "736" + ], + "geo_area_code": null + }, + { + "id": "3264", + "label": "special tax", + "alt_labels": [ + "anticyclical surcharge" + ], + "related_ids": [], + "broader_ids": [ + "1310" + ], + "geo_area_code": null + }, + { + "id": "3265", + "label": "reparcelling", + "alt_labels": [ + "land consolidation", + "regrouping of holding", + "regrouping of land" + ], + "related_ids": [ + "2237", + "5226", + "6311" + ], + "broader_ids": [ + "2493" + ], + "geo_area_code": null + }, + { + "id": "3266", + "label": "bracket rate", + "alt_labels": [], + "related_ids": [ + "2633" + ], + "broader_ids": [ + "4379" + ], + "geo_area_code": null + }, + { + "id": "3267", + "label": "remission of export duties", + "alt_labels": [], + "related_ids": [ + "3176" + ], + "broader_ids": [ + "1010" + ], + "geo_area_code": null + }, + { + "id": "3268", + "label": "unit price", + "alt_labels": [], + "related_ids": [ + "4666" + ], + "broader_ids": [ + "2632" + ], + "geo_area_code": null + }, + { + "id": "3269", + "label": "support tariff", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4379" + ], + "geo_area_code": null + }, + { + "id": "327", + "label": "hydroponics", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4363" + ], + "geo_area_code": null + }, + { + "id": "3270", + "label": "mixed price", + "alt_labels": [], + "related_ids": [ + "4314" + ], + "broader_ids": [ + "2639" + ], + "geo_area_code": null + }, + { + "id": "3271", + "label": "import substitution", + "alt_labels": [ + "replacement of imports" + ], + "related_ids": [], + "broader_ids": [ + "2488" + ], + "geo_area_code": null + }, + { + "id": "3272", + "label": "price of agricultural produce", + "alt_labels": [], + "related_ids": [ + "2639", + "2734" + ], + "broader_ids": [ + "2656" + ], + "geo_area_code": null + }, + { + "id": "3273", + "label": "remuneration of work", + "alt_labels": [ + "income derived from work" + ], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "3274", + "label": "agricultural insurance", + "alt_labels": [], + "related_ids": [ + "6315" + ], + "broader_ids": [ + "3151" + ], + "geo_area_code": null + }, + { + "id": "3275", + "label": "crop yield", + "alt_labels": [ + "agricultural yield", + "yield per hectare" + ], + "related_ids": [ + "636" + ], + "broader_ids": [ + "2725" + ], + "geo_area_code": null + }, + { + "id": "3276", + "label": "civics", + "alt_labels": [], + "related_ids": [ + "6397" + ], + "broader_ids": [ + "784" + ], + "geo_area_code": null + }, + { + "id": "3277", + "label": "commercial education", + "alt_labels": [ + "commercial training" + ], + "related_ids": [ + "2786" + ], + "broader_ids": [ + "795" + ], + "geo_area_code": null + }, + { + "id": "3278", + "label": "teaching materials", + "alt_labels": [ + "educational materials", + "school materials", + "teaching aid" + ], + "related_ids": [ + "4357", + "6769" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "3279", + "label": "teaching software", + "alt_labels": [], + "related_ids": [ + "781" + ], + "broader_ids": [ + "3278" + ], + "geo_area_code": null + }, + { + "id": "328", + "label": "glasshouse cultivation", + "alt_labels": [ + "crops under glass", + "glasshouse crops", + "greenhouse crops" + ], + "related_ids": [ + "1260", + "324" + ], + "broader_ids": [ + "4363" + ], + "geo_area_code": null + }, + { + "id": "3280", + "label": "school-working life relations", + "alt_labels": [ + "education-working life relations", + "university-working life relations" + ], + "related_ids": [], + "broader_ids": [ + "4705" + ], + "geo_area_code": null + }, + { + "id": "3281", + "label": "urban renewal", + "alt_labels": [ + "urban reconstruction", + "urban regeneration", + "urban rehabilitation", + "urban revitalisation", + "urban revitalization" + ], + "related_ids": [ + "1456" + ], + "broader_ids": [ + "4619" + ], + "geo_area_code": null + }, + { + "id": "3282", + "label": "neurobiology", + "alt_labels": [], + "related_ids": [ + "3285", + "5719" + ], + "broader_ids": [ + "4921" + ], + "geo_area_code": null + }, + { + "id": "3283", + "label": "profitability", + "alt_labels": [], + "related_ids": [ + "45" + ], + "broader_ids": [ + "1721" + ], + "geo_area_code": null + }, + { + "id": "3284", + "label": "gynaecology", + "alt_labels": [ + "obstetrics" + ], + "related_ids": [ + "3597", + "5159" + ], + "broader_ids": [ + "5902" + ], + "geo_area_code": null + }, + { + "id": "3285", + "label": "neurology", + "alt_labels": [], + "related_ids": [ + "3282", + "5719" + ], + "broader_ids": [ + "5902" + ], + "geo_area_code": null + }, + { + "id": "3286", + "label": "paediatrics", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5902" + ], + "geo_area_code": null + }, + { + "id": "3287", + "label": "dental medicine", + "alt_labels": [ + "dental care" + ], + "related_ids": [ + "3593" + ], + "broader_ids": [ + "5902" + ], + "geo_area_code": null + }, + { + "id": "3288", + "label": "first aid", + "alt_labels": [], + "related_ids": [ + "3076", + "412", + "413", + "6741", + "730" + ], + "broader_ids": [ + "5764" + ], + "geo_area_code": null + }, + { + "id": "3289", + "label": "alternative medicine", + "alt_labels": [ + "acupuncture", + "homeopathy" + ], + "related_ids": [ + "2950", + "5818", + "5821" + ], + "broader_ids": [ + "1852" + ], + "geo_area_code": null + }, + { + "id": "329", + "label": "tropical agriculture", + "alt_labels": [ + "tropical crops" + ], + "related_ids": [ + "1120", + "2418" + ], + "broader_ids": [ + "2723" + ], + "geo_area_code": null + }, + { + "id": "3290", + "label": "industrial reorganisation", + "alt_labels": [ + "industrial renovation", + "industrial reorganization" + ], + "related_ids": [ + "5383" + ], + "broader_ids": [ + "2507" + ], + "geo_area_code": null + }, + { + "id": "3291", + "label": "acoustics", + "alt_labels": [], + "related_ids": [ + "5048" + ], + "broader_ids": [ + "3946" + ], + "geo_area_code": null + }, + { + "id": "3292", + "label": "optics", + "alt_labels": [], + "related_ids": [ + "1413" + ], + "broader_ids": [ + "3946" + ], + "geo_area_code": null + }, + { + "id": "3293", + "label": "cybernetics", + "alt_labels": [], + "related_ids": [ + "3026", + "3030", + "3740", + "6267" + ], + "broader_ids": [ + "3949" + ], + "geo_area_code": null + }, + { + "id": "3294", + "label": "petrology", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1151" + ], + "geo_area_code": null + }, + { + "id": "3295", + "label": "distribution of aid", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3003" + ], + "geo_area_code": null + }, + { + "id": "3296", + "label": "religious sect", + "alt_labels": [ + "esoterism" + ], + "related_ids": [], + "broader_ids": [ + "3257" + ], + "geo_area_code": null + }, + { + "id": "3297", + "label": "theology", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3257" + ], + "geo_area_code": null + }, + { + "id": "3298", + "label": "distribution of the tax burden", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2504" + ], + "geo_area_code": null + }, + { + "id": "3299", + "label": "single market", + "alt_labels": [ + "Community internal market", + "EC internal market", + "EU single market" + ], + "related_ids": [ + "1630", + "1631", + "1633", + "1634", + "1638", + "1792", + "1795", + "1806" + ], + "broader_ids": [ + "5442" + ], + "geo_area_code": null + }, + { + "id": "33", + "label": "Comoros", + "alt_labels": [ + "Union of the Comoros" + ], + "related_ids": [], + "broader_ids": [ + "1658", + "357", + "5083", + "c_b2c019c8" + ], + "geo_area_code": "COM" + }, + { + "id": "330", + "label": "self-sufficiency farming", + "alt_labels": [], + "related_ids": [ + "2710" + ], + "broader_ids": [ + "2723" + ], + "geo_area_code": null + }, + { + "id": "3300", + "label": "geographical distribution of the population", + "alt_labels": [], + "related_ids": [ + "3326", + "6388", + "6540" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "3301", + "label": "one-parent family", + "alt_labels": [], + "related_ids": [ + "2238" + ], + "broader_ids": [ + "965" + ], + "geo_area_code": null + }, + { + "id": "3302", + "label": "adopted child", + "alt_labels": [], + "related_ids": [ + "117" + ], + "broader_ids": [ + "2239" + ], + "geo_area_code": null + }, + { + "id": "3303", + "label": "motor vehicle insurance", + "alt_labels": [ + "comprehensive insurance" + ], + "related_ids": [ + "4533" + ], + "broader_ids": [ + "3706" + ], + "geo_area_code": null + }, + { + "id": "3304", + "label": "distribution of production", + "alt_labels": [], + "related_ids": [ + "3634" + ], + "broader_ids": [ + "2481" + ], + "geo_area_code": null + }, + { + "id": "3305", + "label": "family protection", + "alt_labels": [], + "related_ids": [ + "2843", + "c_2c8a75b1" + ], + "broader_ids": [ + "2501" + ], + "geo_area_code": null + }, + { + "id": "3306", + "label": "market-sharing agreement", + "alt_labels": [], + "related_ids": [ + "2182" + ], + "broader_ids": [ + "803" + ], + "geo_area_code": null + }, + { + "id": "3307", + "label": "artificial reproduction", + "alt_labels": [ + "artificial fertilisation", + "artificial fertilization", + "artificial human reproduction", + "artificial reproductive techniques", + "assisted fertilisation", + "assisted fertilization", + "assisted human reproduction", + "egg donation", + "embryo donation", + "infertility treatment", + "sperm bank", + "sperm donation", + "sperm donor" + ], + "related_ids": [ + "3308", + "3314", + "5169", + "5512", + "c_5db9ac34" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "3308", + "label": "artificial insemination", + "alt_labels": [ + "animal insemination", + "bovine insemination", + "caprine insemination", + "insemination of animals", + "insemination of cattle", + "insemination of goats", + "insemination of pigs", + "insemination of sheep", + "ovine insemination", + "porcine insemination" + ], + "related_ids": [ + "3307" + ], + "broader_ids": [ + "3408" + ], + "geo_area_code": null + }, + { + "id": "3309", + "label": "test tube fertilisation", + "alt_labels": [ + "egg cell donation", + "oocyte donation", + "test tube fertilization" + ], + "related_ids": [], + "broader_ids": [ + "3307" + ], + "geo_area_code": null + }, + { + "id": "331", + "label": "cumulative pension entitlement", + "alt_labels": [ + "overlapping pension entitlement" + ], + "related_ids": [ + "5564" + ], + "broader_ids": [ + "3751" + ], + "geo_area_code": null + }, + { + "id": "3310", + "label": "distribution of wealth", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3319" + ], + "geo_area_code": null + }, + { + "id": "3311", + "label": "surrogate mother", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3307" + ], + "geo_area_code": null + }, + { + "id": "3312", + "label": "parental authority", + "alt_labels": [ + "divestment of parental responsibility", + "forfeiture of parental rights" + ], + "related_ids": [ + "3916" + ], + "broader_ids": [ + "540" + ], + "geo_area_code": null + }, + { + "id": "3313", + "label": "allocation of seats", + "alt_labels": [ + "D'Hondt method", + "Hagenbach-Bischoff method", + "Imperiali method", + "distribution of seats" + ], + "related_ids": [ + "1953" + ], + "broader_ids": [ + "4157" + ], + "geo_area_code": null + }, + { + "id": "3314", + "label": "descendant", + "alt_labels": [ + "biological paternity", + "legitimate descendant", + "natural descendant" + ], + "related_ids": [ + "2034", + "2239", + "3307" + ], + "broader_ids": [ + "540" + ], + "geo_area_code": null + }, + { + "id": "3315", + "label": "surname", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "540" + ], + "geo_area_code": null + }, + { + "id": "3316", + "label": "parental responsibility", + "alt_labels": [], + "related_ids": [ + "8480" + ], + "broader_ids": [ + "540" + ], + "geo_area_code": null + }, + { + "id": "3317", + "label": "judicial separation", + "alt_labels": [ + "family separation", + "legal separation", + "separation of property" + ], + "related_ids": [ + "2339" + ], + "broader_ids": [ + "540" + ], + "geo_area_code": null + }, + { + "id": "3318", + "label": "population dynamics", + "alt_labels": [ + "population change", + "population movement", + "population trends" + ], + "related_ids": [ + "1773" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "3319", + "label": "distribution of income", + "alt_labels": [ + "allocation of income" + ], + "related_ids": [], + "broader_ids": [ + "3659" + ], + "geo_area_code": null + }, + { + "id": "332", + "label": "French-speaking Africa", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "281" + ], + "geo_area_code": null + }, + { + "id": "3320", + "label": "migrant", + "alt_labels": [ + "emigrant", + "immigrant" + ], + "related_ids": [ + "4562", + "6344", + "c_f7430876" + ], + "broader_ids": [ + "1909" + ], + "geo_area_code": null + }, + { + "id": "3321", + "label": "allocation of work", + "alt_labels": [ + "allocation of tasks", + "division of labour" + ], + "related_ids": [], + "broader_ids": [ + "896" + ], + "geo_area_code": null + }, + { + "id": "3322", + "label": "migration for settlement purposes", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1909" + ], + "geo_area_code": null + }, + { + "id": "3323", + "label": "repatriation grant", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2509" + ], + "geo_area_code": null + }, + { + "id": "3324", + "label": "population ageing", + "alt_labels": [ + "ageing of the population", + "demographic ageing" + ], + "related_ids": [ + "2333", + "c_c6be3d6d" + ], + "broader_ids": [ + "3318" + ], + "geo_area_code": null + }, + { + "id": "3325", + "label": "job mobility", + "alt_labels": [ + "occupational mobility" + ], + "related_ids": [ + "1951", + "6356" + ], + "broader_ids": [ + "1802" + ], + "geo_area_code": null + }, + { + "id": "3326", + "label": "geographical distribution", + "alt_labels": [], + "related_ids": [ + "1685", + "1686", + "1948", + "3300", + "3624", + "385", + "5266" + ], + "broader_ids": [ + "4256" + ], + "geo_area_code": null + }, + { + "id": "3327", + "label": "distribution by age", + "alt_labels": [ + "age class", + "age group", + "age pyramid" + ], + "related_ids": [ + "3328", + "4259" + ], + "broader_ids": [ + "52" + ], + "geo_area_code": null + }, + { + "id": "3328", + "label": "per capita distribution", + "alt_labels": [], + "related_ids": [ + "3327", + "3337" + ], + "broader_ids": [ + "56" + ], + "geo_area_code": null + }, + { + "id": "3329", + "label": "honour", + "alt_labels": [ + "European medal", + "Nobel Prize", + "Sakharov Prize", + "award", + "decoration", + "medal", + "prize for excellence" + ], + "related_ids": [], + "broader_ids": [ + "4706" + ], + "geo_area_code": null + }, + { + "id": "333", + "label": "Cura\u00e7ao", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2042", + "2287" + ], + "geo_area_code": "CUW" + }, + { + "id": "3330", + "label": "voluntary work", + "alt_labels": [ + "charitable work" + ], + "related_ids": [ + "3445", + "3525", + "c_50620749" + ], + "broader_ids": [ + "4702" + ], + "geo_area_code": null + }, + { + "id": "3331", + "label": "voluntary organisation", + "alt_labels": [ + "charitable organisation", + "voluntary organization" + ], + "related_ids": [ + "2191", + "3525", + "4204", + "500", + "5125", + "969" + ], + "broader_ids": [ + "4702" + ], + "geo_area_code": null + }, + { + "id": "3332", + "label": "unemployment insurance", + "alt_labels": [ + "unemployment benefit" + ], + "related_ids": [ + "5974", + "5986" + ], + "broader_ids": [ + "2605" + ], + "geo_area_code": null + }, + { + "id": "3333", + "label": "distribution per employed person", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "56" + ], + "geo_area_code": null + }, + { + "id": "3334", + "label": "gaming", + "alt_labels": [ + "betting", + "football pools", + "gambling" + ], + "related_ids": [ + "1391", + "1705", + "442958" + ], + "broader_ids": [ + "1700" + ], + "geo_area_code": null + }, + { + "id": "3335", + "label": "gaming establishment", + "alt_labels": [ + "betting shop", + "casino", + "gambling casino", + "gambling house", + "gaming house" + ], + "related_ids": [], + "broader_ids": [ + "3334" + ], + "geo_area_code": null + }, + { + "id": "3336", + "label": "automatic game", + "alt_labels": [ + "automatic gaming machine", + "gambling machine", + "gaming machine", + "one-armed bandit", + "slot machine" + ], + "related_ids": [ + "1401" + ], + "broader_ids": [ + "3334" + ], + "geo_area_code": null + }, + { + "id": "3337", + "label": "distribution by sex", + "alt_labels": [], + "related_ids": [ + "3328" + ], + "broader_ids": [ + "52" + ], + "geo_area_code": null + }, + { + "id": "3338", + "label": "sport fishing", + "alt_labels": [ + "amateur fishing", + "competitive fishing", + "hobby fishing" + ], + "related_ids": [ + "2305" + ], + "broader_ids": [ + "4245" + ], + "geo_area_code": null + }, + { + "id": "3339", + "label": "tourist exchange", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4470" + ], + "geo_area_code": null + }, + { + "id": "3340", + "label": "foreign tourism", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4470" + ], + "geo_area_code": null + }, + { + "id": "3341", + "label": "rural tourism", + "alt_labels": [ + "agritourism", + "farm holidays" + ], + "related_ids": [ + "937" + ], + "broader_ids": [ + "4470" + ], + "geo_area_code": null + }, + { + "id": "3342", + "label": "directory", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4168" + ], + "geo_area_code": null + }, + { + "id": "3343", + "label": "tourist infrastructure", + "alt_labels": [ + "tourist facilities" + ], + "related_ids": [ + "5673" + ], + "broader_ids": [ + "4470" + ], + "geo_area_code": null + }, + { + "id": "3344", + "label": "social budget", + "alt_labels": [], + "related_ids": [ + "273" + ], + "broader_ids": [ + "2517" + ], + "geo_area_code": null + }, + { + "id": "3345", + "label": "replanting", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2410" + ], + "geo_area_code": null + }, + { + "id": "3346", + "label": "European social policy", + "alt_labels": [], + "related_ids": [ + "2451", + "4056", + "5629", + "7930" + ], + "broader_ids": [ + "2517" + ], + "geo_area_code": null + }, + { + "id": "3347", + "label": "prevention of delinquency", + "alt_labels": [ + "fight against delinquency" + ], + "related_ids": [ + "374" + ], + "broader_ids": [ + "2517" + ], + "geo_area_code": null + }, + { + "id": "3348", + "label": "crime", + "alt_labels": [ + "criminality" + ], + "related_ids": [ + "1708", + "2383", + "245", + "307", + "3945", + "4045", + "4742", + "5142", + "8383", + "8449" + ], + "broader_ids": [ + "2690" + ], + "geo_area_code": null + }, + { + "id": "3349", + "label": "physically disabled person\n", + "alt_labels": [ + "blind person", + "deaf person", + "person with a physical disability\n", + "physically-handicapped person" + ], + "related_ids": [ + "c_b8e8e06e" + ], + "broader_ids": [ + "1231" + ], + "geo_area_code": null + }, + { + "id": "335", + "label": "economic cycle", + "alt_labels": [], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "3350", + "label": "carry-over of appropriations", + "alt_labels": [ + "budget transfer" + ], + "related_ids": [], + "broader_ids": [ + "929" + ], + "geo_area_code": null + }, + { + "id": "3351", + "label": "mentally disabled person\n", + "alt_labels": [ + "mentally-ill person", + "person with a learning disability\n", + "person with an intellectual disability\n" + ], + "related_ids": [ + "1760" + ], + "broader_ids": [ + "1231" + ], + "geo_area_code": null + }, + { + "id": "3352", + "label": "homelessness", + "alt_labels": [ + "no fixed abode", + "vagrancy", + "without fixed abode" + ], + "related_ids": [ + "2281", + "3358", + "7411" + ], + "broader_ids": [ + "2690" + ], + "geo_area_code": null + }, + { + "id": "3353", + "label": "sexual mutilation", + "alt_labels": [ + "excision", + "female circumcision" + ], + "related_ids": [ + "7135" + ], + "broader_ids": [ + "2690" + ], + "geo_area_code": null + }, + { + "id": "3354", + "label": "weekly rest period", + "alt_labels": [ + "rest day" + ], + "related_ids": [], + "broader_ids": [ + "4435" + ], + "geo_area_code": null + }, + { + "id": "3355", + "label": "drug traffic", + "alt_labels": [ + "drug trafficking", + "narcotics traffic" + ], + "related_ids": [ + "1708", + "3169", + "4475", + "5465" + ], + "broader_ids": [ + "1432" + ], + "geo_area_code": null + }, + { + "id": "3356", + "label": "general medicine", + "alt_labels": [], + "related_ids": [ + "464" + ], + "broader_ids": [ + "5902" + ], + "geo_area_code": null + }, + { + "id": "3357", + "label": "social assistance", + "alt_labels": [], + "related_ids": [ + "1131" + ], + "broader_ids": [ + "1004" + ], + "geo_area_code": null + }, + { + "id": "3358", + "label": "social facilities", + "alt_labels": [ + "day centre", + "hostel", + "nursing home", + "old people's home", + "retirement home" + ], + "related_ids": [ + "3352", + "847", + "851" + ], + "broader_ids": [ + "1004" + ], + "geo_area_code": null + }, + { + "id": "3359", + "label": "social security legislation", + "alt_labels": [ + "social security law" + ], + "related_ids": [ + "1547", + "580", + "c_9eb9cbaa" + ], + "broader_ids": [ + "4050" + ], + "geo_area_code": null + }, + { + "id": "336", + "label": "Denmark", + "alt_labels": [ + "Kingdom of Denmark" + ], + "related_ids": [ + "337" + ], + "broader_ids": [ + "122", + "130", + "2106", + "2200", + "5283", + "911" + ], + "geo_area_code": "DNK" + }, + { + "id": "3360", + "label": "social work", + "alt_labels": [], + "related_ids": [ + "4564" + ], + "broader_ids": [ + "1004" + ], + "geo_area_code": null + }, + { + "id": "3361", + "label": "home help", + "alt_labels": [], + "related_ids": [ + "2333", + "966" + ], + "broader_ids": [ + "1004" + ], + "geo_area_code": null + }, + { + "id": "3362", + "label": "supplementary pension", + "alt_labels": [ + "SERP" + ], + "related_ids": [ + "3623", + "5329", + "c_dd52c1e9" + ], + "broader_ids": [ + "3751" + ], + "geo_area_code": null + }, + { + "id": "3363", + "label": "union representative", + "alt_labels": [ + "trade union representative" + ], + "related_ids": [], + "broader_ids": [ + "3374" + ], + "geo_area_code": null + }, + { + "id": "3364", + "label": "health card", + "alt_labels": [], + "related_ids": [ + "1231", + "2333" + ], + "broader_ids": [ + "5764" + ], + "geo_area_code": null + }, + { + "id": "3365", + "label": "health expenditure", + "alt_labels": [ + "medical expenses", + "sickness expenses" + ], + "related_ids": [], + "broader_ids": [ + "2479" + ], + "geo_area_code": null + }, + { + "id": "3366", + "label": "hospital expenses", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3365" + ], + "geo_area_code": null + }, + { + "id": "3367", + "label": "diplomatic representation", + "alt_labels": [ + "diplomatic corps", + "diplomatic delegation", + "diplomatic mission", + "diplomatic service" + ], + "related_ids": [], + "broader_ids": [ + "3206" + ], + "geo_area_code": null + }, + { + "id": "3368", + "label": "hospitalisation", + "alt_labels": [ + "hospitalization", + "stay in hospital" + ], + "related_ids": [], + "broader_ids": [ + "5764" + ], + "geo_area_code": null + }, + { + "id": "3369", + "label": "home care", + "alt_labels": [ + "home nursing" + ], + "related_ids": [], + "broader_ids": [ + "5899" + ], + "geo_area_code": null + }, + { + "id": "337", + "label": "regions of Denmark", + "alt_labels": [], + "related_ids": [ + "1188", + "1294", + "336" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "3370", + "label": "patient's rights", + "alt_labels": [ + "dignity of patients", + "patient dignity", + "rights of patients", + "rights of the dying", + "sick person's rights" + ], + "related_ids": [ + "4000", + "538", + "c_60d3928d" + ], + "broader_ids": [ + "6565" + ], + "geo_area_code": null + }, + { + "id": "3371", + "label": "public hygiene", + "alt_labels": [], + "related_ids": [ + "838", + "c_814bb9e4", + "c_abfaf2ea" + ], + "broader_ids": [ + "3885" + ], + "geo_area_code": null + }, + { + "id": "3372", + "label": "social medicine", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5921" + ], + "geo_area_code": null + }, + { + "id": "3373", + "label": "credit insurance", + "alt_labels": [], + "related_ids": [ + "1130" + ], + "broader_ids": [ + "3151" + ], + "geo_area_code": null + }, + { + "id": "3374", + "label": "workers' representation", + "alt_labels": [ + "staff representation" + ], + "related_ids": [], + "broader_ids": [ + "3209" + ], + "geo_area_code": null + }, + { + "id": "3375", + "label": "private medical treatment", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5921" + ], + "geo_area_code": null + }, + { + "id": "3376", + "label": "urban construction", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4619" + ], + "geo_area_code": null + }, + { + "id": "3377", + "label": "urban infrastructure", + "alt_labels": [ + "public utility", + "statutory undertaker" + ], + "related_ids": [ + "5673", + "c_d59e7560" + ], + "broader_ids": [ + "4619" + ], + "geo_area_code": null + }, + { + "id": "3378", + "label": "property market", + "alt_labels": [], + "related_ids": [ + "2815" + ], + "broader_ids": [ + "2475" + ], + "geo_area_code": null + }, + { + "id": "3379", + "label": "political representation", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4704" + ], + "geo_area_code": null + }, + { + "id": "338", + "label": "parliamentary debate", + "alt_labels": [ + "record of proceedings", + "report of proceedings", + "speaking time" + ], + "related_ids": [ + "8418" + ], + "broader_ids": [ + "3984" + ], + "geo_area_code": null + }, + { + "id": "3380", + "label": "rent regulations", + "alt_labels": [ + "rent control", + "rent freeze" + ], + "related_ids": [], + "broader_ids": [ + "556" + ], + "geo_area_code": null + }, + { + "id": "3381", + "label": "Isle of Man", + "alt_labels": [], + "related_ids": [ + "3780" + ], + "broader_ids": [ + "913" + ], + "geo_area_code": "IMN" + }, + { + "id": "3382", + "label": "Castile-Leon", + "alt_labels": [ + "Autonomous Community of Castile-Leon", + "Leon" + ], + "related_ids": [], + "broader_ids": [ + "864" + ], + "geo_area_code": null + }, + { + "id": "3383", + "label": "proportional representation", + "alt_labels": [], + "related_ids": [ + "2880" + ], + "broader_ids": [ + "1953" + ], + "geo_area_code": null + }, + { + "id": "3384", + "label": "Castile-La Mancha", + "alt_labels": [ + "Autonomous Community of Castile-La Mancha", + "La Mancha" + ], + "related_ids": [], + "broader_ids": [ + "864" + ], + "geo_area_code": null + }, + { + "id": "3385", + "label": "Cantabria", + "alt_labels": [ + "Autonomous Community of Cantabria" + ], + "related_ids": [], + "broader_ids": [ + "864" + ], + "geo_area_code": null + }, + { + "id": "3386", + "label": "Balearic Islands", + "alt_labels": [ + "Autonomous Community of the Balearic Islands" + ], + "related_ids": [], + "broader_ids": [ + "864" + ], + "geo_area_code": null + }, + { + "id": "3387", + "label": "Rioja", + "alt_labels": [ + "Autonomous Community of la Rioja" + ], + "related_ids": [], + "broader_ids": [ + "864" + ], + "geo_area_code": null + }, + { + "id": "3389", + "label": "repression", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2162" + ], + "geo_area_code": null + }, + { + "id": "339", + "label": "deforestation", + "alt_labels": [ + "felling of trees" + ], + "related_ids": [ + "370", + "5016" + ], + "broader_ids": [ + "371" + ], + "geo_area_code": null + }, + { + "id": "3390", + "label": "Community of Madrid", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "864" + ], + "geo_area_code": null + }, + { + "id": "3391", + "label": "Community of Valencia", + "alt_labels": [ + "Valencian Community" + ], + "related_ids": [], + "broader_ids": [ + "864" + ], + "geo_area_code": null + }, + { + "id": "3392", + "label": "Region of Murcia", + "alt_labels": [ + "Autonomous Community of the Region of Murcia" + ], + "related_ids": [], + "broader_ids": [ + "864" + ], + "geo_area_code": null + }, + { + "id": "3393", + "label": "Northern Portugal", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2564" + ], + "geo_area_code": null + }, + { + "id": "3394", + "label": "Central Portugal", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2564" + ], + "geo_area_code": null + }, + { + "id": "3395", + "label": "Lisbon and the Tagus Valley", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2564" + ], + "geo_area_code": null + }, + { + "id": "3396", + "label": "North East (England)", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5438" + ], + "geo_area_code": null + }, + { + "id": "3397", + "label": "North West (England)", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5438" + ], + "geo_area_code": null + }, + { + "id": "3398", + "label": "South East (England)", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5438" + ], + "geo_area_code": null + }, + { + "id": "3399", + "label": "South West (England)", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5438" + ], + "geo_area_code": null + }, + { + "id": "34", + "label": "insurance company", + "alt_labels": [ + "insurance enterprise", + "insurance firm", + "insurance undertaking" + ], + "related_ids": [ + "1452", + "8469" + ], + "broader_ids": [ + "3151" + ], + "geo_area_code": null + }, + { + "id": "340", + "label": "decentralisation", + "alt_labels": [ + "centralisation", + "decentralization" + ], + "related_ids": [ + "3096" + ], + "broader_ids": [ + "2166" + ], + "geo_area_code": null + }, + { + "id": "3400", + "label": "economic recovery", + "alt_labels": [], + "related_ids": [ + "2933", + "3194" + ], + "broader_ids": [ + "335" + ], + "geo_area_code": null + }, + { + "id": "3401", + "label": "Antigua and Barbuda", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2119", + "2362", + "5083", + "5265", + "c_b2c019c8" + ], + "geo_area_code": "ATG" + }, + { + "id": "3402", + "label": "Anguilla", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2024", + "3778" + ], + "geo_area_code": "AIA" + }, + { + "id": "3403", + "label": "Saint Kitts and Nevis", + "alt_labels": [ + "Federation of Saint Kitts and Nevis", + "Saint Christopher and Nevis" + ], + "related_ids": [], + "broader_ids": [ + "2119", + "2362", + "5083", + "5265", + "c_b2c019c8" + ], + "geo_area_code": "KNA" + }, + { + "id": "3404", + "label": "reprography", + "alt_labels": [ + "duplicating", + "duplication", + "photocopy", + "photocopying", + "reproduction of documents", + "reprographic reproduction" + ], + "related_ids": [ + "1079", + "1416", + "4425", + "529" + ], + "broader_ids": [ + "1422" + ], + "geo_area_code": null + }, + { + "id": "3405", + "label": "Saint Vincent and the Grenadines", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2119", + "2362", + "5083", + "5265", + "c_b2c019c8" + ], + "geo_area_code": "VCT" + }, + { + "id": "3406", + "label": "US Virgin Islands", + "alt_labels": [ + "Virgin Islands of the United States" + ], + "related_ids": [ + "888" + ], + "broader_ids": [ + "2362" + ], + "geo_area_code": "VIR" + }, + { + "id": "3407", + "label": "Great Maghreb", + "alt_labels": [], + "related_ids": [ + "8300" + ], + "broader_ids": [ + "311" + ], + "geo_area_code": null + }, + { + "id": "3408", + "label": "animal breeding", + "alt_labels": [ + "animal selection" + ], + "related_ids": [ + "1929", + "3409", + "3797", + "4111", + "6171" + ], + "broader_ids": [ + "711" + ], + "geo_area_code": null + }, + { + "id": "3409", + "label": "plant propagation", + "alt_labels": [ + "grafting", + "plant reproduction" + ], + "related_ids": [ + "3408", + "6296" + ], + "broader_ids": [ + "2723" + ], + "geo_area_code": null + }, + { + "id": "341", + "label": "budgetary discharge", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "929" + ], + "geo_area_code": null + }, + { + "id": "3410", + "label": "Marshall Islands", + "alt_labels": [ + "Republic of the Marshall Islands" + ], + "related_ids": [], + "broader_ids": [ + "1903", + "5083", + "8366", + "c_b2c019c8" + ], + "geo_area_code": "MHL" + }, + { + "id": "3411", + "label": "American Samoa", + "alt_labels": [ + "Territory of American Samoa" + ], + "related_ids": [ + "888" + ], + "broader_ids": [ + "2546", + "8366" + ], + "geo_area_code": "ASM" + }, + { + "id": "3412", + "label": "disability insurance", + "alt_labels": [ + "disability allowance", + "disability benefit", + "disability pension", + "invalidity insurance" + ], + "related_ids": [ + "1334" + ], + "broader_ids": [ + "2605" + ], + "geo_area_code": null + }, + { + "id": "3413", + "label": "republic", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3025" + ], + "geo_area_code": null + }, + { + "id": "3414", + "label": "polar region", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3146" + ], + "geo_area_code": null + }, + { + "id": "3415", + "label": "Dominican Republic", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1180", + "2119", + "4069", + "5083" + ], + "geo_area_code": "DOM" + }, + { + "id": "3416", + "label": "Pitcairn Islands", + "alt_labels": [ + "Pitcairn Island" + ], + "related_ids": [], + "broader_ids": [ + "2546", + "3778", + "8366" + ], + "geo_area_code": "PCN" + }, + { + "id": "3417", + "label": "requisitioning of workers", + "alt_labels": [ + "requisitioning of staff" + ], + "related_ids": [], + "broader_ids": [ + "98" + ], + "geo_area_code": null + }, + { + "id": "3419", + "label": "biological weapon", + "alt_labels": [ + "bacteriological weapon" + ], + "related_ids": [], + "broader_ids": [ + "3420" + ], + "geo_area_code": null + }, + { + "id": "342", + "label": "Southern Africa", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5424" + ], + "geo_area_code": null + }, + { + "id": "3420", + "label": "weapon of mass destruction", + "alt_labels": [], + "related_ids": [ + "7202" + ], + "broader_ids": [ + "2647" + ], + "geo_area_code": null + }, + { + "id": "3421", + "label": "strategic nuclear weapon", + "alt_labels": [ + "strategic nuclear arms system" + ], + "related_ids": [], + "broader_ids": [ + "2595" + ], + "geo_area_code": null + }, + { + "id": "3422", + "label": "information network", + "alt_labels": [], + "related_ids": [ + "4424", + "c_12e208c8", + "c_4e75f061", + "c_d59e7560" + ], + "broader_ids": [ + "1422" + ], + "geo_area_code": null + }, + { + "id": "3424", + "label": "farm accountancy data network", + "alt_labels": [ + "FADN" + ], + "related_ids": [ + "3083" + ], + "broader_ids": [ + "3605" + ], + "geo_area_code": null + }, + { + "id": "3425", + "label": "ballistic missile", + "alt_labels": [ + "IRBM" + ], + "related_ids": [], + "broader_ids": [ + "1944" + ], + "geo_area_code": null + }, + { + "id": "3426", + "label": "guided missile", + "alt_labels": [ + "MIRV", + "multiple independently targetable re-entry vehicle", + "subsurface-to-surface missile", + "surface-to-surface missile" + ], + "related_ids": [], + "broader_ids": [ + "1944" + ], + "geo_area_code": null + }, + { + "id": "3427", + "label": "intercontinental missile", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1944" + ], + "geo_area_code": null + }, + { + "id": "3428", + "label": "transport network", + "alt_labels": [ + "link road" + ], + "related_ids": [ + "3430", + "3435", + "3438", + "5864" + ], + "broader_ids": [ + "2181" + ], + "geo_area_code": null + }, + { + "id": "3429", + "label": "warships", + "alt_labels": [ + "battle fleet", + "battleship", + "fleet air arm", + "naval air forces" + ], + "related_ids": [ + "1037" + ], + "broader_ids": [ + "2647" + ], + "geo_area_code": null + }, + { + "id": "343", + "label": "waste", + "alt_labels": [ + "refuse", + "residue" + ], + "related_ids": [ + "1158", + "3469" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "3430", + "label": "rail network", + "alt_labels": [ + "railway line", + "railway track" + ], + "related_ids": [ + "3428", + "c_28c51c2a" + ], + "broader_ids": [ + "4514" + ], + "geo_area_code": null + }, + { + "id": "3431", + "label": "space-based weapons", + "alt_labels": [ + "anti-satellite system" + ], + "related_ids": [ + "1930" + ], + "broader_ids": [ + "2647" + ], + "geo_area_code": null + }, + { + "id": "3432", + "label": "laser weapon", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2647" + ], + "geo_area_code": null + }, + { + "id": "3433", + "label": "incendiary weapon", + "alt_labels": [ + "napalm" + ], + "related_ids": [], + "broader_ids": [ + "2567" + ], + "geo_area_code": null + }, + { + "id": "3434", + "label": "firearms and munitions", + "alt_labels": [], + "related_ids": [ + "4087" + ], + "broader_ids": [ + "2567" + ], + "geo_area_code": null + }, + { + "id": "3435", + "label": "network of navigable waterways", + "alt_labels": [ + "navigable waterway", + "waterway" + ], + "related_ids": [ + "3428" + ], + "broader_ids": [ + "4515" + ], + "geo_area_code": null + }, + { + "id": "3436", + "label": "land forces", + "alt_labels": [ + "ground forces" + ], + "related_ids": [], + "broader_ids": [ + "2628" + ], + "geo_area_code": null + }, + { + "id": "3437", + "label": "paramilitary force", + "alt_labels": [ + "border police", + "military police", + "security forces" + ], + "related_ids": [], + "broader_ids": [ + "2628" + ], + "geo_area_code": null + }, + { + "id": "3438", + "label": "road network", + "alt_labels": [ + "road", + "road connection" + ], + "related_ids": [ + "1433", + "153", + "3428" + ], + "broader_ids": [ + "4533" + ], + "geo_area_code": null + }, + { + "id": "3439", + "label": "air force", + "alt_labels": [ + "Royal Air Force" + ], + "related_ids": [ + "4417" + ], + "broader_ids": [ + "2628" + ], + "geo_area_code": null + }, + { + "id": "344", + "label": "agricultural waste", + "alt_labels": [ + "abattoir waste", + "livestock effluent", + "slaughterhouse waste", + "stubble" + ], + "related_ids": [ + "2538", + "3471", + "4891", + "4900", + "4930", + "767" + ], + "broader_ids": [ + "343" + ], + "geo_area_code": null + }, + { + "id": "3440", + "label": "reserve army", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2628" + ], + "geo_area_code": null + }, + { + "id": "3441", + "label": "forces abroad", + "alt_labels": [ + "military adviser" + ], + "related_ids": [ + "218", + "4822" + ], + "broader_ids": [ + "2628" + ], + "geo_area_code": null + }, + { + "id": "3442", + "label": "navy", + "alt_labels": [ + "Royal Navy" + ], + "related_ids": [], + "broader_ids": [ + "2628" + ], + "geo_area_code": null + }, + { + "id": "3443", + "label": "reserves", + "alt_labels": [ + "special reserve", + "technical reserves" + ], + "related_ids": [ + "5866" + ], + "broader_ids": [ + "1154" + ], + "geo_area_code": null + }, + { + "id": "3444", + "label": "women's military service", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4127" + ], + "geo_area_code": null + }, + { + "id": "3445", + "label": "voluntary military service", + "alt_labels": [ + "volunteer" + ], + "related_ids": [ + "3330" + ], + "broader_ids": [ + "4127" + ], + "geo_area_code": null + }, + { + "id": "3446", + "label": "provision", + "alt_labels": [], + "related_ids": [ + "5866" + ], + "broader_ids": [ + "54" + ], + "geo_area_code": null + }, + { + "id": "3447", + "label": "defence expenditure", + "alt_labels": [ + "military expenditure" + ], + "related_ids": [], + "broader_ids": [ + "2464" + ], + "geo_area_code": null + }, + { + "id": "3448", + "label": "strategic defence", + "alt_labels": [ + "SDI", + "Strategic Defence Initiative", + "star wars" + ], + "related_ids": [], + "broader_ids": [ + "2464" + ], + "geo_area_code": null + }, + { + "id": "3449", + "label": "foreign-exchange reserves", + "alt_labels": [ + "foreign currency reserves" + ], + "related_ids": [ + "2156", + "433" + ], + "broader_ids": [ + "1016" + ], + "geo_area_code": null + }, + { + "id": "345", + "label": "industrial waste", + "alt_labels": [ + "coal waste", + "industrial effluent", + "red mud", + "sifting residue" + ], + "related_ids": [ + "3164", + "4228" + ], + "broader_ids": [ + "343" + ], + "geo_area_code": null + }, + { + "id": "3450", + "label": "international security", + "alt_labels": [ + "international balance" + ], + "related_ids": [ + "2053", + "2071", + "3228", + "3483", + "3514" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "3451", + "label": "arms policy", + "alt_labels": [], + "related_ids": [ + "3504", + "3506" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "3452", + "label": "European arms policy", + "alt_labels": [ + "European armaments cooperation", + "JOAC", + "Joint Organisation for Armaments Cooperation", + "OCCAR" + ], + "related_ids": [], + "broader_ids": [ + "3451" + ], + "geo_area_code": null + }, + { + "id": "3453", + "label": "European security", + "alt_labels": [], + "related_ids": [ + "2499", + "5788", + "c_57f3c49f" + ], + "broader_ids": [ + "3450" + ], + "geo_area_code": null + }, + { + "id": "3454", + "label": "nuclear non-proliferation", + "alt_labels": [ + "NPT", + "non-proliferation control", + "non-proliferation treaty" + ], + "related_ids": [], + "broader_ids": [ + "411" + ], + "geo_area_code": null + }, + { + "id": "3455", + "label": "arms limitation", + "alt_labels": [ + "Geneva negotiations" + ], + "related_ids": [], + "broader_ids": [ + "411" + ], + "geo_area_code": null + }, + { + "id": "3456", + "label": "creation of nuclear-free zones", + "alt_labels": [ + "nuclear-free zone" + ], + "related_ids": [], + "broader_ids": [ + "3454" + ], + "geo_area_code": null + }, + { + "id": "3457", + "label": "nature reserve", + "alt_labels": [ + "biosphere reserve", + "game park", + "game reserve", + "natural preserve", + "natural reserve", + "nature park", + "nature preserve", + "protected landscape", + "wildflower park", + "wildlife park" + ], + "related_ids": [], + "broader_ids": [ + "4801" + ], + "geo_area_code": null + }, + { + "id": "3458", + "label": "harmonisation of weapons", + "alt_labels": [ + "harmonization of weapons" + ], + "related_ids": [], + "broader_ids": [ + "3451" + ], + "geo_area_code": null + }, + { + "id": "346", + "label": "non-recoverable waste", + "alt_labels": [ + "unrecyclable waste" + ], + "related_ids": [ + "2947" + ], + "broader_ids": [ + "343" + ], + "geo_area_code": null + }, + { + "id": "3460", + "label": "residence", + "alt_labels": [ + "actual residence", + "main residence", + "place of residence", + "principal residence" + ], + "related_ids": [ + "3940" + ], + "broader_ids": [ + "3300" + ], + "geo_area_code": null + }, + { + "id": "3461", + "label": "international agreement", + "alt_labels": [ + "global agreement", + "intergovernmental agreement", + "international treaty" + ], + "related_ids": [ + "1474", + "1567", + "216", + "2581", + "2582", + "4222", + "4344", + "4828", + "4836", + "565", + "8473" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "3462", + "label": "bilateral agreement", + "alt_labels": [], + "related_ids": [ + "1567", + "2556", + "3196" + ], + "broader_ids": [ + "3461" + ], + "geo_area_code": null + }, + { + "id": "3463", + "label": "multilateral agreement", + "alt_labels": [ + "multilateral treaty" + ], + "related_ids": [ + "1567", + "3241" + ], + "broader_ids": [ + "3461" + ], + "geo_area_code": null + }, + { + "id": "3464", + "label": "secondary residence", + "alt_labels": [], + "related_ids": [ + "1700" + ], + "broader_ids": [ + "3460" + ], + "geo_area_code": null + }, + { + "id": "3465", + "label": "international negotiations", + "alt_labels": [ + "negotiation of an agreement", + "negotiation procedure", + "opening of negotiations", + "renegotiation", + "state of negotiations" + ], + "related_ids": [ + "2050", + "3112", + "4030", + "5749" + ], + "broader_ids": [ + "3461" + ], + "geo_area_code": null + }, + { + "id": "3466", + "label": "signature of an agreement", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3461" + ], + "geo_area_code": null + }, + { + "id": "3467", + "label": "international instrument", + "alt_labels": [], + "related_ids": [ + "565", + "584" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "3468", + "label": "international convention", + "alt_labels": [ + "multilateral convention" + ], + "related_ids": [ + "2556", + "3261", + "4049" + ], + "broader_ids": [ + "3467" + ], + "geo_area_code": null + }, + { + "id": "3469", + "label": "pesticide residue", + "alt_labels": [], + "related_ids": [ + "2357", + "343" + ], + "broader_ids": [ + "2521" + ], + "geo_area_code": null + }, + { + "id": "347", + "label": "radioactive waste", + "alt_labels": [ + "nuclear waste" + ], + "related_ids": [ + "2539", + "2882", + "2884", + "3631", + "753" + ], + "broader_ids": [ + "343" + ], + "geo_area_code": null + }, + { + "id": "3470", + "label": "resolution", + "alt_labels": [], + "related_ids": [ + "3484" + ], + "broader_ids": [ + "3467" + ], + "geo_area_code": null + }, + { + "id": "3471", + "label": "wood residue", + "alt_labels": [ + "sawdust" + ], + "related_ids": [ + "2947", + "344" + ], + "broader_ids": [ + "2754" + ], + "geo_area_code": null + }, + { + "id": "3472", + "label": "European convention", + "alt_labels": [ + "convention of the Council of Europe" + ], + "related_ids": [ + "121" + ], + "broader_ids": [ + "3468" + ], + "geo_area_code": null + }, + { + "id": "3473", + "label": "UN international covenant", + "alt_labels": [ + "United Nations international covenant" + ], + "related_ids": [], + "broader_ids": [ + "3467" + ], + "geo_area_code": null + }, + { + "id": "3474", + "label": "international affairs", + "alt_labels": [ + "international politics" + ], + "related_ids": [ + "3947" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "3475", + "label": "termination of a contract", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "164" + ], + "geo_area_code": null + }, + { + "id": "3476", + "label": "international issue", + "alt_labels": [], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "3477", + "label": "indemnity insurance", + "alt_labels": [ + "casualty insurance", + "fire insurance", + "non-life insurance", + "storm insurance", + "theft insurance" + ], + "related_ids": [ + "413", + "497" + ], + "broader_ids": [ + "3151" + ], + "geo_area_code": null + }, + { + "id": "3478", + "label": "resin", + "alt_labels": [ + "wood resin" + ], + "related_ids": [ + "2415" + ], + "broader_ids": [ + "2754" + ], + "geo_area_code": null + }, + { + "id": "3479", + "label": "relations between the two German States", + "alt_labels": [], + "related_ids": [ + "1308", + "3502", + "4269" + ], + "broader_ids": [ + "3474" + ], + "geo_area_code": null + }, + { + "id": "348", + "label": "decision", + "alt_labels": [], + "related_ids": [ + "349" + ], + "broader_ids": [ + "3099" + ], + "geo_area_code": null + }, + { + "id": "3480", + "label": "official visit", + "alt_labels": [], + "related_ids": [ + "5805" + ], + "broader_ids": [ + "3474" + ], + "geo_area_code": null + }, + { + "id": "3481", + "label": "international aid", + "alt_labels": [], + "related_ids": [ + "2460" + ], + "broader_ids": [ + "3474" + ], + "geo_area_code": null + }, + { + "id": "3482", + "label": "code of conduct", + "alt_labels": [ + "international code of conduct" + ], + "related_ids": [ + "565" + ], + "broader_ids": [ + "3467" + ], + "geo_area_code": null + }, + { + "id": "3483", + "label": "international sanctions", + "alt_labels": [ + "blockade", + "boycott", + "embargo", + "reprisals" + ], + "related_ids": [ + "3450", + "6372", + "c_1c478aa5" + ], + "broader_ids": [ + "3474" + ], + "geo_area_code": null + }, + { + "id": "3484", + "label": "resolution (EU)", + "alt_labels": [ + "Commission resolution", + "Community resolution", + "EC resolution" + ], + "related_ids": [ + "3470" + ], + "broader_ids": [ + "5258" + ], + "geo_area_code": null + }, + { + "id": "3486", + "label": "religious group", + "alt_labels": [ + "religious minority" + ], + "related_ids": [ + "1628", + "459", + "6560", + "c_847fc9f2" + ], + "broader_ids": [ + "3487" + ], + "geo_area_code": null + }, + { + "id": "3487", + "label": "sociocultural group", + "alt_labels": [ + "socio-cultural group" + ], + "related_ids": [ + "435136", + "439", + "5667" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "3488", + "label": "self-sufficiency in food", + "alt_labels": [ + "dependency on food aid", + "self-sufficiency in agricultural produce" + ], + "related_ids": [ + "2477" + ], + "broader_ids": [ + "1346" + ], + "geo_area_code": null + }, + { + "id": "3489", + "label": "cooperation policy", + "alt_labels": [], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "349", + "label": "decision (EU)", + "alt_labels": [ + "Commission Decision", + "Community decision", + "Council Decision", + "European Council decision", + "decision of the European Central Bank", + "decision of the European Council", + "decision of the European Parliament" + ], + "related_ids": [ + "348" + ], + "broader_ids": [ + "5258" + ], + "geo_area_code": null + }, + { + "id": "3490", + "label": "UN resolution", + "alt_labels": [ + "United Nations resolution" + ], + "related_ids": [], + "broader_ids": [ + "3470" + ], + "geo_area_code": null + }, + { + "id": "3491", + "label": "legal cooperation", + "alt_labels": [], + "related_ids": [ + "2897" + ], + "broader_ids": [ + "3489" + ], + "geo_area_code": null + }, + { + "id": "3493", + "label": "military occupation", + "alt_labels": [ + "occupation forces", + "territorial occupation" + ], + "related_ids": [ + "581" + ], + "broader_ids": [ + "99" + ], + "geo_area_code": null + }, + { + "id": "3494", + "label": "EP resolution", + "alt_labels": [ + "European Parliament resolution", + "resolution of the European Parliament" + ], + "related_ids": [ + "127", + "5867" + ], + "broader_ids": [ + "3484" + ], + "geo_area_code": null + }, + { + "id": "3495", + "label": "occupied territory", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "99" + ], + "geo_area_code": null + }, + { + "id": "3496", + "label": "multinational force", + "alt_labels": [ + "UN forces", + "United Nations troops", + "emergency forces", + "forces of the United Nations" + ], + "related_ids": [ + "123" + ], + "broader_ids": [ + "6722" + ], + "geo_area_code": null + }, + { + "id": "3497", + "label": "liability", + "alt_labels": [ + "collective liability", + "legal liability", + "legal responsibility" + ], + "related_ids": [ + "3151", + "5416", + "6566" + ], + "broader_ids": [ + "523" + ], + "geo_area_code": null + }, + { + "id": "3498", + "label": "prisoner of war", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4697" + ], + "geo_area_code": null + }, + { + "id": "3499", + "label": "Armenian question", + "alt_labels": [], + "related_ids": [ + "5445" + ], + "broader_ids": [ + "3476" + ], + "geo_area_code": null + }, + { + "id": "35", + "label": "administrative powers", + "alt_labels": [], + "related_ids": [ + "42", + "5204" + ], + "broader_ids": [ + "517" + ], + "geo_area_code": null + }, + { + "id": "350", + "label": "EAEC Decision", + "alt_labels": [ + "Euratom Decision" + ], + "related_ids": [], + "broader_ids": [ + "5344" + ], + "geo_area_code": null + }, + { + "id": "3500", + "label": "Kurdistan question", + "alt_labels": [ + "Kurdish question", + "Kurdistan" + ], + "related_ids": [ + "1500", + "1501", + "4580" + ], + "broader_ids": [ + "3476" + ], + "geo_area_code": null + }, + { + "id": "3501", + "label": "Palestine question", + "alt_labels": [ + "Arab-Israeli conflict", + "Israeli-Arab conflict", + "Israeli-Arab war", + "Israeli-Palestinian conflict", + "Palestinian question" + ], + "related_ids": [ + "1518", + "2137", + "4614", + "5930" + ], + "broader_ids": [ + "3476" + ], + "geo_area_code": null + }, + { + "id": "3502", + "label": "unification of Germany", + "alt_labels": [ + "reunification of Germany" + ], + "related_ids": [ + "1308", + "1318", + "3479", + "4596" + ], + "broader_ids": [ + "3476" + ], + "geo_area_code": null + }, + { + "id": "3503", + "label": "international responsibility", + "alt_labels": [], + "related_ids": [ + "6401" + ], + "broader_ids": [ + "567" + ], + "geo_area_code": null + }, + { + "id": "3504", + "label": "Conference on Disarmament in Europe", + "alt_labels": [], + "related_ids": [ + "3451" + ], + "broader_ids": [ + "3450" + ], + "geo_area_code": null + }, + { + "id": "3505", + "label": "Euro-missile", + "alt_labels": [ + "Eurostrategic weapon", + "INF", + "intermediate nuclear force" + ], + "related_ids": [ + "1944" + ], + "broader_ids": [ + "3450" + ], + "geo_area_code": null + }, + { + "id": "3506", + "label": "arms control", + "alt_labels": [], + "related_ids": [ + "3451" + ], + "broader_ids": [ + "3450" + ], + "geo_area_code": null + }, + { + "id": "3507", + "label": "ministerial responsibility", + "alt_labels": [ + "government responsibility" + ], + "related_ids": [ + "1995", + "5830" + ], + "broader_ids": [ + "39" + ], + "geo_area_code": null + }, + { + "id": "3508", + "label": "START agreement", + "alt_labels": [ + "Strategic Arms Reduction Talks" + ], + "related_ids": [], + "broader_ids": [ + "3455" + ], + "geo_area_code": null + }, + { + "id": "3509", + "label": "ABM Agreement", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3455" + ], + "geo_area_code": null + }, + { + "id": "351", + "label": "West Africa", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5424" + ], + "geo_area_code": null + }, + { + "id": "3510", + "label": "peace zone", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3454" + ], + "geo_area_code": null + }, + { + "id": "3512", + "label": "health insurance", + "alt_labels": [ + "medical insurance", + "sickness benefit" + ], + "related_ids": [ + "273", + "2929", + "3222", + "c_41ef4cb8" + ], + "broader_ids": [ + "2605" + ], + "geo_area_code": null + }, + { + "id": "3513", + "label": "criminal liability", + "alt_labels": [ + "age of responsibility", + "criminal capacity" + ], + "related_ids": [ + "1747", + "1940", + "5415", + "6401", + "8417" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "3514", + "label": "OSCE", + "alt_labels": [ + "Belgrade Conference", + "CSCE", + "Conference on Security and Cooperation in Europe", + "Helsinki Final Act", + "Madrid Conference", + "Organisation for Security and Cooperation in Europe", + "Vienna Conference" + ], + "related_ids": [ + "3450" + ], + "broader_ids": [ + "2188" + ], + "geo_area_code": null + }, + { + "id": "3515", + "label": "long-term unemployment", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5974" + ], + "geo_area_code": null + }, + { + "id": "3516", + "label": "reintegration into working life", + "alt_labels": [ + "professional reintegration", + "reintegration into the labour market", + "return to employment", + "return to the labour market" + ], + "related_ids": [ + "1231", + "374" + ], + "broader_ids": [ + "4700" + ], + "geo_area_code": null + }, + { + "id": "3517", + "label": "political responsibility", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4704" + ], + "geo_area_code": null + }, + { + "id": "3518", + "label": "fight against unemployment", + "alt_labels": [], + "related_ids": [ + "5974", + "5986", + "723" + ], + "broader_ids": [ + "2468" + ], + "geo_area_code": null + }, + { + "id": "3519", + "label": "manpower planning", + "alt_labels": [ + "employment planning" + ], + "related_ids": [ + "4851" + ], + "broader_ids": [ + "2468" + ], + "geo_area_code": null + }, + { + "id": "352", + "label": "ECSC general Decision", + "alt_labels": [ + "general Decision of the ECSC" + ], + "related_ids": [], + "broader_ids": [ + "5327" + ], + "geo_area_code": null + }, + { + "id": "3520", + "label": "job sharing", + "alt_labels": [], + "related_ids": [ + "2953" + ], + "broader_ids": [ + "3518" + ], + "geo_area_code": null + }, + { + "id": "3521", + "label": "national", + "alt_labels": [ + "citizen" + ], + "related_ids": [], + "broader_ids": [ + "566" + ], + "geo_area_code": null + }, + { + "id": "3522", + "label": "termination of employment", + "alt_labels": [], + "related_ids": [ + "5372" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "3523", + "label": "change of job", + "alt_labels": [ + "job transformation" + ], + "related_ids": [ + "2936", + "5383" + ], + "broader_ids": [ + "2468" + ], + "geo_area_code": null + }, + { + "id": "3524", + "label": "local employment initiative", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "284" + ], + "geo_area_code": null + }, + { + "id": "3525", + "label": "unpaid work", + "alt_labels": [ + "unpaid activity" + ], + "related_ids": [ + "1739", + "3330", + "3331" + ], + "broader_ids": [ + "4299" + ], + "geo_area_code": null + }, + { + "id": "3526", + "label": "EU national", + "alt_labels": [ + "Community national", + "European Union national", + "national of the EU", + "national of the European Union" + ], + "related_ids": [ + "5491" + ], + "broader_ids": [ + "3521" + ], + "geo_area_code": null + }, + { + "id": "3527", + "label": "temporary employment", + "alt_labels": [ + "provisional employment", + "provisional work", + "temporary staff", + "temporary work" + ], + "related_ids": [ + "166", + "4029", + "5207" + ], + "broader_ids": [ + "5940" + ], + "geo_area_code": null + }, + { + "id": "3528", + "label": "animal resources", + "alt_labels": [], + "related_ids": [ + "2711", + "2826", + "5463", + "5962", + "972" + ], + "broader_ids": [ + "3549" + ], + "geo_area_code": null + }, + { + "id": "3529", + "label": "youth employment", + "alt_labels": [ + "work for young people" + ], + "related_ids": [ + "1529" + ], + "broader_ids": [ + "4299" + ], + "geo_area_code": null + }, + { + "id": "353", + "label": "ECSC individual Decision", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5327" + ], + "geo_area_code": null + }, + { + "id": "3530", + "label": "female work", + "alt_labels": [ + "employment of women" + ], + "related_ids": [ + "1740", + "2980" + ], + "broader_ids": [ + "4299" + ], + "geo_area_code": null + }, + { + "id": "3531", + "label": "resources of the sea", + "alt_labels": [ + "marine resources" + ], + "related_ids": [ + "1050", + "1870", + "2107", + "2114", + "2308", + "3544", + "3779", + "6398", + "743", + "752", + "940" + ], + "broader_ids": [ + "3549" + ], + "geo_area_code": null + }, + { + "id": "3532", + "label": "updating of skills", + "alt_labels": [ + "professional specialisation", + "retraining of skills", + "vocational upgrading" + ], + "related_ids": [ + "6351" + ], + "broader_ids": [ + "1074" + ], + "geo_area_code": null + }, + { + "id": "3533", + "label": "economic resources", + "alt_labels": [], + "related_ids": [ + "3549" + ], + "broader_ids": [ + "84" + ], + "geo_area_code": null + }, + { + "id": "3534", + "label": "traineeship", + "alt_labels": [ + "trainee", + "training course", + "training period" + ], + "related_ids": [ + "3562" + ], + "broader_ids": [ + "1074" + ], + "geo_area_code": null + }, + { + "id": "3535", + "label": "water resources", + "alt_labels": [ + "water availability" + ], + "related_ids": [ + "1278", + "3144", + "476", + "6398" + ], + "broader_ids": [ + "3549" + ], + "geo_area_code": null + }, + { + "id": "3536", + "label": "soil resources", + "alt_labels": [], + "related_ids": [ + "1483", + "222", + "3931" + ], + "broader_ids": [ + "3549" + ], + "geo_area_code": null + }, + { + "id": "3537", + "label": "employment statistics", + "alt_labels": [], + "related_ids": [ + "4256" + ], + "broader_ids": [ + "1802" + ], + "geo_area_code": null + }, + { + "id": "3538", + "label": "energy resources", + "alt_labels": [ + "fuel resources" + ], + "related_ids": [ + "1685", + "2498", + "466", + "6043", + "6320" + ], + "broader_ids": [ + "3549" + ], + "geo_area_code": null + }, + { + "id": "3539", + "label": "auxiliary worker", + "alt_labels": [ + "auxiliary work" + ], + "related_ids": [], + "broader_ids": [ + "1737" + ], + "geo_area_code": null + }, + { + "id": "354", + "label": "restrictive-practice notification", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3145" + ], + "geo_area_code": null + }, + { + "id": "3540", + "label": "expatriate worker", + "alt_labels": [], + "related_ids": [ + "1946", + "828", + "c_9eb9cbaa" + ], + "broader_ids": [ + "1737" + ], + "geo_area_code": null + }, + { + "id": "3541", + "label": "marine insurance", + "alt_labels": [], + "related_ids": [ + "4522" + ], + "broader_ids": [ + "3706" + ], + "geo_area_code": null + }, + { + "id": "3542", + "label": "entrepreneur", + "alt_labels": [ + "industrialist", + "owner of a business", + "promoter of a company" + ], + "related_ids": [ + "6749" + ], + "broader_ids": [ + "4300" + ], + "geo_area_code": null + }, + { + "id": "3543", + "label": "managing director", + "alt_labels": [], + "related_ids": [ + "2279" + ], + "broader_ids": [ + "4300" + ], + "geo_area_code": null + }, + { + "id": "3544", + "label": "fishery resources", + "alt_labels": [ + "fishing resources" + ], + "related_ids": [ + "2718", + "3531" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "3545", + "label": "self-employed person", + "alt_labels": [ + "adviser", + "consultant", + "expert", + "free-lance", + "independent", + "self-employed worker" + ], + "related_ids": [ + "2161", + "3688", + "6008" + ], + "broader_ids": [ + "4276" + ], + "geo_area_code": null + }, + { + "id": "3546", + "label": "mineral resources", + "alt_labels": [ + "mining resources" + ], + "related_ids": [ + "1411", + "1936", + "2366", + "2767", + "2821" + ], + "broader_ids": [ + "3549" + ], + "geo_area_code": null + }, + { + "id": "3547", + "label": "public holiday", + "alt_labels": [ + "day of rest" + ], + "related_ids": [], + "broader_ids": [ + "4435" + ], + "geo_area_code": null + }, + { + "id": "3548", + "label": "Sunday working", + "alt_labels": [ + "working on public holidays" + ], + "related_ids": [], + "broader_ids": [ + "592" + ], + "geo_area_code": null + }, + { + "id": "3549", + "label": "natural resources", + "alt_labels": [], + "related_ids": [ + "1160", + "134", + "3533" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "355", + "label": "announcement of candidacy", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5105" + ], + "geo_area_code": null + }, + { + "id": "3550", + "label": "rate of work", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "896" + ], + "geo_area_code": null + }, + { + "id": "3551", + "label": "renewable resources", + "alt_labels": [ + "non-renewable resources" + ], + "related_ids": [ + "754", + "840", + "c_82916123" + ], + "broader_ids": [ + "3549" + ], + "geo_area_code": null + }, + { + "id": "3552", + "label": "teleworking", + "alt_labels": [ + "distance working", + "telecommuting" + ], + "related_ids": [ + "4424" + ], + "broader_ids": [ + "5940" + ], + "geo_area_code": null + }, + { + "id": "3553", + "label": "pay freeze", + "alt_labels": [], + "related_ids": [ + "5011" + ], + "broader_ids": [ + "2491" + ], + "geo_area_code": null + }, + { + "id": "3554", + "label": "additional resources", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1012" + ], + "geo_area_code": null + }, + { + "id": "3555", + "label": "pay cut", + "alt_labels": [ + "reduction in pay", + "wage reduction" + ], + "related_ids": [ + "2461", + "2953" + ], + "broader_ids": [ + "2491" + ], + "geo_area_code": null + }, + { + "id": "3556", + "label": "fringe benefit", + "alt_labels": [ + "benefits in kind" + ], + "related_ids": [], + "broader_ids": [ + "3273" + ], + "geo_area_code": null + }, + { + "id": "3557", + "label": "allowances and expenses", + "alt_labels": [ + "mission expenses", + "transfer bonus", + "travel expenses" + ], + "related_ids": [], + "broader_ids": [ + "3273" + ], + "geo_area_code": null + }, + { + "id": "3558", + "label": "budgetary resources", + "alt_labels": [ + "budget revenue" + ], + "related_ids": [ + "1021", + "2911", + "394", + "917" + ], + "broader_ids": [ + "1012" + ], + "geo_area_code": null + }, + { + "id": "3559", + "label": "appointment of staff", + "alt_labels": [], + "related_ids": [ + "8465" + ], + "broader_ids": [ + "1163" + ], + "geo_area_code": null + }, + { + "id": "356", + "label": "explanation of voting", + "alt_labels": [ + "declaration of vote" + ], + "related_ids": [ + "4750" + ], + "broader_ids": [ + "3984" + ], + "geo_area_code": null + }, + { + "id": "3560", + "label": "own resources", + "alt_labels": [ + "Community revenue", + "EC own resources" + ], + "related_ids": [ + "2911", + "4282", + "4381", + "4585" + ], + "broader_ids": [ + "3258" + ], + "geo_area_code": null + }, + { + "id": "3561", + "label": "rules of procedure", + "alt_labels": [], + "related_ids": [ + "5851" + ], + "broader_ids": [ + "4179" + ], + "geo_area_code": null + }, + { + "id": "3562", + "label": "probationary period", + "alt_labels": [ + "trial period" + ], + "related_ids": [ + "3534" + ], + "broader_ids": [ + "1163" + ], + "geo_area_code": null + }, + { + "id": "3563", + "label": "catering", + "alt_labels": [ + "canteen", + "catering facility", + "works canteen" + ], + "related_ids": [ + "1373", + "7341" + ], + "broader_ids": [ + "1360" + ], + "geo_area_code": null + }, + { + "id": "3564", + "label": "trade union rights", + "alt_labels": [], + "related_ids": [ + "1046", + "3575" + ], + "broader_ids": [ + "557" + ], + "geo_area_code": null + }, + { + "id": "3565", + "label": "trade union freedom", + "alt_labels": [], + "related_ids": [ + "3575", + "6081" + ], + "broader_ids": [ + "3899" + ], + "geo_area_code": null + }, + { + "id": "3566", + "label": "professional ethics", + "alt_labels": [ + "deontology" + ], + "related_ids": [ + "1989", + "4000", + "5169", + "c_fd56c432", + "c_fea6771b" + ], + "broader_ids": [ + "2178" + ], + "geo_area_code": null + }, + { + "id": "3567", + "label": "compulsory insurance", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3151" + ], + "geo_area_code": null + }, + { + "id": "3568", + "label": "export refund", + "alt_labels": [ + "Community aid to exports", + "advance determination of refunds", + "amount of refund", + "fixing of refund", + "maximum refund" + ], + "related_ids": [ + "2173", + "2639", + "2668", + "3190", + "3576", + "618", + "745", + "926" + ], + "broader_ids": [ + "1010" + ], + "geo_area_code": null + }, + { + "id": "3569", + "label": "profit sharing", + "alt_labels": [], + "related_ids": [ + "2264" + ], + "broader_ids": [ + "2266" + ], + "geo_area_code": null + }, + { + "id": "357", + "label": "East Africa", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5424" + ], + "geo_area_code": null + }, + { + "id": "3570", + "label": "import refund", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2488" + ], + "geo_area_code": null + }, + { + "id": "3571", + "label": "trade union election", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3374" + ], + "geo_area_code": null + }, + { + "id": "3572", + "label": "social partners", + "alt_labels": [ + "both sides of industry", + "management and labour", + "the two sides of industry" + ], + "related_ids": [ + "557" + ], + "broader_ids": [ + "3209" + ], + "geo_area_code": null + }, + { + "id": "3573", + "label": "civil servants\u2019 union", + "alt_labels": [ + "teachers' association", + "union of civil servants" + ], + "related_ids": [ + "1047", + "1048" + ], + "broader_ids": [ + "3572" + ], + "geo_area_code": null + }, + { + "id": "3574", + "label": "professional association", + "alt_labels": [ + "inter-professional organisation", + "professional organisation", + "professional union" + ], + "related_ids": [], + "broader_ids": [ + "2178" + ], + "geo_area_code": null + }, + { + "id": "3575", + "label": "trade union", + "alt_labels": [ + "trade union association", + "trade union council", + "trade union federation", + "trade union organisation", + "trade unionism", + "workers' association", + "workers' trade union" + ], + "related_ids": [ + "1620", + "3564", + "3565", + "8428" + ], + "broader_ids": [ + "3572" + ], + "geo_area_code": null + }, + { + "id": "3576", + "label": "production refund", + "alt_labels": [], + "related_ids": [ + "3568" + ], + "broader_ids": [ + "2477" + ], + "geo_area_code": null + }, + { + "id": "3577", + "label": "export restriction", + "alt_labels": [ + "export ban", + "limit on exports" + ], + "related_ids": [ + "2487" + ], + "broader_ids": [ + "3584" + ], + "geo_area_code": null + }, + { + "id": "3578", + "label": "diplomatic profession", + "alt_labels": [ + "ambassador", + "consul", + "delegation staff", + "diplomat", + "diplomatic agent", + "diplomatic representative", + "diplomatic staff" + ], + "related_ids": [], + "broader_ids": [ + "3367" + ], + "geo_area_code": null + }, + { + "id": "3579", + "label": "import restriction", + "alt_labels": [ + "import ban", + "limit on imports", + "suspension of imports" + ], + "related_ids": [ + "2488", + "2771", + "4400" + ], + "broader_ids": [ + "3584" + ], + "geo_area_code": null + }, + { + "id": "358", + "label": "economic take-off", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "427" + ], + "geo_area_code": null + }, + { + "id": "3580", + "label": "communications profession", + "alt_labels": [ + "commentator", + "comp\u00e8re", + "designer", + "journalist", + "presenter", + "reporter" + ], + "related_ids": [ + "2599" + ], + "broader_ids": [ + "1370" + ], + "geo_area_code": null + }, + { + "id": "3581", + "label": "restriction on competition", + "alt_labels": [ + "discriminatory trading practice", + "distortion of competition", + "illegal trade practice", + "unfair competition", + "unfair trade practice" + ], + "related_ids": [ + "2666", + "2836", + "3584", + "5790", + "6105" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "3582", + "label": "administrative personnel", + "alt_labels": [ + "administrative service" + ], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "3583", + "label": "secretarial staff", + "alt_labels": [ + "executive secretary", + "secretary" + ], + "related_ids": [], + "broader_ids": [ + "3582" + ], + "geo_area_code": null + }, + { + "id": "3584", + "label": "trade restriction", + "alt_labels": [ + "obstacle to trade", + "restriction on trade", + "trade barrier", + "trade defence" + ], + "related_ids": [ + "2844", + "3581", + "3870" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "3585", + "label": "information profession", + "alt_labels": [ + "archivist", + "documentalist", + "interpreter", + "librarian", + "terminologist", + "translator" + ], + "related_ids": [ + "1482", + "3925", + "4478", + "494" + ], + "broader_ids": [ + "1422" + ], + "geo_area_code": null + }, + { + "id": "3586", + "label": "scientific profession", + "alt_labels": [ + "scientific staff", + "scientist" + ], + "related_ids": [ + "3587" + ], + "broader_ids": [ + "2478" + ], + "geo_area_code": null + }, + { + "id": "3587", + "label": "technical profession", + "alt_labels": [ + "technical personnel", + "technician" + ], + "related_ids": [ + "2208", + "3586", + "3607", + "3909", + "4415", + "801" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "3588", + "label": "restriction of liberty", + "alt_labels": [ + "banishment", + "compulsory residence order", + "house arrest" + ], + "related_ids": [], + "broader_ids": [ + "3878" + ], + "geo_area_code": null + }, + { + "id": "3589", + "label": "political figure", + "alt_labels": [ + "female politician", + "male politician", + "politician", + "politician (female)", + "politician (male)", + "statesman" + ], + "related_ids": [ + "443080", + "5805" + ], + "broader_ids": [ + "4704" + ], + "geo_area_code": null + }, + { + "id": "359", + "label": "decolonisation", + "alt_labels": [ + "decolonization" + ], + "related_ids": [], + "broader_ids": [ + "1346" + ], + "geo_area_code": null + }, + { + "id": "3590", + "label": "insurance occupation", + "alt_labels": [ + "insurance agent", + "insurance broker", + "insurer" + ], + "related_ids": [ + "2786" + ], + "broader_ids": [ + "3151" + ], + "geo_area_code": null + }, + { + "id": "3591", + "label": "quantitative restriction", + "alt_labels": [ + "quantitative ceiling", + "quota" + ], + "related_ids": [ + "2182" + ], + "broader_ids": [ + "809" + ], + "geo_area_code": null + }, + { + "id": "3592", + "label": "small retailer", + "alt_labels": [ + "small shop", + "tradesman" + ], + "related_ids": [ + "824" + ], + "broader_ids": [ + "5" + ], + "geo_area_code": null + }, + { + "id": "3593", + "label": "dentist", + "alt_labels": [], + "related_ids": [ + "3287" + ], + "broader_ids": [ + "2789" + ], + "geo_area_code": null + }, + { + "id": "3594", + "label": "doctor", + "alt_labels": [ + "general practitioner", + "medical practitioner", + "specialist" + ], + "related_ids": [ + "5125" + ], + "broader_ids": [ + "2789" + ], + "geo_area_code": null + }, + { + "id": "3595", + "label": "veterinarian", + "alt_labels": [ + "veterinary surgeon" + ], + "related_ids": [ + "1856" + ], + "broader_ids": [ + "2789" + ], + "geo_area_code": null + }, + { + "id": "3596", + "label": "pharmacist", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2790" + ], + "geo_area_code": null + }, + { + "id": "3597", + "label": "midwife", + "alt_labels": [], + "related_ids": [ + "3284", + "5159" + ], + "broader_ids": [ + "2789" + ], + "geo_area_code": null + }, + { + "id": "3598", + "label": "artistic profession", + "alt_labels": [ + "actor", + "artist", + "composer", + "cultural worker", + "dancer", + "film-maker", + "musician", + "painter", + "photographer", + "sculptor", + "singer" + ], + "related_ids": [], + "broader_ids": [ + "2688" + ], + "geo_area_code": null + }, + { + "id": "3599", + "label": "private insurance", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3151" + ], + "geo_area_code": null + }, + { + "id": "36", + "label": "EU competence", + "alt_labels": [ + "Community competence", + "EC competence", + "European Union competence", + "competence of the Community" + ], + "related_ids": [ + "40" + ], + "broader_ids": [ + "4017" + ], + "geo_area_code": null + }, + { + "id": "360", + "label": "counting of the votes", + "alt_labels": [ + "vote count" + ], + "related_ids": [], + "broader_ids": [ + "4750" + ], + "geo_area_code": null + }, + { + "id": "3600", + "label": "industrial restructuring", + "alt_labels": [ + "industrial change", + "restructuring plan" + ], + "related_ids": [ + "3069", + "3071", + "4332", + "6356", + "835" + ], + "broader_ids": [ + "3290" + ], + "geo_area_code": null + }, + { + "id": "3601", + "label": "literary profession", + "alt_labels": [ + "author", + "poet", + "writer" + ], + "related_ids": [], + "broader_ids": [ + "2688" + ], + "geo_area_code": null + }, + { + "id": "3602", + "label": "operating result", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "54" + ], + "geo_area_code": null + }, + { + "id": "3603", + "label": "sales staff", + "alt_labels": [ + "sales assistant" + ], + "related_ids": [], + "broader_ids": [ + "2786" + ], + "geo_area_code": null + }, + { + "id": "3604", + "label": "sales representative", + "alt_labels": [ + "commercial agent", + "door-to-door salesman", + "travelling salesman" + ], + "related_ids": [], + "broader_ids": [ + "2786" + ], + "geo_area_code": null + }, + { + "id": "3605", + "label": "agricultural performance", + "alt_labels": [], + "related_ids": [ + "3083", + "4842" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "3606", + "label": "school results", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4554" + ], + "geo_area_code": null + }, + { + "id": "3607", + "label": "information technology profession", + "alt_labels": [ + "computer expert", + "data-processing profession", + "encoder", + "programmer", + "systems designer", + "systems engineer" + ], + "related_ids": [ + "3587" + ], + "broader_ids": [ + "1426" + ], + "geo_area_code": null + }, + { + "id": "3608", + "label": "tourist profession", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4470" + ], + "geo_area_code": null + }, + { + "id": "3609", + "label": "hotel profession", + "alt_labels": [ + "hotelkeeper" + ], + "related_ids": [], + "broader_ids": [ + "1404" + ], + "geo_area_code": null + }, + { + "id": "361", + "label": "devolution", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2166" + ], + "geo_area_code": null + }, + { + "id": "3610", + "label": "service occupation", + "alt_labels": [ + "caretaking staff", + "domestic service", + "domestic staff", + "domestic worker", + "security service", + "service staff" + ], + "related_ids": [ + "2602" + ], + "broader_ids": [ + "1384" + ], + "geo_area_code": null + }, + { + "id": "3611", + "label": "restoration of customs duties", + "alt_labels": [ + "restoration of customs tariff" + ], + "related_ids": [], + "broader_ids": [ + "2519" + ], + "geo_area_code": null + }, + { + "id": "3612", + "label": "banking profession", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2149" + ], + "geo_area_code": null + }, + { + "id": "3613", + "label": "professional sport", + "alt_labels": [ + "professional sportsman" + ], + "related_ids": [], + "broader_ids": [ + "4245" + ], + "geo_area_code": null + }, + { + "id": "3614", + "label": "transit", + "alt_labels": [ + "passenger transit", + "transit of goods" + ], + "related_ids": [], + "broader_ids": [ + "3098" + ], + "geo_area_code": null + }, + { + "id": "3615", + "label": "backwardness at school", + "alt_labels": [ + "remedial class", + "remedial teaching" + ], + "related_ids": [], + "broader_ids": [ + "4554" + ], + "geo_area_code": null + }, + { + "id": "3616", + "label": "European industrial area", + "alt_labels": [ + "European industry" + ], + "related_ids": [ + "213", + "2724", + "3656", + "45" + ], + "broader_ids": [ + "3617" + ], + "geo_area_code": null + }, + { + "id": "3617", + "label": "EU industrial policy", + "alt_labels": [ + "Community industrial policy", + "European Union industrial policy", + "European industrial strategy" + ], + "related_ids": [ + "2451" + ], + "broader_ids": [ + "2507" + ], + "geo_area_code": null + }, + { + "id": "3618", + "label": "withdrawal from the market", + "alt_labels": [ + "precautionary withdrawal from the market" + ], + "related_ids": [ + "2659" + ], + "broader_ids": [ + "3065" + ], + "geo_area_code": null + }, + { + "id": "3619", + "label": "handicrafts", + "alt_labels": [], + "related_ids": [ + "2784", + "814" + ], + "broader_ids": [ + "4303" + ], + "geo_area_code": null + }, + { + "id": "362", + "label": "administrative unit", + "alt_labels": [ + "administrative district" + ], + "related_ids": [], + "broader_ids": [ + "2166" + ], + "geo_area_code": null + }, + { + "id": "3620", + "label": "small industry", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3622" + ], + "geo_area_code": null + }, + { + "id": "3621", + "label": "medium-sized industry", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3622" + ], + "geo_area_code": null + }, + { + "id": "3622", + "label": "small and medium industries", + "alt_labels": [ + "SMI", + "small and medium-sized industries" + ], + "related_ids": [ + "2359" + ], + "broader_ids": [ + "4303" + ], + "geo_area_code": null + }, + { + "id": "3623", + "label": "retired person", + "alt_labels": [ + "pensioner", + "retired worker" + ], + "related_ids": [ + "2333", + "3362", + "3751", + "4050" + ], + "broader_ids": [ + "3522" + ], + "geo_area_code": null + }, + { + "id": "3624", + "label": "location of industry", + "alt_labels": [ + "choice of industrial site", + "factory location", + "industrial location" + ], + "related_ids": [ + "1307", + "3067", + "3326" + ], + "broader_ids": [ + "2507" + ], + "geo_area_code": null + }, + { + "id": "3625", + "label": "industrial free zone", + "alt_labels": [ + "enterprise zone", + "industrial development area", + "trade incentive area" + ], + "related_ids": [ + "284", + "365", + "4279", + "4793", + "5148", + "935" + ], + "broader_ids": [ + "3624" + ], + "geo_area_code": null + }, + { + "id": "3626", + "label": "early retirement", + "alt_labels": [ + "flexible retirement age", + "gradual retirement", + "pre-retirement", + "voluntary retirement" + ], + "related_ids": [], + "broader_ids": [ + "3522" + ], + "geo_area_code": null + }, + { + "id": "3627", + "label": "technology park", + "alt_labels": [ + "research park", + "science park" + ], + "related_ids": [ + "1376", + "2407", + "2478", + "3216", + "4496", + "c_de4d6f2f" + ], + "broader_ids": [ + "2507" + ], + "geo_area_code": null + }, + { + "id": "3628", + "label": "production surplus", + "alt_labels": [ + "surplus production" + ], + "related_ids": [ + "4285", + "926" + ], + "broader_ids": [ + "5123" + ], + "geo_area_code": null + }, + { + "id": "3629", + "label": "handling", + "alt_labels": [ + "hoisting" + ], + "related_ids": [ + "1832" + ], + "broader_ids": [ + "2177" + ], + "geo_area_code": null + }, + { + "id": "363", + "label": "division into constituencies", + "alt_labels": [ + "constituency", + "electoral district" + ], + "related_ids": [], + "broader_ids": [ + "2186" + ], + "geo_area_code": null + }, + { + "id": "3630", + "label": "public insurance", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3151" + ], + "geo_area_code": null + }, + { + "id": "3631", + "label": "fuel reprocessing", + "alt_labels": [], + "related_ids": [ + "347", + "5350", + "6047" + ], + "broader_ids": [ + "4422" + ], + "geo_area_code": null + }, + { + "id": "3632", + "label": "industrial manufacturing", + "alt_labels": [], + "related_ids": [ + "1429", + "1434", + "167", + "2399", + "2871", + "4036", + "6294", + "827" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "3633", + "label": "production quota", + "alt_labels": [ + "limitation of production", + "production restriction", + "reduction of production" + ], + "related_ids": [ + "2974" + ], + "broader_ids": [ + "2481" + ], + "geo_area_code": null + }, + { + "id": "3634", + "label": "production statistics", + "alt_labels": [ + "production index" + ], + "related_ids": [ + "2720", + "3304", + "4256", + "4264" + ], + "broader_ids": [ + "2707" + ], + "geo_area_code": null + }, + { + "id": "3635", + "label": "producer's liability", + "alt_labels": [ + "commercial guarantee", + "product liability" + ], + "related_ids": [ + "2077", + "2836", + "2871", + "3643", + "4036", + "c_a4590937" + ], + "broader_ids": [ + "3497" + ], + "geo_area_code": null + }, + { + "id": "3636", + "label": "new technology", + "alt_labels": [ + "advanced technique", + "advanced technology", + "high tech", + "high technology" + ], + "related_ids": [ + "1357", + "1358", + "1365", + "1376", + "1439", + "3026", + "3689", + "447795", + "5188", + "5495" + ], + "broader_ids": [ + "4415" + ], + "geo_area_code": null + }, + { + "id": "3637", + "label": "summit meeting", + "alt_labels": [ + "conference of Heads of State", + "summit", + "summit conference" + ], + "related_ids": [ + "128", + "210", + "5805" + ], + "broader_ids": [ + "3650" + ], + "geo_area_code": null + }, + { + "id": "3638", + "label": "clean technology", + "alt_labels": [ + "clean industry", + "cleantech", + "environmental technology", + "environmentally sound technology", + "environmentally sustainable technology", + "green technology", + "low waste technology", + "low-carbon technology" + ], + "related_ids": [ + "2825", + "2947", + "434909", + "5585", + "5754", + "6400", + "754", + "c_749f2ce9", + "c_c9724a74" + ], + "broader_ids": [ + "5973" + ], + "geo_area_code": null + }, + { + "id": "3639", + "label": "traditional technology", + "alt_labels": [], + "related_ids": [ + "2310" + ], + "broader_ids": [ + "5973" + ], + "geo_area_code": null + }, + { + "id": "364", + "label": "decree", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3099" + ], + "geo_area_code": null + }, + { + "id": "3640", + "label": "technological process", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4418" + ], + "geo_area_code": null + }, + { + "id": "3641", + "label": "technical regulations", + "alt_labels": [], + "related_ids": [ + "3134", + "5887", + "c_28c51c2a" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "3642", + "label": "product life", + "alt_labels": [ + "durability", + "duration of product life", + "product wear and tear" + ], + "related_ids": [], + "broader_ids": [ + "2871" + ], + "geo_area_code": null + }, + { + "id": "3643", + "label": "defective product", + "alt_labels": [ + "failure to conform", + "faulty goods", + "hidden defect", + "latent defect" + ], + "related_ids": [ + "3635" + ], + "broader_ids": [ + "4036" + ], + "geo_area_code": null + }, + { + "id": "3644", + "label": "ministerial meeting", + "alt_labels": [], + "related_ids": [ + "114", + "1939" + ], + "broader_ids": [ + "3650" + ], + "geo_area_code": null + }, + { + "id": "3645", + "label": "technical specification", + "alt_labels": [ + "specification" + ], + "related_ids": [], + "broader_ids": [ + "3641" + ], + "geo_area_code": null + }, + { + "id": "3646", + "label": "European standard", + "alt_labels": [ + "Community standard", + "Euronorm" + ], + "related_ids": [ + "6091" + ], + "broader_ids": [ + "2076" + ], + "geo_area_code": null + }, + { + "id": "3647", + "label": "international standard", + "alt_labels": [ + "ISO standard" + ], + "related_ids": [ + "1337", + "1510" + ], + "broader_ids": [ + "2076" + ], + "geo_area_code": null + }, + { + "id": "3648", + "label": "harmonisation of standards", + "alt_labels": [ + "compatibility of materials", + "compatible material", + "harmonization of standards" + ], + "related_ids": [ + "5811" + ], + "broader_ids": [ + "2076" + ], + "geo_area_code": null + }, + { + "id": "3649", + "label": "technical rule", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3641" + ], + "geo_area_code": null + }, + { + "id": "365", + "label": "tax relief", + "alt_labels": [ + "relief from taxes", + "tax abatement", + "tax advantage", + "tax allowance", + "tax concession", + "tax credit", + "tax deduction", + "tax reduction" + ], + "related_ids": [ + "3625" + ], + "broader_ids": [ + "2504" + ], + "geo_area_code": null + }, + { + "id": "3650", + "label": "international meeting", + "alt_labels": [], + "related_ids": [ + "216" + ], + "broader_ids": [ + "3474" + ], + "geo_area_code": null + }, + { + "id": "3651", + "label": "recycling technology", + "alt_labels": [], + "related_ids": [ + "2947", + "5819" + ], + "broader_ids": [ + "4415" + ], + "geo_area_code": null + }, + { + "id": "3652", + "label": "research budget", + "alt_labels": [ + "research appropriation" + ], + "related_ids": [ + "5050", + "5578" + ], + "broader_ids": [ + "2478" + ], + "geo_area_code": null + }, + { + "id": "3653", + "label": "pay rise", + "alt_labels": [ + "wage increase" + ], + "related_ids": [ + "1421", + "2575", + "274" + ], + "broader_ids": [ + "2491" + ], + "geo_area_code": null + }, + { + "id": "3654", + "label": "Eureka", + "alt_labels": [ + "Eureka charter", + "Eureka ministerial conference", + "Eureka programme", + "Eureka project", + "European Research Coordination Agency" + ], + "related_ids": [], + "broader_ids": [ + "2478" + ], + "geo_area_code": null + }, + { + "id": "3655", + "label": "research staff", + "alt_labels": [ + "researcher" + ], + "related_ids": [], + "broader_ids": [ + "2478" + ], + "geo_area_code": null + }, + { + "id": "3656", + "label": "EU research policy", + "alt_labels": [ + "Community research policy", + "European Union research policy", + "common research programme" + ], + "related_ids": [ + "2451", + "3616", + "5354", + "5578", + "5675", + "c_6f9a80e0" + ], + "broader_ids": [ + "2478" + ], + "geo_area_code": null + }, + { + "id": "3657", + "label": "industry-research relations", + "alt_labels": [], + "related_ids": [ + "2914", + "4496" + ], + "broader_ids": [ + "2478" + ], + "geo_area_code": null + }, + { + "id": "3658", + "label": "dealer", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3218" + ], + "geo_area_code": null + }, + { + "id": "3659", + "label": "income", + "alt_labels": [], + "related_ids": [ + "1326", + "2490", + "3674", + "3679", + "3682", + "3686", + "4086" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "366", + "label": "anti-missile defence", + "alt_labels": [ + "anti-missile missile" + ], + "related_ids": [], + "broader_ids": [ + "1944" + ], + "geo_area_code": null + }, + { + "id": "3660", + "label": "research body", + "alt_labels": [ + "research institute", + "research laboratory", + "research undertaking" + ], + "related_ids": [ + "2914", + "6302", + "6305", + "c_8c634c9b" + ], + "broader_ids": [ + "2478" + ], + "geo_area_code": null + }, + { + "id": "3661", + "label": "brand name", + "alt_labels": [ + "trade name" + ], + "related_ids": [ + "1641" + ], + "broader_ids": [ + "1821" + ], + "geo_area_code": null + }, + { + "id": "3662", + "label": "registered trademark", + "alt_labels": [ + "registered trade mark" + ], + "related_ids": [], + "broader_ids": [ + "1821" + ], + "geo_area_code": null + }, + { + "id": "3663", + "label": "designs and models", + "alt_labels": [ + "design", + "industrial design" + ], + "related_ids": [ + "5520" + ], + "broader_ids": [ + "2816" + ], + "geo_area_code": null + }, + { + "id": "3664", + "label": "supplementary income", + "alt_labels": [ + "additional income", + "other source of income" + ], + "related_ids": [ + "506" + ], + "broader_ids": [ + "3273" + ], + "geo_area_code": null + }, + { + "id": "3665", + "label": "trademark law", + "alt_labels": [ + "trade mark law" + ], + "related_ids": [ + "524" + ], + "broader_ids": [ + "1821" + ], + "geo_area_code": null + }, + { + "id": "3666", + "label": "EU trade mark", + "alt_labels": [ + "Community trade mark", + "Community trademark", + "EUTM", + "European Union trade mark", + "European trade mark", + "European trademark" + ], + "related_ids": [ + "5726", + "6128" + ], + "broader_ids": [ + "1821" + ], + "geo_area_code": null + }, + { + "id": "3667", + "label": "animal experimentation", + "alt_labels": [ + "animal house (laboratory)", + "animal testing", + "experimentation on animals", + "laboratory animals" + ], + "related_ids": [ + "442884", + "5462", + "6295", + "6322" + ], + "broader_ids": [ + "2914" + ], + "geo_area_code": null + }, + { + "id": "3668", + "label": "experiment on humans", + "alt_labels": [], + "related_ids": [ + "2923", + "c_e307d2a8" + ], + "broader_ids": [ + "2914" + ], + "geo_area_code": null + }, + { + "id": "3669", + "label": "company research", + "alt_labels": [], + "related_ids": [ + "2359", + "5237", + "6120" + ], + "broader_ids": [ + "2914" + ], + "geo_area_code": null + }, + { + "id": "367", + "label": "loss", + "alt_labels": [], + "related_ids": [ + "4644", + "960" + ], + "broader_ids": [ + "3602" + ], + "geo_area_code": null + }, + { + "id": "3670", + "label": "basic research", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2914" + ], + "geo_area_code": null + }, + { + "id": "3671", + "label": "military research", + "alt_labels": [], + "related_ids": [ + "1365", + "2647", + "5928", + "7340" + ], + "broader_ids": [ + "2914" + ], + "geo_area_code": null + }, + { + "id": "3672", + "label": "university research", + "alt_labels": [], + "related_ids": [ + "4151" + ], + "broader_ids": [ + "2914" + ], + "geo_area_code": null + }, + { + "id": "3673", + "label": "third-party insurance", + "alt_labels": [ + "liability insurance", + "public liability insurance" + ], + "related_ids": [ + "3926" + ], + "broader_ids": [ + "3151" + ], + "geo_area_code": null + }, + { + "id": "3674", + "label": "investment income", + "alt_labels": [ + "return on capital" + ], + "related_ids": [ + "2098", + "3659", + "4196", + "4842", + "5362" + ], + "broader_ids": [ + "2463" + ], + "geo_area_code": null + }, + { + "id": "3675", + "label": "Group of 77", + "alt_labels": [ + "G 77" + ], + "related_ids": [ + "427" + ], + "broader_ids": [ + "2188" + ], + "geo_area_code": null + }, + { + "id": "3676", + "label": "Contadora Group", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2190" + ], + "geo_area_code": null + }, + { + "id": "3677", + "label": "dependent territory", + "alt_labels": [ + "trusteeship" + ], + "related_ids": [], + "broader_ids": [ + "581" + ], + "geo_area_code": null + }, + { + "id": "3678", + "label": "consumer movement", + "alt_labels": [ + "consumer association", + "consumer organisation" + ], + "related_ids": [ + "2001", + "2011" + ], + "broader_ids": [ + "2836" + ], + "geo_area_code": null + }, + { + "id": "3679", + "label": "farmers' income", + "alt_labels": [], + "related_ids": [ + "3659", + "8459", + "936", + "c_8b0ac3e2" + ], + "broader_ids": [ + "3605" + ], + "geo_area_code": null + }, + { + "id": "368", + "label": "budget deficit", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1012" + ], + "geo_area_code": null + }, + { + "id": "3680", + "label": "secretarial allowance", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2246" + ], + "geo_area_code": null + }, + { + "id": "3681", + "label": "transport of dangerous goods", + "alt_labels": [ + "transport of dangerous substances" + ], + "related_ids": [ + "1195", + "4033", + "4308" + ], + "broader_ids": [ + "4509" + ], + "geo_area_code": null + }, + { + "id": "3682", + "label": "farm income", + "alt_labels": [ + "agricultural income" + ], + "related_ids": [ + "3659", + "937", + "c_cb1ce6ff" + ], + "broader_ids": [ + "3605" + ], + "geo_area_code": null + }, + { + "id": "3683", + "label": "teaching method", + "alt_labels": [ + "pedagogy" + ], + "related_ids": [ + "7810" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "3684", + "label": "household income", + "alt_labels": [], + "related_ids": [ + "143" + ], + "broader_ids": [ + "3659" + ], + "geo_area_code": null + }, + { + "id": "3685", + "label": "taxable income", + "alt_labels": [], + "related_ids": [ + "2900" + ], + "broader_ids": [ + "1021" + ], + "geo_area_code": null + }, + { + "id": "3686", + "label": "national income", + "alt_labels": [], + "related_ids": [ + "3659" + ], + "broader_ids": [ + "2768" + ], + "geo_area_code": null + }, + { + "id": "3687", + "label": "underwater mineral resources", + "alt_labels": [ + "marine granulate", + "mining of the sea-bed", + "phosphorite", + "polymetallic nodule" + ], + "related_ids": [ + "1061", + "2821", + "3137" + ], + "broader_ids": [ + "3549" + ], + "geo_area_code": null + }, + { + "id": "3688", + "label": "income in addition to normal pay", + "alt_labels": [ + "fees", + "percentage of profits" + ], + "related_ids": [ + "2788", + "3545" + ], + "broader_ids": [ + "3273" + ], + "geo_area_code": null + }, + { + "id": "3689", + "label": "advanced materials", + "alt_labels": [ + "high-tech materials", + "new materials" + ], + "related_ids": [ + "3636", + "7931" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "369", + "label": "deflation", + "alt_labels": [ + "deflationary policy" + ], + "related_ids": [ + "1421", + "2510" + ], + "broader_ids": [ + "2497" + ], + "geo_area_code": null + }, + { + "id": "3690", + "label": "floor coverings", + "alt_labels": [ + "flooring slab", + "flooring tile", + "tile" + ], + "related_ids": [], + "broader_ids": [ + "1826" + ], + "geo_area_code": null + }, + { + "id": "3691", + "label": "superconducting alloy", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3689" + ], + "geo_area_code": null + }, + { + "id": "3692", + "label": "composite materials", + "alt_labels": [ + "composite fibre materials" + ], + "related_ids": [], + "broader_ids": [ + "3689" + ], + "geo_area_code": null + }, + { + "id": "3693", + "label": "technical ceramics", + "alt_labels": [ + "fine ceramics" + ], + "related_ids": [ + "5359", + "989" + ], + "broader_ids": [ + "3689" + ], + "geo_area_code": null + }, + { + "id": "3694", + "label": "special polymer", + "alt_labels": [], + "related_ids": [ + "2545" + ], + "broader_ids": [ + "3689" + ], + "geo_area_code": null + }, + { + "id": "3695", + "label": "amorphous materials", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3689" + ], + "geo_area_code": null + }, + { + "id": "3696", + "label": "ultra-fine particle", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3689" + ], + "geo_area_code": null + }, + { + "id": "3697", + "label": "biomaterials", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3689" + ], + "geo_area_code": null + }, + { + "id": "3698", + "label": "shape-memory alloy", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3689" + ], + "geo_area_code": null + }, + { + "id": "3699", + "label": "constitutional revision", + "alt_labels": [ + "constitutional reform" + ], + "related_ids": [], + "broader_ids": [ + "148" + ], + "geo_area_code": null + }, + { + "id": "37", + "label": "jurisdiction ratione materiae", + "alt_labels": [ + "subject-matter jurisdiction" + ], + "related_ids": [], + "broader_ids": [ + "42" + ], + "geo_area_code": null + }, + { + "id": "370", + "label": "clearing of land", + "alt_labels": [], + "related_ids": [ + "339", + "4450" + ], + "broader_ids": [ + "4412" + ], + "geo_area_code": null + }, + { + "id": "3700", + "label": "ADN agreement", + "alt_labels": [ + "ADNR agreement", + "European Agreement concerning the International Carriage of Dangerous Goods on the Rhine" + ], + "related_ids": [ + "5457" + ], + "broader_ids": [ + "2040" + ], + "geo_area_code": null + }, + { + "id": "3701", + "label": "peripheral", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5613" + ], + "geo_area_code": null + }, + { + "id": "3702", + "label": "staggering of holidays", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4634" + ], + "geo_area_code": null + }, + { + "id": "3703", + "label": "amendment of a law", + "alt_labels": [ + "reform of a law" + ], + "related_ids": [], + "broader_ids": [ + "2702" + ], + "geo_area_code": null + }, + { + "id": "3704", + "label": "micro-computer", + "alt_labels": [ + "desk-top", + "lap-top", + "microcomputer", + "personal computer", + "portable computer" + ], + "related_ids": [ + "3023" + ], + "broader_ids": [ + "2157" + ], + "geo_area_code": null + }, + { + "id": "3705", + "label": "tourism policy", + "alt_labels": [], + "related_ids": [ + "3081", + "431" + ], + "broader_ids": [ + "4470" + ], + "geo_area_code": null + }, + { + "id": "3706", + "label": "transport insurance", + "alt_labels": [], + "related_ids": [ + "3160", + "730" + ], + "broader_ids": [ + "3151" + ], + "geo_area_code": null + }, + { + "id": "3707", + "label": "industrial revolution", + "alt_labels": [], + "related_ids": [ + "2922", + "5383", + "652" + ], + "broader_ids": [ + "2507" + ], + "geo_area_code": null + }, + { + "id": "3708", + "label": "International Labour Office", + "alt_labels": [ + "ILO (International Labour Office)" + ], + "related_ids": [ + "4543" + ], + "broader_ids": [ + "2130" + ], + "geo_area_code": null + }, + { + "id": "3709", + "label": "Ecosoc", + "alt_labels": [ + "UN Economic and Social Council", + "United Nations Economic and Social Council" + ], + "related_ids": [], + "broader_ids": [ + "2179" + ], + "geo_area_code": null + }, + { + "id": "371", + "label": "degradation of the environment", + "alt_labels": [ + "damage to the environment", + "deterioration of the environment", + "environmental damage", + "environmental degradation", + "environmental harm", + "harm to the environment" + ], + "related_ids": [ + "c_bb1a60eb" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "3710", + "label": "UNHCR", + "alt_labels": [ + "HCR", + "High Commissioner for Refugees", + "Office of the UN High Commissioner for Refugees", + "Office of the United Nations High Commissioner for Refugees", + "UN High Commissioner for Refugees", + "United Nations High Commissioner for Refugees" + ], + "related_ids": [ + "2986" + ], + "broader_ids": [ + "4365" + ], + "geo_area_code": null + }, + { + "id": "3711", + "label": "North Rhine-Westphalia", + "alt_labels": [ + "North Rhine-Westphalia (Land)" + ], + "related_ids": [], + "broader_ids": [ + "1329" + ], + "geo_area_code": null + }, + { + "id": "3713", + "label": "Rhineland-Palatinate", + "alt_labels": [ + "Rhineland-Palatinate (Land)" + ], + "related_ids": [], + "broader_ids": [ + "1329" + ], + "geo_area_code": null + }, + { + "id": "3714", + "label": "Rh\u00f4ne-Alpes", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "c_0a700c19" + ], + "geo_area_code": null + }, + { + "id": "3715", + "label": "European Atomic Energy Society", + "alt_labels": [ + "EAES" + ], + "related_ids": [ + "753" + ], + "broader_ids": [ + "2187" + ], + "geo_area_code": null + }, + { + "id": "3717", + "label": "Eurofound", + "alt_labels": [ + "Dublin Foundation", + "EFILWC", + "European Foundation for the Improvement of Living and Working Conditions" + ], + "related_ids": [], + "broader_ids": [ + "5769" + ], + "geo_area_code": null + }, + { + "id": "3718", + "label": "European University Institute", + "alt_labels": [ + "EUI", + "European Institute of Florence", + "European University Institute of Florence" + ], + "related_ids": [ + "5769", + "800" + ], + "broader_ids": [ + "2187" + ], + "geo_area_code": null + }, + { + "id": "372", + "label": "job access", + "alt_labels": [ + "access to the labour market", + "employment opportunity", + "job market", + "job perspective" + ], + "related_ids": [ + "4700", + "6754", + "688" + ], + "broader_ids": [ + "1802" + ], + "geo_area_code": null + }, + { + "id": "3720", + "label": "European Broadcasting Union", + "alt_labels": [ + "EBU (European Broadcasting Union)" + ], + "related_ids": [ + "2883" + ], + "broader_ids": [ + "2187" + ], + "geo_area_code": null + }, + { + "id": "3721", + "label": "wealth", + "alt_labels": [ + "fortune", + "riches" + ], + "related_ids": [ + "1322" + ], + "broader_ids": [ + "3319" + ], + "geo_area_code": null + }, + { + "id": "3722", + "label": "West African Economic and Monetary Union", + "alt_labels": [ + "CUWAS", + "Customs Union of West African States", + "WAEC", + "WAEMU", + "WAMU", + "West African Economic Community", + "West African Monetary Union" + ], + "related_ids": [ + "4607" + ], + "broader_ids": [ + "2167" + ], + "geo_area_code": null + }, + { + "id": "3723", + "label": "life assurance", + "alt_labels": [ + "endowment assurance", + "life insurance", + "whole life assurance" + ], + "related_ids": [], + "broader_ids": [ + "3151" + ], + "geo_area_code": null + }, + { + "id": "3724", + "label": "castor bean", + "alt_labels": [ + "castor seed", + "castor-oil plant" + ], + "related_ids": [ + "1270" + ], + "broader_ids": [ + "2414" + ], + "geo_area_code": null + }, + { + "id": "3725", + "label": "Asian and Pacific Development Centre", + "alt_labels": [ + "APDC" + ], + "related_ids": [], + "broader_ids": [ + "2172" + ], + "geo_area_code": null + }, + { + "id": "3727", + "label": "Central American Common Market", + "alt_labels": [ + "CACM" + ], + "related_ids": [ + "1792", + "1844" + ], + "broader_ids": [ + "2116" + ], + "geo_area_code": null + }, + { + "id": "3728", + "label": "insured risk", + "alt_labels": [ + "risk" + ], + "related_ids": [], + "broader_ids": [ + "165" + ], + "geo_area_code": null + }, + { + "id": "3729", + "label": "Development Assistance Committee", + "alt_labels": [ + "DAC" + ], + "related_ids": [], + "broader_ids": [ + "2105" + ], + "geo_area_code": null + }, + { + "id": "373", + "label": "school age", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2175" + ], + "geo_area_code": null + }, + { + "id": "3730", + "label": "health risk", + "alt_labels": [ + "danger of sickness" + ], + "related_ids": [ + "1445", + "4042", + "4308", + "6569", + "6741" + ], + "broader_ids": [ + "3885" + ], + "geo_area_code": null + }, + { + "id": "3731", + "label": "nuclear policy", + "alt_labels": [ + "abandonment of nuclear energy", + "nuclear programme" + ], + "related_ids": [ + "2498" + ], + "broader_ids": [ + "1412" + ], + "geo_area_code": null + }, + { + "id": "3732", + "label": "rice", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5360" + ], + "geo_area_code": null + }, + { + "id": "3733", + "label": "petroleum policy", + "alt_labels": [], + "related_ids": [ + "2498" + ], + "broader_ids": [ + "1414" + ], + "geo_area_code": null + }, + { + "id": "3734", + "label": "storage of hydrocarbons", + "alt_labels": [ + "cryogenic tank", + "gas holder", + "oil terminal", + "underground storage" + ], + "related_ids": [ + "4293" + ], + "broader_ids": [ + "1274" + ], + "geo_area_code": null + }, + { + "id": "3735", + "label": "decommissioning of power stations", + "alt_labels": [ + "decommissioning of nuclear installations" + ], + "related_ids": [ + "5350" + ], + "broader_ids": [ + "2498" + ], + "geo_area_code": null + }, + { + "id": "3736", + "label": "agro-energy", + "alt_labels": [ + "agro-energy system" + ], + "related_ids": [ + "4930" + ], + "broader_ids": [ + "2498" + ], + "geo_area_code": null + }, + { + "id": "3737", + "label": "energy industry", + "alt_labels": [ + "power industry" + ], + "related_ids": [ + "1412", + "3783", + "6921" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "3738", + "label": "gasohol", + "alt_labels": [], + "related_ids": [ + "1143", + "3771" + ], + "broader_ids": [ + "3739" + ], + "geo_area_code": null + }, + { + "id": "3739", + "label": "motor spirit", + "alt_labels": [ + "alcohol-powered engine" + ], + "related_ids": [ + "1143", + "1994" + ], + "broader_ids": [ + "6044" + ], + "geo_area_code": null + }, + { + "id": "374", + "label": "delinquency", + "alt_labels": [], + "related_ids": [ + "307", + "3179", + "3347", + "3516", + "4045", + "4742" + ], + "broader_ids": [ + "2690" + ], + "geo_area_code": null + }, + { + "id": "3740", + "label": "robotics", + "alt_labels": [], + "related_ids": [ + "3030", + "3293", + "3744" + ], + "broader_ids": [ + "1429" + ], + "geo_area_code": null + }, + { + "id": "3741", + "label": "energy-generating product", + "alt_labels": [], + "related_ids": [ + "1141", + "2715", + "5262", + "5386", + "747" + ], + "broader_ids": [ + "3737" + ], + "geo_area_code": null + }, + { + "id": "3743", + "label": "coal industry", + "alt_labels": [], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "3744", + "label": "robotisation", + "alt_labels": [ + "robotization", + "use of robots" + ], + "related_ids": [ + "3740" + ], + "broader_ids": [ + "3632" + ], + "geo_area_code": null + }, + { + "id": "3745", + "label": "coalmining policy", + "alt_labels": [ + "coal policy" + ], + "related_ids": [ + "2498" + ], + "broader_ids": [ + "3743" + ], + "geo_area_code": null + }, + { + "id": "3746", + "label": "coal processing", + "alt_labels": [ + "coal gasification", + "coal hydrogenation", + "coal liquefaction" + ], + "related_ids": [], + "broader_ids": [ + "3743" + ], + "geo_area_code": null + }, + { + "id": "3747", + "label": "ore deposit", + "alt_labels": [ + "mineral deposit", + "mineral seam", + "stratum" + ], + "related_ids": [], + "broader_ids": [ + "1411" + ], + "geo_area_code": null + }, + { + "id": "3748", + "label": "social role", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2270" + ], + "geo_area_code": null + }, + { + "id": "3749", + "label": "mining operation", + "alt_labels": [ + "deep mining", + "mine", + "open-cast pit", + "quarry" + ], + "related_ids": [], + "broader_ids": [ + "1411" + ], + "geo_area_code": null + }, + { + "id": "375", + "label": "juvenile delinquency", + "alt_labels": [], + "related_ids": [ + "1528", + "1546", + "6728" + ], + "broader_ids": [ + "374" + ], + "geo_area_code": null + }, + { + "id": "3750", + "label": "mining production", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1411" + ], + "geo_area_code": null + }, + { + "id": "3751", + "label": "pension scheme", + "alt_labels": [ + "State pension", + "occupational pension", + "old age pension", + "pension plan", + "retirement pension" + ], + "related_ids": [ + "2333", + "3623", + "5329", + "c_f5ed5adb" + ], + "broader_ids": [ + "2605" + ], + "geo_area_code": null + }, + { + "id": "3753", + "label": "mining of ore", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1411" + ], + "geo_area_code": null + }, + { + "id": "3754", + "label": "metallic ore", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2767" + ], + "geo_area_code": null + }, + { + "id": "3755", + "label": "bauxite", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1934" + ], + "geo_area_code": null + }, + { + "id": "3756", + "label": "bituminous materials", + "alt_labels": [ + "bituminous shale" + ], + "related_ids": [ + "1826", + "2366" + ], + "broader_ids": [ + "2767" + ], + "geo_area_code": null + }, + { + "id": "3757", + "label": "earths and stones", + "alt_labels": [ + "clay", + "granite", + "kaolin", + "marble", + "slate" + ], + "related_ids": [ + "6822" + ], + "broader_ids": [ + "2767" + ], + "geo_area_code": null + }, + { + "id": "3758", + "label": "salt", + "alt_labels": [], + "related_ids": [ + "4062" + ], + "broader_ids": [ + "1935" + ], + "geo_area_code": null + }, + { + "id": "3759", + "label": "bearing", + "alt_labels": [ + "ball bearing" + ], + "related_ids": [], + "broader_ids": [ + "1834" + ], + "geo_area_code": null + }, + { + "id": "376", + "label": "job application", + "alt_labels": [ + "application for employment", + "job applicant", + "job seeker", + "search for a job", + "search for employment" + ], + "related_ids": [], + "broader_ids": [ + "1802" + ], + "geo_area_code": null + }, + { + "id": "3760", + "label": "phosphate", + "alt_labels": [], + "related_ids": [ + "3810" + ], + "broader_ids": [ + "1935" + ], + "geo_area_code": null + }, + { + "id": "3761", + "label": "potash", + "alt_labels": [], + "related_ids": [ + "4062", + "764" + ], + "broader_ids": [ + "1935" + ], + "geo_area_code": null + }, + { + "id": "3763", + "label": "Romania", + "alt_labels": [], + "related_ids": [ + "8189" + ], + "broader_ids": [ + "122", + "2200", + "5087", + "5283", + "5781", + "914" + ], + "geo_area_code": "ROU" + }, + { + "id": "3764", + "label": "petroleum exploration", + "alt_labels": [ + "oil prospecting" + ], + "related_ids": [ + "1685", + "2821" + ], + "broader_ids": [ + "1414" + ], + "geo_area_code": null + }, + { + "id": "3765", + "label": "extraction of oil", + "alt_labels": [ + "oil extraction" + ], + "related_ids": [ + "941" + ], + "broader_ids": [ + "1414" + ], + "geo_area_code": null + }, + { + "id": "3766", + "label": "offshore oil structure", + "alt_labels": [ + "drilling rig", + "offshore drilling machinery", + "offshore equipment", + "offshore structure", + "oil platform", + "oil rig" + ], + "related_ids": [], + "broader_ids": [ + "1414" + ], + "geo_area_code": null + }, + { + "id": "3767", + "label": "petroleum production", + "alt_labels": [ + "oil production" + ], + "related_ids": [ + "2715" + ], + "broader_ids": [ + "1414" + ], + "geo_area_code": null + }, + { + "id": "3768", + "label": "butane", + "alt_labels": [], + "related_ids": [ + "1139" + ], + "broader_ids": [ + "2772" + ], + "geo_area_code": null + }, + { + "id": "3769", + "label": "paraffin", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2772" + ], + "geo_area_code": null + }, + { + "id": "377", + "label": "consumer demand", + "alt_labels": [], + "related_ids": [ + "771" + ], + "broader_ids": [ + "139" + ], + "geo_area_code": null + }, + { + "id": "3770", + "label": "crude oil", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2366" + ], + "geo_area_code": null + }, + { + "id": "3771", + "label": "petrol", + "alt_labels": [ + "four-star petrol", + "gasoline", + "standard petrol", + "super petrol" + ], + "related_ids": [ + "3738" + ], + "broader_ids": [ + "5262" + ], + "geo_area_code": null + }, + { + "id": "3772", + "label": "diesel fuel", + "alt_labels": [ + "diesel oil" + ], + "related_ids": [ + "6824" + ], + "broader_ids": [ + "5262" + ], + "geo_area_code": null + }, + { + "id": "3773", + "label": "fuel oil", + "alt_labels": [ + "domestic fuel oil", + "heavy fuel oil" + ], + "related_ids": [ + "5503" + ], + "broader_ids": [ + "2772" + ], + "geo_area_code": null + }, + { + "id": "3774", + "label": "United Kingdom", + "alt_labels": [ + "United Kingdom of Great Britain and Northern Ireland" + ], + "related_ids": [], + "broader_ids": [ + "122", + "2106", + "2200", + "913" + ], + "geo_area_code": "GBR" + }, + { + "id": "3775", + "label": "propane gas", + "alt_labels": [], + "related_ids": [ + "1139" + ], + "broader_ids": [ + "2772" + ], + "geo_area_code": null + }, + { + "id": "3776", + "label": "aviation fuel", + "alt_labels": [ + "kerosene" + ], + "related_ids": [ + "4505" + ], + "broader_ids": [ + "5262" + ], + "geo_area_code": null + }, + { + "id": "3777", + "label": "lead-free petrol", + "alt_labels": [], + "related_ids": [ + "3136" + ], + "broader_ids": [ + "3771" + ], + "geo_area_code": null + }, + { + "id": "3778", + "label": "United Kingdom OCT", + "alt_labels": [ + "British overseas countries and territories" + ], + "related_ids": [ + "2296" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "3779", + "label": "offshore oil", + "alt_labels": [], + "related_ids": [ + "3531" + ], + "broader_ids": [ + "2366" + ], + "geo_area_code": null + }, + { + "id": "378", + "label": "energy demand", + "alt_labels": [ + "energy needs", + "energy requirements" + ], + "related_ids": [], + "broader_ids": [ + "4886" + ], + "geo_area_code": null + }, + { + "id": "3780", + "label": "regions of the United Kingdom", + "alt_labels": [], + "related_ids": [ + "1290", + "3381" + ], + "broader_ids": [ + "3774" + ], + "geo_area_code": null + }, + { + "id": "3782", + "label": "power plant", + "alt_labels": [ + "coal-burning power station", + "electric power plant", + "geothermal power station", + "hydro-electric power plant", + "hydro-electric power station", + "oil-burning power station", + "power station", + "thermal power station" + ], + "related_ids": [ + "3785", + "5350", + "c_804a9afe" + ], + "broader_ids": [ + "3783" + ], + "geo_area_code": null + }, + { + "id": "3783", + "label": "electrical industry", + "alt_labels": [], + "related_ids": [ + "1400", + "1401", + "3737" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "3784", + "label": "Rwanda", + "alt_labels": [ + "Republic of Rwanda" + ], + "related_ids": [], + "broader_ids": [ + "357", + "5083", + "5107" + ], + "geo_area_code": "RWA" + }, + { + "id": "3785", + "label": "siting of power stations", + "alt_labels": [ + "layout of power stations" + ], + "related_ids": [ + "3782", + "3786", + "5350" + ], + "broader_ids": [ + "2498" + ], + "geo_area_code": null + }, + { + "id": "3786", + "label": "hydroelectric development", + "alt_labels": [], + "related_ids": [ + "1523", + "3785" + ], + "broader_ids": [ + "3783" + ], + "geo_area_code": null + }, + { + "id": "3788", + "label": "reactor cooling system", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4422" + ], + "geo_area_code": null + }, + { + "id": "3789", + "label": "nuclear chemistry", + "alt_labels": [ + "radioactivation", + "radioactive isotope", + "radioelement", + "radioisotopes" + ], + "related_ids": [ + "2376", + "5966" + ], + "broader_ids": [ + "4422" + ], + "geo_area_code": null + }, + { + "id": "379", + "label": "resignation of the government", + "alt_labels": [], + "related_ids": [ + "1172", + "1995", + "5830" + ], + "broader_ids": [ + "309" + ], + "geo_area_code": null + }, + { + "id": "3790", + "label": "astronomy", + "alt_labels": [ + "astrophysics" + ], + "related_ids": [], + "broader_ids": [ + "6382" + ], + "geo_area_code": null + }, + { + "id": "3792", + "label": "irradiated fuel", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "6047" + ], + "geo_area_code": null + }, + { + "id": "3793", + "label": "sucrose", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4314" + ], + "geo_area_code": null + }, + { + "id": "3795", + "label": "bioprocess", + "alt_labels": [ + "enzymatic engineering", + "fermentation process" + ], + "related_ids": [ + "6111" + ], + "broader_ids": [ + "3797" + ], + "geo_area_code": null + }, + { + "id": "3796", + "label": "bio-industry", + "alt_labels": [ + "bio-based industry", + "biotechnology industry", + "biotechnology-based industry" + ], + "related_ids": [ + "1415", + "3818", + "6044", + "656", + "666" + ], + "broader_ids": [ + "3797" + ], + "geo_area_code": null + }, + { + "id": "3797", + "label": "biotechnology", + "alt_labels": [ + "bioengineering" + ], + "related_ids": [ + "3408", + "4921" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "3798", + "label": "special chemicals", + "alt_labels": [], + "related_ids": [ + "1362" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "3799", + "label": "Western Sahara", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "311" + ], + "geo_area_code": "ESH" + }, + { + "id": "38", + "label": "central government", + "alt_labels": [ + "federal government" + ], + "related_ids": [], + "broader_ids": [ + "77" + ], + "geo_area_code": null + }, + { + "id": "380", + "label": "agency abroad", + "alt_labels": [ + "foreign representative" + ], + "related_ids": [ + "819" + ], + "broader_ids": [ + "871" + ], + "geo_area_code": null + }, + { + "id": "3800", + "label": "non-flat product", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4418" + ], + "geo_area_code": null + }, + { + "id": "3801", + "label": "flat product", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4418" + ], + "geo_area_code": null + }, + { + "id": "3802", + "label": "sheet", + "alt_labels": [ + "fine sheet", + "magnetic sheet", + "metal sheet", + "sheet metal" + ], + "related_ids": [], + "broader_ids": [ + "3801" + ], + "geo_area_code": null + }, + { + "id": "3803", + "label": "section", + "alt_labels": [ + " shapes and sections", + "angles", + "drawn bar" + ], + "related_ids": [], + "broader_ids": [ + "4418" + ], + "geo_area_code": null + }, + { + "id": "3804", + "label": "Sahel", + "alt_labels": [ + "Sahel countries" + ], + "related_ids": [ + "3988", + "415", + "416", + "4785" + ], + "broader_ids": [ + "5424" + ], + "geo_area_code": null + }, + { + "id": "3805", + "label": "thin sheet", + "alt_labels": [ + "film", + "thin layer" + ], + "related_ids": [], + "broader_ids": [ + "3801" + ], + "geo_area_code": null + }, + { + "id": "3806", + "label": "lard", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "240" + ], + "geo_area_code": null + }, + { + "id": "3808", + "label": "raw chemical industry", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1362" + ], + "geo_area_code": null + }, + { + "id": "3809", + "label": "chemical element", + "alt_labels": [], + "related_ids": [ + "1882", + "2133", + "2429", + "2739", + "4218", + "4617" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "381", + "label": "democracy", + "alt_labels": [ + "democratic equality", + "political pluralism" + ], + "related_ids": [ + "1614", + "382", + "383" + ], + "broader_ids": [ + "2370" + ], + "geo_area_code": null + }, + { + "id": "3810", + "label": "chemical compound", + "alt_labels": [], + "related_ids": [ + "2739", + "3760" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "3811", + "label": "paints and varnishes", + "alt_labels": [ + "varnish" + ], + "related_ids": [ + "4211" + ], + "broader_ids": [ + "3808" + ], + "geo_area_code": null + }, + { + "id": "3813", + "label": "medicinal product", + "alt_labels": [ + "medicament", + "medication" + ], + "related_ids": [ + "2950", + "3135", + "c_e307d2a8" + ], + "broader_ids": [ + "1415" + ], + "geo_area_code": null + }, + { + "id": "3814", + "label": "San Marino", + "alt_labels": [ + "Republic of San Marino" + ], + "related_ids": [], + "broader_ids": [ + "122", + "912", + "c_b2c019c8" + ], + "geo_area_code": "SMR" + }, + { + "id": "3815", + "label": "hormone", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2773" + ], + "geo_area_code": null + }, + { + "id": "3816", + "label": "Saint Martin", + "alt_labels": [ + "Collectivity of Saint Martin" + ], + "related_ids": [ + "451885" + ], + "broader_ids": [ + "1087", + "2032" + ], + "geo_area_code": "MAF" + }, + { + "id": "3817", + "label": "organic chemical", + "alt_labels": [ + "organic compound" + ], + "related_ids": [ + "2537", + "2739" + ], + "broader_ids": [ + "3810" + ], + "geo_area_code": null + }, + { + "id": "3818", + "label": "pesticides industry", + "alt_labels": [], + "related_ids": [ + "2985", + "3796" + ], + "broader_ids": [ + "3808" + ], + "geo_area_code": null + }, + { + "id": "382", + "label": "people's democracy", + "alt_labels": [], + "related_ids": [ + "32", + "381" + ], + "broader_ids": [ + "3025" + ], + "geo_area_code": null + }, + { + "id": "3820", + "label": "metallurgical industry", + "alt_labels": [ + "metallurgical production" + ], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "3821", + "label": "inter-company agreement", + "alt_labels": [ + "agreement between undertakings", + "producer's agreement" + ], + "related_ids": [], + "broader_ids": [ + "215" + ], + "geo_area_code": null + }, + { + "id": "3822", + "label": "Principality of Asturias", + "alt_labels": [ + "Asturias", + "Autonomous Community of the Principality of Asturias" + ], + "related_ids": [], + "broader_ids": [ + "864" + ], + "geo_area_code": null + }, + { + "id": "3823", + "label": "Saint Pierre and Miquelon", + "alt_labels": [ + "Territorial Collectivity of Saint Pierre and Miquelon" + ], + "related_ids": [], + "broader_ids": [ + "1087", + "1615" + ], + "geo_area_code": "SPM" + }, + { + "id": "3824", + "label": "iron and steel product", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1417" + ], + "geo_area_code": null + }, + { + "id": "3825", + "label": "bolt and screw industry", + "alt_labels": [ + "bolt", + "screw" + ], + "related_ids": [], + "broader_ids": [ + "3820" + ], + "geo_area_code": null + }, + { + "id": "3826", + "label": "tinplate and cutlery industry", + "alt_labels": [], + "related_ids": [ + "3841" + ], + "broader_ids": [ + "3820" + ], + "geo_area_code": null + }, + { + "id": "3827", + "label": "ironmongery", + "alt_labels": [ + "hardware article" + ], + "related_ids": [], + "broader_ids": [ + "3820" + ], + "geo_area_code": null + }, + { + "id": "3828", + "label": "iron product", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3820" + ], + "geo_area_code": null + }, + { + "id": "3829", + "label": "metal coating", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3820" + ], + "geo_area_code": null + }, + { + "id": "383", + "label": "democratisation", + "alt_labels": [ + "democratization" + ], + "related_ids": [ + "381" + ], + "broader_ids": [ + "2506" + ], + "geo_area_code": null + }, + { + "id": "3830", + "label": "Saint Helena", + "alt_labels": [ + "Ascension Island", + "Island of Saint Helena", + "Tristan da Cunha" + ], + "related_ids": [], + "broader_ids": [ + "351", + "3778" + ], + "geo_area_code": null + }, + { + "id": "3831", + "label": "iron and steel-working machinery", + "alt_labels": [ + "blast furnace", + "iron and steel-working equipment", + "rolling mill", + "section mill", + "strip mill", + "wire-rod mill" + ], + "related_ids": [ + "1077", + "1718", + "850" + ], + "broader_ids": [ + "1417" + ], + "geo_area_code": null + }, + { + "id": "3832", + "label": "special steels", + "alt_labels": [ + "special steel" + ], + "related_ids": [], + "broader_ids": [ + "3824" + ], + "geo_area_code": null + }, + { + "id": "3833", + "label": "Saint Lucia", + "alt_labels": [ + "St Lucia" + ], + "related_ids": [], + "broader_ids": [ + "2119", + "2362", + "5083", + "5265", + "c_b2c019c8" + ], + "geo_area_code": "LCA" + }, + { + "id": "3834", + "label": "antimony", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1885" + ], + "geo_area_code": null + }, + { + "id": "3835", + "label": "beryllium", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1885" + ], + "geo_area_code": null + }, + { + "id": "3836", + "label": "cadmium", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1885" + ], + "geo_area_code": null + }, + { + "id": "3837", + "label": "ferro-alloy", + "alt_labels": [], + "related_ids": [ + "1417" + ], + "broader_ids": [ + "1882" + ], + "geo_area_code": null + }, + { + "id": "3838", + "label": "tantalum", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1885" + ], + "geo_area_code": null + }, + { + "id": "3839", + "label": "seizure of goods", + "alt_labels": [ + "attachment", + "attachment of earnings", + "distraint", + "seizure by court order" + ], + "related_ids": [ + "1281", + "3959" + ], + "broader_ids": [ + "930" + ], + "geo_area_code": null + }, + { + "id": "384", + "label": "democratisation of education", + "alt_labels": [ + "democratization of education" + ], + "related_ids": [ + "684", + "785", + "796" + ], + "broader_ids": [ + "2467" + ], + "geo_area_code": null + }, + { + "id": "3840", + "label": "cycle and motorcycle industry", + "alt_labels": [ + "cycle industry", + "motorcycle industry" + ], + "related_ids": [ + "4653" + ], + "broader_ids": [ + "1410" + ], + "geo_area_code": null + }, + { + "id": "3841", + "label": "tool industry", + "alt_labels": [ + "implement" + ], + "related_ids": [ + "2204", + "2205", + "3826" + ], + "broader_ids": [ + "1410" + ], + "geo_area_code": null + }, + { + "id": "3842", + "label": "scientific apparatus", + "alt_labels": [ + "laboratory equipment", + "microscope", + "research equipment", + "scientific instrument", + "scientific material" + ], + "related_ids": [], + "broader_ids": [ + "1845" + ], + "geo_area_code": null + }, + { + "id": "3843", + "label": "pay", + "alt_labels": [ + "remuneration", + "salary", + "wages" + ], + "related_ids": [ + "1330", + "279", + "3854" + ], + "broader_ids": [ + "3273" + ], + "geo_area_code": null + }, + { + "id": "3844", + "label": "medical device", + "alt_labels": [ + "biomedical device", + "biomedical equipment", + "implant", + "medical and surgical instruments", + "medical apparatus", + "medical appliance", + "medical equipment", + "medical instrument", + "medical scanner", + "prosthesis", + "surgical device", + "surgical instrument", + "surgical material", + "therapeutic equipment" + ], + "related_ids": [ + "5305", + "5970", + "c_4ee83dea" + ], + "broader_ids": [ + "5764" + ], + "geo_area_code": null + }, + { + "id": "3845", + "label": "piece work pay", + "alt_labels": [ + "incentive pay", + "payment at piece rates", + "payment by results", + "piece work wages", + "remuneration by results" + ], + "related_ids": [ + "2728", + "6298" + ], + "broader_ids": [ + "3843" + ], + "geo_area_code": null + }, + { + "id": "3846", + "label": "cold store", + "alt_labels": [], + "related_ids": [ + "1390" + ], + "broader_ids": [ + "5615" + ], + "geo_area_code": null + }, + { + "id": "3847", + "label": "hourly wage", + "alt_labels": [ + "hourly pay" + ], + "related_ids": [], + "broader_ids": [ + "3843" + ], + "geo_area_code": null + }, + { + "id": "3848", + "label": "industrial robot", + "alt_labels": [ + "robot" + ], + "related_ids": [], + "broader_ids": [ + "3744" + ], + "geo_area_code": null + }, + { + "id": "3849", + "label": "wages for housework", + "alt_labels": [], + "related_ids": [ + "650" + ], + "broader_ids": [ + "2491" + ], + "geo_area_code": null + }, + { + "id": "385", + "label": "demography", + "alt_labels": [], + "related_ids": [ + "3326", + "3956" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "3850", + "label": "minimum pay", + "alt_labels": [ + "guaranteed wage", + "minimum wage" + ], + "related_ids": [ + "2575" + ], + "broader_ids": [ + "2491" + ], + "geo_area_code": null + }, + { + "id": "3851", + "label": "pump", + "alt_labels": [], + "related_ids": [ + "2549" + ], + "broader_ids": [ + "1718" + ], + "geo_area_code": null + }, + { + "id": "3853", + "label": "IATA", + "alt_labels": [ + "International Air Transport Association" + ], + "related_ids": [ + "4505" + ], + "broader_ids": [ + "2191" + ], + "geo_area_code": null + }, + { + "id": "3854", + "label": "wage earner", + "alt_labels": [ + "employed person", + "employee" + ], + "related_ids": [ + "3843" + ], + "broader_ids": [ + "4276" + ], + "geo_area_code": null + }, + { + "id": "3855", + "label": "audiovisual equipment", + "alt_labels": [ + "audio-visual equipment" + ], + "related_ids": [ + "5994", + "6769" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "3856", + "label": "sound reproduction equipment", + "alt_labels": [ + "electric gramophone", + "laser record player", + "record player" + ], + "related_ids": [], + "broader_ids": [ + "3855" + ], + "geo_area_code": null + }, + { + "id": "3857", + "label": "Solomon Islands", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1862", + "5083", + "8366", + "c_b2c019c8" + ], + "geo_area_code": "SLB" + }, + { + "id": "3858", + "label": "Samoa", + "alt_labels": [ + "Independent State of Samoa", + "Navigators' Islands", + "Western Samoa" + ], + "related_ids": [], + "broader_ids": [ + "2546", + "5083", + "8366", + "c_b2c019c8" + ], + "geo_area_code": "WSM" + }, + { + "id": "3859", + "label": "electric cable", + "alt_labels": [], + "related_ids": [ + "3860", + "747" + ], + "broader_ids": [ + "1401" + ], + "geo_area_code": null + }, + { + "id": "386", + "label": "denaturing", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4416" + ], + "geo_area_code": null + }, + { + "id": "3860", + "label": "telecommunications equipment", + "alt_labels": [ + "co-axial cable", + "optical fibre", + "telecommunications cable", + "telephone cable" + ], + "related_ids": [ + "3859" + ], + "broader_ids": [ + "4424" + ], + "geo_area_code": null + }, + { + "id": "3861", + "label": "household electrical appliance", + "alt_labels": [ + "dish-washing machine", + "domestic appliances", + "domestic electrical device", + "electrical heating appliances", + "freezer", + "hoover", + "household appliances", + "refrigerator", + "vacuum-cleaner", + "washing machine" + ], + "related_ids": [ + "2774" + ], + "broader_ids": [ + "1401" + ], + "geo_area_code": null + }, + { + "id": "3862", + "label": "administrative sanction", + "alt_labels": [ + "administrative penalty" + ], + "related_ids": [ + "7944" + ], + "broader_ids": [ + "517" + ], + "geo_area_code": null + }, + { + "id": "3863", + "label": "industrial electric machinery", + "alt_labels": [], + "related_ids": [ + "850" + ], + "broader_ids": [ + "3864" + ], + "geo_area_code": null + }, + { + "id": "3864", + "label": "electric machinery", + "alt_labels": [ + "alternator", + "electric motor", + "electricity generator", + "generating engine", + "generating set", + "transformer", + "turbo-alternator" + ], + "related_ids": [ + "1718", + "1994" + ], + "broader_ids": [ + "1401" + ], + "geo_area_code": null + }, + { + "id": "3865", + "label": "electro-magnetic equipment", + "alt_labels": [ + "electro-magnet", + "magnetic device" + ], + "related_ids": [], + "broader_ids": [ + "1401" + ], + "geo_area_code": null + }, + { + "id": "3866", + "label": "sanction (EU)", + "alt_labels": [ + "Community sanction", + "EU fine", + "EU fining policy", + "EU pecuniary sanction", + "EU penalty payment" + ], + "related_ids": [ + "1549" + ], + "broader_ids": [ + "5953" + ], + "geo_area_code": null + }, + { + "id": "3867", + "label": "video disc", + "alt_labels": [ + "DVD-video" + ], + "related_ids": [ + "7398" + ], + "broader_ids": [ + "3873" + ], + "geo_area_code": null + }, + { + "id": "3868", + "label": "video cassette", + "alt_labels": [], + "related_ids": [ + "7398" + ], + "broader_ids": [ + "3873" + ], + "geo_area_code": null + }, + { + "id": "3869", + "label": "recording medium", + "alt_labels": [], + "related_ids": [ + "1366" + ], + "broader_ids": [ + "3855" + ], + "geo_area_code": null + }, + { + "id": "387", + "label": "perishable goods", + "alt_labels": [ + "perishable commodity", + "perishable foodstuff" + ], + "related_ids": [ + "132", + "1590", + "4291", + "4509", + "5401", + "6569" + ], + "broader_ids": [ + "2735" + ], + "geo_area_code": null + }, + { + "id": "3870", + "label": "economic sanctions", + "alt_labels": [], + "related_ids": [ + "3584", + "c_c3185a19" + ], + "broader_ids": [ + "3474" + ], + "geo_area_code": null + }, + { + "id": "3871", + "label": "record", + "alt_labels": [ + "CD", + "DVD-audio", + "audio DVD", + "compact disc", + "disc" + ], + "related_ids": [ + "451" + ], + "broader_ids": [ + "3873" + ], + "geo_area_code": null + }, + { + "id": "3872", + "label": "optical medium", + "alt_labels": [ + "CD-ROM", + "DVD-ROM", + "digital optical disc", + "numerical optical disc", + "optical disc" + ], + "related_ids": [ + "5705" + ], + "broader_ids": [ + "3869" + ], + "geo_area_code": null + }, + { + "id": "3873", + "label": "recording", + "alt_labels": [ + "pre-recording" + ], + "related_ids": [ + "1366" + ], + "broader_ids": [ + "3855" + ], + "geo_area_code": null + }, + { + "id": "3874", + "label": "apparatus based on the use of rays", + "alt_labels": [ + "laser" + ], + "related_ids": [ + "4110", + "5306" + ], + "broader_ids": [ + "1400" + ], + "geo_area_code": null + }, + { + "id": "3875", + "label": "radio telecommunications", + "alt_labels": [ + "receiver", + "transmitter", + "walkie-talkie", + "wireless telecommunications" + ], + "related_ids": [], + "broader_ids": [ + "3860" + ], + "geo_area_code": null + }, + { + "id": "3876", + "label": "microelectronics", + "alt_labels": [], + "related_ids": [ + "1370", + "709", + "7931" + ], + "broader_ids": [ + "1400" + ], + "geo_area_code": null + }, + { + "id": "3878", + "label": "penalty", + "alt_labels": [ + "punishment", + "sentence" + ], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "3879", + "label": "building industry", + "alt_labels": [ + "building construction", + "construction industry" + ], + "related_ids": [ + "1396", + "2475", + "4565" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "388", + "label": "Euratom Supply Agency", + "alt_labels": [ + "EAEC Supply Agency", + "ESA", + "Supply Agency of the EAEC" + ], + "related_ids": [], + "broader_ids": [ + "5344" + ], + "geo_area_code": null + }, + { + "id": "3880", + "label": "prefabrication", + "alt_labels": [ + "prefabricated buildings" + ], + "related_ids": [], + "broader_ids": [ + "3879" + ], + "geo_area_code": null + }, + { + "id": "3881", + "label": "building slab", + "alt_labels": [], + "related_ids": [ + "169", + "988" + ], + "broader_ids": [ + "1826" + ], + "geo_area_code": null + }, + { + "id": "3882", + "label": "large-scale construction", + "alt_labels": [], + "related_ids": [ + "2206" + ], + "broader_ids": [ + "4565" + ], + "geo_area_code": null + }, + { + "id": "3883", + "label": "paperboard", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1375" + ], + "geo_area_code": null + }, + { + "id": "3884", + "label": "bonded wood", + "alt_labels": [ + "artificial wood", + "chipboard", + "particle board", + "reconstituted wood" + ], + "related_ids": [], + "broader_ids": [ + "2754" + ], + "geo_area_code": null + }, + { + "id": "3885", + "label": "public health", + "alt_labels": [ + "health of the population" + ], + "related_ids": [ + "1280", + "2836" + ], + "broader_ids": [ + "5764" + ], + "geo_area_code": null + }, + { + "id": "3886", + "label": "fancy leather goods and glove-making industry", + "alt_labels": [ + "fancy leather goods", + "fancy leather work", + "glove-making" + ], + "related_ids": [], + "broader_ids": [ + "1388" + ], + "geo_area_code": null + }, + { + "id": "3887", + "label": "hides and furskins industry", + "alt_labels": [ + "furs", + "tannery" + ], + "related_ids": [ + "2302", + "5245", + "5439" + ], + "broader_ids": [ + "1388" + ], + "geo_area_code": null + }, + { + "id": "3888", + "label": "S\u00e3o Tom\u00e9 and Pr\u00edncipe", + "alt_labels": [ + "Democratic Republic of S\u00e3o Tom\u00e9 and Pr\u00edncipe" + ], + "related_ids": [], + "broader_ids": [ + "302", + "5083", + "c_b2c019c8" + ], + "geo_area_code": "STP" + }, + { + "id": "389", + "label": "population density", + "alt_labels": [], + "related_ids": [ + "4231", + "4343" + ], + "broader_ids": [ + "3300" + ], + "geo_area_code": null + }, + { + "id": "3890", + "label": "haberdashery", + "alt_labels": [ + "trimmings" + ], + "related_ids": [], + "broader_ids": [ + "1418" + ], + "geo_area_code": null + }, + { + "id": "3891", + "label": "Sardinia", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1520" + ], + "geo_area_code": null + }, + { + "id": "3892", + "label": "man-made fibre", + "alt_labels": [ + "acrylic fibre", + "artificial fibre", + "chemical fibre", + "nylon", + "polyamide", + "rayon", + "synthetic cloth", + "synthetic fibre" + ], + "related_ids": [], + "broader_ids": [ + "2783" + ], + "geo_area_code": null + }, + { + "id": "3893", + "label": "natural fibre", + "alt_labels": [], + "related_ids": [ + "1564", + "1667", + "252", + "4207" + ], + "broader_ids": [ + "2783" + ], + "geo_area_code": null + }, + { + "id": "3895", + "label": "miscellaneous industries", + "alt_labels": [], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "3896", + "label": "private limited company", + "alt_labels": [ + "limited liability company", + "private limited-liability company" + ], + "related_ids": [], + "broader_ids": [ + "4193" + ], + "geo_area_code": null + }, + { + "id": "3897", + "label": "jewellery and goldsmith's articles", + "alt_labels": [ + "goldsmith's article", + "jewellery" + ], + "related_ids": [ + "2381" + ], + "broader_ids": [ + "3895" + ], + "geo_area_code": null + }, + { + "id": "3898", + "label": "buckwheat", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5360" + ], + "geo_area_code": null + }, + { + "id": "3899", + "label": "social rights", + "alt_labels": [ + "economic and social rights", + "social freedom" + ], + "related_ids": [ + "5484" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "39", + "label": "executive competence", + "alt_labels": [], + "related_ids": [ + "2577", + "2580", + "2800", + "4182" + ], + "broader_ids": [ + "3062" + ], + "geo_area_code": null + }, + { + "id": "390", + "label": "department (France)", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "6034" + ], + "geo_area_code": null + }, + { + "id": "3900", + "label": "political rights", + "alt_labels": [ + "political freedom" + ], + "related_ids": [ + "470" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "3901", + "label": "economic rights", + "alt_labels": [], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "3902", + "label": "charter on human rights", + "alt_labels": [ + "bill of human rights", + "convention on human rights", + "declaration of human rights", + "international charter on human rights" + ], + "related_ids": [ + "5326" + ], + "broader_ids": [ + "584" + ], + "geo_area_code": null + }, + { + "id": "3903", + "label": "Saarland", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1329" + ], + "geo_area_code": null + }, + { + "id": "3904", + "label": "atheism", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3257" + ], + "geo_area_code": null + }, + { + "id": "3905", + "label": "satellite", + "alt_labels": [ + "artificial satellite", + "man-made satellite" + ], + "related_ids": [ + "1358", + "30", + "4426" + ], + "broader_ids": [ + "3093" + ], + "geo_area_code": null + }, + { + "id": "3906", + "label": "freedom of movement", + "alt_labels": [ + "freedom to travel", + "right to freedom of movement", + "right to move freely" + ], + "related_ids": [ + "1633", + "1634", + "1913", + "5491" + ], + "broader_ids": [ + "538" + ], + "geo_area_code": null + }, + { + "id": "3907", + "label": "job satisfaction", + "alt_labels": [ + "occupational satisfaction", + "professional satisfaction", + "worker motivation" + ], + "related_ids": [], + "broader_ids": [ + "2857" + ], + "geo_area_code": null + }, + { + "id": "3908", + "label": "anti-discriminatory measure", + "alt_labels": [ + "anti-discrimination Act", + "discrimination", + "discriminatory treatment", + "measures to combat discrimination" + ], + "related_ids": [ + "6081", + "688" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "3909", + "label": "know-how", + "alt_labels": [], + "related_ids": [ + "1347", + "213", + "2208", + "2816", + "3587" + ], + "broader_ids": [ + "4415" + ], + "geo_area_code": null + }, + { + "id": "391", + "label": "overseas department (France)", + "alt_labels": [], + "related_ids": [ + "1086" + ], + "broader_ids": [ + "6034" + ], + "geo_area_code": null + }, + { + "id": "3910", + "label": "ethnic discrimination", + "alt_labels": [], + "related_ids": [ + "1202" + ], + "broader_ids": [ + "3908" + ], + "geo_area_code": null + }, + { + "id": "3911", + "label": "sexual freedom", + "alt_labels": [], + "related_ids": [ + "7389" + ], + "broader_ids": [ + "538" + ], + "geo_area_code": null + }, + { + "id": "3912", + "label": "xenophobia", + "alt_labels": [], + "related_ids": [ + "6219" + ], + "broader_ids": [ + "3908" + ], + "geo_area_code": null + }, + { + "id": "3913", + "label": "gender equality", + "alt_labels": [ + "GII", + "equal rights of men and women", + "equality between men and women", + "gender disparity", + "gender equality index", + "gender equity", + "gender inequality", + "gender inequality index" + ], + "related_ids": [ + "2003", + "447756", + "585", + "687", + "81", + "c_a1497409" + ], + "broader_ids": [ + "3899" + ], + "geo_area_code": null + }, + { + "id": "3914", + "label": "academic freedom", + "alt_labels": [ + "educational freedom", + "freedom of education" + ], + "related_ids": [ + "794", + "796" + ], + "broader_ids": [ + "3899" + ], + "geo_area_code": null + }, + { + "id": "3915", + "label": "right to development", + "alt_labels": [], + "related_ids": [ + "2087", + "2295", + "3077", + "c_1137acd8" + ], + "broader_ids": [ + "3901" + ], + "geo_area_code": null + }, + { + "id": "3916", + "label": "children's rights", + "alt_labels": [], + "related_ids": [ + "1133", + "2823", + "3312", + "3919", + "3968", + "4552", + "5296", + "6132", + "8448" + ], + "broader_ids": [ + "538" + ], + "geo_area_code": null + }, + { + "id": "3917", + "label": "cruel and degrading treatment", + "alt_labels": [], + "related_ids": [ + "3962", + "4467" + ], + "broader_ids": [ + "538" + ], + "geo_area_code": null + }, + { + "id": "3918", + "label": "Schleswig-Holstein", + "alt_labels": [ + "Schleswig-Holstein (Land)" + ], + "related_ids": [], + "broader_ids": [ + "1329" + ], + "geo_area_code": null + }, + { + "id": "3919", + "label": "child protection", + "alt_labels": [ + "child abuse", + "child soldier", + "ill-treated child", + "moral protection of children" + ], + "related_ids": [ + "2823", + "3916", + "4552", + "6132", + "6553", + "6738", + "759", + "c_16e35fe6", + "c_58d943b0" + ], + "broader_ids": [ + "2517" + ], + "geo_area_code": null + }, + { + "id": "392", + "label": "expenditure", + "alt_labels": [], + "related_ids": [ + "394", + "5576" + ], + "broader_ids": [ + "3602" + ], + "geo_area_code": null + }, + { + "id": "3920", + "label": "crime against humanity", + "alt_labels": [ + "Holocaust", + "crime under international law", + "genocide" + ], + "related_ids": [ + "8415" + ], + "broader_ids": [ + "564" + ], + "geo_area_code": null + }, + { + "id": "3921", + "label": "retroactivity of a law", + "alt_labels": [ + "retroactive effect", + "retroactivity" + ], + "related_ids": [], + "broader_ids": [ + "1697" + ], + "geo_area_code": null + }, + { + "id": "3922", + "label": "comparative law", + "alt_labels": [], + "related_ids": [ + "6269" + ], + "broader_ids": [ + "3935" + ], + "geo_area_code": null + }, + { + "id": "3923", + "label": "administrative science", + "alt_labels": [], + "related_ids": [ + "2166", + "517", + "77" + ], + "broader_ids": [ + "3956" + ], + "geo_area_code": null + }, + { + "id": "3924", + "label": "local legislation", + "alt_labels": [ + "bye-law", + "local law", + "municipal law" + ], + "related_ids": [ + "6034", + "68" + ], + "broader_ids": [ + "1589" + ], + "geo_area_code": null + }, + { + "id": "3925", + "label": "information science", + "alt_labels": [ + "documentology" + ], + "related_ids": [ + "1422", + "2472", + "3026", + "3585", + "4366", + "4486", + "494" + ], + "broader_ids": [ + "3949" + ], + "geo_area_code": null + }, + { + "id": "3926", + "label": "civil liability", + "alt_labels": [], + "related_ids": [ + "3673", + "4695", + "6401" + ], + "broader_ids": [ + "3497" + ], + "geo_area_code": null + }, + { + "id": "3927", + "label": "contractual liability", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3497" + ], + "geo_area_code": null + }, + { + "id": "3928", + "label": "behavioural sciences", + "alt_labels": [ + "behavioural psychology", + "behaviourism" + ], + "related_ids": [ + "7195" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "3929", + "label": "ownership", + "alt_labels": [ + "law of property", + "property law", + "property right", + "system of property" + ], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "393", + "label": "food expenditure", + "alt_labels": [], + "related_ids": [ + "1225", + "1268", + "2640", + "274" + ], + "broader_ids": [ + "139" + ], + "geo_area_code": null + }, + { + "id": "3930", + "label": "atlas", + "alt_labels": [ + "map" + ], + "related_ids": [ + "5269" + ], + "broader_ids": [ + "486" + ], + "geo_area_code": null + }, + { + "id": "3931", + "label": "soil science", + "alt_labels": [ + "agrology", + "pedology", + "soil mechanics" + ], + "related_ids": [ + "1483", + "2534", + "3158", + "3536" + ], + "broader_ids": [ + "3952" + ], + "geo_area_code": null + }, + { + "id": "3932", + "label": "privatisation", + "alt_labels": [ + "denationalisation", + "privatization" + ], + "related_ids": [ + "830" + ], + "broader_ids": [ + "3929" + ], + "geo_area_code": null + }, + { + "id": "3933", + "label": "economics", + "alt_labels": [ + "economic science", + "economic theory", + "political economics", + "political economy" + ], + "related_ids": [ + "1728", + "1901", + "634", + "637", + "c_87ccc7c3", + "c_a9a17fe5" + ], + "broader_ids": [ + "3956" + ], + "geo_area_code": null + }, + { + "id": "3934", + "label": "inheritance", + "alt_labels": [ + "succession", + "testament", + "will" + ], + "related_ids": [], + "broader_ids": [ + "4503" + ], + "geo_area_code": null + }, + { + "id": "3935", + "label": "legal science", + "alt_labels": [ + "law" + ], + "related_ids": [ + "1550" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "3936", + "label": "law of succession", + "alt_labels": [], + "related_ids": [ + "1324" + ], + "broader_ids": [ + "3929" + ], + "geo_area_code": null + }, + { + "id": "3937", + "label": "time-sharing", + "alt_labels": [ + "multi-ownership" + ], + "related_ids": [], + "broader_ids": [ + "3929" + ], + "geo_area_code": null + }, + { + "id": "3938", + "label": "easement", + "alt_labels": [ + "right of access", + "right of way" + ], + "related_ids": [], + "broader_ids": [ + "3929" + ], + "geo_area_code": null + }, + { + "id": "3939", + "label": "enjoyment of rights", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4274" + ], + "geo_area_code": null + }, + { + "id": "394", + "label": "budgetary expenditure", + "alt_labels": [], + "related_ids": [ + "3558", + "392", + "5050", + "5576", + "763" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "3940", + "label": "legal domicile", + "alt_labels": [], + "related_ids": [ + "3460" + ], + "broader_ids": [ + "4274" + ], + "geo_area_code": null + }, + { + "id": "3941", + "label": "life sciences", + "alt_labels": [ + "natural sciences" + ], + "related_ids": [ + "5881" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "3942", + "label": "financial solvency", + "alt_labels": [ + "financial insolvency" + ], + "related_ids": [ + "1130", + "2495", + "423", + "424", + "742", + "8432", + "c_d6e0eb67" + ], + "broader_ids": [ + "1129" + ], + "geo_area_code": null + }, + { + "id": "3943", + "label": "crime against individuals", + "alt_labels": [], + "related_ids": [ + "4728" + ], + "broader_ids": [ + "1432" + ], + "geo_area_code": null + }, + { + "id": "3944", + "label": "crime against property", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1432" + ], + "geo_area_code": null + }, + { + "id": "3945", + "label": "illegal restraint", + "alt_labels": [ + "abduction", + "hostage", + "taking of hostages" + ], + "related_ids": [ + "3348", + "4452", + "769" + ], + "broader_ids": [ + "3943" + ], + "geo_area_code": null + }, + { + "id": "3946", + "label": "physical sciences", + "alt_labels": [ + "physics" + ], + "related_ids": [ + "1152" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "3947", + "label": "political science", + "alt_labels": [], + "related_ids": [ + "1150", + "1282", + "2370", + "3025", + "3474", + "4704", + "c_d8ba2fe4" + ], + "broader_ids": [ + "3956" + ], + "geo_area_code": null + }, + { + "id": "3948", + "label": "customs fraud", + "alt_labels": [], + "related_ids": [ + "1092" + ], + "broader_ids": [ + "3156" + ], + "geo_area_code": null + }, + { + "id": "3949", + "label": "applied sciences", + "alt_labels": [], + "related_ids": [ + "2916" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "395", + "label": "press agency", + "alt_labels": [ + "news agency" + ], + "related_ids": [], + "broader_ids": [ + "2599" + ], + "geo_area_code": null + }, + { + "id": "3950", + "label": "defamation", + "alt_labels": [ + "libel", + "slander" + ], + "related_ids": [], + "broader_ids": [ + "3943" + ], + "geo_area_code": null + }, + { + "id": "3951", + "label": "tax offence", + "alt_labels": [ + "tax crime" + ], + "related_ids": [ + "561", + "924" + ], + "broader_ids": [ + "574" + ], + "geo_area_code": null + }, + { + "id": "3952", + "label": "earth sciences", + "alt_labels": [], + "related_ids": [ + "833" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "3953", + "label": "imprisonment", + "alt_labels": [ + "deprivation of liberty", + "detention", + "solitary confinement" + ], + "related_ids": [], + "broader_ids": [ + "3878" + ], + "geo_area_code": null + }, + { + "id": "3954", + "label": "law relating to prisons", + "alt_labels": [], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "3955", + "label": "prisoner", + "alt_labels": [ + "prison inmate" + ], + "related_ids": [ + "2630" + ], + "broader_ids": [ + "3954" + ], + "geo_area_code": null + }, + { + "id": "3956", + "label": "social sciences", + "alt_labels": [ + "humanities" + ], + "related_ids": [ + "1820", + "385", + "4706", + "6387" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "3957", + "label": "alternative sentence", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3878" + ], + "geo_area_code": null + }, + { + "id": "3958", + "label": "conditional discharge", + "alt_labels": [ + "conditional release" + ], + "related_ids": [], + "broader_ids": [ + "3878" + ], + "geo_area_code": null + }, + { + "id": "3959", + "label": "confiscation of property", + "alt_labels": [], + "related_ids": [ + "3839" + ], + "broader_ids": [ + "3878" + ], + "geo_area_code": null + }, + { + "id": "396", + "label": "consumption expenditure", + "alt_labels": [], + "related_ids": [ + "274", + "5056", + "771" + ], + "broader_ids": [ + "139" + ], + "geo_area_code": null + }, + { + "id": "3960", + "label": "reduction of sentence", + "alt_labels": [], + "related_ids": [ + "5142" + ], + "broader_ids": [ + "5631" + ], + "geo_area_code": null + }, + { + "id": "3961", + "label": "transfer of prisoners", + "alt_labels": [], + "related_ids": [ + "217" + ], + "broader_ids": [ + "3954" + ], + "geo_area_code": null + }, + { + "id": "3962", + "label": "prison system", + "alt_labels": [ + "conditions of detention", + "conditions of imprisonment", + "isolation", + "parole", + "prison conditions" + ], + "related_ids": [ + "3917" + ], + "broader_ids": [ + "3954" + ], + "geo_area_code": null + }, + { + "id": "3963", + "label": "prison administration", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3954" + ], + "geo_area_code": null + }, + { + "id": "3964", + "label": "political split", + "alt_labels": [ + "party split" + ], + "related_ids": [], + "broader_ids": [ + "2180" + ], + "geo_area_code": null + }, + { + "id": "3965", + "label": "limitation of legal proceedings", + "alt_labels": [ + "limitation", + "procedural time limit" + ], + "related_ids": [], + "broader_ids": [ + "2913" + ], + "geo_area_code": null + }, + { + "id": "3966", + "label": "legal hearing", + "alt_labels": [ + "trial" + ], + "related_ids": [], + "broader_ids": [ + "2701" + ], + "geo_area_code": null + }, + { + "id": "3967", + "label": "atmosphere", + "alt_labels": [ + "air", + "stratosphere" + ], + "related_ids": [ + "2527", + "89" + ], + "broader_ids": [ + "833" + ], + "geo_area_code": null + }, + { + "id": "3968", + "label": "schooling", + "alt_labels": [], + "related_ids": [ + "3916", + "5266", + "789" + ], + "broader_ids": [ + "2467" + ], + "geo_area_code": null + }, + { + "id": "3969", + "label": "legal aid", + "alt_labels": [ + "legal assistance" + ], + "related_ids": [ + "8480" + ], + "broader_ids": [ + "5400" + ], + "geo_area_code": null + }, + { + "id": "397", + "label": "administrative expenditure", + "alt_labels": [ + "administrative appropriations" + ], + "related_ids": [ + "5577" + ], + "broader_ids": [ + "394" + ], + "geo_area_code": null + }, + { + "id": "3970", + "label": "arrest", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2704" + ], + "geo_area_code": null + }, + { + "id": "3971", + "label": "judicial inquiry", + "alt_labels": [ + "police inquiry" + ], + "related_ids": [], + "broader_ids": [ + "2704" + ], + "geo_area_code": null + }, + { + "id": "3972", + "label": "search", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2704" + ], + "geo_area_code": null + }, + { + "id": "3973", + "label": "detention before trial", + "alt_labels": [], + "related_ids": [ + "516" + ], + "broader_ids": [ + "2704" + ], + "geo_area_code": null + }, + { + "id": "3974", + "label": "rights of the defence", + "alt_labels": [ + "presumption of innocence", + "right to counsel's visits", + "rights of the accused" + ], + "related_ids": [ + "5400" + ], + "broader_ids": [ + "2701" + ], + "geo_area_code": null + }, + { + "id": "3975", + "label": "double-ballot voting system", + "alt_labels": [ + "two-ballot voting system" + ], + "related_ids": [], + "broader_ids": [ + "3981" + ], + "geo_area_code": null + }, + { + "id": "3976", + "label": "single-ballot system", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3981" + ], + "geo_area_code": null + }, + { + "id": "3977", + "label": "list voting system", + "alt_labels": [ + "plurinominal voting system" + ], + "related_ids": [], + "broader_ids": [ + "1953" + ], + "geo_area_code": null + }, + { + "id": "3978", + "label": "EC action to establish liability", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5836" + ], + "geo_area_code": null + }, + { + "id": "3979", + "label": "action by staff", + "alt_labels": [ + "action by officials" + ], + "related_ids": [ + "1048" + ], + "broader_ids": [ + "5836" + ], + "geo_area_code": null + }, + { + "id": "398", + "label": "extra-budgetary expenditure", + "alt_labels": [], + "related_ids": [ + "5062" + ], + "broader_ids": [ + "394" + ], + "geo_area_code": null + }, + { + "id": "3980", + "label": "preliminary ruling procedure", + "alt_labels": [ + "preliminary ruling proceedings", + "reference to a Community court for a preliminary ruling", + "reference to the EC Court of Justice for a preliminary ruling", + "reference to the EC Court of Justice for an interpretation" + ], + "related_ids": [ + "1484", + "5832" + ], + "broader_ids": [ + "5836" + ], + "geo_area_code": null + }, + { + "id": "3981", + "label": "majority voting system", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1953" + ], + "geo_area_code": null + }, + { + "id": "3982", + "label": "uninominal voting system", + "alt_labels": [ + "single-constituency voting system", + "voting for a single candidate" + ], + "related_ids": [], + "broader_ids": [ + "1953" + ], + "geo_area_code": null + }, + { + "id": "3983", + "label": "commercial court", + "alt_labels": [ + "commercial tribunal" + ], + "related_ids": [ + "524" + ], + "broader_ids": [ + "1543" + ], + "geo_area_code": null + }, + { + "id": "3984", + "label": "parliamentary sitting", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2703" + ], + "geo_area_code": null + }, + { + "id": "3985", + "label": "court of arbitration", + "alt_labels": [ + "arbitration tribunal" + ], + "related_ids": [], + "broader_ids": [ + "5691" + ], + "geo_area_code": null + }, + { + "id": "3986", + "label": "international court", + "alt_labels": [ + "international tribunal" + ], + "related_ids": [ + "2380", + "258", + "565", + "7137", + "7193" + ], + "broader_ids": [ + "5691" + ], + "geo_area_code": null + }, + { + "id": "3987", + "label": "fiscal court", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5691" + ], + "geo_area_code": null + }, + { + "id": "3988", + "label": "drought", + "alt_labels": [ + "fight against drought" + ], + "related_ids": [ + "3804", + "4785", + "6407" + ], + "broader_ids": [ + "413" + ], + "geo_area_code": null + }, + { + "id": "3989", + "label": "legal adviser", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2124" + ], + "geo_area_code": null + }, + { + "id": "399", + "label": "national expenditure", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "536" + ], + "geo_area_code": null + }, + { + "id": "3990", + "label": "lay magistrate", + "alt_labels": [ + "juror", + "jury", + "justice of the peace", + "people's jury" + ], + "related_ids": [ + "8458" + ], + "broader_ids": [ + "2351" + ], + "geo_area_code": null + }, + { + "id": "3992", + "label": "maritime area", + "alt_labels": [], + "related_ids": [ + "2423", + "2476", + "4790" + ], + "broader_ids": [ + "542" + ], + "geo_area_code": null + }, + { + "id": "3993", + "label": "threat to national security", + "alt_labels": [ + "crime against the peace", + "crime against the security of the State", + "security of the State" + ], + "related_ids": [ + "2162", + "5884" + ], + "broader_ids": [ + "1432" + ], + "geo_area_code": null + }, + { + "id": "3994", + "label": "banking secrecy", + "alt_labels": [], + "related_ids": [ + "4000", + "924" + ], + "broader_ids": [ + "2149" + ], + "geo_area_code": null + }, + { + "id": "3995", + "label": "maritime surveillance", + "alt_labels": [ + "policing the high seas" + ], + "related_ids": [ + "5889" + ], + "broader_ids": [ + "542" + ], + "geo_area_code": null + }, + { + "id": "3996", + "label": "freedom of the seas", + "alt_labels": [ + "principle of the freedom of the seas" + ], + "related_ids": [], + "broader_ids": [ + "542" + ], + "geo_area_code": null + }, + { + "id": "3997", + "label": "industrial secret", + "alt_labels": [], + "related_ids": [ + "2922", + "4000" + ], + "broader_ids": [ + "3632" + ], + "geo_area_code": null + }, + { + "id": "3998", + "label": "extra-atmospheric space", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "537" + ], + "geo_area_code": null + }, + { + "id": "3999", + "label": "space property right", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "537" + ], + "geo_area_code": null + }, + { + "id": "4", + "label": "State trading", + "alt_labels": [ + "State-trading countries" + ], + "related_ids": [], + "broader_ids": [ + "2449" + ], + "geo_area_code": null + }, + { + "id": "40", + "label": "40 BUSINESS AND COMPETITION", + "alt_labels": [], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "400", + "label": "non-compulsory expenditure", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5576" + ], + "geo_area_code": null + }, + { + "id": "4000", + "label": "professional secret", + "alt_labels": [], + "related_ids": [ + "3370", + "3566", + "3994", + "3997", + "6566" + ], + "broader_ids": [ + "557" + ], + "geo_area_code": null + }, + { + "id": "4001", + "label": "use of outer space", + "alt_labels": [ + "peaceful use of outer space", + "space exploration" + ], + "related_ids": [ + "1930", + "4185" + ], + "broader_ids": [ + "537" + ], + "geo_area_code": null + }, + { + "id": "4002", + "label": "UN Secretariat", + "alt_labels": [ + "United Nations Secretariat" + ], + "related_ids": [], + "broader_ids": [ + "2179" + ], + "geo_area_code": null + }, + { + "id": "4003", + "label": "foreign national", + "alt_labels": [ + "alien", + "national of a third country" + ], + "related_ids": [ + "2300", + "2509", + "5592", + "583", + "688", + "950" + ], + "broader_ids": [ + "3521" + ], + "geo_area_code": null + }, + { + "id": "4004", + "label": "residence permit", + "alt_labels": [ + "residence of aliens" + ], + "related_ids": [ + "2330", + "2509", + "4562", + "5491", + "898" + ], + "broader_ids": [ + "552" + ], + "geo_area_code": null + }, + { + "id": "4005", + "label": "admission of aliens", + "alt_labels": [ + "tourist visa", + "visa" + ], + "related_ids": [ + "185", + "4470" + ], + "broader_ids": [ + "552" + ], + "geo_area_code": null + }, + { + "id": "4006", + "label": "economic sector", + "alt_labels": [], + "related_ids": [ + "4302", + "5992" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "4007", + "label": "mixed marriage", + "alt_labels": [ + "marriage to a foreigner" + ], + "related_ids": [ + "566" + ], + "broader_ids": [ + "1818" + ], + "geo_area_code": null + }, + { + "id": "4008", + "label": "primary sector", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4006" + ], + "geo_area_code": null + }, + { + "id": "4009", + "label": "international law - national law", + "alt_labels": [ + "national law - international law" + ], + "related_ids": [], + "broader_ids": [ + "565" + ], + "geo_area_code": null + }, + { + "id": "401", + "label": "compulsory expenditure", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5576" + ], + "geo_area_code": null + }, + { + "id": "4010", + "label": "international economic law", + "alt_labels": [], + "related_ids": [ + "4371", + "521", + "539", + "550", + "828" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "4011", + "label": "administrative responsibility", + "alt_labels": [ + "civil servant's responsibility", + "responsibility of an administration" + ], + "related_ids": [ + "5838" + ], + "broader_ids": [ + "517" + ], + "geo_area_code": null + }, + { + "id": "4012", + "label": "public economic law", + "alt_labels": [], + "related_ids": [ + "1018", + "2462", + "578", + "830", + "878" + ], + "broader_ids": [ + "517" + ], + "geo_area_code": null + }, + { + "id": "4013", + "label": "quaternary sector", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4006" + ], + "geo_area_code": null + }, + { + "id": "4016", + "label": "secondary sector", + "alt_labels": [ + "industrial sector" + ], + "related_ids": [ + "2720" + ], + "broader_ids": [ + "4006" + ], + "geo_area_code": null + }, + { + "id": "4017", + "label": "EU legal system", + "alt_labels": [ + "Community legal system", + "European Union legal system" + ], + "related_ids": [ + "5923" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "4018", + "label": "secondary legislation", + "alt_labels": [ + "EC secondary legislation" + ], + "related_ids": [ + "5258" + ], + "broader_ids": [ + "525" + ], + "geo_area_code": null + }, + { + "id": "4019", + "label": "EAEC Directive", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5344" + ], + "geo_area_code": null + }, + { + "id": "402", + "label": "operational expenditure", + "alt_labels": [], + "related_ids": [ + "5579" + ], + "broader_ids": [ + "394" + ], + "geo_area_code": null + }, + { + "id": "4021", + "label": "tertiary sector", + "alt_labels": [ + "services sector" + ], + "related_ids": [ + "1384", + "1638", + "4099", + "5206", + "8469" + ], + "broader_ids": [ + "4006" + ], + "geo_area_code": null + }, + { + "id": "4023", + "label": "implementing Regulation", + "alt_labels": [ + "Commission Implementing Regulation", + "Council Implementing Regulation" + ], + "related_ids": [], + "broader_ids": [ + "3102" + ], + "geo_area_code": null + }, + { + "id": "4024", + "label": "EAEC opinion", + "alt_labels": [], + "related_ids": [ + "6284" + ], + "broader_ids": [ + "5344" + ], + "geo_area_code": null + }, + { + "id": "4025", + "label": "security of supply", + "alt_labels": [ + "availability of supplies", + "problems of supply", + "supply difficulties" + ], + "related_ids": [], + "broader_ids": [ + "2292" + ], + "geo_area_code": null + }, + { + "id": "4026", + "label": "ECSC opinion", + "alt_labels": [], + "related_ids": [ + "6284" + ], + "broader_ids": [ + "5327" + ], + "geo_area_code": null + }, + { + "id": "4027", + "label": "opinion of the Court of Justice (EU)", + "alt_labels": [ + "opinion of the EC Court of Justice" + ], + "related_ids": [ + "439498" + ], + "broader_ids": [ + "6284" + ], + "geo_area_code": null + }, + { + "id": "4028", + "label": "social-security harmonisation", + "alt_labels": [ + "harmonisation of social security systems", + "social-security harmonization" + ], + "related_ids": [ + "2897" + ], + "broader_ids": [ + "4050" + ], + "geo_area_code": null + }, + { + "id": "4029", + "label": "job security", + "alt_labels": [ + "employment protection", + "employment security", + "guaranteed employment", + "job protection", + "risk to employment", + "safeguarding jobs", + "threat to jobs" + ], + "related_ids": [ + "1646", + "3527" + ], + "broader_ids": [ + "2468" + ], + "geo_area_code": null + }, + { + "id": "403", + "label": "public expenditure", + "alt_labels": [ + "government expenditure" + ], + "related_ids": [ + "1018", + "282", + "c_4c7717f3" + ], + "broader_ids": [ + "394" + ], + "geo_area_code": null + }, + { + "id": "4030", + "label": "external competence (EU)", + "alt_labels": [ + "EC external competence", + "external competence of the Community" + ], + "related_ids": [ + "1474", + "2582", + "3465", + "5420", + "5873" + ], + "broader_ids": [ + "4017" + ], + "geo_area_code": null + }, + { + "id": "4031", + "label": "Protocol (EU)", + "alt_labels": [ + "Community privilege", + "EC Protocol", + "EU protocol", + "privileges and immunities of the EU", + "privileges and immunities of the European Union", + "protocol of the EU", + "protocol of the European Union" + ], + "related_ids": [ + "6884" + ], + "broader_ids": [ + "4479" + ], + "geo_area_code": null + }, + { + "id": "4032", + "label": "Merger Treaty", + "alt_labels": [ + "EC Merger Treaty", + "Merger Treaty of the EC", + "merging of the Community institutions" + ], + "related_ids": [], + "broader_ids": [ + "4479" + ], + "geo_area_code": null + }, + { + "id": "4033", + "label": "transport safety", + "alt_labels": [ + "passenger protection" + ], + "related_ids": [ + "1162", + "3681", + "4308", + "468", + "6848" + ], + "broader_ids": [ + "2494" + ], + "geo_area_code": null + }, + { + "id": "4034", + "label": "Single European Act", + "alt_labels": [ + "SEA" + ], + "related_ids": [ + "5203" + ], + "broader_ids": [ + "4479" + ], + "geo_area_code": null + }, + { + "id": "4036", + "label": "product safety", + "alt_labels": [], + "related_ids": [ + "3135", + "3632", + "3635", + "5234" + ], + "broader_ids": [ + "2836" + ], + "geo_area_code": null + }, + { + "id": "4037", + "label": "EAEC Joint Undertaking", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5344" + ], + "geo_area_code": null + }, + { + "id": "4038", + "label": "European Commission", + "alt_labels": [ + "CEC", + "Commission of the European Communities", + "EC Commission", + "EU Commission" + ], + "related_ids": [ + "2577", + "2578", + "2579", + "2809", + "445203", + "6288", + "7222" + ], + "broader_ids": [ + "1451" + ], + "geo_area_code": null + }, + { + "id": "4039", + "label": "occupational safety", + "alt_labels": [ + "occupational hazard", + "safety at the workplace", + "worker safety" + ], + "related_ids": [ + "2522", + "2884", + "5427", + "6720" + ], + "broader_ids": [ + "82" + ], + "geo_area_code": null + }, + { + "id": "404", + "label": "depoliticisation", + "alt_labels": [ + "depoliticization" + ], + "related_ids": [], + "broader_ids": [ + "2269" + ], + "geo_area_code": null + }, + { + "id": "4040", + "label": "EU relations", + "alt_labels": [ + "Community relations", + "EC external relations", + "European Union relations" + ], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "4041", + "label": "ACP-EU Council of Ministers", + "alt_labels": [ + "ACP-EC Council", + "ACP-EC Council of Ministers" + ], + "related_ids": [], + "broader_ids": [ + "1450" + ], + "geo_area_code": null + }, + { + "id": "4042", + "label": "nuclear safety", + "alt_labels": [ + "Euratom inspection", + "Euratom safeguards", + "IAEA inspection", + "nuclear control", + "reactor safety", + "safety of nuclear installations", + "safety of nuclear power stations" + ], + "related_ids": [ + "1034", + "2007", + "2539", + "3188", + "3730", + "4631", + "572", + "686" + ], + "broader_ids": [ + "1412" + ], + "geo_area_code": null + }, + { + "id": "4043", + "label": "member of the Court of Justice (EU)", + "alt_labels": [ + "Advocate-General (CJUE)", + "Judge (CJUE)", + "Registrar (CJEU)", + "member of the EC Court of Justice" + ], + "related_ids": [ + "8465" + ], + "broader_ids": [ + "255" + ], + "geo_area_code": null + }, + { + "id": "4044", + "label": "European Commissioner", + "alt_labels": [ + "CEC Commissioner", + "member of the Commission" + ], + "related_ids": [], + "broader_ids": [ + "4038" + ], + "geo_area_code": null + }, + { + "id": "4045", + "label": "public safety", + "alt_labels": [ + "national security", + "safety of individuals" + ], + "related_ids": [ + "3348", + "374", + "c_c8c80a5b" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "4046", + "label": "European Association for Cooperation", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5769" + ], + "geo_area_code": null + }, + { + "id": "4047", + "label": "road safety", + "alt_labels": [ + "breathalyser test", + "driver protection", + "field of vision", + "helmet" + ], + "related_ids": [ + "1162", + "7944", + "848" + ], + "broader_ids": [ + "4033" + ], + "geo_area_code": null + }, + { + "id": "4048", + "label": "association agreement (EU)", + "alt_labels": [ + "EC association agreement" + ], + "related_ids": [ + "1663" + ], + "broader_ids": [ + "1474" + ], + "geo_area_code": null + }, + { + "id": "4049", + "label": "ACP-EU Convention", + "alt_labels": [ + "ACP-EC Convention" + ], + "related_ids": [ + "3468", + "5083" + ], + "broader_ids": [ + "4048" + ], + "geo_area_code": null + }, + { + "id": "405", + "label": "depopulation", + "alt_labels": [ + "demographic decline" + ], + "related_ids": [], + "broader_ids": [ + "3318" + ], + "geo_area_code": null + }, + { + "id": "4050", + "label": "social security", + "alt_labels": [ + "national insurance", + "social protection" + ], + "related_ids": [ + "1044", + "3072", + "3623", + "4881", + "6785", + "c_c4afa011" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "4051", + "label": "ACP-EU Committee of Ambassadors", + "alt_labels": [ + "ACP-EC Committee of Ambassadors" + ], + "related_ids": [], + "broader_ids": [ + "1450" + ], + "geo_area_code": null + }, + { + "id": "4052", + "label": "ACP-EU Joint Committee", + "alt_labels": [ + "ACP-EC Joint Committee" + ], + "related_ids": [], + "broader_ids": [ + "1450" + ], + "geo_area_code": null + }, + { + "id": "4053", + "label": "third Lom\u00e9 Convention", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "197" + ], + "geo_area_code": null + }, + { + "id": "4054", + "label": "EURES", + "alt_labels": [ + "European Employment Services", + "European system for the international clearing of vacancies and applications for employment", + "SEDOC" + ], + "related_ids": [], + "broader_ids": [ + "1802" + ], + "geo_area_code": null + }, + { + "id": "4055", + "label": "EDF", + "alt_labels": [ + "European Development Fund" + ], + "related_ids": [ + "1052" + ], + "broader_ids": [ + "2460" + ], + "geo_area_code": null + }, + { + "id": "4056", + "label": "European Social Fund", + "alt_labels": [ + "ESF", + "ESF aid" + ], + "related_ids": [ + "2516", + "3346" + ], + "broader_ids": [ + "5138" + ], + "geo_area_code": null + }, + { + "id": "4057", + "label": "enlargement of the Union", + "alt_labels": [ + "Natali report", + "enlargement of the Community" + ], + "related_ids": [ + "5137", + "6704" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "4058", + "label": "housing allocation", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2496" + ], + "geo_area_code": null + }, + { + "id": "4059", + "label": "rye", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5360" + ], + "geo_area_code": null + }, + { + "id": "406", + "label": "deportee", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4697" + ], + "geo_area_code": null + }, + { + "id": "4060", + "label": "European Union", + "alt_labels": [ + "Union law" + ], + "related_ids": [ + "4068", + "5283" + ], + "broader_ids": [], + "geo_area_code": "EUR" + }, + { + "id": "4061", + "label": "history of Europe", + "alt_labels": [ + "Schuman Declaration", + "Schuman plan", + "history of the European Communities" + ], + "related_ids": [], + "broader_ids": [ + "1464" + ], + "geo_area_code": null + }, + { + "id": "4062", + "label": "chemical salt", + "alt_labels": [ + "ammonia", + "ammonium", + "bromide", + "chloride", + "hydroxide", + "iodide", + "lithium hydroxide", + "nitrate", + "potassium chloride", + "soda", + "sodium carbonate", + "sulphate" + ], + "related_ids": [ + "3758", + "3761" + ], + "broader_ids": [ + "3810" + ], + "geo_area_code": null + }, + { + "id": "4063", + "label": "European Union membership", + "alt_labels": [ + "Community membership", + "Member State-European Union relations", + "membership of the European Community", + "membership of the European Union" + ], + "related_ids": [ + "3234" + ], + "broader_ids": [ + "4057" + ], + "geo_area_code": null + }, + { + "id": "4064", + "label": "Latin American Economic System", + "alt_labels": [ + "LAES", + "SELA" + ], + "related_ids": [ + "4069" + ], + "broader_ids": [ + "2190" + ], + "geo_area_code": null + }, + { + "id": "4068", + "label": "Treaty on European Union", + "alt_labels": [ + "Draft Treaty on European Union", + "EU Treaty", + "European Union Treaty", + "Maastricht Treaty", + "TEU", + "Treaty of Maastricht" + ], + "related_ids": [ + "4060" + ], + "broader_ids": [ + "4479" + ], + "geo_area_code": null + }, + { + "id": "4069", + "label": "LAES countries", + "alt_labels": [ + "SELA countries" + ], + "related_ids": [ + "4064" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "407", + "label": "sales agent", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3218" + ], + "geo_area_code": null + }, + { + "id": "4071", + "label": "competition (EU)", + "alt_labels": [ + "EC competition", + "EC internal competition", + "EC open competition" + ], + "related_ids": [ + "4090" + ], + "broader_ids": [ + "5130" + ], + "geo_area_code": null + }, + { + "id": "4072", + "label": "selection of pupils", + "alt_labels": [ + "set intake figures" + ], + "related_ids": [ + "800" + ], + "broader_ids": [ + "2467" + ], + "geo_area_code": null + }, + { + "id": "4073", + "label": "supplementary trade mechanism", + "alt_labels": [ + "STM", + "STM certificate", + "supplementary mechanism" + ], + "related_ids": [], + "broader_ids": [ + "2450" + ], + "geo_area_code": null + }, + { + "id": "4074", + "label": "environmental risk prevention", + "alt_labels": [], + "related_ids": [ + "2477", + "413", + "6304", + "6413", + "921", + "c_3212cc75", + "c_406ad4cc", + "c_5b447e3a", + "c_ef31184b" + ], + "broader_ids": [ + "2470" + ], + "geo_area_code": null + }, + { + "id": "4075", + "label": "natural hazard", + "alt_labels": [ + "natural catastrophe risk" + ], + "related_ids": [ + "1440", + "413" + ], + "broader_ids": [ + "4074" + ], + "geo_area_code": null + }, + { + "id": "4076", + "label": "industrial hazard", + "alt_labels": [ + "explosion hazard", + "explosion risk", + "fire danger", + "fire hazard", + "fire risk", + "risk of explosion", + "technological risk", + "toxic hazard", + "toxic risk" + ], + "related_ids": [ + "3164", + "412", + "451069", + "6715" + ], + "broader_ids": [ + "4074" + ], + "geo_area_code": null + }, + { + "id": "4077", + "label": "economic liberalism", + "alt_labels": [], + "related_ids": [ + "1614", + "646" + ], + "broader_ids": [ + "2497" + ], + "geo_area_code": null + }, + { + "id": "4078", + "label": "customs duties", + "alt_labels": [], + "related_ids": [ + "1881", + "4080", + "519" + ], + "broader_ids": [ + "4380" + ], + "geo_area_code": null + }, + { + "id": "4079", + "label": "customs inspection", + "alt_labels": [ + "customs check" + ], + "related_ids": [ + "5330" + ], + "broader_ids": [ + "3156" + ], + "geo_area_code": null + }, + { + "id": "408", + "label": "bank deposit", + "alt_labels": [ + "demand deposit", + "deposit account", + "fixed deposit", + "sight deposit", + "time deposit" + ], + "related_ids": [], + "broader_ids": [ + "2149" + ], + "geo_area_code": null + }, + { + "id": "4080", + "label": "CCT duties", + "alt_labels": [ + "autonomous customs duties", + "common customs tariff duties", + "conventional customs duties" + ], + "related_ids": [ + "4078", + "4381" + ], + "broader_ids": [ + "3560" + ], + "geo_area_code": null + }, + { + "id": "4081", + "label": "seed", + "alt_labels": [], + "related_ids": [ + "6296", + "7133" + ], + "broader_ids": [ + "2014" + ], + "geo_area_code": null + }, + { + "id": "4082", + "label": "weights and measures", + "alt_labels": [ + "unit of measurement" + ], + "related_ids": [ + "1894", + "2081", + "2159" + ], + "broader_ids": [ + "3641" + ], + "geo_area_code": null + }, + { + "id": "4083", + "label": "preserved product", + "alt_labels": [ + "preserved food", + "tinned food" + ], + "related_ids": [ + "136" + ], + "broader_ids": [ + "1258" + ], + "geo_area_code": null + }, + { + "id": "4084", + "label": "semi-metal", + "alt_labels": [ + "arsenic", + "boron", + "selenium", + "silicon", + "tellurium" + ], + "related_ids": [], + "broader_ids": [ + "1882" + ], + "geo_area_code": null + }, + { + "id": "4085", + "label": "irradiation", + "alt_labels": [ + "ionisation" + ], + "related_ids": [ + "2762" + ], + "broader_ids": [ + "132" + ], + "geo_area_code": null + }, + { + "id": "4086", + "label": "subsistence level income", + "alt_labels": [ + "guaranteed minimum income", + "minimum subsistence income" + ], + "related_ids": [ + "2062", + "2281", + "3659", + "5974" + ], + "broader_ids": [ + "2517" + ], + "geo_area_code": null + }, + { + "id": "4087", + "label": "personal weapon", + "alt_labels": [ + "acquisition of arms", + "carrying of arms", + "permit to carry arms", + "possession of arms" + ], + "related_ids": [ + "1432", + "3434" + ], + "broader_ids": [ + "4045" + ], + "geo_area_code": null + }, + { + "id": "4088", + "label": "meal", + "alt_labels": [], + "related_ids": [ + "5000" + ], + "broader_ids": [ + "2729" + ], + "geo_area_code": null + }, + { + "id": "4089", + "label": "patronage", + "alt_labels": [], + "related_ids": [ + "5771" + ], + "broader_ids": [ + "2459" + ], + "geo_area_code": null + }, + { + "id": "409", + "label": "capital depreciation", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "55" + ], + "geo_area_code": null + }, + { + "id": "4090", + "label": "administrative competition", + "alt_labels": [ + "recruitment competition" + ], + "related_ids": [ + "4071" + ], + "broader_ids": [ + "1163" + ], + "geo_area_code": null + }, + { + "id": "4091", + "label": "public hearing", + "alt_labels": [ + "extra-parliamentary consultation" + ], + "related_ids": [ + "1192" + ], + "broader_ids": [ + "2703" + ], + "geo_area_code": null + }, + { + "id": "4092", + "label": "Senegal", + "alt_labels": [ + "Republic of Senegal" + ], + "related_ids": [], + "broader_ids": [ + "351", + "4607", + "5083", + "5302" + ], + "geo_area_code": "SEN" + }, + { + "id": "4093", + "label": "separation of powers", + "alt_labels": [], + "related_ids": [ + "2573", + "3237", + "6623" + ], + "broader_ids": [ + "2370" + ], + "geo_area_code": null + }, + { + "id": "4094", + "label": "psychoanalysis", + "alt_labels": [], + "related_ids": [ + "2855" + ], + "broader_ids": [ + "3928" + ], + "geo_area_code": null + }, + { + "id": "4095", + "label": "sericulture", + "alt_labels": [ + "rearing of silkworms", + "silkworm farming" + ], + "related_ids": [ + "4207" + ], + "broader_ids": [ + "711" + ], + "geo_area_code": null + }, + { + "id": "4096", + "label": "visual arts", + "alt_labels": [ + "photography" + ], + "related_ids": [ + "1366", + "1416", + "c_cdec6719" + ], + "broader_ids": [ + "2688" + ], + "geo_area_code": null + }, + { + "id": "4097", + "label": "cultural pluralism", + "alt_labels": [ + "biculturalism", + "cultural diversity", + "multicultural society", + "plurality of cultures" + ], + "related_ids": [ + "4888", + "7941" + ], + "broader_ids": [ + "317" + ], + "geo_area_code": null + }, + { + "id": "4098", + "label": "customs and traditions", + "alt_labels": [ + "tradition" + ], + "related_ids": [ + "892" + ], + "broader_ids": [ + "2278" + ], + "geo_area_code": null + }, + { + "id": "4099", + "label": "service", + "alt_labels": [], + "related_ids": [ + "1638", + "2602", + "4021", + "5206" + ], + "broader_ids": [ + "3193" + ], + "geo_area_code": null + }, + { + "id": "41", + "label": "powers of parliament", + "alt_labels": [ + "parliamentary power", + "regulatory autonomy" + ], + "related_ids": [ + "1438", + "2579", + "2586", + "2698", + "2702", + "2703", + "2811", + "3046", + "4182", + "5204" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "410", + "label": "deregulation", + "alt_labels": [], + "related_ids": [ + "2447", + "2489", + "2494", + "5707" + ], + "broader_ids": [ + "2497" + ], + "geo_area_code": null + }, + { + "id": "4100", + "label": "architectural heritage", + "alt_labels": [ + "ancient monument", + "listed building" + ], + "related_ids": [], + "broader_ids": [ + "2278" + ], + "geo_area_code": null + }, + { + "id": "4101", + "label": "church", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3257" + ], + "geo_area_code": null + }, + { + "id": "4102", + "label": "anthem", + "alt_labels": [ + "national anthem", + "national song" + ], + "related_ids": [ + "5312", + "6885" + ], + "broader_ids": [ + "2278" + ], + "geo_area_code": null + }, + { + "id": "4103", + "label": "flag", + "alt_labels": [ + "national flag" + ], + "related_ids": [ + "5312", + "6885" + ], + "broader_ids": [ + "2278" + ], + "geo_area_code": null + }, + { + "id": "4104", + "label": "after-sales service", + "alt_labels": [], + "related_ids": [ + "4663" + ], + "broader_ids": [ + "13" + ], + "geo_area_code": null + }, + { + "id": "4105", + "label": "literary and artistic property", + "alt_labels": [ + "artistic and literary property" + ], + "related_ids": [ + "1680", + "2817", + "529", + "7129" + ], + "broader_ids": [ + "2459" + ], + "geo_area_code": null + }, + { + "id": "4106", + "label": "alternative service", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4127" + ], + "geo_area_code": null + }, + { + "id": "4107", + "label": "aerodynamics", + "alt_labels": [], + "related_ids": [ + "1358" + ], + "broader_ids": [ + "3946" + ], + "geo_area_code": null + }, + { + "id": "4108", + "label": "thermodynamics", + "alt_labels": [], + "related_ids": [ + "757" + ], + "broader_ids": [ + "3946" + ], + "geo_area_code": null + }, + { + "id": "4109", + "label": "plasma physics", + "alt_labels": [], + "related_ids": [ + "1123" + ], + "broader_ids": [ + "3946" + ], + "geo_area_code": null + }, + { + "id": "411", + "label": "disarmament", + "alt_labels": [], + "related_ids": [ + "2905", + "8381" + ], + "broader_ids": [ + "3450" + ], + "geo_area_code": null + }, + { + "id": "4110", + "label": "laser physics", + "alt_labels": [], + "related_ids": [ + "3874" + ], + "broader_ids": [ + "3946" + ], + "geo_area_code": null + }, + { + "id": "4111", + "label": "genetic engineering", + "alt_labels": [ + "biogenetics", + "genetic manipulation" + ], + "related_ids": [ + "3408", + "5169", + "5651", + "7955" + ], + "broader_ids": [ + "3797" + ], + "geo_area_code": null + }, + { + "id": "4112", + "label": "painting", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4837" + ], + "geo_area_code": null + }, + { + "id": "4113", + "label": "employment service", + "alt_labels": [ + "employment agency", + "employment office", + "job centre", + "labour exchange", + "manpower service", + "placement office", + "placement service" + ], + "related_ids": [], + "broader_ids": [ + "1802" + ], + "geo_area_code": null + }, + { + "id": "4114", + "label": "release on licence", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5631" + ], + "geo_area_code": null + }, + { + "id": "4115", + "label": "capital increase", + "alt_labels": [ + "capital reduction" + ], + "related_ids": [], + "broader_ids": [ + "5218" + ], + "geo_area_code": null + }, + { + "id": "4116", + "label": "health service", + "alt_labels": [ + "medical service" + ], + "related_ids": [ + "c_67699417", + "c_c4afa011" + ], + "broader_ids": [ + "2479" + ], + "geo_area_code": null + }, + { + "id": "4117", + "label": "agricultural situation", + "alt_labels": [ + "agricultural crisis", + "farming crisis" + ], + "related_ids": [ + "2443", + "5886", + "c_5b447e3a" + ], + "broader_ids": [ + "2442" + ], + "geo_area_code": null + }, + { + "id": "4118", + "label": "post office financial services", + "alt_labels": [ + "post office banking", + "postal-cheque service" + ], + "related_ids": [ + "4133", + "4569" + ], + "broader_ids": [ + "1452" + ], + "geo_area_code": null + }, + { + "id": "4119", + "label": "promulgation of a law", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2702" + ], + "geo_area_code": null + }, + { + "id": "412", + "label": "man-made disaster", + "alt_labels": [ + "man-made catastrophe" + ], + "related_ids": [ + "2825", + "3057", + "3076", + "3288", + "4076", + "5571", + "c_ef31184b" + ], + "broader_ids": [ + "371" + ], + "geo_area_code": null + }, + { + "id": "4120", + "label": "financial interests of members", + "alt_labels": [], + "related_ids": [ + "2248" + ], + "broader_ids": [ + "2246" + ], + "geo_area_code": null + }, + { + "id": "4121", + "label": "Arab-African cooperation", + "alt_labels": [ + "Arab-African dialogue" + ], + "related_ids": [], + "broader_ids": [ + "3489" + ], + "geo_area_code": null + }, + { + "id": "4122", + "label": "free service", + "alt_labels": [ + "non-market service" + ], + "related_ids": [], + "broader_ids": [ + "4099" + ], + "geo_area_code": null + }, + { + "id": "4123", + "label": "Euro-Arab cooperation", + "alt_labels": [ + "Euro-Arab dialogue", + "Euro-Arab relations" + ], + "related_ids": [], + "broader_ids": [ + "3489" + ], + "geo_area_code": null + }, + { + "id": "4125", + "label": "EU control", + "alt_labels": [ + "Community control", + "European Union control" + ], + "related_ids": [], + "broader_ids": [ + "4017" + ], + "geo_area_code": null + }, + { + "id": "4126", + "label": "principle of additionality", + "alt_labels": [ + "aid additionality", + "financing additionality" + ], + "related_ids": [ + "6025", + "889" + ], + "broader_ids": [ + "5844" + ], + "geo_area_code": null + }, + { + "id": "4127", + "label": "national service", + "alt_labels": [ + "military service" + ], + "related_ids": [], + "broader_ids": [ + "2628" + ], + "geo_area_code": null + }, + { + "id": "4128", + "label": "peripheral region", + "alt_labels": [ + "outermost area", + "outermost region", + "peripheral area", + "remotest area", + "remotest region" + ], + "related_ids": [], + "broader_ids": [ + "3058" + ], + "geo_area_code": null + }, + { + "id": "4129", + "label": "island region", + "alt_labels": [], + "related_ids": [ + "1287", + "5444" + ], + "broader_ids": [ + "3058" + ], + "geo_area_code": null + }, + { + "id": "413", + "label": "natural disaster", + "alt_labels": [ + "natural catastrophe" + ], + "related_ids": [ + "3057", + "3076", + "3288", + "3477", + "4074", + "4075", + "6315", + "6715", + "89", + "c_505c95bd", + "c_5b447e3a", + "c_e548b67f", + "c_ef31184b", + "c_f7430876" + ], + "broader_ids": [ + "371" + ], + "geo_area_code": null + }, + { + "id": "4130", + "label": "most favoured nation", + "alt_labels": [ + "MFN", + "most favoured nation clause", + "most favoured nation treatment" + ], + "related_ids": [ + "1567" + ], + "broader_ids": [ + "11" + ], + "geo_area_code": null + }, + { + "id": "4131", + "label": "payable service", + "alt_labels": [ + "market service" + ], + "related_ids": [], + "broader_ids": [ + "4099" + ], + "geo_area_code": null + }, + { + "id": "4132", + "label": "subsidiary budget", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1018" + ], + "geo_area_code": null + }, + { + "id": "4133", + "label": "postal service", + "alt_labels": [ + "letter post", + "mail", + "mail service", + "parcel post", + "post" + ], + "related_ids": [ + "4118", + "7136" + ], + "broader_ids": [ + "2566" + ], + "geo_area_code": null + }, + { + "id": "4134", + "label": "multilingual dictionary", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "438" + ], + "geo_area_code": null + }, + { + "id": "4135", + "label": "dictionary of abbreviations", + "alt_labels": [ + "dictionary of acronyms" + ], + "related_ids": [], + "broader_ids": [ + "438" + ], + "geo_area_code": null + }, + { + "id": "4136", + "label": "public service", + "alt_labels": [], + "related_ids": [ + "2031", + "4531", + "6365", + "6369", + "830" + ], + "broader_ids": [ + "77" + ], + "geo_area_code": null + }, + { + "id": "4137", + "label": "encyclopaedia", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "486" + ], + "geo_area_code": null + }, + { + "id": "4138", + "label": "thesaurus", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4168" + ], + "geo_area_code": null + }, + { + "id": "4139", + "label": "serial publication", + "alt_labels": [ + "periodical", + "periodical publication", + "serials", + "series" + ], + "related_ids": [], + "broader_ids": [ + "486" + ], + "geo_area_code": null + }, + { + "id": "414", + "label": "job description", + "alt_labels": [ + "job profile", + "professional duties" + ], + "related_ids": [ + "2868" + ], + "broader_ids": [ + "1163" + ], + "geo_area_code": null + }, + { + "id": "4140", + "label": "secret service", + "alt_labels": [ + "department of intelligence" + ], + "related_ids": [ + "5884" + ], + "broader_ids": [ + "3437" + ], + "geo_area_code": null + }, + { + "id": "4141", + "label": "domestic waste", + "alt_labels": [ + "household waste", + "used paper" + ], + "related_ids": [], + "broader_ids": [ + "343" + ], + "geo_area_code": null + }, + { + "id": "4142", + "label": "single-crop farming", + "alt_labels": [ + "monoculture" + ], + "related_ids": [ + "2842", + "840" + ], + "broader_ids": [ + "4363" + ], + "geo_area_code": null + }, + { + "id": "4143", + "label": "social services", + "alt_labels": [ + "welfare institution", + "welfare services" + ], + "related_ids": [ + "4564" + ], + "broader_ids": [ + "1004" + ], + "geo_area_code": null + }, + { + "id": "4144", + "label": "newspaper", + "alt_labels": [ + "daily newspaper", + "weekly newspaper" + ], + "related_ids": [ + "2599" + ], + "broader_ids": [ + "486" + ], + "geo_area_code": null + }, + { + "id": "4145", + "label": "sesame", + "alt_labels": [ + "sesame seed" + ], + "related_ids": [ + "1270" + ], + "broader_ids": [ + "2414" + ], + "geo_area_code": null + }, + { + "id": "4146", + "label": "price increase", + "alt_labels": [ + "price rise", + "rise in prices" + ], + "related_ids": [], + "broader_ids": [ + "1039" + ], + "geo_area_code": null + }, + { + "id": "4147", + "label": "parliamentary session", + "alt_labels": [], + "related_ids": [ + "1599" + ], + "broader_ids": [ + "2703" + ], + "geo_area_code": null + }, + { + "id": "4148", + "label": "Seychelles", + "alt_labels": [ + "Republic of Seychelles", + "Seychelle Islands" + ], + "related_ids": [], + "broader_ids": [ + "357", + "5083", + "c_b2c019c8" + ], + "geo_area_code": "SYC" + }, + { + "id": "4149", + "label": "International Finance Corporation", + "alt_labels": [ + "IFC" + ], + "related_ids": [], + "broader_ids": [ + "4812" + ], + "geo_area_code": null + }, + { + "id": "415", + "label": "desert", + "alt_labels": [ + "Sahara", + "desert area" + ], + "related_ids": [ + "3804", + "416" + ], + "broader_ids": [ + "3146" + ], + "geo_area_code": null + }, + { + "id": "4151", + "label": "university", + "alt_labels": [ + "polytechnic", + "university education", + "university institute", + "university training" + ], + "related_ids": [ + "3672" + ], + "broader_ids": [ + "800" + ], + "geo_area_code": null + }, + { + "id": "4152", + "label": "transport of animals", + "alt_labels": [], + "related_ids": [ + "2830", + "5462" + ], + "broader_ids": [ + "2181" + ], + "geo_area_code": null + }, + { + "id": "4153", + "label": "associative movement", + "alt_labels": [], + "related_ids": [ + "3082", + "4702" + ], + "broader_ids": [ + "2001" + ], + "geo_area_code": null + }, + { + "id": "4155", + "label": "Sicily", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1520" + ], + "geo_area_code": null + }, + { + "id": "4156", + "label": "stationing of forces", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2464" + ], + "geo_area_code": null + }, + { + "id": "4157", + "label": "parliamentary seat", + "alt_labels": [], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "4158", + "label": "head office", + "alt_labels": [ + "registered office" + ], + "related_ids": [ + "2035" + ], + "broader_ids": [ + "871" + ], + "geo_area_code": null + }, + { + "id": "4159", + "label": "vacant seat", + "alt_labels": [], + "related_ids": [ + "702" + ], + "broader_ids": [ + "4157" + ], + "geo_area_code": null + }, + { + "id": "416", + "label": "desertification", + "alt_labels": [ + "salinisation" + ], + "related_ids": [ + "3804", + "415", + "6407" + ], + "broader_ids": [ + "371" + ], + "geo_area_code": null + }, + { + "id": "4160", + "label": "Australia", + "alt_labels": [ + "Commonwealth of Australia" + ], + "related_ids": [], + "broader_ids": [ + "2079", + "2106", + "2113", + "6205" + ], + "geo_area_code": "AUS" + }, + { + "id": "4161", + "label": "Sierra Leone", + "alt_labels": [ + "Republic of Sierra Leone" + ], + "related_ids": [], + "broader_ids": [ + "351", + "5083", + "5302" + ], + "geo_area_code": "SLE" + }, + { + "id": "4162", + "label": "traffic signs", + "alt_labels": [ + "light signalling", + "lighted road sign", + "road signs and signals" + ], + "related_ids": [ + "2039", + "2040", + "2041", + "3127", + "469" + ], + "broader_ids": [ + "3131" + ], + "geo_area_code": null + }, + { + "id": "4163", + "label": "pet food", + "alt_labels": [ + "cat food", + "dog food" + ], + "related_ids": [ + "1919" + ], + "broader_ids": [ + "1277" + ], + "geo_area_code": null + }, + { + "id": "4164", + "label": "Singapore", + "alt_labels": [ + "Republic of Singapore" + ], + "related_ids": [], + "broader_ids": [ + "1847", + "2858", + "6205" + ], + "geo_area_code": "SGP" + }, + { + "id": "4165", + "label": "acid rain", + "alt_labels": [], + "related_ids": [ + "6407" + ], + "broader_ids": [ + "371" + ], + "geo_area_code": null + }, + { + "id": "4166", + "label": "insurance claim", + "alt_labels": [], + "related_ids": [ + "4802" + ], + "broader_ids": [ + "165" + ], + "geo_area_code": null + }, + { + "id": "4167", + "label": "town-planning profession", + "alt_labels": [ + "architect" + ], + "related_ids": [], + "broader_ids": [ + "4619" + ], + "geo_area_code": null + }, + { + "id": "4168", + "label": "documentary tool", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "486" + ], + "geo_area_code": null + }, + { + "id": "4169", + "label": "non-woven fabric", + "alt_labels": [ + "bonded fibre" + ], + "related_ids": [], + "broader_ids": [ + "1418" + ], + "geo_area_code": null + }, + { + "id": "417", + "label": "dehydration", + "alt_labels": [ + "drying" + ], + "related_ids": [ + "2752" + ], + "broader_ids": [ + "132" + ], + "geo_area_code": null + }, + { + "id": "4170", + "label": "syrup", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2733" + ], + "geo_area_code": null + }, + { + "id": "4171", + "label": "Aegean Islands", + "alt_labels": [], + "related_ids": [ + "5223" + ], + "broader_ids": [ + "1184" + ], + "geo_area_code": null + }, + { + "id": "4172", + "label": "Canary Islands", + "alt_labels": [ + "Autonomous Community of the Canary Islands" + ], + "related_ids": [], + "broader_ids": [ + "864" + ], + "geo_area_code": null + }, + { + "id": "4173", + "label": "sisal", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2417" + ], + "geo_area_code": null + }, + { + "id": "4174", + "label": "Bureau of the EP", + "alt_labels": [], + "related_ids": [ + "5068" + ], + "broader_ids": [ + "2243" + ], + "geo_area_code": null + }, + { + "id": "4175", + "label": "president of an institution", + "alt_labels": [], + "related_ids": [ + "439592" + ], + "broader_ids": [ + "4304" + ], + "geo_area_code": null + }, + { + "id": "4176", + "label": "seismology", + "alt_labels": [], + "related_ids": [ + "3141", + "5890" + ], + "broader_ids": [ + "1151" + ], + "geo_area_code": null + }, + { + "id": "4177", + "label": "vice-president of an institution", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4304" + ], + "geo_area_code": null + }, + { + "id": "4178", + "label": "Secretary General of an Institution", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5885" + ], + "geo_area_code": null + }, + { + "id": "4179", + "label": "institutional activity", + "alt_labels": [], + "related_ids": [ + "2180", + "2189", + "4702", + "5640" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "418", + "label": "withdrawal of candidacy", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5105" + ], + "geo_area_code": null + }, + { + "id": "4180", + "label": "seat of institution", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4179" + ], + "geo_area_code": null + }, + { + "id": "4181", + "label": "institutional reform", + "alt_labels": [], + "related_ids": [ + "2968", + "2982" + ], + "broader_ids": [ + "4179" + ], + "geo_area_code": null + }, + { + "id": "4182", + "label": "competence of the institution", + "alt_labels": [], + "related_ids": [ + "2573", + "39", + "41", + "42" + ], + "broader_ids": [ + "4179" + ], + "geo_area_code": null + }, + { + "id": "4183", + "label": "EU situation", + "alt_labels": [ + "Community prospects", + "situation in the EU", + "situation in the European Union", + "situation of the EU", + "situation of the European Union" + ], + "related_ids": [], + "broader_ids": [ + "5442" + ], + "geo_area_code": null + }, + { + "id": "4184", + "label": "marital status", + "alt_labels": [ + "family status" + ], + "related_ids": [ + "570", + "884" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "4185", + "label": "space policy", + "alt_labels": [], + "related_ids": [ + "1358", + "3092", + "4001", + "6382" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "4186", + "label": "self-supply", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2292" + ], + "geo_area_code": null + }, + { + "id": "4187", + "label": "financial situation", + "alt_labels": [], + "related_ids": [ + "1164" + ], + "broader_ids": [ + "1804" + ], + "geo_area_code": null + }, + { + "id": "4188", + "label": "socialism", + "alt_labels": [], + "related_ids": [ + "2261" + ], + "broader_ids": [ + "1282" + ], + "geo_area_code": null + }, + { + "id": "4189", + "label": "organisation", + "alt_labels": [ + "legal status of an undertaking", + "organization" + ], + "related_ids": [ + "1331", + "150", + "2337", + "5218", + "813" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "419", + "label": "civil disobedience", + "alt_labels": [], + "related_ids": [ + "1441", + "2097", + "2155", + "5591" + ], + "broader_ids": [ + "2001" + ], + "geo_area_code": null + }, + { + "id": "4190", + "label": "public limited company", + "alt_labels": [ + "plc", + "public limited liability company" + ], + "related_ids": [ + "115" + ], + "broader_ids": [ + "4196" + ], + "geo_area_code": null + }, + { + "id": "4191", + "label": "company constituted under civil law", + "alt_labels": [ + "civil law partnership", + "company governed by civil law", + "firm constituted under civil law", + "firm governed by civil law", + "noncommercial partnership", + "nonstock corporation", + "nontrading partnership" + ], + "related_ids": [], + "broader_ids": [ + "4189" + ], + "geo_area_code": null + }, + { + "id": "4192", + "label": "professional partnership", + "alt_labels": [], + "related_ids": [ + "2788" + ], + "broader_ids": [ + "4191" + ], + "geo_area_code": null + }, + { + "id": "4193", + "label": "firm governed by commercial law", + "alt_labels": [ + "commercial firm" + ], + "related_ids": [ + "5362" + ], + "broader_ids": [ + "4189" + ], + "geo_area_code": null + }, + { + "id": "4194", + "label": "mixed-ownership company", + "alt_labels": [ + "mixed-investment company" + ], + "related_ids": [ + "654", + "830" + ], + "broader_ids": [ + "4189" + ], + "geo_area_code": null + }, + { + "id": "4195", + "label": "investment company", + "alt_labels": [ + "OEIC", + "asset management company", + "asset manager", + "closed-end investment company", + "fund manager", + "investment firm", + "investment fund", + "investment trust", + "mutual fund", + "open-ended investment company", + "open-ended investment trust", + "pooled fund", + "unit trust" + ], + "related_ids": [ + "1488", + "2386", + "2463", + "4196" + ], + "broader_ids": [ + "1452" + ], + "geo_area_code": null + }, + { + "id": "4196", + "label": "company with share capital", + "alt_labels": [ + "joint stock company", + "registered company" + ], + "related_ids": [ + "3674", + "4195", + "5218", + "5389" + ], + "broader_ids": [ + "4193" + ], + "geo_area_code": null + }, + { + "id": "4197", + "label": "bus", + "alt_labels": [ + "motor coach" + ], + "related_ids": [ + "7359" + ], + "broader_ids": [ + "2233" + ], + "geo_area_code": null + }, + { + "id": "4198", + "label": "consumer society", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "139" + ], + "geo_area_code": null + }, + { + "id": "4199", + "label": "partnership", + "alt_labels": [ + "general partnership" + ], + "related_ids": [ + "3121" + ], + "broader_ids": [ + "4193" + ], + "geo_area_code": null + }, + { + "id": "42", + "label": "jurisdiction", + "alt_labels": [ + "exclusive jurisdiction", + "jurisdiction of the courts", + "jurisdiction of the ordinary courts", + "legal jurisdiction" + ], + "related_ids": [ + "35", + "4182" + ], + "broader_ids": [ + "5923" + ], + "geo_area_code": null + }, + { + "id": "420", + "label": "destruction of crops", + "alt_labels": [ + "crop pests" + ], + "related_ids": [ + "2357", + "4490", + "5225" + ], + "broader_ids": [ + "371" + ], + "geo_area_code": null + }, + { + "id": "4200", + "label": "limited partnership", + "alt_labels": [ + "company limited by shares" + ], + "related_ids": [], + "broader_ids": [ + "4193" + ], + "geo_area_code": null + }, + { + "id": "4201", + "label": "undisclosed partnership", + "alt_labels": [ + "sleeping partnership" + ], + "related_ids": [ + "2264" + ], + "broader_ids": [ + "4189" + ], + "geo_area_code": null + }, + { + "id": "4202", + "label": "European company", + "alt_labels": [ + "European public limited company" + ], + "related_ids": [ + "532", + "5910", + "820" + ], + "broader_ids": [ + "4189" + ], + "geo_area_code": null + }, + { + "id": "4203", + "label": "parent company", + "alt_labels": [ + "founder company" + ], + "related_ids": [], + "broader_ids": [ + "871" + ], + "geo_area_code": null + }, + { + "id": "4204", + "label": "non-profit organisation", + "alt_labels": [ + "non-profit association", + "non-profit company", + "non-profit organization" + ], + "related_ids": [ + "3082", + "3331" + ], + "broader_ids": [ + "4189" + ], + "geo_area_code": null + }, + { + "id": "4205", + "label": "sociology", + "alt_labels": [], + "related_ids": [ + "1820", + "4706", + "7390" + ], + "broader_ids": [ + "3956" + ], + "geo_area_code": null + }, + { + "id": "4207", + "label": "silk", + "alt_labels": [ + "silk yarn" + ], + "related_ids": [ + "1418", + "3893", + "4095" + ], + "broader_ids": [ + "2737" + ], + "geo_area_code": null + }, + { + "id": "4208", + "label": "own consumption", + "alt_labels": [], + "related_ids": [ + "615" + ], + "broader_ids": [ + "139" + ], + "geo_area_code": null + }, + { + "id": "4209", + "label": "care of the disabled", + "alt_labels": [ + "attendance allowance", + "care of people with disabilities" + ], + "related_ids": [ + "1231" + ], + "broader_ids": [ + "1004" + ], + "geo_area_code": null + }, + { + "id": "421", + "label": "European Association of National Productivity Centres", + "alt_labels": [ + "EANPC", + "EPA", + "European Productivity Agency" + ], + "related_ids": [], + "broader_ids": [ + "2187" + ], + "geo_area_code": null + }, + { + "id": "4210", + "label": "soya bean", + "alt_labels": [ + "soya seed" + ], + "related_ids": [ + "2849", + "2951" + ], + "broader_ids": [ + "2414" + ], + "geo_area_code": null + }, + { + "id": "4211", + "label": "solvent", + "alt_labels": [], + "related_ids": [ + "3811" + ], + "broader_ids": [ + "3798" + ], + "geo_area_code": null + }, + { + "id": "4212", + "label": "Somalia", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1658", + "5083", + "5556", + "8369" + ], + "geo_area_code": "SOM" + }, + { + "id": "4213", + "label": "sample survey", + "alt_labels": [], + "related_ids": [ + "4214" + ], + "broader_ids": [ + "4256" + ], + "geo_area_code": null + }, + { + "id": "4214", + "label": "opinion poll", + "alt_labels": [ + "Gallup poll", + "audience rating", + "public opinion poll" + ], + "related_ids": [ + "1471", + "4213" + ], + "broader_ids": [ + "1820" + ], + "geo_area_code": null + }, + { + "id": "4215", + "label": "sorghum", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5360" + ], + "geo_area_code": null + }, + { + "id": "4216", + "label": "self-determination", + "alt_labels": [], + "related_ids": [ + "2966" + ], + "broader_ids": [ + "1346" + ], + "geo_area_code": null + }, + { + "id": "4217", + "label": "Sudan", + "alt_labels": [ + "Republic of Sudan" + ], + "related_ids": [], + "broader_ids": [ + "1658", + "357", + "5083", + "8369" + ], + "geo_area_code": "SDN" + }, + { + "id": "4218", + "label": "sulphur", + "alt_labels": [], + "related_ids": [ + "3809" + ], + "broader_ids": [ + "1935" + ], + "geo_area_code": null + }, + { + "id": "4219", + "label": "tendering", + "alt_labels": [ + "bid", + "tender" + ], + "related_ids": [ + "75" + ], + "broader_ids": [ + "1810" + ], + "geo_area_code": null + }, + { + "id": "422", + "label": "strait", + "alt_labels": [ + "international strait" + ], + "related_ids": [], + "broader_ids": [ + "3992" + ], + "geo_area_code": null + }, + { + "id": "4220", + "label": "source of information", + "alt_labels": [ + "information source" + ], + "related_ids": [ + "2918" + ], + "broader_ids": [ + "1422" + ], + "geo_area_code": null + }, + { + "id": "4221", + "label": "source of aid", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2460" + ], + "geo_area_code": null + }, + { + "id": "4222", + "label": "source of law", + "alt_labels": [], + "related_ids": [ + "3461", + "4479", + "5258" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "4223", + "label": "underdevelopment", + "alt_labels": [], + "related_ids": [ + "2465" + ], + "broader_ids": [ + "427" + ], + "geo_area_code": null + }, + { + "id": "4224", + "label": "by-product", + "alt_labels": [], + "related_ids": [ + "4225", + "4227", + "4228" + ], + "broader_ids": [ + "2720" + ], + "geo_area_code": null + }, + { + "id": "4225", + "label": "agricultural by-product", + "alt_labels": [], + "related_ids": [ + "2737", + "4224" + ], + "broader_ids": [ + "2734" + ], + "geo_area_code": null + }, + { + "id": "4226", + "label": "self-financing", + "alt_labels": [], + "related_ids": [ + "5270" + ], + "broader_ids": [ + "2466" + ], + "geo_area_code": null + }, + { + "id": "4227", + "label": "milk by-product", + "alt_labels": [ + "buttermilk", + "casein", + "lactoserum", + "whey" + ], + "related_ids": [ + "1563", + "2847", + "4224" + ], + "broader_ids": [ + "2763" + ], + "geo_area_code": null + }, + { + "id": "4228", + "label": "metal by-product", + "alt_labels": [ + "slag" + ], + "related_ids": [ + "345", + "4224" + ], + "broader_ids": [ + "3820" + ], + "geo_area_code": null + }, + { + "id": "4229", + "label": "sub-proletariat", + "alt_labels": [ + "lumpenproletariat" + ], + "related_ids": [ + "2281", + "826" + ], + "broader_ids": [ + "6002" + ], + "geo_area_code": null + }, + { + "id": "423", + "label": "external debt", + "alt_labels": [ + "international debt" + ], + "related_ids": [ + "3942", + "424", + "4671", + "5582" + ], + "broader_ids": [ + "1016" + ], + "geo_area_code": null + }, + { + "id": "4230", + "label": "undernourishment", + "alt_labels": [], + "related_ids": [ + "2281" + ], + "broader_ids": [ + "2318" + ], + "geo_area_code": null + }, + { + "id": "4231", + "label": "underpopulation", + "alt_labels": [], + "related_ids": [ + "1923", + "3079", + "389" + ], + "broader_ids": [ + "3318" + ], + "geo_area_code": null + }, + { + "id": "4232", + "label": "subcontracting", + "alt_labels": [ + "sub-contracting" + ], + "related_ids": [], + "broader_ids": [ + "2177" + ], + "geo_area_code": null + }, + { + "id": "4233", + "label": "self-management", + "alt_labels": [ + "worker self-management" + ], + "related_ids": [], + "broader_ids": [ + "2266" + ], + "geo_area_code": null + }, + { + "id": "4234", + "label": "breadwinner", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "965" + ], + "geo_area_code": null + }, + { + "id": "4235", + "label": "price support", + "alt_labels": [], + "related_ids": [ + "4236" + ], + "broader_ids": [ + "2489" + ], + "geo_area_code": null + }, + { + "id": "4236", + "label": "farm price support", + "alt_labels": [ + "agricultural price support" + ], + "related_ids": [ + "2483", + "2639", + "2644", + "2682", + "4235" + ], + "broader_ids": [ + "2511" + ], + "geo_area_code": null + }, + { + "id": "4237", + "label": "short-term monetary support", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1851" + ], + "geo_area_code": null + }, + { + "id": "4238", + "label": "national sovereignty", + "alt_labels": [], + "related_ids": [ + "1346" + ], + "broader_ids": [ + "567" + ], + "geo_area_code": null + }, + { + "id": "4239", + "label": "product specialisation", + "alt_labels": [ + "product specialization" + ], + "related_ids": [ + "4240" + ], + "broader_ids": [ + "2481" + ], + "geo_area_code": null + }, + { + "id": "424", + "label": "public debt", + "alt_labels": [ + "government debt", + "national debt" + ], + "related_ids": [ + "3942", + "423", + "5582", + "c_896e199b" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "4240", + "label": "specialisation of trade", + "alt_labels": [ + "specialization of trade" + ], + "related_ids": [ + "4239", + "614" + ], + "broader_ids": [ + "482" + ], + "geo_area_code": null + }, + { + "id": "4241", + "label": "budgetary specification", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2448" + ], + "geo_area_code": null + }, + { + "id": "4242", + "label": "voluntary restraint", + "alt_labels": [], + "related_ids": [ + "2452" + ], + "broader_ids": [ + "3581" + ], + "geo_area_code": null + }, + { + "id": "4243", + "label": "building speculation", + "alt_labels": [ + "land speculation" + ], + "related_ids": [ + "1805" + ], + "broader_ids": [ + "2475" + ], + "geo_area_code": null + }, + { + "id": "4245", + "label": "sport", + "alt_labels": [ + "amateur sport" + ], + "related_ids": [ + "5325", + "678", + "c_058697c2" + ], + "broader_ids": [ + "1700" + ], + "geo_area_code": null + }, + { + "id": "4246", + "label": "Sri Lanka", + "alt_labels": [ + "Ceylon", + "Democratic Socialist Republic of Sri Lanka" + ], + "related_ids": [], + "broader_ids": [ + "2848", + "8367" + ], + "geo_area_code": "LKA" + }, + { + "id": "4247", + "label": "Stabex", + "alt_labels": [ + "Stabex transfer", + "System for the stabilisation of export earnings", + "stabilisation of export earnings" + ], + "related_ids": [ + "2734", + "2912" + ], + "broader_ids": [ + "197" + ], + "geo_area_code": null + }, + { + "id": "4248", + "label": "price stability", + "alt_labels": [], + "related_ids": [ + "3165", + "4828", + "5562" + ], + "broader_ids": [ + "2489" + ], + "geo_area_code": null + }, + { + "id": "4249", + "label": "income stabilisation", + "alt_labels": [ + "income stabilization" + ], + "related_ids": [ + "4250" + ], + "broader_ids": [ + "2490" + ], + "geo_area_code": null + }, + { + "id": "425", + "label": "Upper House", + "alt_labels": [ + "House of Lords", + "second chamber", + "upper chamber" + ], + "related_ids": [], + "broader_ids": [ + "4871" + ], + "geo_area_code": null + }, + { + "id": "4250", + "label": "economic stabilisation", + "alt_labels": [ + "economic stability", + "economic stabilization" + ], + "related_ids": [ + "3165", + "4249", + "8285" + ], + "broader_ids": [ + "335" + ], + "geo_area_code": null + }, + { + "id": "4251", + "label": "indoor livestock farming", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "711" + ], + "geo_area_code": null + }, + { + "id": "4252", + "label": "interprofessional agreement", + "alt_labels": [ + "inter-professional agreement" + ], + "related_ids": [], + "broader_ids": [ + "2178" + ], + "geo_area_code": null + }, + { + "id": "4253", + "label": "automation", + "alt_labels": [ + "automatic regulation", + "process control" + ], + "related_ids": [ + "1429", + "1956", + "5973" + ], + "broader_ids": [ + "3632" + ], + "geo_area_code": null + }, + { + "id": "4254", + "label": "economic stagnation", + "alt_labels": [ + "stationary economy" + ], + "related_ids": [], + "broader_ids": [ + "335" + ], + "geo_area_code": null + }, + { + "id": "4255", + "label": "experimental farm", + "alt_labels": [ + "seed testing station" + ], + "related_ids": [], + "broader_ids": [ + "2915" + ], + "geo_area_code": null + }, + { + "id": "4256", + "label": "statistics", + "alt_labels": [ + "statistical abstract", + "statistical analysis", + "statistical data", + "statistical information", + "statistical monitoring", + "statistical source", + "statistical survey", + "statistical table" + ], + "related_ids": [ + "1835", + "1894", + "1991", + "3537", + "3634", + "4257", + "4259", + "4260", + "4263", + "4264", + "4268", + "4886", + "5905", + "5907", + "5908", + "5909", + "6331", + "6371", + "6380", + "6402", + "770", + "c_6c4d5118" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "4257", + "label": "agricultural statistics", + "alt_labels": [], + "related_ids": [ + "4256", + "6331" + ], + "broader_ids": [ + "3605" + ], + "geo_area_code": null + }, + { + "id": "4258", + "label": "EU statistics", + "alt_labels": [ + "Community statistics", + "European Union statistics", + "statistics of the EU", + "statistics of the European Union" + ], + "related_ids": [ + "2198", + "4369" + ], + "broader_ids": [ + "4256" + ], + "geo_area_code": null + }, + { + "id": "4259", + "label": "population statistics", + "alt_labels": [ + "demographic indicator", + "demographic statistics", + "population size" + ], + "related_ids": [ + "3327", + "4256" + ], + "broader_ids": [ + "1773" + ], + "geo_area_code": null + }, + { + "id": "426", + "label": "devaluation", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1075" + ], + "geo_area_code": null + }, + { + "id": "4260", + "label": "fishing statistics", + "alt_labels": [ + "fishing economics" + ], + "related_ids": [ + "4256" + ], + "broader_ids": [ + "1372" + ], + "geo_area_code": null + }, + { + "id": "4261", + "label": "motor car", + "alt_labels": [ + "automobile", + "car", + "personal automobile", + "private car", + "tourist vehicle" + ], + "related_ids": [ + "1361", + "3159", + "5429", + "5927" + ], + "broader_ids": [ + "2233" + ], + "geo_area_code": null + }, + { + "id": "4262", + "label": "economic statistics", + "alt_labels": [], + "related_ids": [ + "4264", + "6371", + "772" + ], + "broader_ids": [ + "4256" + ], + "geo_area_code": null + }, + { + "id": "4263", + "label": "financial statistics", + "alt_labels": [], + "related_ids": [ + "1811", + "4256" + ], + "broader_ids": [ + "1804" + ], + "geo_area_code": null + }, + { + "id": "4264", + "label": "industrial statistics", + "alt_labels": [], + "related_ids": [ + "3634", + "4256", + "4262" + ], + "broader_ids": [ + "2507" + ], + "geo_area_code": null + }, + { + "id": "4265", + "label": "international statistics", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4256" + ], + "geo_area_code": null + }, + { + "id": "4266", + "label": "national statistics", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4256" + ], + "geo_area_code": null + }, + { + "id": "4267", + "label": "official statistics", + "alt_labels": [], + "related_ids": [ + "492" + ], + "broader_ids": [ + "4256" + ], + "geo_area_code": null + }, + { + "id": "4268", + "label": "regional statistics", + "alt_labels": [], + "related_ids": [ + "4256" + ], + "broader_ids": [ + "2515" + ], + "geo_area_code": null + }, + { + "id": "4269", + "label": "status of Berlin", + "alt_labels": [], + "related_ids": [ + "1308", + "1318", + "3479" + ], + "broader_ids": [ + "3476" + ], + "geo_area_code": null + }, + { + "id": "427", + "label": "economic development", + "alt_labels": [ + "economic upswing" + ], + "related_ids": [ + "2460", + "2465", + "2497", + "3047", + "3077", + "3675", + "429", + "c_1137acd8" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "4270", + "label": "status of Jerusalem", + "alt_labels": [], + "related_ids": [ + "1518", + "5930" + ], + "broader_ids": [ + "3476" + ], + "geo_area_code": null + }, + { + "id": "4271", + "label": "regulations for civil servants", + "alt_labels": [], + "related_ids": [ + "4273", + "c_871b5612" + ], + "broader_ids": [ + "1046" + ], + "geo_area_code": null + }, + { + "id": "4272", + "label": "autonomy", + "alt_labels": [ + "local autonomy", + "regional autonomy" + ], + "related_ids": [ + "1999", + "2245", + "3096", + "5119" + ], + "broader_ids": [ + "2166" + ], + "geo_area_code": null + }, + { + "id": "4273", + "label": "staff regulations", + "alt_labels": [ + "staff rules" + ], + "related_ids": [ + "4271", + "c_871b5612" + ], + "broader_ids": [ + "1163" + ], + "geo_area_code": null + }, + { + "id": "4274", + "label": "legal status", + "alt_labels": [ + "legal entity", + "legal personality" + ], + "related_ids": [], + "broader_ids": [ + "523" + ], + "geo_area_code": null + }, + { + "id": "4275", + "label": "political status", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3476" + ], + "geo_area_code": null + }, + { + "id": "4276", + "label": "occupational status", + "alt_labels": [], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "4277", + "label": "social status", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4305" + ], + "geo_area_code": null + }, + { + "id": "4278", + "label": "sterilisation", + "alt_labels": [ + "sterilization", + "vasectomy" + ], + "related_ids": [], + "broader_ids": [ + "3168" + ], + "geo_area_code": null + }, + { + "id": "4279", + "label": "tax incentive", + "alt_labels": [], + "related_ids": [ + "2507", + "2805", + "3625" + ], + "broader_ids": [ + "2504" + ], + "geo_area_code": null + }, + { + "id": "428", + "label": "Nuclear Energy Agency", + "alt_labels": [ + "ENEA", + "European Nuclear Energy Agency", + "NEA" + ], + "related_ids": [ + "753" + ], + "broader_ids": [ + "2105" + ], + "geo_area_code": null + }, + { + "id": "4280", + "label": "stock", + "alt_labels": [ + "stock level", + "stock situation" + ], + "related_ids": [ + "926" + ], + "broader_ids": [ + "4291" + ], + "geo_area_code": null + }, + { + "id": "4281", + "label": "EU stock", + "alt_labels": [ + "Community stock", + "European Union stock" + ], + "related_ids": [ + "926" + ], + "broader_ids": [ + "2713" + ], + "geo_area_code": null + }, + { + "id": "4282", + "label": "financial autonomy", + "alt_labels": [], + "related_ids": [ + "3560" + ], + "broader_ids": [ + "2448" + ], + "geo_area_code": null + }, + { + "id": "4283", + "label": "economic contingency stock", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3065" + ], + "geo_area_code": null + }, + { + "id": "4284", + "label": "intervention stock", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3065" + ], + "geo_area_code": null + }, + { + "id": "4285", + "label": "surplus stock", + "alt_labels": [], + "related_ids": [ + "3628", + "926" + ], + "broader_ids": [ + "2707" + ], + "geo_area_code": null + }, + { + "id": "4286", + "label": "minimum stock", + "alt_labels": [ + "safety stock" + ], + "related_ids": [], + "broader_ids": [ + "1154" + ], + "geo_area_code": null + }, + { + "id": "4287", + "label": "world stock", + "alt_labels": [], + "related_ids": [ + "465" + ], + "broader_ids": [ + "2721" + ], + "geo_area_code": null + }, + { + "id": "4288", + "label": "private stock", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4280" + ], + "geo_area_code": null + }, + { + "id": "4289", + "label": "public stock", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4280" + ], + "geo_area_code": null + }, + { + "id": "429", + "label": "industrial development", + "alt_labels": [ + "industrial growth", + "promotion of industry" + ], + "related_ids": [ + "2145", + "3047", + "427", + "4303", + "5148", + "6705" + ], + "broader_ids": [ + "2507" + ], + "geo_area_code": null + }, + { + "id": "4290", + "label": "buffer stock", + "alt_labels": [], + "related_ids": [ + "2665" + ], + "broader_ids": [ + "4828" + ], + "geo_area_code": null + }, + { + "id": "4291", + "label": "storage", + "alt_labels": [ + "storage facility", + "storage site", + "warehouse", + "warehousing" + ], + "related_ids": [ + "2739", + "2759", + "276", + "3135", + "387", + "4293", + "4294", + "4308", + "6319", + "812" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "4292", + "label": "stockpiling of weapons", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3451" + ], + "geo_area_code": null + }, + { + "id": "4293", + "label": "energy storage", + "alt_labels": [ + "energy conservation" + ], + "related_ids": [ + "3734", + "4291" + ], + "broader_ids": [ + "2498" + ], + "geo_area_code": null + }, + { + "id": "4294", + "label": "storage of food", + "alt_labels": [ + "cold storage plant", + "wine and spirits storehouse", + "wine cellar" + ], + "related_ids": [ + "4291", + "465" + ], + "broader_ids": [ + "4416" + ], + "geo_area_code": null + }, + { + "id": "4295", + "label": "document storage", + "alt_labels": [], + "related_ids": [ + "3024" + ], + "broader_ids": [ + "494" + ], + "geo_area_code": null + }, + { + "id": "4298", + "label": "agricultural structure", + "alt_labels": [ + "agrarian structure", + "farm structure", + "structure of agricultural production" + ], + "related_ids": [ + "152", + "2709", + "2970", + "4630", + "638", + "937", + "962" + ], + "broader_ids": [ + "2493" + ], + "geo_area_code": null + }, + { + "id": "4299", + "label": "employment structure", + "alt_labels": [], + "related_ids": [ + "1737", + "1802" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "43", + "label": "joint competence", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4017" + ], + "geo_area_code": null + }, + { + "id": "430", + "label": "integrated development", + "alt_labels": [], + "related_ids": [ + "1463", + "2516", + "2971", + "3047", + "5149" + ], + "broader_ids": [ + "427" + ], + "geo_area_code": null + }, + { + "id": "4300", + "label": "company structure", + "alt_labels": [ + "organizational structure" + ], + "related_ids": [ + "2165", + "4303", + "813" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "4301", + "label": "budget authorisation", + "alt_labels": [ + "budget authorization" + ], + "related_ids": [], + "broader_ids": [ + "929" + ], + "geo_area_code": null + }, + { + "id": "4302", + "label": "economic structure", + "alt_labels": [], + "related_ids": [ + "4006", + "4303", + "5673", + "637" + ], + "broader_ids": [ + "1800" + ], + "geo_area_code": null + }, + { + "id": "4303", + "label": "industrial structures", + "alt_labels": [], + "related_ids": [ + "429", + "4300", + "4302", + "5376", + "652", + "6705", + "813", + "827" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "4304", + "label": "institutional structure", + "alt_labels": [ + "institutional framework" + ], + "related_ids": [ + "2165" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "4305", + "label": "social structure", + "alt_labels": [ + "social stratification", + "social system", + "socio-economic structure" + ], + "related_ids": [ + "5275" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "4306", + "label": "narcotic", + "alt_labels": [], + "related_ids": [ + "4475", + "5249" + ], + "broader_ids": [ + "5914" + ], + "geo_area_code": null + }, + { + "id": "4307", + "label": "carcinogenic substance", + "alt_labels": [ + "cancerogenic substance" + ], + "related_ids": [ + "1590", + "1643", + "5104" + ], + "broader_ids": [ + "4308" + ], + "geo_area_code": null + }, + { + "id": "4308", + "label": "dangerous substance", + "alt_labels": [ + "dangerous product", + "hazardous substance" + ], + "related_ids": [ + "3681", + "3730", + "4033", + "4291", + "6103", + "945", + "c_e5d85c14" + ], + "broader_ids": [ + "2090" + ], + "geo_area_code": null + }, + { + "id": "4309", + "label": "restrictive-practice authorisation", + "alt_labels": [ + "concentration authorisation", + "restrictive-practice authorization" + ], + "related_ids": [ + "804" + ], + "broader_ids": [ + "3145" + ], + "geo_area_code": null + }, + { + "id": "431", + "label": "regional development", + "alt_labels": [], + "related_ids": [ + "3705", + "4594", + "5148", + "660", + "976" + ], + "broader_ids": [ + "2515" + ], + "geo_area_code": null + }, + { + "id": "4310", + "label": "export subsidy", + "alt_labels": [], + "related_ids": [ + "745" + ], + "broader_ids": [ + "1010" + ], + "geo_area_code": null + }, + { + "id": "4311", + "label": "food substitute", + "alt_labels": [ + "saccharine", + "sugar substitute" + ], + "related_ids": [ + "2751", + "683" + ], + "broader_ids": [ + "2736" + ], + "geo_area_code": null + }, + { + "id": "4312", + "label": "transfer of farms", + "alt_labels": [ + "farm inheritance" + ], + "related_ids": [ + "2814", + "937", + "942" + ], + "broader_ids": [ + "2493" + ], + "geo_area_code": null + }, + { + "id": "4313", + "label": "branch", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "871" + ], + "geo_area_code": null + }, + { + "id": "4314", + "label": "sugar", + "alt_labels": [ + "fructose", + "fruit sugar" + ], + "related_ids": [ + "1394", + "251", + "2733", + "2749", + "2851", + "3270", + "4404", + "683" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "4315", + "label": "white sugar", + "alt_labels": [ + "refined sugar" + ], + "related_ids": [ + "2887" + ], + "broader_ids": [ + "4314" + ], + "geo_area_code": null + }, + { + "id": "4316", + "label": "raw sugar", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4314" + ], + "geo_area_code": null + }, + { + "id": "4317", + "label": "beet sugar", + "alt_labels": [], + "related_ids": [ + "4858" + ], + "broader_ids": [ + "4314" + ], + "geo_area_code": null + }, + { + "id": "4318", + "label": "transport authorisation", + "alt_labels": [ + "transport authorization" + ], + "related_ids": [], + "broader_ids": [ + "3160" + ], + "geo_area_code": null + }, + { + "id": "4319", + "label": "cane sugar", + "alt_labels": [], + "related_ids": [ + "5106" + ], + "broader_ids": [ + "4314" + ], + "geo_area_code": null + }, + { + "id": "432", + "label": "social development", + "alt_labels": [ + "social progress" + ], + "related_ids": [ + "1507" + ], + "broader_ids": [ + "4706" + ], + "geo_area_code": null + }, + { + "id": "4320", + "label": "Sweden", + "alt_labels": [ + "Kingdom of Sweden" + ], + "related_ids": [ + "6138" + ], + "broader_ids": [ + "122", + "130", + "2106", + "5283", + "911" + ], + "geo_area_code": "SWE" + }, + { + "id": "4321", + "label": "votes cast", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "360" + ], + "geo_area_code": null + }, + { + "id": "4322", + "label": "universal suffrage", + "alt_labels": [ + "direct election" + ], + "related_ids": [ + "2243", + "5377" + ], + "broader_ids": [ + "4367" + ], + "geo_area_code": null + }, + { + "id": "4323", + "label": "suicide", + "alt_labels": [], + "related_ids": [ + "1636", + "1991", + "5291", + "6277" + ], + "broader_ids": [ + "2690" + ], + "geo_area_code": null + }, + { + "id": "4324", + "label": "Switzerland", + "alt_labels": [ + "Helvetic Confederation", + "Swiss Confederation" + ], + "related_ids": [], + "broader_ids": [ + "122", + "187", + "2106", + "913" + ], + "geo_area_code": "CHE" + }, + { + "id": "4325", + "label": "Sulawesi", + "alt_labels": [ + "Celebes" + ], + "related_ids": [], + "broader_ids": [ + "1355" + ], + "geo_area_code": null + }, + { + "id": "4326", + "label": "Sumatra", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1355" + ], + "geo_area_code": null + }, + { + "id": "4327", + "label": "utilised agricultural area", + "alt_labels": [ + "UAA", + "area sown", + "cultivated area", + "planted area", + "utilized agricultural area" + ], + "related_ids": [ + "4338", + "4630" + ], + "broader_ids": [ + "4337" + ], + "geo_area_code": null + }, + { + "id": "4328", + "label": "alternate", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2246" + ], + "geo_area_code": null + }, + { + "id": "4329", + "label": "additional duty", + "alt_labels": [ + "price supplement" + ], + "related_ids": [], + "broader_ids": [ + "2632" + ], + "geo_area_code": null + }, + { + "id": "433", + "label": "foreign currency", + "alt_labels": [ + "foreign exchange" + ], + "related_ids": [ + "1973", + "3449" + ], + "broader_ids": [ + "1799" + ], + "geo_area_code": null + }, + { + "id": "4330", + "label": "information medium", + "alt_labels": [], + "related_ids": [ + "1405", + "453", + "486" + ], + "broader_ids": [ + "1422" + ], + "geo_area_code": null + }, + { + "id": "4331", + "label": "magnetic medium", + "alt_labels": [ + "blank cassette", + "floppy disc", + "magnetic disc", + "magnetic tape" + ], + "related_ids": [ + "5705" + ], + "broader_ids": [ + "3869" + ], + "geo_area_code": null + }, + { + "id": "4332", + "label": "job cuts", + "alt_labels": [ + "loss of employment", + "staff cutback", + "withdrawal of employment" + ], + "related_ids": [ + "3600" + ], + "broader_ids": [ + "3522" + ], + "geo_area_code": null + }, + { + "id": "4333", + "label": "abolition of customs duties", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2519" + ], + "geo_area_code": null + }, + { + "id": "4334", + "label": "supranationality", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "567" + ], + "geo_area_code": null + }, + { + "id": "4335", + "label": "over-exploitation of resources", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "941" + ], + "geo_area_code": null + }, + { + "id": "4336", + "label": "wooded area", + "alt_labels": [ + "forest area" + ], + "related_ids": [ + "1063", + "4338", + "4630" + ], + "broader_ids": [ + "2505" + ], + "geo_area_code": null + }, + { + "id": "4337", + "label": "area of holding", + "alt_labels": [ + "acreage", + "size of holding" + ], + "related_ids": [ + "222", + "2814", + "4630" + ], + "broader_ids": [ + "937" + ], + "geo_area_code": null + }, + { + "id": "4338", + "label": "grassland", + "alt_labels": [ + "grazing land", + "land under grass", + "ley", + "meadow", + "pasture" + ], + "related_ids": [ + "4327", + "4336", + "4854", + "711", + "721" + ], + "broader_ids": [ + "4630" + ], + "geo_area_code": null + }, + { + "id": "4339", + "label": "main acreage", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4337" + ], + "geo_area_code": null + }, + { + "id": "433963", + "label": "global warming", + "alt_labels": [ + "GWP", + "global warming potential" + ], + "related_ids": [], + "broader_ids": [ + "5482" + ], + "geo_area_code": null + }, + { + "id": "434", + "label": "diabetes", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5720" + ], + "geo_area_code": null + }, + { + "id": "4340", + "label": "deep-freezing", + "alt_labels": [], + "related_ids": [ + "2782" + ], + "broader_ids": [ + "132" + ], + "geo_area_code": null + }, + { + "id": "434004", + "label": "Kyoto Protocol", + "alt_labels": [ + "Kyoto Protocol to the United Nations Framework Convention on Climate Change" + ], + "related_ids": [ + "201" + ], + "broader_ids": [ + "434056" + ], + "geo_area_code": null + }, + { + "id": "434056", + "label": "UN Framework Convention on Climate Change", + "alt_labels": [ + "Convention on Climate Change", + "Unfccc", + "United Nations Framework Convention on Climate Change" + ], + "related_ids": [ + "201", + "6400" + ], + "broader_ids": [ + "434743" + ], + "geo_area_code": null + }, + { + "id": "4341", + "label": "breeder reactor", + "alt_labels": [ + "fast breeder reactor", + "fast reactor" + ], + "related_ids": [], + "broader_ids": [ + "2903" + ], + "geo_area_code": null + }, + { + "id": "4342", + "label": "Surinam", + "alt_labels": [ + "Dutch Guyana", + "Republic of Suriname" + ], + "related_ids": [], + "broader_ids": [ + "1624", + "2119", + "4069", + "5083", + "5265", + "c_b2c019c8" + ], + "geo_area_code": "SUR" + }, + { + "id": "4343", + "label": "overpopulation", + "alt_labels": [ + "overcrowding", + "population overcrowding" + ], + "related_ids": [ + "389" + ], + "broader_ids": [ + "3318" + ], + "geo_area_code": null + }, + { + "id": "4344", + "label": "monetary agreement", + "alt_labels": [], + "related_ids": [ + "1858", + "1918", + "3461" + ], + "broader_ids": [ + "3239" + ], + "geo_area_code": null + }, + { + "id": "4345", + "label": "motorway", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3438" + ], + "geo_area_code": null + }, + { + "id": "4346", + "label": "over-production", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5123" + ], + "geo_area_code": null + }, + { + "id": "434664", + "label": "Intergovernmental Panel on Climate Change", + "alt_labels": [ + "IPCC" + ], + "related_ids": [ + "2142", + "5482" + ], + "broader_ids": [ + "2432" + ], + "geo_area_code": null + }, + { + "id": "4347", + "label": "market supervision", + "alt_labels": [ + "market surveillance" + ], + "related_ids": [], + "broader_ids": [ + "1486" + ], + "geo_area_code": null + }, + { + "id": "434743", + "label": "climate change policy", + "alt_labels": [ + "climate action", + "climate policy", + "policy for responding to climate change" + ], + "related_ids": [ + "5482" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "434786", + "label": "adaptation to climate change", + "alt_labels": [ + "adaptation measure to climate change", + "adaptation policy to climate change", + "climate change adaptation", + "climate resilience" + ], + "related_ids": [ + "5482" + ], + "broader_ids": [ + "434743" + ], + "geo_area_code": null + }, + { + "id": "4348", + "label": "suspension of aid", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3003" + ], + "geo_area_code": null + }, + { + "id": "434843", + "label": "emission trading", + "alt_labels": [ + "ETS", + "cap-and-trade system", + "carbon market", + "emission trading scheme", + "emission trading system", + "emissions trading", + "international emissions trading" + ], + "related_ids": [ + "5782" + ], + "broader_ids": [ + "434743" + ], + "geo_area_code": null + }, + { + "id": "434880", + "label": "EU Emissions Trading Scheme", + "alt_labels": [ + "EU ETS" + ], + "related_ids": [], + "broader_ids": [ + "434843" + ], + "geo_area_code": null + }, + { + "id": "4349", + "label": "suspension of sentence", + "alt_labels": [ + "suspended execution of sentence" + ], + "related_ids": [], + "broader_ids": [ + "5631" + ], + "geo_area_code": null + }, + { + "id": "434909", + "label": "clean development mechanism", + "alt_labels": [ + "CDM", + "CER", + "certified emission reduction" + ], + "related_ids": [ + "2295", + "3638", + "5585" + ], + "broader_ids": [ + "434743" + ], + "geo_area_code": null + }, + { + "id": "434938", + "label": "joint implementation", + "alt_labels": [ + "ERU", + "JI", + "emission reduction unit" + ], + "related_ids": [], + "broader_ids": [ + "434743" + ], + "geo_area_code": null + }, + { + "id": "434966", + "label": "emission allowance", + "alt_labels": [ + "AA", + "AAU", + "CERC", + "assigned amount", + "assigned amount unit", + "carbon credit", + "carbon emission reduction credit", + "emission quota" + ], + "related_ids": [ + "5782" + ], + "broader_ids": [ + "434743" + ], + "geo_area_code": null + }, + { + "id": "435", + "label": "North-South relations", + "alt_labels": [ + "Brandt report", + "North-South conference", + "North-South cooperation", + "North-South dialogue" + ], + "related_ids": [ + "2295", + "2297", + "4524", + "5151" + ], + "broader_ids": [ + "3474" + ], + "geo_area_code": null + }, + { + "id": "4350", + "label": "suspension of customs duties", + "alt_labels": [ + "customs procedure suspending import duties", + "suspension of tariff duty", + "tariff dismantling" + ], + "related_ids": [], + "broader_ids": [ + "2519" + ], + "geo_area_code": null + }, + { + "id": "435007", + "label": "EU emission allowance", + "alt_labels": [ + "EUA" + ], + "related_ids": [], + "broader_ids": [ + "434966" + ], + "geo_area_code": null + }, + { + "id": "435061", + "label": "carbon capture and storage", + "alt_labels": [ + "CCS", + "CO2 capture and storage", + "carbon dioxide capture and storage", + "carbon sequestration" + ], + "related_ids": [], + "broader_ids": [ + "3638" + ], + "geo_area_code": null + }, + { + "id": "435098", + "label": "human cloning", + "alt_labels": [ + "cloning of human beings", + "human reproductive cloning", + "therapeutic cloning" + ], + "related_ids": [ + "5169", + "5608", + "7955" + ], + "broader_ids": [ + "6171" + ], + "geo_area_code": null + }, + { + "id": "4351", + "label": "Swaziland", + "alt_labels": [ + "Kingdom of Swaziland" + ], + "related_ids": [], + "broader_ids": [ + "342", + "5083", + "c_b2c019c8" + ], + "geo_area_code": null + }, + { + "id": "435136", + "label": "communalism", + "alt_labels": [ + "communautarism" + ], + "related_ids": [ + "2269", + "3487", + "553", + "8442" + ], + "broader_ids": [ + "1282" + ], + "geo_area_code": null + }, + { + "id": "435164", + "label": "energy cooperation", + "alt_labels": [], + "related_ids": [ + "2498", + "c_d3334ae3" + ], + "broader_ids": [ + "3489" + ], + "geo_area_code": null + }, + { + "id": "435196", + "label": "EU law - international law", + "alt_labels": [ + "European Union law - international law" + ], + "related_ids": [], + "broader_ids": [ + "565" + ], + "geo_area_code": null + }, + { + "id": "4352", + "label": "silviculture", + "alt_labels": [ + "forest management", + "forestry management", + "sylviculture" + ], + "related_ids": [ + "1386", + "2396", + "4412", + "6314" + ], + "broader_ids": [ + "2505" + ], + "geo_area_code": null + }, + { + "id": "435228", + "label": "open access publishing", + "alt_labels": [ + "OAI", + "open access journal", + "open access publication", + "open archives initiative" + ], + "related_ids": [ + "453", + "529", + "6088" + ], + "broader_ids": [ + "6110" + ], + "geo_area_code": null + }, + { + "id": "435265", + "label": "geopolitics", + "alt_labels": [], + "related_ids": [ + "1150", + "3228", + "c_789ead37" + ], + "broader_ids": [ + "3947" + ], + "geo_area_code": null + }, + { + "id": "435299", + "label": "open source software", + "alt_labels": [ + "FOSS", + "OSS", + "free and open source software" + ], + "related_ids": [ + "529" + ], + "broader_ids": [ + "1696" + ], + "geo_area_code": null + }, + { + "id": "4353", + "label": "Austria", + "alt_labels": [ + "Republic of Austria" + ], + "related_ids": [ + "6136" + ], + "broader_ids": [ + "122", + "2106", + "5283", + "913" + ], + "geo_area_code": "AUT" + }, + { + "id": "435330", + "label": "EU competition policy", + "alt_labels": [ + "European Union competition policy" + ], + "related_ids": [ + "2451" + ], + "broader_ids": [ + "2474" + ], + "geo_area_code": null + }, + { + "id": "4354", + "label": "Syria", + "alt_labels": [ + "Syrian Arab Republic" + ], + "related_ids": [], + "broader_ids": [ + "1658", + "1727", + "1794", + "5780", + "8369" + ], + "geo_area_code": "SYR" + }, + { + "id": "435469", + "label": "alternative dispute resolution", + "alt_labels": [ + "ADR" + ], + "related_ids": [ + "3112", + "523", + "524", + "6173" + ], + "broader_ids": [ + "2701" + ], + "geo_area_code": null + }, + { + "id": "4355", + "label": "Sysmin", + "alt_labels": [ + "System for Mineral Products" + ], + "related_ids": [ + "2767" + ], + "broader_ids": [ + "197" + ], + "geo_area_code": null + }, + { + "id": "4356", + "label": "banking system", + "alt_labels": [], + "related_ids": [ + "c_834b57c4" + ], + "broader_ids": [ + "2149" + ], + "geo_area_code": null + }, + { + "id": "4357", + "label": "educational system", + "alt_labels": [ + "school system", + "teaching system" + ], + "related_ids": [ + "3278" + ], + "broader_ids": [ + "2175" + ], + "geo_area_code": null + }, + { + "id": "4358", + "label": "farming system", + "alt_labels": [], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "4359", + "label": "information system", + "alt_labels": [ + "automatic information system", + "on-line system" + ], + "related_ids": [ + "2012", + "4360", + "4361", + "4366", + "4821", + "6088", + "7218" + ], + "broader_ids": [ + "1422" + ], + "geo_area_code": null + }, + { + "id": "436", + "label": "dictatorship", + "alt_labels": [], + "related_ids": [ + "4729", + "67" + ], + "broader_ids": [ + "3025" + ], + "geo_area_code": null + }, + { + "id": "4360", + "label": "management information system", + "alt_labels": [], + "related_ids": [ + "1427", + "4359" + ], + "broader_ids": [ + "4413" + ], + "geo_area_code": null + }, + { + "id": "4361", + "label": "communications systems", + "alt_labels": [], + "related_ids": [ + "4359", + "4366", + "c_4768a12e" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "4362", + "label": "accounting system", + "alt_labels": [ + "accounting plan" + ], + "related_ids": [ + "54" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "4363", + "label": "cultivation system", + "alt_labels": [ + "cropping system" + ], + "related_ids": [ + "2915", + "6314", + "685" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "4364", + "label": "Auvergne", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "c_0a700c19" + ], + "geo_area_code": null + }, + { + "id": "4365", + "label": "UN programmes and funds", + "alt_labels": [ + "UN fund", + "UN programme", + "United Nations fund", + "United Nations programme", + "United Nations programmes and funds" + ], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "4366", + "label": "information service", + "alt_labels": [ + "documentary system" + ], + "related_ids": [ + "1428", + "3925", + "4359", + "4361", + "453" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "4367", + "label": "electoral system", + "alt_labels": [], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "4368", + "label": "European electoral system", + "alt_labels": [ + "Community electoral law", + "uniform electoral procedure" + ], + "related_ids": [ + "697" + ], + "broader_ids": [ + "4367" + ], + "geo_area_code": null + }, + { + "id": "4369", + "label": "European accounting system", + "alt_labels": [ + "ESA", + "European system of accounts", + "European system of integrated economic accounts", + "European system of national and regional accounts", + "European system of national and regional accounts in the European Union" + ], + "related_ids": [ + "4258", + "56" + ], + "broader_ids": [ + "4372" + ], + "geo_area_code": null + }, + { + "id": "437", + "label": "regional agency", + "alt_labels": [ + "regional office" + ], + "related_ids": [], + "broader_ids": [ + "871" + ], + "geo_area_code": null + }, + { + "id": "4370", + "label": "European Monetary System", + "alt_labels": [ + "EMS", + "monetary snake" + ], + "related_ids": [ + "1460", + "4395", + "441716", + "4602" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "4371", + "label": "international monetary system", + "alt_labels": [], + "related_ids": [ + "1043", + "2002", + "4010", + "4390", + "4812" + ], + "broader_ids": [ + "1016" + ], + "geo_area_code": null + }, + { + "id": "4372", + "label": "standardised accounting system", + "alt_labels": [ + "national accounting system of the United Nations", + "national standard accounting system", + "standardisation of accounts", + "standardised accounting plan", + "standardized accounting system" + ], + "related_ids": [], + "broader_ids": [ + "4362" + ], + "geo_area_code": null + }, + { + "id": "4373", + "label": "tobacco", + "alt_labels": [], + "related_ids": [ + "1395", + "4374" + ], + "broader_ids": [ + "2413" + ], + "geo_area_code": null + }, + { + "id": "4374", + "label": "smoking", + "alt_labels": [ + "addiction to tobacco", + "anti-smoking campaign", + "nicotinism", + "tobacco addiction" + ], + "related_ids": [ + "4373", + "c_058697c2" + ], + "broader_ids": [ + "2690" + ], + "geo_area_code": null + }, + { + "id": "437422", + "label": "European Neighbourhood and Partnership Instrument", + "alt_labels": [ + "ENPI" + ], + "related_ids": [ + "7932" + ], + "broader_ids": [ + "1460" + ], + "geo_area_code": null + }, + { + "id": "437483", + "label": "Common Frame of Reference", + "alt_labels": [ + "CFR" + ], + "related_ids": [ + "2836", + "525", + "8427" + ], + "broader_ids": [ + "164" + ], + "geo_area_code": null + }, + { + "id": "4375", + "label": "Taiwan", + "alt_labels": [ + "Formosa", + "Republic of China (Taiwan)" + ], + "related_ids": [ + "c_7d7608fa" + ], + "broader_ids": [ + "6205", + "956" + ], + "geo_area_code": "TWN" + }, + { + "id": "437539", + "label": "right of reply", + "alt_labels": [], + "related_ids": [ + "1619", + "1621" + ], + "broader_ids": [ + "5196" + ], + "geo_area_code": null + }, + { + "id": "4376", + "label": "Tanzania", + "alt_labels": [ + "United Republic of Tanzania" + ], + "related_ids": [], + "broader_ids": [ + "357", + "5083", + "5107", + "8365" + ], + "geo_area_code": "TZA" + }, + { + "id": "437655", + "label": "digital literacy", + "alt_labels": [ + "computer literacy", + "digital competence", + "digital skills", + "e-skills", + "informatics skills", + "information literacy", + "information skills", + "media literacy" + ], + "related_ids": [ + "677", + "7219" + ], + "broader_ids": [ + "453" + ], + "geo_area_code": null + }, + { + "id": "4377", + "label": "carpet", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1418" + ], + "geo_area_code": null + }, + { + "id": "4378", + "label": "air freight rate", + "alt_labels": [], + "related_ids": [ + "4505" + ], + "broader_ids": [ + "4379" + ], + "geo_area_code": null + }, + { + "id": "4379", + "label": "transportation tariff", + "alt_labels": [], + "related_ids": [ + "4536" + ], + "broader_ids": [ + "3101" + ], + "geo_area_code": null + }, + { + "id": "438", + "label": "dictionary", + "alt_labels": [ + "lexicon" + ], + "related_ids": [], + "broader_ids": [ + "486" + ], + "geo_area_code": null + }, + { + "id": "4380", + "label": "customs tariff", + "alt_labels": [], + "related_ids": [ + "1631", + "2844", + "4381", + "4600", + "810" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "4381", + "label": "common customs tariff", + "alt_labels": [ + "CCT", + "admission to the CCT" + ], + "related_ids": [ + "3560", + "4080", + "4380" + ], + "broader_ids": [ + "2520" + ], + "geo_area_code": null + }, + { + "id": "4382", + "label": "railway tariff", + "alt_labels": [], + "related_ids": [ + "4514" + ], + "broader_ids": [ + "4379" + ], + "geo_area_code": null + }, + { + "id": "4383", + "label": "advance", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1012" + ], + "geo_area_code": null + }, + { + "id": "4384", + "label": "postal charges", + "alt_labels": [ + "postage" + ], + "related_ids": [ + "4385" + ], + "broader_ids": [ + "2566" + ], + "geo_area_code": null + }, + { + "id": "4385", + "label": "tariff preference", + "alt_labels": [ + "preferential tariff", + "tariff advantage", + "tariff concession" + ], + "related_ids": [ + "2450", + "2590", + "2771", + "4384", + "4605" + ], + "broader_ids": [ + "2519" + ], + "geo_area_code": null + }, + { + "id": "4386", + "label": "passenger tariff", + "alt_labels": [], + "related_ids": [ + "4511" + ], + "broader_ids": [ + "4379" + ], + "geo_area_code": null + }, + { + "id": "4387", + "label": "charges for use of infrastructure", + "alt_labels": [ + "airport charge", + "airport due", + "airport fee", + "airport tax", + "dock due", + "embarkation tax", + "harbor due", + "harbor fee", + "harbour due", + "harbour fee", + "port charge", + "port due", + "port tax" + ], + "related_ids": [ + "1317" + ], + "broader_ids": [ + "3101" + ], + "geo_area_code": null + }, + { + "id": "4388", + "label": "bull", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5034" + ], + "geo_area_code": null + }, + { + "id": "438855", + "label": "EU budget", + "alt_labels": [ + "European Union budget" + ], + "related_ids": [ + "256", + "5050", + "508", + "5648" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "4389", + "label": "self-sufficiency rate", + "alt_labels": [ + "self-supply rate" + ], + "related_ids": [ + "2734", + "870" + ], + "broader_ids": [ + "4186" + ], + "geo_area_code": null + }, + { + "id": "439", + "label": "cultural difference", + "alt_labels": [ + "counterculture", + "subculture" + ], + "related_ids": [ + "1941", + "3487", + "4562", + "6046", + "760" + ], + "broader_ids": [ + "317" + ], + "geo_area_code": null + }, + { + "id": "4390", + "label": "exchange rate", + "alt_labels": [ + "dual exchange rate" + ], + "related_ids": [ + "1988", + "4371", + "4394", + "4395", + "4633" + ], + "broader_ids": [ + "2486" + ], + "geo_area_code": null + }, + { + "id": "4391", + "label": "preliminary draft budget", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "875" + ], + "geo_area_code": null + }, + { + "id": "4392", + "label": "VAT rate", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4585" + ], + "geo_area_code": null + }, + { + "id": "4393", + "label": "floating rate", + "alt_labels": [ + "currency fluctuation", + "floating of currencies", + "fluctuation of exchange rates" + ], + "related_ids": [], + "broader_ids": [ + "4390" + ], + "geo_area_code": null + }, + { + "id": "4394", + "label": "central rate", + "alt_labels": [], + "related_ids": [ + "4390" + ], + "broader_ids": [ + "5729" + ], + "geo_area_code": null + }, + { + "id": "439498", + "label": "Court of Justice (EU)", + "alt_labels": [ + "Court of Justice (instance)" + ], + "related_ids": [ + "4027" + ], + "broader_ids": [ + "255" + ], + "geo_area_code": null + }, + { + "id": "4395", + "label": "representative rate", + "alt_labels": [ + "agricultural conversion rate", + "agricultural unit of account", + "green exchange rate", + "green rate", + "green unit of account" + ], + "related_ids": [ + "4370", + "4390" + ], + "broader_ids": [ + "2511" + ], + "geo_area_code": null + }, + { + "id": "439592", + "label": "President of the European Council", + "alt_labels": [], + "related_ids": [ + "4175" + ], + "broader_ids": [ + "128" + ], + "geo_area_code": null + }, + { + "id": "4397", + "label": "assessment of prices", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "188" + ], + "geo_area_code": null + }, + { + "id": "4398", + "label": "axle tax", + "alt_labels": [ + "heavy goods vehicle road tax" + ], + "related_ids": [ + "4409", + "4533" + ], + "broader_ids": [ + "4387" + ], + "geo_area_code": null + }, + { + "id": "4399", + "label": "export tax", + "alt_labels": [ + "export surcharge", + "special charge on exports", + "taxation of exports" + ], + "related_ids": [ + "2487", + "3166", + "946" + ], + "broader_ids": [ + "1321" + ], + "geo_area_code": null + }, + { + "id": "44", + "label": "44 EMPLOYMENT AND WORKING CONDITIONS", + "alt_labels": [], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "440", + "label": "international dispute", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "99" + ], + "geo_area_code": null + }, + { + "id": "4400", + "label": "import tax", + "alt_labels": [ + "import surcharge", + "special charge on imports", + "taxation of imports" + ], + "related_ids": [ + "1309", + "2488", + "3579" + ], + "broader_ids": [ + "1321" + ], + "geo_area_code": null + }, + { + "id": "4401", + "label": "stamp duty", + "alt_labels": [ + "stamp tax" + ], + "related_ids": [ + "8414" + ], + "broader_ids": [ + "1321" + ], + "geo_area_code": null + }, + { + "id": "4402", + "label": "countervailing charge", + "alt_labels": [ + "compensatory levy" + ], + "related_ids": [ + "1309", + "2443" + ], + "broader_ids": [ + "2520" + ], + "geo_area_code": null + }, + { + "id": "440238", + "label": "ordinary legislative procedure", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5606" + ], + "geo_area_code": null + }, + { + "id": "440265", + "label": "special legislative procedure", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5606" + ], + "geo_area_code": null + }, + { + "id": "4403", + "label": "charge having equivalent effect", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "809" + ], + "geo_area_code": null + }, + { + "id": "4404", + "label": "producer co-responsibility", + "alt_labels": [ + "co-responsibility levy" + ], + "related_ids": [ + "1565", + "2969", + "4314", + "5360" + ], + "broader_ids": [ + "2972" + ], + "geo_area_code": null + }, + { + "id": "4405", + "label": "transit charge", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4380" + ], + "geo_area_code": null + }, + { + "id": "440523", + "label": "legislative act (EU)", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5258" + ], + "geo_area_code": null + }, + { + "id": "440549", + "label": "non-legislative act (EU)", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5258" + ], + "geo_area_code": null + }, + { + "id": "440579", + "label": "implementing decision", + "alt_labels": [ + "Commission implementing decision", + "Council implementing decision" + ], + "related_ids": [], + "broader_ids": [ + "349" + ], + "geo_area_code": null + }, + { + "id": "4406", + "label": "business tax", + "alt_labels": [ + "business rate", + "corporate income tax", + "trade tax" + ], + "related_ids": [ + "1317" + ], + "broader_ids": [ + "1326" + ], + "geo_area_code": null + }, + { + "id": "440605", + "label": "delegated decision", + "alt_labels": [ + "Commission delegated decision" + ], + "related_ids": [], + "broader_ids": [ + "349" + ], + "geo_area_code": null + }, + { + "id": "440631", + "label": "implementing directive", + "alt_labels": [ + "Commission implementing directive", + "Council implementing directive" + ], + "related_ids": [], + "broader_ids": [ + "449" + ], + "geo_area_code": null + }, + { + "id": "440657", + "label": "delegated directive", + "alt_labels": [ + "Commission delegated directive" + ], + "related_ids": [], + "broader_ids": [ + "449" + ], + "geo_area_code": null + }, + { + "id": "4407", + "label": "fuel tax", + "alt_labels": [ + "tax on motor fuels" + ], + "related_ids": [ + "3101", + "5262" + ], + "broader_ids": [ + "1321" + ], + "geo_area_code": null + }, + { + "id": "440710", + "label": "delegated regulation", + "alt_labels": [ + "Commission delegated regulation" + ], + "related_ids": [], + "broader_ids": [ + "3102" + ], + "geo_area_code": null + }, + { + "id": "4408", + "label": "civil aviation", + "alt_labels": [ + "civil aeronautics" + ], + "related_ids": [ + "2093", + "5284" + ], + "broader_ids": [ + "4505" + ], + "geo_area_code": null + }, + { + "id": "4409", + "label": "vehicle tax", + "alt_labels": [ + "road fund licence", + "road fund tax", + "road tax", + "tax on motor vehicles", + "vehicle excise duty" + ], + "related_ids": [ + "4398" + ], + "broader_ids": [ + "1321" + ], + "geo_area_code": null + }, + { + "id": "441", + "label": "dissemination of information", + "alt_labels": [ + "information request" + ], + "related_ids": [ + "442", + "453", + "5422", + "5589", + "5936", + "6088", + "6120", + "6126", + "616", + "6176", + "c_05f9c614", + "c_5ea6e5c4" + ], + "broader_ids": [ + "494" + ], + "geo_area_code": null + }, + { + "id": "4410", + "label": "Chad", + "alt_labels": [ + "Republic of Chad" + ], + "related_ids": [], + "broader_ids": [ + "302", + "4587", + "5083" + ], + "geo_area_code": "TCD" + }, + { + "id": "441001", + "label": "executive agency", + "alt_labels": [ + " Agriculture and Food Executive Agency", + " Audiovisual and Culture Executive Agency", + " Health", + "Chafea", + "Consumers", + "EACEA\u00a0", + "EACI\u00a0", + "EAHC\u00a0", + "EASME", + "ERCEA\u00a0", + "Education", + "European Research Council Executive Agency", + "Executive Agency for Competitiveness and Innovation", + "Executive Agency for Health and Consumers", + "Executive Agency for Small and Medium-sized Enterprises", + "INEA", + "Innovation and Networks Executive Agency", + "REA\u00a0", + "Research Executive Agency", + "TEN-T\u00a0EA\u00a0", + "Trans-European Transport Network Executive Agency" + ], + "related_ids": [], + "broader_ids": [ + "5769" + ], + "geo_area_code": null + }, + { + "id": "4411", + "label": "Czechoslovakia", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2291", + "5087" + ], + "geo_area_code": "CSK" + }, + { + "id": "4412", + "label": "cultivation techniques", + "alt_labels": [ + "cropping techniques", + "farm work" + ], + "related_ids": [ + "1849", + "4352", + "685" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "4413", + "label": "management techniques", + "alt_labels": [ + "dynamic programming", + "linear programming", + "network analysis", + "operational research", + "optimization", + "rationalization" + ], + "related_ids": [ + "1721", + "6010", + "6267" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "4414", + "label": "building services", + "alt_labels": [], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "4415", + "label": "technology", + "alt_labels": [ + "engineering" + ], + "related_ids": [ + "225", + "2916", + "3587" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "4416", + "label": "food technology", + "alt_labels": [], + "related_ids": [ + "1360", + "5967", + "6111", + "87" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "4417", + "label": "military aircraft", + "alt_labels": [ + "military aeronautics", + "scout plane", + "troop transport plane", + "war aviation" + ], + "related_ids": [ + "1033", + "3439", + "4438", + "4505" + ], + "broader_ids": [ + "2647" + ], + "geo_area_code": null + }, + { + "id": "441716", + "label": "EU loan", + "alt_labels": [ + "European Union loan" + ], + "related_ids": [ + "4370", + "862" + ], + "broader_ids": [ + "1460" + ], + "geo_area_code": null + }, + { + "id": "4418", + "label": "materials technology", + "alt_labels": [], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "4419", + "label": "soft technology", + "alt_labels": [ + "alternative technology", + "non-polluting technology" + ], + "related_ids": [ + "1707", + "5585", + "744" + ], + "broader_ids": [ + "5973" + ], + "geo_area_code": null + }, + { + "id": "442", + "label": "cultural transmission", + "alt_labels": [ + "cultural dissemination", + "dissemination of culture" + ], + "related_ids": [ + "1700", + "441" + ], + "broader_ids": [ + "2459" + ], + "geo_area_code": null + }, + { + "id": "4420", + "label": "energy technology", + "alt_labels": [], + "related_ids": [ + "2498", + "4423", + "744" + ], + "broader_ids": [ + "3737" + ], + "geo_area_code": null + }, + { + "id": "4421", + "label": "intermediate technology", + "alt_labels": [ + "combined technology" + ], + "related_ids": [], + "broader_ids": [ + "5973" + ], + "geo_area_code": null + }, + { + "id": "4422", + "label": "nuclear technology", + "alt_labels": [ + "particle accelerators" + ], + "related_ids": [ + "1215", + "1944", + "2376", + "2595", + "4455", + "5365", + "5461", + "572" + ], + "broader_ids": [ + "1412" + ], + "geo_area_code": null + }, + { + "id": "4423", + "label": "oil technology", + "alt_labels": [ + "processing of hydrocarbons" + ], + "related_ids": [ + "4420" + ], + "broader_ids": [ + "1414" + ], + "geo_area_code": null + }, + { + "id": "4424", + "label": "telecommunications", + "alt_labels": [ + "telecommunications technology" + ], + "related_ids": [ + "1376", + "3422", + "3552", + "4430", + "4591", + "6095", + "c_590e8349" + ], + "broader_ids": [ + "4361" + ], + "geo_area_code": null + }, + { + "id": "4425", + "label": "facsimile", + "alt_labels": [ + "fax", + "telecopy" + ], + "related_ids": [ + "3404", + "486" + ], + "broader_ids": [ + "4424" + ], + "geo_area_code": null + }, + { + "id": "4426", + "label": "remote sensing", + "alt_labels": [ + "geolocalisation" + ], + "related_ids": [ + "1894", + "3905", + "4630", + "5269", + "c_a935cf3f" + ], + "broader_ids": [ + "6030" + ], + "geo_area_code": null + }, + { + "id": "4427", + "label": "poultry farming", + "alt_labels": [ + "breeding of poultry", + "keeping of poultry" + ], + "related_ids": [ + "5760" + ], + "broader_ids": [ + "711" + ], + "geo_area_code": null + }, + { + "id": "442765", + "label": "animal taxonomy", + "alt_labels": [ + "classification of animal species" + ], + "related_ids": [ + "442791" + ], + "broader_ids": [ + "4810" + ], + "geo_area_code": null + }, + { + "id": "442791", + "label": "plant taxonomy", + "alt_labels": [ + "classification of plant species" + ], + "related_ids": [ + "442765" + ], + "broader_ids": [ + "5028" + ], + "geo_area_code": null + }, + { + "id": "4428", + "label": "cable distribution", + "alt_labels": [ + "cable television" + ], + "related_ids": [], + "broader_ids": [ + "4432" + ], + "geo_area_code": null + }, + { + "id": "442821", + "label": "ACP-EU relationship", + "alt_labels": [ + "ACP-EU cooperation" + ], + "related_ids": [], + "broader_ids": [ + "4040" + ], + "geo_area_code": null + }, + { + "id": "442850", + "label": "philosophy of science", + "alt_labels": [ + "history of science", + "science philosophy" + ], + "related_ids": [], + "broader_ids": [ + "2369" + ], + "geo_area_code": null + }, + { + "id": "442884", + "label": "pet shop", + "alt_labels": [], + "related_ids": [ + "1919", + "2830", + "3169", + "3667", + "5962" + ], + "broader_ids": [ + "5" + ], + "geo_area_code": null + }, + { + "id": "4429", + "label": "telegraph", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4424" + ], + "geo_area_code": null + }, + { + "id": "442917", + "label": "administration headquarters", + "alt_labels": [ + "public administration location", + "public administration relocation", + "public body headquarters", + "public body location", + "public body relocation", + "public institution headquarters", + "public institution location", + "public institution relocation" + ], + "related_ids": [], + "broader_ids": [ + "77" + ], + "geo_area_code": null + }, + { + "id": "442958", + "label": "gambling addiction", + "alt_labels": [ + "compulsive gambling", + "excessive gambling", + "gambling dependency", + "pathological gambling", + "problem gambling" + ], + "related_ids": [ + "3334" + ], + "broader_ids": [ + "2690" + ], + "geo_area_code": null + }, + { + "id": "442990", + "label": "prescription drug abuse", + "alt_labels": [ + "pharmacodependence", + "prescription drug dependence", + "prescription drug dependency" + ], + "related_ids": [ + "2773" + ], + "broader_ids": [ + "2690" + ], + "geo_area_code": null + }, + { + "id": "443", + "label": "limited circulation", + "alt_labels": [], + "related_ids": [ + "444" + ], + "broader_ids": [ + "453" + ], + "geo_area_code": null + }, + { + "id": "4430", + "label": "telematics", + "alt_labels": [ + "teleprocessing" + ], + "related_ids": [ + "1385", + "3010", + "3018", + "4424", + "4502", + "6851", + "6929" + ], + "broader_ids": [ + "1426" + ], + "geo_area_code": null + }, + { + "id": "443048", + "label": "personality", + "alt_labels": [ + "behaviour", + "character (personality)", + "conduct", + "individual identity", + "individuality", + "personal identity", + "personality trait", + "temperament" + ], + "related_ids": [ + "7195" + ], + "broader_ids": [ + "2856" + ], + "geo_area_code": null + }, + { + "id": "443080", + "label": "historical figure", + "alt_labels": [ + "character from history", + "historical personality" + ], + "related_ids": [ + "3589" + ], + "broader_ids": [ + "1245" + ], + "geo_area_code": null + }, + { + "id": "4431", + "label": "telephone", + "alt_labels": [ + "telephone equipment", + "telephone exchange", + "telephone network", + "telephonic equipment", + "telephonic network", + "telephony" + ], + "related_ids": [], + "broader_ids": [ + "4424" + ], + "geo_area_code": null + }, + { + "id": "443137", + "label": "Treaty on the Functioning of the EU", + "alt_labels": [ + "TFEU", + "Treaty on the Functioning of the European Union" + ], + "related_ids": [], + "broader_ids": [ + "4479" + ], + "geo_area_code": null + }, + { + "id": "443167", + "label": "political group (EP)", + "alt_labels": [ + "group (EP)", + "political group within the European Parliament" + ], + "related_ids": [ + "1197" + ], + "broader_ids": [ + "2243" + ], + "geo_area_code": null + }, + { + "id": "4432", + "label": "television", + "alt_labels": [], + "related_ids": [ + "2185", + "4698", + "6908" + ], + "broader_ids": [ + "2013" + ], + "geo_area_code": null + }, + { + "id": "4433", + "label": "telex", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4424" + ], + "geo_area_code": null + }, + { + "id": "443345", + "label": "virtual community", + "alt_labels": [ + "cybercommunity", + "e-community", + "online community", + "social networking" + ], + "related_ids": [ + "3250" + ], + "broader_ids": [ + "c_324b44f1" + ], + "geo_area_code": null + }, + { + "id": "4434", + "label": "evidence", + "alt_labels": [ + "testimony", + "witness" + ], + "related_ids": [], + "broader_ids": [ + "3966" + ], + "geo_area_code": null + }, + { + "id": "4435", + "label": "rest period", + "alt_labels": [ + "daily rest period", + "leave" + ], + "related_ids": [], + "broader_ids": [ + "592" + ], + "geo_area_code": null + }, + { + "id": "4436", + "label": "political tendency", + "alt_labels": [ + "political trend" + ], + "related_ids": [ + "244" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "443600", + "label": "cultural tourism", + "alt_labels": [ + "culture tourism" + ], + "related_ids": [ + "2278" + ], + "broader_ids": [ + "4470" + ], + "geo_area_code": null + }, + { + "id": "443629", + "label": "business tourism", + "alt_labels": [ + " Conferences and Exhibitions", + " Incentives", + "MICE", + "Meetings", + "congress tourism" + ], + "related_ids": [ + "5277" + ], + "broader_ids": [ + "4470" + ], + "geo_area_code": null + }, + { + "id": "4437", + "label": "European Monetary Agreement", + "alt_labels": [ + "EMA" + ], + "related_ids": [ + "204", + "5044" + ], + "broader_ids": [ + "4344" + ], + "geo_area_code": null + }, + { + "id": "4438", + "label": "aircraft", + "alt_labels": [ + "aerodyne", + "aeronautical equipment", + "aeroplane", + "civil aircraft", + "civilian aircraft", + "commercial aircraft", + "passenger aircraft", + "plane", + "tourist aircraft", + "transport aircraft" + ], + "related_ids": [ + "1357", + "4417", + "5453" + ], + "broader_ids": [ + "1033" + ], + "geo_area_code": null + }, + { + "id": "4439", + "label": "mental stress", + "alt_labels": [ + "stress" + ], + "related_ids": [ + "5878" + ], + "broader_ids": [ + "2857" + ], + "geo_area_code": null + }, + { + "id": "444", + "label": "selective dissemination of information", + "alt_labels": [ + "search profile" + ], + "related_ids": [ + "443" + ], + "broader_ids": [ + "441" + ], + "geo_area_code": null + }, + { + "id": "4440", + "label": "terms of trade", + "alt_labels": [], + "related_ids": [ + "4633" + ], + "broader_ids": [ + "4643" + ], + "geo_area_code": null + }, + { + "id": "4441", + "label": "terminology", + "alt_labels": [], + "related_ids": [ + "1337", + "1670" + ], + "broader_ids": [ + "4486" + ], + "geo_area_code": null + }, + { + "id": "4442", + "label": "building plot", + "alt_labels": [], + "related_ids": [ + "2813", + "2815" + ], + "broader_ids": [ + "4619" + ], + "geo_area_code": null + }, + { + "id": "4443", + "label": "industrial plot", + "alt_labels": [], + "related_ids": [ + "2813", + "2815" + ], + "broader_ids": [ + "4619" + ], + "geo_area_code": null + }, + { + "id": "4444", + "label": "abandoned land", + "alt_labels": [], + "related_ids": [ + "5373" + ], + "broader_ids": [ + "4630" + ], + "geo_area_code": null + }, + { + "id": "4445", + "label": "agricultural land", + "alt_labels": [ + "farmland" + ], + "related_ids": [], + "broader_ids": [ + "4630" + ], + "geo_area_code": null + }, + { + "id": "4446", + "label": "state-owned land", + "alt_labels": [ + "Crown land" + ], + "related_ids": [ + "2812", + "2996" + ], + "broader_ids": [ + "3009" + ], + "geo_area_code": null + }, + { + "id": "4447", + "label": "uncultivated land", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4630" + ], + "geo_area_code": null + }, + { + "id": "4448", + "label": "arable land", + "alt_labels": [ + "cultivated land", + "plough land" + ], + "related_ids": [], + "broader_ids": [ + "4630" + ], + "geo_area_code": null + }, + { + "id": "4449", + "label": "opinion", + "alt_labels": [ + "assent", + "reasoned opinion", + "request for an opinion" + ], + "related_ids": [ + "6284" + ], + "broader_ids": [ + "2702" + ], + "geo_area_code": null + }, + { + "id": "445", + "label": "size of business", + "alt_labels": [ + "workforce of an undertaking" + ], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "4450", + "label": "reclaimed land", + "alt_labels": [ + "land reclamation", + "polder" + ], + "related_ids": [ + "370" + ], + "broader_ids": [ + "4630" + ], + "geo_area_code": null + }, + { + "id": "4451", + "label": "overseas territory", + "alt_labels": [ + "OST" + ], + "related_ids": [], + "broader_ids": [ + "6034" + ], + "geo_area_code": null + }, + { + "id": "445178", + "label": "consent procedure", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "440265" + ], + "geo_area_code": null + }, + { + "id": "4452", + "label": "terrorism", + "alt_labels": [ + "elimination of terrorism" + ], + "related_ids": [ + "217", + "3945", + "8441", + "8455", + "953", + "c_3a9ccfe3", + "c_505c95bd" + ], + "broader_ids": [ + "4730" + ], + "geo_area_code": null + }, + { + "id": "445203", + "label": "opinion of the Commission", + "alt_labels": [], + "related_ids": [ + "4038" + ], + "broader_ids": [ + "6284" + ], + "geo_area_code": null + }, + { + "id": "445228", + "label": "opinion of the Council", + "alt_labels": [], + "related_ids": [ + "114" + ], + "broader_ids": [ + "6284" + ], + "geo_area_code": null + }, + { + "id": "445259", + "label": "European Central Bank opinion", + "alt_labels": [ + "ECB opinion" + ], + "related_ids": [ + "5455" + ], + "broader_ids": [ + "6284" + ], + "geo_area_code": null + }, + { + "id": "4453", + "label": "Thailand", + "alt_labels": [ + "Kingdom of Thailand" + ], + "related_ids": [], + "broader_ids": [ + "1847", + "2858", + "6205" + ], + "geo_area_code": "THA" + }, + { + "id": "4454", + "label": "tea", + "alt_labels": [], + "related_ids": [ + "2760", + "5017" + ], + "broader_ids": [ + "2418" + ], + "geo_area_code": null + }, + { + "id": "4455", + "label": "therapeutics", + "alt_labels": [ + "medical treatment", + "radiotherapy" + ], + "related_ids": [ + "4422", + "5899", + "c_25e0bb6d", + "c_e307d2a8" + ], + "broader_ids": [ + "5881" + ], + "geo_area_code": null + }, + { + "id": "4456", + "label": "thesis", + "alt_labels": [], + "related_ids": [ + "800" + ], + "broader_ids": [ + "486" + ], + "geo_area_code": null + }, + { + "id": "4458", + "label": "Thessaly", + "alt_labels": [ + "Sporades" + ], + "related_ids": [], + "broader_ids": [ + "1184" + ], + "geo_area_code": null + }, + { + "id": "446", + "label": "diploma", + "alt_labels": [ + "Advanced Level", + "European baccalaureate", + "General Certificate of Secondary Education", + "baccalaureate", + "certificate of proficiency", + "university degree" + ], + "related_ids": [ + "2932", + "854" + ], + "broader_ids": [ + "4554" + ], + "geo_area_code": null + }, + { + "id": "4460", + "label": "Timor", + "alt_labels": [ + "West Timor" + ], + "related_ids": [], + "broader_ids": [ + "1355" + ], + "geo_area_code": null + }, + { + "id": "4461", + "label": "East Timor", + "alt_labels": [ + "Democratic Republic of East Timor", + "Democratic Republic of Timor-Leste", + "Portuguese Timor", + "Timor-Leste" + ], + "related_ids": [], + "broader_ids": [ + "2858", + "5083", + "c_b2c019c8" + ], + "geo_area_code": "TMP" + }, + { + "id": "4462", + "label": "titanium", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1885" + ], + "geo_area_code": null + }, + { + "id": "4463", + "label": "negotiable instrument", + "alt_labels": [ + "bill of exchange", + "certificate of deposit", + "commercial paper", + "credit instrument", + "draft", + "promissory note", + "trade bill" + ], + "related_ids": [ + "285", + "522" + ], + "broader_ids": [ + "1975" + ], + "geo_area_code": null + }, + { + "id": "4464", + "label": "ticket", + "alt_labels": [ + "Eurailpass", + "travel ticket" + ], + "related_ids": [ + "4511" + ], + "broader_ids": [ + "3160" + ], + "geo_area_code": null + }, + { + "id": "4465", + "label": "Togo", + "alt_labels": [ + "Togolese Republic" + ], + "related_ids": [], + "broader_ids": [ + "351", + "4607", + "5083", + "5302" + ], + "geo_area_code": "TGO" + }, + { + "id": "4466", + "label": "Tonga", + "alt_labels": [ + "Kingdom of Tonga" + ], + "related_ids": [], + "broader_ids": [ + "2546", + "5083", + "8366", + "c_b2c019c8" + ], + "geo_area_code": "TON" + }, + { + "id": "4467", + "label": "torture", + "alt_labels": [], + "related_ids": [ + "3917", + "584" + ], + "broader_ids": [ + "4730" + ], + "geo_area_code": null + }, + { + "id": "4468", + "label": "Tuscany", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1520" + ], + "geo_area_code": null + }, + { + "id": "4469", + "label": "peat", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "6045" + ], + "geo_area_code": null + }, + { + "id": "447", + "label": "board of management", + "alt_labels": [ + "company management", + "management team" + ], + "related_ids": [ + "1156" + ], + "broader_ids": [ + "4300" + ], + "geo_area_code": null + }, + { + "id": "4470", + "label": "tourism", + "alt_labels": [ + "hospitality management", + "tourism management", + "tourism planning", + "tourist industry" + ], + "related_ids": [ + "1384", + "1925", + "3081", + "4005", + "600", + "7203" + ], + "broader_ids": [ + "1700" + ], + "geo_area_code": null + }, + { + "id": "4471", + "label": "mass tourism", + "alt_labels": [], + "related_ids": [ + "4769" + ], + "broader_ids": [ + "4470" + ], + "geo_area_code": null + }, + { + "id": "4472", + "label": "sunflower", + "alt_labels": [ + "sunflower seed" + ], + "related_ids": [ + "1260", + "2952" + ], + "broader_ids": [ + "2414" + ], + "geo_area_code": null + }, + { + "id": "4473", + "label": "EP opinion", + "alt_labels": [ + "EP reasoned opinion", + "compulsory opinion" + ], + "related_ids": [ + "2243" + ], + "broader_ids": [ + "6284" + ], + "geo_area_code": null + }, + { + "id": "4474", + "label": "toxicology", + "alt_labels": [ + "radiotoxicology" + ], + "related_ids": [ + "3135", + "4475" + ], + "broader_ids": [ + "5881" + ], + "geo_area_code": null + }, + { + "id": "447442", + "label": "member of the European Central Bank", + "alt_labels": [ + "member of the ECB", + "member of the Executive Board of the European Central Bank" + ], + "related_ids": [ + "8465" + ], + "broader_ids": [ + "5455" + ], + "geo_area_code": null + }, + { + "id": "447472", + "label": "European External Action Service", + "alt_labels": [ + "EEAS" + ], + "related_ids": [ + "5788" + ], + "broader_ids": [ + "2163" + ], + "geo_area_code": null + }, + { + "id": "4475", + "label": "drug addiction", + "alt_labels": [ + "drug abuse", + "drug-taking", + "fight against drugs" + ], + "related_ids": [ + "3355", + "4306", + "4474", + "5757", + "5914", + "c_058697c2" + ], + "broader_ids": [ + "2690" + ], + "geo_area_code": null + }, + { + "id": "447503", + "label": "Union delegation", + "alt_labels": [ + "EU delegation to Third Countries", + "EU delegation to international organisations", + "delegation of the European Union" + ], + "related_ids": [], + "broader_ids": [ + "447472" + ], + "geo_area_code": null + }, + { + "id": "447536", + "label": "Council configuration", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "114" + ], + "geo_area_code": null + }, + { + "id": "4476", + "label": "tractor", + "alt_labels": [], + "related_ids": [ + "4655" + ], + "broader_ids": [ + "1719" + ], + "geo_area_code": null + }, + { + "id": "447604", + "label": "Presidency trio", + "alt_labels": [ + "pre-established group of three Member States", + "three-presidency team" + ], + "related_ids": [], + "broader_ids": [ + "114" + ], + "geo_area_code": null + }, + { + "id": "447660", + "label": "European GNSS Agency", + "alt_labels": [ + "GSA" + ], + "related_ids": [ + "6852" + ], + "broader_ids": [ + "5769" + ], + "geo_area_code": null + }, + { + "id": "4477", + "label": "Trade Expansion Act", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2050" + ], + "geo_area_code": null + }, + { + "id": "447756", + "label": "European Institute for Gender Equality", + "alt_labels": [ + "EIGE" + ], + "related_ids": [ + "3913" + ], + "broader_ids": [ + "5769" + ], + "geo_area_code": null + }, + { + "id": "447795", + "label": "European Institute of Innovation and Technology", + "alt_labels": [ + "EIT" + ], + "related_ids": [ + "1439", + "3636" + ], + "broader_ids": [ + "5769" + ], + "geo_area_code": null + }, + { + "id": "4478", + "label": "translation", + "alt_labels": [ + "translating" + ], + "related_ids": [ + "1670", + "3585" + ], + "broader_ids": [ + "4486" + ], + "geo_area_code": null + }, + { + "id": "4479", + "label": "European treaties", + "alt_labels": [ + "EU treaties", + "European Union treaties", + "primary law", + "treaties of the European Union" + ], + "related_ids": [ + "4222" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "447917", + "label": "European Union Agency for the Cooperation of Energy Regulators", + "alt_labels": [ + "ACER", + "Agency for the Cooperation of Energy Regulators" + ], + "related_ids": [ + "2498" + ], + "broader_ids": [ + "5769" + ], + "geo_area_code": null + }, + { + "id": "447958", + "label": "European Union Agency for Asylum", + "alt_labels": [ + "EASO", + "EUAA", + "European Asylum Support Office" + ], + "related_ids": [ + "5597" + ], + "broader_ids": [ + "5769" + ], + "geo_area_code": null + }, + { + "id": "448", + "label": "directive", + "alt_labels": [], + "related_ids": [ + "449" + ], + "broader_ids": [ + "3099" + ], + "geo_area_code": null + }, + { + "id": "4480", + "label": "ECSC Treaty", + "alt_labels": [ + "Paris Treaty", + "Treaty establishing the European Coal and Steel Community" + ], + "related_ids": [ + "5327" + ], + "broader_ids": [ + "4479" + ], + "geo_area_code": null + }, + { + "id": "4481", + "label": "EEC Treaty", + "alt_labels": [ + "Treaty of Rome" + ], + "related_ids": [], + "broader_ids": [ + "4479" + ], + "geo_area_code": null + }, + { + "id": "4482", + "label": "EAEC Treaty", + "alt_labels": [ + "Euratom Treaty" + ], + "related_ids": [ + "5344" + ], + "broader_ids": [ + "4479" + ], + "geo_area_code": null + }, + { + "id": "448275", + "label": "European Joint Undertaking", + "alt_labels": [ + "ARTEMIS Joint Undertaking", + "BBI Joint Undertaking", + "Bio-based Industries Joint Undertaking", + "Clean Sky Joint Undertaking", + "ECSEL Joint Undertaking", + "ENIAC Joint Undertaking", + "FCH JU", + "FCH Joint Undertaking", + "Fuel Cells and Hydrogen Joint Undertaking", + "Fusion for Energy Joint Undertaking", + "IMI Joint Undertaking\u00a0", + "S2R JU", + "S2R Joint Undertaking", + "SESAR Joint Undertaking\u00a0", + "Shift2Rail Joint Undertaking" + ], + "related_ids": [], + "broader_ids": [ + "5769" + ], + "geo_area_code": null + }, + { + "id": "4483", + "label": "Warsaw Pact countries", + "alt_labels": [ + "countries of the Warsaw Pact" + ], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "4484", + "label": "milking machine", + "alt_labels": [], + "related_ids": [ + "4639" + ], + "broader_ids": [ + "846" + ], + "geo_area_code": null + }, + { + "id": "4485", + "label": "water treatment", + "alt_labels": [ + "chlorinisation", + "desalination", + "processing of waste water", + "purifying plant", + "purifying station", + "water purification" + ], + "related_ids": [ + "612", + "6408", + "c_b71ca500" + ], + "broader_ids": [ + "3144" + ], + "geo_area_code": null + }, + { + "id": "4486", + "label": "information processing", + "alt_labels": [], + "related_ids": [ + "1367", + "3925", + "5071", + "5351", + "849", + "c_415bab24", + "c_c10e7d2a" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "4487", + "label": "word processing", + "alt_labels": [], + "related_ids": [ + "5208" + ], + "broader_ids": [ + "5071" + ], + "geo_area_code": null + }, + { + "id": "4488", + "label": "data processing", + "alt_labels": [ + "automatic data processing", + "electronic data processing" + ], + "related_ids": [ + "2157", + "6767", + "c_c10e7d2a", + "c_f0a7cb51" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "4489", + "label": "ore processing", + "alt_labels": [ + "ore-reducing process" + ], + "related_ids": [], + "broader_ids": [ + "1411" + ], + "geo_area_code": null + }, + { + "id": "449", + "label": "directive (EU)", + "alt_labels": [ + "Commission Directive", + "Community directive", + "Council Directive", + "European Parliament and Council directive" + ], + "related_ids": [ + "2897", + "448", + "5739", + "c_70c441cc", + "c_ccc9fea1" + ], + "broader_ids": [ + "5258" + ], + "geo_area_code": null + }, + { + "id": "4490", + "label": "plant health treatment", + "alt_labels": [ + "control of plant parasites", + "spraying of crops", + "treatment of plants", + "weed control" + ], + "related_ids": [ + "1595", + "1763", + "2232", + "2915", + "2985", + "420" + ], + "broader_ids": [ + "4412" + ], + "geo_area_code": null + }, + { + "id": "4491", + "label": "financial transaction", + "alt_labels": [], + "related_ids": [ + "2216", + "2220", + "3172" + ], + "broader_ids": [ + "1804" + ], + "geo_area_code": null + }, + { + "id": "4492", + "label": "transfer of businesses", + "alt_labels": [], + "related_ids": [ + "1122", + "1646" + ], + "broader_ids": [ + "2469" + ], + "geo_area_code": null + }, + { + "id": "4493", + "label": "capital transfer", + "alt_labels": [ + "financial transfer" + ], + "related_ids": [], + "broader_ids": [ + "2002" + ], + "geo_area_code": null + }, + { + "id": "4494", + "label": "transfer of pension rights", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3751" + ], + "geo_area_code": null + }, + { + "id": "4495", + "label": "transfer of population", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1913" + ], + "geo_area_code": null + }, + { + "id": "4496", + "label": "technology transfer", + "alt_labels": [], + "related_ids": [ + "1347", + "1439", + "2295", + "3627", + "3657", + "c_b35395c8", + "c_de4d6f2f" + ], + "broader_ids": [ + "4415" + ], + "geo_area_code": null + }, + { + "id": "4497", + "label": "oats", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5360" + ], + "geo_area_code": null + }, + { + "id": "4498", + "label": "food processing", + "alt_labels": [ + "processing of food", + "processing of foodstuffs" + ], + "related_ids": [ + "1258", + "2736", + "656" + ], + "broader_ids": [ + "4416" + ], + "geo_area_code": null + }, + { + "id": "4499", + "label": "Union transit", + "alt_labels": [ + "Common and Union transit", + "Community transit", + "Union transit procedure" + ], + "related_ids": [], + "broader_ids": [ + "2520" + ], + "geo_area_code": null + }, + { + "id": "45", + "label": "competitiveness", + "alt_labels": [], + "related_ids": [ + "2632", + "2871", + "3283", + "3616", + "6362", + "75" + ], + "broader_ids": [ + "2469" + ], + "geo_area_code": null + }, + { + "id": "450", + "label": "voting discipline", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4762" + ], + "geo_area_code": null + }, + { + "id": "4500", + "label": "customs transit", + "alt_labels": [], + "related_ids": [ + "4536" + ], + "broader_ids": [ + "3174" + ], + "geo_area_code": null + }, + { + "id": "4501", + "label": "transliteration", + "alt_labels": [], + "related_ids": [ + "1670" + ], + "broader_ids": [ + "4486" + ], + "geo_area_code": null + }, + { + "id": "4502", + "label": "data transmission", + "alt_labels": [ + "data flow", + "interactive transmission" + ], + "related_ids": [ + "4430", + "5334", + "c_4cd4362b" + ], + "broader_ids": [ + "4424" + ], + "geo_area_code": null + }, + { + "id": "4503", + "label": "transfer of property", + "alt_labels": [], + "related_ids": [ + "1324", + "2034" + ], + "broader_ids": [ + "3929" + ], + "geo_area_code": null + }, + { + "id": "4504", + "label": "abortion", + "alt_labels": [ + "legal abortion", + "termination of pregnancy", + "voluntary termination of pregnancy" + ], + "related_ids": [], + "broader_ids": [ + "3168" + ], + "geo_area_code": null + }, + { + "id": "4505", + "label": "air transport", + "alt_labels": [ + "aeronautics", + "air service", + "aviation" + ], + "related_ids": [ + "1357", + "172", + "2350", + "3776", + "3853", + "4378", + "4417", + "518", + "5887", + "859" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "4506", + "label": "combined transport", + "alt_labels": [ + "intermodal transport", + "multimodal transport", + "piggyback transport", + "rail-road transport" + ], + "related_ids": [], + "broader_ids": [ + "1954" + ], + "geo_area_code": null + }, + { + "id": "450652", + "label": "EAGF", + "alt_labels": [ + "European Agricultural Guarantee Fund" + ], + "related_ids": [], + "broader_ids": [ + "1052" + ], + "geo_area_code": null + }, + { + "id": "450658", + "label": "EAFRD", + "alt_labels": [ + "European Agricultural Fund for Rural Development" + ], + "related_ids": [], + "broader_ids": [ + "1052" + ], + "geo_area_code": null + }, + { + "id": "4507", + "label": "energy transport", + "alt_labels": [], + "related_ids": [ + "4528", + "4539", + "4830", + "6047" + ], + "broader_ids": [ + "2498" + ], + "geo_area_code": null + }, + { + "id": "4508", + "label": "hinterland transport", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3098" + ], + "geo_area_code": null + }, + { + "id": "450869", + "label": "Chiroptera", + "alt_labels": [ + "bat" + ], + "related_ids": [], + "broader_ids": [ + "5722" + ], + "geo_area_code": null + }, + { + "id": "450898", + "label": "European Forest Institute", + "alt_labels": [ + "EFI" + ], + "related_ids": [], + "broader_ids": [ + "2187" + ], + "geo_area_code": null + }, + { + "id": "4509", + "label": "carriage of goods", + "alt_labels": [ + "goods traffic", + "haulage of goods" + ], + "related_ids": [ + "1099", + "387" + ], + "broader_ids": [ + "2181" + ], + "geo_area_code": null + }, + { + "id": "450925", + "label": "national day of mourning", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5322" + ], + "geo_area_code": null + }, + { + "id": "450953", + "label": "African Court of Justice and Human Rights", + "alt_labels": [ + "ACHPR", + "ACJ", + "ACJHR", + "African Court of Justice", + "African Court on Human and Peoples' Rights" + ], + "related_ids": [ + "6077" + ], + "broader_ids": [ + "2202" + ], + "geo_area_code": null + }, + { + "id": "450983", + "label": "International Centre for Genetic Engineering and Biotechnology", + "alt_labels": [ + "ICGEB" + ], + "related_ids": [], + "broader_ids": [ + "1455" + ], + "geo_area_code": null + }, + { + "id": "451", + "label": "record library", + "alt_labels": [], + "related_ids": [ + "3871" + ], + "broader_ids": [ + "4366" + ], + "geo_area_code": null + }, + { + "id": "4510", + "label": "surface transport", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1954" + ], + "geo_area_code": null + }, + { + "id": "451069", + "label": "industrial accident", + "alt_labels": [], + "related_ids": [ + "4076", + "6914", + "921" + ], + "broader_ids": [ + "2507" + ], + "geo_area_code": null + }, + { + "id": "4511", + "label": "carriage of passengers", + "alt_labels": [ + "passenger traffic" + ], + "related_ids": [ + "193", + "4386", + "4464", + "5956", + "c_a02c420c" + ], + "broader_ids": [ + "2181" + ], + "geo_area_code": null + }, + { + "id": "4512", + "label": "public transport", + "alt_labels": [ + "mass transit", + "public transportation" + ], + "related_ids": [ + "4534" + ], + "broader_ids": [ + "4511" + ], + "geo_area_code": null + }, + { + "id": "4513", + "label": "illegal abortion", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4504" + ], + "geo_area_code": null + }, + { + "id": "4514", + "label": "rail transport", + "alt_labels": [ + "rail connection", + "rail traffic", + "railway", + "transport by railway" + ], + "related_ids": [ + "2350", + "3114", + "4382", + "4652", + "5243", + "7985" + ], + "broader_ids": [ + "4539" + ], + "geo_area_code": null + }, + { + "id": "451462", + "label": "Northern Mariana Islands", + "alt_labels": [ + "Commonwealth of the Northern Mariana Islands", + "Northern Marianas" + ], + "related_ids": [ + "888" + ], + "broader_ids": [ + "1296", + "8366" + ], + "geo_area_code": "MNP" + }, + { + "id": "451486", + "label": "South Sudan", + "alt_labels": [ + "Republic of South Sudan" + ], + "related_ids": [], + "broader_ids": [ + "357", + "5107" + ], + "geo_area_code": "SSD" + }, + { + "id": "4515", + "label": "inland waterway transport", + "alt_labels": [ + "inland waterway connection", + "inland waterway traffic", + "river traffic", + "river transport" + ], + "related_ids": [ + "2350", + "3107", + "5347" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "4516", + "label": "private means of transport", + "alt_labels": [], + "related_ids": [ + "5927" + ], + "broader_ids": [ + "2181" + ], + "geo_area_code": null + }, + { + "id": "4517", + "label": "intercontinental transport", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3098" + ], + "geo_area_code": null + }, + { + "id": "4518", + "label": "inland transport", + "alt_labels": [], + "related_ids": [ + "5213" + ], + "broader_ids": [ + "3098" + ], + "geo_area_code": null + }, + { + "id": "451885", + "label": "Sint Maarten", + "alt_labels": [], + "related_ids": [ + "3816" + ], + "broader_ids": [ + "2042", + "2287" + ], + "geo_area_code": "SXM" + }, + { + "id": "4519", + "label": "international transport", + "alt_labels": [ + "international traffic" + ], + "related_ids": [ + "1283", + "4520", + "5214" + ], + "broader_ids": [ + "3098" + ], + "geo_area_code": null + }, + { + "id": "451912", + "label": "Bonaire, Saint Eustatius and Saba", + "alt_labels": [ + "BES islands", + "Caribbean Netherlands" + ], + "related_ids": [], + "broader_ids": [ + "2042", + "2287" + ], + "geo_area_code": "BES" + }, + { + "id": "451941", + "label": "Guernsey", + "alt_labels": [ + "Bailiwick of Guernsey" + ], + "related_ids": [], + "broader_ids": [ + "1290" + ], + "geo_area_code": "GGY" + }, + { + "id": "451991", + "label": "Jersey\u00a0", + "alt_labels": [ + "Bailiwick of\u00a0Jersey" + ], + "related_ids": [], + "broader_ids": [ + "1290" + ], + "geo_area_code": null + }, + { + "id": "452", + "label": "speech", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "486" + ], + "geo_area_code": null + }, + { + "id": "4520", + "label": "international road transport", + "alt_labels": [ + "TIR", + "TIR agreement" + ], + "related_ids": [ + "4519" + ], + "broader_ids": [ + "4533" + ], + "geo_area_code": null + }, + { + "id": "4521", + "label": "intra-EU transport", + "alt_labels": [ + "inter-Community transport", + "intra-Community traffic", + "intra-Community transport" + ], + "related_ids": [], + "broader_ids": [ + "3098" + ], + "geo_area_code": null + }, + { + "id": "4522", + "label": "maritime transport", + "alt_labels": [ + "maritime connection", + "sea transport", + "sea transport connection", + "seagoing traffic" + ], + "related_ids": [ + "2350", + "2641", + "2671", + "3107", + "3163", + "3541", + "4652", + "c_315af034", + "c_8d31aed6", + "c_d978c1fc" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "4524", + "label": "multifibre agreement", + "alt_labels": [ + "MFA", + "multifibre arrangement" + ], + "related_ids": [ + "1418", + "435" + ], + "broader_ids": [ + "3185" + ], + "geo_area_code": null + }, + { + "id": "4525", + "label": "therapeutic abortion", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4504" + ], + "geo_area_code": null + }, + { + "id": "4526", + "label": "national transport", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3098" + ], + "geo_area_code": null + }, + { + "id": "4527", + "label": "cable transport", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1954" + ], + "geo_area_code": null + }, + { + "id": "4528", + "label": "pipeline transport", + "alt_labels": [], + "related_ids": [ + "4507" + ], + "broader_ids": [ + "1954" + ], + "geo_area_code": null + }, + { + "id": "4529", + "label": "carriage for hire or reward", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2181" + ], + "geo_area_code": null + }, + { + "id": "453", + "label": "access to information", + "alt_labels": [ + "free movement of information", + "public information" + ], + "related_ids": [ + "3028", + "4330", + "435228", + "4366", + "441", + "4626", + "513", + "5334", + "5399", + "5936" + ], + "broader_ids": [ + "2472" + ], + "geo_area_code": null + }, + { + "id": "4530", + "label": "own-account transport", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2181" + ], + "geo_area_code": null + }, + { + "id": "4531", + "label": "means of public conveyance", + "alt_labels": [], + "related_ids": [ + "4136" + ], + "broader_ids": [ + "2181" + ], + "geo_area_code": null + }, + { + "id": "4532", + "label": "regional transport", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3098" + ], + "geo_area_code": null + }, + { + "id": "4533", + "label": "road transport", + "alt_labels": [ + "road haulage", + "transport by road" + ], + "related_ids": [ + "1361", + "2325", + "3303", + "4398", + "5215" + ], + "broader_ids": [ + "4539" + ], + "geo_area_code": null + }, + { + "id": "4534", + "label": "school transport", + "alt_labels": [], + "related_ids": [ + "4512" + ], + "broader_ids": [ + "4705" + ], + "geo_area_code": null + }, + { + "id": "4535", + "label": "semi-public transport", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2181" + ], + "geo_area_code": null + }, + { + "id": "4536", + "label": "transport under customs control", + "alt_labels": [], + "related_ids": [ + "4379", + "4500" + ], + "broader_ids": [ + "2494" + ], + "geo_area_code": null + }, + { + "id": "4537", + "label": "underground transport", + "alt_labels": [], + "related_ids": [ + "3089" + ], + "broader_ids": [ + "1954" + ], + "geo_area_code": null + }, + { + "id": "4538", + "label": "suburban transport", + "alt_labels": [], + "related_ids": [ + "4804" + ], + "broader_ids": [ + "4541" + ], + "geo_area_code": null + }, + { + "id": "4539", + "label": "land transport", + "alt_labels": [], + "related_ids": [ + "4507", + "5347" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "454", + "label": "sexual discrimination", + "alt_labels": [ + "discrimination against women", + "gender discrimination", + "sexism" + ], + "related_ids": [ + "7389", + "81", + "8448" + ], + "broader_ids": [ + "3908" + ], + "geo_area_code": null + }, + { + "id": "4540", + "label": "cross-border transport", + "alt_labels": [ + "frontier traffic", + "frontier transport", + "transfrontier transport" + ], + "related_ids": [ + "c_4c441ea0" + ], + "broader_ids": [ + "3098" + ], + "geo_area_code": null + }, + { + "id": "4541", + "label": "urban transport", + "alt_labels": [ + "intercity transport" + ], + "related_ids": [ + "515" + ], + "broader_ids": [ + "2181" + ], + "geo_area_code": null + }, + { + "id": "4542", + "label": "carrier", + "alt_labels": [ + "charterer", + "forwarding agent", + "shipowner" + ], + "related_ids": [], + "broader_ids": [ + "818" + ], + "geo_area_code": null + }, + { + "id": "4543", + "label": "work", + "alt_labels": [ + "labour" + ], + "related_ids": [ + "2130", + "3708", + "5526" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "4544", + "label": "home working", + "alt_labels": [ + "home worker", + "working from home" + ], + "related_ids": [ + "1653", + "1740" + ], + "broader_ids": [ + "5940" + ], + "geo_area_code": null + }, + { + "id": "4545", + "label": "nitrogen", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3809" + ], + "geo_area_code": null + }, + { + "id": "4546", + "label": "assembly line work", + "alt_labels": [], + "related_ids": [ + "2708" + ], + "broader_ids": [ + "2184" + ], + "geo_area_code": null + }, + { + "id": "4547", + "label": "full-time employment", + "alt_labels": [ + "full-time", + "full-time job", + "full-time work", + "permanent employment", + "steady job" + ], + "related_ids": [], + "broader_ids": [ + "4299" + ], + "geo_area_code": null + }, + { + "id": "454784", + "label": "Galapagos Islands", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "841" + ], + "geo_area_code": null + }, + { + "id": "4548", + "label": "part-time employment", + "alt_labels": [ + "part-time", + "part-time job", + "part-time work" + ], + "related_ids": [ + "1503", + "559" + ], + "broader_ids": [ + "5940" + ], + "geo_area_code": null + }, + { + "id": "4549", + "label": "moonlighting", + "alt_labels": [ + "clandestine employment", + "illegal employment", + "illegal work", + "undeclared employment", + "undeclared work" + ], + "related_ids": [ + "4556", + "574", + "661" + ], + "broader_ids": [ + "4299" + ], + "geo_area_code": null + }, + { + "id": "455", + "label": "economic discrimination", + "alt_labels": [], + "related_ids": [ + "504", + "687" + ], + "broader_ids": [ + "3908" + ], + "geo_area_code": null + }, + { + "id": "4550", + "label": "team work", + "alt_labels": [ + "group work" + ], + "related_ids": [], + "broader_ids": [ + "2184" + ], + "geo_area_code": null + }, + { + "id": "4551", + "label": "night work", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "592" + ], + "geo_area_code": null + }, + { + "id": "4552", + "label": "child labour", + "alt_labels": [], + "related_ids": [ + "1739", + "3916", + "3919", + "758", + "821" + ], + "broader_ids": [ + "4299" + ], + "geo_area_code": null + }, + { + "id": "4553", + "label": "shift work", + "alt_labels": [ + "continuous shift work" + ], + "related_ids": [], + "broader_ids": [ + "592" + ], + "geo_area_code": null + }, + { + "id": "4554", + "label": "schoolwork", + "alt_labels": [ + "pupils' work" + ], + "related_ids": [ + "2059" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "4555", + "label": "older worker", + "alt_labels": [ + "elderly worker" + ], + "related_ids": [ + "2333", + "c_c6be3d6d" + ], + "broader_ids": [ + "1737" + ], + "geo_area_code": null + }, + { + "id": "4556", + "label": "clandestine worker", + "alt_labels": [ + "illicit worker" + ], + "related_ids": [ + "1738", + "4549" + ], + "broader_ids": [ + "1737" + ], + "geo_area_code": null + }, + { + "id": "4557", + "label": "worker (EU)", + "alt_labels": [ + "Community worker", + "intra-Community worker" + ], + "related_ids": [ + "1048", + "1634", + "2454" + ], + "broader_ids": [ + "1737" + ], + "geo_area_code": null + }, + { + "id": "4558", + "label": "frontier worker", + "alt_labels": [ + "cross-border worker" + ], + "related_ids": [ + "1914", + "1922", + "c_c8363c09" + ], + "broader_ids": [ + "1737" + ], + "geo_area_code": null + }, + { + "id": "4559", + "label": "worker with disabilities", + "alt_labels": [ + "disabled worker", + "handicapped worker", + "worker with reduced mobility" + ], + "related_ids": [ + "1231", + "6550", + "731" + ], + "broader_ids": [ + "1737" + ], + "geo_area_code": null + }, + { + "id": "456", + "label": "linguistic discrimination", + "alt_labels": [], + "related_ids": [ + "1205" + ], + "broader_ids": [ + "3908" + ], + "geo_area_code": null + }, + { + "id": "4560", + "label": "Baden-W\u00fcrttemberg", + "alt_labels": [ + "Baden-W\u00fcrttemberg (Land)" + ], + "related_ids": [], + "broader_ids": [ + "1329" + ], + "geo_area_code": null + }, + { + "id": "4561", + "label": "manual worker", + "alt_labels": [], + "related_ids": [ + "2207", + "2784" + ], + "broader_ids": [ + "1737" + ], + "geo_area_code": null + }, + { + "id": "4562", + "label": "migrant worker", + "alt_labels": [ + "emigrant worker", + "foreign labour", + "foreign worker", + "immigrant worker" + ], + "related_ids": [ + "1462", + "1634", + "1911", + "2330", + "3320", + "4004", + "439", + "583", + "6344", + "675", + "687", + "688" + ], + "broader_ids": [ + "1737" + ], + "geo_area_code": null + }, + { + "id": "4563", + "label": "seasonal worker", + "alt_labels": [], + "related_ids": [ + "1738", + "1925", + "5941", + "5980" + ], + "broader_ids": [ + "1737" + ], + "geo_area_code": null + }, + { + "id": "4564", + "label": "social worker", + "alt_labels": [ + "welfare officer", + "youth worker" + ], + "related_ids": [ + "3360", + "4143" + ], + "broader_ids": [ + "2517" + ], + "geo_area_code": null + }, + { + "id": "4565", + "label": "public works", + "alt_labels": [], + "related_ids": [ + "2475", + "3879", + "4619" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "4566", + "label": "clover", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2412" + ], + "geo_area_code": null + }, + { + "id": "4567", + "label": "Bahamas", + "alt_labels": [ + "Commonwealth of the Bahamas" + ], + "related_ids": [], + "broader_ids": [ + "1180", + "2119", + "4069", + "5083", + "5265", + "c_b2c019c8" + ], + "geo_area_code": "BHS" + }, + { + "id": "4568", + "label": "Trentino-Alto Adige", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1520" + ], + "geo_area_code": null + }, + { + "id": "4569", + "label": "Treasury", + "alt_labels": [ + "exchequer", + "public treasury" + ], + "related_ids": [ + "4118", + "5021", + "729" + ], + "broader_ids": [ + "1018" + ], + "geo_area_code": null + }, + { + "id": "457", + "label": "political discrimination", + "alt_labels": [], + "related_ids": [ + "1282" + ], + "broader_ids": [ + "3908" + ], + "geo_area_code": null + }, + { + "id": "4570", + "label": "Trinidad and Tobago", + "alt_labels": [ + "Republic of Trinidad and Tobago" + ], + "related_ids": [], + "broader_ids": [ + "2119", + "2362", + "4069", + "5083", + "5265", + "c_b2c019c8" + ], + "geo_area_code": "TTO" + }, + { + "id": "4571", + "label": "triticale", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5360" + ], + "geo_area_code": null + }, + { + "id": "4572", + "label": "Bahrain", + "alt_labels": [ + "Kingdom of Bahrain" + ], + "related_ids": [], + "broader_ids": [ + "1658", + "5776", + "5777", + "c_6e703074", + "c_b2c019c8" + ], + "geo_area_code": "BHR" + }, + { + "id": "4573", + "label": "barter", + "alt_labels": [], + "related_ids": [ + "661" + ], + "broader_ids": [ + "614" + ], + "geo_area_code": null + }, + { + "id": "4574", + "label": "trust", + "alt_labels": [], + "related_ids": [ + "1592", + "69" + ], + "broader_ids": [ + "802" + ], + "geo_area_code": null + }, + { + "id": "4575", + "label": "tube", + "alt_labels": [ + "metal tube", + "plastic tube" + ], + "related_ids": [ + "4584" + ], + "broader_ids": [ + "3800" + ], + "geo_area_code": null + }, + { + "id": "4576", + "label": "animal tuberculosis", + "alt_labels": [ + "bovine tuberculosis" + ], + "related_ids": [], + "broader_ids": [ + "1755" + ], + "geo_area_code": null + }, + { + "id": "4577", + "label": "tungsten", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1885" + ], + "geo_area_code": null + }, + { + "id": "4578", + "label": "Tunisia", + "alt_labels": [ + "Republic of Tunisia", + "Tunisian Republic" + ], + "related_ids": [], + "broader_ids": [ + "1658", + "1734", + "5780", + "c_6e703074" + ], + "geo_area_code": "TUN" + }, + { + "id": "4579", + "label": "turbine", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1718" + ], + "geo_area_code": null + }, + { + "id": "458", + "label": "racial discrimination", + "alt_labels": [ + "racial desegregation", + "racial equality", + "racial segregation" + ], + "related_ids": [ + "2000" + ], + "broader_ids": [ + "3908" + ], + "geo_area_code": null + }, + { + "id": "4580", + "label": "T\u00fcrkiye", + "alt_labels": [ + "Republic of Turkey", + "Republic of T\u00fcrkiye", + "Turkey" + ], + "related_ids": [ + "3500", + "c_99e6dc30" + ], + "broader_ids": [ + "122", + "2106", + "2200", + "2705", + "5780", + "912" + ], + "geo_area_code": "TUR" + }, + { + "id": "4581", + "label": "guardianship", + "alt_labels": [ + "placed under guardianship" + ], + "related_ids": [], + "broader_ids": [ + "540" + ], + "geo_area_code": null + }, + { + "id": "4582", + "label": "soft fruit", + "alt_labels": [ + "bilberry", + "blackberry", + "blackcurrant", + "cranberry", + "currant", + "gooseberry", + "mulberry", + "raspberry", + "strawberry" + ], + "related_ids": [], + "broader_ids": [ + "1115" + ], + "geo_area_code": null + }, + { + "id": "4583", + "label": "Tuvalu", + "alt_labels": [ + "Ellis Islands" + ], + "related_ids": [], + "broader_ids": [ + "2546", + "5083", + "8366", + "c_b2c019c8" + ], + "geo_area_code": "TUV" + }, + { + "id": "4584", + "label": "piping", + "alt_labels": [ + "pipe", + "pipe connector", + "taps", + "valve" + ], + "related_ids": [ + "4575" + ], + "broader_ids": [ + "1834" + ], + "geo_area_code": null + }, + { + "id": "4585", + "label": "VAT", + "alt_labels": [ + "turnover tax", + "value added tax" + ], + "related_ids": [ + "3208", + "3560", + "4641", + "5868", + "5964" + ], + "broader_ids": [ + "1321" + ], + "geo_area_code": null + }, + { + "id": "4586", + "label": "Central African Economic and Monetary Community", + "alt_labels": [ + "CACEU", + "CAEMC", + "CAMU", + "Central African Customs and Economic Union", + "Central African Monetary Union", + "Economic and Monetary Community of Central Africa", + "Equatorial Customs Union", + "UDE", + "UEAC", + "Union of Central African States" + ], + "related_ids": [ + "4587" + ], + "broader_ids": [ + "2167" + ], + "geo_area_code": null + }, + { + "id": "4587", + "label": "CAEMC countries", + "alt_labels": [ + "CAEEU countries", + "CEMAC countries" + ], + "related_ids": [ + "4586" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "4588", + "label": "Belgo-Luxembourg Economic Union", + "alt_labels": [ + "BLEU" + ], + "related_ids": [], + "broader_ids": [ + "2187" + ], + "geo_area_code": null + }, + { + "id": "459", + "label": "religious discrimination", + "alt_labels": [ + "Christianophobia", + "Islamophobia", + "religious intolerance" + ], + "related_ids": [ + "1628", + "3257", + "3486" + ], + "broader_ids": [ + "3908" + ], + "geo_area_code": null + }, + { + "id": "4591", + "label": "International Telecommunication Union", + "alt_labels": [ + "ITU", + "International Telecommunications Union" + ], + "related_ids": [ + "4424", + "5248" + ], + "broader_ids": [ + "1455" + ], + "geo_area_code": null + }, + { + "id": "4593", + "label": "unanimity", + "alt_labels": [ + "unanimous vote" + ], + "related_ids": [], + "broader_ids": [ + "1748" + ], + "geo_area_code": null + }, + { + "id": "4594", + "label": "UN Centre for Regional Development", + "alt_labels": [ + "UNCRD", + "United Nations Centre for Regional Development" + ], + "related_ids": [ + "431" + ], + "broader_ids": [ + "8380" + ], + "geo_area_code": null + }, + { + "id": "4595", + "label": "Unesco", + "alt_labels": [ + " Scientific and Cultural Organisation", + "United Nations Educational" + ], + "related_ids": [ + "2459" + ], + "broader_ids": [ + "1455" + ], + "geo_area_code": null + }, + { + "id": "4596", + "label": "national unification", + "alt_labels": [ + "reunification" + ], + "related_ids": [ + "3502" + ], + "broader_ids": [ + "1346" + ], + "geo_area_code": null + }, + { + "id": "4598", + "label": "lease", + "alt_labels": [], + "related_ids": [ + "4613" + ], + "broader_ids": [ + "1687" + ], + "geo_area_code": null + }, + { + "id": "46", + "label": "complementarity of trade", + "alt_labels": [], + "related_ids": [ + "1472", + "614" + ], + "broader_ids": [ + "482" + ], + "geo_area_code": null + }, + { + "id": "460", + "label": "price disparity", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2489" + ], + "geo_area_code": null + }, + { + "id": "4600", + "label": "customs union", + "alt_labels": [], + "related_ids": [ + "1463", + "2450", + "4380", + "4601", + "5545" + ], + "broader_ids": [ + "2519" + ], + "geo_area_code": null + }, + { + "id": "4601", + "label": "economic union", + "alt_labels": [], + "related_ids": [ + "1463", + "3219", + "4600", + "4608" + ], + "broader_ids": [ + "3013" + ], + "geo_area_code": null + }, + { + "id": "4602", + "label": "Economic and Monetary Union", + "alt_labels": [ + "EMU", + "Werner plan", + "Werner report" + ], + "related_ids": [ + "219", + "2451", + "4370", + "4608", + "6151" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "4604", + "label": "Interparliamentary Union", + "alt_labels": [ + "IPU" + ], + "related_ids": [ + "5549" + ], + "broader_ids": [ + "2188" + ], + "geo_area_code": null + }, + { + "id": "4605", + "label": "preferential agreement", + "alt_labels": [ + "preferential trade agreement" + ], + "related_ids": [ + "4385" + ], + "broader_ids": [ + "2450" + ], + "geo_area_code": null + }, + { + "id": "4606", + "label": "business lease", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4598" + ], + "geo_area_code": null + }, + { + "id": "4607", + "label": "WAEMU countries", + "alt_labels": [], + "related_ids": [ + "3722" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "4608", + "label": "monetary union", + "alt_labels": [], + "related_ids": [ + "1630", + "4601", + "4602" + ], + "broader_ids": [ + "3239" + ], + "geo_area_code": null + }, + { + "id": "461", + "label": "economic disparity", + "alt_labels": [ + "economic imbalance" + ], + "related_ids": [ + "462" + ], + "broader_ids": [ + "427" + ], + "geo_area_code": null + }, + { + "id": "4610", + "label": "Unisist", + "alt_labels": [ + "Universal Science Information System", + "Universal System for Information in Science and Technology", + "World Information System for Science and Technology", + "World Science Information System", + "World Scientific and Technical Information System" + ], + "related_ids": [], + "broader_ids": [ + "4595" + ], + "geo_area_code": null + }, + { + "id": "4611", + "label": "UN Institute for Training and Research", + "alt_labels": [ + "UNITAR", + "United Nations Institute for Training and Research" + ], + "related_ids": [], + "broader_ids": [ + "8380" + ], + "geo_area_code": null + }, + { + "id": "4612", + "label": "livestock unit", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5962" + ], + "geo_area_code": null + }, + { + "id": "4613", + "label": "farm lease", + "alt_labels": [ + "agricultural lease" + ], + "related_ids": [ + "4598" + ], + "broader_ids": [ + "982" + ], + "geo_area_code": null + }, + { + "id": "4614", + "label": "UNRWA", + "alt_labels": [ + "UN Relief and Works Agency for Palestine Refugees", + "UN Relief and Works Agency for Palestine Refugees in the Near East", + "UNRWAPRNE", + "United Nations Relief and Works Agency" + ], + "related_ids": [ + "3501" + ], + "broader_ids": [ + "4365" + ], + "geo_area_code": null + }, + { + "id": "4615", + "label": "Asian-Pacific Parliamentarians' Union", + "alt_labels": [ + "APPU" + ], + "related_ids": [], + "broader_ids": [ + "2172" + ], + "geo_area_code": null + }, + { + "id": "4616", + "label": "Universal Postal Union", + "alt_labels": [ + "UPU" + ], + "related_ids": [ + "2566", + "5248" + ], + "broader_ids": [ + "1455" + ], + "geo_area_code": null + }, + { + "id": "4617", + "label": "uranium", + "alt_labels": [ + "enriched uranium", + "natural uranium", + "uranium 235" + ], + "related_ids": [ + "1885", + "3809" + ], + "broader_ids": [ + "1840" + ], + "geo_area_code": null + }, + { + "id": "4618", + "label": "urbanisation", + "alt_labels": [ + "urban development", + "urbanization" + ], + "related_ids": [ + "2559" + ], + "broader_ids": [ + "4619" + ], + "geo_area_code": null + }, + { + "id": "4619", + "label": "town planning", + "alt_labels": [ + "city planning", + "community planning", + "town development", + "urban design", + "urban development policy", + "urban planning" + ], + "related_ids": [ + "1157", + "2471", + "4565", + "4709", + "7379" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "462", + "label": "regional disparity", + "alt_labels": [ + "regional imbalance" + ], + "related_ids": [ + "3052", + "3073", + "3079", + "461", + "5499" + ], + "broader_ids": [ + "2515" + ], + "geo_area_code": null + }, + { + "id": "4620", + "label": "USSR", + "alt_labels": [ + "Soviet Union", + "former USSR" + ], + "related_ids": [], + "broader_ids": [ + "2291", + "5087" + ], + "geo_area_code": null + }, + { + "id": "4621", + "label": "Uruguay", + "alt_labels": [ + "Eastern Republic of Uruguay", + "Oriental Republic of Uruguay" + ], + "related_ids": [], + "broader_ids": [ + "1105", + "1624", + "2119", + "4069", + "5778" + ], + "geo_area_code": "URY" + }, + { + "id": "4622", + "label": "transport user", + "alt_labels": [], + "related_ids": [ + "5956" + ], + "broader_ids": [ + "4511" + ], + "geo_area_code": null + }, + { + "id": "4623", + "label": "price reduction", + "alt_labels": [ + "drop in prices", + "fall in prices", + "price decrease", + "reduction of prices" + ], + "related_ids": [], + "broader_ids": [ + "1039" + ], + "geo_area_code": null + }, + { + "id": "4624", + "label": "turnkey factory", + "alt_labels": [ + "advance factory" + ], + "related_ids": [ + "1347" + ], + "broader_ids": [ + "1434" + ], + "geo_area_code": null + }, + { + "id": "4625", + "label": "usufruct", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3929" + ], + "geo_area_code": null + }, + { + "id": "4626", + "label": "information user", + "alt_labels": [], + "related_ids": [ + "453" + ], + "broader_ids": [ + "4366" + ], + "geo_area_code": null + }, + { + "id": "4627", + "label": "use of aid", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3003" + ], + "geo_area_code": null + }, + { + "id": "4628", + "label": "use of water", + "alt_labels": [], + "related_ids": [ + "597" + ], + "broader_ids": [ + "3144" + ], + "geo_area_code": null + }, + { + "id": "4629", + "label": "energy use", + "alt_labels": [], + "related_ids": [ + "146", + "3201" + ], + "broader_ids": [ + "4886" + ], + "geo_area_code": null + }, + { + "id": "463", + "label": "preservative", + "alt_labels": [ + "preservative agent" + ], + "related_ids": [ + "132" + ], + "broader_ids": [ + "6052" + ], + "geo_area_code": null + }, + { + "id": "4630", + "label": "land use", + "alt_labels": [ + "utilisation of land" + ], + "related_ids": [ + "1542", + "1686", + "222", + "2477", + "2505", + "2655", + "3034", + "4298", + "4327", + "4336", + "4337", + "4426", + "685" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "4631", + "label": "peaceful use of energy", + "alt_labels": [], + "related_ids": [ + "4042", + "753" + ], + "broader_ids": [ + "2498" + ], + "geo_area_code": null + }, + { + "id": "4632", + "label": "Utrecht", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2288" + ], + "geo_area_code": null + }, + { + "id": "4633", + "label": "trade balance", + "alt_labels": [ + "balance of visible transactions", + "visible trade balance" + ], + "related_ids": [ + "1352", + "2128", + "4390", + "4440", + "56", + "614" + ], + "broader_ids": [ + "4671" + ], + "geo_area_code": null + }, + { + "id": "4634", + "label": "holiday", + "alt_labels": [ + "vacation" + ], + "related_ids": [ + "106" + ], + "broader_ids": [ + "1700" + ], + "geo_area_code": null + }, + { + "id": "4635", + "label": "vaccine", + "alt_labels": [], + "related_ids": [ + "4636" + ], + "broader_ids": [ + "2773" + ], + "geo_area_code": null + }, + { + "id": "4636", + "label": "vaccination", + "alt_labels": [], + "related_ids": [ + "4635" + ], + "broader_ids": [ + "1854" + ], + "geo_area_code": null + }, + { + "id": "4637", + "label": "cow", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5034" + ], + "geo_area_code": null + }, + { + "id": "4638", + "label": "suckler cow", + "alt_labels": [ + "nurse cow" + ], + "related_ids": [], + "broader_ids": [ + "4637" + ], + "geo_area_code": null + }, + { + "id": "4639", + "label": "dairy cow", + "alt_labels": [ + "dairy herd", + "milk cow" + ], + "related_ids": [ + "1110", + "1565", + "2763", + "2989", + "4484" + ], + "broader_ids": [ + "4637" + ], + "geo_area_code": null + }, + { + "id": "464", + "label": "medical centre", + "alt_labels": [ + "dispensary", + "health care centre" + ], + "related_ids": [ + "3356" + ], + "broader_ids": [ + "4116" + ], + "geo_area_code": null + }, + { + "id": "4640", + "label": "Valle d'Aosta", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1520" + ], + "geo_area_code": null + }, + { + "id": "4641", + "label": "added value", + "alt_labels": [ + "gross added value", + "value added" + ], + "related_ids": [ + "4585", + "536" + ], + "broader_ids": [ + "55" + ], + "geo_area_code": null + }, + { + "id": "4642", + "label": "market capitalisation", + "alt_labels": [ + "market cap", + "market capitalization" + ], + "related_ids": [], + "broader_ids": [ + "248" + ], + "geo_area_code": null + }, + { + "id": "4643", + "label": "value of trade", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "614" + ], + "geo_area_code": null + }, + { + "id": "4644", + "label": "balance-of-payments deficit", + "alt_labels": [], + "related_ids": [ + "367" + ], + "broader_ids": [ + "4671" + ], + "geo_area_code": null + }, + { + "id": "4645", + "label": "customs valuation", + "alt_labels": [], + "related_ids": [ + "1309" + ], + "broader_ids": [ + "3156" + ], + "geo_area_code": null + }, + { + "id": "4646", + "label": "securities", + "alt_labels": [ + "transferable security" + ], + "related_ids": [ + "8469" + ], + "broader_ids": [ + "1804" + ], + "geo_area_code": null + }, + { + "id": "4647", + "label": "vanadium", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1885" + ], + "geo_area_code": null + }, + { + "id": "4648", + "label": "Vanuatu", + "alt_labels": [ + "New Hebrides", + "Republic of Vanuatu" + ], + "related_ids": [], + "broader_ids": [ + "1862", + "5083", + "8366", + "c_b2c019c8" + ], + "geo_area_code": "VUT" + }, + { + "id": "4649", + "label": "Holy See", + "alt_labels": [ + "Vatican", + "Vatican City State" + ], + "related_ids": [ + "5340" + ], + "broader_ids": [ + "912" + ], + "geo_area_code": null + }, + { + "id": "465", + "label": "food resources", + "alt_labels": [ + "food reserves", + "food supply" + ], + "related_ids": [ + "4287", + "4294" + ], + "broader_ids": [ + "1268" + ], + "geo_area_code": null + }, + { + "id": "4650", + "label": "calf", + "alt_labels": [], + "related_ids": [ + "4686" + ], + "broader_ids": [ + "5034" + ], + "geo_area_code": null + }, + { + "id": "4651", + "label": "vehicle", + "alt_labels": [ + "transport equipment", + "transport facilities" + ], + "related_ids": [], + "broader_ids": [ + "2015" + ], + "geo_area_code": null + }, + { + "id": "4652", + "label": "air-cushion vehicle", + "alt_labels": [ + "hovercraft", + "hovertrain" + ], + "related_ids": [ + "4514", + "4522" + ], + "broader_ids": [ + "4651" + ], + "geo_area_code": null + }, + { + "id": "4653", + "label": "two-wheeled vehicle", + "alt_labels": [ + "bicycle", + "cycle", + "lightweight motorcycle", + "motorbike", + "motorcycle", + "scooter" + ], + "related_ids": [ + "3840" + ], + "broader_ids": [ + "4533" + ], + "geo_area_code": null + }, + { + "id": "4654", + "label": "motor vehicle", + "alt_labels": [], + "related_ids": [ + "1140", + "1361", + "1994", + "5262" + ], + "broader_ids": [ + "4651" + ], + "geo_area_code": null + }, + { + "id": "4655", + "label": "agricultural vehicle", + "alt_labels": [], + "related_ids": [ + "1719", + "4476", + "846" + ], + "broader_ids": [ + "4651" + ], + "geo_area_code": null + }, + { + "id": "4656", + "label": "electric vehicle", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4651" + ], + "geo_area_code": null + }, + { + "id": "4657", + "label": "vehicle on rails", + "alt_labels": [ + "locomotive", + "railway carriage", + "railway equipment", + "train", + "tram" + ], + "related_ids": [ + "3089" + ], + "broader_ids": [ + "4514" + ], + "geo_area_code": null + }, + { + "id": "4658", + "label": "commercial vehicle", + "alt_labels": [ + "juggernaut", + "lorry", + "lorry tanker", + "trailer", + "truck" + ], + "related_ids": [], + "broader_ids": [ + "2233" + ], + "geo_area_code": null + }, + { + "id": "466", + "label": "available energy resources", + "alt_labels": [], + "related_ids": [ + "3538" + ], + "broader_ids": [ + "4886" + ], + "geo_area_code": null + }, + { + "id": "4660", + "label": "Veneto", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1520" + ], + "geo_area_code": null + }, + { + "id": "4661", + "label": "invisible trade balance", + "alt_labels": [ + "balance on invisibles", + "invisible trade" + ], + "related_ids": [], + "broader_ids": [ + "4671" + ], + "geo_area_code": null + }, + { + "id": "4662", + "label": "Venezuela", + "alt_labels": [ + "Bolivarian Republic of Venezuela" + ], + "related_ids": [], + "broader_ids": [ + "1105", + "1624", + "2119", + "2148", + "4069", + "5778" + ], + "geo_area_code": "VEN" + }, + { + "id": "4663", + "label": "sale", + "alt_labels": [ + "offering for sale" + ], + "related_ids": [ + "2664", + "2998", + "4104", + "474", + "64", + "803", + "806" + ], + "broader_ids": [ + "5268" + ], + "geo_area_code": null + }, + { + "id": "4664", + "label": "credit sale", + "alt_labels": [ + "instalment sale" + ], + "related_ids": [ + "289", + "293", + "3229" + ], + "broader_ids": [ + "4663" + ], + "geo_area_code": null + }, + { + "id": "4665", + "label": "door-to-door selling", + "alt_labels": [ + "door-to-door sale", + "door-to-door sales", + "doorstep selling", + "house-to-house selling", + "in-home selling" + ], + "related_ids": [ + "3213" + ], + "broader_ids": [ + "4663" + ], + "geo_area_code": null + }, + { + "id": "4666", + "label": "retail selling", + "alt_labels": [], + "related_ids": [ + "2652", + "3268", + "5" + ], + "broader_ids": [ + "4663" + ], + "geo_area_code": null + }, + { + "id": "4667", + "label": "discount sale", + "alt_labels": [ + "promotional sale", + "reduced-price sale" + ], + "related_ids": [ + "2685", + "2803" + ], + "broader_ids": [ + "4663" + ], + "geo_area_code": null + }, + { + "id": "4668", + "label": "auction sale", + "alt_labels": [ + "auction", + "outcry", + "public auction", + "public sale" + ], + "related_ids": [], + "broader_ids": [ + "4663" + ], + "geo_area_code": null + }, + { + "id": "4669", + "label": "direct selling", + "alt_labels": [ + "person-to-person selling" + ], + "related_ids": [ + "3213" + ], + "broader_ids": [ + "4663" + ], + "geo_area_code": null + }, + { + "id": "467", + "label": "driving mechanism", + "alt_labels": [ + "steering mechanism" + ], + "related_ids": [], + "broader_ids": [ + "848" + ], + "geo_area_code": null + }, + { + "id": "4670", + "label": "wholesale selling", + "alt_labels": [], + "related_ids": [ + "2653", + "6" + ], + "broader_ids": [ + "4663" + ], + "geo_area_code": null + }, + { + "id": "4671", + "label": "balance of payments", + "alt_labels": [ + "BOP", + "capital balance" + ], + "related_ids": [ + "1006", + "1075", + "1851", + "2002", + "2219", + "3172", + "423", + "6007", + "73" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "4672", + "label": "duty-free sale", + "alt_labels": [ + "duty-free shop", + "shipboard sale", + "tax-exempt sale", + "tax-free shop" + ], + "related_ids": [ + "3208" + ], + "broader_ids": [ + "4663" + ], + "geo_area_code": null + }, + { + "id": "4673", + "label": "distance selling", + "alt_labels": [ + "mail-order buying", + "mail-order selling", + "teleshopping" + ], + "related_ids": [], + "broader_ids": [ + "4663" + ], + "geo_area_code": null + }, + { + "id": "4674", + "label": "orchard", + "alt_labels": [], + "related_ids": [ + "2396", + "322" + ], + "broader_ids": [ + "4630" + ], + "geo_area_code": null + }, + { + "id": "4675", + "label": "auditing", + "alt_labels": [], + "related_ids": [ + "173", + "1782", + "189", + "6064" + ], + "broader_ids": [ + "1155" + ], + "geo_area_code": null + }, + { + "id": "4676", + "label": "glass", + "alt_labels": [ + "blown glass", + "bottle glass", + "crystal glass", + "drawn glass", + "pane of glass", + "sheet glass", + "unworked glass", + "window glass" + ], + "related_ids": [], + "broader_ids": [ + "1396" + ], + "geo_area_code": null + }, + { + "id": "4679", + "label": "Bali", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1355" + ], + "geo_area_code": null + }, + { + "id": "468", + "label": "safety device", + "alt_labels": [ + "brake mechanism", + "head-rest", + "protective device", + "rear-view mirror", + "safety belt" + ], + "related_ids": [ + "4033" + ], + "broader_ids": [ + "848" + ], + "geo_area_code": null + }, + { + "id": "4680", + "label": "clothing", + "alt_labels": [ + "article of clothing", + "ready-made clothing", + "work clothes" + ], + "related_ids": [], + "broader_ids": [ + "1397" + ], + "geo_area_code": null + }, + { + "id": "4681", + "label": "meat", + "alt_labels": [], + "related_ids": [ + "1374", + "1888", + "2738" + ], + "broader_ids": [ + "2737" + ], + "geo_area_code": null + }, + { + "id": "4682", + "label": "beef", + "alt_labels": [], + "related_ids": [ + "5034" + ], + "broader_ids": [ + "4681" + ], + "geo_area_code": null + }, + { + "id": "4683", + "label": "goatmeat", + "alt_labels": [], + "related_ids": [ + "5252" + ], + "broader_ids": [ + "4681" + ], + "geo_area_code": null + }, + { + "id": "4684", + "label": "horsemeat", + "alt_labels": [], + "related_ids": [ + "842" + ], + "broader_ids": [ + "4681" + ], + "geo_area_code": null + }, + { + "id": "4685", + "label": "buffalo meat", + "alt_labels": [], + "related_ids": [ + "5034" + ], + "broader_ids": [ + "4681" + ], + "geo_area_code": null + }, + { + "id": "4686", + "label": "veal", + "alt_labels": [], + "related_ids": [ + "4650" + ], + "broader_ids": [ + "4682" + ], + "geo_area_code": null + }, + { + "id": "4687", + "label": "poultrymeat", + "alt_labels": [], + "related_ids": [ + "4743" + ], + "broader_ids": [ + "4681" + ], + "geo_area_code": null + }, + { + "id": "4688", + "label": "boned meat", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4681" + ], + "geo_area_code": null + }, + { + "id": "4689", + "label": "fresh meat", + "alt_labels": [], + "related_ids": [ + "5232" + ], + "broader_ids": [ + "4681" + ], + "geo_area_code": null + }, + { + "id": "469", + "label": "signalling device", + "alt_labels": [ + "anti-dazzle headlamp", + "audible warning device", + "dipped-beam headlamp", + "fog lamp", + "light", + "lighting system", + "main-beam headlamp", + "side marker lamp", + "stop lamp", + "vehicle signals" + ], + "related_ids": [ + "4162" + ], + "broader_ids": [ + "848" + ], + "geo_area_code": null + }, + { + "id": "4690", + "label": "Western Balkans", + "alt_labels": [ + "Balkan countries", + "Western Balkan countries", + "Western Balkan country", + "Western Balkan region", + "countries in the Western Balkans", + "countries of the Western Balkans" + ], + "related_ids": [ + "8285" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "4691", + "label": "sheepmeat", + "alt_labels": [ + "lamb meat", + "mutton" + ], + "related_ids": [ + "2211" + ], + "broader_ids": [ + "4681" + ], + "geo_area_code": null + }, + { + "id": "4692", + "label": "pigmeat", + "alt_labels": [ + "pork" + ], + "related_ids": [ + "2560" + ], + "broader_ids": [ + "4681" + ], + "geo_area_code": null + }, + { + "id": "4694", + "label": "Deputy Speaker of Parliament", + "alt_labels": [], + "related_ids": [ + "5134" + ], + "broader_ids": [ + "5068" + ], + "geo_area_code": null + }, + { + "id": "4695", + "label": "victim", + "alt_labels": [], + "related_ids": [ + "1339", + "3151", + "3926", + "4697", + "499", + "5412", + "c_0f3b8370" + ], + "broader_ids": [ + "3513" + ], + "geo_area_code": null + }, + { + "id": "4696", + "label": "civilian victim", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4697" + ], + "geo_area_code": null + }, + { + "id": "4697", + "label": "war victim", + "alt_labels": [], + "related_ids": [ + "4695", + "498", + "564", + "8410", + "8415" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "4698", + "label": "broadcast videography", + "alt_labels": [ + "Antiope", + "Ceefax", + "Oracle" + ], + "related_ids": [ + "4432" + ], + "broader_ids": [ + "3022" + ], + "geo_area_code": null + }, + { + "id": "4699", + "label": "interactive videotex", + "alt_labels": [ + "Bildschirmtext", + "Minitel", + "Prestel", + "Viditel", + "Viewdata" + ], + "related_ids": [ + "3023", + "4821" + ], + "broader_ids": [ + "3022" + ], + "geo_area_code": null + }, + { + "id": "47", + "label": "consumer behaviour", + "alt_labels": [], + "related_ids": [ + "834", + "895" + ], + "broader_ids": [ + "138" + ], + "geo_area_code": null + }, + { + "id": "470", + "label": "dissidence", + "alt_labels": [ + "dissident" + ], + "related_ids": [ + "2155", + "3900", + "584" + ], + "broader_ids": [ + "2001" + ], + "geo_area_code": null + }, + { + "id": "4700", + "label": "integration into employment", + "alt_labels": [], + "related_ids": [ + "1802", + "2593", + "372", + "6754" + ], + "broader_ids": [ + "2468" + ], + "geo_area_code": null + }, + { + "id": "4701", + "label": "second ballot", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3975" + ], + "geo_area_code": null + }, + { + "id": "4702", + "label": "collective activities", + "alt_labels": [], + "related_ids": [ + "3082", + "4153", + "4179" + ], + "broader_ids": [ + "4706" + ], + "geo_area_code": null + }, + { + "id": "4703", + "label": "business activity", + "alt_labels": [], + "related_ids": [ + "1156", + "813" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "4704", + "label": "politics", + "alt_labels": [ + "political life" + ], + "related_ids": [ + "1282", + "2180", + "220", + "2600", + "3947", + "695", + "c_4254375b" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "4705", + "label": "school life", + "alt_labels": [], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "4706", + "label": "social life", + "alt_labels": [], + "related_ids": [ + "3956", + "4205" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "4707", + "label": "Vietnam", + "alt_labels": [ + "Socialist Republic of Viet Nam" + ], + "related_ids": [ + "c_7d7608fa" + ], + "broader_ids": [ + "1847", + "2858", + "5087", + "6205" + ], + "geo_area_code": "VNM" + }, + { + "id": "4708", + "label": "vineyard", + "alt_labels": [ + "vine", + "vine variety", + "winegrowing area" + ], + "related_ids": [ + "2621", + "2888", + "4734" + ], + "broader_ids": [ + "4630" + ], + "geo_area_code": null + }, + { + "id": "4709", + "label": "town", + "alt_labels": [ + "city" + ], + "related_ids": [ + "4619" + ], + "broader_ids": [ + "515" + ], + "geo_area_code": null + }, + { + "id": "471", + "label": "dissolution of parliament", + "alt_labels": [], + "related_ids": [ + "1778", + "2242" + ], + "broader_ids": [ + "309" + ], + "geo_area_code": null + }, + { + "id": "4710", + "label": "medium-sized town", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4709" + ], + "geo_area_code": null + }, + { + "id": "4711", + "label": "new town", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4709" + ], + "geo_area_code": null + }, + { + "id": "4712", + "label": "satellite town", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4709" + ], + "geo_area_code": null + }, + { + "id": "4713", + "label": "wine", + "alt_labels": [], + "related_ids": [ + "2888", + "4726", + "4734", + "5385" + ], + "broader_ids": [ + "5018" + ], + "geo_area_code": null + }, + { + "id": "4714", + "label": "flavoured wine", + "alt_labels": [ + "mulled wine", + "vermouth" + ], + "related_ids": [], + "broader_ids": [ + "4713" + ], + "geo_area_code": null + }, + { + "id": "4715", + "label": "white wine", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4713" + ], + "geo_area_code": null + }, + { + "id": "4716", + "label": "local wine", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4713" + ], + "geo_area_code": null + }, + { + "id": "4717", + "label": "wine of superior quality", + "alt_labels": [ + "quality wine produced in a specific region", + "quality wines psr", + "qwpsr", + "wine of designated origin" + ], + "related_ids": [ + "3173" + ], + "broader_ids": [ + "4713" + ], + "geo_area_code": null + }, + { + "id": "4718", + "label": "table wine", + "alt_labels": [ + "ordinary wine", + "wine for direct consumption" + ], + "related_ids": [], + "broader_ids": [ + "4713" + ], + "geo_area_code": null + }, + { + "id": "4719", + "label": "bottled wine", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4713" + ], + "geo_area_code": null + }, + { + "id": "472", + "label": "deterrent", + "alt_labels": [ + "deterrent force", + "first-strike capacity" + ], + "related_ids": [], + "broader_ids": [ + "2464" + ], + "geo_area_code": null + }, + { + "id": "4720", + "label": "fortified wine", + "alt_labels": [ + "Madeira wine", + "dessert wine", + "liqueur wine", + "port wine", + "sherry", + "wine fortified for distillation" + ], + "related_ids": [], + "broader_ids": [ + "4713" + ], + "geo_area_code": null + }, + { + "id": "4721", + "label": "strip", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3800" + ], + "geo_area_code": null + }, + { + "id": "4722", + "label": "sparkling wine", + "alt_labels": [ + "semi-sparkling wine" + ], + "related_ids": [], + "broader_ids": [ + "4713" + ], + "geo_area_code": null + }, + { + "id": "4723", + "label": "ros\u00e9 wine", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4713" + ], + "geo_area_code": null + }, + { + "id": "4724", + "label": "red wine", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4713" + ], + "geo_area_code": null + }, + { + "id": "4725", + "label": "still wine", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4713" + ], + "geo_area_code": null + }, + { + "id": "4726", + "label": "vinification", + "alt_labels": [], + "related_ids": [ + "2888", + "4713", + "4734" + ], + "broader_ids": [ + "4416" + ], + "geo_area_code": null + }, + { + "id": "4727", + "label": "sexual violence", + "alt_labels": [ + "rape", + "sexual abuse", + "sexual assault" + ], + "related_ids": [ + "2823", + "4728", + "6557" + ], + "broader_ids": [ + "5572" + ], + "geo_area_code": null + }, + { + "id": "4728", + "label": "violence", + "alt_labels": [], + "related_ids": [ + "2073", + "307", + "3943", + "4727", + "4729", + "c_e4f135ba" + ], + "broader_ids": [ + "2690" + ], + "geo_area_code": null + }, + { + "id": "4729", + "label": "government violence", + "alt_labels": [], + "related_ids": [ + "1480", + "436", + "4728" + ], + "broader_ids": [ + "4045" + ], + "geo_area_code": null + }, + { + "id": "473", + "label": "distillation", + "alt_labels": [ + "compulsory distillation", + "distillation operation", + "preventive distillation", + "special distillation", + "voluntary distillation", + "wine delivery" + ], + "related_ids": [ + "1378", + "4734" + ], + "broader_ids": [ + "4416" + ], + "geo_area_code": null + }, + { + "id": "4730", + "label": "political violence", + "alt_labels": [ + "guerrilla", + "revolution" + ], + "related_ids": [], + "broader_ids": [ + "4045" + ], + "geo_area_code": null + }, + { + "id": "4731", + "label": "credit transfer", + "alt_labels": [ + "direct credit", + "giro transfer", + "wire transfer" + ], + "related_ids": [ + "2149" + ], + "broader_ids": [ + "1975" + ], + "geo_area_code": null + }, + { + "id": "4732", + "label": "Bangladesh", + "alt_labels": [ + "People's Republic of Bangladesh" + ], + "related_ids": [], + "broader_ids": [ + "2848", + "8367" + ], + "geo_area_code": "BGD" + }, + { + "id": "4733", + "label": "vitamin", + "alt_labels": [], + "related_ids": [ + "6789" + ], + "broader_ids": [ + "2773" + ], + "geo_area_code": null + }, + { + "id": "4734", + "label": "viticulture", + "alt_labels": [ + "grape production", + "winegrowing" + ], + "related_ids": [ + "2621", + "2888", + "4708", + "4713", + "4726", + "473", + "5385" + ], + "broader_ids": [ + "2723" + ], + "geo_area_code": null + }, + { + "id": "4735", + "label": "inland waterway", + "alt_labels": [ + "canal", + "river canal" + ], + "related_ids": [ + "5211" + ], + "broader_ids": [ + "3435" + ], + "geo_area_code": null + }, + { + "id": "4736", + "label": "international waterway", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3435" + ], + "geo_area_code": null + }, + { + "id": "4737", + "label": "expressway", + "alt_labels": [ + "ring road" + ], + "related_ids": [], + "broader_ids": [ + "3438" + ], + "geo_area_code": null + }, + { + "id": "4738", + "label": "bank", + "alt_labels": [], + "related_ids": [ + "2149", + "4763", + "521", + "c_d6e0eb67" + ], + "broader_ids": [ + "1452" + ], + "geo_area_code": null + }, + { + "id": "4739", + "label": "country road", + "alt_labels": [ + "farm road", + "farm track", + "forest road", + "local road", + "mule track", + "rural road", + "rural road system" + ], + "related_ids": [ + "1222" + ], + "broader_ids": [ + "3438" + ], + "geo_area_code": null + }, + { + "id": "474", + "label": "distributive trades", + "alt_labels": [ + "distribution network", + "distribution policy", + "distribution structure", + "sales network" + ], + "related_ids": [ + "13", + "267", + "3008", + "4663", + "478", + "5666", + "815" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "4740", + "label": "urban road", + "alt_labels": [], + "related_ids": [ + "1223" + ], + "broader_ids": [ + "3438" + ], + "geo_area_code": null + }, + { + "id": "4741", + "label": "road services department", + "alt_labels": [ + "highways department", + "road maintenance service", + "sewers" + ], + "related_ids": [], + "broader_ids": [ + "3377" + ], + "geo_area_code": null + }, + { + "id": "4742", + "label": "theft", + "alt_labels": [ + "campaign against theft" + ], + "related_ids": [ + "3348", + "374" + ], + "broader_ids": [ + "3944" + ], + "geo_area_code": null + }, + { + "id": "4743", + "label": "poultry", + "alt_labels": [ + "chicken", + "cock", + "duck", + "goose", + "hen", + "ostrich", + "table poultry" + ], + "related_ids": [ + "2121", + "4687", + "5760", + "8464" + ], + "broader_ids": [ + "2711" + ], + "geo_area_code": null + }, + { + "id": "4744", + "label": "African Development Bank", + "alt_labels": [ + "ADB Group", + "AfDB Group", + "African Development Bank Group" + ], + "related_ids": [ + "4806" + ], + "broader_ids": [ + "2167" + ], + "geo_area_code": null + }, + { + "id": "4745", + "label": "slaughtered poultry", + "alt_labels": [ + "dead poultry" + ], + "related_ids": [], + "broader_ids": [ + "4743" + ], + "geo_area_code": null + }, + { + "id": "4746", + "label": "laying poultry", + "alt_labels": [ + "laying hen" + ], + "related_ids": [], + "broader_ids": [ + "4743" + ], + "geo_area_code": null + }, + { + "id": "4747", + "label": "live poultry", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4743" + ], + "geo_area_code": null + }, + { + "id": "4748", + "label": "trade volume", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "614" + ], + "geo_area_code": null + }, + { + "id": "4749", + "label": "trading volume", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2002" + ], + "geo_area_code": null + }, + { + "id": "475", + "label": "energy distribution", + "alt_labels": [], + "related_ids": [ + "477", + "7395" + ], + "broader_ids": [ + "2498" + ], + "geo_area_code": null + }, + { + "id": "4750", + "label": "vote", + "alt_labels": [], + "related_ids": [ + "356", + "4754", + "4762" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "4751", + "label": "blank ballot paper", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "360" + ], + "geo_area_code": null + }, + { + "id": "4752", + "label": "agricultural bank", + "alt_labels": [ + "agricultural credit institution", + "farmers' bank" + ], + "related_ids": [ + "6339" + ], + "broader_ids": [ + "4738" + ], + "geo_area_code": null + }, + { + "id": "4753", + "label": "vote on a text as a whole", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4762" + ], + "geo_area_code": null + }, + { + "id": "4754", + "label": "passage of a bill", + "alt_labels": [], + "related_ids": [ + "1748", + "4750" + ], + "broader_ids": [ + "2702" + ], + "geo_area_code": null + }, + { + "id": "4755", + "label": "electronic voting", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4762" + ], + "geo_area_code": null + }, + { + "id": "4756", + "label": "roll-call vote", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4762" + ], + "geo_area_code": null + }, + { + "id": "4757", + "label": "invalid ballot paper", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "360" + ], + "geo_area_code": null + }, + { + "id": "4758", + "label": "compulsory voting", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2268" + ], + "geo_area_code": null + }, + { + "id": "4759", + "label": "advance voting", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4750" + ], + "geo_area_code": null + }, + { + "id": "476", + "label": "water supply", + "alt_labels": [ + "water distribution" + ], + "related_ids": [ + "1523", + "3535" + ], + "broader_ids": [ + "3377" + ], + "geo_area_code": null + }, + { + "id": "4760", + "label": "postal vote", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4750" + ], + "geo_area_code": null + }, + { + "id": "4761", + "label": "proxy vote", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4750" + ], + "geo_area_code": null + }, + { + "id": "4762", + "label": "parliamentary vote", + "alt_labels": [], + "related_ids": [ + "1748", + "4750", + "7215" + ], + "broader_ids": [ + "2703" + ], + "geo_area_code": null + }, + { + "id": "4763", + "label": "central bank", + "alt_labels": [ + "bank of issue", + "federal bank", + "national bank" + ], + "related_ids": [ + "2495", + "4738", + "5044", + "5455", + "5883" + ], + "broader_ids": [ + "2510" + ], + "geo_area_code": null + }, + { + "id": "4764", + "label": "preferential voting", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3977" + ], + "geo_area_code": null + }, + { + "id": "4765", + "label": "open ballot", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4750" + ], + "geo_area_code": null + }, + { + "id": "4766", + "label": "secret ballot", + "alt_labels": [ + "polling booth", + "secret vote" + ], + "related_ids": [], + "broader_ids": [ + "4750" + ], + "geo_area_code": null + }, + { + "id": "4767", + "label": "travel", + "alt_labels": [ + "business travel", + "business trip", + "tourist travel" + ], + "related_ids": [], + "broader_ids": [ + "4470" + ], + "geo_area_code": null + }, + { + "id": "4768", + "label": "package travel", + "alt_labels": [ + "inclusive tour", + "linked travel arrangement", + "organised tour", + "package holiday", + "package tour" + ], + "related_ids": [ + "2602" + ], + "broader_ids": [ + "4767" + ], + "geo_area_code": null + }, + { + "id": "4769", + "label": "group travel", + "alt_labels": [], + "related_ids": [ + "4471" + ], + "broader_ids": [ + "4767" + ], + "geo_area_code": null + }, + { + "id": "477", + "label": "electricity supply", + "alt_labels": [ + "electricity distribution" + ], + "related_ids": [ + "475", + "747" + ], + "broader_ids": [ + "3377" + ], + "geo_area_code": null + }, + { + "id": "4770", + "label": "volcanology", + "alt_labels": [ + "vulcanology" + ], + "related_ids": [ + "856" + ], + "broader_ids": [ + "1151" + ], + "geo_area_code": null + }, + { + "id": "4771", + "label": "agricultural advisory services", + "alt_labels": [], + "related_ids": [ + "780" + ], + "broader_ids": [ + "2493" + ], + "geo_area_code": null + }, + { + "id": "4772", + "label": "Wallis and Futuna", + "alt_labels": [ + "Wallis and Futuna Islands" + ], + "related_ids": [], + "broader_ids": [ + "1087", + "2546", + "8366" + ], + "geo_area_code": "WLF" + }, + { + "id": "4773", + "label": "yoghourt", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1573" + ], + "geo_area_code": null + }, + { + "id": "4774", + "label": "commercial bank", + "alt_labels": [ + "clearing bank", + "deposit-taking bank" + ], + "related_ids": [ + "293" + ], + "broader_ids": [ + "4738" + ], + "geo_area_code": null + }, + { + "id": "4775", + "label": "Yemen", + "alt_labels": [ + "Aden protectorate", + "People's Republic of Yemen", + "Republic of Yemen", + "former South Yemen" + ], + "related_ids": [], + "broader_ids": [ + "1658", + "1794", + "2705", + "8369" + ], + "geo_area_code": "YEM" + }, + { + "id": "4777", + "label": "Yorkshire and The Humber", + "alt_labels": [ + "Yorkshire and Humberside" + ], + "related_ids": [], + "broader_ids": [ + "5438" + ], + "geo_area_code": null + }, + { + "id": "4778", + "label": "Yugoslavia", + "alt_labels": [ + "territories of the former Yugoslavia" + ], + "related_ids": [], + "broader_ids": [ + "5437" + ], + "geo_area_code": "YUG" + }, + { + "id": "4779", + "label": "Democratic Republic of the Congo", + "alt_labels": [ + "Congo Kinshasa", + "Zaire" + ], + "related_ids": [], + "broader_ids": [ + "302", + "5083" + ], + "geo_area_code": "COD" + }, + { + "id": "478", + "label": "exclusive distribution agreement", + "alt_labels": [ + "exclusive dealership", + "exclusive sales rights" + ], + "related_ids": [ + "2998", + "474" + ], + "broader_ids": [ + "806" + ], + "geo_area_code": null + }, + { + "id": "4780", + "label": "Zambia", + "alt_labels": [ + "Northern Rhodesia", + "Republic of Zambia" + ], + "related_ids": [], + "broader_ids": [ + "357", + "5083" + ], + "geo_area_code": "ZMB" + }, + { + "id": "4781", + "label": "Zeeland", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2288" + ], + "geo_area_code": null + }, + { + "id": "4782", + "label": "Zimbabwe", + "alt_labels": [ + "Republic of Zimbabwe", + "Southern Rhodesia" + ], + "related_ids": [], + "broader_ids": [ + "357", + "5083" + ], + "geo_area_code": "ZWE" + }, + { + "id": "4783", + "label": "zinc", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1885" + ], + "geo_area_code": null + }, + { + "id": "4784", + "label": "cooperative bank", + "alt_labels": [ + "mutual savings bank" + ], + "related_ids": [], + "broader_ids": [ + "4738" + ], + "geo_area_code": null + }, + { + "id": "4785", + "label": "arid zone", + "alt_labels": [], + "related_ids": [ + "2536", + "3804", + "3988" + ], + "broader_ids": [ + "3146" + ], + "geo_area_code": null + }, + { + "id": "4786", + "label": "climatic zone", + "alt_labels": [], + "related_ids": [ + "6384", + "6385" + ], + "broader_ids": [ + "6011" + ], + "geo_area_code": null + }, + { + "id": "4787", + "label": "residential area", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4709" + ], + "geo_area_code": null + }, + { + "id": "4788", + "label": "catch area", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4790" + ], + "geo_area_code": null + }, + { + "id": "4789", + "label": "free-trade area", + "alt_labels": [], + "related_ids": [ + "1094", + "1463", + "1631", + "176", + "196", + "2275", + "5430", + "7185", + "7220" + ], + "broader_ids": [ + "2519" + ], + "geo_area_code": null + }, + { + "id": "479", + "label": "product diversification", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2481" + ], + "geo_area_code": null + }, + { + "id": "4790", + "label": "fishing area", + "alt_labels": [ + "fishing limits" + ], + "related_ids": [ + "1652", + "3992", + "4791", + "611" + ], + "broader_ids": [ + "2476" + ], + "geo_area_code": null + }, + { + "id": "4791", + "label": "exclusive economic zone", + "alt_labels": [ + "EEZ", + "exclusive national zone", + "two-hundred-mile zone" + ], + "related_ids": [ + "4790", + "940" + ], + "broader_ids": [ + "542" + ], + "geo_area_code": null + }, + { + "id": "4792", + "label": "equatorial zone", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4786" + ], + "geo_area_code": null + }, + { + "id": "4793", + "label": "free zone", + "alt_labels": [ + "free port" + ], + "related_ids": [ + "3625" + ], + "broader_ids": [ + "3156" + ], + "geo_area_code": null + }, + { + "id": "4794", + "label": "SALT Agreement", + "alt_labels": [ + "Strategic Arms Limitation Talks" + ], + "related_ids": [ + "2464" + ], + "broader_ids": [ + "3455" + ], + "geo_area_code": null + }, + { + "id": "4795", + "label": "investment bank", + "alt_labels": [ + "investment banking", + "merchant bank" + ], + "related_ids": [ + "1488", + "2463", + "4838" + ], + "broader_ids": [ + "4738" + ], + "geo_area_code": null + }, + { + "id": "4796", + "label": "frigid zone", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4786" + ], + "geo_area_code": null + }, + { + "id": "4797", + "label": "humid zone", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4786" + ], + "geo_area_code": null + }, + { + "id": "4798", + "label": "currency area", + "alt_labels": [ + "currency zone", + "dollar area", + "franc area", + "monetary area", + "sterling area" + ], + "related_ids": [ + "1809", + "2510" + ], + "broader_ids": [ + "3239" + ], + "geo_area_code": null + }, + { + "id": "4799", + "label": "pedestrian zone", + "alt_labels": [ + "pedestrian street" + ], + "related_ids": [ + "6854" + ], + "broader_ids": [ + "4809" + ], + "geo_area_code": null + }, + { + "id": "48", + "label": "48 TRANSPORT", + "alt_labels": [], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "480", + "label": "diversification of exports", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2487" + ], + "geo_area_code": null + }, + { + "id": "4800", + "label": "polluted area", + "alt_labels": [ + "polluted region" + ], + "related_ids": [ + "70" + ], + "broader_ids": [ + "371" + ], + "geo_area_code": null + }, + { + "id": "4801", + "label": "protected area", + "alt_labels": [ + "designated development area", + "designated development zone" + ], + "related_ids": [ + "1064", + "2842", + "3009", + "5958", + "6313", + "865" + ], + "broader_ids": [ + "2825" + ], + "geo_area_code": null + }, + { + "id": "4802", + "label": "disaster area", + "alt_labels": [ + "disaster region" + ], + "related_ids": [ + "4166", + "c_e548b67f" + ], + "broader_ids": [ + "371" + ], + "geo_area_code": null + }, + { + "id": "4803", + "label": "subtropical zone", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4786" + ], + "geo_area_code": null + }, + { + "id": "4804", + "label": "suburban area", + "alt_labels": [ + "peri-urban area", + "periurban area", + "suburb" + ], + "related_ids": [ + "4538" + ], + "broader_ids": [ + "4709" + ], + "geo_area_code": null + }, + { + "id": "4805", + "label": "tariff zone", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3101" + ], + "geo_area_code": null + }, + { + "id": "4806", + "label": "development bank", + "alt_labels": [ + "regional development bank" + ], + "related_ids": [ + "1008", + "2465", + "4744", + "4812", + "4872", + "5460", + "6336", + "6337", + "6338", + "922" + ], + "broader_ids": [ + "4738" + ], + "geo_area_code": null + }, + { + "id": "4807", + "label": "temperate zone", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4786" + ], + "geo_area_code": null + }, + { + "id": "4808", + "label": "tropical zone", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4786" + ], + "geo_area_code": null + }, + { + "id": "4809", + "label": "urban area", + "alt_labels": [ + "urban region", + "urbanised region" + ], + "related_ids": [ + "2559", + "3058", + "6035", + "6849" + ], + "broader_ids": [ + "4709" + ], + "geo_area_code": null + }, + { + "id": "481", + "label": "supervisor", + "alt_labels": [ + "charge hand", + "foreman", + "overseer" + ], + "related_ids": [], + "broader_ids": [ + "5275" + ], + "geo_area_code": null + }, + { + "id": "4810", + "label": "zoology", + "alt_labels": [ + "animal genetics", + "entomology" + ], + "related_ids": [ + "6322", + "865", + "972" + ], + "broader_ids": [ + "4921" + ], + "geo_area_code": null + }, + { + "id": "4811", + "label": "land bank", + "alt_labels": [ + "banque fonci\u00e8re" + ], + "related_ids": [ + "2983" + ], + "broader_ids": [ + "2814" + ], + "geo_area_code": null + }, + { + "id": "4812", + "label": "World Bank", + "alt_labels": [ + "World Bank Group" + ], + "related_ids": [ + "211", + "3219", + "3239", + "4371", + "4806" + ], + "broader_ids": [ + "1455" + ], + "geo_area_code": null + }, + { + "id": "4813", + "label": "people's bank", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4738" + ], + "geo_area_code": null + }, + { + "id": "4814", + "label": "private bank", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4738" + ], + "geo_area_code": null + }, + { + "id": "4815", + "label": "public bank", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4738" + ], + "geo_area_code": null + }, + { + "id": "4816", + "label": "Barbados", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2119", + "2362", + "4069", + "5083", + "5265", + "c_b2c019c8" + ], + "geo_area_code": "BRB" + }, + { + "id": "4817", + "label": "sectoral agreement", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3185" + ], + "geo_area_code": null + }, + { + "id": "4818", + "label": "price list", + "alt_labels": [ + "price scale", + "tariff" + ], + "related_ids": [], + "broader_ids": [ + "1025" + ], + "geo_area_code": null + }, + { + "id": "4819", + "label": "bar", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3800" + ], + "geo_area_code": null + }, + { + "id": "482", + "label": "international division of labour", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "11" + ], + "geo_area_code": null + }, + { + "id": "4820", + "label": "low pay", + "alt_labels": [], + "related_ids": [ + "959" + ], + "broader_ids": [ + "3843" + ], + "geo_area_code": null + }, + { + "id": "4821", + "label": "database", + "alt_labels": [ + "data bank" + ], + "related_ids": [ + "4359", + "4699", + "c_2c5a05a0" + ], + "broader_ids": [ + "4488" + ], + "geo_area_code": null + }, + { + "id": "4822", + "label": "military base", + "alt_labels": [ + "air base", + "foreign base", + "military base abroad", + "naval base" + ], + "related_ids": [ + "3441" + ], + "broader_ids": [ + "2464" + ], + "geo_area_code": null + }, + { + "id": "4823", + "label": "Basilicata", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1520" + ], + "geo_area_code": null + }, + { + "id": "4824", + "label": "Lower Normandy", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "c_8331ae25" + ], + "geo_area_code": null + }, + { + "id": "4825", + "label": "Lower Saxony", + "alt_labels": [ + "Lower Saxony (Land)" + ], + "related_ids": [], + "broader_ids": [ + "1329" + ], + "geo_area_code": null + }, + { + "id": "4827", + "label": "vessel", + "alt_labels": [ + "ship", + "tug boat" + ], + "related_ids": [ + "155", + "4829" + ], + "broader_ids": [ + "4522" + ], + "geo_area_code": null + }, + { + "id": "4828", + "label": "commodity agreement", + "alt_labels": [], + "related_ids": [ + "1801", + "2748", + "2771", + "2781", + "3461", + "4248", + "622" + ], + "broader_ids": [ + "3185" + ], + "geo_area_code": null + }, + { + "id": "4829", + "label": "fishing vessel", + "alt_labels": [ + "factory ship", + "fishing boat", + "transport vessel", + "trawler" + ], + "related_ids": [ + "155", + "4827" + ], + "broader_ids": [ + "1035" + ], + "geo_area_code": null + }, + { + "id": "483", + "label": "divorce", + "alt_labels": [], + "related_ids": [ + "2334" + ], + "broader_ids": [ + "540" + ], + "geo_area_code": null + }, + { + "id": "4830", + "label": "tanker", + "alt_labels": [ + "methane tanker", + "oil tanker" + ], + "related_ids": [ + "4507" + ], + "broader_ids": [ + "4827" + ], + "geo_area_code": null + }, + { + "id": "4831", + "label": "building", + "alt_labels": [ + "construction" + ], + "related_ids": [ + "152", + "4833", + "4834" + ], + "broader_ids": [ + "3879" + ], + "geo_area_code": null + }, + { + "id": "4832", + "label": "pleasure craft", + "alt_labels": [ + "pleasure boat" + ], + "related_ids": [ + "2040", + "8461" + ], + "broader_ids": [ + "4827" + ], + "geo_area_code": null + }, + { + "id": "4833", + "label": "industrial building", + "alt_labels": [ + "factory", + "industrial fittings" + ], + "related_ids": [ + "4831" + ], + "broader_ids": [ + "1434" + ], + "geo_area_code": null + }, + { + "id": "4834", + "label": "public building", + "alt_labels": [ + "administrative building" + ], + "related_ids": [ + "4831", + "77" + ], + "broader_ids": [ + "847" + ], + "geo_area_code": null + }, + { + "id": "4835", + "label": "Bavaria", + "alt_labels": [ + "Bavaria (Free State of)" + ], + "related_ids": [], + "broader_ids": [ + "1329" + ], + "geo_area_code": null + }, + { + "id": "4836", + "label": "tariff agreement", + "alt_labels": [], + "related_ids": [ + "2590", + "3461" + ], + "broader_ids": [ + "2519" + ], + "geo_area_code": null + }, + { + "id": "4837", + "label": "fine arts", + "alt_labels": [ + "decorative arts", + "graphic arts", + "plastic arts" + ], + "related_ids": [ + "1332" + ], + "broader_ids": [ + "2688" + ], + "geo_area_code": null + }, + { + "id": "4838", + "label": "European Investment Bank", + "alt_labels": [ + "EIB" + ], + "related_ids": [ + "2054", + "2607", + "4795" + ], + "broader_ids": [ + "2163" + ], + "geo_area_code": null + }, + { + "id": "4839", + "label": "Belgium", + "alt_labels": [ + "Kingdom of Belgium" + ], + "related_ids": [ + "4840" + ], + "broader_ids": [ + "122", + "2106", + "2200", + "4845", + "5283", + "913" + ], + "geo_area_code": "BEL" + }, + { + "id": "484", + "label": "Djibouti", + "alt_labels": [ + "Afars and Issas", + "Republic of Djibouti" + ], + "related_ids": [], + "broader_ids": [ + "1658", + "5083", + "5556", + "c_6e703074", + "c_b2c019c8" + ], + "geo_area_code": "DJI" + }, + { + "id": "4840", + "label": "regions and communities of Belgium", + "alt_labels": [], + "related_ids": [ + "4839" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "4841", + "label": "Belize", + "alt_labels": [ + "British Honduras" + ], + "related_ids": [], + "broader_ids": [ + "1606", + "2117", + "2119", + "4069", + "5083", + "5265", + "c_b2c019c8" + ], + "geo_area_code": "BLZ" + }, + { + "id": "4842", + "label": "profit", + "alt_labels": [], + "related_ids": [ + "1327", + "1331", + "2264", + "3605", + "3674" + ], + "broader_ids": [ + "3602" + ], + "geo_area_code": null + }, + { + "id": "4843", + "label": "aid recipient", + "alt_labels": [ + "recipient country" + ], + "related_ids": [], + "broader_ids": [ + "3003" + ], + "geo_area_code": null + }, + { + "id": "4844", + "label": "Benelux", + "alt_labels": [ + "Benelux Economic Union" + ], + "related_ids": [ + "4845" + ], + "broader_ids": [ + "2187" + ], + "geo_area_code": null + }, + { + "id": "4845", + "label": "Benelux countries", + "alt_labels": [], + "related_ids": [ + "4844" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "4846", + "label": "Benin", + "alt_labels": [ + "Dahomey", + "Republic of Benin" + ], + "related_ids": [], + "broader_ids": [ + "351", + "4607", + "5083", + "5302" + ], + "geo_area_code": "BEN" + }, + { + "id": "4847", + "label": "Berlin", + "alt_labels": [ + "Berlin (Land)" + ], + "related_ids": [], + "broader_ids": [ + "1329" + ], + "geo_area_code": null + }, + { + "id": "4848", + "label": "Bermuda", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1615", + "3778" + ], + "geo_area_code": "BMU" + }, + { + "id": "4849", + "label": "nutritional needs", + "alt_labels": [], + "related_ids": [ + "6781" + ], + "broader_ids": [ + "1268" + ], + "geo_area_code": null + }, + { + "id": "485", + "label": "legal doctrine", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4222" + ], + "geo_area_code": null + }, + { + "id": "4850", + "label": "housing need", + "alt_labels": [], + "related_ids": [ + "6781", + "7411" + ], + "broader_ids": [ + "2496" + ], + "geo_area_code": null + }, + { + "id": "4851", + "label": "manpower needs", + "alt_labels": [ + "labour supply", + "manpower demand", + "manpower requirements" + ], + "related_ids": [ + "3519" + ], + "broader_ids": [ + "1802" + ], + "geo_area_code": null + }, + { + "id": "4852", + "label": "population growth", + "alt_labels": [ + "demographic growth", + "population explosion", + "population increase" + ], + "related_ids": [], + "broader_ids": [ + "3318" + ], + "geo_area_code": null + }, + { + "id": "4853", + "label": "water requirements", + "alt_labels": [], + "related_ids": [ + "6781" + ], + "broader_ids": [ + "3144" + ], + "geo_area_code": null + }, + { + "id": "4854", + "label": "fodder", + "alt_labels": [ + "dry fodder", + "forage", + "green fodder", + "hay", + "silage", + "straw" + ], + "related_ids": [ + "2412", + "320", + "4338", + "4857", + "5363", + "721" + ], + "broader_ids": [ + "1224" + ], + "geo_area_code": null + }, + { + "id": "4855", + "label": "financial requirements", + "alt_labels": [ + "capital requirements" + ], + "related_ids": [], + "broader_ids": [ + "1164" + ], + "geo_area_code": null + }, + { + "id": "4856", + "label": "concrete", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1826" + ], + "geo_area_code": null + }, + { + "id": "4857", + "label": "fodder beet", + "alt_labels": [], + "related_ids": [ + "1224", + "1607", + "2412", + "320", + "4854" + ], + "broader_ids": [ + "2416" + ], + "geo_area_code": null + }, + { + "id": "4858", + "label": "sugar beet", + "alt_labels": [], + "related_ids": [ + "1607", + "4317" + ], + "broader_ids": [ + "2416" + ], + "geo_area_code": null + }, + { + "id": "4859", + "label": "BEUC", + "alt_labels": [ + "European Bureau of Consumers' Unions" + ], + "related_ids": [ + "138" + ], + "broader_ids": [ + "2187" + ], + "geo_area_code": null + }, + { + "id": "486", + "label": "document", + "alt_labels": [], + "related_ids": [ + "1079", + "1392", + "1784", + "2492", + "4330", + "4425", + "5042" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "4860", + "label": "butter", + "alt_labels": [], + "related_ids": [ + "1175", + "240" + ], + "broader_ids": [ + "2763" + ], + "geo_area_code": null + }, + { + "id": "4861", + "label": "vegetable butter", + "alt_labels": [], + "related_ids": [ + "5078" + ], + "broader_ids": [ + "241" + ], + "geo_area_code": null + }, + { + "id": "4862", + "label": "Bhutan", + "alt_labels": [ + "Kingdom of Bhutan" + ], + "related_ids": [], + "broader_ids": [ + "2848", + "8367", + "c_b2c019c8" + ], + "geo_area_code": "BTN" + }, + { + "id": "4863", + "label": "increase in production", + "alt_labels": [ + "growth of production", + "production development", + "production growth" + ], + "related_ids": [], + "broader_ids": [ + "2481" + ], + "geo_area_code": null + }, + { + "id": "4864", + "label": "bibliography", + "alt_labels": [ + "bibliographical study", + "national bibliography", + "secondary journal" + ], + "related_ids": [ + "4865" + ], + "broader_ids": [ + "4168" + ], + "geo_area_code": null + }, + { + "id": "4865", + "label": "library", + "alt_labels": [], + "related_ids": [ + "4864" + ], + "broader_ids": [ + "4366" + ], + "geo_area_code": null + }, + { + "id": "4866", + "label": "children's library", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4865" + ], + "geo_area_code": null + }, + { + "id": "4867", + "label": "national library", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4865" + ], + "geo_area_code": null + }, + { + "id": "4868", + "label": "public library", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4865" + ], + "geo_area_code": null + }, + { + "id": "4869", + "label": "scientific library", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4865" + ], + "geo_area_code": null + }, + { + "id": "487", + "label": "audiovisual document", + "alt_labels": [ + "audio-visual document" + ], + "related_ids": [ + "1363", + "1366" + ], + "broader_ids": [ + "486" + ], + "geo_area_code": null + }, + { + "id": "4870", + "label": "university library", + "alt_labels": [], + "related_ids": [ + "800" + ], + "broader_ids": [ + "4865" + ], + "geo_area_code": null + }, + { + "id": "4871", + "label": "bicameral system", + "alt_labels": [ + "double-chamber system" + ], + "related_ids": [], + "broader_ids": [ + "5379" + ], + "geo_area_code": null + }, + { + "id": "4872", + "label": "Inter-American Development Bank", + "alt_labels": [ + "IDB" + ], + "related_ids": [ + "4806" + ], + "broader_ids": [ + "2190" + ], + "geo_area_code": null + }, + { + "id": "4873", + "label": "acculturation", + "alt_labels": [ + "cultural integration" + ], + "related_ids": [ + "1462" + ], + "broader_ids": [ + "317" + ], + "geo_area_code": null + }, + { + "id": "4874", + "label": "slum", + "alt_labels": [ + "shanty town" + ], + "related_ids": [ + "6737" + ], + "broader_ids": [ + "1221" + ], + "geo_area_code": null + }, + { + "id": "4875", + "label": "International Bureau of Education", + "alt_labels": [ + "IBE" + ], + "related_ids": [], + "broader_ids": [ + "4595" + ], + "geo_area_code": null + }, + { + "id": "4876", + "label": "common land", + "alt_labels": [ + "communal land" + ], + "related_ids": [ + "27" + ], + "broader_ids": [ + "3009" + ], + "geo_area_code": null + }, + { + "id": "4877", + "label": "cultural object", + "alt_labels": [ + "cultural goods", + "cultural property", + "restitution of cultural objects", + "return of cultural objects" + ], + "related_ids": [], + "broader_ids": [ + "2278" + ], + "geo_area_code": null + }, + { + "id": "4878", + "label": "consumer goods", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3193" + ], + "geo_area_code": null + }, + { + "id": "4879", + "label": "durable goods", + "alt_labels": [ + "consumer durables", + "hard goods" + ], + "related_ids": [], + "broader_ids": [ + "3193" + ], + "geo_area_code": null + }, + { + "id": "488", + "label": "identity document", + "alt_labels": [ + "identity card" + ], + "related_ids": [ + "3055", + "7410" + ], + "broader_ids": [ + "566" + ], + "geo_area_code": null + }, + { + "id": "4880", + "label": "non-durable goods", + "alt_labels": [ + "disposable article", + "disposable goods", + "expendable goods", + "non-durables" + ], + "related_ids": [ + "1135" + ], + "broader_ids": [ + "3193" + ], + "geo_area_code": null + }, + { + "id": "4881", + "label": "social well-being", + "alt_labels": [ + "happiness" + ], + "related_ids": [ + "4050", + "887", + "c_1137acd8", + "c_749f2ce9" + ], + "broader_ids": [ + "86" + ], + "geo_area_code": null + }, + { + "id": "4882", + "label": "charge", + "alt_labels": [ + "accused", + "defendant" + ], + "related_ids": [], + "broader_ids": [ + "2704" + ], + "geo_area_code": null + }, + { + "id": "4883", + "label": "beer", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5018" + ], + "geo_area_code": null + }, + { + "id": "4884", + "label": "balance sheet", + "alt_labels": [], + "related_ids": [ + "1782" + ], + "broader_ids": [ + "55" + ], + "geo_area_code": null + }, + { + "id": "4885", + "label": "supply balance sheet", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2292" + ], + "geo_area_code": null + }, + { + "id": "4886", + "label": "energy market", + "alt_labels": [ + "energy sector", + "power sector" + ], + "related_ids": [ + "4256", + "6921", + "747", + "c_d8d35f08" + ], + "broader_ids": [ + "2498" + ], + "geo_area_code": null + }, + { + "id": "4887", + "label": "social audit", + "alt_labels": [ + "social accounts", + "social report" + ], + "related_ids": [ + "1273" + ], + "broader_ids": [ + "557" + ], + "geo_area_code": null + }, + { + "id": "4888", + "label": "bilingualism", + "alt_labels": [], + "related_ids": [ + "4097", + "783" + ], + "broader_ids": [ + "1670" + ], + "geo_area_code": null + }, + { + "id": "4889", + "label": "biochemistry", + "alt_labels": [], + "related_ids": [ + "1362", + "4890", + "4891", + "4921", + "c_ff4dd793" + ], + "broader_ids": [ + "5966" + ], + "geo_area_code": null + }, + { + "id": "489", + "label": "document for discussion at a sitting", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3984" + ], + "geo_area_code": null + }, + { + "id": "4890", + "label": "bioconversion", + "alt_labels": [], + "related_ids": [ + "4889", + "4891", + "4892" + ], + "broader_ids": [ + "3797" + ], + "geo_area_code": null + }, + { + "id": "4891", + "label": "biodegradability", + "alt_labels": [ + "biodegradation", + "biodeterioration" + ], + "related_ids": [ + "344", + "4889", + "4890", + "718", + "720" + ], + "broader_ids": [ + "2611" + ], + "geo_area_code": null + }, + { + "id": "4892", + "label": "bioenergy", + "alt_labels": [ + "biomass energy" + ], + "related_ids": [ + "4890", + "4930", + "6320", + "8412" + ], + "broader_ids": [ + "744" + ], + "geo_area_code": null + }, + { + "id": "49", + "label": "political behaviour", + "alt_labels": [ + "political practice" + ], + "related_ids": [], + "broader_ids": [ + "4704" + ], + "geo_area_code": null + }, + { + "id": "490", + "label": "built-up area", + "alt_labels": [], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "4900", + "label": "biogas", + "alt_labels": [ + "biomethane", + "green energy", + "manure gas" + ], + "related_ids": [ + "1141", + "344", + "8412" + ], + "broader_ids": [ + "744" + ], + "geo_area_code": null + }, + { + "id": "4905", + "label": "biography", + "alt_labels": [ + "autobiography" + ], + "related_ids": [], + "broader_ids": [ + "486" + ], + "geo_area_code": null + }, + { + "id": "491", + "label": "customs document", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3156" + ], + "geo_area_code": null + }, + { + "id": "492", + "label": "official document", + "alt_labels": [ + "official publication" + ], + "related_ids": [ + "4267" + ], + "broader_ids": [ + "486" + ], + "geo_area_code": null + }, + { + "id": "4921", + "label": "biology", + "alt_labels": [ + "bacteriology", + "embryology", + "microbiology" + ], + "related_ids": [ + "2080", + "3797", + "4889", + "5169", + "568", + "6385", + "7410" + ], + "broader_ids": [ + "3941" + ], + "geo_area_code": null + }, + { + "id": "493", + "label": "parliamentary document", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "492" + ], + "geo_area_code": null + }, + { + "id": "4930", + "label": "biomass", + "alt_labels": [], + "related_ids": [ + "344", + "3736", + "4892", + "664" + ], + "broader_ids": [ + "3797" + ], + "geo_area_code": null + }, + { + "id": "494", + "label": "documentation", + "alt_labels": [ + "librarianship", + "scientific documentation", + "technical documentation" + ], + "related_ids": [ + "3585", + "3925", + "5356", + "8395", + "987", + "991" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "4940", + "label": "biosphere", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "833" + ], + "geo_area_code": null + }, + { + "id": "4950", + "label": "two-party system", + "alt_labels": [], + "related_ids": [ + "1437", + "4959" + ], + "broader_ids": [ + "3025" + ], + "geo_area_code": null + }, + { + "id": "4959", + "label": "bipolarisation", + "alt_labels": [ + "bipolarization" + ], + "related_ids": [ + "4950" + ], + "broader_ids": [ + "4704" + ], + "geo_area_code": null + }, + { + "id": "496", + "label": "Dominica", + "alt_labels": [ + "Commonwealth of Dominica" + ], + "related_ids": [], + "broader_ids": [ + "2119", + "2362", + "5083", + "5265", + "c_b2c019c8" + ], + "geo_area_code": "DMA" + }, + { + "id": "4966", + "label": "Burma/Myanmar", + "alt_labels": [ + "Burma", + "Myanmar", + "Republic of the Union of Myanmar" + ], + "related_ids": [], + "broader_ids": [ + "1847", + "2858" + ], + "geo_area_code": null + }, + { + "id": "497", + "label": "damage", + "alt_labels": [ + "material damage" + ], + "related_ids": [ + "3477", + "5412" + ], + "broader_ids": [ + "3497" + ], + "geo_area_code": null + }, + { + "id": "498", + "label": "war damage", + "alt_labels": [], + "related_ids": [ + "4697" + ], + "broader_ids": [ + "99" + ], + "geo_area_code": null + }, + { + "id": "4983", + "label": "purchase", + "alt_labels": [], + "related_ids": [ + "1199", + "2642" + ], + "broader_ids": [ + "5268" + ], + "geo_area_code": null + }, + { + "id": "4984", + "label": "biscuit factory", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1360" + ], + "geo_area_code": null + }, + { + "id": "499", + "label": "damages", + "alt_labels": [], + "related_ids": [ + "4695", + "8443" + ], + "broader_ids": [ + "3497" + ], + "geo_area_code": null + }, + { + "id": "4990", + "label": "bismuth", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1885" + ], + "geo_area_code": null + }, + { + "id": "4994", + "label": "wheat", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5360" + ], + "geo_area_code": null + }, + { + "id": "5", + "label": "retail trade", + "alt_labels": [ + "retail dealer", + "retailer" + ], + "related_ids": [ + "2652", + "4666", + "5372", + "824" + ], + "broader_ids": [ + "474" + ], + "geo_area_code": null + }, + { + "id": "50", + "label": "electronic component", + "alt_labels": [ + "electronic tube", + "integrated circuit", + "microchip", + "microprocessor", + "semi-conductor", + "transistor" + ], + "related_ids": [ + "709" + ], + "broader_ids": [ + "1400" + ], + "geo_area_code": null + }, + { + "id": "500", + "label": "donation", + "alt_labels": [], + "related_ids": [ + "3331" + ], + "broader_ids": [ + "2460" + ], + "geo_area_code": null + }, + { + "id": "5000", + "label": "durum wheat", + "alt_labels": [], + "related_ids": [ + "4088" + ], + "broader_ids": [ + "4994" + ], + "geo_area_code": null + }, + { + "id": "501", + "label": "gift", + "alt_labels": [ + "legacy" + ], + "related_ids": [ + "1051" + ], + "broader_ids": [ + "4503" + ], + "geo_area_code": null + }, + { + "id": "5010", + "label": "common wheat", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4994" + ], + "geo_area_code": null + }, + { + "id": "5011", + "label": "price freeze", + "alt_labels": [], + "related_ids": [ + "3553" + ], + "broader_ids": [ + "188" + ], + "geo_area_code": null + }, + { + "id": "5012", + "label": "beef animal", + "alt_labels": [ + "bullock", + "steer" + ], + "related_ids": [], + "broader_ids": [ + "5034" + ], + "geo_area_code": null + }, + { + "id": "5013", + "label": "fuel wood", + "alt_labels": [], + "related_ids": [ + "5503", + "8412" + ], + "broader_ids": [ + "2754" + ], + "geo_area_code": null + }, + { + "id": "5014", + "label": "wood for construction", + "alt_labels": [ + "beam", + "log" + ], + "related_ids": [ + "1826" + ], + "broader_ids": [ + "2754" + ], + "geo_area_code": null + }, + { + "id": "5015", + "label": "credit purchase", + "alt_labels": [], + "related_ids": [ + "293", + "3229" + ], + "broader_ids": [ + "4983" + ], + "geo_area_code": null + }, + { + "id": "5016", + "label": "afforestation", + "alt_labels": [ + "reforestation" + ], + "related_ids": [ + "2396", + "2410", + "339" + ], + "broader_ids": [ + "1513" + ], + "geo_area_code": null + }, + { + "id": "5017", + "label": "beverage", + "alt_labels": [], + "related_ids": [ + "1378", + "1566", + "4454", + "5078", + "5088" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "5018", + "label": "alcoholic beverage", + "alt_labels": [ + "fermented beverage", + "spirituous beverage" + ], + "related_ids": [ + "1162", + "5245", + "c_1bedfedb" + ], + "broader_ids": [ + "5017" + ], + "geo_area_code": null + }, + { + "id": "5019", + "label": "non-alcoholic beverage", + "alt_labels": [ + "refreshing drink", + "refreshment" + ], + "related_ids": [], + "broader_ids": [ + "5017" + ], + "geo_area_code": null + }, + { + "id": "502", + "label": "customs", + "alt_labels": [ + "border post", + "customs zone", + "customs-house", + "frontier post" + ], + "related_ids": [ + "1114", + "5545" + ], + "broader_ids": [ + "3156" + ], + "geo_area_code": null + }, + { + "id": "5020", + "label": "Bolivia", + "alt_labels": [ + "Republic of Bolivia" + ], + "related_ids": [], + "broader_ids": [ + "1105", + "1191", + "1624", + "2119", + "4069" + ], + "geo_area_code": "BOL" + }, + { + "id": "5021", + "label": "treasury bill", + "alt_labels": [ + "T-Bill" + ], + "related_ids": [ + "1677", + "4569" + ], + "broader_ids": [ + "424" + ], + "geo_area_code": null + }, + { + "id": "5023", + "label": "interest rate subsidy", + "alt_labels": [ + "interest rebate", + "loan at subsidised rate of interest", + "preferential interest rate", + "reduced interest rate loan" + ], + "related_ids": [ + "1958", + "2805" + ], + "broader_ids": [ + "278" + ], + "geo_area_code": null + }, + { + "id": "5024", + "label": "knitted and crocheted goods", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1418" + ], + "geo_area_code": null + }, + { + "id": "5025", + "label": "intervention buying", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3065" + ], + "geo_area_code": null + }, + { + "id": "5026", + "label": "Borneo", + "alt_labels": [ + "Kalimantan" + ], + "related_ids": [], + "broader_ids": [ + "1355" + ], + "geo_area_code": null + }, + { + "id": "5028", + "label": "botany", + "alt_labels": [], + "related_ids": [ + "1030" + ], + "broader_ids": [ + "4921" + ], + "geo_area_code": null + }, + { + "id": "5029", + "label": "Botswana", + "alt_labels": [ + "Republic of Botswana" + ], + "related_ids": [], + "broader_ids": [ + "342", + "5083", + "c_b2c019c8" + ], + "geo_area_code": "BWA" + }, + { + "id": "5030", + "label": "Buddhism", + "alt_labels": [], + "related_ids": [ + "6730", + "7339" + ], + "broader_ids": [ + "3257" + ], + "geo_area_code": null + }, + { + "id": "5031", + "label": "bakery", + "alt_labels": [ + "industrial bakery" + ], + "related_ids": [ + "2221", + "2226" + ], + "broader_ids": [ + "1360" + ], + "geo_area_code": null + }, + { + "id": "5032", + "label": "Burgundy", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "c_f2f1fb47" + ], + "geo_area_code": null + }, + { + "id": "5033", + "label": "commodities exchange", + "alt_labels": [ + "produce exchange" + ], + "related_ids": [], + "broader_ids": [ + "1801" + ], + "geo_area_code": null + }, + { + "id": "5034", + "label": "cattle", + "alt_labels": [ + "bovine species", + "breed of cattle", + "buffalo", + "full-grown cattle", + "ruminant" + ], + "related_ids": [ + "1108", + "4682", + "4685" + ], + "broader_ids": [ + "5962" + ], + "geo_area_code": null + }, + { + "id": "5035", + "label": "acid", + "alt_labels": [], + "related_ids": [ + "6407" + ], + "broader_ids": [ + "3810" + ], + "geo_area_code": null + }, + { + "id": "5036", + "label": "Province of Flemish Brabant", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3061" + ], + "geo_area_code": null + }, + { + "id": "5037", + "label": "North Brabant", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2288" + ], + "geo_area_code": null + }, + { + "id": "5038", + "label": "Province of Walloon Brabant", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3084" + ], + "geo_area_code": null + }, + { + "id": "5039", + "label": "Bremen", + "alt_labels": [ + "Bremen (Free Hanseatic City of)" + ], + "related_ids": [], + "broader_ids": [ + "1329" + ], + "geo_area_code": null + }, + { + "id": "504", + "label": "double taxation", + "alt_labels": [], + "related_ids": [ + "1326", + "455" + ], + "broader_ids": [ + "2504" + ], + "geo_area_code": null + }, + { + "id": "5040", + "label": "Brazil", + "alt_labels": [ + "Federative Republic of Brazil" + ], + "related_ids": [], + "broader_ids": [ + "1105", + "1624", + "2119", + "4069", + "5778", + "c_964c9649" + ], + "geo_area_code": "BRA" + }, + { + "id": "5041", + "label": "Brittany", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1088" + ], + "geo_area_code": null + }, + { + "id": "5042", + "label": "patent", + "alt_labels": [ + "issue of a patent", + "patent for invention" + ], + "related_ids": [ + "1487", + "2123", + "486" + ], + "broader_ids": [ + "2816" + ], + "geo_area_code": null + }, + { + "id": "5043", + "label": "European patent", + "alt_labels": [ + "Community patent", + "European patent with unitary effect", + "unitary patent" + ], + "related_ids": [ + "c_90ad7755" + ], + "broader_ids": [ + "5042" + ], + "geo_area_code": null + }, + { + "id": "5044", + "label": "Bank for International Settlements", + "alt_labels": [ + "BIS" + ], + "related_ids": [ + "4437", + "4763" + ], + "broader_ids": [ + "2188" + ], + "geo_area_code": null + }, + { + "id": "5045", + "label": "inorganic acid", + "alt_labels": [ + "hydrochloric acid", + "nitric acid", + "phosphoric acid", + "sulphuric acid" + ], + "related_ids": [], + "broader_ids": [ + "2740" + ], + "geo_area_code": null + }, + { + "id": "5046", + "label": "bromine", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1229" + ], + "geo_area_code": null + }, + { + "id": "5047", + "label": "brucellosis", + "alt_labels": [], + "related_ids": [ + "6152" + ], + "broader_ids": [ + "1755" + ], + "geo_area_code": null + }, + { + "id": "5048", + "label": "noise", + "alt_labels": [ + "noise nuisance", + "sound emission" + ], + "related_ids": [ + "1515", + "195", + "2526", + "2824", + "3291" + ], + "broader_ids": [ + "2090" + ], + "geo_area_code": null + }, + { + "id": "5049", + "label": "Brunei", + "alt_labels": [ + "Brunei Darussalam", + "Negara Brunei Darussalam" + ], + "related_ids": [ + "c_7d7608fa" + ], + "broader_ids": [ + "1847", + "2858", + "6205", + "c_b2c019c8" + ], + "geo_area_code": "BRN" + }, + { + "id": "505", + "label": "dual nationality", + "alt_labels": [ + "multiple nationality" + ], + "related_ids": [], + "broader_ids": [ + "2034" + ], + "geo_area_code": null + }, + { + "id": "5050", + "label": "budget", + "alt_labels": [], + "related_ids": [ + "1012", + "3652", + "394", + "438855", + "5053", + "5175", + "929" + ], + "broader_ids": [ + "2448" + ], + "geo_area_code": null + }, + { + "id": "5052", + "label": "national budget", + "alt_labels": [ + "State budget" + ], + "related_ids": [ + "2406", + "2504" + ], + "broader_ids": [ + "1018" + ], + "geo_area_code": null + }, + { + "id": "5053", + "label": "defence budget", + "alt_labels": [ + "military budget" + ], + "related_ids": [ + "5050" + ], + "broader_ids": [ + "2464" + ], + "geo_area_code": null + }, + { + "id": "5054", + "label": "extraordinary budget", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1018" + ], + "geo_area_code": null + }, + { + "id": "5055", + "label": "organic acid", + "alt_labels": [ + "acetate", + "acetic acid", + "acrylic acid", + "alcohol acid", + "aromatic acid", + "citric acid", + "ester", + "fatty acid", + "formic acid", + "oxalic acid", + "phthalic acid", + "salicylic acid" + ], + "related_ids": [], + "broader_ids": [ + "3817" + ], + "geo_area_code": null + }, + { + "id": "5056", + "label": "household budget", + "alt_labels": [ + "family budget" + ], + "related_ids": [ + "143", + "396" + ], + "broader_ids": [ + "3659" + ], + "geo_area_code": null + }, + { + "id": "5057", + "label": "ECSC operating budget", + "alt_labels": [], + "related_ids": [ + "2592", + "5327" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "5058", + "label": "advertising budget", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2862" + ], + "geo_area_code": null + }, + { + "id": "5059", + "label": "amending budget", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2698" + ], + "geo_area_code": null + }, + { + "id": "506", + "label": "holding of two jobs", + "alt_labels": [ + "supplementary activity" + ], + "related_ids": [ + "3664", + "5564" + ], + "broader_ids": [ + "4299" + ], + "geo_area_code": null + }, + { + "id": "5060", + "label": "European social budget", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3346" + ], + "geo_area_code": null + }, + { + "id": "5061", + "label": "supplementary budget", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2698" + ], + "geo_area_code": null + }, + { + "id": "5062", + "label": "inclusion in the budget", + "alt_labels": [], + "related_ids": [ + "398" + ], + "broader_ids": [ + "2448" + ], + "geo_area_code": null + }, + { + "id": "5063", + "label": "Bulgaria", + "alt_labels": [ + "Republic of Bulgaria" + ], + "related_ids": [ + "8301" + ], + "broader_ids": [ + "122", + "2200", + "5087", + "5283", + "5781", + "914" + ], + "geo_area_code": "BGR" + }, + { + "id": "5064", + "label": "ballot paper", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4750" + ], + "geo_area_code": null + }, + { + "id": "5065", + "label": "steel", + "alt_labels": [ + "alloy steel", + "crude steel", + "fine steel", + "rolled steel", + "stainless steel", + "structural steel" + ], + "related_ids": [], + "broader_ids": [ + "3824" + ], + "geo_area_code": null + }, + { + "id": "5066", + "label": "information centre", + "alt_labels": [ + "information bureau" + ], + "related_ids": [ + "1422" + ], + "broader_ids": [ + "4366" + ], + "geo_area_code": null + }, + { + "id": "5067", + "label": "polling station", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4750" + ], + "geo_area_code": null + }, + { + "id": "5068", + "label": "bureau of parliament", + "alt_labels": [], + "related_ids": [ + "4174" + ], + "broader_ids": [ + "53" + ], + "geo_area_code": null + }, + { + "id": "5069", + "label": "political executive", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2180" + ], + "geo_area_code": null + }, + { + "id": "507", + "label": "rural settlement", + "alt_labels": [ + "village" + ], + "related_ids": [ + "2558", + "3079" + ], + "broader_ids": [ + "490" + ], + "geo_area_code": null + }, + { + "id": "5070", + "label": "administrative formalities", + "alt_labels": [ + "administrative burden", + "administrative cost", + "administrative simplification", + "bureaucracy", + "cost of administration", + "cost of administrative formalities", + "simplification of administrative formalities" + ], + "related_ids": [ + "1069", + "c_cef8ea9d" + ], + "broader_ids": [ + "5852" + ], + "geo_area_code": null + }, + { + "id": "5071", + "label": "office automation", + "alt_labels": [ + "office technology" + ], + "related_ids": [ + "1405", + "1720", + "3010", + "4486", + "5613" + ], + "broader_ids": [ + "3026" + ], + "geo_area_code": null + }, + { + "id": "5072", + "label": "Burundi", + "alt_labels": [ + "Republic of Burundi" + ], + "related_ids": [], + "broader_ids": [ + "357", + "5083", + "5107" + ], + "geo_area_code": "BDI" + }, + { + "id": "5073", + "label": "butter oil", + "alt_labels": [], + "related_ids": [ + "240" + ], + "broader_ids": [ + "2763" + ], + "geo_area_code": null + }, + { + "id": "5074", + "label": "shadow cabinet", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2155" + ], + "geo_area_code": null + }, + { + "id": "5075", + "label": "Abruzzi", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1520" + ], + "geo_area_code": null + }, + { + "id": "5076", + "label": "Azores", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2564" + ], + "geo_area_code": null + }, + { + "id": "5077", + "label": "maritime cabotage", + "alt_labels": [ + "coastal shipping", + "coastal trade" + ], + "related_ids": [ + "5209", + "5471" + ], + "broader_ids": [ + "4522" + ], + "geo_area_code": null + }, + { + "id": "5078", + "label": "cocoa", + "alt_labels": [], + "related_ids": [ + "2749", + "2760", + "4861", + "5017" + ], + "broader_ids": [ + "2418" + ], + "geo_area_code": null + }, + { + "id": "5079", + "label": "land register", + "alt_labels": [ + "cadastral register", + "cadastral survey of tax", + "register of land" + ], + "related_ids": [ + "1314", + "1317", + "2327", + "3124" + ], + "broader_ids": [ + "2813" + ], + "geo_area_code": null + }, + { + "id": "508", + "label": "provisional twelfth", + "alt_labels": [], + "related_ids": [ + "438855" + ], + "broader_ids": [ + "3182" + ], + "geo_area_code": null + }, + { + "id": "5080", + "label": "executive", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5275" + ], + "geo_area_code": null + }, + { + "id": "5081", + "label": "manager", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3582" + ], + "geo_area_code": null + }, + { + "id": "5083", + "label": "ACP countries", + "alt_labels": [], + "related_ids": [ + "1450", + "2851", + "4049", + "594", + "c_acf7832d" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "5084", + "label": "middle management", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5080" + ], + "geo_area_code": null + }, + { + "id": "5085", + "label": "senior management", + "alt_labels": [ + "top management" + ], + "related_ids": [], + "broader_ids": [ + "5080" + ], + "geo_area_code": null + }, + { + "id": "5086", + "label": "Comecon", + "alt_labels": [ + "CMEA", + "Council for Mutual Economic Assistance" + ], + "related_ids": [ + "5087" + ], + "broader_ids": [ + "2188" + ], + "geo_area_code": null + }, + { + "id": "5087", + "label": "Comecon countries", + "alt_labels": [ + "CMEA countries" + ], + "related_ids": [ + "2291", + "5086" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "5088", + "label": "coffee", + "alt_labels": [], + "related_ids": [ + "2760", + "5017" + ], + "broader_ids": [ + "2418" + ], + "geo_area_code": null + }, + { + "id": "5089", + "label": "savings bank", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4738" + ], + "geo_area_code": null + }, + { + "id": "509", + "label": "dredging", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4565" + ], + "geo_area_code": null + }, + { + "id": "5090", + "label": "mortgage bank", + "alt_labels": [ + "building society", + "mortgage credit institution", + "real estate credit institution", + "savings and loan association" + ], + "related_ids": [ + "298" + ], + "broader_ids": [ + "4738" + ], + "geo_area_code": null + }, + { + "id": "5091", + "label": "Calabria", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1520" + ], + "geo_area_code": null + }, + { + "id": "5092", + "label": "costing", + "alt_labels": [], + "related_ids": [ + "2660" + ], + "broader_ids": [ + "1155" + ], + "geo_area_code": null + }, + { + "id": "5093", + "label": "acquisition of property", + "alt_labels": [ + "access to property", + "right of accession" + ], + "related_ids": [ + "2814", + "775" + ], + "broader_ids": [ + "3929" + ], + "geo_area_code": null + }, + { + "id": "5094", + "label": "planning of the school year", + "alt_labels": [ + "allocation of school time" + ], + "related_ids": [], + "broader_ids": [ + "2175" + ], + "geo_area_code": null + }, + { + "id": "5095", + "label": "Cameroon", + "alt_labels": [ + "Republic of Cameroon" + ], + "related_ids": [], + "broader_ids": [ + "302", + "4587", + "5083" + ], + "geo_area_code": "CMR" + }, + { + "id": "5096", + "label": "marketing year", + "alt_labels": [ + "agricultural year" + ], + "related_ids": [ + "2639" + ], + "broader_ids": [ + "2477" + ], + "geo_area_code": null + }, + { + "id": "5097", + "label": "election campaign", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2186" + ], + "geo_area_code": null + }, + { + "id": "5098", + "label": "Campania", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1520" + ], + "geo_area_code": null + }, + { + "id": "5099", + "label": "camping", + "alt_labels": [ + "caravanning" + ], + "related_ids": [ + "5331" + ], + "broader_ids": [ + "4470" + ], + "geo_area_code": null + }, + { + "id": "51", + "label": "mineral compound", + "alt_labels": [], + "related_ids": [ + "1936", + "5966" + ], + "broader_ids": [ + "3810" + ], + "geo_area_code": null + }, + { + "id": "510", + "label": "drainage", + "alt_labels": [], + "related_ids": [ + "1534" + ], + "broader_ids": [ + "4565" + ], + "geo_area_code": null + }, + { + "id": "5100", + "label": "Canada", + "alt_labels": [ + "Newfoundland", + "Quebec" + ], + "related_ids": [ + "c_39046afb" + ], + "broader_ids": [ + "1615", + "2106", + "2119", + "2200", + "6205", + "7207" + ], + "geo_area_code": "CAN" + }, + { + "id": "5101", + "label": "Panama Canal", + "alt_labels": [ + "Panama Canal Zone" + ], + "related_ids": [ + "2224" + ], + "broader_ids": [ + "5211" + ], + "geo_area_code": null + }, + { + "id": "5102", + "label": "learning", + "alt_labels": [], + "related_ids": [ + "7810" + ], + "broader_ids": [ + "4554" + ], + "geo_area_code": null + }, + { + "id": "5103", + "label": "Suez Canal", + "alt_labels": [ + "Suez Canal Zone" + ], + "related_ids": [ + "690" + ], + "broader_ids": [ + "5211" + ], + "geo_area_code": null + }, + { + "id": "5104", + "label": "cancer", + "alt_labels": [ + "fight against cancer" + ], + "related_ids": [ + "4307", + "7135", + "c_efec98c3" + ], + "broader_ids": [ + "1754" + ], + "geo_area_code": null + }, + { + "id": "5105", + "label": "candidate", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2186" + ], + "geo_area_code": null + }, + { + "id": "5106", + "label": "sugar cane", + "alt_labels": [], + "related_ids": [ + "4319" + ], + "broader_ids": [ + "2413" + ], + "geo_area_code": null + }, + { + "id": "5107", + "label": "East African Community", + "alt_labels": [ + "EAC" + ], + "related_ids": [ + "8365" + ], + "broader_ids": [ + "2167" + ], + "geo_area_code": null + }, + { + "id": "5108", + "label": "Cape Verde", + "alt_labels": [ + "Republic of Cape Verde" + ], + "related_ids": [], + "broader_ids": [ + "351", + "5083", + "5302", + "c_b2c019c8" + ], + "geo_area_code": "CPV" + }, + { + "id": "5109", + "label": "document acquisition", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "494" + ], + "geo_area_code": null + }, + { + "id": "511", + "label": "Drenthe", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2288" + ], + "geo_area_code": null + }, + { + "id": "5110", + "label": "capacity to exercise rights", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5161" + ], + "geo_area_code": null + }, + { + "id": "5111", + "label": "carrying capacity", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5392" + ], + "geo_area_code": null + }, + { + "id": "5112", + "label": "capacity to contract", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5161" + ], + "geo_area_code": null + }, + { + "id": "5113", + "label": "capacity to have rights and obligations", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5161" + ], + "geo_area_code": null + }, + { + "id": "5114", + "label": "veto", + "alt_labels": [ + "power of veto", + "right of veto" + ], + "related_ids": [ + "527", + "565" + ], + "broader_ids": [ + "2573" + ], + "geo_area_code": null + }, + { + "id": "5115", + "label": "consultation procedure", + "alt_labels": [ + "simple consultation procedure" + ], + "related_ids": [ + "2243" + ], + "broader_ids": [ + "5606" + ], + "geo_area_code": null + }, + { + "id": "5116", + "label": "ministry", + "alt_labels": [ + "ministerial cabinet", + "ministerial department" + ], + "related_ids": [], + "broader_ids": [ + "38" + ], + "geo_area_code": null + }, + { + "id": "5117", + "label": "treasurer", + "alt_labels": [], + "related_ids": [ + "5135" + ], + "broader_ids": [ + "5068" + ], + "geo_area_code": null + }, + { + "id": "5118", + "label": "representative of local or regional authority", + "alt_labels": [ + "Lord Mayor", + "Mayor", + "councillor", + "local councillor", + "local elected representative" + ], + "related_ids": [ + "699" + ], + "broader_ids": [ + "77" + ], + "geo_area_code": null + }, + { + "id": "5119", + "label": "autonomous community", + "alt_labels": [], + "related_ids": [ + "4272" + ], + "broader_ids": [ + "6034" + ], + "geo_area_code": null + }, + { + "id": "512", + "label": "right to education", + "alt_labels": [], + "related_ids": [ + "1691", + "280" + ], + "broader_ids": [ + "3899" + ], + "geo_area_code": null + }, + { + "id": "5120", + "label": "regional government", + "alt_labels": [ + "provincial administration", + "regional body" + ], + "related_ids": [ + "2245", + "2515", + "3256", + "5607" + ], + "broader_ids": [ + "77" + ], + "geo_area_code": null + }, + { + "id": "5121", + "label": "colonialism", + "alt_labels": [ + "neo-colonialism" + ], + "related_ids": [], + "broader_ids": [ + "1346" + ], + "geo_area_code": null + }, + { + "id": "5122", + "label": "scientific exchange", + "alt_labels": [ + "exchange of research workers" + ], + "related_ids": [ + "2478", + "3200" + ], + "broader_ids": [ + "223" + ], + "geo_area_code": null + }, + { + "id": "5123", + "label": "production capacity", + "alt_labels": [ + "excess production capacity", + "production potential" + ], + "related_ids": [], + "broader_ids": [ + "2481" + ], + "geo_area_code": null + }, + { + "id": "5124", + "label": "military sanctions", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3474" + ], + "geo_area_code": null + }, + { + "id": "5125", + "label": "international voluntary worker", + "alt_labels": [ + "Peace Corps", + "VSO", + "Voluntary Service Overseas", + "international volunteer" + ], + "related_ids": [ + "3331", + "3594" + ], + "broader_ids": [ + "3074" + ], + "geo_area_code": null + }, + { + "id": "5126", + "label": "West Bank question", + "alt_labels": [ + "Israeli occupied Jordan" + ], + "related_ids": [ + "1518", + "5930" + ], + "broader_ids": [ + "3476" + ], + "geo_area_code": null + }, + { + "id": "5127", + "label": "EU law - national law", + "alt_labels": [ + "Community law - national law", + "European Union law - national law", + "national law - Community law", + "national law - European Union law" + ], + "related_ids": [ + "8430" + ], + "broader_ids": [ + "4017" + ], + "geo_area_code": null + }, + { + "id": "5128", + "label": "EP delegation", + "alt_labels": [ + "delegation of the European Parliament" + ], + "related_ids": [ + "3040" + ], + "broader_ids": [ + "2243" + ], + "geo_area_code": null + }, + { + "id": "5129", + "label": "ESC opinion", + "alt_labels": [ + "EESC opinion", + "opinion of the Economic and Social Committee", + "opinion of the European Economic and Social Committee" + ], + "related_ids": [ + "6054" + ], + "broader_ids": [ + "6284" + ], + "geo_area_code": null + }, + { + "id": "513", + "label": "right to information", + "alt_labels": [], + "related_ids": [ + "1621", + "453" + ], + "broader_ids": [ + "3899" + ], + "geo_area_code": null + }, + { + "id": "5130", + "label": "European civil service", + "alt_labels": [], + "related_ids": [ + "1311", + "5638", + "7928" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "5132", + "label": "ACP-EU Joint Assembly", + "alt_labels": [ + "ACP-EC Joint Assembly", + "ACP-EEC Consultative Assembly" + ], + "related_ids": [], + "broader_ids": [ + "1450" + ], + "geo_area_code": null + }, + { + "id": "5133", + "label": "President of the EP", + "alt_labels": [ + "President of the European Parliament" + ], + "related_ids": [ + "2598" + ], + "broader_ids": [ + "4174" + ], + "geo_area_code": null + }, + { + "id": "5134", + "label": "Vice-President of the EP", + "alt_labels": [ + "Vice-President of the European Parliament" + ], + "related_ids": [ + "4694" + ], + "broader_ids": [ + "4174" + ], + "geo_area_code": null + }, + { + "id": "5135", + "label": "Quaestor of the EP", + "alt_labels": [ + "Quaestor of the European Parliament" + ], + "related_ids": [ + "5117" + ], + "broader_ids": [ + "4174" + ], + "geo_area_code": null + }, + { + "id": "5136", + "label": "judgment of the Court (EU)", + "alt_labels": [ + "Court of Justice judgment", + "judgment of the CJEC", + "judgment of the Court of Justice (EU)", + "judgment of the EC Court", + "judgment of the EC Court of Justice" + ], + "related_ids": [], + "broader_ids": [ + "1551" + ], + "geo_area_code": null + }, + { + "id": "5137", + "label": "anti-European movement", + "alt_labels": [], + "related_ids": [ + "4057" + ], + "broader_ids": [ + "1464" + ], + "geo_area_code": null + }, + { + "id": "5138", + "label": "Structural Funds", + "alt_labels": [ + "reform of the structural funds" + ], + "related_ids": [ + "2516", + "2518", + "5472", + "5499", + "5576", + "5580", + "5847" + ], + "broader_ids": [ + "1052" + ], + "geo_area_code": null + }, + { + "id": "5139", + "label": "labour tribunal", + "alt_labels": [ + "industrial trade court", + "industrial tribunal" + ], + "related_ids": [ + "557", + "98" + ], + "broader_ids": [ + "1543" + ], + "geo_area_code": null + }, + { + "id": "514", + "label": "right to culture", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3899" + ], + "geo_area_code": null + }, + { + "id": "5140", + "label": "storage capacity", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4291" + ], + "geo_area_code": null + }, + { + "id": "5141", + "label": "lawyer", + "alt_labels": [ + "attorney", + "barrister" + ], + "related_ids": [], + "broader_ids": [ + "2351" + ], + "geo_area_code": null + }, + { + "id": "5142", + "label": "repentance", + "alt_labels": [ + "incentive to repent" + ], + "related_ids": [ + "3348", + "3960" + ], + "broader_ids": [ + "3513" + ], + "geo_area_code": null + }, + { + "id": "5143", + "label": "contiguous zone", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "542" + ], + "geo_area_code": null + }, + { + "id": "5144", + "label": "surveillance", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2704" + ], + "geo_area_code": null + }, + { + "id": "5145", + "label": "appeals by private individuals", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5836" + ], + "geo_area_code": null + }, + { + "id": "5146", + "label": "economic situation", + "alt_labels": [], + "related_ids": [ + "c_b0536152" + ], + "broader_ids": [ + "84" + ], + "geo_area_code": null + }, + { + "id": "5147", + "label": "factor of production", + "alt_labels": [], + "related_ids": [ + "3195" + ], + "broader_ids": [ + "2481" + ], + "geo_area_code": null + }, + { + "id": "5148", + "label": "growth point", + "alt_labels": [], + "related_ids": [ + "2407", + "3625", + "429", + "431" + ], + "broader_ids": [ + "427" + ], + "geo_area_code": null + }, + { + "id": "5149", + "label": "integrated development programme", + "alt_labels": [ + "integrated action area", + "integrated development operation" + ], + "related_ids": [ + "1074", + "1384", + "1957", + "430" + ], + "broader_ids": [ + "2516" + ], + "geo_area_code": null + }, + { + "id": "515", + "label": "urban centre", + "alt_labels": [ + "city centre" + ], + "related_ids": [ + "4541", + "662" + ], + "broader_ids": [ + "490" + ], + "geo_area_code": null + }, + { + "id": "5150", + "label": "Integrated Mediterranean Programmes", + "alt_labels": [ + "IMP" + ], + "related_ids": [ + "2320", + "2476", + "2518", + "3073" + ], + "broader_ids": [ + "5149" + ], + "geo_area_code": null + }, + { + "id": "5151", + "label": "North-South trade", + "alt_labels": [], + "related_ids": [ + "435" + ], + "broader_ids": [ + "11" + ], + "geo_area_code": null + }, + { + "id": "5152", + "label": "transport capacity", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2181" + ], + "geo_area_code": null + }, + { + "id": "5153", + "label": "speculative capital", + "alt_labels": [ + "hot money", + "speculation", + "speculative capital market", + "speculative flow" + ], + "related_ids": [ + "c_9ffe3bdc", + "c_dcc650ef" + ], + "broader_ids": [ + "2002" + ], + "geo_area_code": null + }, + { + "id": "5154", + "label": "public financing", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1000" + ], + "geo_area_code": null + }, + { + "id": "5155", + "label": "harmonisation of prices", + "alt_labels": [ + "harmonization of prices" + ], + "related_ids": [], + "broader_ids": [ + "2489" + ], + "geo_area_code": null + }, + { + "id": "5156", + "label": "capital market", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1630" + ], + "geo_area_code": null + }, + { + "id": "5157", + "label": "venture capital", + "alt_labels": [ + "business angel", + "risk capital", + "venture capital fund" + ], + "related_ids": [ + "6755", + "c_14d71455" + ], + "broader_ids": [ + "2002" + ], + "geo_area_code": null + }, + { + "id": "5158", + "label": "general budget (EU)", + "alt_labels": [ + "EC general budget" + ], + "related_ids": [], + "broader_ids": [ + "438855" + ], + "geo_area_code": null + }, + { + "id": "5159", + "label": "motherhood", + "alt_labels": [ + "maternity confinement", + "pregnancy", + "pregnant woman" + ], + "related_ids": [ + "103", + "1399", + "2843", + "3284", + "3597", + "7135" + ], + "broader_ids": [ + "965" + ], + "geo_area_code": null + }, + { + "id": "516", + "label": "right to justice", + "alt_labels": [ + "arbitrary detention", + "habeas corpus", + "legal protection", + "protection of those charged with crimes", + "right to trial" + ], + "related_ids": [ + "3973", + "5400" + ], + "broader_ids": [ + "3899" + ], + "geo_area_code": null + }, + { + "id": "5160", + "label": "cultural prize", + "alt_labels": [ + "European prize", + "cultural competition", + "literary prize", + "literature prize", + "prize for literature" + ], + "related_ids": [ + "1680", + "2459" + ], + "broader_ids": [ + "4706" + ], + "geo_area_code": null + }, + { + "id": "5161", + "label": "legal capacity", + "alt_labels": [ + "legal incapacity" + ], + "related_ids": [ + "576", + "813" + ], + "broader_ids": [ + "4274" + ], + "geo_area_code": null + }, + { + "id": "5162", + "label": "Anglicanism", + "alt_labels": [], + "related_ids": [ + "6731" + ], + "broader_ids": [ + "5987" + ], + "geo_area_code": null + }, + { + "id": "5163", + "label": "Catholicism", + "alt_labels": [], + "related_ids": [ + "6731" + ], + "broader_ids": [ + "5987" + ], + "geo_area_code": null + }, + { + "id": "5164", + "label": "Orthodoxy", + "alt_labels": [], + "related_ids": [ + "6731" + ], + "broader_ids": [ + "5987" + ], + "geo_area_code": null + }, + { + "id": "5165", + "label": "Protestantism", + "alt_labels": [ + "Calvinism", + "Lutheranism", + "Methodism" + ], + "related_ids": [ + "6732" + ], + "broader_ids": [ + "5987" + ], + "geo_area_code": null + }, + { + "id": "5166", + "label": "leisure park", + "alt_labels": [ + "playground", + "recreation park", + "theme park" + ], + "related_ids": [], + "broader_ids": [ + "1700" + ], + "geo_area_code": null + }, + { + "id": "5167", + "label": "catering profession", + "alt_labels": [ + "caterer", + "chef" + ], + "related_ids": [], + "broader_ids": [ + "1373" + ], + "geo_area_code": null + }, + { + "id": "5168", + "label": "Mafia", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5560" + ], + "geo_area_code": null + }, + { + "id": "5169", + "label": "bio-ethics", + "alt_labels": [ + "medical ethics" + ], + "related_ids": [ + "1989", + "3307", + "3566", + "4111", + "435098", + "4921", + "5292", + "5608", + "6277", + "6744", + "7955" + ], + "broader_ids": [ + "4706" + ], + "geo_area_code": null + }, + { + "id": "517", + "label": "administrative law", + "alt_labels": [], + "related_ids": [ + "1539", + "3923", + "578", + "6610" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "5170", + "label": "secret society", + "alt_labels": [ + "freemason", + "freemasonry", + "masonic lodge" + ], + "related_ids": [], + "broader_ids": [ + "4706" + ], + "geo_area_code": null + }, + { + "id": "5171", + "label": "regional culture", + "alt_labels": [ + "dialect", + "folklore", + "regional heritage" + ], + "related_ids": [ + "7941" + ], + "broader_ids": [ + "317" + ], + "geo_area_code": null + }, + { + "id": "5172", + "label": "AIDS", + "alt_labels": [ + "acquired immune deficiency syndrome", + "seropositivity" + ], + "related_ids": [ + "1304", + "5293", + "8393" + ], + "broader_ids": [ + "c_ece0a719" + ], + "geo_area_code": null + }, + { + "id": "5173", + "label": "price of land", + "alt_labels": [], + "related_ids": [ + "2655" + ], + "broader_ids": [ + "4619" + ], + "geo_area_code": null + }, + { + "id": "5174", + "label": "open university", + "alt_labels": [ + "people's university", + "summer university" + ], + "related_ids": [ + "2313" + ], + "broader_ids": [ + "4151" + ], + "geo_area_code": null + }, + { + "id": "5175", + "label": "education budget", + "alt_labels": [], + "related_ids": [ + "5050" + ], + "broader_ids": [ + "2467" + ], + "geo_area_code": null + }, + { + "id": "5176", + "label": "educational exchange", + "alt_labels": [ + "pupil exchange visits", + "student exchange visits", + "teacher exchange visits" + ], + "related_ids": [], + "broader_ids": [ + "2467" + ], + "geo_area_code": null + }, + { + "id": "5177", + "label": "Eurydice", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2467" + ], + "geo_area_code": null + }, + { + "id": "5178", + "label": "recognition of studies", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2467" + ], + "geo_area_code": null + }, + { + "id": "5179", + "label": "press undertaking", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2599" + ], + "geo_area_code": null + }, + { + "id": "518", + "label": "air law", + "alt_labels": [], + "related_ids": [ + "4505", + "555" + ], + "broader_ids": [ + "567" + ], + "geo_area_code": null + }, + { + "id": "5180", + "label": "Teletex", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4424" + ], + "geo_area_code": null + }, + { + "id": "5181", + "label": "data protection", + "alt_labels": [ + "data security" + ], + "related_ids": [ + "3027", + "529", + "5595", + "6370", + "7927", + "7938", + "c_04ae3ba8" + ], + "broader_ids": [ + "2472" + ], + "geo_area_code": null + }, + { + "id": "5182", + "label": "interactive network", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4502" + ], + "geo_area_code": null + }, + { + "id": "5183", + "label": "film production", + "alt_labels": [ + "cinema film", + "cinematographic production" + ], + "related_ids": [ + "283", + "6558" + ], + "broader_ids": [ + "1363" + ], + "geo_area_code": null + }, + { + "id": "5184", + "label": "programmes industry", + "alt_labels": [ + "Audiovisual programmes industry" + ], + "related_ids": [ + "2883" + ], + "broader_ids": [ + "1370" + ], + "geo_area_code": null + }, + { + "id": "5185", + "label": "audiovisual co-production", + "alt_labels": [ + "audio-visual co-production", + "television co-production" + ], + "related_ids": [], + "broader_ids": [ + "5187" + ], + "geo_area_code": null + }, + { + "id": "5186", + "label": "audiovisual programme", + "alt_labels": [ + "audio-visual programme" + ], + "related_ids": [ + "5194" + ], + "broader_ids": [ + "5184" + ], + "geo_area_code": null + }, + { + "id": "5187", + "label": "audiovisual production", + "alt_labels": [ + "audio-visual production" + ], + "related_ids": [ + "283", + "6558" + ], + "broader_ids": [ + "5184" + ], + "geo_area_code": null + }, + { + "id": "5188", + "label": "information technology", + "alt_labels": [ + "ICT", + "Information and communication technologies", + "communications technology" + ], + "related_ids": [ + "1376", + "3636", + "5333", + "7219", + "c_4e75f061", + "c_8a658bb0" + ], + "broader_ids": [ + "1370" + ], + "geo_area_code": null + }, + { + "id": "5189", + "label": "high-definition television", + "alt_labels": [ + "HDTV", + "digital television" + ], + "related_ids": [], + "broader_ids": [ + "4432" + ], + "geo_area_code": null + }, + { + "id": "519", + "label": "anti-dumping duty", + "alt_labels": [ + "final anti-dumping duty", + "temporary anti-dumping duty" + ], + "related_ids": [ + "4078" + ], + "broader_ids": [ + "1591" + ], + "geo_area_code": null + }, + { + "id": "5190", + "label": "video communications", + "alt_labels": [ + "video broadcasting", + "video telephone", + "videoconference", + "videophone" + ], + "related_ids": [], + "broader_ids": [ + "4424" + ], + "geo_area_code": null + }, + { + "id": "5191", + "label": "audiovisual communications policy", + "alt_labels": [ + "audio-visual communications", + "audio-visual communications policy", + "audiovisual communications" + ], + "related_ids": [], + "broader_ids": [ + "2473" + ], + "geo_area_code": null + }, + { + "id": "5192", + "label": "audiovisual piracy", + "alt_labels": [ + "audio-visual piracy" + ], + "related_ids": [ + "2023", + "3033", + "529" + ], + "broader_ids": [ + "5191" + ], + "geo_area_code": null + }, + { + "id": "5193", + "label": "European audiovisual area", + "alt_labels": [ + "European audio-visual area" + ], + "related_ids": [], + "broader_ids": [ + "5191" + ], + "geo_area_code": null + }, + { + "id": "5194", + "label": "free movement of programmes", + "alt_labels": [ + "free rebroadcasting of programmes", + "free reception of broadcasts" + ], + "related_ids": [ + "5186" + ], + "broader_ids": [ + "5191" + ], + "geo_area_code": null + }, + { + "id": "5195", + "label": "telephone charges", + "alt_labels": [ + "call rates", + "communications tariff", + "communications tariff system", + "cost of calls", + "cost of phone calls", + "cost of telephone calls", + "phone call rates", + "price of calls", + "price of phone calls", + "price of telephone calls", + "telephone call rates", + "transmissions tariff" + ], + "related_ids": [ + "c_ccac12ef" + ], + "broader_ids": [ + "4424" + ], + "geo_area_code": null + }, + { + "id": "5196", + "label": "law relating to information", + "alt_labels": [ + "press law" + ], + "related_ids": [ + "1622", + "529", + "5348", + "5793" + ], + "broader_ids": [ + "2472" + ], + "geo_area_code": null + }, + { + "id": "5197", + "label": "legal data processing", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3026" + ], + "geo_area_code": null + }, + { + "id": "5198", + "label": "downloading", + "alt_labels": [ + "file transfer" + ], + "related_ids": [], + "broader_ids": [ + "6030" + ], + "geo_area_code": null + }, + { + "id": "5199", + "label": "programming language", + "alt_labels": [ + "computer language", + "machine language" + ], + "related_ids": [], + "broader_ids": [ + "1696" + ], + "geo_area_code": null + }, + { + "id": "52", + "label": "52 ENVIRONMENT", + "alt_labels": [], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "520", + "label": "right to work", + "alt_labels": [ + "freedom to choose an occupation" + ], + "related_ids": [ + "1473" + ], + "broader_ids": [ + "3901" + ], + "geo_area_code": null + }, + { + "id": "5200", + "label": "machine translation", + "alt_labels": [ + "computerised translation system" + ], + "related_ids": [], + "broader_ids": [ + "4486" + ], + "geo_area_code": null + }, + { + "id": "5201", + "label": "self-sufficiency in energy", + "alt_labels": [ + "dependence on energy" + ], + "related_ids": [], + "broader_ids": [ + "2498" + ], + "geo_area_code": null + }, + { + "id": "5202", + "label": "industrial capital", + "alt_labels": [], + "related_ids": [ + "1493" + ], + "broader_ids": [ + "55" + ], + "geo_area_code": null + }, + { + "id": "5203", + "label": "cooperation procedure", + "alt_labels": [], + "related_ids": [ + "4034" + ], + "broader_ids": [ + "5606" + ], + "geo_area_code": null + }, + { + "id": "5204", + "label": "transfer of competence", + "alt_labels": [], + "related_ids": [ + "35", + "41", + "5855" + ], + "broader_ids": [ + "36" + ], + "geo_area_code": null + }, + { + "id": "5205", + "label": "business start-up", + "alt_labels": [ + "formation of a business" + ], + "related_ids": [ + "1356", + "284", + "6347", + "6902" + ], + "broader_ids": [ + "2469" + ], + "geo_area_code": null + }, + { + "id": "5206", + "label": "services company", + "alt_labels": [], + "related_ids": [ + "1384", + "2602", + "4021", + "4099" + ], + "broader_ids": [ + "5985" + ], + "geo_area_code": null + }, + { + "id": "5207", + "label": "temporary employment agency", + "alt_labels": [ + "temporary employment office" + ], + "related_ids": [ + "3527" + ], + "broader_ids": [ + "1802" + ], + "geo_area_code": null + }, + { + "id": "5208", + "label": "video display unit work", + "alt_labels": [ + "VDU work", + "display screen work", + "work on screen" + ], + "related_ids": [ + "2375", + "4487", + "5601" + ], + "broader_ids": [ + "2184" + ], + "geo_area_code": null + }, + { + "id": "5209", + "label": "road cabotage", + "alt_labels": [], + "related_ids": [ + "5077", + "5471" + ], + "broader_ids": [ + "4533" + ], + "geo_area_code": null + }, + { + "id": "521", + "label": "law of banking", + "alt_labels": [ + "banking legislation" + ], + "related_ids": [ + "178", + "182", + "4010", + "4738", + "524", + "560" + ], + "broader_ids": [ + "2149" + ], + "geo_area_code": null + }, + { + "id": "5210", + "label": "waterway transport", + "alt_labels": [ + "bargeman", + "boatman" + ], + "related_ids": [], + "broader_ids": [ + "4515" + ], + "geo_area_code": null + }, + { + "id": "5211", + "label": "ship canal", + "alt_labels": [], + "related_ids": [ + "4735" + ], + "broader_ids": [ + "4522" + ], + "geo_area_code": null + }, + { + "id": "5212", + "label": "cross-channel connection", + "alt_labels": [ + "Eurotunnel", + "channel tunnel" + ], + "related_ids": [ + "1776" + ], + "broader_ids": [ + "2494" + ], + "geo_area_code": null + }, + { + "id": "5213", + "label": "national tariff", + "alt_labels": [], + "related_ids": [ + "4518" + ], + "broader_ids": [ + "4379" + ], + "geo_area_code": null + }, + { + "id": "5214", + "label": "international tariff", + "alt_labels": [], + "related_ids": [ + "4519" + ], + "broader_ids": [ + "4379" + ], + "geo_area_code": null + }, + { + "id": "5215", + "label": "road transport tariff", + "alt_labels": [], + "related_ids": [ + "4533" + ], + "broader_ids": [ + "4379" + ], + "geo_area_code": null + }, + { + "id": "5216", + "label": "space navigation", + "alt_labels": [ + "manned space flight", + "space flight" + ], + "related_ids": [ + "6383" + ], + "broader_ids": [ + "3092" + ], + "geo_area_code": null + }, + { + "id": "5217", + "label": "administrative measure", + "alt_labels": [ + "administrative act" + ], + "related_ids": [ + "2939", + "2940" + ], + "broader_ids": [ + "517" + ], + "geo_area_code": null + }, + { + "id": "5218", + "label": "share capital", + "alt_labels": [ + "authorised capital", + "paid-up capital", + "registered capital" + ], + "related_ids": [ + "2264", + "4189", + "4196", + "828" + ], + "broader_ids": [ + "150" + ], + "geo_area_code": null + }, + { + "id": "5219", + "label": "forest conservation", + "alt_labels": [ + "forest protection", + "protection of forests" + ], + "related_ids": [ + "1706", + "2825", + "2827" + ], + "broader_ids": [ + "2505" + ], + "geo_area_code": null + }, + { + "id": "522", + "label": "law on negotiable instruments", + "alt_labels": [], + "related_ids": [ + "2486", + "4463" + ], + "broader_ids": [ + "524" + ], + "geo_area_code": null + }, + { + "id": "5220", + "label": "Tyrrhenian Sea", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1879" + ], + "geo_area_code": null + }, + { + "id": "5221", + "label": "Adriatic Sea", + "alt_labels": [], + "related_ids": [ + "c_a6b5bad0" + ], + "broader_ids": [ + "1879" + ], + "geo_area_code": null + }, + { + "id": "5222", + "label": "Ligurian Sea", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1879" + ], + "geo_area_code": null + }, + { + "id": "5223", + "label": "Aegean Sea", + "alt_labels": [], + "related_ids": [ + "4171" + ], + "broader_ids": [ + "1879" + ], + "geo_area_code": null + }, + { + "id": "5224", + "label": "Ionian Sea", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1879" + ], + "geo_area_code": null + }, + { + "id": "5225", + "label": "fight against insects", + "alt_labels": [], + "related_ids": [ + "1758", + "1762", + "3155", + "420", + "5676", + "5951", + "c_3212cc75" + ], + "broader_ids": [ + "2825" + ], + "geo_area_code": null + }, + { + "id": "5226", + "label": "land restructuring", + "alt_labels": [], + "related_ids": [ + "3265", + "5433" + ], + "broader_ids": [ + "2814" + ], + "geo_area_code": null + }, + { + "id": "5227", + "label": "insecticide", + "alt_labels": [], + "related_ids": [ + "5676" + ], + "broader_ids": [ + "2985" + ], + "geo_area_code": null + }, + { + "id": "5228", + "label": "fishing regulations", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2476" + ], + "geo_area_code": null + }, + { + "id": "5229", + "label": "fishing controls", + "alt_labels": [ + "inspector of fisheries" + ], + "related_ids": [], + "broader_ids": [ + "5228" + ], + "geo_area_code": null + }, + { + "id": "523", + "label": "civil law", + "alt_labels": [ + "ordinary law", + "statutory law" + ], + "related_ids": [ + "1540", + "2699", + "435469", + "5496", + "576" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "5230", + "label": "capital city", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4709" + ], + "geo_area_code": null + }, + { + "id": "5231", + "label": "perennial vegetable", + "alt_labels": [ + "artichoke", + "asparagus" + ], + "related_ids": [ + "2625" + ], + "broader_ids": [ + "1602" + ], + "geo_area_code": null + }, + { + "id": "5232", + "label": "fresh product", + "alt_labels": [ + "fresh food" + ], + "related_ids": [ + "1112", + "1119", + "1608", + "2438", + "4689" + ], + "broader_ids": [ + "2735" + ], + "geo_area_code": null + }, + { + "id": "5233", + "label": "quality standard", + "alt_labels": [], + "related_ids": [ + "1562", + "2871", + "5754", + "6100", + "c_4cd2a8f4" + ], + "broader_ids": [ + "2077" + ], + "geo_area_code": null + }, + { + "id": "5234", + "label": "safety standard", + "alt_labels": [], + "related_ids": [ + "4036", + "8435" + ], + "broader_ids": [ + "2077" + ], + "geo_area_code": null + }, + { + "id": "5235", + "label": "technical standard", + "alt_labels": [], + "related_ids": [ + "6094", + "6095" + ], + "broader_ids": [ + "2077" + ], + "geo_area_code": null + }, + { + "id": "5236", + "label": "COST", + "alt_labels": [ + "European Cooperation in the field of Scientific and Technical Research" + ], + "related_ids": [ + "223", + "2924" + ], + "broader_ids": [ + "2478" + ], + "geo_area_code": null + }, + { + "id": "5237", + "label": "research and development", + "alt_labels": [], + "related_ids": [ + "2914", + "2916", + "3669" + ], + "broader_ids": [ + "2478" + ], + "geo_area_code": null + }, + { + "id": "5238", + "label": "space research", + "alt_labels": [ + "space medicine" + ], + "related_ids": [ + "2829", + "2914", + "6382" + ], + "broader_ids": [ + "4185" + ], + "geo_area_code": null + }, + { + "id": "5239", + "label": "space technology", + "alt_labels": [ + "launching of space vehicles", + "space propulsion", + "space technique" + ], + "related_ids": [], + "broader_ids": [ + "3092" + ], + "geo_area_code": null + }, + { + "id": "524", + "label": "commercial law", + "alt_labels": [ + "commercial legislation" + ], + "related_ids": [ + "1055", + "164", + "167", + "1672", + "3665", + "3983", + "435469", + "521", + "5268", + "532", + "539", + "549", + "550", + "554", + "5598", + "576", + "6923", + "8425", + "960", + "c_e5dbcb63" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "5240", + "label": "foreign capital", + "alt_labels": [], + "related_ids": [ + "1492", + "819" + ], + "broader_ids": [ + "2002" + ], + "geo_area_code": null + }, + { + "id": "5241", + "label": "synthetic rubber", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1387" + ], + "geo_area_code": null + }, + { + "id": "5242", + "label": "natural rubber", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1387" + ], + "geo_area_code": null + }, + { + "id": "5243", + "label": "railway industry", + "alt_labels": [], + "related_ids": [ + "4514" + ], + "broader_ids": [ + "1410" + ], + "geo_area_code": null + }, + { + "id": "5244", + "label": "charcoal", + "alt_labels": [], + "related_ids": [ + "5261", + "5386" + ], + "broader_ids": [ + "2754" + ], + "geo_area_code": null + }, + { + "id": "5245", + "label": "luxury products industry", + "alt_labels": [ + "luxury product" + ], + "related_ids": [ + "1361", + "1397", + "3887", + "5018", + "6915" + ], + "broader_ids": [ + "3895" + ], + "geo_area_code": null + }, + { + "id": "5246", + "label": "Autonomous Province of Bolzano", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4568" + ], + "geo_area_code": null + }, + { + "id": "5247", + "label": "Autonomous Province of Trento", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4568" + ], + "geo_area_code": null + }, + { + "id": "5248", + "label": "CEPT", + "alt_labels": [ + "European Conference of Postal and Telecommunications Administrations" + ], + "related_ids": [ + "4591", + "4616" + ], + "broader_ids": [ + "2187" + ], + "geo_area_code": null + }, + { + "id": "5249", + "label": "International Narcotics Control Board", + "alt_labels": [ + "INCB" + ], + "related_ids": [ + "4306" + ], + "broader_ids": [ + "1455" + ], + "geo_area_code": null + }, + { + "id": "525", + "label": "EU law", + "alt_labels": [ + "Community law", + "Community regulations", + "European Union law", + "European law" + ], + "related_ids": [ + "255", + "437483", + "6257", + "c_59f9c651", + "c_cef8ea9d" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "5250", + "label": "UN-Habitat", + "alt_labels": [ + "UN Human Settlements Centre", + "UN Human Settlements Programme", + "UN Programme on Human Settlements", + "UNCHS", + "UNHSP", + "United Nations Centre for Human Settlements", + "United Nations Human Settlements Centre", + "United Nations Human Settlements Programme", + "United Nations Programme on Human Settlements" + ], + "related_ids": [], + "broader_ids": [ + "4365" + ], + "geo_area_code": null + }, + { + "id": "5251", + "label": "servant (EU)", + "alt_labels": [ + "EC auxiliary staff", + "EC local staff", + "EC scientific staff", + "EC servants", + "EU temporary staff", + "contract agent (EU)", + "servant of the European Union", + "servants of the European Communities", + "temporary agent (EU)", + "temporary servant (EU)" + ], + "related_ids": [], + "broader_ids": [ + "5130" + ], + "geo_area_code": null + }, + { + "id": "5252", + "label": "goat", + "alt_labels": [ + "billy-goat", + "caprine species", + "kid" + ], + "related_ids": [ + "1109", + "4683" + ], + "broader_ids": [ + "5962" + ], + "geo_area_code": null + }, + { + "id": "5253", + "label": "by-catch", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5255" + ], + "geo_area_code": null + }, + { + "id": "5254", + "label": "authorised catch", + "alt_labels": [ + "TAC", + "authorised catch rate", + "authorized catch", + "total allowable catch", + "total authorised catches" + ], + "related_ids": [], + "broader_ids": [ + "5255" + ], + "geo_area_code": null + }, + { + "id": "5255", + "label": "catch of fish", + "alt_labels": [ + "amount of catch", + "quantity of catch", + "volume of catch" + ], + "related_ids": [ + "2435" + ], + "broader_ids": [ + "2476" + ], + "geo_area_code": null + }, + { + "id": "5256", + "label": "catch by species", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5255" + ], + "geo_area_code": null + }, + { + "id": "5257", + "label": "total catch", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5255" + ], + "geo_area_code": null + }, + { + "id": "5258", + "label": "EU act", + "alt_labels": [ + "Community act", + "Community legal act", + "EC act", + "EU legal act", + "European Union act", + "European Union legal act" + ], + "related_ids": [ + "4018", + "4222", + "8479" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "5259", + "label": "Caribbean Islands", + "alt_labels": [], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "526", + "label": "political unrest", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2162" + ], + "geo_area_code": null + }, + { + "id": "5260", + "label": "coal by-products industry", + "alt_labels": [], + "related_ids": [ + "5968" + ], + "broader_ids": [ + "3743" + ], + "geo_area_code": null + }, + { + "id": "5261", + "label": "carbon", + "alt_labels": [ + "graphite" + ], + "related_ids": [ + "5244" + ], + "broader_ids": [ + "3809" + ], + "geo_area_code": null + }, + { + "id": "5262", + "label": "motor fuel", + "alt_labels": [], + "related_ids": [ + "1140", + "3741", + "4407", + "4654", + "6044" + ], + "broader_ids": [ + "2772" + ], + "geo_area_code": null + }, + { + "id": "5263", + "label": "carcase", + "alt_labels": [ + "animal carcase" + ], + "related_ids": [], + "broader_ids": [ + "2737" + ], + "geo_area_code": null + }, + { + "id": "5264", + "label": "Caricom", + "alt_labels": [ + "Caribbean Community", + "Caribbean Free Trade Association", + "Carifta" + ], + "related_ids": [ + "2275", + "5265" + ], + "broader_ids": [ + "2170" + ], + "geo_area_code": null + }, + { + "id": "5265", + "label": "Caricom countries", + "alt_labels": [], + "related_ids": [ + "5264" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "5266", + "label": "distribution of schools", + "alt_labels": [], + "related_ids": [ + "1098", + "3326", + "3968", + "5905" + ], + "broader_ids": [ + "2175" + ], + "geo_area_code": null + }, + { + "id": "5267", + "label": "cartel", + "alt_labels": [ + "price-fixing cartel", + "profit-sharing cartel" + ], + "related_ids": [ + "1979", + "588" + ], + "broader_ids": [ + "803" + ], + "geo_area_code": null + }, + { + "id": "5268", + "label": "commercial transaction", + "alt_labels": [], + "related_ids": [ + "524" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "5269", + "label": "cartography", + "alt_labels": [], + "related_ids": [ + "3930", + "4426", + "7379" + ], + "broader_ids": [ + "1148" + ], + "geo_area_code": null + }, + { + "id": "527", + "label": "constitutional law", + "alt_labels": [ + "parliamentary law" + ], + "related_ids": [ + "148", + "2703", + "2966", + "5114" + ], + "broader_ids": [ + "3935" + ], + "geo_area_code": null + }, + { + "id": "5270", + "label": "cash flow", + "alt_labels": [], + "related_ids": [ + "4226" + ], + "broader_ids": [ + "3602" + ], + "geo_area_code": null + }, + { + "id": "5271", + "label": "criminal record", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3878" + ], + "geo_area_code": null + }, + { + "id": "5272", + "label": "cataloguing", + "alt_labels": [ + "cataloguing rules", + "cataloguing system", + "recording of documents" + ], + "related_ids": [], + "broader_ids": [ + "1752" + ], + "geo_area_code": null + }, + { + "id": "5273", + "label": "Catalonia", + "alt_labels": [ + "Autonomous Community of Catalonia" + ], + "related_ids": [], + "broader_ids": [ + "864" + ], + "geo_area_code": null + }, + { + "id": "5274", + "label": "catalogue", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4168" + ], + "geo_area_code": null + }, + { + "id": "5275", + "label": "socioprofessional category", + "alt_labels": [ + "socio-professional category" + ], + "related_ids": [ + "4305" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "5276", + "label": "electoral deposit", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5105" + ], + "geo_area_code": null + }, + { + "id": "5277", + "label": "conference proceedings", + "alt_labels": [ + "colloquium", + "conference", + "congress", + "round table", + "symposium" + ], + "related_ids": [ + "443629", + "7343" + ], + "broader_ids": [ + "486" + ], + "geo_area_code": null + }, + { + "id": "5278", + "label": "International Trade Centre", + "alt_labels": [ + "ITC (UNCTAD/WTO)", + "International Trade Centre UNCTAD/WTO", + "UNCTAD/WTO International Trade Centre" + ], + "related_ids": [ + "5765" + ], + "broader_ids": [ + "6016" + ], + "geo_area_code": null + }, + { + "id": "5279", + "label": "Secretariat of the Pacific Community", + "alt_labels": [ + "Conference of the Pacific Community", + "Pacific Community", + "SPC", + "South Pacific Commission" + ], + "related_ids": [ + "8366" + ], + "broader_ids": [ + "2172" + ], + "geo_area_code": null + }, + { + "id": "528", + "label": "customary law", + "alt_labels": [ + "custom and usage", + "ways and customs" + ], + "related_ids": [], + "broader_ids": [ + "4222" + ], + "geo_area_code": null + }, + { + "id": "5280", + "label": "woman", + "alt_labels": [ + "women" + ], + "related_ids": [], + "broader_ids": [ + "3337" + ], + "geo_area_code": null + }, + { + "id": "5281", + "label": "man", + "alt_labels": [ + "men" + ], + "related_ids": [], + "broader_ids": [ + "3337" + ], + "geo_area_code": null + }, + { + "id": "5282", + "label": "Centre for the Development of Enterprise", + "alt_labels": [ + "CDE", + "CDI", + "Centre for the Development of Industry" + ], + "related_ids": [ + "1450" + ], + "broader_ids": [ + "2191" + ], + "geo_area_code": null + }, + { + "id": "5283", + "label": "EU Member State", + "alt_labels": [ + "EC country", + "EU country", + "European Community country", + "European Union country" + ], + "related_ids": [ + "4060" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "5284", + "label": "European Civil Aviation Conference", + "alt_labels": [ + "ECAC" + ], + "related_ids": [ + "2093", + "4408" + ], + "broader_ids": [ + "2187" + ], + "geo_area_code": null + }, + { + "id": "5287", + "label": "ionising radiation", + "alt_labels": [ + "X-rays", + "alpha particles", + "beta particles", + "cosmic radiation", + "gamma rays", + "ionizing radiation" + ], + "related_ids": [ + "2539", + "2882", + "2884", + "5338", + "6747" + ], + "broader_ids": [ + "3946" + ], + "geo_area_code": null + }, + { + "id": "5288", + "label": "sodium", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1885" + ], + "geo_area_code": null + }, + { + "id": "5289", + "label": "metalworking", + "alt_labels": [ + "metal drawing", + "metal melting", + "metal processing", + "metal technology", + "metallurgy", + "rolling", + "soldering", + "welding" + ], + "related_ids": [], + "broader_ids": [ + "3820" + ], + "geo_area_code": null + }, + { + "id": "529", + "label": "copyright", + "alt_labels": [ + "accessory right" + ], + "related_ids": [ + "3033", + "3404", + "4105", + "435228", + "435299", + "5181", + "5192", + "5196", + "6558", + "8426", + "c_f53bfc88" + ], + "broader_ids": [ + "2817" + ], + "geo_area_code": null + }, + { + "id": "5290", + "label": "rare gas", + "alt_labels": [ + "argon", + "helium", + "krypton", + "neon", + "radon", + "xenon" + ], + "related_ids": [], + "broader_ids": [ + "3809" + ], + "geo_area_code": null + }, + { + "id": "5291", + "label": "death", + "alt_labels": [ + "burial", + "cause of death", + "cremation", + "funeral", + "natural death", + "terminally ill" + ], + "related_ids": [ + "1389", + "1991", + "4323", + "5488" + ], + "broader_ids": [ + "4706" + ], + "geo_area_code": null + }, + { + "id": "5292", + "label": "organ transplant", + "alt_labels": [ + "donation of organs", + "organ bank", + "organ donor", + "organ graft" + ], + "related_ids": [ + "5169", + "5512", + "c_5db9ac34" + ], + "broader_ids": [ + "5764" + ], + "geo_area_code": null + }, + { + "id": "5293", + "label": "blood transfusion", + "alt_labels": [ + "blood bank", + "blood donor" + ], + "related_ids": [ + "5172", + "5512", + "c_5db9ac34" + ], + "broader_ids": [ + "5764" + ], + "geo_area_code": null + }, + { + "id": "5294", + "label": "metal waste", + "alt_labels": [ + "car wreck", + "metal scrap", + "scrap", + "scrap metal" + ], + "related_ids": [], + "broader_ids": [ + "343" + ], + "geo_area_code": null + }, + { + "id": "5295", + "label": "Community trunk route", + "alt_labels": [ + "Community major road" + ], + "related_ids": [ + "5864" + ], + "broader_ids": [ + "2494" + ], + "geo_area_code": null + }, + { + "id": "5296", + "label": "custody", + "alt_labels": [ + "child custody", + "right of child custody", + "right of custody of children" + ], + "related_ids": [ + "3916", + "5390" + ], + "broader_ids": [ + "540" + ], + "geo_area_code": null + }, + { + "id": "5297", + "label": "youth exchange scheme", + "alt_labels": [], + "related_ids": [ + "1528" + ], + "broader_ids": [ + "3200" + ], + "geo_area_code": null + }, + { + "id": "5298", + "label": "fundamental particle", + "alt_labels": [ + "electron", + "elementary particle", + "neutron", + "photon", + "proton" + ], + "related_ids": [], + "broader_ids": [ + "2376" + ], + "geo_area_code": null + }, + { + "id": "5299", + "label": "atom", + "alt_labels": [ + "atomic nucleus" + ], + "related_ids": [], + "broader_ids": [ + "2376" + ], + "geo_area_code": null + }, + { + "id": "53", + "label": "composition of parliament", + "alt_labels": [], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "530", + "label": "registration tax", + "alt_labels": [ + "registration duty" + ], + "related_ids": [], + "broader_ids": [ + "1325" + ], + "geo_area_code": null + }, + { + "id": "5300", + "label": "analytical chemistry", + "alt_labels": [ + "centrifuging", + "chemical analysis", + "chemical testing", + "chromatography", + "conductometry", + "electrolytic analysis", + "photometry", + "volumetric analysis" + ], + "related_ids": [ + "6271", + "6272" + ], + "broader_ids": [ + "5966" + ], + "geo_area_code": null + }, + { + "id": "5301", + "label": "spectrometry", + "alt_labels": [ + "atomic spectrometry", + "emission spectrometry", + "mass spectrometry", + "molecular spectrometry", + "optical spectrometry", + "spectrography", + "spectrophotometry", + "spectroscopic analysis" + ], + "related_ids": [], + "broader_ids": [ + "3946" + ], + "geo_area_code": null + }, + { + "id": "5302", + "label": "Ecowas countries", + "alt_labels": [], + "related_ids": [ + "5341" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "5303", + "label": "cytology", + "alt_labels": [ + "cell", + "cell chemistry", + "cell cultivation", + "cell culture", + "cell morphology", + "cell structure", + "cytogenetics" + ], + "related_ids": [], + "broader_ids": [ + "4921" + ], + "geo_area_code": null + }, + { + "id": "5304", + "label": "calcium", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1885" + ], + "geo_area_code": null + }, + { + "id": "5305", + "label": "medical diagnosis", + "alt_labels": [ + "diagnostic radiology", + "echography", + "electrocardiography", + "electroencephalography", + "endoscopy", + "laboratory analysis", + "magnetic resonance imaging", + "medical imaging", + "nuclear magnetic resonance", + "radiography", + "radiology", + "scintigraphy", + "ultrasound" + ], + "related_ids": [ + "3844" + ], + "broader_ids": [ + "1852" + ], + "geo_area_code": null + }, + { + "id": "5306", + "label": "nuclear medicine", + "alt_labels": [ + "curie therapy", + "radium therapy" + ], + "related_ids": [ + "3874" + ], + "broader_ids": [ + "1852" + ], + "geo_area_code": null + }, + { + "id": "5307", + "label": "medical examination", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1852" + ], + "geo_area_code": null + }, + { + "id": "5308", + "label": "member of the Court of Auditors (EU)", + "alt_labels": [ + "member of the EC Court of Auditors" + ], + "related_ids": [ + "8465" + ], + "broader_ids": [ + "256" + ], + "geo_area_code": null + }, + { + "id": "5309", + "label": "building safety", + "alt_labels": [ + "SBS", + "sick building syndrome" + ], + "related_ids": [ + "5314" + ], + "broader_ids": [ + "2475" + ], + "geo_area_code": null + }, + { + "id": "531", + "label": "right to stopover", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4387" + ], + "geo_area_code": null + }, + { + "id": "5310", + "label": "European Environment Agency", + "alt_labels": [ + "EEA", + "European Environment Monitoring and Information Network" + ], + "related_ids": [ + "3140" + ], + "broader_ids": [ + "5769" + ], + "geo_area_code": null + }, + { + "id": "5311", + "label": "user guide", + "alt_labels": [ + "guide", + "handbook", + "instruction manual", + "user manual", + "user's guide", + "vade-mecum" + ], + "related_ids": [], + "broader_ids": [ + "486" + ], + "geo_area_code": null + }, + { + "id": "5312", + "label": "European symbol", + "alt_labels": [ + "European anthem", + "European emblem", + "European flag", + "European stamp" + ], + "related_ids": [ + "4102", + "4103", + "5891", + "6885" + ], + "broader_ids": [ + "5826" + ], + "geo_area_code": null + }, + { + "id": "5313", + "label": "official language", + "alt_labels": [ + "working language" + ], + "related_ids": [], + "broader_ids": [ + "4179" + ], + "geo_area_code": null + }, + { + "id": "5314", + "label": "accident in the home", + "alt_labels": [ + "domestic accident", + "domestic safety", + "home safety", + "safety in the home" + ], + "related_ids": [ + "5309", + "5810" + ], + "broader_ids": [ + "2690" + ], + "geo_area_code": null + }, + { + "id": "5315", + "label": "EU programme", + "alt_labels": [ + "Community framework programme", + "Community programme", + "EC framework programme", + "European Union programme" + ], + "related_ids": [ + "2795" + ], + "broader_ids": [ + "5413" + ], + "geo_area_code": null + }, + { + "id": "5316", + "label": "tropical forest", + "alt_labels": [ + "hevea", + "rain forest", + "rubber tree" + ], + "related_ids": [ + "5467" + ], + "broader_ids": [ + "1063" + ], + "geo_area_code": null + }, + { + "id": "5317", + "label": "personal effects", + "alt_labels": [ + "personal luggage" + ], + "related_ids": [ + "3156" + ], + "broader_ids": [ + "3193" + ], + "geo_area_code": null + }, + { + "id": "5318", + "label": "fourth Lom\u00e9 Convention", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "197" + ], + "geo_area_code": null + }, + { + "id": "5319", + "label": "electromagnetic interference", + "alt_labels": [ + "electrical interference", + "electromagnetic field", + "electromagnetic pollution", + "electromagnetic radiation" + ], + "related_ids": [], + "broader_ids": [ + "2090" + ], + "geo_area_code": null + }, + { + "id": "532", + "label": "right of establishment", + "alt_labels": [ + "freedom of establishment" + ], + "related_ids": [ + "1626", + "1922", + "2788", + "2932", + "4202", + "524" + ], + "broader_ids": [ + "2454" + ], + "geo_area_code": null + }, + { + "id": "5320", + "label": "waveband", + "alt_labels": [ + "CB", + "citizens' band radio", + "radio frequency" + ], + "related_ids": [], + "broader_ids": [ + "2013" + ], + "geo_area_code": null + }, + { + "id": "5321", + "label": "mercenary", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2628" + ], + "geo_area_code": null + }, + { + "id": "5322", + "label": "commemoration", + "alt_labels": [ + "anniversary" + ], + "related_ids": [ + "c_827bea7d" + ], + "broader_ids": [ + "2459" + ], + "geo_area_code": null + }, + { + "id": "5323", + "label": "twinning", + "alt_labels": [ + "town twinning" + ], + "related_ids": [ + "125" + ], + "broader_ids": [ + "4706" + ], + "geo_area_code": null + }, + { + "id": "5324", + "label": "driving instruction", + "alt_labels": [ + "driving lessons", + "driving school" + ], + "related_ids": [], + "broader_ids": [ + "3131" + ], + "geo_area_code": null + }, + { + "id": "5325", + "label": "performance drugs", + "alt_labels": [ + "doping" + ], + "related_ids": [ + "4245", + "c_2f64fd66" + ], + "broader_ids": [ + "2690" + ], + "geo_area_code": null + }, + { + "id": "5326", + "label": "European Convention on Human Rights", + "alt_labels": [ + "Convention for the Protection of Human Rights and Fundamental Freedoms", + "ECHR (European Convention on Human Rights)" + ], + "related_ids": [ + "3902", + "6286" + ], + "broader_ids": [ + "3472" + ], + "geo_area_code": null + }, + { + "id": "5327", + "label": "ECSC", + "alt_labels": [ + "Consultative Committee of the ECSC", + "ECSC consultative committee", + "European Coal and Steel Community", + "High Authority" + ], + "related_ids": [ + "4480", + "5057" + ], + "broader_ids": [ + "26" + ], + "geo_area_code": null + }, + { + "id": "5328", + "label": "General Court (EU)", + "alt_labels": [ + "Court of First Instance of the European Communities", + "EC Court of First Instance" + ], + "related_ids": [], + "broader_ids": [ + "255" + ], + "geo_area_code": null + }, + { + "id": "5329", + "label": "retirement conditions", + "alt_labels": [ + "retirement age" + ], + "related_ids": [ + "3362", + "3751" + ], + "broader_ids": [ + "3522" + ], + "geo_area_code": null + }, + { + "id": "533", + "label": "right to strike", + "alt_labels": [], + "related_ids": [ + "1046", + "1186" + ], + "broader_ids": [ + "557" + ], + "geo_area_code": null + }, + { + "id": "5330", + "label": "internal border of the EU", + "alt_labels": [ + "internal Community frontier", + "internal border of the European Union" + ], + "related_ids": [ + "3055", + "4079" + ], + "broader_ids": [ + "1114" + ], + "geo_area_code": null + }, + { + "id": "5331", + "label": "camping vehicle", + "alt_labels": [ + "Dormobile", + "camper", + "camping car", + "caravan", + "motor caravan" + ], + "related_ids": [ + "5099" + ], + "broader_ids": [ + "4651" + ], + "geo_area_code": null + }, + { + "id": "5332", + "label": "anti-dumping measure", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1591" + ], + "geo_area_code": null + }, + { + "id": "5333", + "label": "impact of information technology", + "alt_labels": [ + "impact of ICT", + "impact of informatics", + "impact of information and communication technologies", + "impact of the digital revolution" + ], + "related_ids": [ + "5188", + "5383" + ], + "broader_ids": [ + "1426" + ], + "geo_area_code": null + }, + { + "id": "5334", + "label": "disclosure of information", + "alt_labels": [ + "information disclosure" + ], + "related_ids": [ + "4502", + "453", + "616", + "92", + "c_2f00dd5a" + ], + "broader_ids": [ + "2472" + ], + "geo_area_code": null + }, + { + "id": "5335", + "label": "military intervention", + "alt_labels": [ + "aggression" + ], + "related_ids": [ + "8476", + "8482" + ], + "broader_ids": [ + "99" + ], + "geo_area_code": null + }, + { + "id": "5336", + "label": "export of waste", + "alt_labels": [ + "cross-border movement of waste" + ], + "related_ids": [ + "1158" + ], + "broader_ids": [ + "343" + ], + "geo_area_code": null + }, + { + "id": "5337", + "label": "development worker", + "alt_labels": [], + "related_ids": [ + "216" + ], + "broader_ids": [ + "2460" + ], + "geo_area_code": null + }, + { + "id": "5338", + "label": "radiobiology", + "alt_labels": [], + "related_ids": [ + "2884", + "5287" + ], + "broader_ids": [ + "4921" + ], + "geo_area_code": null + }, + { + "id": "5339", + "label": "absenteeism", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2857" + ], + "geo_area_code": null + }, + { + "id": "534", + "label": "energy law", + "alt_labels": [ + "energy legislation", + "energy regulations" + ], + "related_ids": [], + "broader_ids": [ + "2498" + ], + "geo_area_code": null + }, + { + "id": "5340", + "label": "papal act", + "alt_labels": [ + "encyclical", + "papal bull" + ], + "related_ids": [ + "4649" + ], + "broader_ids": [ + "486" + ], + "geo_area_code": null + }, + { + "id": "5341", + "label": "Economic Community of West African States", + "alt_labels": [ + "Ecowas" + ], + "related_ids": [ + "5302" + ], + "broader_ids": [ + "2167" + ], + "geo_area_code": null + }, + { + "id": "5342", + "label": "Cedefop", + "alt_labels": [ + "European Centre for the Development of Vocational Training" + ], + "related_ids": [ + "1074" + ], + "broader_ids": [ + "5769" + ], + "geo_area_code": null + }, + { + "id": "5343", + "label": "European Community", + "alt_labels": [ + "EEC", + "European Economic Community" + ], + "related_ids": [], + "broader_ids": [ + "26" + ], + "geo_area_code": null + }, + { + "id": "5344", + "label": "EAEC", + "alt_labels": [ + "Euratom", + "European Atomic Energy Community" + ], + "related_ids": [ + "2610", + "4482" + ], + "broader_ids": [ + "26" + ], + "geo_area_code": null + }, + { + "id": "5345", + "label": "unmarried person", + "alt_labels": [ + "unmarried state" + ], + "related_ids": [ + "2340" + ], + "broader_ids": [ + "4184" + ], + "geo_area_code": null + }, + { + "id": "5346", + "label": "cellulose", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2754" + ], + "geo_area_code": null + }, + { + "id": "5347", + "label": "European Conference of Ministers of Transport", + "alt_labels": [ + "ECMT" + ], + "related_ids": [ + "4515", + "4539" + ], + "broader_ids": [ + "2105" + ], + "geo_area_code": null + }, + { + "id": "5348", + "label": "censorship", + "alt_labels": [], + "related_ids": [ + "1619", + "1621", + "1622", + "5196", + "92" + ], + "broader_ids": [ + "175" + ], + "geo_area_code": null + }, + { + "id": "5349", + "label": "Central African Republic", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "302", + "4587", + "5083" + ], + "geo_area_code": "CAF" + }, + { + "id": "535", + "label": "environmental law", + "alt_labels": [ + "IMPEL", + "IMPEL network", + "Implementation and Enforcement of Environmental Law", + "environmental legislation", + "environmental regulations" + ], + "related_ids": [ + "c_e5d85c14" + ], + "broader_ids": [ + "2470" + ], + "geo_area_code": null + }, + { + "id": "5350", + "label": "nuclear power station", + "alt_labels": [ + "nuclear installation", + "nuclear plant" + ], + "related_ids": [ + "3631", + "3735", + "3782", + "3785", + "572", + "c_804a9afe" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "5351", + "label": "centralisation of information", + "alt_labels": [ + "centralised information", + "centralization of information", + "decentralisation of information", + "decentralised information" + ], + "related_ids": [ + "4486" + ], + "broader_ids": [ + "2472" + ], + "geo_area_code": null + }, + { + "id": "5352", + "label": "Centre-Val de Loire", + "alt_labels": [ + "Centre (France)" + ], + "related_ids": [], + "broader_ids": [ + "1088" + ], + "geo_area_code": null + }, + { + "id": "5353", + "label": "shopping centre", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5" + ], + "geo_area_code": null + }, + { + "id": "5354", + "label": "Joint Research Centre", + "alt_labels": [ + "IE", + "IES", + "IHCP", + "IPSC", + "IPTS", + "IRMM", + "ITU", + "Institute for Energy", + "Institute for Health and Consumer Protection", + "Institute for Prospective Technological Studies", + "Institute for Reference Materials and Measurements", + "Institute for Transuranium Elements", + "Institute for the Environment and Sustainability", + "Institute for the Protection and the Security of the Citizen", + "JRC" + ], + "related_ids": [ + "3656", + "6300" + ], + "broader_ids": [ + "5769" + ], + "geo_area_code": null + }, + { + "id": "5355", + "label": "computer centre", + "alt_labels": [ + "data centre", + "data-processing centre" + ], + "related_ids": [], + "broader_ids": [ + "5922" + ], + "geo_area_code": null + }, + { + "id": "5356", + "label": "documentation centre", + "alt_labels": [ + "documentation service" + ], + "related_ids": [ + "494" + ], + "broader_ids": [ + "4366" + ], + "geo_area_code": null + }, + { + "id": "5357", + "label": "political centre", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4436" + ], + "geo_area_code": null + }, + { + "id": "5358", + "label": "on line data service", + "alt_labels": [ + "data-bank service centre", + "host computer" + ], + "related_ids": [], + "broader_ids": [ + "4821" + ], + "geo_area_code": null + }, + { + "id": "5359", + "label": "ceramics", + "alt_labels": [ + "ceramic product", + "ceramics industry", + "porcelain", + "pottery" + ], + "related_ids": [ + "1826", + "3693" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "536", + "label": "economic aggregate", + "alt_labels": [], + "related_ids": [ + "139", + "145", + "4641" + ], + "broader_ids": [ + "56" + ], + "geo_area_code": null + }, + { + "id": "5360", + "label": "cereals", + "alt_labels": [], + "related_ids": [ + "1029", + "2729", + "318", + "4404", + "970" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "5361", + "label": "food cereals", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5360" + ], + "geo_area_code": null + }, + { + "id": "5362", + "label": "share", + "alt_labels": [ + "certificate of depository receipt", + "certificate of depository share receipt", + "certificate representing shares", + "depositary receipt", + "depository receipt", + "depository share receipt", + "share certificate", + "stock certificate" + ], + "related_ids": [ + "3674", + "4193", + "5389", + "5604" + ], + "broader_ids": [ + "4646" + ], + "geo_area_code": null + }, + { + "id": "5363", + "label": "fodder cereals", + "alt_labels": [], + "related_ids": [ + "2412", + "320", + "4854" + ], + "broader_ids": [ + "5360" + ], + "geo_area_code": null + }, + { + "id": "5364", + "label": "cereals of bread-making quality", + "alt_labels": [], + "related_ids": [ + "2221" + ], + "broader_ids": [ + "5361" + ], + "geo_area_code": null + }, + { + "id": "5365", + "label": "CERN", + "alt_labels": [ + "European Laboratory for Particle Physics", + "European Organisation for Nuclear Research", + "European Organization for Nuclear Research" + ], + "related_ids": [ + "4422", + "6703" + ], + "broader_ids": [ + "2187" + ], + "geo_area_code": null + }, + { + "id": "5367", + "label": "certificate of origin", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2771" + ], + "geo_area_code": null + }, + { + "id": "5368", + "label": "movement certificate", + "alt_labels": [ + "customs permit" + ], + "related_ids": [ + "1091" + ], + "broader_ids": [ + "491" + ], + "geo_area_code": null + }, + { + "id": "5369", + "label": "health certificate", + "alt_labels": [], + "related_ids": [ + "1596" + ], + "broader_ids": [ + "491" + ], + "geo_area_code": null + }, + { + "id": "537", + "label": "law of outer space", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "567" + ], + "geo_area_code": null + }, + { + "id": "5370", + "label": "European Trade Union Confederation", + "alt_labels": [ + "ETUC" + ], + "related_ids": [ + "5522" + ], + "broader_ids": [ + "2187", + "2191" + ], + "geo_area_code": null + }, + { + "id": "5371", + "label": "legal action", + "alt_labels": [ + "court case", + "initiation of legal action" + ], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "5372", + "label": "cessation of trading", + "alt_labels": [ + "business closure" + ], + "related_ids": [ + "3522", + "5", + "5373", + "5985" + ], + "broader_ids": [ + "4703" + ], + "geo_area_code": null + }, + { + "id": "5373", + "label": "cessation of farming", + "alt_labels": [ + "cessation of agricultural production", + "farm closure", + "farmer's retirement annuity" + ], + "related_ids": [ + "2621", + "4444", + "5372", + "978" + ], + "broader_ids": [ + "2493" + ], + "geo_area_code": null + }, + { + "id": "5374", + "label": "suspension of payments", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4703" + ], + "geo_area_code": null + }, + { + "id": "5375", + "label": "cease-fire", + "alt_labels": [ + "armistice", + "truce" + ], + "related_ids": [], + "broader_ids": [ + "3112" + ], + "geo_area_code": null + }, + { + "id": "5376", + "label": "chamber of commerce and industry", + "alt_labels": [ + "chamber of commerce" + ], + "related_ids": [ + "4303" + ], + "broader_ids": [ + "2804" + ], + "geo_area_code": null + }, + { + "id": "5377", + "label": "directly-elected chamber", + "alt_labels": [ + "House of Commons", + "Lower House" + ], + "related_ids": [ + "4322" + ], + "broader_ids": [ + "4871" + ], + "geo_area_code": null + }, + { + "id": "5378", + "label": "federal chamber", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4871" + ], + "geo_area_code": null + }, + { + "id": "5379", + "label": "parliamentary chamber", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "53" + ], + "geo_area_code": null + }, + { + "id": "538", + "label": "fundamental rights", + "alt_labels": [ + "citizens' rights", + "enjoyment of political rights", + "fundamental freedom", + "personal freedom", + "rights of the individual" + ], + "related_ids": [ + "2154", + "3370", + "6219", + "6286", + "c_ad50a3c0" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "5380", + "label": "champagne", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4713" + ], + "geo_area_code": null + }, + { + "id": "5381", + "label": "Champagne-Ardenne", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "c_c44f1704" + ], + "geo_area_code": null + }, + { + "id": "5382", + "label": "social change", + "alt_labels": [ + "social reform" + ], + "related_ids": [], + "broader_ids": [ + "4706" + ], + "geo_area_code": null + }, + { + "id": "5383", + "label": "technological change", + "alt_labels": [ + "adaptation to technical progress", + "digital revolution", + "technical progress", + "technological development", + "technological progress" + ], + "related_ids": [ + "1439", + "1646", + "2797", + "2904", + "3290", + "3523", + "3707", + "5333", + "5983", + "7939", + "c_658ff033" + ], + "broader_ids": [ + "4415" + ], + "geo_area_code": null + }, + { + "id": "5384", + "label": "hemp", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2417" + ], + "geo_area_code": null + }, + { + "id": "5385", + "label": "chaptalisation", + "alt_labels": [ + "chaptalization", + "sweetening of wine" + ], + "related_ids": [ + "2888", + "4713", + "4734" + ], + "broader_ids": [ + "4726" + ], + "geo_area_code": null + }, + { + "id": "5386", + "label": "coal", + "alt_labels": [ + "hard coal", + "patent hard-coal fuel", + "power station coal" + ], + "related_ids": [ + "3741", + "5244", + "6045" + ], + "broader_ids": [ + "3743" + ], + "geo_area_code": null + }, + { + "id": "5387", + "label": "coal mining", + "alt_labels": [ + "coal field", + "coal mine", + "colliery", + "pit" + ], + "related_ids": [], + "broader_ids": [ + "3743" + ], + "geo_area_code": null + }, + { + "id": "5388", + "label": "axle weight", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5392" + ], + "geo_area_code": null + }, + { + "id": "5389", + "label": "shareholder", + "alt_labels": [], + "related_ids": [ + "2831", + "4196", + "5362" + ], + "broader_ids": [ + "3121" + ], + "geo_area_code": null + }, + { + "id": "539", + "label": "competition law", + "alt_labels": [ + "competition regulations" + ], + "related_ids": [ + "2892", + "3060", + "4010", + "524", + "554", + "816", + "828" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "5390", + "label": "dependant", + "alt_labels": [ + "dependent child", + "dependent person", + "dependent relative" + ], + "related_ids": [ + "2099", + "5296" + ], + "broader_ids": [ + "965" + ], + "geo_area_code": null + }, + { + "id": "5391", + "label": "payload", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5392" + ], + "geo_area_code": null + }, + { + "id": "5392", + "label": "load", + "alt_labels": [ + "cargo" + ], + "related_ids": [], + "broader_ids": [ + "4509" + ], + "geo_area_code": null + }, + { + "id": "5393", + "label": "Havana Charter", + "alt_labels": [ + "ITO Charter" + ], + "related_ids": [], + "broader_ids": [ + "1136" + ], + "geo_area_code": null + }, + { + "id": "5394", + "label": "United Nations Charter", + "alt_labels": [], + "related_ids": [ + "2179" + ], + "broader_ids": [ + "5486" + ], + "geo_area_code": null + }, + { + "id": "5395", + "label": "European Social Charter", + "alt_labels": [], + "related_ids": [ + "121", + "584" + ], + "broader_ids": [ + "3346" + ], + "geo_area_code": null + }, + { + "id": "5396", + "label": "hunting", + "alt_labels": [ + "trapping" + ], + "related_ids": [ + "3128" + ], + "broader_ids": [ + "4245" + ], + "geo_area_code": null + }, + { + "id": "5397", + "label": "boiler", + "alt_labels": [], + "related_ids": [ + "5503" + ], + "broader_ids": [ + "5615" + ], + "geo_area_code": null + }, + { + "id": "5399", + "label": "access to EU information", + "alt_labels": [ + "access to Community information" + ], + "related_ids": [ + "453" + ], + "broader_ids": [ + "5937" + ], + "geo_area_code": null + }, + { + "id": "54", + "label": "accounting", + "alt_labels": [], + "related_ids": [ + "1155", + "1427", + "1731", + "1811", + "3083", + "4362", + "56", + "58", + "59", + "822", + "933" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "540", + "label": "family law", + "alt_labels": [], + "related_ids": [ + "576" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "5400", + "label": "access to the courts", + "alt_labels": [ + "access to justice" + ], + "related_ids": [ + "3974", + "516" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "5401", + "label": "ATP Agreement", + "alt_labels": [], + "related_ids": [ + "387" + ], + "broader_ids": [ + "4509" + ], + "geo_area_code": null + }, + { + "id": "5403", + "label": "trade agreement (EU)", + "alt_labels": [ + "EC trade agreement" + ], + "related_ids": [ + "1567", + "5407" + ], + "broader_ids": [ + "1474" + ], + "geo_area_code": null + }, + { + "id": "5404", + "label": "cooperation agreement (EU)", + "alt_labels": [ + "EC cooperation agreement" + ], + "related_ids": [ + "2095", + "5407" + ], + "broader_ids": [ + "1474" + ], + "geo_area_code": null + }, + { + "id": "5405", + "label": "Schengen Agreement", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1633" + ], + "geo_area_code": null + }, + { + "id": "5406", + "label": "European Association Agreement", + "alt_labels": [], + "related_ids": [ + "5407" + ], + "broader_ids": [ + "4048" + ], + "geo_area_code": null + }, + { + "id": "5407", + "label": "interim agreement (EU)", + "alt_labels": [ + "EC interim agreement", + "provisional implementation of an EC agreement" + ], + "related_ids": [ + "5403", + "5404", + "5406" + ], + "broader_ids": [ + "4040" + ], + "geo_area_code": null + }, + { + "id": "5408", + "label": "interinstitutional agreement", + "alt_labels": [], + "related_ids": [ + "5590" + ], + "broader_ids": [ + "5854" + ], + "geo_area_code": null + }, + { + "id": "5409", + "label": "mixed agreement", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4040" + ], + "geo_area_code": null + }, + { + "id": "541", + "label": "law of war", + "alt_labels": [ + "jus ad bellum", + "law of armed conflict", + "law on resort to war" + ], + "related_ids": [ + "567", + "584" + ], + "broader_ids": [ + "99" + ], + "geo_area_code": null + }, + { + "id": "5410", + "label": "electricity storage device", + "alt_labels": [ + "accumulator", + "battery" + ], + "related_ids": [ + "6411", + "c_d1c21de0" + ], + "broader_ids": [ + "1833" + ], + "geo_area_code": null + }, + { + "id": "5411", + "label": "Community acquis", + "alt_labels": [ + "acquis communautaire" + ], + "related_ids": [ + "6706" + ], + "broader_ids": [ + "525" + ], + "geo_area_code": null + }, + { + "id": "5412", + "label": "associated action for damages", + "alt_labels": [], + "related_ids": [ + "1339", + "1432", + "4695", + "497" + ], + "broader_ids": [ + "5415" + ], + "geo_area_code": null + }, + { + "id": "5413", + "label": "EU action", + "alt_labels": [ + "Community action", + "European Union action" + ], + "related_ids": [], + "broader_ids": [ + "5418" + ], + "geo_area_code": null + }, + { + "id": "5414", + "label": "civil proceedings", + "alt_labels": [ + "action brought before a civil court", + "lawsuit" + ], + "related_ids": [ + "8480" + ], + "broader_ids": [ + "5371" + ], + "geo_area_code": null + }, + { + "id": "5415", + "label": "criminal proceedings", + "alt_labels": [], + "related_ids": [ + "3513", + "5550", + "573" + ], + "broader_ids": [ + "5371" + ], + "geo_area_code": null + }, + { + "id": "5416", + "label": "civil liability proceedings", + "alt_labels": [ + "action for damages", + "claim for damages" + ], + "related_ids": [ + "3497" + ], + "broader_ids": [ + "5414" + ], + "geo_area_code": null + }, + { + "id": "5417", + "label": "public prosecution", + "alt_labels": [], + "related_ids": [ + "1938" + ], + "broader_ids": [ + "5415" + ], + "geo_area_code": null + }, + { + "id": "5418", + "label": "EU activity", + "alt_labels": [ + "Community activity", + "European Union activity" + ], + "related_ids": [], + "broader_ids": [ + "5442" + ], + "geo_area_code": null + }, + { + "id": "5419", + "label": "adaptation of financial perspectives", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5787" + ], + "geo_area_code": null + }, + { + "id": "542", + "label": "law of the sea", + "alt_labels": [ + "international maritime law" + ], + "related_ids": [ + "1707", + "1870", + "2107", + "2532", + "2535", + "3163", + "544", + "569", + "940" + ], + "broader_ids": [ + "567" + ], + "geo_area_code": null + }, + { + "id": "5420", + "label": "accession to an agreement", + "alt_labels": [ + "accession to a convention", + "accession to a treaty" + ], + "related_ids": [ + "4030", + "5873" + ], + "broader_ids": [ + "3461" + ], + "geo_area_code": null + }, + { + "id": "5421", + "label": "administration of the Institutions", + "alt_labels": [], + "related_ids": [ + "5885" + ], + "broader_ids": [ + "5640" + ], + "geo_area_code": null + }, + { + "id": "5422", + "label": "display", + "alt_labels": [], + "related_ids": [ + "441" + ], + "broader_ids": [ + "1422" + ], + "geo_area_code": null + }, + { + "id": "5423", + "label": "Portuguese-speaking Africa", + "alt_labels": [ + "African countries with Portuguese as the official language", + "PALOP" + ], + "related_ids": [], + "broader_ids": [ + "281" + ], + "geo_area_code": null + }, + { + "id": "5424", + "label": "sub-Saharan Africa", + "alt_labels": [ + "Africa south of the Sahara" + ], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "5426", + "label": "European Medicines Agency", + "alt_labels": [ + "EMA", + "European Agency for the Evaluation of Medicinal Products" + ], + "related_ids": [ + "5916" + ], + "broader_ids": [ + "5769" + ], + "geo_area_code": null + }, + { + "id": "5427", + "label": "European Agency for Safety and Health at Work", + "alt_labels": [ + "Bilbao Agency", + "EU-OSHA" + ], + "related_ids": [ + "4039" + ], + "broader_ids": [ + "5769" + ], + "geo_area_code": null + }, + { + "id": "5428", + "label": "physical aggression", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3943" + ], + "geo_area_code": null + }, + { + "id": "5429", + "label": "parking area", + "alt_labels": [ + "car park", + "parking", + "vehicle park" + ], + "related_ids": [ + "3127", + "4261" + ], + "broader_ids": [ + "847" + ], + "geo_area_code": null + }, + { + "id": "543", + "label": "right to demonstrate", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3900" + ], + "geo_area_code": null + }, + { + "id": "5430", + "label": "NAFTA", + "alt_labels": [ + "North American Free Trade Agreement" + ], + "related_ids": [ + "2275", + "4789", + "7207" + ], + "broader_ids": [ + "2170" + ], + "geo_area_code": null + }, + { + "id": "5431", + "label": "allergy", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1754" + ], + "geo_area_code": null + }, + { + "id": "5432", + "label": "embassy", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3367" + ], + "geo_area_code": null + }, + { + "id": "5433", + "label": "town and country planning", + "alt_labels": [], + "related_ids": [ + "5226" + ], + "broader_ids": [ + "2515" + ], + "geo_area_code": null + }, + { + "id": "5436", + "label": "seniority", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5475" + ], + "geo_area_code": null + }, + { + "id": "5437", + "label": "former socialist countries", + "alt_labels": [], + "related_ids": [ + "6108" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "5438", + "label": "England", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3780" + ], + "geo_area_code": null + }, + { + "id": "5439", + "label": "fur-bearing animal", + "alt_labels": [], + "related_ids": [ + "1585", + "3887" + ], + "broader_ids": [ + "5722" + ], + "geo_area_code": null + }, + { + "id": "544", + "label": "fishing rights", + "alt_labels": [ + "catch limits", + "fishing ban", + "fishing restriction" + ], + "related_ids": [ + "542" + ], + "broader_ids": [ + "5228" + ], + "geo_area_code": null + }, + { + "id": "5440", + "label": "gas appliance", + "alt_labels": [], + "related_ids": [ + "1139" + ], + "broader_ids": [ + "5615" + ], + "geo_area_code": null + }, + { + "id": "5441", + "label": "information technology applications", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5922" + ], + "geo_area_code": null + }, + { + "id": "5442", + "label": "deepening of the European Union", + "alt_labels": [ + "deepening of the Community", + "further development of the Community", + "further development of the European Union" + ], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "5443", + "label": "Atlantic Arc", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5848" + ], + "geo_area_code": null + }, + { + "id": "5444", + "label": "archipelago", + "alt_labels": [], + "related_ids": [ + "4129" + ], + "broader_ids": [ + "542" + ], + "geo_area_code": null + }, + { + "id": "5445", + "label": "Armenia", + "alt_labels": [ + "Republic of Armenia" + ], + "related_ids": [ + "3499", + "c_6547ccb7" + ], + "broader_ids": [ + "122", + "5775", + "7208" + ], + "geo_area_code": "ARM" + }, + { + "id": "5446", + "label": "South Asian Association for Regional Cooperation", + "alt_labels": [ + "SAARC" + ], + "related_ids": [ + "8367" + ], + "broader_ids": [ + "2172" + ], + "geo_area_code": null + }, + { + "id": "5447", + "label": "lift", + "alt_labels": [ + "escalator" + ], + "related_ids": [], + "broader_ids": [ + "4414" + ], + "geo_area_code": null + }, + { + "id": "5448", + "label": "Central Asia", + "alt_labels": [], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "5449", + "label": "parliamentary assembly", + "alt_labels": [], + "related_ids": [ + "2242" + ], + "broader_ids": [ + "2189" + ], + "geo_area_code": null + }, + { + "id": "545", + "label": "access to a profession", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2468" + ], + "geo_area_code": null + }, + { + "id": "5450", + "label": "administrative autonomy", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2166" + ], + "geo_area_code": null + }, + { + "id": "5451", + "label": "market approval", + "alt_labels": [ + "ban on sales", + "marketing ban", + "sales ban" + ], + "related_ids": [ + "1252", + "c_41ef4cb8" + ], + "broader_ids": [ + "13" + ], + "geo_area_code": null + }, + { + "id": "5453", + "label": "fighter aircraft", + "alt_labels": [ + "combat aircraft", + "combat plane", + "fighter plane" + ], + "related_ids": [ + "4438" + ], + "broader_ids": [ + "4417" + ], + "geo_area_code": null + }, + { + "id": "5454", + "label": "Azerbaijan", + "alt_labels": [ + "Republic of Azerbaijan" + ], + "related_ids": [ + "c_6547ccb7" + ], + "broader_ids": [ + "122", + "5775", + "7208" + ], + "geo_area_code": "AZE" + }, + { + "id": "5455", + "label": "European Central Bank", + "alt_labels": [ + "ECB" + ], + "related_ids": [ + "445259", + "4763", + "5883" + ], + "broader_ids": [ + "1451" + ], + "geo_area_code": null + }, + { + "id": "5456", + "label": "legal basis", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5606" + ], + "geo_area_code": null + }, + { + "id": "5457", + "label": "Rhine Valley", + "alt_labels": [ + "Rhine", + "Rhine basin", + "Rhine region" + ], + "related_ids": [ + "3700", + "7186" + ], + "broader_ids": [ + "5848" + ], + "geo_area_code": null + }, + { + "id": "5458", + "label": "Belarus", + "alt_labels": [ + "Republic of Belarus" + ], + "related_ids": [ + "c_6547ccb7" + ], + "broader_ids": [ + "5775", + "914" + ], + "geo_area_code": "BYS" + }, + { + "id": "5459", + "label": "net recipient", + "alt_labels": [], + "related_ids": [ + "5856" + ], + "broader_ids": [ + "3259" + ], + "geo_area_code": null + }, + { + "id": "546", + "label": "right of pre-emption", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3929" + ], + "geo_area_code": null + }, + { + "id": "5460", + "label": "EBRD", + "alt_labels": [ + "European Bank for Reconstruction and Development" + ], + "related_ids": [ + "4806", + "c_7cbc24fd" + ], + "broader_ids": [ + "2187" + ], + "geo_area_code": null + }, + { + "id": "5461", + "label": "dual-use good", + "alt_labels": [], + "related_ids": [ + "4422", + "5495", + "5542" + ], + "broader_ids": [ + "5928" + ], + "geo_area_code": null + }, + { + "id": "5462", + "label": "animal welfare", + "alt_labels": [ + "animal rights", + "animal well-being" + ], + "related_ids": [ + "2830", + "3667", + "4152", + "6121" + ], + "broader_ids": [ + "5877" + ], + "geo_area_code": null + }, + { + "id": "5463", + "label": "biodiversity", + "alt_labels": [ + "species diversity" + ], + "related_ids": [ + "3153", + "3528", + "865" + ], + "broader_ids": [ + "4940" + ], + "geo_area_code": null + }, + { + "id": "5464", + "label": "biotope", + "alt_labels": [ + "biocenosis", + "biotic community", + "ecological niche" + ], + "related_ids": [], + "broader_ids": [ + "664" + ], + "geo_area_code": null + }, + { + "id": "5465", + "label": "money laundering", + "alt_labels": [ + "laundering of funds" + ], + "related_ids": [ + "3355", + "5560", + "574" + ], + "broader_ids": [ + "2946" + ], + "geo_area_code": null + }, + { + "id": "5466", + "label": "cleaning industry", + "alt_labels": [ + "cleaners", + "dry cleaning", + "laundry" + ], + "related_ids": [], + "broader_ids": [ + "1384" + ], + "geo_area_code": null + }, + { + "id": "5467", + "label": "tropical wood", + "alt_labels": [], + "related_ids": [ + "5316" + ], + "broader_ids": [ + "2754" + ], + "geo_area_code": null + }, + { + "id": "5468", + "label": "bomber", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4417" + ], + "geo_area_code": null + }, + { + "id": "5469", + "label": "Bosnia and Herzegovina", + "alt_labels": [ + "Bosnia-Herzegovina" + ], + "related_ids": [], + "broader_ids": [ + "122", + "5781", + "8278", + "914" + ], + "geo_area_code": "BIH" + }, + { + "id": "547", + "label": "right of repossession", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4598" + ], + "geo_area_code": null + }, + { + "id": "5470", + "label": "Brandenburg", + "alt_labels": [ + "Brandenburg (Land)" + ], + "related_ids": [], + "broader_ids": [ + "1329" + ], + "geo_area_code": null + }, + { + "id": "5471", + "label": "air cabotage", + "alt_labels": [], + "related_ids": [ + "5077", + "5209" + ], + "broader_ids": [ + "4505" + ], + "geo_area_code": null + }, + { + "id": "5472", + "label": "Community support framework", + "alt_labels": [], + "related_ids": [ + "1460", + "5138" + ], + "broader_ids": [ + "2516" + ], + "geo_area_code": null + }, + { + "id": "5473", + "label": "scientific calculation", + "alt_labels": [], + "related_ids": [ + "1835" + ], + "broader_ids": [ + "3026" + ], + "geo_area_code": null + }, + { + "id": "5474", + "label": "timetable for EMU", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4602" + ], + "geo_area_code": null + }, + { + "id": "5475", + "label": "professional career", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1163" + ], + "geo_area_code": null + }, + { + "id": "5476", + "label": "expansion card", + "alt_labels": [ + "adapter card", + "add-on card", + "communication card", + "sound card", + "video card" + ], + "related_ids": [], + "broader_ids": [ + "5613" + ], + "geo_area_code": null + }, + { + "id": "5477", + "label": "audio cassette", + "alt_labels": [ + "pre-recorded cassette" + ], + "related_ids": [], + "broader_ids": [ + "3873" + ], + "geo_area_code": null + }, + { + "id": "5478", + "label": "Euro-Atlantic Partnership Council", + "alt_labels": [ + "EAPC", + "NACC", + "North Atlantic Cooperation Council" + ], + "related_ids": [ + "5773" + ], + "broader_ids": [ + "2199" + ], + "geo_area_code": null + }, + { + "id": "5479", + "label": "Commonwealth of Independent States", + "alt_labels": [ + "CIS", + "NIS", + "Newly Independent States" + ], + "related_ids": [ + "5775" + ], + "broader_ids": [ + "2188" + ], + "geo_area_code": null + }, + { + "id": "548", + "label": "right to vote", + "alt_labels": [ + "ability to vote", + "voting rights" + ], + "related_ids": [ + "5491", + "558" + ], + "broader_ids": [ + "583" + ], + "geo_area_code": null + }, + { + "id": "5480", + "label": "quality control circle", + "alt_labels": [ + "quality improvement group" + ], + "related_ids": [ + "180", + "2266", + "2724", + "2871" + ], + "broader_ids": [ + "4413" + ], + "geo_area_code": null + }, + { + "id": "5481", + "label": "Community certification", + "alt_labels": [], + "related_ids": [ + "5811" + ], + "broader_ids": [ + "1252" + ], + "geo_area_code": null + }, + { + "id": "5482", + "label": "climate change", + "alt_labels": [ + "climatic change" + ], + "related_ids": [ + "434664", + "434743", + "434786", + "5605", + "5675", + "6011", + "6384", + "c_8b2bae70", + "c_c9724a74" + ], + "broader_ids": [ + "371" + ], + "geo_area_code": null + }, + { + "id": "5483", + "label": "change of political system", + "alt_labels": [], + "related_ids": [ + "5841", + "6108" + ], + "broader_ids": [ + "3025" + ], + "geo_area_code": null + }, + { + "id": "5484", + "label": "Community Charter of the Fundamental Social Rights of Workers", + "alt_labels": [ + "Charter of fundamental social rights" + ], + "related_ids": [ + "3899", + "557", + "6286", + "6752" + ], + "broader_ids": [ + "3346" + ], + "geo_area_code": null + }, + { + "id": "5485", + "label": "European charter", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5486" + ], + "geo_area_code": null + }, + { + "id": "5486", + "label": "international charter", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3467" + ], + "geo_area_code": null + }, + { + "id": "5487", + "label": "surgeon", + "alt_labels": [], + "related_ids": [ + "5970" + ], + "broader_ids": [ + "2789" + ], + "geo_area_code": null + }, + { + "id": "5488", + "label": "cemetery", + "alt_labels": [], + "related_ids": [ + "5291" + ], + "broader_ids": [ + "847" + ], + "geo_area_code": null + }, + { + "id": "5489", + "label": "aggravating circumstances", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3513" + ], + "geo_area_code": null + }, + { + "id": "549", + "label": "insurance law", + "alt_labels": [], + "related_ids": [ + "524" + ], + "broader_ids": [ + "3151" + ], + "geo_area_code": null + }, + { + "id": "5490", + "label": "mitigating circumstances", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3513" + ], + "geo_area_code": null + }, + { + "id": "5491", + "label": "European citizenship", + "alt_labels": [ + "Union citizenship", + "citizenship of the Union" + ], + "related_ids": [ + "2363", + "2835", + "3526", + "3906", + "4004", + "548", + "717" + ], + "broader_ids": [ + "5629" + ], + "geo_area_code": null + }, + { + "id": "5492", + "label": "unfair terms of contract", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5493" + ], + "geo_area_code": null + }, + { + "id": "5493", + "label": "contract terms", + "alt_labels": [ + "terms of contract" + ], + "related_ids": [], + "broader_ids": [ + "164" + ], + "geo_area_code": null + }, + { + "id": "5494", + "label": "opt-out clause", + "alt_labels": [ + "opting-out clause" + ], + "related_ids": [], + "broader_ids": [ + "4063" + ], + "geo_area_code": null + }, + { + "id": "5495", + "label": "Wassenaar arrangement", + "alt_labels": [ + "COCOM", + "Coordinating Committee for Multilateral Export Controls", + "Wassenaar Arrangement on Export Controls for Conventional Arms and Dual-Use Goods and Technologies" + ], + "related_ids": [ + "2567", + "3223", + "3636", + "5461", + "5542", + "5928" + ], + "broader_ids": [ + "2188" + ], + "geo_area_code": null + }, + { + "id": "5496", + "label": "civil code", + "alt_labels": [], + "related_ids": [ + "523" + ], + "broader_ids": [ + "6023" + ], + "geo_area_code": null + }, + { + "id": "5497", + "label": "penal code", + "alt_labels": [], + "related_ids": [ + "573" + ], + "broader_ids": [ + "6023" + ], + "geo_area_code": null + }, + { + "id": "5498", + "label": "codification of EU law", + "alt_labels": [ + "codification of Community law", + "codification of European Union law" + ], + "related_ids": [], + "broader_ids": [ + "525" + ], + "geo_area_code": null + }, + { + "id": "5499", + "label": "economic and social cohesion", + "alt_labels": [ + "cohesion policy", + "economic cohesion", + "social cohesion" + ], + "related_ids": [ + "2516", + "3052", + "462", + "5138", + "5643", + "c_6f9a80e0" + ], + "broader_ids": [ + "5442" + ], + "geo_area_code": null + }, + { + "id": "55", + "label": "financial accounting", + "alt_labels": [ + "commercial accounting" + ], + "related_ids": [], + "broader_ids": [ + "54" + ], + "geo_area_code": null + }, + { + "id": "550", + "label": "patent law", + "alt_labels": [], + "related_ids": [ + "4010", + "524" + ], + "broader_ids": [ + "5042" + ], + "geo_area_code": null + }, + { + "id": "5500", + "label": "hairdressing and beauty care", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1384" + ], + "geo_area_code": null + }, + { + "id": "5501", + "label": "local authority", + "alt_labels": [], + "related_ids": [ + "699" + ], + "broader_ids": [ + "6034" + ], + "geo_area_code": null + }, + { + "id": "5502", + "label": "regional authority", + "alt_labels": [], + "related_ids": [ + "5607" + ], + "broader_ids": [ + "6034" + ], + "geo_area_code": null + }, + { + "id": "5503", + "label": "heating", + "alt_labels": [ + "district heating", + "domestic heating", + "heater", + "heating apparatus", + "heating installation", + "heating plant", + "industrial heat" + ], + "related_ids": [ + "1077", + "2256", + "2549", + "3773", + "5013", + "5397", + "757" + ], + "broader_ids": [ + "4414" + ], + "geo_area_code": null + }, + { + "id": "5504", + "label": "EEA Joint Committee", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5681" + ], + "geo_area_code": null + }, + { + "id": "5505", + "label": "EEA Joint Consultative Committee", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5681" + ], + "geo_area_code": null + }, + { + "id": "5506", + "label": "management committee (EU)", + "alt_labels": [ + "EC management committee" + ], + "related_ids": [ + "5511" + ], + "broader_ids": [ + "6049" + ], + "geo_area_code": null + }, + { + "id": "5507", + "label": "regulatory committee (EU)", + "alt_labels": [ + "EC regulatory committee" + ], + "related_ids": [ + "5511" + ], + "broader_ids": [ + "6049" + ], + "geo_area_code": null + }, + { + "id": "5508", + "label": "European Committee of the Regions", + "alt_labels": [ + "CoR", + "Committee of the Regions", + "Committee of the Regions of the European Union" + ], + "related_ids": [ + "6782", + "8489" + ], + "broader_ids": [ + "2163" + ], + "geo_area_code": null + }, + { + "id": "5509", + "label": "joint committee (EU)", + "alt_labels": [ + "EC joint committee" + ], + "related_ids": [], + "broader_ids": [ + "6049" + ], + "geo_area_code": null + }, + { + "id": "551", + "label": "law of states", + "alt_labels": [ + "law of nations" + ], + "related_ids": [], + "broader_ids": [ + "567" + ], + "geo_area_code": null + }, + { + "id": "5510", + "label": "EEA joint parliamentary committee", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5681" + ], + "geo_area_code": null + }, + { + "id": "5511", + "label": "comitology", + "alt_labels": [ + "committee procedures" + ], + "related_ids": [ + "2577", + "5506", + "5507", + "6050" + ], + "broader_ids": [ + "5606" + ], + "geo_area_code": null + }, + { + "id": "5512", + "label": "trade in organs", + "alt_labels": [ + "trafficking in organs" + ], + "related_ids": [ + "3169", + "3307", + "5292", + "5293", + "5608" + ], + "broader_ids": [ + "5169" + ], + "geo_area_code": null + }, + { + "id": "5513", + "label": "art trade", + "alt_labels": [ + "exportation of works of art", + "sale of objects belonging to the national heritage", + "trafficking in works of art" + ], + "related_ids": [ + "3169", + "5542" + ], + "broader_ids": [ + "2278" + ], + "geo_area_code": null + }, + { + "id": "5514", + "label": "Flemish Community", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5517" + ], + "geo_area_code": null + }, + { + "id": "5515", + "label": "French-speaking Community", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5517" + ], + "geo_area_code": null + }, + { + "id": "5516", + "label": "German-speaking Community", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5517" + ], + "geo_area_code": null + }, + { + "id": "5517", + "label": "Belgian communities", + "alt_labels": [ + "communities of Belgium" + ], + "related_ids": [], + "broader_ids": [ + "4840" + ], + "geo_area_code": null + }, + { + "id": "5518", + "label": "powers of the EP", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5519" + ], + "geo_area_code": null + }, + { + "id": "5519", + "label": "powers of the institutions (EU)", + "alt_labels": [ + "powers of the EC Institutions" + ], + "related_ids": [], + "broader_ids": [ + "5640" + ], + "geo_area_code": null + }, + { + "id": "552", + "label": "rights of aliens", + "alt_labels": [ + "principle of reciprocity", + "reciprocity of rights" + ], + "related_ids": [ + "1912", + "2509", + "950" + ], + "broader_ids": [ + "566" + ], + "geo_area_code": null + }, + { + "id": "5520", + "label": "computer assisted design", + "alt_labels": [ + "CAD", + "computer aided design" + ], + "related_ids": [ + "3663", + "71" + ], + "broader_ids": [ + "3026" + ], + "geo_area_code": null + }, + { + "id": "5521", + "label": "employers' confederation", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2279" + ], + "geo_area_code": null + }, + { + "id": "5522", + "label": "trade union confederation", + "alt_labels": [], + "related_ids": [ + "5370", + "8404" + ], + "broader_ids": [ + "3575" + ], + "geo_area_code": null + }, + { + "id": "5523", + "label": "European conference", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5525" + ], + "geo_area_code": null + }, + { + "id": "5524", + "label": "intergovernmental conference (EU)", + "alt_labels": [ + "EC Intergovernmental Conference", + "IGC", + "Intergovernmental Conference" + ], + "related_ids": [], + "broader_ids": [ + "5606" + ], + "geo_area_code": null + }, + { + "id": "5525", + "label": "international conference", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3650" + ], + "geo_area_code": null + }, + { + "id": "5526", + "label": "International Labour Conference", + "alt_labels": [ + "ILC" + ], + "related_ids": [ + "4543" + ], + "broader_ids": [ + "2130" + ], + "geo_area_code": null + }, + { + "id": "5527", + "label": "tripartite conference", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2046" + ], + "geo_area_code": null + }, + { + "id": "5528", + "label": "ethnic conflict", + "alt_labels": [ + "inter-ethnic conflict", + "tribal war" + ], + "related_ids": [ + "1202" + ], + "broader_ids": [ + "1211" + ], + "geo_area_code": null + }, + { + "id": "5529", + "label": "leave for political activities", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5105" + ], + "geo_area_code": null + }, + { + "id": "553", + "label": "rights of minorities", + "alt_labels": [], + "related_ids": [ + "435136", + "6219" + ], + "broader_ids": [ + "2834" + ], + "geo_area_code": null + }, + { + "id": "5530", + "label": "Gulf Cooperation Council", + "alt_labels": [ + "AGCC", + "Arab Gulf Cooperation Council", + "Cooperation Council for the Arab States of the Gulf", + "GCC" + ], + "related_ids": [ + "5776" + ], + "broader_ids": [ + "2171" + ], + "geo_area_code": null + }, + { + "id": "5531", + "label": "EEA Council", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5681" + ], + "geo_area_code": null + }, + { + "id": "5532", + "label": "consultancy", + "alt_labels": [ + "advice", + "expertise" + ], + "related_ids": [], + "broader_ids": [ + "1384" + ], + "geo_area_code": null + }, + { + "id": "5533", + "label": "deposit on a polluting product", + "alt_labels": [], + "related_ids": [ + "2521", + "2746", + "2947" + ], + "broader_ids": [ + "5682" + ], + "geo_area_code": null + }, + { + "id": "5534", + "label": "consolidation of EU law", + "alt_labels": [ + "consolidation of Community law", + "consolidation of European Union law" + ], + "related_ids": [], + "broader_ids": [ + "525" + ], + "geo_area_code": null + }, + { + "id": "5535", + "label": "consulate", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3367" + ], + "geo_area_code": null + }, + { + "id": "5536", + "label": "administrative contract", + "alt_labels": [], + "related_ids": [ + "164", + "1810" + ], + "broader_ids": [ + "517" + ], + "geo_area_code": null + }, + { + "id": "5537", + "label": "financial compensation of an agreement", + "alt_labels": [], + "related_ids": [ + "2556" + ], + "broader_ids": [ + "3461" + ], + "geo_area_code": null + }, + { + "id": "5538", + "label": "net contributor", + "alt_labels": [], + "related_ids": [ + "5856" + ], + "broader_ids": [ + "3259" + ], + "geo_area_code": null + }, + { + "id": "5539", + "label": "GNP contribution", + "alt_labels": [ + "fourth resource" + ], + "related_ids": [], + "broader_ids": [ + "3560" + ], + "geo_area_code": null + }, + { + "id": "554", + "label": "company law", + "alt_labels": [], + "related_ids": [ + "524", + "539", + "828" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "5540", + "label": "border control", + "alt_labels": [ + "frontier control" + ], + "related_ids": [ + "1114" + ], + "broader_ids": [ + "3055" + ], + "geo_area_code": null + }, + { + "id": "5541", + "label": "control of State aid", + "alt_labels": [ + "notification of State aid" + ], + "related_ids": [ + "5790", + "889" + ], + "broader_ids": [ + "539" + ], + "geo_area_code": null + }, + { + "id": "5542", + "label": "export monitoring", + "alt_labels": [ + "monitoring of exports" + ], + "related_ids": [ + "5461", + "5495", + "5513", + "5753", + "7" + ], + "broader_ids": [ + "2487" + ], + "geo_area_code": null + }, + { + "id": "5543", + "label": "Intergovernmental Convention (EU)", + "alt_labels": [ + "EC Intergovernmental Convention" + ], + "related_ids": [], + "broader_ids": [ + "3234" + ], + "geo_area_code": null + }, + { + "id": "5545", + "label": "customs cooperation", + "alt_labels": [], + "related_ids": [ + "3156", + "4600", + "502", + "5552" + ], + "broader_ids": [ + "3489" + ], + "geo_area_code": null + }, + { + "id": "5546", + "label": "environmental cooperation", + "alt_labels": [], + "related_ids": [ + "2825" + ], + "broader_ids": [ + "3489" + ], + "geo_area_code": null + }, + { + "id": "5547", + "label": "intergovernmental cooperation (EU)", + "alt_labels": [ + "intergovernmental approach", + "intergovernmental method" + ], + "related_ids": [ + "210", + "8473" + ], + "broader_ids": [ + "4060" + ], + "geo_area_code": null + }, + { + "id": "5548", + "label": "interinstitutional cooperation (EU)", + "alt_labels": [ + "EC interinstitutional cooperation" + ], + "related_ids": [ + "214" + ], + "broader_ids": [ + "5854" + ], + "geo_area_code": null + }, + { + "id": "5549", + "label": "inter-parliamentary cooperation", + "alt_labels": [], + "related_ids": [ + "4604" + ], + "broader_ids": [ + "3232" + ], + "geo_area_code": null + }, + { + "id": "555", + "label": "transport law", + "alt_labels": [], + "related_ids": [ + "518", + "569" + ], + "broader_ids": [ + "2494" + ], + "geo_area_code": null + }, + { + "id": "5550", + "label": "judicial cooperation in criminal matters in the EU", + "alt_labels": [ + "European Judicial Network in criminal matters", + "judicial cooperation in criminal matters", + "mutual assistance in criminal matters" + ], + "related_ids": [ + "217", + "5415", + "c_adf49204" + ], + "broader_ids": [ + "6222" + ], + "geo_area_code": null + }, + { + "id": "5551", + "label": "police cooperation", + "alt_labels": [], + "related_ids": [ + "2440", + "5552", + "5688" + ], + "broader_ids": [ + "3489" + ], + "geo_area_code": null + }, + { + "id": "5552", + "label": "EU police cooperation", + "alt_labels": [ + "EU police and customs cooperation" + ], + "related_ids": [ + "2440", + "5545", + "5551", + "6626" + ], + "broader_ids": [ + "6222" + ], + "geo_area_code": null + }, + { + "id": "5553", + "label": "housing cooperative", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1690" + ], + "geo_area_code": null + }, + { + "id": "5554", + "label": "coordination of financing", + "alt_labels": [ + "coordination of funds" + ], + "related_ids": [ + "1014", + "889" + ], + "broader_ids": [ + "1005" + ], + "geo_area_code": null + }, + { + "id": "5555", + "label": "coordination of EMU policies", + "alt_labels": [], + "related_ids": [ + "202", + "2448", + "2497", + "2510", + "c_777eba81" + ], + "broader_ids": [ + "4602" + ], + "geo_area_code": null + }, + { + "id": "5556", + "label": "Horn of Africa", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "357" + ], + "geo_area_code": null + }, + { + "id": "5557", + "label": "Eurocorps", + "alt_labels": [ + "European Corps", + "European army corps" + ], + "related_ids": [ + "218", + "7412" + ], + "broader_ids": [ + "2187" + ], + "geo_area_code": null + }, + { + "id": "5558", + "label": "COSAC", + "alt_labels": [ + "Conference of Community and European Affairs Committees of Parliaments of the European Union", + "Conference of European Affairs Committees", + "Conference of Parliamentary Committees for Union Affairs of Parliaments of the European Union" + ], + "related_ids": [], + "broader_ids": [ + "5549" + ], + "geo_area_code": null + }, + { + "id": "5559", + "label": "claim", + "alt_labels": [ + "amount receivable", + "creditor" + ], + "related_ids": [], + "broader_ids": [ + "5598" + ], + "geo_area_code": null + }, + { + "id": "556", + "label": "housing law", + "alt_labels": [ + "right of occupancy" + ], + "related_ids": [ + "2836" + ], + "broader_ids": [ + "1690" + ], + "geo_area_code": null + }, + { + "id": "5560", + "label": "organised crime", + "alt_labels": [ + "international crime", + "organized crime" + ], + "related_ids": [ + "5465", + "5933", + "8455" + ], + "broader_ids": [ + "3348" + ], + "geo_area_code": null + }, + { + "id": "5561", + "label": "eligibility criteria", + "alt_labels": [ + "criteria for Community financing" + ], + "related_ids": [ + "5847", + "80" + ], + "broader_ids": [ + "5844" + ], + "geo_area_code": null + }, + { + "id": "5562", + "label": "convergence criteria", + "alt_labels": [], + "related_ids": [ + "1816", + "4248", + "5729", + "843" + ], + "broader_ids": [ + "202" + ], + "geo_area_code": null + }, + { + "id": "5563", + "label": "Croatia", + "alt_labels": [ + "Republic of Croatia" + ], + "related_ids": [ + "c_6acbfd25" + ], + "broader_ids": [ + "122", + "5283", + "5781", + "914" + ], + "geo_area_code": "HRV" + }, + { + "id": "5564", + "label": "overlapping of income", + "alt_labels": [], + "related_ids": [ + "331", + "506" + ], + "broader_ids": [ + "3659" + ], + "geo_area_code": null + }, + { + "id": "5565", + "label": "cyclone", + "alt_labels": [ + "hurricane", + "tornado", + "typhoon" + ], + "related_ids": [], + "broader_ids": [ + "413" + ], + "geo_area_code": null + }, + { + "id": "5566", + "label": "tax return", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1021" + ], + "geo_area_code": null + }, + { + "id": "5568", + "label": "public statement", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "452" + ], + "geo_area_code": null + }, + { + "id": "5569", + "label": "publishing deadline", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "667" + ], + "geo_area_code": null + }, + { + "id": "557", + "label": "labour law", + "alt_labels": [ + "employment law", + "labour legislation", + "workers' rights" + ], + "related_ids": [ + "1046", + "2700", + "3572", + "5139", + "5484", + "6081", + "6106", + "6922" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "5570", + "label": "insider trading", + "alt_labels": [ + "insider buying", + "insider dealing" + ], + "related_ids": [ + "2150" + ], + "broader_ids": [ + "c_b499ede2" + ], + "geo_area_code": null + }, + { + "id": "5571", + "label": "environmental offence", + "alt_labels": [ + "crime against the environment", + "environmental crime" + ], + "related_ids": [ + "412", + "6401", + "c_bb1a60eb" + ], + "broader_ids": [ + "1432" + ], + "geo_area_code": null + }, + { + "id": "5572", + "label": "sexual offence", + "alt_labels": [ + "sexual crime" + ], + "related_ids": [ + "6553" + ], + "broader_ids": [ + "3943" + ], + "geo_area_code": null + }, + { + "id": "5573", + "label": "product designation", + "alt_labels": [ + "product description", + "product identification", + "product naming", + "substance identification" + ], + "related_ids": [ + "1562", + "1821", + "3173", + "893" + ], + "broader_ids": [ + "2871" + ], + "geo_area_code": null + }, + { + "id": "5574", + "label": "withdrawal from an agreement", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3461" + ], + "geo_area_code": null + }, + { + "id": "5575", + "label": "agricultural expenditure", + "alt_labels": [ + "expenditure on agriculture", + "farm spending" + ], + "related_ids": [], + "broader_ids": [ + "5579" + ], + "geo_area_code": null + }, + { + "id": "5576", + "label": "EU expenditure", + "alt_labels": [ + "Community expenditure", + "EC budgetary expenditure", + "European Union expenditure" + ], + "related_ids": [ + "392", + "394", + "5138", + "5787" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "5577", + "label": "administrative expenditure (EU)", + "alt_labels": [ + "EC administrative expenditure", + "EC operating budget", + "administrative budget of the Institutions", + "budget of the Community institutions" + ], + "related_ids": [ + "397" + ], + "broader_ids": [ + "5576" + ], + "geo_area_code": null + }, + { + "id": "5578", + "label": "research expenditure (EU)", + "alt_labels": [ + "Community research budget", + "EC research expenditure" + ], + "related_ids": [ + "2795", + "3652", + "3656", + "c_7bc27da2" + ], + "broader_ids": [ + "5579" + ], + "geo_area_code": null + }, + { + "id": "5579", + "label": "operational expenditure (EU)", + "alt_labels": [ + "EC operational expenditure", + "intervention credit" + ], + "related_ids": [ + "402" + ], + "broader_ids": [ + "5576" + ], + "geo_area_code": null + }, + { + "id": "558", + "label": "electoral law", + "alt_labels": [ + "national electoral law" + ], + "related_ids": [ + "548", + "717" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "5580", + "label": "structural expenditure", + "alt_labels": [ + "structural funds expenditure" + ], + "related_ids": [ + "5138" + ], + "broader_ids": [ + "5579" + ], + "geo_area_code": null + }, + { + "id": "5581", + "label": "derogation from EU law", + "alt_labels": [ + "derogation from Community law", + "derogation from European Union law" + ], + "related_ids": [], + "broader_ids": [ + "2247" + ], + "geo_area_code": null + }, + { + "id": "5582", + "label": "debt", + "alt_labels": [ + "debtor" + ], + "related_ids": [ + "423", + "424", + "742", + "8432" + ], + "broader_ids": [ + "5598" + ], + "geo_area_code": null + }, + { + "id": "5583", + "label": "customs debt", + "alt_labels": [ + "export customs debt", + "import customs debt" + ], + "related_ids": [], + "broader_ids": [ + "3156" + ], + "geo_area_code": null + }, + { + "id": "5584", + "label": "second stage of EMU", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5474" + ], + "geo_area_code": null + }, + { + "id": "5585", + "label": "sustainable development", + "alt_labels": [ + "bio-economy", + "bioeconomy", + "eco-development" + ], + "related_ids": [ + "2470", + "3638", + "434909", + "4419", + "6083", + "6308", + "6310", + "6850", + "7942", + "8472", + "c_1138d9d2", + "c_163e1e96", + "c_537931f1", + "c_749f2ce9", + "c_838aa925", + "c_8702d5f7", + "c_8de0648a", + "c_c9724a74", + "c_d59e7560" + ], + "broader_ids": [ + "2465" + ], + "geo_area_code": null + }, + { + "id": "5586", + "label": "duties of civil servants", + "alt_labels": [ + "duty to obey", + "moral obligations", + "obligations of civil servants" + ], + "related_ids": [], + "broader_ids": [ + "4271" + ], + "geo_area_code": null + }, + { + "id": "5587", + "label": "social dialogue", + "alt_labels": [], + "related_ids": [ + "6552" + ], + "broader_ids": [ + "3209" + ], + "geo_area_code": null + }, + { + "id": "5588", + "label": "social dialogue (EU)", + "alt_labels": [ + "Community social dialogue" + ], + "related_ids": [], + "broader_ids": [ + "5587" + ], + "geo_area_code": null + }, + { + "id": "5589", + "label": "dissemination of EU information", + "alt_labels": [ + "dissemination of Community information", + "dissemination of European Union information" + ], + "related_ids": [ + "441" + ], + "broader_ids": [ + "5937" + ], + "geo_area_code": null + }, + { + "id": "559", + "label": "part-time farming", + "alt_labels": [ + "part-time agriculture" + ], + "related_ids": [ + "4548" + ], + "broader_ids": [ + "4358" + ], + "geo_area_code": null + }, + { + "id": "5590", + "label": "budgetary discipline (EU)", + "alt_labels": [ + "EC budgetary discipline" + ], + "related_ids": [ + "5408", + "c_777eba81" + ], + "broader_ids": [ + "5620" + ], + "geo_area_code": null + }, + { + "id": "5591", + "label": "military discipline", + "alt_labels": [ + "desertion" + ], + "related_ids": [ + "419" + ], + "broader_ids": [ + "2628" + ], + "geo_area_code": null + }, + { + "id": "5592", + "label": "discrimination on the basis of nationality", + "alt_labels": [ + "discrimination against foreigners" + ], + "related_ids": [ + "1634", + "4003" + ], + "broader_ids": [ + "3908" + ], + "geo_area_code": null + }, + { + "id": "5593", + "label": "anti-pollution device", + "alt_labels": [ + "catalytic converter" + ], + "related_ids": [ + "1140" + ], + "broader_ids": [ + "2611" + ], + "geo_area_code": null + }, + { + "id": "5594", + "label": "medical data", + "alt_labels": [ + "medical file", + "medical records" + ], + "related_ids": [ + "5595" + ], + "broader_ids": [ + "1852" + ], + "geo_area_code": null + }, + { + "id": "5595", + "label": "personal data", + "alt_labels": [], + "related_ids": [ + "2828", + "5181", + "5594", + "7410", + "7927" + ], + "broader_ids": [ + "4488" + ], + "geo_area_code": null + }, + { + "id": "5596", + "label": "right of action", + "alt_labels": [ + "right to bring a case", + "right to bring an action", + "right to bring proceedings" + ], + "related_ids": [ + "5686" + ], + "broader_ids": [ + "5400" + ], + "geo_area_code": null + }, + { + "id": "5597", + "label": "right of asylum", + "alt_labels": [], + "related_ids": [ + "447958", + "c_b0c14f45" + ], + "broader_ids": [ + "2867" + ], + "geo_area_code": null + }, + { + "id": "5598", + "label": "law of obligations", + "alt_labels": [], + "related_ids": [ + "2099", + "524", + "c_e5dbcb63" + ], + "broader_ids": [ + "523" + ], + "geo_area_code": null + }, + { + "id": "5599", + "label": "regional law", + "alt_labels": [ + "regional legislation" + ], + "related_ids": [], + "broader_ids": [ + "1589" + ], + "geo_area_code": null + }, + { + "id": "56", + "label": "national accounts", + "alt_labels": [ + "national account" + ], + "related_ids": [ + "1800", + "3193", + "4369", + "4633", + "54", + "655" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "560", + "label": "financial legislation", + "alt_labels": [ + "transaction regulations" + ], + "related_ids": [ + "3148", + "521", + "c_b499ede2" + ], + "broader_ids": [ + "1630" + ], + "geo_area_code": null + }, + { + "id": "5600", + "label": "rights of civil servants", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4271" + ], + "geo_area_code": null + }, + { + "id": "5601", + "label": "screen", + "alt_labels": [ + "VDU", + "video display unit", + "video monitor" + ], + "related_ids": [ + "5208" + ], + "broader_ids": [ + "3701" + ], + "geo_area_code": null + }, + { + "id": "5602", + "label": "private ECU", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "6333" + ], + "geo_area_code": null + }, + { + "id": "5603", + "label": "education of young offenders", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "784" + ], + "geo_area_code": null + }, + { + "id": "5604", + "label": "workers' stock ownership", + "alt_labels": [ + "workers' shareholding" + ], + "related_ids": [ + "2207", + "5362" + ], + "broader_ids": [ + "2266" + ], + "geo_area_code": null + }, + { + "id": "5605", + "label": "greenhouse effect", + "alt_labels": [], + "related_ids": [ + "5482", + "5650", + "6400", + "c_c9724a74" + ], + "broader_ids": [ + "2527" + ], + "geo_area_code": null + }, + { + "id": "5606", + "label": "drafting of EU law", + "alt_labels": [ + "Community legislative process", + "EU legislative procedure", + "European Union legislative procedure", + "drafting of Community law", + "drafting of European Union law" + ], + "related_ids": [ + "5640" + ], + "broader_ids": [ + "525" + ], + "geo_area_code": null + }, + { + "id": "5607", + "label": "regional election", + "alt_labels": [], + "related_ids": [ + "5120", + "5502" + ], + "broader_ids": [ + "695" + ], + "geo_area_code": null + }, + { + "id": "5608", + "label": "embryo and foetus", + "alt_labels": [], + "related_ids": [ + "435098", + "5169", + "5512" + ], + "broader_ids": [ + "4921" + ], + "geo_area_code": null + }, + { + "id": "5609", + "label": "use of languages", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5313" + ], + "geo_area_code": null + }, + { + "id": "561", + "label": "tax law", + "alt_labels": [ + "tax legislation", + "tax regulation" + ], + "related_ids": [ + "3951" + ], + "broader_ids": [ + "2504" + ], + "geo_area_code": null + }, + { + "id": "5610", + "label": "military training", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2628" + ], + "geo_area_code": null + }, + { + "id": "5611", + "label": "institutional balance (EU)", + "alt_labels": [ + "EC Institutional balance" + ], + "related_ids": [ + "5855" + ], + "broader_ids": [ + "5519" + ], + "geo_area_code": null + }, + { + "id": "5612", + "label": "protective equipment", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4039" + ], + "geo_area_code": null + }, + { + "id": "5613", + "label": "computer equipment", + "alt_labels": [ + "computing equipment", + "hardware" + ], + "related_ids": [ + "5071" + ], + "broader_ids": [ + "1405" + ], + "geo_area_code": null + }, + { + "id": "5614", + "label": "pressure equipment", + "alt_labels": [ + "high-pressure equipment", + "pressure vessel", + "pressurised equipment" + ], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "5615", + "label": "thermal equipment", + "alt_labels": [], + "related_ids": [ + "757", + "850" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "5616", + "label": "miscarriage of justice", + "alt_labels": [], + "related_ids": [ + "8458" + ], + "broader_ids": [ + "1538" + ], + "geo_area_code": null + }, + { + "id": "5617", + "label": "Eritrea", + "alt_labels": [ + "State of Eritrea" + ], + "related_ids": [], + "broader_ids": [ + "5083", + "5556" + ], + "geo_area_code": "ERI" + }, + { + "id": "5618", + "label": "European Economic Area", + "alt_labels": [ + "EEA" + ], + "related_ids": [ + "176", + "2275" + ], + "broader_ids": [ + "4048" + ], + "geo_area_code": null + }, + { + "id": "5619", + "label": "Estonia", + "alt_labels": [ + "Republic of Estonia" + ], + "related_ids": [ + "7855" + ], + "broader_ids": [ + "122", + "2106", + "2200", + "5283", + "5774", + "5781", + "c_b2c019c8" + ], + "geo_area_code": "EST" + }, + { + "id": "562", + "label": "international tax law", + "alt_labels": [], + "related_ids": [ + "565" + ], + "broader_ids": [ + "561" + ], + "geo_area_code": null + }, + { + "id": "5620", + "label": "drawing up of the EU budget", + "alt_labels": [ + "drawing up of the Community budget", + "drawing up of the European Union budget", + "establishment of the Community budget" + ], + "related_ids": [ + "875" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "5621", + "label": "non-secular State", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "883" + ], + "geo_area_code": null + }, + { + "id": "5622", + "label": "rule of law", + "alt_labels": [], + "related_ids": [ + "2617", + "c_8b887373" + ], + "broader_ids": [ + "883" + ], + "geo_area_code": null + }, + { + "id": "5623", + "label": "federal State", + "alt_labels": [], + "related_ids": [ + "3042" + ], + "broader_ids": [ + "883" + ], + "geo_area_code": null + }, + { + "id": "5624", + "label": "Islamic State", + "alt_labels": [], + "related_ids": [ + "6735" + ], + "broader_ids": [ + "5621" + ], + "geo_area_code": null + }, + { + "id": "5625", + "label": "secular State", + "alt_labels": [], + "related_ids": [ + "6862" + ], + "broader_ids": [ + "883" + ], + "geo_area_code": null + }, + { + "id": "5626", + "label": "unitarian State", + "alt_labels": [ + "centralised State" + ], + "related_ids": [], + "broader_ids": [ + "883" + ], + "geo_area_code": null + }, + { + "id": "5627", + "label": "comparative study", + "alt_labels": [], + "related_ids": [ + "6269" + ], + "broader_ids": [ + "486" + ], + "geo_area_code": null + }, + { + "id": "5628", + "label": "case study", + "alt_labels": [], + "related_ids": [ + "1894" + ], + "broader_ids": [ + "486" + ], + "geo_area_code": null + }, + { + "id": "5629", + "label": "citizens' Europe", + "alt_labels": [ + "social dimension of the internal market" + ], + "related_ids": [ + "1633", + "1634", + "3346" + ], + "broader_ids": [ + "5442" + ], + "geo_area_code": null + }, + { + "id": "563", + "label": "forestry legislation", + "alt_labels": [ + "forestry law", + "forestry regulations" + ], + "related_ids": [ + "579" + ], + "broader_ids": [ + "2505" + ], + "geo_area_code": null + }, + { + "id": "5630", + "label": "Europol", + "alt_labels": [ + "European Police Office", + "European Union Agency for Law Enforcement Cooperation" + ], + "related_ids": [ + "2440", + "5688" + ], + "broader_ids": [ + "5552" + ], + "geo_area_code": null + }, + { + "id": "5631", + "label": "carrying out of sentence", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3878" + ], + "geo_area_code": null + }, + { + "id": "5632", + "label": "professional experience", + "alt_labels": [], + "related_ids": [ + "2868" + ], + "broader_ids": [ + "1802" + ], + "geo_area_code": null + }, + { + "id": "5633", + "label": "expert's report ordered by a court", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3966" + ], + "geo_area_code": null + }, + { + "id": "5634", + "label": "extremism", + "alt_labels": [ + "fanaticism" + ], + "related_ids": [ + "6560" + ], + "broader_ids": [ + "2690" + ], + "geo_area_code": null + }, + { + "id": "5635", + "label": "computer assisted manufacturing", + "alt_labels": [ + "computer aided manufacturing" + ], + "related_ids": [], + "broader_ids": [ + "1429" + ], + "geo_area_code": null + }, + { + "id": "5636", + "label": "facilities for the disabled", + "alt_labels": [ + "accessibility", + "adaptation of buildings", + "adapted vehicle", + "braille", + "devices for the handicapped", + "facilities for the handicapped", + "talking book" + ], + "related_ids": [ + "2333", + "c_b8e8e06e" + ], + "broader_ids": [ + "1231" + ], + "geo_area_code": null + }, + { + "id": "5637", + "label": "Flevoland", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2288" + ], + "geo_area_code": null + }, + { + "id": "5638", + "label": "international civil service", + "alt_labels": [], + "related_ids": [ + "1046", + "5130" + ], + "broader_ids": [ + "2189" + ], + "geo_area_code": null + }, + { + "id": "5639", + "label": "international civil servant", + "alt_labels": [], + "related_ids": [ + "1047" + ], + "broader_ids": [ + "5638" + ], + "geo_area_code": null + }, + { + "id": "564", + "label": "international human rights law", + "alt_labels": [ + "Geneva Convention" + ], + "related_ids": [ + "4697" + ], + "broader_ids": [ + "584" + ], + "geo_area_code": null + }, + { + "id": "5640", + "label": "operation of the Institutions", + "alt_labels": [], + "related_ids": [ + "4179", + "5606" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "5642", + "label": "European Training Foundation", + "alt_labels": [ + "ETF" + ], + "related_ids": [ + "1074" + ], + "broader_ids": [ + "5769" + ], + "geo_area_code": null + }, + { + "id": "5643", + "label": "Cohesion Fund", + "alt_labels": [ + "Cohesion Fund aid", + "cohesion financial instrument" + ], + "related_ids": [ + "5499" + ], + "broader_ids": [ + "1052" + ], + "geo_area_code": null + }, + { + "id": "5644", + "label": "Council of Europe fund", + "alt_labels": [ + "CEB", + "Council of Europe Development Bank", + "Council of Europe Resettlement Fund", + "EYF", + "European Youth Foundation", + "SFYM", + "Solidarity Fund for Youth Mobility" + ], + "related_ids": [], + "broader_ids": [ + "121" + ], + "geo_area_code": null + }, + { + "id": "5645", + "label": "European Investment Fund", + "alt_labels": [ + "EIF" + ], + "related_ids": [ + "5675" + ], + "broader_ids": [ + "2163" + ], + "geo_area_code": null + }, + { + "id": "5646", + "label": "office supplies", + "alt_labels": [], + "related_ids": [ + "1720" + ], + "broader_ids": [ + "3895" + ], + "geo_area_code": null + }, + { + "id": "5647", + "label": "tax-free allowance", + "alt_labels": [], + "related_ids": [ + "1091" + ], + "broader_ids": [ + "365" + ], + "geo_area_code": null + }, + { + "id": "5648", + "label": "fraud against the EU", + "alt_labels": [ + "fraud against the European Union" + ], + "related_ids": [ + "1092", + "438855", + "6256" + ], + "broader_ids": [ + "5953" + ], + "geo_area_code": null + }, + { + "id": "5649", + "label": "external border of the EU", + "alt_labels": [ + "external borders of the European Union", + "management of the EU's external borders", + "management of the European Union's external borders", + "management of the external borders of the European Union" + ], + "related_ids": [ + "6222", + "8439" + ], + "broader_ids": [ + "1114" + ], + "geo_area_code": null + }, + { + "id": "565", + "label": "international law", + "alt_labels": [], + "related_ids": [ + "3461", + "3467", + "3482", + "3986", + "5114", + "562" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "5650", + "label": "greenhouse gas", + "alt_labels": [ + "carbon dioxide" + ], + "related_ids": [ + "5605", + "6414", + "c_c9724a74" + ], + "broader_ids": [ + "2522" + ], + "geo_area_code": null + }, + { + "id": "5651", + "label": "genetics", + "alt_labels": [ + "gene pool", + "genetic resource", + "genetic stock", + "genotype", + "heredity" + ], + "related_ids": [ + "4111", + "c_ff4dd793" + ], + "broader_ids": [ + "4921" + ], + "geo_area_code": null + }, + { + "id": "5652", + "label": "Georgia", + "alt_labels": [], + "related_ids": [ + "c_6547ccb7" + ], + "broader_ids": [ + "122", + "5775", + "7208" + ], + "geo_area_code": "GEO" + }, + { + "id": "5653", + "label": "Roma", + "alt_labels": [ + "Ashkali", + "Boyash", + "Gypsies", + "Kal\u00e9", + "Manouches", + "Sinti", + "Travellers" + ], + "related_ids": [ + "2065" + ], + "broader_ids": [ + "1202" + ], + "geo_area_code": null + }, + { + "id": "5654", + "label": "hunger strike", + "alt_labels": [], + "related_ids": [ + "1186" + ], + "broader_ids": [ + "419" + ], + "geo_area_code": null + }, + { + "id": "5655", + "label": "Visegrad countries", + "alt_labels": [ + "V4", + "Visegrad Four" + ], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "5656", + "label": "Group of Twenty-Four", + "alt_labels": [ + "G-24", + "G24", + "Group of 24", + "Intergovernmental Group of 24", + "Intergovernmental Group of Twenty-Four on International Monetary Affairs", + "Intergovernmental Group of Twenty-four on International Monetary Affairs and Development" + ], + "related_ids": [ + "1016" + ], + "broader_ids": [ + "2188" + ], + "geo_area_code": null + }, + { + "id": "5657", + "label": "association of local authorities", + "alt_labels": [ + "cooperation between communes", + "cooperation between local authorities", + "inter-communal cooperation" + ], + "related_ids": [], + "broader_ids": [ + "6034" + ], + "geo_area_code": null + }, + { + "id": "5658", + "label": "European Economic Interest Grouping", + "alt_labels": [ + "EEIG" + ], + "related_ids": [], + "broader_ids": [ + "1200" + ], + "geo_area_code": null + }, + { + "id": "5659", + "label": "sexual harassment", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5572" + ], + "geo_area_code": null + }, + { + "id": "566", + "label": "private international law", + "alt_labels": [ + "applicable law", + "conflict of laws", + "international civil law" + ], + "related_ids": [ + "4007", + "576", + "6625" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "5660", + "label": "combat helicopter", + "alt_labels": [], + "related_ids": [ + "1238" + ], + "broader_ids": [ + "4417" + ], + "geo_area_code": null + }, + { + "id": "5661", + "label": "ancient history", + "alt_labels": [ + "ancient era" + ], + "related_ids": [], + "broader_ids": [ + "1245" + ], + "geo_area_code": null + }, + { + "id": "5662", + "label": "contemporary history", + "alt_labels": [ + "contemporary era" + ], + "related_ids": [], + "broader_ids": [ + "1245" + ], + "geo_area_code": null + }, + { + "id": "5663", + "label": "medieval history", + "alt_labels": [ + "Middle Ages" + ], + "related_ids": [ + "c_e9ccc5a7" + ], + "broader_ids": [ + "1245" + ], + "geo_area_code": null + }, + { + "id": "5664", + "label": "modern history", + "alt_labels": [ + "modern era" + ], + "related_ids": [], + "broader_ids": [ + "1245" + ], + "geo_area_code": null + }, + { + "id": "5665", + "label": "historical account", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "486" + ], + "geo_area_code": null + }, + { + "id": "5666", + "label": "trading hours", + "alt_labels": [ + "opening hours", + "shop hours" + ], + "related_ids": [ + "474" + ], + "broader_ids": [ + "3123" + ], + "geo_area_code": null + }, + { + "id": "5667", + "label": "cultural identity", + "alt_labels": [], + "related_ids": [ + "2834", + "3487" + ], + "broader_ids": [ + "317" + ], + "geo_area_code": null + }, + { + "id": "5669", + "label": "image", + "alt_labels": [], + "related_ids": [ + "8426" + ], + "broader_ids": [ + "2152" + ], + "geo_area_code": null + }, + { + "id": "567", + "label": "public international law", + "alt_labels": [], + "related_ids": [ + "541", + "569", + "578", + "99" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "5670", + "label": "diplomatic immunity", + "alt_labels": [ + "consular law", + "diplomatic law" + ], + "related_ids": [ + "951" + ], + "broader_ids": [ + "3367" + ], + "geo_area_code": null + }, + { + "id": "5671", + "label": "printer", + "alt_labels": [ + "laser print" + ], + "related_ids": [], + "broader_ids": [ + "3701" + ], + "geo_area_code": null + }, + { + "id": "5672", + "label": "waste incineration", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "718" + ], + "geo_area_code": null + }, + { + "id": "5673", + "label": "economic infrastructure", + "alt_labels": [], + "related_ids": [ + "1433", + "1434", + "3343", + "3377", + "4302" + ], + "broader_ids": [ + "2518" + ], + "geo_area_code": null + }, + { + "id": "5674", + "label": "EU initiative", + "alt_labels": [ + "Community initiative", + "European Union initiative", + "initiative of the European Union" + ], + "related_ids": [ + "2516" + ], + "broader_ids": [ + "5413" + ], + "geo_area_code": null + }, + { + "id": "5675", + "label": "EU growth strategy", + "alt_labels": [ + " sustainable and inclusive growth", + "EU Strategy for jobs and growth", + "EU strategy for jobs and smart", + "EU strategy for smart", + "Europe 2020 strategy", + "European growth initiative", + "growth strategy of the EU", + "growth strategy of the European Union" + ], + "related_ids": [ + "1469", + "2454", + "2467", + "2470", + "2607", + "310", + "3194", + "3656", + "5482", + "5645", + "c_749f2ce9", + "c_9a1bc51d", + "c_a9a17fe5", + "c_f05a3667" + ], + "broader_ids": [ + "c_59f9c651" + ], + "geo_area_code": null + }, + { + "id": "5676", + "label": "insect", + "alt_labels": [ + "bee", + "butterfly", + "locust" + ], + "related_ids": [ + "5225", + "5227", + "5951" + ], + "broader_ids": [ + "972" + ], + "geo_area_code": null + }, + { + "id": "5677", + "label": "launch facility", + "alt_labels": [ + "launch assembly", + "launch pad" + ], + "related_ids": [], + "broader_ids": [ + "3092" + ], + "geo_area_code": null + }, + { + "id": "5678", + "label": "plumbing equipment", + "alt_labels": [ + "bath", + "bathroom equipment", + "wash basin" + ], + "related_ids": [], + "broader_ids": [ + "4414" + ], + "geo_area_code": null + }, + { + "id": "5679", + "label": "European Institute of Public Administration", + "alt_labels": [ + "EIPA" + ], + "related_ids": [ + "1046", + "5769" + ], + "broader_ids": [ + "2187" + ], + "geo_area_code": null + }, + { + "id": "568", + "label": "organic farming", + "alt_labels": [ + "ecological farming" + ], + "related_ids": [ + "325", + "4921", + "6790", + "c_f2c7a2f7" + ], + "broader_ids": [ + "4363" + ], + "geo_area_code": null + }, + { + "id": "5681", + "label": "EEA joint institution", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5763" + ], + "geo_area_code": null + }, + { + "id": "5682", + "label": "economic instrument for the environment", + "alt_labels": [ + "economic instrument for environmental protection", + "market-based environmental policy instrument", + "market-based instrument", + "market-based instrument for environmental policymaking" + ], + "related_ids": [ + "c_46f6aaeb" + ], + "broader_ids": [ + "2470" + ], + "geo_area_code": null + }, + { + "id": "5683", + "label": "bad weather", + "alt_labels": [ + "cold wave", + "frost", + "hail", + "storm", + "thunderstorm" + ], + "related_ids": [ + "6315" + ], + "broader_ids": [ + "413" + ], + "geo_area_code": null + }, + { + "id": "5684", + "label": "systems interconnection", + "alt_labels": [ + "OSI", + "compatibility", + "computer compatibility", + "interoperability", + "open systems interconnection" + ], + "related_ids": [ + "c_b12a760a" + ], + "broader_ids": [ + "5922" + ], + "geo_area_code": null + }, + { + "id": "5685", + "label": "collective interest", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5686" + ], + "geo_area_code": null + }, + { + "id": "5686", + "label": "interest in bringing an action", + "alt_labels": [ + "interest in bringing court proceedings" + ], + "related_ids": [ + "5596" + ], + "broader_ids": [ + "2913" + ], + "geo_area_code": null + }, + { + "id": "5687", + "label": "boarding school", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "873" + ], + "geo_area_code": null + }, + { + "id": "5688", + "label": "Interpol", + "alt_labels": [ + "ICPO", + "International Criminal Police Organisation", + "International Criminal Police Organization" + ], + "related_ids": [ + "5551", + "5630" + ], + "broader_ids": [ + "2188" + ], + "geo_area_code": null + }, + { + "id": "5689", + "label": "food poisoning", + "alt_labels": [], + "related_ids": [ + "2531", + "3135" + ], + "broader_ids": [ + "1268" + ], + "geo_area_code": null + }, + { + "id": "569", + "label": "maritime law", + "alt_labels": [], + "related_ids": [ + "1623", + "542", + "555", + "567" + ], + "broader_ids": [ + "4522" + ], + "geo_area_code": null + }, + { + "id": "5690", + "label": "Jew", + "alt_labels": [], + "related_ids": [ + "1536" + ], + "broader_ids": [ + "3486" + ], + "geo_area_code": null + }, + { + "id": "5691", + "label": "courts and tribunals", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5923" + ], + "geo_area_code": null + }, + { + "id": "5692", + "label": "constitutional court", + "alt_labels": [], + "related_ids": [ + "151" + ], + "broader_ids": [ + "5923" + ], + "geo_area_code": null + }, + { + "id": "5693", + "label": "Kazakhstan", + "alt_labels": [ + "Republic of Kazakhstan" + ], + "related_ids": [], + "broader_ids": [ + "5448", + "5775" + ], + "geo_area_code": "KAZ" + }, + { + "id": "5694", + "label": "Kyrgyzstan", + "alt_labels": [ + "Kyrgyz Republic" + ], + "related_ids": [], + "broader_ids": [ + "5448", + "5775" + ], + "geo_area_code": "KGZ" + }, + { + "id": "5695", + "label": "Kosovo", + "alt_labels": [ + "Kosovo and Metohija" + ], + "related_ids": [ + "8357" + ], + "broader_ids": [ + "5781", + "914" + ], + "geo_area_code": "1A0" + }, + { + "id": "5696", + "label": "eco-label", + "alt_labels": [ + "environment-friendly label" + ], + "related_ids": [ + "5754", + "6325", + "c_163e1e96", + "c_18802d13", + "c_87617344", + "c_b46c2b62" + ], + "broader_ids": [ + "1562" + ], + "geo_area_code": null + }, + { + "id": "5697", + "label": "lake", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3146" + ], + "geo_area_code": null + }, + { + "id": "5698", + "label": "mother's milk", + "alt_labels": [], + "related_ids": [ + "1565" + ], + "broader_ids": [ + "1240" + ], + "geo_area_code": null + }, + { + "id": "5699", + "label": "launch vehicle", + "alt_labels": [ + "shuttle", + "space rocket" + ], + "related_ids": [], + "broader_ids": [ + "3093" + ], + "geo_area_code": null + }, + { + "id": "57", + "label": "tax authorities", + "alt_labels": [ + "inland revenue", + "tax inspector" + ], + "related_ids": [], + "broader_ids": [ + "1021" + ], + "geo_area_code": null + }, + { + "id": "570", + "label": "matrimonial law", + "alt_labels": [ + "marriage contract", + "matrimonial property rights" + ], + "related_ids": [ + "4184" + ], + "broader_ids": [ + "540" + ], + "geo_area_code": null + }, + { + "id": "5700", + "label": "European language", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1580" + ], + "geo_area_code": null + }, + { + "id": "5701", + "label": "minority language", + "alt_labels": [ + "disappearing language", + "endangered language", + "threatened language" + ], + "related_ids": [], + "broader_ids": [ + "1580" + ], + "geo_area_code": null + }, + { + "id": "5702", + "label": "non-European language", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1580" + ], + "geo_area_code": null + }, + { + "id": "5703", + "label": "regional language", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1580" + ], + "geo_area_code": null + }, + { + "id": "5704", + "label": "living language", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1580" + ], + "geo_area_code": null + }, + { + "id": "5705", + "label": "disc drive", + "alt_labels": [ + "CD-ROM read head" + ], + "related_ids": [ + "3872", + "4331" + ], + "broader_ids": [ + "3701" + ], + "geo_area_code": null + }, + { + "id": "5706", + "label": "Latvia", + "alt_labels": [ + "Republic of Latvia" + ], + "related_ids": [ + "7861" + ], + "broader_ids": [ + "122", + "2106", + "2200", + "5283", + "5774", + "5781" + ], + "geo_area_code": "LVA" + }, + { + "id": "5707", + "label": "liberalisation of the market", + "alt_labels": [ + "liberalization of the market" + ], + "related_ids": [ + "1616", + "410", + "8463" + ], + "broader_ids": [ + "2449" + ], + "geo_area_code": null + }, + { + "id": "5708", + "label": "freedom of the skies", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "518" + ], + "geo_area_code": null + }, + { + "id": "5709", + "label": "Lithuania", + "alt_labels": [ + "Republic of Lithuania" + ], + "related_ids": [ + "7868" + ], + "broader_ids": [ + "122", + "2106", + "2200", + "5283", + "5774", + "5781" + ], + "geo_area_code": "LTU" + }, + { + "id": "571", + "label": "national law", + "alt_labels": [ + "domestic law", + "internal law", + "legislation of the Member States", + "national legal system", + "national legislation", + "national regulations" + ], + "related_ids": [ + "2897" + ], + "broader_ids": [ + "1589" + ], + "geo_area_code": null + }, + { + "id": "5710", + "label": "hiring", + "alt_labels": [ + "letting", + "renting" + ], + "related_ids": [ + "1687", + "3097", + "982" + ], + "broader_ids": [ + "5268" + ], + "geo_area_code": null + }, + { + "id": "5711", + "label": "organic law", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1697" + ], + "geo_area_code": null + }, + { + "id": "5712", + "label": "dividing up of land", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4442" + ], + "geo_area_code": null + }, + { + "id": "5713", + "label": "North Macedonia", + "alt_labels": [ + "FYROM", + "Former Yugoslav Republic of Macedonia", + "Macedonia-Skopje", + "Republic of North Macedonia", + "The former Yugoslav Republic of Macedonia", + "ex-Yugoslav republic" + ], + "related_ids": [], + "broader_ids": [ + "122", + "4690", + "5781", + "8278", + "914" + ], + "geo_area_code": null + }, + { + "id": "5714", + "label": "congenital disease", + "alt_labels": [ + "congenital deformity", + "congenital malformation" + ], + "related_ids": [], + "broader_ids": [ + "1754" + ], + "geo_area_code": null + }, + { + "id": "5715", + "label": "nutritional disease", + "alt_labels": [ + "obesity" + ], + "related_ids": [ + "1268", + "c_348000be" + ], + "broader_ids": [ + "1754" + ], + "geo_area_code": null + }, + { + "id": "5716", + "label": "skin disease", + "alt_labels": [ + "eczema", + "mycosis" + ], + "related_ids": [], + "broader_ids": [ + "1754" + ], + "geo_area_code": null + }, + { + "id": "5717", + "label": "blood disease", + "alt_labels": [ + "haemophilia", + "leukaemia" + ], + "related_ids": [ + "1612" + ], + "broader_ids": [ + "1754" + ], + "geo_area_code": null + }, + { + "id": "5718", + "label": "gastrointestinal disease", + "alt_labels": [ + "digestive system disease" + ], + "related_ids": [], + "broader_ids": [ + "1754" + ], + "geo_area_code": null + }, + { + "id": "5719", + "label": "disease of the nervous system", + "alt_labels": [ + "Alzheimer's disease", + "CJD", + "Creutzfeldt-Jakob disease", + "TSE", + "degenerative disease of the nervous system", + "multiple sclerosis", + "neurological disease", + "neuropathy", + "transmissible spongiform encephalopathy" + ], + "related_ids": [ + "3282", + "3285", + "6112" + ], + "broader_ids": [ + "1754" + ], + "geo_area_code": null + }, + { + "id": "572", + "label": "nuclear law", + "alt_labels": [ + "atomic law" + ], + "related_ids": [ + "4042", + "4422", + "5350" + ], + "broader_ids": [ + "534" + ], + "geo_area_code": null + }, + { + "id": "5720", + "label": "endocrine disease", + "alt_labels": [], + "related_ids": [ + "c_667f2c16" + ], + "broader_ids": [ + "1754" + ], + "geo_area_code": null + }, + { + "id": "5721", + "label": "sexually transmitted disease", + "alt_labels": [], + "related_ids": [ + "7135" + ], + "broader_ids": [ + "1759" + ], + "geo_area_code": null + }, + { + "id": "5722", + "label": "wild mammal", + "alt_labels": [ + "elephant", + "fox", + "wild boar" + ], + "related_ids": [ + "1167", + "2826", + "3128" + ], + "broader_ids": [ + "972" + ], + "geo_area_code": null + }, + { + "id": "5723", + "label": "sporting event", + "alt_labels": [ + "sports competition" + ], + "related_ids": [ + "6739" + ], + "broader_ids": [ + "4245" + ], + "geo_area_code": null + }, + { + "id": "5724", + "label": "military manoeuvres", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5610" + ], + "geo_area_code": null + }, + { + "id": "5725", + "label": "services contract", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1810" + ], + "geo_area_code": null + }, + { + "id": "5726", + "label": "EC conformity marking", + "alt_labels": [ + "blue guide" + ], + "related_ids": [ + "3666" + ], + "broader_ids": [ + "2076" + ], + "geo_area_code": null + }, + { + "id": "5727", + "label": "marsupial", + "alt_labels": [ + "kangaroo" + ], + "related_ids": [], + "broader_ids": [ + "5722" + ], + "geo_area_code": null + }, + { + "id": "5728", + "label": "material of animal origin", + "alt_labels": [ + "animal by-products", + "horn", + "ivory" + ], + "related_ids": [ + "2826" + ], + "broader_ids": [ + "2737" + ], + "geo_area_code": null + }, + { + "id": "5729", + "label": "EMS exchange-rate mechanism", + "alt_labels": [], + "related_ids": [ + "5562" + ], + "broader_ids": [ + "4370" + ], + "geo_area_code": null + }, + { + "id": "573", + "label": "criminal law", + "alt_labels": [ + "criminal code" + ], + "related_ids": [ + "1545", + "2441", + "2704", + "307", + "5415", + "5497" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "5730", + "label": "Mecklenburg-Western Pomerania", + "alt_labels": [ + "Mecklenburg-Western Pomerania (Land)" + ], + "related_ids": [], + "broader_ids": [ + "1329" + ], + "geo_area_code": null + }, + { + "id": "5731", + "label": "standard agreement health care", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5921" + ], + "geo_area_code": null + }, + { + "id": "5732", + "label": "forensic medicine", + "alt_labels": [ + "autopsy", + "legal medicine" + ], + "related_ids": [ + "307" + ], + "broader_ids": [ + "1852" + ], + "geo_area_code": null + }, + { + "id": "5733", + "label": "over-the-counter drug", + "alt_labels": [ + "OTC drug", + "OTC medicine", + "non-prescription drug", + "non-prescription medicinal product", + "over-the-counter medicine" + ], + "related_ids": [ + "3211" + ], + "broader_ids": [ + "3813" + ], + "geo_area_code": null + }, + { + "id": "5735", + "label": "Caspian Sea", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1870" + ], + "geo_area_code": null + }, + { + "id": "5736", + "label": "Black Sea", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1870" + ], + "geo_area_code": null + }, + { + "id": "5737", + "label": "Red Sea", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1870" + ], + "geo_area_code": null + }, + { + "id": "5738", + "label": "Mercosur", + "alt_labels": [ + "Mercosul", + "South American Common Market", + "Southern Common Market", + "Southern Cone Common Market" + ], + "related_ids": [ + "1792", + "5778" + ], + "broader_ids": [ + "2190" + ], + "geo_area_code": null + }, + { + "id": "5739", + "label": "national implementing measure", + "alt_labels": [ + "implementation of EC Directives", + "transposition of European directives" + ], + "related_ids": [ + "449" + ], + "broader_ids": [ + "2247" + ], + "geo_area_code": null + }, + { + "id": "574", + "label": "economic offence", + "alt_labels": [ + "Ponzi", + "Ponzi game", + "Ponzi scheme", + "banco", + "boiler room", + "bonko", + "bunco", + "bunko", + "con", + "con job", + "confidence game", + "confidence trick", + "economic crime", + "false bill", + "false invoice", + "pyramid scheme", + "scam", + "shady deal", + "shell game", + "swindle" + ], + "related_ids": [ + "167", + "1708", + "3169", + "4549", + "5465", + "960" + ], + "broader_ids": [ + "1432" + ], + "geo_area_code": null + }, + { + "id": "5740", + "label": "microorganism", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4921" + ], + "geo_area_code": null + }, + { + "id": "5741", + "label": "aquatic environment", + "alt_labels": [], + "related_ids": [ + "916" + ], + "broader_ids": [ + "833" + ], + "geo_area_code": null + }, + { + "id": "5742", + "label": "marine environment", + "alt_labels": [], + "related_ids": [ + "3149" + ], + "broader_ids": [ + "5741" + ], + "geo_area_code": null + }, + { + "id": "5743", + "label": "miner", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2209" + ], + "geo_area_code": null + }, + { + "id": "5744", + "label": "fact-finding mission", + "alt_labels": [ + "experts' mission", + "experts' working visit", + "investigative mission" + ], + "related_ids": [], + "broader_ids": [ + "3474" + ], + "geo_area_code": null + }, + { + "id": "5745", + "label": "modem", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3860" + ], + "geo_area_code": null + }, + { + "id": "5746", + "label": "Montenegro", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "122", + "4690", + "8278", + "914", + "c_b2c019c8" + ], + "geo_area_code": "MNE" + }, + { + "id": "5747", + "label": "monument", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2278" + ], + "geo_area_code": null + }, + { + "id": "5748", + "label": "political morality", + "alt_labels": [ + "political ethics", + "political morals", + "political scandal" + ], + "related_ids": [ + "1990", + "245", + "c_2f00dd5a", + "c_fd56c432" + ], + "broader_ids": [ + "49" + ], + "geo_area_code": null + }, + { + "id": "5749", + "label": "negotiation of an agreement (EU)", + "alt_labels": [ + "negotiation of an EC agreement" + ], + "related_ids": [ + "3465" + ], + "broader_ids": [ + "1474" + ], + "geo_area_code": null + }, + { + "id": "575", + "label": "international criminal law", + "alt_labels": [], + "related_ids": [ + "7137", + "7193" + ], + "broader_ids": [ + "573" + ], + "geo_area_code": null + }, + { + "id": "5750", + "label": "Uruguay Round", + "alt_labels": [], + "related_ids": [ + "6115", + "6145", + "6146" + ], + "broader_ids": [ + "2050" + ], + "geo_area_code": null + }, + { + "id": "5751", + "label": "Combined Nomenclature", + "alt_labels": [ + "CN" + ], + "related_ids": [ + "2066" + ], + "broader_ids": [ + "2069" + ], + "geo_area_code": null + }, + { + "id": "5752", + "label": "drugs classification", + "alt_labels": [ + "classification of medicines", + "pharmaceutical classification" + ], + "related_ids": [ + "2066" + ], + "broader_ids": [ + "1594" + ], + "geo_area_code": null + }, + { + "id": "5753", + "label": "non-proliferation of arms", + "alt_labels": [], + "related_ids": [ + "5542", + "5788", + "5928", + "7" + ], + "broader_ids": [ + "3450" + ], + "geo_area_code": null + }, + { + "id": "5754", + "label": "environmental standard", + "alt_labels": [ + "environmental quality standard", + "standard relating to the environment" + ], + "related_ids": [ + "2077", + "3638", + "5233", + "5696" + ], + "broader_ids": [ + "535" + ], + "geo_area_code": null + }, + { + "id": "5755", + "label": "new type of employment", + "alt_labels": [], + "related_ids": [ + "5940" + ], + "broader_ids": [ + "1802" + ], + "geo_area_code": null + }, + { + "id": "5756", + "label": "observer", + "alt_labels": [ + "observer status" + ], + "related_ids": [], + "broader_ids": [ + "3367" + ], + "geo_area_code": null + }, + { + "id": "5757", + "label": "European Monitoring Centre for Drugs and Drug Addiction", + "alt_labels": [ + "EMCDDA", + "European Monitoring Centre for Drugs" + ], + "related_ids": [ + "4475" + ], + "broader_ids": [ + "5769" + ], + "geo_area_code": null + }, + { + "id": "576", + "label": "private law", + "alt_labels": [], + "related_ids": [ + "5161", + "523", + "524", + "540", + "566" + ], + "broader_ids": [ + "3935" + ], + "geo_area_code": null + }, + { + "id": "5760", + "label": "bird", + "alt_labels": [ + "bird of prey", + "migratory bird" + ], + "related_ids": [ + "4427", + "4743", + "8464" + ], + "broader_ids": [ + "972" + ], + "geo_area_code": null + }, + { + "id": "5761", + "label": "EU body for police and judicial cooperation", + "alt_labels": [ + "Ad Hoc Group on Immigration", + "Group on Drugs and Organised Crime", + "Group on Police and Customs Cooperation", + "Group on the Free Movement of Persons", + "Rhodes Group", + "Steering Group II", + "Trevi Group" + ], + "related_ids": [], + "broader_ids": [ + "6222" + ], + "geo_area_code": null + }, + { + "id": "5762", + "label": "decision-making body (EU)", + "alt_labels": [ + "board of governors (UE)", + "management committee (UE)" + ], + "related_ids": [ + "115" + ], + "broader_ids": [ + "4304" + ], + "geo_area_code": null + }, + { + "id": "5763", + "label": "joint body (EU)", + "alt_labels": [ + "EC joint body" + ], + "related_ids": [], + "broader_ids": [ + "4040" + ], + "geo_area_code": null + }, + { + "id": "5764", + "label": "organisation of health care", + "alt_labels": [ + "health scheme", + "health system", + "organization of health care" + ], + "related_ids": [], + "broader_ids": [ + "2479" + ], + "geo_area_code": null + }, + { + "id": "5765", + "label": "World Trade Organisation", + "alt_labels": [ + "WTO", + "World Trade Organization" + ], + "related_ids": [ + "11", + "1136", + "1455", + "2050", + "5278", + "6081", + "6115", + "6125", + "6145", + "6146", + "6558" + ], + "broader_ids": [ + "2188" + ], + "geo_area_code": null + }, + { + "id": "5766", + "label": "sports body", + "alt_labels": [ + "sports association", + "sports club", + "sports federation" + ], + "related_ids": [], + "broader_ids": [ + "4245" + ], + "geo_area_code": null + }, + { + "id": "5768", + "label": "genetically modified organism", + "alt_labels": [ + "GMO", + "biotechnological invention", + "genetically altered organism", + "transgenic organism" + ], + "related_ids": [ + "192" + ], + "broader_ids": [ + "4111" + ], + "geo_area_code": null + }, + { + "id": "5769", + "label": "EU office or agency", + "alt_labels": [ + "Community service body", + "EC institutional body", + "EC satellite body", + "EC specialised body", + "EU Agencies and decentralised bodies", + "European Monitoring Centre", + "European Union office or agency", + "European agency", + "European foundation", + "autonomous Community body", + "decentralised Community body", + "specialised Community agency" + ], + "related_ids": [ + "2163", + "3718", + "5679", + "7953", + "7954", + "7982", + "8465" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "577", + "label": "commercial farming", + "alt_labels": [], + "related_ids": [ + "2892", + "636" + ], + "broader_ids": [ + "4358" + ], + "geo_area_code": null + }, + { + "id": "5770", + "label": "Uzbekistan", + "alt_labels": [ + "Republic of Uzbekistan" + ], + "related_ids": [], + "broader_ids": [ + "5448", + "5775" + ], + "geo_area_code": "UZB" + }, + { + "id": "5771", + "label": "sponsorship", + "alt_labels": [ + "sponsor" + ], + "related_ids": [ + "4089" + ], + "broader_ids": [ + "2803" + ], + "geo_area_code": null + }, + { + "id": "5772", + "label": "EU sponsorship", + "alt_labels": [ + "Community sponsorship", + "EC participation in a cultural event", + "EC participation in a sporting event", + "European Union sponsorship" + ], + "related_ids": [ + "1780", + "5826" + ], + "broader_ids": [ + "5418" + ], + "geo_area_code": null + }, + { + "id": "5773", + "label": "Partnership for Peace", + "alt_labels": [ + "PFP" + ], + "related_ids": [ + "5478" + ], + "broader_ids": [ + "6722" + ], + "geo_area_code": null + }, + { + "id": "5774", + "label": "Baltic States", + "alt_labels": [ + "Baltic Republics" + ], + "related_ids": [ + "8396", + "c_12742da8" + ], + "broader_ids": [ + "911" + ], + "geo_area_code": null + }, + { + "id": "5775", + "label": "CIS countries", + "alt_labels": [], + "related_ids": [ + "5479" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "5776", + "label": "GCC countries", + "alt_labels": [ + "Gulf Cooperation Council countries" + ], + "related_ids": [ + "5530" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "5777", + "label": "Gulf States", + "alt_labels": [ + "Persian Gulf States", + "Persian Gulf countries" + ], + "related_ids": [], + "broader_ids": [ + "2705" + ], + "geo_area_code": null + }, + { + "id": "5778", + "label": "Mercosur countries", + "alt_labels": [], + "related_ids": [ + "5738" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "5779", + "label": "non-associated country", + "alt_labels": [ + "non-associated developing country" + ], + "related_ids": [], + "broader_ids": [ + "3489" + ], + "geo_area_code": null + }, + { + "id": "578", + "label": "public law", + "alt_labels": [], + "related_ids": [ + "4012", + "517", + "567" + ], + "broader_ids": [ + "3935" + ], + "geo_area_code": null + }, + { + "id": "5780", + "label": "Mediterranean third countries", + "alt_labels": [ + "Mediterranean non-member countries" + ], + "related_ids": [ + "2300", + "3073", + "6373" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "5781", + "label": "Central and Eastern European Countries", + "alt_labels": [ + "CEEC" + ], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "5782", + "label": "tradeable emission permit", + "alt_labels": [ + "marketable emission permit", + "negotiable pollution permit", + "tradeable discharge permit", + "transferable emission permit" + ], + "related_ids": [ + "3164", + "434843", + "434966" + ], + "broader_ids": [ + "5682" + ], + "geo_area_code": null + }, + { + "id": "5783", + "label": "civilian personnel", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2628" + ], + "geo_area_code": null + }, + { + "id": "5784", + "label": "contract staff", + "alt_labels": [ + "external staff", + "staff not employed under the staff regulations" + ], + "related_ids": [], + "broader_ids": [ + "1046" + ], + "geo_area_code": null + }, + { + "id": "5785", + "label": "nursing staff", + "alt_labels": [ + "nurse" + ], + "related_ids": [ + "5900" + ], + "broader_ids": [ + "2789" + ], + "geo_area_code": null + }, + { + "id": "5786", + "label": "military personnel", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2628" + ], + "geo_area_code": null + }, + { + "id": "5787", + "label": "multiannual financial framework", + "alt_labels": [ + "MFF", + "financial perspectives", + "programming of Community expenditure" + ], + "related_ids": [ + "5576" + ], + "broader_ids": [ + "5590" + ], + "geo_area_code": null + }, + { + "id": "5788", + "label": "common foreign and security policy", + "alt_labels": [ + "CFSP", + "European foreign policy", + "common foreign policy", + "common security policy" + ], + "related_ids": [ + "2199", + "2500", + "3453", + "447472", + "5753", + "6288" + ], + "broader_ids": [ + "4060" + ], + "geo_area_code": null + }, + { + "id": "5789", + "label": "philosophy of law", + "alt_labels": [ + "theory of law" + ], + "related_ids": [ + "2369" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "579", + "label": "agrarian law", + "alt_labels": [ + "agricultural law", + "agricultural legislation", + "agricultural regulations", + "farm legislation" + ], + "related_ids": [ + "2813", + "563", + "962" + ], + "broader_ids": [ + "2442" + ], + "geo_area_code": null + }, + { + "id": "5790", + "label": "complaint to the Commission", + "alt_labels": [ + "complaint about failure to take action" + ], + "related_ids": [ + "2696", + "2942", + "3581", + "5541" + ], + "broader_ids": [ + "5953" + ], + "geo_area_code": null + }, + { + "id": "5791", + "label": "harmful plant", + "alt_labels": [ + "weed" + ], + "related_ids": [], + "broader_ids": [ + "c_d701b19c" + ], + "geo_area_code": null + }, + { + "id": "5792", + "label": "living plant", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2723" + ], + "geo_area_code": null + }, + { + "id": "5793", + "label": "pluralism in the media", + "alt_labels": [], + "related_ids": [ + "5196" + ], + "broader_ids": [ + "2473" + ], + "geo_area_code": null + }, + { + "id": "5794", + "label": "EU environmental policy", + "alt_labels": [ + "Community environmental policy", + "EU environment policy", + "European Union environment policy", + "European Union environmental policy" + ], + "related_ids": [ + "2451", + "c_1138d9d2", + "c_8d31aed6" + ], + "broader_ids": [ + "2470" + ], + "geo_area_code": null + }, + { + "id": "5795", + "label": "single exchange-rate policy", + "alt_labels": [], + "related_ids": [ + "2486" + ], + "broader_ids": [ + "4602" + ], + "geo_area_code": null + }, + { + "id": "5796", + "label": "EU visa policy", + "alt_labels": [ + "common policy on business", + "common visa policy" + ], + "related_ids": [ + "6222" + ], + "broader_ids": [ + "565" + ], + "geo_area_code": null + }, + { + "id": "5797", + "label": "single monetary policy", + "alt_labels": [], + "related_ids": [ + "2510" + ], + "broader_ids": [ + "4602" + ], + "geo_area_code": null + }, + { + "id": "5798", + "label": "stratospheric pollutant", + "alt_labels": [ + "CFC", + "chlorofluorcarbons", + "gas harmful to the ozone layer" + ], + "related_ids": [], + "broader_ids": [ + "2522" + ], + "geo_area_code": null + }, + { + "id": "5799", + "label": "indigenous population", + "alt_labels": [ + "American Indian", + "Basques", + "Eskimo", + "Gorals", + "Innuit", + "Inuit", + "Inuk", + "Lapps", + "Native American", + "Sami", + "Skolt Sami", + "Skolts", + "aboriginal", + "aborigine", + "indigenous people", + "native" + ], + "related_ids": [ + "1202", + "2834" + ], + "broader_ids": [ + "52" + ], + "geo_area_code": null + }, + { + "id": "58", + "label": "public accounting", + "alt_labels": [ + "public service accounting" + ], + "related_ids": [ + "54" + ], + "broader_ids": [ + "1018" + ], + "geo_area_code": null + }, + { + "id": "580", + "label": "social legislation", + "alt_labels": [], + "related_ids": [ + "1547", + "3359" + ], + "broader_ids": [ + "2517" + ], + "geo_area_code": null + }, + { + "id": "5800", + "label": "pornography", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2690" + ], + "geo_area_code": null + }, + { + "id": "5801", + "label": "aircraft carrier", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3429" + ], + "geo_area_code": null + }, + { + "id": "5802", + "label": "legal process", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1457" + ], + "geo_area_code": null + }, + { + "id": "5803", + "label": "prehistory", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1245" + ], + "geo_area_code": null + }, + { + "id": "5804", + "label": "first stage of EMU", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5474" + ], + "geo_area_code": null + }, + { + "id": "5805", + "label": "head of State", + "alt_labels": [ + "king", + "president of the republic" + ], + "related_ids": [ + "1977", + "2332", + "3480", + "3589", + "3637", + "704", + "7386" + ], + "broader_ids": [ + "1453" + ], + "geo_area_code": null + }, + { + "id": "5806", + "label": "EU Council Presidency", + "alt_labels": [ + "EC Council Presidency" + ], + "related_ids": [], + "broader_ids": [ + "114" + ], + "geo_area_code": null + }, + { + "id": "5807", + "label": "President of the Commission", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4038" + ], + "geo_area_code": null + }, + { + "id": "5808", + "label": "scientific press", + "alt_labels": [ + "scientific information" + ], + "related_ids": [ + "6909" + ], + "broader_ids": [ + "2599" + ], + "geo_area_code": null + }, + { + "id": "5809", + "label": "proof", + "alt_labels": [ + "onus of proof" + ], + "related_ids": [ + "6370" + ], + "broader_ids": [ + "2701" + ], + "geo_area_code": null + }, + { + "id": "581", + "label": "territorial law", + "alt_labels": [ + "national territory", + "territorial integrity", + "territorial sovereignty", + "territoriality" + ], + "related_ids": [ + "2542", + "3493", + "6930" + ], + "broader_ids": [ + "567" + ], + "geo_area_code": null + }, + { + "id": "5810", + "label": "accident prevention", + "alt_labels": [ + "prevention of accidents" + ], + "related_ids": [ + "5314", + "730", + "825" + ], + "broader_ids": [ + "5764" + ], + "geo_area_code": null + }, + { + "id": "5811", + "label": "mutual recognition principle", + "alt_labels": [ + "Cassis de Dijon Case" + ], + "related_ids": [ + "2076", + "2932", + "3648", + "5481", + "809", + "8480" + ], + "broader_ids": [ + "5127" + ], + "geo_area_code": null + }, + { + "id": "5812", + "label": "principle of subsidiarity", + "alt_labels": [], + "related_ids": [ + "6897" + ], + "broader_ids": [ + "36" + ], + "geo_area_code": null + }, + { + "id": "5813", + "label": "general legal principle", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4222" + ], + "geo_area_code": null + }, + { + "id": "5814", + "label": "infringement procedure (EU)", + "alt_labels": [ + "EC infringement procedure", + "EC infringement proceedings", + "declaration of an EC failure to fulfil an obligation", + "declaration of an EC failure to take action" + ], + "related_ids": [ + "2942", + "c_ccc9fea1" + ], + "broader_ids": [ + "5953" + ], + "geo_area_code": null + }, + { + "id": "5816", + "label": "conciliation procedure (part of ordinary legislative procedure)", + "alt_labels": [ + "conciliation committee", + "conciliation procedure (part of codecision procedure)" + ], + "related_ids": [], + "broader_ids": [ + "440238" + ], + "geo_area_code": null + }, + { + "id": "5817", + "label": "special procedure", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2701" + ], + "geo_area_code": null + }, + { + "id": "5818", + "label": "homeopathic product", + "alt_labels": [], + "related_ids": [ + "3289" + ], + "broader_ids": [ + "2773" + ], + "geo_area_code": null + }, + { + "id": "5819", + "label": "recycled product", + "alt_labels": [], + "related_ids": [ + "3651" + ], + "broader_ids": [ + "2758" + ], + "geo_area_code": null + }, + { + "id": "582", + "label": "political right", + "alt_labels": [ + "right" + ], + "related_ids": [], + "broader_ids": [ + "4436" + ], + "geo_area_code": null + }, + { + "id": "5820", + "label": "customs profession", + "alt_labels": [ + "customs agent", + "customs officer" + ], + "related_ids": [], + "broader_ids": [ + "502" + ], + "geo_area_code": null + }, + { + "id": "5821", + "label": "practitioner of alternative medicine", + "alt_labels": [ + "acupuncture practitioner", + "chiropractor", + "healer", + "osteopath" + ], + "related_ids": [ + "3289" + ], + "broader_ids": [ + "2789" + ], + "geo_area_code": null + }, + { + "id": "5822", + "label": "legislative programme (EU)", + "alt_labels": [ + "Community legislative programme" + ], + "related_ids": [], + "broader_ids": [ + "5606" + ], + "geo_area_code": null + }, + { + "id": "5823", + "label": "operational programme", + "alt_labels": [ + "regional development programme" + ], + "related_ids": [], + "broader_ids": [ + "2516" + ], + "geo_area_code": null + }, + { + "id": "5824", + "label": "project of common interest", + "alt_labels": [ + "declaration of European interest", + "project of European interest" + ], + "related_ids": [ + "5864" + ], + "broader_ids": [ + "5413" + ], + "geo_area_code": null + }, + { + "id": "5825", + "label": "draft budget (EU)", + "alt_labels": [ + "draft EC budget" + ], + "related_ids": [ + "2799" + ], + "broader_ids": [ + "5620" + ], + "geo_area_code": null + }, + { + "id": "5826", + "label": "promotion of the European idea", + "alt_labels": [ + "promotion of Europe" + ], + "related_ids": [ + "5772", + "5891" + ], + "broader_ids": [ + "1464" + ], + "geo_area_code": null + }, + { + "id": "5827", + "label": "financial protocol", + "alt_labels": [], + "related_ids": [ + "1474" + ], + "broader_ids": [ + "2850" + ], + "geo_area_code": null + }, + { + "id": "5828", + "label": "computer assisted publishing", + "alt_labels": [ + "computer aided publishing" + ], + "related_ids": [ + "6110" + ], + "broader_ids": [ + "5071" + ], + "geo_area_code": null + }, + { + "id": "5829", + "label": "public conduct of debates", + "alt_labels": [ + "publication of the agenda", + "publication of the minutes of debates" + ], + "related_ids": [], + "broader_ids": [ + "5937" + ], + "geo_area_code": null + }, + { + "id": "583", + "label": "civil rights", + "alt_labels": [ + "civil liberty" + ], + "related_ids": [ + "2631", + "4003", + "4562" + ], + "broader_ids": [ + "3900" + ], + "geo_area_code": null + }, + { + "id": "5830", + "label": "confidence motion", + "alt_labels": [], + "related_ids": [ + "3507", + "379" + ], + "broader_ids": [ + "190" + ], + "geo_area_code": null + }, + { + "id": "5831", + "label": "Tibetan question", + "alt_labels": [], + "related_ids": [ + "5969" + ], + "broader_ids": [ + "3476" + ], + "geo_area_code": null + }, + { + "id": "5832", + "label": "preliminary issue", + "alt_labels": [ + "preliminary matter", + "preliminary question" + ], + "related_ids": [ + "3980" + ], + "broader_ids": [ + "5817" + ], + "geo_area_code": null + }, + { + "id": "5833", + "label": "renewal of an agreement", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3461" + ], + "geo_area_code": null + }, + { + "id": "5834", + "label": "appeal to the European Ombudsman", + "alt_labels": [ + "appeal to the EC Ombudsman" + ], + "related_ids": [ + "2140", + "5838", + "5936" + ], + "broader_ids": [ + "5491" + ], + "geo_area_code": null + }, + { + "id": "5835", + "label": "action brought before an administrative court", + "alt_labels": [ + "full review of the merits of a decision" + ], + "related_ids": [ + "2939" + ], + "broader_ids": [ + "5371" + ], + "geo_area_code": null + }, + { + "id": "5836", + "label": "appeal to the Court (EU)", + "alt_labels": [ + "action brought before a Community court", + "action brought before the EC Court of Justice", + "appeal to the European Court of Justice" + ], + "related_ids": [ + "5953" + ], + "broader_ids": [ + "5371" + ], + "geo_area_code": null + }, + { + "id": "5837", + "label": "action for annulment (EU)", + "alt_labels": [ + "action for annulment of an EC decision", + "action to have an EC decision declared void", + "proceedings for annulment (EU)" + ], + "related_ids": [], + "broader_ids": [ + "5836" + ], + "geo_area_code": null + }, + { + "id": "5838", + "label": "action to establish liability on the part of an administration", + "alt_labels": [], + "related_ids": [ + "4011", + "5834" + ], + "broader_ids": [ + "5835" + ], + "geo_area_code": null + }, + { + "id": "5839", + "label": "environmental tax", + "alt_labels": [ + "charge for polluting product", + "discharge tax", + "ecotax", + "energy tax", + "environmental charge", + "green tax", + "tax on CO2", + "tax on polluting product" + ], + "related_ids": [ + "2626" + ], + "broader_ids": [ + "5682" + ], + "geo_area_code": null + }, + { + "id": "584", + "label": "human rights", + "alt_labels": [ + "attack on human rights", + "human rights violation", + "protection of human rights" + ], + "related_ids": [ + "1198", + "1664", + "257", + "3467", + "4467", + "470", + "5395", + "541", + "6286", + "7192", + "8385", + "c_54f7dd1f", + "c_6496f5ea", + "c_b605a1d4" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "5840", + "label": "economic reform", + "alt_labels": [ + "change of economic system" + ], + "related_ids": [ + "6061" + ], + "broader_ids": [ + "3013" + ], + "geo_area_code": null + }, + { + "id": "5841", + "label": "political reform", + "alt_labels": [], + "related_ids": [ + "5483" + ], + "broader_ids": [ + "4704" + ], + "geo_area_code": null + }, + { + "id": "5842", + "label": "EU customs procedure", + "alt_labels": [ + "Community customs procedure", + "European Union customs procedure" + ], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "5843", + "label": "export customs procedure", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5842" + ], + "geo_area_code": null + }, + { + "id": "5844", + "label": "EU financing arrangements", + "alt_labels": [ + "Community financing arrangements", + "European Union financing arrangements" + ], + "related_ids": [ + "1952", + "3003" + ], + "broader_ids": [ + "1005" + ], + "geo_area_code": null + }, + { + "id": "5845", + "label": "Alpine Region", + "alt_labels": [ + "Alps" + ], + "related_ids": [], + "broader_ids": [ + "5848" + ], + "geo_area_code": null + }, + { + "id": "5846", + "label": "region dependent on fishing", + "alt_labels": [], + "related_ids": [ + "1372" + ], + "broader_ids": [ + "3058" + ], + "geo_area_code": null + }, + { + "id": "5847", + "label": "eligible region", + "alt_labels": [], + "related_ids": [ + "3058", + "5138", + "5561" + ], + "broader_ids": [ + "2516" + ], + "geo_area_code": null + }, + { + "id": "5848", + "label": "European Region", + "alt_labels": [], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "5849", + "label": "declining industrial region", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3067" + ], + "geo_area_code": null + }, + { + "id": "585", + "label": "women's rights", + "alt_labels": [], + "related_ids": [ + "2003", + "2265", + "3913", + "688", + "81", + "8448", + "c_a1497409" + ], + "broader_ids": [ + "538" + ], + "geo_area_code": null + }, + { + "id": "5850", + "label": "civil register", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "884" + ], + "geo_area_code": null + }, + { + "id": "5851", + "label": "parliamentary rules of procedure", + "alt_labels": [ + "parliamentary standing orders" + ], + "related_ids": [ + "3561" + ], + "broader_ids": [ + "2703" + ], + "geo_area_code": null + }, + { + "id": "5852", + "label": "citizen-authority relations", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "77" + ], + "geo_area_code": null + }, + { + "id": "5853", + "label": "relations between the State and the regions", + "alt_labels": [ + "relations between central and local government" + ], + "related_ids": [], + "broader_ids": [ + "5855" + ], + "geo_area_code": null + }, + { + "id": "5854", + "label": "interinstitutional relations (EU)", + "alt_labels": [ + "EC interinstitutional relations" + ], + "related_ids": [ + "3226" + ], + "broader_ids": [ + "5640" + ], + "geo_area_code": null + }, + { + "id": "5855", + "label": "division of powers", + "alt_labels": [ + "balance of power" + ], + "related_ids": [ + "5204", + "5611" + ], + "broader_ids": [ + "4182" + ], + "geo_area_code": null + }, + { + "id": "5856", + "label": "distribution of EU funding", + "alt_labels": [ + "distribution of Community funding", + "distribution of European Union funding" + ], + "related_ids": [ + "5459", + "5538" + ], + "broader_ids": [ + "5844" + ], + "geo_area_code": null + }, + { + "id": "5857", + "label": "reptile", + "alt_labels": [ + "crocodile", + "lizard", + "snake", + "tortoise", + "turtle" + ], + "related_ids": [], + "broader_ids": [ + "972" + ], + "geo_area_code": null + }, + { + "id": "5858", + "label": "Moldova", + "alt_labels": [ + "Republic of Moldova" + ], + "related_ids": [ + "c_6547ccb7" + ], + "broader_ids": [ + "122", + "5775", + "8278", + "914" + ], + "geo_area_code": "MDA" + }, + { + "id": "5859", + "label": "Slovakia", + "alt_labels": [ + "Slovak Republic" + ], + "related_ids": [ + "7817" + ], + "broader_ids": [ + "122", + "2106", + "2200", + "5283", + "5655", + "5781", + "914" + ], + "geo_area_code": "SVK" + }, + { + "id": "586", + "label": "contract farming", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "962" + ], + "geo_area_code": null + }, + { + "id": "5860", + "label": "Czechia", + "alt_labels": [], + "related_ids": [ + "7816" + ], + "broader_ids": [ + "122", + "2106", + "2200", + "5283", + "5655", + "5781", + "914" + ], + "geo_area_code": "CZE" + }, + { + "id": "5861", + "label": "energy grid", + "alt_labels": [ + "energy network" + ], + "related_ids": [ + "5864" + ], + "broader_ids": [ + "2498" + ], + "geo_area_code": null + }, + { + "id": "5862", + "label": "computer network", + "alt_labels": [], + "related_ids": [ + "6176", + "c_12e208c8" + ], + "broader_ids": [ + "5922" + ], + "geo_area_code": null + }, + { + "id": "5863", + "label": "local area network", + "alt_labels": [ + "LAN", + "local network" + ], + "related_ids": [], + "broader_ids": [ + "5862" + ], + "geo_area_code": null + }, + { + "id": "5864", + "label": "trans-European network", + "alt_labels": [], + "related_ids": [ + "1074", + "3017", + "3428", + "5295", + "5824", + "5861" + ], + "broader_ids": [ + "5499" + ], + "geo_area_code": null + }, + { + "id": "5865", + "label": "reservation", + "alt_labels": [ + "overbooking", + "reservations system", + "reserved seat" + ], + "related_ids": [], + "broader_ids": [ + "4511" + ], + "geo_area_code": null + }, + { + "id": "5866", + "label": "budgetary reserve (EU)", + "alt_labels": [ + "EAGGF monetary reserve", + "EC budgetary reserve", + "agricultural reserve", + "guarantee fund for lending operations", + "guarantee fund for lending transactions" + ], + "related_ids": [ + "1130", + "1132", + "2511", + "3443", + "3446" + ], + "broader_ids": [ + "5590" + ], + "geo_area_code": null + }, + { + "id": "5867", + "label": "resolution of parliament", + "alt_labels": [], + "related_ids": [ + "127", + "3494" + ], + "broader_ids": [ + "41" + ], + "geo_area_code": null + }, + { + "id": "5868", + "label": "VAT resource", + "alt_labels": [], + "related_ids": [ + "4585" + ], + "broader_ids": [ + "3560" + ], + "geo_area_code": null + }, + { + "id": "5869", + "label": "deduction at source", + "alt_labels": [ + "advance deduction", + "prior deduction" + ], + "related_ids": [ + "1330", + "250" + ], + "broader_ids": [ + "3843" + ], + "geo_area_code": null + }, + { + "id": "587", + "label": "special drawing rights", + "alt_labels": [ + "SDR" + ], + "related_ids": [], + "broader_ids": [ + "1677" + ], + "geo_area_code": null + }, + { + "id": "5870", + "label": "revision of an agreement", + "alt_labels": [ + "amendment of an agreement", + "revision of a treaty" + ], + "related_ids": [ + "5871" + ], + "broader_ids": [ + "3461" + ], + "geo_area_code": null + }, + { + "id": "5871", + "label": "revision of the Treaty (EU)", + "alt_labels": [ + "revision of the EC Treaty" + ], + "related_ids": [ + "5870" + ], + "broader_ids": [ + "4479" + ], + "geo_area_code": null + }, + { + "id": "5872", + "label": "revision of financial perspectives", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5787" + ], + "geo_area_code": null + }, + { + "id": "5873", + "label": "the EU's international role", + "alt_labels": [ + "EC participation in an international meeting", + "EC representation in an international organisation", + "the Community's international role", + "the international role of the European Union" + ], + "related_ids": [ + "4030", + "5420" + ], + "broader_ids": [ + "4040" + ], + "geo_area_code": null + }, + { + "id": "5874", + "label": "rodent", + "alt_labels": [], + "related_ids": [ + "1585" + ], + "broader_ids": [ + "5722" + ], + "geo_area_code": null + }, + { + "id": "5875", + "label": "royalism", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1282" + ], + "geo_area_code": null + }, + { + "id": "5876", + "label": "Russia", + "alt_labels": [ + "Russian Federation" + ], + "related_ids": [ + "8354", + "8355", + "c_e78f03db" + ], + "broader_ids": [ + "122", + "5775", + "6205", + "914", + "c_964c9649" + ], + "geo_area_code": "RUS" + }, + { + "id": "5877", + "label": "animal health", + "alt_labels": [], + "related_ids": [ + "7222", + "c_8c634c9b" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "5878", + "label": "mental health", + "alt_labels": [], + "related_ids": [ + "1760", + "4439" + ], + "broader_ids": [ + "5764" + ], + "geo_area_code": null + }, + { + "id": "5879", + "label": "Saxony", + "alt_labels": [ + "Saxony (Free State of)" + ], + "related_ids": [], + "broader_ids": [ + "1329" + ], + "geo_area_code": null + }, + { + "id": "588", + "label": "dumping", + "alt_labels": [], + "related_ids": [ + "1010", + "1591", + "2634", + "5267", + "889" + ], + "broader_ids": [ + "3581" + ], + "geo_area_code": null + }, + { + "id": "5880", + "label": "Saxony-Anhalt", + "alt_labels": [ + "Saxony-Anhalt (Land)" + ], + "related_ids": [], + "broader_ids": [ + "1329" + ], + "geo_area_code": null + }, + { + "id": "5881", + "label": "medical science", + "alt_labels": [], + "related_ids": [ + "3941" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "5882", + "label": "sculpture", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4837" + ], + "geo_area_code": null + }, + { + "id": "5883", + "label": "European System of Central Banks", + "alt_labels": [ + "ESCB" + ], + "related_ids": [ + "4763", + "5455", + "6334" + ], + "broader_ids": [ + "4602" + ], + "geo_area_code": null + }, + { + "id": "5884", + "label": "State secret", + "alt_labels": [], + "related_ids": [ + "3993", + "4140", + "6379" + ], + "broader_ids": [ + "92" + ], + "geo_area_code": null + }, + { + "id": "5885", + "label": "secretariat of an Institution", + "alt_labels": [], + "related_ids": [ + "5421" + ], + "broader_ids": [ + "4304" + ], + "geo_area_code": null + }, + { + "id": "5886", + "label": "farming sector", + "alt_labels": [ + "agricultural sector", + "agriculture" + ], + "related_ids": [ + "4117" + ], + "broader_ids": [ + "4008" + ], + "geo_area_code": null + }, + { + "id": "5887", + "label": "air safety", + "alt_labels": [ + "air transport safety", + "aircraft safety", + "aviation safety" + ], + "related_ids": [ + "172", + "2352", + "3641", + "4505", + "7937", + "906", + "c_c8c80a5b" + ], + "broader_ids": [ + "4033" + ], + "geo_area_code": null + }, + { + "id": "5888", + "label": "security services", + "alt_labels": [ + "private security" + ], + "related_ids": [ + "6777", + "c_4c441ea0" + ], + "broader_ids": [ + "1384" + ], + "geo_area_code": null + }, + { + "id": "5889", + "label": "maritime safety", + "alt_labels": [ + "safety at sea", + "sea transport safety", + "ship safety" + ], + "related_ids": [ + "2141", + "3995", + "7936" + ], + "broader_ids": [ + "4033" + ], + "geo_area_code": null + }, + { + "id": "589", + "label": "life expectancy", + "alt_labels": [ + "average lifetime", + "lifespan", + "longevity" + ], + "related_ids": [], + "broader_ids": [ + "385" + ], + "geo_area_code": null + }, + { + "id": "5890", + "label": "earthquake", + "alt_labels": [], + "related_ids": [ + "3141", + "4176" + ], + "broader_ids": [ + "413" + ], + "geo_area_code": null + }, + { + "id": "5891", + "label": "public awareness campaign", + "alt_labels": [ + "information campaign", + "international day", + "international year", + "public information campaign", + "world day", + "world year" + ], + "related_ids": [ + "2001", + "2008", + "5312", + "5826" + ], + "broader_ids": [ + "2152" + ], + "geo_area_code": null + }, + { + "id": "5892", + "label": "Serbia", + "alt_labels": [ + "Republic of Serbia" + ], + "related_ids": [ + "8357" + ], + "broader_ids": [ + "122", + "4690", + "8278", + "914" + ], + "geo_area_code": "SRB" + }, + { + "id": "5893", + "label": "network server", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5862" + ], + "geo_area_code": null + }, + { + "id": "5894", + "label": "State health service", + "alt_labels": [], + "related_ids": [ + "6564" + ], + "broader_ids": [ + "5921" + ], + "geo_area_code": null + }, + { + "id": "5895", + "label": "monkey", + "alt_labels": [ + "ape", + "chimpanzee", + "gorilla" + ], + "related_ids": [], + "broader_ids": [ + "5722" + ], + "geo_area_code": null + }, + { + "id": "5896", + "label": "historic site", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2278" + ], + "geo_area_code": null + }, + { + "id": "5897", + "label": "political situation", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4704" + ], + "geo_area_code": null + }, + { + "id": "5898", + "label": "Slovenia", + "alt_labels": [ + "Republic of Slovenia" + ], + "related_ids": [ + "7815" + ], + "broader_ids": [ + "122", + "2106", + "2200", + "5283", + "5781", + "914" + ], + "geo_area_code": "SVN" + }, + { + "id": "5899", + "label": "health care", + "alt_labels": [ + "medical care" + ], + "related_ids": [ + "4455" + ], + "broader_ids": [ + "5764" + ], + "geo_area_code": null + }, + { + "id": "59", + "label": "regional accounting", + "alt_labels": [ + "regional account" + ], + "related_ids": [ + "54", + "660" + ], + "broader_ids": [ + "56" + ], + "geo_area_code": null + }, + { + "id": "590", + "label": "length of studies", + "alt_labels": [ + "prolongation of schooling", + "prolongation of studies" + ], + "related_ids": [ + "789" + ], + "broader_ids": [ + "2467" + ], + "geo_area_code": null + }, + { + "id": "5900", + "label": "nursing care", + "alt_labels": [], + "related_ids": [ + "5785" + ], + "broader_ids": [ + "5899" + ], + "geo_area_code": null + }, + { + "id": "5901", + "label": "submarine", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3429" + ], + "geo_area_code": null + }, + { + "id": "5902", + "label": "medical specialisation", + "alt_labels": [ + "medical specialization" + ], + "related_ids": [], + "broader_ids": [ + "1852" + ], + "geo_area_code": null + }, + { + "id": "5903", + "label": "animal show", + "alt_labels": [ + "animal fights", + "animal racing", + "bullfighting" + ], + "related_ids": [ + "2830" + ], + "broader_ids": [ + "1700" + ], + "geo_area_code": null + }, + { + "id": "5904", + "label": "budgetary stabiliser", + "alt_labels": [ + "agricultural stabiliser", + "agro-budgetary stabiliser", + "budgetary stabilizer" + ], + "related_ids": [], + "broader_ids": [ + "5590" + ], + "geo_area_code": null + }, + { + "id": "5905", + "label": "education statistics", + "alt_labels": [], + "related_ids": [ + "4256", + "5266" + ], + "broader_ids": [ + "2467" + ], + "geo_area_code": null + }, + { + "id": "5906", + "label": "head of agricultural holding", + "alt_labels": [ + "farm manager" + ], + "related_ids": [], + "broader_ids": [ + "2551" + ], + "geo_area_code": null + }, + { + "id": "5907", + "label": "health statistics", + "alt_labels": [], + "related_ids": [ + "4256" + ], + "broader_ids": [ + "2479" + ], + "geo_area_code": null + }, + { + "id": "5908", + "label": "transport statistics", + "alt_labels": [], + "related_ids": [ + "4256" + ], + "broader_ids": [ + "2494" + ], + "geo_area_code": null + }, + { + "id": "5909", + "label": "tourism statistics", + "alt_labels": [], + "related_ids": [ + "4256" + ], + "broader_ids": [ + "3705" + ], + "geo_area_code": null + }, + { + "id": "591", + "label": "length of lease", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4598" + ], + "geo_area_code": null + }, + { + "id": "5910", + "label": "European legal status", + "alt_labels": [], + "related_ids": [ + "4202" + ], + "broader_ids": [ + "4274" + ], + "geo_area_code": null + }, + { + "id": "5911", + "label": "stimulant", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5914" + ], + "geo_area_code": null + }, + { + "id": "5912", + "label": "underground storage of waste", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3133" + ], + "geo_area_code": null + }, + { + "id": "5913", + "label": "fisheries structure", + "alt_labels": [], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "5914", + "label": "psychotropic substance", + "alt_labels": [], + "related_ids": [ + "4475" + ], + "broader_ids": [ + "2773" + ], + "geo_area_code": null + }, + { + "id": "5915", + "label": "help desk", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5949" + ], + "geo_area_code": null + }, + { + "id": "5916", + "label": "drug surveillance", + "alt_labels": [ + "pharmaceutical surveillance", + "supervision of medicinal products", + "supervision of pharmaceutical drugs" + ], + "related_ids": [ + "5426" + ], + "broader_ids": [ + "1594" + ], + "geo_area_code": null + }, + { + "id": "5917", + "label": "multilateral surveillance", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5555" + ], + "geo_area_code": null + }, + { + "id": "5918", + "label": "joint authority", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5657" + ], + "geo_area_code": null + }, + { + "id": "5919", + "label": "operating system", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1696" + ], + "geo_area_code": null + }, + { + "id": "592", + "label": "working time", + "alt_labels": [ + "time worked" + ], + "related_ids": [ + "3116" + ], + "broader_ids": [ + "2184" + ], + "geo_area_code": null + }, + { + "id": "5920", + "label": "database management system", + "alt_labels": [ + "DBMS", + "hierarchical DBMS", + "relational DBMS" + ], + "related_ids": [], + "broader_ids": [ + "1696" + ], + "geo_area_code": null + }, + { + "id": "5921", + "label": "health care system", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2479" + ], + "geo_area_code": null + }, + { + "id": "5922", + "label": "computer system", + "alt_labels": [ + "data-processing system" + ], + "related_ids": [ + "6267", + "c_4e75f061", + "c_8a658bb0" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "5923", + "label": "legal system", + "alt_labels": [], + "related_ids": [ + "2585", + "4017" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "5924", + "label": "spreadsheet", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5071" + ], + "geo_area_code": null + }, + { + "id": "5925", + "label": "Tajikistan", + "alt_labels": [ + "Republic of Tajikistan" + ], + "related_ids": [], + "broader_ids": [ + "5448", + "5775" + ], + "geo_area_code": "TJK" + }, + { + "id": "5926", + "label": "financing level", + "alt_labels": [ + "level of funding", + "rate of financing", + "rate of funding" + ], + "related_ids": [ + "80" + ], + "broader_ids": [ + "4126" + ], + "geo_area_code": null + }, + { + "id": "5927", + "label": "taxi", + "alt_labels": [], + "related_ids": [ + "4261", + "4516", + "818" + ], + "broader_ids": [ + "1384" + ], + "geo_area_code": null + }, + { + "id": "5928", + "label": "dual-use technology", + "alt_labels": [], + "related_ids": [ + "3671", + "5495", + "5753" + ], + "broader_ids": [ + "4415" + ], + "geo_area_code": null + }, + { + "id": "5929", + "label": "computer terminal", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5862" + ], + "geo_area_code": null + }, + { + "id": "593", + "label": "legal working time", + "alt_labels": [ + "x-hour week" + ], + "related_ids": [], + "broader_ids": [ + "592" + ], + "geo_area_code": null + }, + { + "id": "5930", + "label": "Palestine", + "alt_labels": [ + "East Jerusalem", + "Gaza strip", + "Occupied Palestinian Territory", + "West Bank", + "autonomous territories of Palestine", + "autonomous territory of Gaza", + "autonomous territory of Jericho" + ], + "related_ids": [ + "3501", + "4270", + "5126" + ], + "broader_ids": [ + "1727", + "5780", + "8369" + ], + "geo_area_code": "PSE" + }, + { + "id": "5932", + "label": "Thuringia", + "alt_labels": [ + "Thuringia (Free State of)" + ], + "related_ids": [], + "broader_ids": [ + "1329" + ], + "geo_area_code": null + }, + { + "id": "5933", + "label": "trafficking in human beings", + "alt_labels": [ + "THB", + "human trafficking", + "trade in children", + "trade in human beings", + "trade in persons", + "trafficking in children", + "trafficking in persons", + "white slave trade", + "white slavery" + ], + "related_ids": [ + "5560", + "857" + ], + "broader_ids": [ + "3943" + ], + "geo_area_code": null + }, + { + "id": "5934", + "label": "tranquiliser", + "alt_labels": [ + "barbiturate", + "sleeping tablet", + "soporific", + "tranquilizer" + ], + "related_ids": [], + "broader_ids": [ + "5914" + ], + "geo_area_code": null + }, + { + "id": "5935", + "label": "processing under customs control", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3174" + ], + "geo_area_code": null + }, + { + "id": "5936", + "label": "administrative transparency", + "alt_labels": [], + "related_ids": [ + "441", + "453", + "5834", + "5937", + "6897" + ], + "broader_ids": [ + "5852" + ], + "geo_area_code": null + }, + { + "id": "5937", + "label": "transparency in decision-making", + "alt_labels": [], + "related_ids": [ + "5936", + "c_34746c6e" + ], + "broader_ids": [ + "5640" + ], + "geo_area_code": null + }, + { + "id": "5938", + "label": "transport of patients", + "alt_labels": [ + "ambulance" + ], + "related_ids": [ + "2181" + ], + "broader_ids": [ + "5764" + ], + "geo_area_code": null + }, + { + "id": "5939", + "label": "trauma", + "alt_labels": [ + "fracture", + "injury", + "lesion", + "wound" + ], + "related_ids": [], + "broader_ids": [ + "1754" + ], + "geo_area_code": null + }, + { + "id": "594", + "label": "AAMS countries", + "alt_labels": [ + "Associated African and Malagasy States" + ], + "related_ids": [ + "200", + "5083" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "5940", + "label": "non-standard employment", + "alt_labels": [ + "atypical employment", + "atypical work", + "non-standard work" + ], + "related_ids": [ + "5755" + ], + "broader_ids": [ + "4299" + ], + "geo_area_code": null + }, + { + "id": "5941", + "label": "seasonal employment", + "alt_labels": [ + "seasonal work" + ], + "related_ids": [ + "4563", + "5980" + ], + "broader_ids": [ + "5940" + ], + "geo_area_code": null + }, + { + "id": "5942", + "label": "Troika (EU)", + "alt_labels": [ + "Community Troika" + ], + "related_ids": [], + "broader_ids": [ + "5788" + ], + "geo_area_code": null + }, + { + "id": "5943", + "label": "third stage of EMU", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5474" + ], + "geo_area_code": null + }, + { + "id": "5944", + "label": "Turkmenistan", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5448", + "5775" + ], + "geo_area_code": "TKM" + }, + { + "id": "5945", + "label": "administrative supervision", + "alt_labels": [], + "related_ids": [ + "171" + ], + "broader_ids": [ + "77" + ], + "geo_area_code": null + }, + { + "id": "5946", + "label": "Ukraine", + "alt_labels": [], + "related_ids": [ + "c_6547ccb7", + "c_e78f03db" + ], + "broader_ids": [ + "122", + "5775", + "914" + ], + "geo_area_code": "UKR" + }, + { + "id": "5947", + "label": "Ulster-Donegal", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1506" + ], + "geo_area_code": null + }, + { + "id": "5948", + "label": "European Political Union", + "alt_labels": [], + "related_ids": [ + "1467" + ], + "broader_ids": [ + "5442" + ], + "geo_area_code": "EUR" + }, + { + "id": "5949", + "label": "information technology user", + "alt_labels": [ + "computer system user", + "data-processing system user", + "information system user" + ], + "related_ids": [], + "broader_ids": [ + "5922" + ], + "geo_area_code": null + }, + { + "id": "595", + "label": "group farming", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2983" + ], + "geo_area_code": null + }, + { + "id": "5950", + "label": "alternative use of agricultural products", + "alt_labels": [ + "non-food use of agricultural products" + ], + "related_ids": [ + "2734", + "6044" + ], + "broader_ids": [ + "2976" + ], + "geo_area_code": null + }, + { + "id": "5951", + "label": "disease vector", + "alt_labels": [ + "disease carrier", + "disease-carrying insect" + ], + "related_ids": [ + "5225", + "5676", + "837" + ], + "broader_ids": [ + "838" + ], + "geo_area_code": null + }, + { + "id": "5952", + "label": "combat vehicle", + "alt_labels": [ + "armoured vehicle", + "tank" + ], + "related_ids": [], + "broader_ids": [ + "2567" + ], + "geo_area_code": null + }, + { + "id": "5953", + "label": "infringement of EU law", + "alt_labels": [ + "breach of Community law", + "breach of EU law", + "breach of European Union law", + "infringement of Community law", + "infringement of European Union law", + "infringement of the EC Treaty" + ], + "related_ids": [ + "5836" + ], + "broader_ids": [ + "2247" + ], + "geo_area_code": null + }, + { + "id": "5954", + "label": "appeal", + "alt_labels": [ + "appeal in cassation", + "appeal to a higher authority", + "appeal to the Court of Cassation", + "means of appeal", + "means of redress", + "review procedure" + ], + "related_ids": [], + "broader_ids": [ + "1538" + ], + "geo_area_code": null + }, + { + "id": "5955", + "label": "Vojvodina", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5892" + ], + "geo_area_code": null + }, + { + "id": "5956", + "label": "traveller", + "alt_labels": [], + "related_ids": [ + "4511", + "4622" + ], + "broader_ids": [ + "4767" + ], + "geo_area_code": null + }, + { + "id": "5957", + "label": "demilitarised zone", + "alt_labels": [ + "demilitarized zone" + ], + "related_ids": [], + "broader_ids": [ + "3450" + ], + "geo_area_code": null + }, + { + "id": "5958", + "label": "sensitive area", + "alt_labels": [ + "ecologically sensitive area", + "sensitive natural area" + ], + "related_ids": [ + "4801" + ], + "broader_ids": [ + "371" + ], + "geo_area_code": null + }, + { + "id": "5959", + "label": "head of government", + "alt_labels": [ + "prime minister" + ], + "related_ids": [], + "broader_ids": [ + "1172" + ], + "geo_area_code": null + }, + { + "id": "596", + "label": "East of England", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5438" + ], + "geo_area_code": null + }, + { + "id": "5960", + "label": "leader of the opposition", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2155" + ], + "geo_area_code": null + }, + { + "id": "5961", + "label": "head of household", + "alt_labels": [ + "head of the family" + ], + "related_ids": [ + "1864" + ], + "broader_ids": [ + "965" + ], + "geo_area_code": null + }, + { + "id": "5962", + "label": "livestock", + "alt_labels": [ + "flock", + "herd", + "live animals" + ], + "related_ids": [ + "2711", + "2935", + "2937", + "3528", + "442884", + "711" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "5963", + "label": "cheque", + "alt_labels": [], + "related_ids": [ + "3252" + ], + "broader_ids": [ + "1975" + ], + "geo_area_code": null + }, + { + "id": "5964", + "label": "turnover", + "alt_labels": [], + "related_ids": [ + "4585" + ], + "broader_ids": [ + "54" + ], + "geo_area_code": null + }, + { + "id": "5965", + "label": "Chile", + "alt_labels": [ + "Republic of Chile" + ], + "related_ids": [], + "broader_ids": [ + "1105", + "1624", + "2106", + "2119", + "4069", + "6205" + ], + "geo_area_code": "CHL" + }, + { + "id": "5966", + "label": "chemistry", + "alt_labels": [], + "related_ids": [ + "1147", + "1362", + "2364", + "2739", + "3789", + "51", + "5967", + "5968", + "6386" + ], + "broader_ids": [ + "3946" + ], + "geo_area_code": null + }, + { + "id": "5967", + "label": "food chemistry", + "alt_labels": [], + "related_ids": [ + "1590", + "4416", + "5966", + "6052" + ], + "broader_ids": [ + "656" + ], + "geo_area_code": null + }, + { + "id": "5968", + "label": "industrial chemistry", + "alt_labels": [], + "related_ids": [ + "1362", + "5260", + "5966" + ], + "broader_ids": [ + "3949" + ], + "geo_area_code": null + }, + { + "id": "5969", + "label": "China", + "alt_labels": [ + "People\u2019s Republic of China" + ], + "related_ids": [ + "5831" + ], + "broader_ids": [ + "956", + "c_964c9649" + ], + "geo_area_code": "CHN" + }, + { + "id": "597", + "label": "water", + "alt_labels": [], + "related_ids": [ + "1278", + "1523", + "2530", + "2680", + "4628", + "750", + "c_98d1408a" + ], + "broader_ids": [ + "5741" + ], + "geo_area_code": null + }, + { + "id": "5970", + "label": "surgery", + "alt_labels": [ + "anaesthetics", + "microsurgery", + "surgical operation" + ], + "related_ids": [ + "3844", + "5487", + "c_ba4acdb2" + ], + "broader_ids": [ + "5881" + ], + "geo_area_code": null + }, + { + "id": "5971", + "label": "chlorine", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1229" + ], + "geo_area_code": null + }, + { + "id": "5972", + "label": "programme budgeting", + "alt_labels": [ + " programming and budgeting system", + "ABB", + "BFOR", + "PBB", + "PPBS", + "RBB", + "activity-based budgeting", + "budget focused on results", + "performance budgeting", + "performance-based budgeting", + "planning", + "rationalisation of budget choices", + "result-based budgeting" + ], + "related_ids": [ + "1711", + "1721" + ], + "broader_ids": [ + "2448" + ], + "geo_area_code": null + }, + { + "id": "5973", + "label": "choice of technology", + "alt_labels": [ + "technological option" + ], + "related_ids": [ + "2478", + "2792", + "4253" + ], + "broader_ids": [ + "4415" + ], + "geo_area_code": null + }, + { + "id": "5974", + "label": "unemployment", + "alt_labels": [ + "frictional unemployment", + "rate of unemployment", + "unemployment level" + ], + "related_ids": [ + "1802", + "2555", + "3332", + "3518", + "4086", + "5986" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "5975", + "label": "cyclical unemployment", + "alt_labels": [], + "related_ids": [ + "2910" + ], + "broader_ids": [ + "5974" + ], + "geo_area_code": null + }, + { + "id": "5976", + "label": "hidden unemployment", + "alt_labels": [ + "concealed unemployment", + "disguised unemployment" + ], + "related_ids": [], + "broader_ids": [ + "5974" + ], + "geo_area_code": null + }, + { + "id": "5977", + "label": "female unemployment", + "alt_labels": [], + "related_ids": [ + "1740" + ], + "broader_ids": [ + "5974" + ], + "geo_area_code": null + }, + { + "id": "5978", + "label": "youth unemployment", + "alt_labels": [], + "related_ids": [ + "1529" + ], + "broader_ids": [ + "5974" + ], + "geo_area_code": null + }, + { + "id": "5979", + "label": "short-time working", + "alt_labels": [ + "underemployment" + ], + "related_ids": [], + "broader_ids": [ + "2468" + ], + "geo_area_code": null + }, + { + "id": "598", + "label": "EU waters", + "alt_labels": [ + "Community waters", + "European Union waters" + ], + "related_ids": [ + "2455" + ], + "broader_ids": [ + "3992" + ], + "geo_area_code": null + }, + { + "id": "5980", + "label": "seasonal unemployment", + "alt_labels": [], + "related_ids": [ + "4563", + "5941" + ], + "broader_ids": [ + "5974" + ], + "geo_area_code": null + }, + { + "id": "5981", + "label": "structural unemployment", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5974" + ], + "geo_area_code": null + }, + { + "id": "5982", + "label": "temporary layoff", + "alt_labels": [ + "layoff" + ], + "related_ids": [ + "2910", + "98" + ], + "broader_ids": [ + "5974" + ], + "geo_area_code": null + }, + { + "id": "5983", + "label": "unemployment due to technical progress", + "alt_labels": [], + "related_ids": [ + "5383" + ], + "broader_ids": [ + "5974" + ], + "geo_area_code": null + }, + { + "id": "5984", + "label": "abstentionism", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4750" + ], + "geo_area_code": null + }, + { + "id": "5985", + "label": "branch of activity", + "alt_labels": [], + "related_ids": [ + "1307", + "2469", + "5372", + "818" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "5986", + "label": "unemployed person", + "alt_labels": [], + "related_ids": [ + "3332", + "3518", + "5974" + ], + "broader_ids": [ + "2550" + ], + "geo_area_code": null + }, + { + "id": "5987", + "label": "Christianity", + "alt_labels": [], + "related_ids": [ + "6545" + ], + "broader_ids": [ + "3257" + ], + "geo_area_code": null + }, + { + "id": "5988", + "label": "chromium", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1885" + ], + "geo_area_code": null + }, + { + "id": "5989", + "label": "Cyprus", + "alt_labels": [ + "Republic of Cyprus" + ], + "related_ids": [ + "c_99e6dc30" + ], + "broader_ids": [ + "122", + "5283", + "912", + "c_b2c019c8" + ], + "geo_area_code": "CYP" + }, + { + "id": "599", + "label": "percolation water", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "597" + ], + "geo_area_code": null + }, + { + "id": "5990", + "label": "cider", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5018" + ], + "geo_area_code": null + }, + { + "id": "5991", + "label": "International Organisation for Migration", + "alt_labels": [ + "ICM", + "ICME", + "IOM", + "Intergovernmental Committee for European Migration", + "Intergovernmental Committee for Migration", + "International Organization for Migration" + ], + "related_ids": [ + "1909" + ], + "broader_ids": [ + "2188" + ], + "geo_area_code": null + }, + { + "id": "5992", + "label": "economic activity", + "alt_labels": [], + "related_ids": [ + "4006" + ], + "broader_ids": [ + "84" + ], + "geo_area_code": null + }, + { + "id": "5993", + "label": "cement", + "alt_labels": [ + "cement industry" + ], + "related_ids": [], + "broader_ids": [ + "1826" + ], + "geo_area_code": null + }, + { + "id": "5994", + "label": "cinema", + "alt_labels": [ + "cinematography", + "film" + ], + "related_ids": [ + "1363", + "3855" + ], + "broader_ids": [ + "4096" + ], + "geo_area_code": null + }, + { + "id": "5995", + "label": "circular", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5217" + ], + "geo_area_code": null + }, + { + "id": "5996", + "label": "civilisation", + "alt_labels": [ + "civilization" + ], + "related_ids": [], + "broader_ids": [ + "317" + ], + "geo_area_code": null + }, + { + "id": "5997", + "label": "ruling class", + "alt_labels": [ + "elite", + "governing class" + ], + "related_ids": [ + "6883" + ], + "broader_ids": [ + "6002" + ], + "geo_area_code": null + }, + { + "id": "5998", + "label": "lower class", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "6002" + ], + "geo_area_code": null + }, + { + "id": "5999", + "label": "middle class", + "alt_labels": [ + "bourgeoisie" + ], + "related_ids": [], + "broader_ids": [ + "6002" + ], + "geo_area_code": null + }, + { + "id": "6", + "label": "wholesale trade", + "alt_labels": [ + "wholesale dealing", + "wholesale market" + ], + "related_ids": [ + "2653", + "4670" + ], + "broader_ids": [ + "474" + ], + "geo_area_code": null + }, + { + "id": "60", + "label": "accountant", + "alt_labels": [ + "auditor", + "chartered accountant" + ], + "related_ids": [ + "2787" + ], + "broader_ids": [ + "54" + ], + "geo_area_code": null + }, + { + "id": "600", + "label": "bathing water", + "alt_labels": [], + "related_ids": [ + "4470" + ], + "broader_ids": [ + "597" + ], + "geo_area_code": null + }, + { + "id": "6000", + "label": "working class", + "alt_labels": [ + "proletariat" + ], + "related_ids": [ + "2009", + "2207" + ], + "broader_ids": [ + "6002" + ], + "geo_area_code": null + }, + { + "id": "6001", + "label": "peasant class", + "alt_labels": [], + "related_ids": [ + "2010", + "2558" + ], + "broader_ids": [ + "6002" + ], + "geo_area_code": null + }, + { + "id": "6002", + "label": "social class", + "alt_labels": [ + "social milieu", + "socio-economic group" + ], + "related_ids": [ + "1710" + ], + "broader_ids": [ + "4305" + ], + "geo_area_code": null + }, + { + "id": "6003", + "label": "upper class", + "alt_labels": [ + "aristocracy", + "nobility" + ], + "related_ids": [], + "broader_ids": [ + "6002" + ], + "geo_area_code": null + }, + { + "id": "6004", + "label": "classification", + "alt_labels": [ + "UDC", + "heading", + "universal decimal classification" + ], + "related_ids": [], + "broader_ids": [ + "1752" + ], + "geo_area_code": null + }, + { + "id": "6005", + "label": "arbitration clause", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5493" + ], + "geo_area_code": null + }, + { + "id": "6006", + "label": "allocation clause", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3313" + ], + "geo_area_code": null + }, + { + "id": "6007", + "label": "protective clause", + "alt_labels": [ + "protective measure", + "safeguard clause" + ], + "related_ids": [ + "1136", + "1567", + "2449", + "2520", + "4671" + ], + "broader_ids": [ + "3461" + ], + "geo_area_code": null + }, + { + "id": "6008", + "label": "self-employment", + "alt_labels": [], + "related_ids": [ + "3545" + ], + "broader_ids": [ + "4299" + ], + "geo_area_code": null + }, + { + "id": "6009", + "label": "clergy", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3257" + ], + "geo_area_code": null + }, + { + "id": "601", + "label": "spirits", + "alt_labels": [ + "Armagnac", + "Cognac", + "brandy", + "gin", + "grappa", + "marc", + "rum", + "schnapps", + "spirits from distilling cereals", + "spirits from distilling fruit", + "spirits from distilling wine", + "vodka", + "whisky" + ], + "related_ids": [], + "broader_ids": [ + "5018" + ], + "geo_area_code": null + }, + { + "id": "6010", + "label": "customers", + "alt_labels": [ + "CRM", + "clientele", + "clients", + "customer management", + "customer relations", + "customer relationship management", + "customer satisfaction" + ], + "related_ids": [ + "13", + "4413" + ], + "broader_ids": [ + "474" + ], + "geo_area_code": null + }, + { + "id": "6011", + "label": "climate", + "alt_labels": [], + "related_ids": [ + "5482", + "632", + "6384", + "6385" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "6012", + "label": "air conditioning", + "alt_labels": [ + "ventilation" + ], + "related_ids": [], + "broader_ids": [ + "4414" + ], + "geo_area_code": null + }, + { + "id": "6013", + "label": "closing of accounts", + "alt_labels": [ + "clearance of accounts", + "rendering of accounts" + ], + "related_ids": [], + "broader_ids": [ + "1155" + ], + "geo_area_code": null + }, + { + "id": "6014", + "label": "political club", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2180" + ], + "geo_area_code": null + }, + { + "id": "6016", + "label": "UN Conference on Trade and Development", + "alt_labels": [ + "Unctad", + "United Nations Conference on Trade and Development" + ], + "related_ids": [], + "broader_ids": [ + "4365" + ], + "geo_area_code": null + }, + { + "id": "6017", + "label": "political coalition", + "alt_labels": [ + "coalition government", + "post-election alliance", + "post-election pact" + ], + "related_ids": [], + "broader_ids": [ + "4704" + ], + "geo_area_code": null + }, + { + "id": "6018", + "label": "cobalt", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1885" + ], + "geo_area_code": null + }, + { + "id": "6019", + "label": "coding", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4488" + ], + "geo_area_code": null + }, + { + "id": "602", + "label": "freshwater", + "alt_labels": [ + "fresh water", + "freshwater environment", + "spring water" + ], + "related_ids": [ + "1278" + ], + "broader_ids": [ + "597" + ], + "geo_area_code": null + }, + { + "id": "6020", + "label": "highway code", + "alt_labels": [], + "related_ids": [ + "3127", + "7944" + ], + "broader_ids": [ + "3131" + ], + "geo_area_code": null + }, + { + "id": "6021", + "label": "navigational code", + "alt_labels": [], + "related_ids": [ + "2040", + "2041" + ], + "broader_ids": [ + "3131" + ], + "geo_area_code": null + }, + { + "id": "6022", + "label": "labour code", + "alt_labels": [ + "labor code", + "work code" + ], + "related_ids": [], + "broader_ids": [ + "557" + ], + "geo_area_code": null + }, + { + "id": "6023", + "label": "legal code", + "alt_labels": [ + "codification of laws", + "legal codification" + ], + "related_ids": [], + "broader_ids": [ + "4222" + ], + "geo_area_code": null + }, + { + "id": "6024", + "label": "peaceful co-existence", + "alt_labels": [ + "d\u00e9tente" + ], + "related_ids": [ + "3223" + ], + "broader_ids": [ + "6722" + ], + "geo_area_code": null + }, + { + "id": "6025", + "label": "co-financing", + "alt_labels": [ + "joint financing" + ], + "related_ids": [ + "1005", + "4126" + ], + "broader_ids": [ + "1000" + ], + "geo_area_code": null + }, + { + "id": "6026", + "label": "co-determination", + "alt_labels": [ + "co-management", + "co-supervision", + "supervisory board" + ], + "related_ids": [], + "broader_ids": [ + "2266" + ], + "geo_area_code": null + }, + { + "id": "6027", + "label": "coke", + "alt_labels": [ + "coking coal" + ], + "related_ids": [], + "broader_ids": [ + "5386" + ], + "geo_area_code": null + }, + { + "id": "6028", + "label": "budgetary cooperation", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2698" + ], + "geo_area_code": null + }, + { + "id": "6029", + "label": "tax collection", + "alt_labels": [ + "tax revenue" + ], + "related_ids": [], + "broader_ids": [ + "1021" + ], + "geo_area_code": null + }, + { + "id": "603", + "label": "inland waters", + "alt_labels": [], + "related_ids": [ + "2040", + "260" + ], + "broader_ids": [ + "3992" + ], + "geo_area_code": null + }, + { + "id": "6030", + "label": "data collection", + "alt_labels": [ + "compiling data", + "data retrieval" + ], + "related_ids": [], + "broader_ids": [ + "4488" + ], + "geo_area_code": null + }, + { + "id": "6031", + "label": "solar collector", + "alt_labels": [ + "solar energy collector", + "solar heat collector" + ], + "related_ids": [], + "broader_ids": [ + "756" + ], + "geo_area_code": null + }, + { + "id": "6032", + "label": "collectivism", + "alt_labels": [ + "State management" + ], + "related_ids": [ + "639", + "983" + ], + "broader_ids": [ + "3013" + ], + "geo_area_code": null + }, + { + "id": "6033", + "label": "rural community", + "alt_labels": [], + "related_ids": [ + "2558", + "3079" + ], + "broader_ids": [ + "4619" + ], + "geo_area_code": null + }, + { + "id": "6034", + "label": "regional and local authorities", + "alt_labels": [ + "regional subdivision", + "subnational governments" + ], + "related_ids": [ + "3924", + "699", + "c_2212c2c4", + "c_8f1cd55b" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "6035", + "label": "urban community", + "alt_labels": [], + "related_ids": [ + "2559", + "4809" + ], + "broader_ids": [ + "4619" + ], + "geo_area_code": null + }, + { + "id": "6036", + "label": "Colombia", + "alt_labels": [ + "Republic of Colombia" + ], + "related_ids": [], + "broader_ids": [ + "1105", + "1191", + "1624", + "2119", + "4069" + ], + "geo_area_code": "COL" + }, + { + "id": "6037", + "label": "adjustment to school", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4554" + ], + "geo_area_code": null + }, + { + "id": "6038", + "label": "dyestuff", + "alt_labels": [], + "related_ids": [ + "6039" + ], + "broader_ids": [ + "1381" + ], + "geo_area_code": null + }, + { + "id": "6039", + "label": "food colouring", + "alt_labels": [ + "colourant", + "colouring matter" + ], + "related_ids": [ + "1381", + "6038" + ], + "broader_ids": [ + "6052" + ], + "geo_area_code": null + }, + { + "id": "604", + "label": "hill farming", + "alt_labels": [ + "alpine farming" + ], + "related_ids": [ + "1987", + "3051", + "624" + ], + "broader_ids": [ + "2445" + ], + "geo_area_code": null + }, + { + "id": "6040", + "label": "artificial food colouring", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "6039" + ], + "geo_area_code": null + }, + { + "id": "6041", + "label": "natural food colouring", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "6039" + ], + "geo_area_code": null + }, + { + "id": "6042", + "label": "oil seed rape", + "alt_labels": [ + "colza seed", + "rape seed" + ], + "related_ids": [ + "1270" + ], + "broader_ids": [ + "2414" + ], + "geo_area_code": null + }, + { + "id": "6043", + "label": "fuel", + "alt_labels": [], + "related_ids": [ + "3538" + ], + "broader_ids": [ + "3737" + ], + "geo_area_code": null + }, + { + "id": "6044", + "label": "substitute fuel", + "alt_labels": [ + "acetone-butylic fuel", + "oil substitute", + "substitute motor fuel" + ], + "related_ids": [ + "2751", + "3796", + "5262", + "5950" + ], + "broader_ids": [ + "2498" + ], + "geo_area_code": null + }, + { + "id": "6045", + "label": "fossil fuel", + "alt_labels": [], + "related_ids": [ + "1141", + "2366", + "5386" + ], + "broader_ids": [ + "6043" + ], + "geo_area_code": null + }, + { + "id": "6046", + "label": "social adjustment", + "alt_labels": [ + "social adaptation" + ], + "related_ids": [ + "439" + ], + "broader_ids": [ + "4706" + ], + "geo_area_code": null + }, + { + "id": "6047", + "label": "nuclear fuel", + "alt_labels": [ + "fissionable material", + "nuclear fuel element", + "nuclear material", + "nuclear product" + ], + "related_ids": [ + "1412", + "3631", + "4507", + "776" + ], + "broader_ids": [ + "753" + ], + "geo_area_code": null + }, + { + "id": "6048", + "label": "EU agriculture committee", + "alt_labels": [ + "Agricultural Advisory Committee", + "Agricultural Committee of the EC", + "Agricultural Management Committee", + "EC agriculture committee", + "Management Committee for the Common Organisation of Agricultural Markets" + ], + "related_ids": [], + "broader_ids": [ + "2173" + ], + "geo_area_code": null + }, + { + "id": "6049", + "label": "committee (EU)", + "alt_labels": [ + "EC committee" + ], + "related_ids": [], + "broader_ids": [ + "5769" + ], + "geo_area_code": null + }, + { + "id": "605", + "label": "international waters", + "alt_labels": [ + "high seas", + "maritime waters" + ], + "related_ids": [], + "broader_ids": [ + "3992" + ], + "geo_area_code": null + }, + { + "id": "6050", + "label": "advisory committee (EU)", + "alt_labels": [ + "EC advisory committee" + ], + "related_ids": [ + "5511", + "6346" + ], + "broader_ids": [ + "6049" + ], + "geo_area_code": null + }, + { + "id": "6051", + "label": "works council", + "alt_labels": [ + "shop steward", + "workers' delegate", + "workers' representative" + ], + "related_ids": [], + "broader_ids": [ + "3374" + ], + "geo_area_code": null + }, + { + "id": "6052", + "label": "food additive", + "alt_labels": [ + "sensory additive", + "technical additive" + ], + "related_ids": [ + "1590", + "2531", + "28", + "5967", + "6111", + "6789" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "6053", + "label": "EU Council committee", + "alt_labels": [ + "EC Council committee" + ], + "related_ids": [], + "broader_ids": [ + "237" + ], + "geo_area_code": null + }, + { + "id": "6054", + "label": "European Economic and Social Committee", + "alt_labels": [ + "EC ESC", + "EC Economic and Social Committee", + "EESC" + ], + "related_ids": [ + "5129" + ], + "broader_ids": [ + "2163" + ], + "geo_area_code": null + }, + { + "id": "6056", + "label": "joint committee on EU matters", + "alt_labels": [ + "joint committee on EC matters" + ], + "related_ids": [], + "broader_ids": [ + "6049" + ], + "geo_area_code": null + }, + { + "id": "6057", + "label": "standing committee (EU)", + "alt_labels": [ + "EC standing committee" + ], + "related_ids": [], + "broader_ids": [ + "6049" + ], + "geo_area_code": null + }, + { + "id": "6058", + "label": "UN Standing Committee", + "alt_labels": [ + "United Nations Standing Committee" + ], + "related_ids": [], + "broader_ids": [ + "8384" + ], + "geo_area_code": null + }, + { + "id": "6059", + "label": "scientific committee (EU)", + "alt_labels": [ + "EC scientific committee" + ], + "related_ids": [], + "broader_ids": [ + "6049" + ], + "geo_area_code": null + }, + { + "id": "606", + "label": "mineral water", + "alt_labels": [], + "related_ids": [ + "607" + ], + "broader_ids": [ + "5019" + ], + "geo_area_code": null + }, + { + "id": "6060", + "label": "technical committee (EU)", + "alt_labels": [ + "EC technical committee" + ], + "related_ids": [], + "broader_ids": [ + "6049" + ], + "geo_area_code": null + }, + { + "id": "6061", + "label": "structural adjustment", + "alt_labels": [ + "structural reform" + ], + "related_ids": [ + "1056", + "5840" + ], + "broader_ids": [ + "2518" + ], + "geo_area_code": null + }, + { + "id": "6062", + "label": "commercial arbitration", + "alt_labels": [], + "related_ids": [ + "11", + "6130", + "6173", + "6367", + "6617" + ], + "broader_ids": [ + "524" + ], + "geo_area_code": null + }, + { + "id": "6064", + "label": "audit", + "alt_labels": [], + "related_ids": [ + "174", + "4675" + ], + "broader_ids": [ + "1154" + ], + "geo_area_code": null + }, + { + "id": "6067", + "label": "virtual library", + "alt_labels": [ + "cyber library", + "cyberlibrary", + "digital library", + "electronic library" + ], + "related_ids": [ + "6088", + "6191", + "8470" + ], + "broader_ids": [ + "4865" + ], + "geo_area_code": null + }, + { + "id": "607", + "label": "drinking water", + "alt_labels": [], + "related_ids": [ + "141", + "606" + ], + "broader_ids": [ + "597" + ], + "geo_area_code": null + }, + { + "id": "6072", + "label": "Translation Centre for the Bodies of the European Union", + "alt_labels": [ + "CdT" + ], + "related_ids": [], + "broader_ids": [ + "5769" + ], + "geo_area_code": null + }, + { + "id": "6076", + "label": "Community Plant Variety Office", + "alt_labels": [ + "CPVO" + ], + "related_ids": [ + "2723", + "7133" + ], + "broader_ids": [ + "5769" + ], + "geo_area_code": null + }, + { + "id": "6077", + "label": "African Charter on Human and Peoples' Rights", + "alt_labels": [ + "African Charter for Human and Peoples' Rights" + ], + "related_ids": [ + "2202", + "450953" + ], + "broader_ids": [ + "3902" + ], + "geo_area_code": null + }, + { + "id": "6079", + "label": "European Energy Charter", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2498" + ], + "geo_area_code": null + }, + { + "id": "608", + "label": "saltwater", + "alt_labels": [ + "salt water", + "seawater" + ], + "related_ids": [], + "broader_ids": [ + "597" + ], + "geo_area_code": null + }, + { + "id": "6081", + "label": "social clause", + "alt_labels": [ + "basic social norm", + "basic social standard" + ], + "related_ids": [ + "2083", + "3565", + "3908", + "557", + "5765", + "6364", + "857" + ], + "broader_ids": [ + "11" + ], + "geo_area_code": null + }, + { + "id": "6083", + "label": "UN Conference on Environment and Development", + "alt_labels": [ + "Earth Summit", + "Rio Summit", + "UNCED", + "United Nations Conference on Environment and Development" + ], + "related_ids": [ + "5585", + "91" + ], + "broader_ids": [ + "4365" + ], + "geo_area_code": null + }, + { + "id": "6084", + "label": "European Works Council", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "6051" + ], + "geo_area_code": null + }, + { + "id": "6088", + "label": "Internet", + "alt_labels": [ + "web" + ], + "related_ids": [ + "435228", + "4359", + "441", + "6067", + "6089", + "616", + "6176", + "6275", + "6755", + "6894" + ], + "broader_ids": [ + "4361" + ], + "geo_area_code": null + }, + { + "id": "6089", + "label": "electronic commerce", + "alt_labels": [ + "Internet commerce", + "cybercommerce", + "e-commerce", + "online commerce", + "virtual commerce" + ], + "related_ids": [ + "6088", + "7947", + "c_32e52346", + "c_471a61cf", + "c_68ddcc11", + "c_c8363c09" + ], + "broader_ids": [ + "4673" + ], + "geo_area_code": null + }, + { + "id": "609", + "label": "groundwater", + "alt_labels": [ + "aquifer", + "ground water", + "phreatic water", + "water table" + ], + "related_ids": [ + "1276" + ], + "broader_ids": [ + "597" + ], + "geo_area_code": null + }, + { + "id": "6091", + "label": "European standardisation body", + "alt_labels": [ + "ESO", + "European standardisation organisation", + "European standardization body", + "European standardization organization" + ], + "related_ids": [ + "2076", + "3646" + ], + "broader_ids": [ + "2187" + ], + "geo_area_code": null + }, + { + "id": "6093", + "label": "European Committee for Standardisation", + "alt_labels": [ + "CEN", + "European Committee for Standardization" + ], + "related_ids": [], + "broader_ids": [ + "6091" + ], + "geo_area_code": null + }, + { + "id": "6094", + "label": "Cenelec", + "alt_labels": [ + "European Committee for Electrotechnical Standardisation", + "European Committee for Electrotechnical Standardization" + ], + "related_ids": [ + "5235", + "710" + ], + "broader_ids": [ + "6091" + ], + "geo_area_code": null + }, + { + "id": "6095", + "label": "ETSI", + "alt_labels": [ + "European Telecommunications Standards Institute" + ], + "related_ids": [ + "4424", + "5235" + ], + "broader_ids": [ + "6091" + ], + "geo_area_code": null + }, + { + "id": "6099", + "label": "recognition of vocational training qualifications", + "alt_labels": [ + "comparability of qualifications", + "comparability of vocational training qualifications" + ], + "related_ids": [ + "1074" + ], + "broader_ids": [ + "2454" + ], + "geo_area_code": null + }, + { + "id": "61", + "label": "account", + "alt_labels": [ + "financial account" + ], + "related_ids": [], + "broader_ids": [ + "54" + ], + "geo_area_code": null + }, + { + "id": "610", + "label": "surface water", + "alt_labels": [ + "surface fresh water" + ], + "related_ids": [], + "broader_ids": [ + "597" + ], + "geo_area_code": null + }, + { + "id": "6100", + "label": "quality control of agricultural products", + "alt_labels": [], + "related_ids": [ + "2871", + "5233" + ], + "broader_ids": [ + "2442" + ], + "geo_area_code": null + }, + { + "id": "6101", + "label": "EFTA Court", + "alt_labels": [ + "EFTA Court of Justice" + ], + "related_ids": [], + "broader_ids": [ + "176" + ], + "geo_area_code": null + }, + { + "id": "6103", + "label": "hazardous waste", + "alt_labels": [], + "related_ids": [ + "4308" + ], + "broader_ids": [ + "343" + ], + "geo_area_code": null + }, + { + "id": "6104", + "label": "legal deposit", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "667" + ], + "geo_area_code": null + }, + { + "id": "6105", + "label": "social dumping", + "alt_labels": [], + "related_ids": [ + "3581", + "6752", + "7956" + ], + "broader_ids": [ + "580" + ], + "geo_area_code": null + }, + { + "id": "6106", + "label": "established right", + "alt_labels": [ + "protected right" + ], + "related_ids": [ + "557" + ], + "broader_ids": [ + "1589" + ], + "geo_area_code": null + }, + { + "id": "6108", + "label": "transition economy", + "alt_labels": [ + "country in transition", + "economy in transition" + ], + "related_ids": [ + "5437", + "5483", + "6143" + ], + "broader_ids": [ + "5840" + ], + "geo_area_code": null + }, + { + "id": "611", + "label": "territorial waters", + "alt_labels": [ + "coastal rights", + "coastal waters", + "territorial sea", + "twelve-mile zone" + ], + "related_ids": [ + "2532", + "3043", + "4790" + ], + "broader_ids": [ + "542" + ], + "geo_area_code": null + }, + { + "id": "6110", + "label": "electronic publishing", + "alt_labels": [], + "related_ids": [ + "1428", + "5828", + "6767" + ], + "broader_ids": [ + "667" + ], + "geo_area_code": null + }, + { + "id": "6111", + "label": "enzyme", + "alt_labels": [], + "related_ids": [ + "1224", + "3795", + "4416", + "6052" + ], + "broader_ids": [ + "4889" + ], + "geo_area_code": null + }, + { + "id": "6112", + "label": "bovine spongiform encephalopathy", + "alt_labels": [ + "BSE", + "mad cow disease", + "spongiform encephalopathies" + ], + "related_ids": [ + "5719" + ], + "broader_ids": [ + "1755" + ], + "geo_area_code": null + }, + { + "id": "6113", + "label": "European social area", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3346" + ], + "geo_area_code": null + }, + { + "id": "6114", + "label": "group of leading industrialised countries", + "alt_labels": [ + "G7", + "G7/G8", + "G8", + "Group of Eight", + "Group of Seven", + "group of leading industrialized countries" + ], + "related_ids": [ + "2297" + ], + "broader_ids": [ + "2188" + ], + "geo_area_code": null + }, + { + "id": "6115", + "label": "GATS", + "alt_labels": [ + "General Agreement on Trade in Services" + ], + "related_ids": [ + "2602", + "5750", + "5765" + ], + "broader_ids": [ + "1567" + ], + "geo_area_code": null + }, + { + "id": "6116", + "label": "Rio Group", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2190" + ], + "geo_area_code": null + }, + { + "id": "6117", + "label": "establishment of peace", + "alt_labels": [ + "achievement of peace", + "peace process", + "peacebuilding", + "re-establishment of peace" + ], + "related_ids": [], + "broader_ids": [ + "6722" + ], + "geo_area_code": null + }, + { + "id": "612", + "label": "wastewater", + "alt_labels": [ + "process water", + "sewer water", + "waste water" + ], + "related_ids": [ + "4485", + "916" + ], + "broader_ids": [ + "343" + ], + "geo_area_code": null + }, + { + "id": "6120", + "label": "economic intelligence", + "alt_labels": [], + "related_ids": [ + "3669", + "441", + "6910" + ], + "broader_ids": [ + "4486" + ], + "geo_area_code": null + }, + { + "id": "6121", + "label": "zoo", + "alt_labels": [ + "zoological garden" + ], + "related_ids": [ + "2830", + "5462", + "865" + ], + "broader_ids": [ + "5166" + ], + "geo_area_code": null + }, + { + "id": "6124", + "label": "fish disease", + "alt_labels": [ + "gyrodactylosis", + "infectious haematopoietic necrosis", + "infectious salmon anaemia", + "spring viremia of carp", + "viral haemorrhagic septicaemia" + ], + "related_ids": [ + "2435" + ], + "broader_ids": [ + "1755" + ], + "geo_area_code": null + }, + { + "id": "6125", + "label": "globalisation", + "alt_labels": [ + "economic globalisation", + "economic globalization", + "globalisation of economic activity", + "globalisation of the economy", + "globalization", + "internationalisation of economic activity", + "internationalization of economic activity" + ], + "related_ids": [ + "1967", + "5765", + "653", + "7373", + "8549" + ], + "broader_ids": [ + "1463" + ], + "geo_area_code": null + }, + { + "id": "6126", + "label": "multimedia", + "alt_labels": [ + "sound-text-image" + ], + "related_ids": [ + "441", + "6176" + ], + "broader_ids": [ + "6275" + ], + "geo_area_code": null + }, + { + "id": "6128", + "label": "European Union Intellectual Property Office", + "alt_labels": [ + "Community Trade Marks Office", + "Community Trademark Office", + "EUIPO", + "OHIM", + "Office for Harmonization", + "Office for Harmonization in the Internal Market", + "Office for Harmonization in the Internal Market (Trade Marks and Designs)" + ], + "related_ids": [ + "3666" + ], + "broader_ids": [ + "5769" + ], + "geo_area_code": null + }, + { + "id": "6129", + "label": "World Customs Organisation", + "alt_labels": [ + "CCC", + "Customs Cooperation Council", + "WCO", + "World Customs Organization" + ], + "related_ids": [ + "2519" + ], + "broader_ids": [ + "2188" + ], + "geo_area_code": null + }, + { + "id": "613", + "label": "agricultural trade", + "alt_labels": [], + "related_ids": [ + "1988", + "2442", + "2892", + "7204" + ], + "broader_ids": [ + "614" + ], + "geo_area_code": null + }, + { + "id": "6130", + "label": "Dispute Settlement Body", + "alt_labels": [ + "DSB" + ], + "related_ids": [ + "6062", + "6173", + "6367" + ], + "broader_ids": [ + "5765" + ], + "geo_area_code": null + }, + { + "id": "6131", + "label": "Asia\u2013Pacific economic cooperation", + "alt_labels": [ + "APEC", + "Asia-Pacific Economic Cooperation Council", + "Asia-Pacific Economic Cooperation Forum" + ], + "related_ids": [ + "6205" + ], + "broader_ids": [ + "2172", + "2188" + ], + "geo_area_code": null + }, + { + "id": "6132", + "label": "paedophilia", + "alt_labels": [ + "child sexual abuse" + ], + "related_ids": [ + "3916", + "3919", + "6553" + ], + "broader_ids": [ + "5572" + ], + "geo_area_code": null + }, + { + "id": "6133", + "label": "principle of proportionality", + "alt_labels": [ + "principle of necessity" + ], + "related_ids": [], + "broader_ids": [ + "36" + ], + "geo_area_code": null + }, + { + "id": "6134", + "label": "comparative advertising", + "alt_labels": [], + "related_ids": [ + "2862", + "6269", + "75" + ], + "broader_ids": [ + "3581" + ], + "geo_area_code": null + }, + { + "id": "6135", + "label": "regions of Finland", + "alt_labels": [], + "related_ids": [ + "1019" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "6136", + "label": "regions of Austria", + "alt_labels": [], + "related_ids": [ + "4353" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "6138", + "label": "regions of Sweden", + "alt_labels": [], + "related_ids": [ + "4320" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "6139", + "label": "regulation of telecommunications", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4424" + ], + "geo_area_code": null + }, + { + "id": "614", + "label": "trading operation", + "alt_labels": [], + "related_ids": [ + "1616", + "2804", + "4240", + "46", + "4633" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "6140", + "label": "information society", + "alt_labels": [], + "related_ids": [ + "7951", + "c_b12a760a" + ], + "broader_ids": [ + "2472" + ], + "geo_area_code": null + }, + { + "id": "6142", + "label": "Treaty of Amsterdam", + "alt_labels": [ + "Amsterdam Treaty" + ], + "related_ids": [], + "broader_ids": [ + "4479" + ], + "geo_area_code": null + }, + { + "id": "6143", + "label": "economic transition", + "alt_labels": [], + "related_ids": [ + "6108" + ], + "broader_ids": [ + "427" + ], + "geo_area_code": null + }, + { + "id": "6145", + "label": "TRIMs", + "alt_labels": [ + "trade-related investment measures" + ], + "related_ids": [ + "1488", + "1631", + "5750", + "5765" + ], + "broader_ids": [ + "1567" + ], + "geo_area_code": null + }, + { + "id": "6146", + "label": "TRIPS", + "alt_labels": [ + "TRIPS Agreement", + "agreement on intellectual property rights", + "trade-related aspects of intellectual property rights" + ], + "related_ids": [ + "2816", + "5750", + "5765" + ], + "broader_ids": [ + "1567" + ], + "geo_area_code": null + }, + { + "id": "6148", + "label": "BusinessEurope", + "alt_labels": [ + "Confederation of European Business", + "UNICE", + "Union of Industrial and Employer's Confederations of Europe" + ], + "related_ids": [ + "820" + ], + "broader_ids": [ + "2187", + "2191" + ], + "geo_area_code": null + }, + { + "id": "615", + "label": "subsistence farming", + "alt_labels": [], + "related_ids": [ + "4208", + "647" + ], + "broader_ids": [ + "4358" + ], + "geo_area_code": null + }, + { + "id": "6150", + "label": "working life", + "alt_labels": [ + "active life" + ], + "related_ids": [], + "broader_ids": [ + "5475" + ], + "geo_area_code": null + }, + { + "id": "6151", + "label": "euro area", + "alt_labels": [ + "Euroland", + "eurozone" + ], + "related_ids": [ + "4602", + "665", + "c_777eba81" + ], + "broader_ids": [ + "4798" + ], + "geo_area_code": null + }, + { + "id": "6152", + "label": "zoonosis", + "alt_labels": [], + "related_ids": [ + "1755", + "2988", + "5047", + "6322" + ], + "broader_ids": [ + "1754" + ], + "geo_area_code": null + }, + { + "id": "6155", + "label": "Taric", + "alt_labels": [ + "Integrated Tariff of the European Union", + "integrated tariff of the European Communities" + ], + "related_ids": [], + "broader_ids": [ + "4381" + ], + "geo_area_code": null + }, + { + "id": "6159", + "label": "Economic Community of Central African States", + "alt_labels": [ + "ECCAS" + ], + "related_ids": [], + "broader_ids": [ + "2167" + ], + "geo_area_code": null + }, + { + "id": "616", + "label": "exchange of information", + "alt_labels": [ + "information exchange", + "information transfer" + ], + "related_ids": [ + "441", + "5334", + "6088", + "617" + ], + "broader_ids": [ + "1422" + ], + "geo_area_code": null + }, + { + "id": "6160", + "label": "Eutelsat", + "alt_labels": [ + "European Telecommunications Satellite Organisation", + "European Telecommunications Satellite Organization" + ], + "related_ids": [], + "broader_ids": [ + "2187" + ], + "geo_area_code": null + }, + { + "id": "6161", + "label": "European League for Economic Cooperation", + "alt_labels": [ + "ELEC" + ], + "related_ids": [], + "broader_ids": [ + "2187", + "2191" + ], + "geo_area_code": null + }, + { + "id": "6163", + "label": "World Organisation for Animal Health", + "alt_labels": [ + "International Office of Epizootics", + "OIE", + "World Organization for Animal Health" + ], + "related_ids": [ + "1755" + ], + "broader_ids": [ + "2188" + ], + "geo_area_code": null + }, + { + "id": "617", + "label": "exchange of publications", + "alt_labels": [], + "related_ids": [ + "616" + ], + "broader_ids": [ + "5109" + ], + "geo_area_code": null + }, + { + "id": "6171", + "label": "cloning", + "alt_labels": [ + "clone" + ], + "related_ids": [ + "3408", + "7348" + ], + "broader_ids": [ + "4111" + ], + "geo_area_code": null + }, + { + "id": "6173", + "label": "trade dispute", + "alt_labels": [ + "trade conflict" + ], + "related_ids": [ + "435469", + "6062", + "6130", + "6617" + ], + "broader_ids": [ + "3185" + ], + "geo_area_code": null + }, + { + "id": "6174", + "label": "company in difficulties", + "alt_labels": [], + "related_ids": [ + "835" + ], + "broader_ids": [ + "4703" + ], + "geo_area_code": null + }, + { + "id": "6176", + "label": "information highway", + "alt_labels": [ + "information superhighway" + ], + "related_ids": [ + "441", + "5862", + "6088", + "6126" + ], + "broader_ids": [ + "3422" + ], + "geo_area_code": null + }, + { + "id": "6177", + "label": "intranet", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "6088" + ], + "geo_area_code": null + }, + { + "id": "6178", + "label": "extranet", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "6088" + ], + "geo_area_code": null + }, + { + "id": "618", + "label": "extra-EU trade", + "alt_labels": [ + "extra-Community trade" + ], + "related_ids": [ + "3568" + ], + "broader_ids": [ + "2450" + ], + "geo_area_code": null + }, + { + "id": "6182", + "label": "browser", + "alt_labels": [ + "browser software application", + "explorer", + "navigator" + ], + "related_ids": [ + "1696" + ], + "broader_ids": [ + "6088" + ], + "geo_area_code": null + }, + { + "id": "6188", + "label": "document management", + "alt_labels": [ + "document management technique" + ], + "related_ids": [ + "1428" + ], + "broader_ids": [ + "494" + ], + "geo_area_code": null + }, + { + "id": "6189", + "label": "electronic document management", + "alt_labels": [ + "EDM", + "EDMS", + "electronic data management", + "electronic document management system" + ], + "related_ids": [], + "broader_ids": [ + "6188" + ], + "geo_area_code": null + }, + { + "id": "619", + "label": "intra-EU trade", + "alt_labels": [ + "intra-Community trade" + ], + "related_ids": [], + "broader_ids": [ + "2450" + ], + "geo_area_code": null + }, + { + "id": "6190", + "label": "optical character recognition", + "alt_labels": [ + "OCR", + "optical reading" + ], + "related_ids": [ + "6192" + ], + "broader_ids": [ + "6189" + ], + "geo_area_code": null + }, + { + "id": "6191", + "label": "digitisation", + "alt_labels": [ + "digitalisation" + ], + "related_ids": [ + "6067", + "6192", + "c_658ff033" + ], + "broader_ids": [ + "6189" + ], + "geo_area_code": null + }, + { + "id": "6192", + "label": "scanner", + "alt_labels": [], + "related_ids": [ + "6190", + "6191" + ], + "broader_ids": [ + "3701" + ], + "geo_area_code": null + }, + { + "id": "6194", + "label": "Lower Austria", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "6136" + ], + "geo_area_code": null + }, + { + "id": "6195", + "label": "Upper Austria", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "6136" + ], + "geo_area_code": null + }, + { + "id": "6196", + "label": "Burgenland", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "6136" + ], + "geo_area_code": null + }, + { + "id": "6197", + "label": "Carinthia", + "alt_labels": [ + "K\u00e4rnten" + ], + "related_ids": [], + "broader_ids": [ + "6136" + ], + "geo_area_code": null + }, + { + "id": "6198", + "label": "Salzburg", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "6136" + ], + "geo_area_code": null + }, + { + "id": "6199", + "label": "Styria", + "alt_labels": [ + "Steiermark" + ], + "related_ids": [], + "broader_ids": [ + "6136" + ], + "geo_area_code": null + }, + { + "id": "62", + "label": "consolidated account", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "61" + ], + "geo_area_code": null + }, + { + "id": "620", + "label": "trade by group of countries", + "alt_labels": [ + "inter-zonal trade" + ], + "related_ids": [], + "broader_ids": [ + "11" + ], + "geo_area_code": null + }, + { + "id": "6200", + "label": "Tyrol", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "6136" + ], + "geo_area_code": null + }, + { + "id": "6201", + "label": "Vorarlberg", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "6136" + ], + "geo_area_code": null + }, + { + "id": "6202", + "label": "Vienna", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "6136" + ], + "geo_area_code": null + }, + { + "id": "6205", + "label": "APEC countries", + "alt_labels": [], + "related_ids": [ + "6131" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "6207", + "label": "European Centre of Enterprises with Public Participation", + "alt_labels": [ + "CEEP", + "European Centre of Enterprises with Public Participation and of Enterprises of General Economic Interest" + ], + "related_ids": [ + "830" + ], + "broader_ids": [ + "2187" + ], + "geo_area_code": null + }, + { + "id": "621", + "label": "trade by country", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "11" + ], + "geo_area_code": null + }, + { + "id": "6210", + "label": "deadline for payment", + "alt_labels": [ + "credit period" + ], + "related_ids": [], + "broader_ids": [ + "2216" + ], + "geo_area_code": null + }, + { + "id": "6212", + "label": "stability pact", + "alt_labels": [ + "Stability and Growth Pact" + ], + "related_ids": [ + "2510", + "6340" + ], + "broader_ids": [ + "5555" + ], + "geo_area_code": null + }, + { + "id": "6215", + "label": "youth policy", + "alt_labels": [], + "related_ids": [ + "1528", + "c_50620749" + ], + "broader_ids": [ + "2517" + ], + "geo_area_code": null + }, + { + "id": "6216", + "label": "consumer policy", + "alt_labels": [ + "policy of consumerism" + ], + "related_ids": [], + "broader_ids": [ + "138" + ], + "geo_area_code": null + }, + { + "id": "6218", + "label": "EU policy - national policy", + "alt_labels": [ + "Community policy-national policy", + "European Union policy - national policy", + "national policy - EU policy", + "national policy - European Union policy", + "national policy-Community policy" + ], + "related_ids": [], + "broader_ids": [ + "2451" + ], + "geo_area_code": null + }, + { + "id": "6219", + "label": "European Union Agency for Fundamental Rights", + "alt_labels": [ + "EUMC", + "European Monitoring Centre on Racism and Xenophobia", + "FRA", + "Fundamental Rights Agency" + ], + "related_ids": [ + "2881", + "3912", + "538", + "553" + ], + "broader_ids": [ + "5769" + ], + "geo_area_code": null + }, + { + "id": "622", + "label": "trade by product", + "alt_labels": [], + "related_ids": [ + "4828" + ], + "broader_ids": [ + "614" + ], + "geo_area_code": null + }, + { + "id": "6222", + "label": "area of freedom, security and justice", + "alt_labels": [ + "AFSJ", + "JHA", + "justice and home affairs" + ], + "related_ids": [ + "1633", + "2272", + "5649", + "5796", + "860", + "c_8a658bb0" + ], + "broader_ids": [ + "4060" + ], + "geo_area_code": null + }, + { + "id": "6223", + "label": "Serbia and Montenegro", + "alt_labels": [ + "FRY", + "Federal Republic of Yugoslavia", + "new Yugoslavia" + ], + "related_ids": [], + "broader_ids": [ + "5781", + "914" + ], + "geo_area_code": "SCG" + }, + { + "id": "623", + "label": "sampling", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4213" + ], + "geo_area_code": null + }, + { + "id": "6230", + "label": "age discrimination", + "alt_labels": [ + "ageism", + "agism", + "discrimination based on age" + ], + "related_ids": [ + "1528", + "1529", + "2333", + "c_58d943b0" + ], + "broader_ids": [ + "3908" + ], + "geo_area_code": null + }, + { + "id": "6231", + "label": "discrimination on the basis of sexual orientation", + "alt_labels": [ + "discrimination against homosexuals", + "discrimination against sexual minorities" + ], + "related_ids": [], + "broader_ids": [ + "3908" + ], + "geo_area_code": null + }, + { + "id": "6233", + "label": "care for the elderly", + "alt_labels": [], + "related_ids": [ + "1153", + "2333", + "6542" + ], + "broader_ids": [ + "1004" + ], + "geo_area_code": null + }, + { + "id": "6236", + "label": "unfair dismissal", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1646" + ], + "geo_area_code": null + }, + { + "id": "6237", + "label": "Stockholm", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "6138" + ], + "geo_area_code": null + }, + { + "id": "6238", + "label": "East Middle Sweden", + "alt_labels": [ + "\u00d6stra Mellansverige" + ], + "related_ids": [], + "broader_ids": [ + "6138" + ], + "geo_area_code": null + }, + { + "id": "6239", + "label": "South Sweden", + "alt_labels": [ + "Southern Sweden", + "Sydsverige" + ], + "related_ids": [], + "broader_ids": [ + "6138" + ], + "geo_area_code": null + }, + { + "id": "624", + "label": "extensive farming", + "alt_labels": [], + "related_ids": [ + "604", + "6308" + ], + "broader_ids": [ + "4363" + ], + "geo_area_code": null + }, + { + "id": "6240", + "label": "North Middle Sweden", + "alt_labels": [ + "Norra Mellansverige" + ], + "related_ids": [], + "broader_ids": [ + "6138" + ], + "geo_area_code": null + }, + { + "id": "6241", + "label": "Middle Norrland (Sweden)", + "alt_labels": [ + "Mellersta Norrland" + ], + "related_ids": [], + "broader_ids": [ + "6138" + ], + "geo_area_code": null + }, + { + "id": "6242", + "label": "Upper Norrland (Sweden)", + "alt_labels": [ + "Northern Norrland", + "\u00d6vre Norrland" + ], + "related_ids": [], + "broader_ids": [ + "6138" + ], + "geo_area_code": null + }, + { + "id": "6245", + "label": "Sm\u00e5land and the islands (Sweden)", + "alt_labels": [ + "Sm\u00e5land med \u00f6arna" + ], + "related_ids": [], + "broader_ids": [ + "6138" + ], + "geo_area_code": null + }, + { + "id": "6246", + "label": "West Sweden", + "alt_labels": [ + "V\u00e4stsverige" + ], + "related_ids": [], + "broader_ids": [ + "6138" + ], + "geo_area_code": null + }, + { + "id": "6247", + "label": "Eastern Finland", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "6135" + ], + "geo_area_code": null + }, + { + "id": "6249", + "label": "Lapland", + "alt_labels": [ + "Northern Finland" + ], + "related_ids": [], + "broader_ids": [ + "6135" + ], + "geo_area_code": null + }, + { + "id": "625", + "label": "pay scale", + "alt_labels": [ + "escalator scale", + "sliding wage scale" + ], + "related_ids": [], + "broader_ids": [ + "1026" + ], + "geo_area_code": null + }, + { + "id": "6251", + "label": "Southern Finland", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "6135" + ], + "geo_area_code": null + }, + { + "id": "6252", + "label": "\u00c5land", + "alt_labels": [ + "Ahvenenmaa", + "\u00c5land Islands" + ], + "related_ids": [], + "broader_ids": [ + "130", + "6135" + ], + "geo_area_code": "ALA" + }, + { + "id": "6253", + "label": "Social Policy Agreement (EU)", + "alt_labels": [ + "Social Policy Agreement", + "Social Protocol" + ], + "related_ids": [ + "1817", + "688" + ], + "broader_ids": [ + "3346" + ], + "geo_area_code": null + }, + { + "id": "6254", + "label": "discrimination based on disability", + "alt_labels": [], + "related_ids": [ + "1231" + ], + "broader_ids": [ + "3908" + ], + "geo_area_code": null + }, + { + "id": "6255", + "label": "ECHO", + "alt_labels": [ + "Directorate-General for Humanitarian Aid and Civil Protection", + "European Community Humanitarian Office", + "Humanitarian Aid and Civil Protection DG", + "Office for Humanitarian Aid" + ], + "related_ids": [ + "3057", + "3074", + "6374" + ], + "broader_ids": [ + "5769" + ], + "geo_area_code": null + }, + { + "id": "6256", + "label": "European Anti-fraud Office", + "alt_labels": [ + "OLAF" + ], + "related_ids": [ + "5648" + ], + "broader_ids": [ + "5769" + ], + "geo_area_code": null + }, + { + "id": "6257", + "label": "simplification of legislation", + "alt_labels": [ + "simplifying legislation" + ], + "related_ids": [ + "525", + "8468", + "c_cef8ea9d" + ], + "broader_ids": [ + "4222" + ], + "geo_area_code": null + }, + { + "id": "626", + "label": "lighting", + "alt_labels": [], + "related_ids": [ + "1828" + ], + "broader_ids": [ + "4414" + ], + "geo_area_code": null + }, + { + "id": "6260", + "label": "DNA", + "alt_labels": [ + "deoxyribonucleic acid" + ], + "related_ids": [ + "7410" + ], + "broader_ids": [ + "5651" + ], + "geo_area_code": null + }, + { + "id": "6261", + "label": "virtual reality", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1426" + ], + "geo_area_code": null + }, + { + "id": "6262", + "label": "picture synthesis", + "alt_labels": [ + "generative computer graphics" + ], + "related_ids": [], + "broader_ids": [ + "1426" + ], + "geo_area_code": null + }, + { + "id": "6263", + "label": "evaluation method", + "alt_labels": [ + "evaluation" + ], + "related_ids": [ + "918", + "923" + ], + "broader_ids": [ + "1894" + ], + "geo_area_code": null + }, + { + "id": "6264", + "label": "observation", + "alt_labels": [ + "observation technique" + ], + "related_ids": [], + "broader_ids": [ + "1894" + ], + "geo_area_code": null + }, + { + "id": "6265", + "label": "principle of communitisation", + "alt_labels": [ + "communitisation" + ], + "related_ids": [], + "broader_ids": [ + "36" + ], + "geo_area_code": null + }, + { + "id": "6266", + "label": "liability of the State", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5127" + ], + "geo_area_code": null + }, + { + "id": "6267", + "label": "simulation", + "alt_labels": [ + "simulation model" + ], + "related_ids": [ + "1835", + "3293", + "4413", + "5922" + ], + "broader_ids": [ + "1894" + ], + "geo_area_code": null + }, + { + "id": "6268", + "label": "surveillance concerning imports", + "alt_labels": [ + "Community surveillance" + ], + "related_ids": [], + "broader_ids": [ + "2488" + ], + "geo_area_code": null + }, + { + "id": "6269", + "label": "comparative analysis", + "alt_labels": [ + "comparative assessment", + "comparative research", + "comparison" + ], + "related_ids": [ + "3922", + "5627", + "6134", + "6362", + "671" + ], + "broader_ids": [ + "1894" + ], + "geo_area_code": null + }, + { + "id": "627", + "label": "school abroad", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "873" + ], + "geo_area_code": null + }, + { + "id": "6270", + "label": "analysis of causes", + "alt_labels": [ + "causality", + "cause-effect" + ], + "related_ids": [], + "broader_ids": [ + "1894" + ], + "geo_area_code": null + }, + { + "id": "6271", + "label": "qualitative analysis", + "alt_labels": [], + "related_ids": [ + "180", + "5300", + "6362" + ], + "broader_ids": [ + "1894" + ], + "geo_area_code": null + }, + { + "id": "6272", + "label": "quantitative analysis", + "alt_labels": [], + "related_ids": [ + "5300" + ], + "broader_ids": [ + "1894" + ], + "geo_area_code": null + }, + { + "id": "6273", + "label": "special leave", + "alt_labels": [ + "sabbatical leave" + ], + "related_ids": [], + "broader_ids": [ + "106" + ], + "geo_area_code": null + }, + { + "id": "6274", + "label": "enhanced cooperation", + "alt_labels": [ + "closer cooperation", + "differentiated integration", + "hard-core" + ], + "related_ids": [], + "broader_ids": [ + "5442" + ], + "geo_area_code": null + }, + { + "id": "6275", + "label": "hypermedia", + "alt_labels": [], + "related_ids": [ + "6088" + ], + "broader_ids": [ + "1426" + ], + "geo_area_code": null + }, + { + "id": "6276", + "label": "hypertext", + "alt_labels": [ + "hyperlink" + ], + "related_ids": [], + "broader_ids": [ + "6275" + ], + "geo_area_code": null + }, + { + "id": "6277", + "label": "euthanasia", + "alt_labels": [ + "right to euthanasia" + ], + "related_ids": [ + "4323", + "5169", + "7396" + ], + "broader_ids": [ + "1636" + ], + "geo_area_code": null + }, + { + "id": "6278", + "label": "Palau", + "alt_labels": [ + "Republic of Palau" + ], + "related_ids": [], + "broader_ids": [ + "1903", + "5083", + "8366", + "c_b2c019c8" + ], + "geo_area_code": "PLW" + }, + { + "id": "6279", + "label": "Norfolk Island", + "alt_labels": [ + "Territory of Norfolk Island" + ], + "related_ids": [], + "broader_ids": [ + "2113" + ], + "geo_area_code": "NFK" + }, + { + "id": "628", + "label": "European school", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "873" + ], + "geo_area_code": null + }, + { + "id": "6280", + "label": "Niue", + "alt_labels": [ + "Republic of Niue" + ], + "related_ids": [], + "broader_ids": [ + "2546", + "5083", + "8366" + ], + "geo_area_code": "NIU" + }, + { + "id": "6281", + "label": "Tokelau", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2546", + "8366" + ], + "geo_area_code": "TKL" + }, + { + "id": "6282", + "label": "Ceuta", + "alt_labels": [ + "Autonomous City of Ceuta" + ], + "related_ids": [ + "311", + "7353" + ], + "broader_ids": [ + "864" + ], + "geo_area_code": null + }, + { + "id": "6283", + "label": "Melilla", + "alt_labels": [ + "Autonomous City of Melilla" + ], + "related_ids": [ + "311", + "7353" + ], + "broader_ids": [ + "864" + ], + "geo_area_code": null + }, + { + "id": "6284", + "label": "opinion (EU)", + "alt_labels": [ + "Community opinion" + ], + "related_ids": [ + "4024", + "4026", + "4449" + ], + "broader_ids": [ + "5258" + ], + "geo_area_code": null + }, + { + "id": "6285", + "label": "opinion of the Court of Auditors", + "alt_labels": [ + "Court of Auditors\u2019 opinion" + ], + "related_ids": [ + "256" + ], + "broader_ids": [ + "6284" + ], + "geo_area_code": null + }, + { + "id": "6286", + "label": "EU Charter of Fundamental Rights", + "alt_labels": [ + "Charter of Fundamental Rights of the European Union", + "European Charter of Fundamental Rights", + "Fundamental Rights Charter" + ], + "related_ids": [ + "5326", + "538", + "5484", + "584" + ], + "broader_ids": [ + "5629" + ], + "geo_area_code": null + }, + { + "id": "6287", + "label": "democratic deficit", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5611" + ], + "geo_area_code": null + }, + { + "id": "6288", + "label": "High Representative of the Union for Foreign Affairs and Security Policy", + "alt_labels": [ + "High Representative for the CFSP" + ], + "related_ids": [ + "4038", + "5788" + ], + "broader_ids": [ + "447472" + ], + "geo_area_code": null + }, + { + "id": "6289", + "label": "Resolution of the Council of the European Union", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3484" + ], + "geo_area_code": null + }, + { + "id": "629", + "label": "international school", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "873" + ], + "geo_area_code": null + }, + { + "id": "6290", + "label": "resolution of the European Council", + "alt_labels": [ + "European Council resolution" + ], + "related_ids": [], + "broader_ids": [ + "3484" + ], + "geo_area_code": null + }, + { + "id": "6292", + "label": "mode of production", + "alt_labels": [], + "related_ids": [ + "3013" + ], + "broader_ids": [ + "2481" + ], + "geo_area_code": null + }, + { + "id": "6293", + "label": "production target", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2399" + ], + "geo_area_code": null + }, + { + "id": "6294", + "label": "production technique", + "alt_labels": [], + "related_ids": [ + "3632" + ], + "broader_ids": [ + "2481" + ], + "geo_area_code": null + }, + { + "id": "6295", + "label": "transgenic animal", + "alt_labels": [ + "genetically engineered animal", + "genetically modified animal" + ], + "related_ids": [ + "2830", + "3667" + ], + "broader_ids": [ + "5768" + ], + "geo_area_code": null + }, + { + "id": "6296", + "label": "transgenic plant", + "alt_labels": [ + "genetically engineered plant", + "genetically modified plant" + ], + "related_ids": [ + "1475", + "2723", + "3409", + "4081", + "7133" + ], + "broader_ids": [ + "5768" + ], + "geo_area_code": null + }, + { + "id": "6297", + "label": "diffusion of innovations", + "alt_labels": [], + "related_ids": [ + "1439" + ], + "broader_ids": [ + "4496" + ], + "geo_area_code": null + }, + { + "id": "6298", + "label": "production standard", + "alt_labels": [], + "related_ids": [ + "2481", + "2728", + "3845" + ], + "broader_ids": [ + "2077" + ], + "geo_area_code": null + }, + { + "id": "6299", + "label": "obsolete technology", + "alt_labels": [ + "obsolete technique", + "technological obsolescence" + ], + "related_ids": [], + "broader_ids": [ + "4415" + ], + "geo_area_code": null + }, + { + "id": "63", + "label": "trading account", + "alt_labels": [ + "operating account" + ], + "related_ids": [], + "broader_ids": [ + "61" + ], + "geo_area_code": null + }, + { + "id": "630", + "label": "nursery school", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "679" + ], + "geo_area_code": null + }, + { + "id": "6300", + "label": "prospective technological studies", + "alt_labels": [ + "technology forecasting", + "technology foresight" + ], + "related_ids": [ + "2797", + "5354", + "c_0b6b83e1" + ], + "broader_ids": [ + "923" + ], + "geo_area_code": null + }, + { + "id": "6302", + "label": "organisation of research", + "alt_labels": [], + "related_ids": [ + "2478", + "3660" + ], + "broader_ids": [ + "2914" + ], + "geo_area_code": null + }, + { + "id": "6303", + "label": "scientific discovery", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2924" + ], + "geo_area_code": null + }, + { + "id": "6304", + "label": "precautionary principle", + "alt_labels": [], + "related_ids": [ + "1596", + "2825", + "4074", + "6569" + ], + "broader_ids": [ + "1894" + ], + "geo_area_code": null + }, + { + "id": "6305", + "label": "field research", + "alt_labels": [], + "related_ids": [ + "3660" + ], + "broader_ids": [ + "2914" + ], + "geo_area_code": null + }, + { + "id": "6306", + "label": "research results", + "alt_labels": [], + "related_ids": [ + "923" + ], + "broader_ids": [ + "2914" + ], + "geo_area_code": null + }, + { + "id": "6307", + "label": "traceability", + "alt_labels": [ + "traceability of animals", + "traceability of products" + ], + "related_ids": [ + "1590", + "1598", + "6569", + "893" + ], + "broader_ids": [ + "6271" + ], + "geo_area_code": null + }, + { + "id": "6308", + "label": "sustainable agriculture", + "alt_labels": [ + "multifaceted agriculture", + "multifunctional agriculture" + ], + "related_ids": [ + "325", + "5585", + "624", + "6309", + "6324" + ], + "broader_ids": [ + "2442" + ], + "geo_area_code": null + }, + { + "id": "6309", + "label": "European agricultural model", + "alt_labels": [ + "European farming model", + "European model of agriculture" + ], + "related_ids": [ + "6308" + ], + "broader_ids": [ + "2969" + ], + "geo_area_code": null + }, + { + "id": "631", + "label": "national school", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "873" + ], + "geo_area_code": null + }, + { + "id": "6310", + "label": "agri-environmental plan", + "alt_labels": [], + "related_ids": [ + "5585", + "6313" + ], + "broader_ids": [ + "2971" + ], + "geo_area_code": null + }, + { + "id": "6311", + "label": "land policies", + "alt_labels": [ + "agrarian policies" + ], + "related_ids": [ + "1314", + "2465", + "2814", + "3265", + "962" + ], + "broader_ids": [ + "2442" + ], + "geo_area_code": null + }, + { + "id": "6312", + "label": "farming project", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2971" + ], + "geo_area_code": null + }, + { + "id": "6313", + "label": "agricultural area with environmental restrictions", + "alt_labels": [ + "farming area with environmental restrictions" + ], + "related_ids": [ + "3034", + "4801", + "6310" + ], + "broader_ids": [ + "2445" + ], + "geo_area_code": null + }, + { + "id": "6314", + "label": "agroforestry", + "alt_labels": [ + "agroforestry system", + "agrosilviculture", + "farm forestry" + ], + "related_ids": [ + "4352", + "4363" + ], + "broader_ids": [ + "4358" + ], + "geo_area_code": null + }, + { + "id": "6315", + "label": "crop losses", + "alt_labels": [ + "crop damage", + "failed harvest", + "harvest losses" + ], + "related_ids": [ + "2318", + "2925", + "3155", + "3274", + "413", + "5683" + ], + "broader_ids": [ + "2725" + ], + "geo_area_code": null + }, + { + "id": "6316", + "label": "agricultural census", + "alt_labels": [ + "census of agriculture", + "farm census", + "livestock census" + ], + "related_ids": [ + "2907" + ], + "broader_ids": [ + "4257" + ], + "geo_area_code": null + }, + { + "id": "6317", + "label": "irrigated agriculture", + "alt_labels": [ + "irrigated farming", + "rain-fed agriculture" + ], + "related_ids": [ + "1534", + "2680" + ], + "broader_ids": [ + "4363" + ], + "geo_area_code": null + }, + { + "id": "6318", + "label": "crop rotation", + "alt_labels": [ + "rotation cropping" + ], + "related_ids": [ + "1521" + ], + "broader_ids": [ + "4363" + ], + "geo_area_code": null + }, + { + "id": "6319", + "label": "silo", + "alt_labels": [], + "related_ids": [ + "4291" + ], + "broader_ids": [ + "152" + ], + "geo_area_code": null + }, + { + "id": "632", + "label": "ecology", + "alt_labels": [ + "environmental science" + ], + "related_ids": [ + "2470", + "2919", + "6011", + "664", + "844", + "c_d8ba2fe4" + ], + "broader_ids": [ + "3941" + ], + "geo_area_code": null + }, + { + "id": "6320", + "label": "energy crop", + "alt_labels": [ + "fuel crop" + ], + "related_ids": [ + "3538", + "4892", + "8412" + ], + "broader_ids": [ + "2723" + ], + "geo_area_code": null + }, + { + "id": "6321", + "label": "oil crop", + "alt_labels": [], + "related_ids": [ + "2414" + ], + "broader_ids": [ + "2723" + ], + "geo_area_code": null + }, + { + "id": "6322", + "label": "zootechnics", + "alt_labels": [ + "zootechny" + ], + "related_ids": [ + "1224", + "2924", + "3667", + "4810", + "6152", + "c_8c634c9b" + ], + "broader_ids": [ + "711" + ], + "geo_area_code": null + }, + { + "id": "6323", + "label": "boreal forest", + "alt_labels": [], + "related_ids": [ + "2503" + ], + "broader_ids": [ + "1063" + ], + "geo_area_code": null + }, + { + "id": "6324", + "label": "sustainable forest management", + "alt_labels": [], + "related_ids": [ + "6308" + ], + "broader_ids": [ + "4352" + ], + "geo_area_code": null + }, + { + "id": "6325", + "label": "forest certification", + "alt_labels": [], + "related_ids": [ + "5696" + ], + "broader_ids": [ + "6324" + ], + "geo_area_code": null + }, + { + "id": "6326", + "label": "European forestry policy", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2505" + ], + "geo_area_code": null + }, + { + "id": "6327", + "label": "EFICS", + "alt_labels": [ + "European Forestry Information and Communication System" + ], + "related_ids": [], + "broader_ids": [ + "6326" + ], + "geo_area_code": null + }, + { + "id": "6328", + "label": "Mediterranean forest", + "alt_labels": [], + "related_ids": [ + "645" + ], + "broader_ids": [ + "1063" + ], + "geo_area_code": null + }, + { + "id": "6329", + "label": "temperate forest", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1063" + ], + "geo_area_code": null + }, + { + "id": "633", + "label": "ecologism", + "alt_labels": [], + "related_ids": [ + "2007", + "2254" + ], + "broader_ids": [ + "1282" + ], + "geo_area_code": null + }, + { + "id": "6331", + "label": "forestry statistics", + "alt_labels": [], + "related_ids": [ + "4256", + "4257" + ], + "broader_ids": [ + "651" + ], + "geo_area_code": null + }, + { + "id": "6332", + "label": "European currency", + "alt_labels": [ + "EUA", + "European unit of account", + "unit of account" + ], + "related_ids": [ + "1973" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "6333", + "label": "Ecu", + "alt_labels": [ + "European Currency Unit" + ], + "related_ids": [], + "broader_ids": [ + "6332" + ], + "geo_area_code": null + }, + { + "id": "6334", + "label": "Euribor", + "alt_labels": [ + "European Interbank Offered Rate" + ], + "related_ids": [ + "5883" + ], + "broader_ids": [ + "6151" + ], + "geo_area_code": null + }, + { + "id": "6335", + "label": "conversion rate", + "alt_labels": [ + "dual conversion rate" + ], + "related_ids": [], + "broader_ids": [ + "2486" + ], + "geo_area_code": null + }, + { + "id": "6336", + "label": "Asian Development Bank", + "alt_labels": [ + "ADB", + "AsDB" + ], + "related_ids": [ + "4806" + ], + "broader_ids": [ + "2172" + ], + "geo_area_code": null + }, + { + "id": "6337", + "label": "Central American Bank for Economic Integration", + "alt_labels": [ + "CABEI" + ], + "related_ids": [ + "4806" + ], + "broader_ids": [ + "3727" + ], + "geo_area_code": null + }, + { + "id": "6338", + "label": "Caribbean Development Bank", + "alt_labels": [ + "CDB", + "Caribank" + ], + "related_ids": [ + "4806" + ], + "broader_ids": [ + "2170" + ], + "geo_area_code": null + }, + { + "id": "6339", + "label": "agricultural credit", + "alt_labels": [ + "agricultural loan" + ], + "related_ids": [ + "2965", + "4752" + ], + "broader_ids": [ + "285" + ], + "geo_area_code": null + }, + { + "id": "634", + "label": "econometrics", + "alt_labels": [], + "related_ids": [ + "3933" + ], + "broader_ids": [ + "1800" + ], + "geo_area_code": null + }, + { + "id": "6340", + "label": "stability programme", + "alt_labels": [ + "stability and convergence programmes" + ], + "related_ids": [ + "202", + "6212" + ], + "broader_ids": [ + "2448" + ], + "geo_area_code": null + }, + { + "id": "6342", + "label": "European tax cooperation", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2504" + ], + "geo_area_code": null + }, + { + "id": "6343", + "label": "tax reform", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2504" + ], + "geo_area_code": null + }, + { + "id": "6344", + "label": "migrant unemployment", + "alt_labels": [], + "related_ids": [ + "3320", + "4562" + ], + "broader_ids": [ + "5974" + ], + "geo_area_code": null + }, + { + "id": "6345", + "label": "continuing vocational training", + "alt_labels": [ + "lifelong vocational training" + ], + "related_ids": [], + "broader_ids": [ + "1074" + ], + "geo_area_code": null + }, + { + "id": "6346", + "label": "Employment Committee (EU)", + "alt_labels": [ + "Employment Committee", + "Employment and Labour Market Committee", + "advisory Employment Committee" + ], + "related_ids": [ + "6050" + ], + "broader_ids": [ + "2454" + ], + "geo_area_code": null + }, + { + "id": "6347", + "label": "European Employment Strategy", + "alt_labels": [ + "Coordinated Strategy for Employment", + "European Strategy on Employment" + ], + "related_ids": [ + "5205", + "6348", + "6362", + "688" + ], + "broader_ids": [ + "2454" + ], + "geo_area_code": null + }, + { + "id": "6348", + "label": "worker adaptability", + "alt_labels": [ + "adaptation of the worker", + "employee adaptability", + "staff adaptability", + "workforce adaptability" + ], + "related_ids": [ + "6347" + ], + "broader_ids": [ + "1802" + ], + "geo_area_code": null + }, + { + "id": "635", + "label": "market access", + "alt_labels": [ + "trade outlet" + ], + "related_ids": [], + "broader_ids": [ + "2449" + ], + "geo_area_code": null + }, + { + "id": "6350", + "label": "labour flexibility", + "alt_labels": [ + "labour force flexibility", + "manpower flexibility", + "work flexibility", + "workforce flexibility" + ], + "related_ids": [ + "2184" + ], + "broader_ids": [ + "1802" + ], + "geo_area_code": null + }, + { + "id": "6351", + "label": "skill obsolescence", + "alt_labels": [ + "obsolescence of qualifications", + "obsolete qualification" + ], + "related_ids": [ + "3532" + ], + "broader_ids": [ + "2868" + ], + "geo_area_code": null + }, + { + "id": "6353", + "label": "labour shortage", + "alt_labels": [ + "lack of staff", + "staff shortage" + ], + "related_ids": [], + "broader_ids": [ + "4851" + ], + "geo_area_code": null + }, + { + "id": "6354", + "label": "multiskilled worker", + "alt_labels": [ + "multi-skilled worker" + ], + "related_ids": [], + "broader_ids": [ + "1737" + ], + "geo_area_code": null + }, + { + "id": "6355", + "label": "head-hunting", + "alt_labels": [ + "labour pirating", + "labour poaching", + "poaching" + ], + "related_ids": [], + "broader_ids": [ + "2943" + ], + "geo_area_code": null + }, + { + "id": "6356", + "label": "reassignment", + "alt_labels": [ + "internal reassignment", + "internal transfer", + "job reassignment" + ], + "related_ids": [ + "3325", + "3600", + "7949" + ], + "broader_ids": [ + "5475" + ], + "geo_area_code": null + }, + { + "id": "6357", + "label": "demotion", + "alt_labels": [ + "downgrading" + ], + "related_ids": [], + "broader_ids": [ + "5475" + ], + "geo_area_code": null + }, + { + "id": "6358", + "label": "Ecofin", + "alt_labels": [ + "EURO.X", + "Ecofin Council", + "Economic and Financial Affairs Council" + ], + "related_ids": [], + "broader_ids": [ + "447536" + ], + "geo_area_code": null + }, + { + "id": "6359", + "label": "non-participating country", + "alt_labels": [ + "out country", + "pre-in country" + ], + "related_ids": [], + "broader_ids": [ + "6151" + ], + "geo_area_code": null + }, + { + "id": "636", + "label": "intensive farming", + "alt_labels": [], + "related_ids": [ + "2727", + "323", + "3275", + "577", + "715", + "840" + ], + "broader_ids": [ + "4363" + ], + "geo_area_code": null + }, + { + "id": "6360", + "label": "participating country", + "alt_labels": [ + "in country" + ], + "related_ids": [], + "broader_ids": [ + "6151" + ], + "geo_area_code": null + }, + { + "id": "6361", + "label": "resistance of materials", + "alt_labels": [ + "fatigue failure", + "materials fatigue", + "materials fracture", + "strength of materials" + ], + "related_ids": [], + "broader_ids": [ + "4418" + ], + "geo_area_code": null + }, + { + "id": "6362", + "label": "benchmarking", + "alt_labels": [ + "performance rating" + ], + "related_ids": [ + "1800", + "2724", + "45", + "6269", + "6271", + "6347" + ], + "broader_ids": [ + "4415" + ], + "geo_area_code": null + }, + { + "id": "6363", + "label": "non-lethal weapon", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2647" + ], + "geo_area_code": null + }, + { + "id": "6364", + "label": "fair trade", + "alt_labels": [ + "ethical trade" + ], + "related_ids": [ + "1881", + "2844", + "3082", + "6081" + ], + "broader_ids": [ + "2449" + ], + "geo_area_code": null + }, + { + "id": "6365", + "label": "service concession", + "alt_labels": [], + "related_ids": [ + "4136" + ], + "broader_ids": [ + "1810" + ], + "geo_area_code": null + }, + { + "id": "6366", + "label": "commercial contract", + "alt_labels": [], + "related_ids": [ + "164" + ], + "broader_ids": [ + "524" + ], + "geo_area_code": null + }, + { + "id": "6367", + "label": "international commercial arbitration", + "alt_labels": [], + "related_ids": [ + "2380", + "6062", + "6130" + ], + "broader_ids": [ + "11" + ], + "geo_area_code": null + }, + { + "id": "6369", + "label": "services of general interest", + "alt_labels": [ + "general-interest services", + "public-interest services", + "services of general economic interest", + "services of public interest" + ], + "related_ids": [ + "2602", + "4136" + ], + "broader_ids": [ + "4099" + ], + "geo_area_code": null + }, + { + "id": "637", + "label": "economy", + "alt_labels": [], + "related_ids": [ + "1728", + "1901", + "3933", + "4302", + "638", + "6396", + "644", + "648", + "662", + "c_749f2ce9" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "6370", + "label": "electronic signature", + "alt_labels": [ + "digital signature" + ], + "related_ids": [ + "5181", + "5809" + ], + "broader_ids": [ + "6089" + ], + "geo_area_code": null + }, + { + "id": "6371", + "label": "trade statistics", + "alt_labels": [], + "related_ids": [ + "4256", + "4262" + ], + "broader_ids": [ + "13" + ], + "geo_area_code": null + }, + { + "id": "6372", + "label": "exclusion from an international organisation", + "alt_labels": [ + "suspension from an international organisation" + ], + "related_ids": [ + "3483" + ], + "broader_ids": [ + "2189" + ], + "geo_area_code": null + }, + { + "id": "6373", + "label": "Union for the Mediterranean", + "alt_labels": [ + "Barcelona Process", + "Euro-Mediterranean partnership", + "Euromed", + "UfM" + ], + "related_ids": [ + "5780", + "7932" + ], + "broader_ids": [ + "3489" + ], + "geo_area_code": null + }, + { + "id": "6374", + "label": "aid evaluation", + "alt_labels": [], + "related_ids": [ + "6255", + "918" + ], + "broader_ids": [ + "3003" + ], + "geo_area_code": null + }, + { + "id": "6375", + "label": "conflict prevention", + "alt_labels": [ + "jus contra bellum", + "law on the prevention of war", + "prevention of conflict", + "prevention of war" + ], + "related_ids": [ + "8481", + "8482", + "c_5b447e3a" + ], + "broader_ids": [ + "99" + ], + "geo_area_code": null + }, + { + "id": "6376", + "label": "ethnic cleansing", + "alt_labels": [], + "related_ids": [ + "8415" + ], + "broader_ids": [ + "1210" + ], + "geo_area_code": null + }, + { + "id": "6377", + "label": "anti-personnel weapon", + "alt_labels": [ + "APL", + "anti-personnel landmine", + "anti-personnel mine", + "land mine" + ], + "related_ids": [ + "8410" + ], + "broader_ids": [ + "2567" + ], + "geo_area_code": null + }, + { + "id": "6378", + "label": "espionage", + "alt_labels": [ + "Echelon" + ], + "related_ids": [ + "2832", + "866" + ], + "broader_ids": [ + "4140" + ], + "geo_area_code": null + }, + { + "id": "6379", + "label": "military secret", + "alt_labels": [], + "related_ids": [ + "5884" + ], + "broader_ids": [ + "2464" + ], + "geo_area_code": null + }, + { + "id": "638", + "label": "agricultural economics", + "alt_labels": [ + "farm economics" + ], + "related_ids": [ + "4298", + "637", + "651" + ], + "broader_ids": [ + "2442" + ], + "geo_area_code": null + }, + { + "id": "6380", + "label": "defence statistics", + "alt_labels": [], + "related_ids": [ + "4256" + ], + "broader_ids": [ + "2464" + ], + "geo_area_code": null + }, + { + "id": "6381", + "label": "soil analysis", + "alt_labels": [ + "soil survey", + "soil testing" + ], + "related_ids": [], + "broader_ids": [ + "3931" + ], + "geo_area_code": null + }, + { + "id": "6382", + "label": "space science", + "alt_labels": [], + "related_ids": [ + "1358", + "3092", + "4185", + "5238" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "6383", + "label": "astronautics", + "alt_labels": [], + "related_ids": [ + "5216" + ], + "broader_ids": [ + "6382" + ], + "geo_area_code": null + }, + { + "id": "6384", + "label": "climatology", + "alt_labels": [], + "related_ids": [ + "4786", + "5482", + "6011" + ], + "broader_ids": [ + "1892" + ], + "geo_area_code": null + }, + { + "id": "6385", + "label": "bioclimatology", + "alt_labels": [], + "related_ids": [ + "4786", + "4921", + "6011" + ], + "broader_ids": [ + "6384" + ], + "geo_area_code": null + }, + { + "id": "6386", + "label": "soil chemistry", + "alt_labels": [], + "related_ids": [ + "5966" + ], + "broader_ids": [ + "3931" + ], + "geo_area_code": null + }, + { + "id": "6387", + "label": "cultural geography", + "alt_labels": [], + "related_ids": [ + "317", + "3956" + ], + "broader_ids": [ + "1148" + ], + "geo_area_code": null + }, + { + "id": "6388", + "label": "human geography", + "alt_labels": [ + "anthropogeography" + ], + "related_ids": [ + "1221", + "3300" + ], + "broader_ids": [ + "1148" + ], + "geo_area_code": null + }, + { + "id": "6389", + "label": "regional geography", + "alt_labels": [ + "regional analysis", + "regional study" + ], + "related_ids": [ + "3031", + "3058" + ], + "broader_ids": [ + "1148" + ], + "geo_area_code": null + }, + { + "id": "639", + "label": "collectivised economy", + "alt_labels": [ + "collectivized economy" + ], + "related_ids": [ + "6032" + ], + "broader_ids": [ + "637" + ], + "geo_area_code": null + }, + { + "id": "6390", + "label": "geomorphology", + "alt_labels": [ + "morphology of the earth" + ], + "related_ids": [ + "3146" + ], + "broader_ids": [ + "3952" + ], + "geo_area_code": null + }, + { + "id": "6391", + "label": "sedimentology", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1151" + ], + "geo_area_code": null + }, + { + "id": "6392", + "label": "soil type", + "alt_labels": [ + "soil classification", + "soil taxonomy" + ], + "related_ids": [], + "broader_ids": [ + "3931" + ], + "geo_area_code": null + }, + { + "id": "6394", + "label": "ethnography", + "alt_labels": [], + "related_ids": [ + "1202" + ], + "broader_ids": [ + "892" + ], + "geo_area_code": null + }, + { + "id": "6395", + "label": "industrial sociology", + "alt_labels": [], + "related_ids": [ + "2184", + "82" + ], + "broader_ids": [ + "4205" + ], + "geo_area_code": null + }, + { + "id": "6396", + "label": "environmental economics", + "alt_labels": [], + "related_ids": [ + "1711", + "637" + ], + "broader_ids": [ + "2470" + ], + "geo_area_code": null + }, + { + "id": "6397", + "label": "environmental education", + "alt_labels": [ + "environmental awareness", + "environmental training" + ], + "related_ids": [ + "3276" + ], + "broader_ids": [ + "2470" + ], + "geo_area_code": null + }, + { + "id": "6398", + "label": "water protection", + "alt_labels": [ + "groundwater protection", + "water conservation" + ], + "related_ids": [ + "2530", + "3144", + "3531", + "3535" + ], + "broader_ids": [ + "2825" + ], + "geo_area_code": null + }, + { + "id": "64", + "label": "64 PRODUCTION, TECHNOLOGY AND RESEARCH", + "alt_labels": [], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "640", + "label": "concerted economic action", + "alt_labels": [], + "related_ids": [ + "2462" + ], + "broader_ids": [ + "3013" + ], + "geo_area_code": null + }, + { + "id": "6400", + "label": "reduction of gas emissions", + "alt_labels": [ + "climate change mitigation", + "gas emission reduction", + "mitigation measure", + "mitigation of climate change", + "mitigation policy" + ], + "related_ids": [ + "3638", + "434056", + "5605" + ], + "broader_ids": [ + "434743" + ], + "geo_area_code": null + }, + { + "id": "6401", + "label": "environmental liability", + "alt_labels": [ + "liability for ecological damage", + "liability for environmental damage", + "liability for environmental harm", + "responsibility for environmental damage" + ], + "related_ids": [ + "2626", + "3503", + "3513", + "3926", + "5571" + ], + "broader_ids": [ + "535" + ], + "geo_area_code": null + }, + { + "id": "6402", + "label": "environmental statistics", + "alt_labels": [], + "related_ids": [ + "2825", + "4256" + ], + "broader_ids": [ + "2919" + ], + "geo_area_code": null + }, + { + "id": "6403", + "label": "whale", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1775" + ], + "geo_area_code": null + }, + { + "id": "6404", + "label": "marine ecosystem", + "alt_labels": [], + "related_ids": [ + "c_d59d3160" + ], + "broader_ids": [ + "c_0e092eaf" + ], + "geo_area_code": null + }, + { + "id": "6405", + "label": "terrestrial ecosystem", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "664" + ], + "geo_area_code": null + }, + { + "id": "6406", + "label": "seal", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1775" + ], + "geo_area_code": null + }, + { + "id": "6407", + "label": "acidification", + "alt_labels": [ + "acidification of the environment", + "environmental acidification" + ], + "related_ids": [ + "3988", + "416", + "4165", + "5035" + ], + "broader_ids": [ + "2524" + ], + "geo_area_code": null + }, + { + "id": "6408", + "label": "sewage sludge", + "alt_labels": [], + "related_ids": [ + "1884", + "4485", + "767" + ], + "broader_ids": [ + "343" + ], + "geo_area_code": null + }, + { + "id": "6409", + "label": "unauthorised dumping", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "343" + ], + "geo_area_code": null + }, + { + "id": "641", + "label": "economies of scale", + "alt_labels": [], + "related_ids": [ + "275" + ], + "broader_ids": [ + "5123" + ], + "geo_area_code": null + }, + { + "id": "6410", + "label": "chemical waste", + "alt_labels": [], + "related_ids": [ + "2739" + ], + "broader_ids": [ + "343" + ], + "geo_area_code": null + }, + { + "id": "6411", + "label": "electronic waste", + "alt_labels": [ + "electrical waste", + "used battery", + "waste electrical and electronic equipment" + ], + "related_ids": [ + "1400", + "1401", + "5410" + ], + "broader_ids": [ + "343" + ], + "geo_area_code": null + }, + { + "id": "6412", + "label": "hospital waste", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "343" + ], + "geo_area_code": null + }, + { + "id": "6413", + "label": "accidental pollution", + "alt_labels": [], + "related_ids": [ + "4074", + "6914", + "921" + ], + "broader_ids": [ + "2524" + ], + "geo_area_code": null + }, + { + "id": "6414", + "label": "local pollution", + "alt_labels": [], + "related_ids": [ + "5650" + ], + "broader_ids": [ + "2524" + ], + "geo_area_code": null + }, + { + "id": "642", + "label": "energy saving", + "alt_labels": [ + "rational use of energy", + "waste of energy" + ], + "related_ids": [ + "1516" + ], + "broader_ids": [ + "2498" + ], + "geo_area_code": null + }, + { + "id": "643", + "label": "war economy", + "alt_labels": [], + "related_ids": [ + "1210" + ], + "broader_ids": [ + "637" + ], + "geo_area_code": null + }, + { + "id": "644", + "label": "business administration", + "alt_labels": [ + "business economics" + ], + "related_ids": [ + "1156", + "637" + ], + "broader_ids": [ + "2469" + ], + "geo_area_code": null + }, + { + "id": "645", + "label": "Mediterranean agriculture", + "alt_labels": [], + "related_ids": [ + "1900", + "3073", + "6328" + ], + "broader_ids": [ + "2445" + ], + "geo_area_code": null + }, + { + "id": "646", + "label": "market economy", + "alt_labels": [ + "capitalism", + "capitalist economy" + ], + "related_ids": [ + "2128", + "4077" + ], + "broader_ids": [ + "3013" + ], + "geo_area_code": null + }, + { + "id": "647", + "label": "subsistence economy", + "alt_labels": [], + "related_ids": [ + "615" + ], + "broader_ids": [ + "637" + ], + "geo_area_code": null + }, + { + "id": "648", + "label": "transport economics", + "alt_labels": [], + "related_ids": [ + "637" + ], + "broader_ids": [ + "2494" + ], + "geo_area_code": null + }, + { + "id": "649", + "label": "controlled economy", + "alt_labels": [], + "related_ids": [ + "2402" + ], + "broader_ids": [ + "3013" + ], + "geo_area_code": null + }, + { + "id": "65", + "label": "county", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "6034" + ], + "geo_area_code": null + }, + { + "id": "650", + "label": "housekeeping economy", + "alt_labels": [ + "domestic work", + "home economics" + ], + "related_ids": [ + "1739", + "3849", + "942", + "975" + ], + "broader_ids": [ + "637" + ], + "geo_area_code": null + }, + { + "id": "651", + "label": "forestry economics", + "alt_labels": [], + "related_ids": [ + "638" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "652", + "label": "industrial economy", + "alt_labels": [ + "industrial society" + ], + "related_ids": [ + "2405", + "2481", + "2507", + "2720", + "3707", + "4303", + "c_20f6ad03" + ], + "broader_ids": [ + "637" + ], + "geo_area_code": null + }, + { + "id": "653", + "label": "world economy", + "alt_labels": [ + "international economy" + ], + "related_ids": [ + "1016", + "11", + "2721", + "6125" + ], + "broader_ids": [ + "637" + ], + "geo_area_code": null + }, + { + "id": "6534", + "label": "international adoption", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "117" + ], + "geo_area_code": null + }, + { + "id": "6535", + "label": "conflict of generations", + "alt_labels": [ + "generation gap" + ], + "related_ids": [], + "broader_ids": [ + "965" + ], + "geo_area_code": null + }, + { + "id": "6536", + "label": "adoption law", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "540" + ], + "geo_area_code": null + }, + { + "id": "6537", + "label": "stepfamily", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "965" + ], + "geo_area_code": null + }, + { + "id": "6538", + "label": "polygamy", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4184" + ], + "geo_area_code": null + }, + { + "id": "6539", + "label": "family solidarity", + "alt_labels": [], + "related_ids": [ + "1231", + "2333" + ], + "broader_ids": [ + "965" + ], + "geo_area_code": null + }, + { + "id": "654", + "label": "mixed economy", + "alt_labels": [], + "related_ids": [ + "2031", + "4194" + ], + "broader_ids": [ + "3013" + ], + "geo_area_code": null + }, + { + "id": "6540", + "label": "diaspora", + "alt_labels": [], + "related_ids": [ + "3300" + ], + "broader_ids": [ + "1909" + ], + "geo_area_code": null + }, + { + "id": "6541", + "label": "EU migration policy", + "alt_labels": [ + "Community migration policy", + "Community policy on migration", + "European Union migration policy" + ], + "related_ids": [ + "1633", + "c_16e35fe6" + ], + "broader_ids": [ + "2509" + ], + "geo_area_code": null + }, + { + "id": "6542", + "label": "dependence of elderly persons", + "alt_labels": [ + "dependence of old persons", + "dependency of elderly persons", + "elderly dependence", + "independence of elderly persons", + "independence of the elderly" + ], + "related_ids": [ + "2333", + "6233" + ], + "broader_ids": [ + "2690" + ], + "geo_area_code": null + }, + { + "id": "6543", + "label": "population forecast", + "alt_labels": [ + "demographic forecast", + "population projection" + ], + "related_ids": [], + "broader_ids": [ + "1773" + ], + "geo_area_code": null + }, + { + "id": "6544", + "label": "generation renewal", + "alt_labels": [ + "generation replacement", + "renewal of generations", + "replacement of generations" + ], + "related_ids": [], + "broader_ids": [ + "3318" + ], + "geo_area_code": null + }, + { + "id": "6545", + "label": "Christian", + "alt_labels": [], + "related_ids": [ + "5987" + ], + "broader_ids": [ + "3486" + ], + "geo_area_code": null + }, + { + "id": "6546", + "label": "Muslim", + "alt_labels": [ + "Moslem" + ], + "related_ids": [ + "1508" + ], + "broader_ids": [ + "3486" + ], + "geo_area_code": null + }, + { + "id": "6547", + "label": "European association", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2944" + ], + "geo_area_code": null + }, + { + "id": "6548", + "label": "independence of the disabled", + "alt_labels": [ + "autonomy of the disabled", + "independence of disabled persons" + ], + "related_ids": [], + "broader_ids": [ + "1231" + ], + "geo_area_code": null + }, + { + "id": "6549", + "label": "social behaviour", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4706" + ], + "geo_area_code": null + }, + { + "id": "655", + "label": "national economy", + "alt_labels": [], + "related_ids": [ + "2406", + "2722", + "56" + ], + "broader_ids": [ + "637" + ], + "geo_area_code": null + }, + { + "id": "6550", + "label": "integration of the disabled", + "alt_labels": [ + "integration of disabled persons", + "integration of the handicapped" + ], + "related_ids": [ + "4559" + ], + "broader_ids": [ + "1231" + ], + "geo_area_code": null + }, + { + "id": "6552", + "label": "social pact", + "alt_labels": [], + "related_ids": [ + "5587" + ], + "broader_ids": [ + "2517" + ], + "geo_area_code": null + }, + { + "id": "6553", + "label": "child pornography", + "alt_labels": [], + "related_ids": [ + "3919", + "5572", + "6132" + ], + "broader_ids": [ + "5800" + ], + "geo_area_code": null + }, + { + "id": "6554", + "label": "religious tourism", + "alt_labels": [], + "related_ids": [ + "3257" + ], + "broader_ids": [ + "4470" + ], + "geo_area_code": null + }, + { + "id": "6555", + "label": "youth violence", + "alt_labels": [ + "violence among young people" + ], + "related_ids": [], + "broader_ids": [ + "4728" + ], + "geo_area_code": null + }, + { + "id": "6556", + "label": "violence at school", + "alt_labels": [ + "violence in schools" + ], + "related_ids": [], + "broader_ids": [ + "6555" + ], + "geo_area_code": null + }, + { + "id": "6557", + "label": "domestic violence", + "alt_labels": [ + "family violence", + "marital violence", + "violence against a partner" + ], + "related_ids": [ + "4727" + ], + "broader_ids": [ + "4728" + ], + "geo_area_code": null + }, + { + "id": "6558", + "label": "cultural exception", + "alt_labels": [ + "exception clause for cultural matters" + ], + "related_ids": [ + "5183", + "5187", + "529", + "5765" + ], + "broader_ids": [ + "2459" + ], + "geo_area_code": null + }, + { + "id": "6559", + "label": "European identity", + "alt_labels": [], + "related_ids": [ + "1464" + ], + "broader_ids": [ + "5667" + ], + "geo_area_code": null + }, + { + "id": "656", + "label": "agri-foodstuffs", + "alt_labels": [ + "agri-foodstuffs chain" + ], + "related_ids": [ + "3796", + "4498" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "6560", + "label": "religious fundamentalism", + "alt_labels": [], + "related_ids": [ + "1628", + "3486", + "5634" + ], + "broader_ids": [ + "3257" + ], + "geo_area_code": null + }, + { + "id": "6561", + "label": "new religion", + "alt_labels": [ + "new age" + ], + "related_ids": [], + "broader_ids": [ + "3257" + ], + "geo_area_code": null + }, + { + "id": "6562", + "label": "European cultural event", + "alt_labels": [ + "European Year", + "European city of culture" + ], + "related_ids": [], + "broader_ids": [ + "1780" + ], + "geo_area_code": null + }, + { + "id": "6563", + "label": "cultural promotion", + "alt_labels": [ + "promotion of culture" + ], + "related_ids": [], + "broader_ids": [ + "2459" + ], + "geo_area_code": null + }, + { + "id": "6564", + "label": "universal health coverage", + "alt_labels": [], + "related_ids": [ + "5894" + ], + "broader_ids": [ + "4050" + ], + "geo_area_code": null + }, + { + "id": "6565", + "label": "medical law", + "alt_labels": [], + "related_ids": [ + "1852" + ], + "broader_ids": [ + "5764" + ], + "geo_area_code": null + }, + { + "id": "6566", + "label": "medical error", + "alt_labels": [], + "related_ids": [ + "3497", + "4000" + ], + "broader_ids": [ + "3370" + ], + "geo_area_code": null + }, + { + "id": "6567", + "label": "chronic illness", + "alt_labels": [ + "chronic disease" + ], + "related_ids": [], + "broader_ids": [ + "1754" + ], + "geo_area_code": null + }, + { + "id": "6568", + "label": "generic drug", + "alt_labels": [ + "generic medicine" + ], + "related_ids": [], + "broader_ids": [ + "3813" + ], + "geo_area_code": null + }, + { + "id": "6569", + "label": "food safety", + "alt_labels": [ + "food product safety", + "food quality safety", + "safety of food" + ], + "related_ids": [ + "2531", + "2836", + "3730", + "387", + "6304", + "6307", + "7126", + "7222", + "c_1af36ac9", + "c_28750470", + "c_60d786af", + "c_8c634c9b" + ], + "broader_ids": [ + "1268" + ], + "geo_area_code": null + }, + { + "id": "657", + "label": "planned economy", + "alt_labels": [], + "related_ids": [ + "2402" + ], + "broader_ids": [ + "3013" + ], + "geo_area_code": null + }, + { + "id": "6570", + "label": "palliative care", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5899" + ], + "geo_area_code": null + }, + { + "id": "658", + "label": "post-industrial economy", + "alt_labels": [ + "post-industrial society" + ], + "related_ids": [], + "broader_ids": [ + "637" + ], + "geo_area_code": null + }, + { + "id": "659", + "label": "public economy", + "alt_labels": [], + "related_ids": [ + "830" + ], + "broader_ids": [ + "637" + ], + "geo_area_code": null + }, + { + "id": "66", + "label": "concentration of the population", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3300" + ], + "geo_area_code": null + }, + { + "id": "660", + "label": "regional economy", + "alt_labels": [], + "related_ids": [ + "1497", + "2407", + "2515", + "431", + "59" + ], + "broader_ids": [ + "637" + ], + "geo_area_code": null + }, + { + "id": "6609", + "label": "self-regulation", + "alt_labels": [ + "co-regulation", + "soft law", + "voluntary regulation" + ], + "related_ids": [ + "2077", + "7930" + ], + "broader_ids": [ + "4222" + ], + "geo_area_code": null + }, + { + "id": "661", + "label": "underground economy", + "alt_labels": [ + "black economy", + "counter-economy", + "grey economy", + "submerged economy", + "unofficial economy" + ], + "related_ids": [ + "3169", + "4549", + "4573" + ], + "broader_ids": [ + "637" + ], + "geo_area_code": null + }, + { + "id": "6610", + "label": "administrative code", + "alt_labels": [], + "related_ids": [ + "517" + ], + "broader_ids": [ + "6023" + ], + "geo_area_code": null + }, + { + "id": "6611", + "label": "history of law", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3935" + ], + "geo_area_code": null + }, + { + "id": "6612", + "label": "unintentional crime", + "alt_labels": [ + "unintentional offence" + ], + "related_ids": [], + "broader_ids": [ + "1432" + ], + "geo_area_code": null + }, + { + "id": "6613", + "label": "psychological harassment", + "alt_labels": [ + "bullying", + "mobbing", + "moral harassment" + ], + "related_ids": [ + "c_e4f135ba" + ], + "broader_ids": [ + "3943" + ], + "geo_area_code": null + }, + { + "id": "6614", + "label": "impunity", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3513" + ], + "geo_area_code": null + }, + { + "id": "6615", + "label": "criminal responsibility of minors", + "alt_labels": [], + "related_ids": [ + "1528" + ], + "broader_ids": [ + "3513" + ], + "geo_area_code": null + }, + { + "id": "6616", + "label": "sexual tourism", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5572" + ], + "geo_area_code": null + }, + { + "id": "6617", + "label": "arbitration", + "alt_labels": [], + "related_ids": [ + "2371", + "2380", + "6062", + "6173" + ], + "broader_ids": [ + "2701" + ], + "geo_area_code": null + }, + { + "id": "6618", + "label": "backlog of court cases", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2701" + ], + "geo_area_code": null + }, + { + "id": "6619", + "label": "injunction", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2701" + ], + "geo_area_code": null + }, + { + "id": "662", + "label": "urban economy", + "alt_labels": [], + "related_ids": [ + "515", + "637" + ], + "broader_ids": [ + "4619" + ], + "geo_area_code": null + }, + { + "id": "6621", + "label": "repeal", + "alt_labels": [ + "abrogation", + "annulment", + "revocation" + ], + "related_ids": [], + "broader_ids": [ + "5923" + ], + "geo_area_code": null + }, + { + "id": "6622", + "label": "extraterritorial jurisdiction", + "alt_labels": [ + "extraterritorial authority" + ], + "related_ids": [ + "6723" + ], + "broader_ids": [ + "42" + ], + "geo_area_code": null + }, + { + "id": "6623", + "label": "independence of the judiciary", + "alt_labels": [ + "independence of the justice system", + "judicial independence" + ], + "related_ids": [ + "4093" + ], + "broader_ids": [ + "5923" + ], + "geo_area_code": null + }, + { + "id": "6624", + "label": "maritime court", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1543" + ], + "geo_area_code": null + }, + { + "id": "6625", + "label": "marriage of convenience", + "alt_labels": [], + "related_ids": [ + "1915", + "566" + ], + "broader_ids": [ + "1818" + ], + "geo_area_code": null + }, + { + "id": "6626", + "label": "Schengen Information System", + "alt_labels": [ + "SIS", + "Specific Information Exchange System" + ], + "related_ids": [ + "5552" + ], + "broader_ids": [ + "5405" + ], + "geo_area_code": null + }, + { + "id": "6627", + "label": "religious conflict", + "alt_labels": [], + "related_ids": [ + "1210", + "3257" + ], + "broader_ids": [ + "459" + ], + "geo_area_code": null + }, + { + "id": "6628", + "label": "right to health", + "alt_labels": [ + "right to care" + ], + "related_ids": [], + "broader_ids": [ + "3899" + ], + "geo_area_code": null + }, + { + "id": "663", + "label": "Scotland", + "alt_labels": [ + "Hebrides" + ], + "related_ids": [], + "broader_ids": [ + "3780" + ], + "geo_area_code": null + }, + { + "id": "664", + "label": "ecosystem", + "alt_labels": [], + "related_ids": [ + "4930", + "632" + ], + "broader_ids": [ + "833" + ], + "geo_area_code": null + }, + { + "id": "665", + "label": "euro", + "alt_labels": [], + "related_ids": [ + "1988", + "2486", + "6151", + "8434", + "c_d1f03d01" + ], + "broader_ids": [ + "6332" + ], + "geo_area_code": null + }, + { + "id": "666", + "label": "agro-industry", + "alt_labels": [ + "agri-foodstuffs industry", + "agricultural product processing", + "agricultural product processing industry", + "processing of agricultural products" + ], + "related_ids": [ + "2893", + "3796" + ], + "broader_ids": [ + "656" + ], + "geo_area_code": null + }, + { + "id": "667", + "label": "publishing", + "alt_labels": [ + "distribution of publications", + "publishing industry" + ], + "related_ids": [ + "2153", + "2859" + ], + "broader_ids": [ + "1370" + ], + "geo_area_code": null + }, + { + "id": "668", + "label": "education", + "alt_labels": [ + "educational sciences", + "science of education" + ], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "669", + "label": "home education", + "alt_labels": [ + "home learning" + ], + "related_ids": [], + "broader_ids": [ + "3683" + ], + "geo_area_code": null + }, + { + "id": "6697", + "label": "energy diversification", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2498" + ], + "geo_area_code": null + }, + { + "id": "6699", + "label": "gas field", + "alt_labels": [ + "gas deposits" + ], + "related_ids": [ + "6702" + ], + "broader_ids": [ + "1139" + ], + "geo_area_code": null + }, + { + "id": "67", + "label": "concentration of powers", + "alt_labels": [], + "related_ids": [ + "2573", + "3016", + "436" + ], + "broader_ids": [ + "4704" + ], + "geo_area_code": null + }, + { + "id": "670", + "label": "art education", + "alt_labels": [ + "teaching of art" + ], + "related_ids": [ + "2688" + ], + "broader_ids": [ + "784" + ], + "geo_area_code": null + }, + { + "id": "6700", + "label": "energy efficiency", + "alt_labels": [], + "related_ids": [ + "c_18802d13" + ], + "broader_ids": [ + "4886" + ], + "geo_area_code": null + }, + { + "id": "6701", + "label": "strategic reserves", + "alt_labels": [ + "strategic stocks" + ], + "related_ids": [], + "broader_ids": [ + "4293" + ], + "geo_area_code": null + }, + { + "id": "6702", + "label": "oilfield", + "alt_labels": [ + "oil reserves" + ], + "related_ids": [ + "6699" + ], + "broader_ids": [ + "1414" + ], + "geo_area_code": null + }, + { + "id": "6703", + "label": "nuclear research", + "alt_labels": [], + "related_ids": [ + "2914", + "5365" + ], + "broader_ids": [ + "3731" + ], + "geo_area_code": null + }, + { + "id": "6704", + "label": "enlargement of an international organisation", + "alt_labels": [], + "related_ids": [ + "4057" + ], + "broader_ids": [ + "2189" + ], + "geo_area_code": null + }, + { + "id": "6705", + "label": "industrial integration", + "alt_labels": [], + "related_ids": [ + "429", + "4303" + ], + "broader_ids": [ + "1463" + ], + "geo_area_code": null + }, + { + "id": "6706", + "label": "accession criteria", + "alt_labels": [], + "related_ids": [ + "5411" + ], + "broader_ids": [ + "12" + ], + "geo_area_code": null + }, + { + "id": "6708", + "label": "accession negotiations", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "12" + ], + "geo_area_code": null + }, + { + "id": "6709", + "label": "common security and defence policy", + "alt_labels": [ + "CDP", + "CEDP", + "CESDP", + "CSDP", + "Common European Defence Policy", + "Common European Security and Defence Policy", + "ESDP", + "European Security and Defence Policy", + "common defence", + "common defence policy" + ], + "related_ids": [ + "2499", + "8411" + ], + "broader_ids": [ + "5788" + ], + "geo_area_code": null + }, + { + "id": "671", + "label": "comparative education", + "alt_labels": [], + "related_ids": [ + "3200", + "6269" + ], + "broader_ids": [ + "2467" + ], + "geo_area_code": null + }, + { + "id": "6710", + "label": "pre-accession strategy", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "12" + ], + "geo_area_code": null + }, + { + "id": "6711", + "label": "European Consumer Centres Network", + "alt_labels": [ + "Consumer Information Office", + "ECC-Net", + "EEJ-Net", + "European Extra-Judicial Network", + "European consumer information agency", + "euroguichet-consommateurs" + ], + "related_ids": [], + "broader_ids": [ + "1425" + ], + "geo_area_code": null + }, + { + "id": "6713", + "label": "microloan", + "alt_labels": [], + "related_ids": [ + "2281", + "6714", + "826", + "922" + ], + "broader_ids": [ + "285" + ], + "geo_area_code": null + }, + { + "id": "6714", + "label": "microfinance", + "alt_labels": [], + "related_ids": [ + "6713" + ], + "broader_ids": [ + "1000" + ], + "geo_area_code": null + }, + { + "id": "6715", + "label": "hazard science", + "alt_labels": [ + "cindynics", + "science of danger" + ], + "related_ids": [ + "4076", + "413", + "c_406ad4cc" + ], + "broader_ids": [ + "3952" + ], + "geo_area_code": null + }, + { + "id": "6716", + "label": "cosmology", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3790" + ], + "geo_area_code": null + }, + { + "id": "6717", + "label": "assisting spouse", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4276" + ], + "geo_area_code": null + }, + { + "id": "6718", + "label": "casual employment", + "alt_labels": [ + "casual work" + ], + "related_ids": [], + "broader_ids": [ + "5940" + ], + "geo_area_code": null + }, + { + "id": "672", + "label": "basic education", + "alt_labels": [], + "related_ids": [ + "1419" + ], + "broader_ids": [ + "784" + ], + "geo_area_code": null + }, + { + "id": "6720", + "label": "mechanical vibration", + "alt_labels": [], + "related_ids": [ + "4039" + ], + "broader_ids": [ + "2090" + ], + "geo_area_code": null + }, + { + "id": "6721", + "label": "forest ranger", + "alt_labels": [ + "forest guard" + ], + "related_ids": [], + "broader_ids": [ + "5219" + ], + "geo_area_code": null + }, + { + "id": "6722", + "label": "peace", + "alt_labels": [], + "related_ids": [ + "3056" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "6723", + "label": "Eurojust", + "alt_labels": [ + "European Agency for the Enhancement of Judicial Cooperation" + ], + "related_ids": [ + "6622" + ], + "broader_ids": [ + "5550" + ], + "geo_area_code": null + }, + { + "id": "6724", + "label": "European arrest warrant", + "alt_labels": [ + "European warrant" + ], + "related_ids": [ + "953" + ], + "broader_ids": [ + "5550" + ], + "geo_area_code": null + }, + { + "id": "6725", + "label": "EU Accession Treaty", + "alt_labels": [ + "EU Treaty of Accession" + ], + "related_ids": [ + "12" + ], + "broader_ids": [ + "4479" + ], + "geo_area_code": null + }, + { + "id": "6726", + "label": "Treaty of Nice", + "alt_labels": [ + "Nice Treaty" + ], + "related_ids": [], + "broader_ids": [ + "4479" + ], + "geo_area_code": null + }, + { + "id": "6727", + "label": "help for victims", + "alt_labels": [ + "aid for victims", + "victims' rights" + ], + "related_ids": [ + "7200", + "8443", + "8480" + ], + "broader_ids": [ + "4695" + ], + "geo_area_code": null + }, + { + "id": "6728", + "label": "youth detention centre", + "alt_labels": [ + "young offenders' institution" + ], + "related_ids": [ + "375" + ], + "broader_ids": [ + "877" + ], + "geo_area_code": null + }, + { + "id": "6729", + "label": "internal law of religions", + "alt_labels": [ + "internal religious law" + ], + "related_ids": [], + "broader_ids": [ + "3935" + ], + "geo_area_code": null + }, + { + "id": "673", + "label": "mass education", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "668" + ], + "geo_area_code": null + }, + { + "id": "6730", + "label": "Buddhist law", + "alt_labels": [], + "related_ids": [ + "5030" + ], + "broader_ids": [ + "6729" + ], + "geo_area_code": null + }, + { + "id": "6731", + "label": "canon law", + "alt_labels": [], + "related_ids": [ + "5162", + "5163", + "5164" + ], + "broader_ids": [ + "6729" + ], + "geo_area_code": null + }, + { + "id": "6732", + "label": "protestant church law", + "alt_labels": [], + "related_ids": [ + "5165" + ], + "broader_ids": [ + "6729" + ], + "geo_area_code": null + }, + { + "id": "6733", + "label": "Hebrew law", + "alt_labels": [], + "related_ids": [ + "1536" + ], + "broader_ids": [ + "6729" + ], + "geo_area_code": null + }, + { + "id": "6734", + "label": "Hindu law", + "alt_labels": [], + "related_ids": [ + "1244" + ], + "broader_ids": [ + "6729" + ], + "geo_area_code": null + }, + { + "id": "6735", + "label": "Islamic law", + "alt_labels": [ + "Moslem law", + "Muslim law", + "sharia" + ], + "related_ids": [ + "1508", + "5624", + "c_10aa91c7" + ], + "broader_ids": [ + "6729" + ], + "geo_area_code": null + }, + { + "id": "6736", + "label": "tax debt write-off", + "alt_labels": [ + "writing off of tax debt" + ], + "related_ids": [], + "broader_ids": [ + "2504" + ], + "geo_area_code": null + }, + { + "id": "6737", + "label": "illegal building", + "alt_labels": [ + "illegal construction", + "unauthorised building" + ], + "related_ids": [ + "4874" + ], + "broader_ids": [ + "3376" + ], + "geo_area_code": null + }, + { + "id": "6738", + "label": "street children", + "alt_labels": [], + "related_ids": [ + "3919", + "759" + ], + "broader_ids": [ + "2690" + ], + "geo_area_code": null + }, + { + "id": "6739", + "label": "hooliganism", + "alt_labels": [], + "related_ids": [ + "5723" + ], + "broader_ids": [ + "374" + ], + "geo_area_code": null + }, + { + "id": "674", + "label": "adult education", + "alt_labels": [ + "education of parents", + "education of women", + "training of adults", + "training of women", + "workers' education" + ], + "related_ids": [ + "1074" + ], + "broader_ids": [ + "668" + ], + "geo_area_code": null + }, + { + "id": "6740", + "label": "deprived urban area", + "alt_labels": [ + "deprived district", + "deprived suburb" + ], + "related_ids": [ + "7200", + "7223" + ], + "broader_ids": [ + "4809" + ], + "geo_area_code": null + }, + { + "id": "6741", + "label": "emergency medical treatment", + "alt_labels": [], + "related_ids": [ + "3288", + "3730" + ], + "broader_ids": [ + "1852" + ], + "geo_area_code": null + }, + { + "id": "6743", + "label": "vandalism", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "374" + ], + "geo_area_code": null + }, + { + "id": "6744", + "label": "eugenics", + "alt_labels": [], + "related_ids": [ + "5169", + "7348" + ], + "broader_ids": [ + "5651" + ], + "geo_area_code": null + }, + { + "id": "6745", + "label": "working poor", + "alt_labels": [ + "poor worker" + ], + "related_ids": [ + "2281", + "959" + ], + "broader_ids": [ + "1737" + ], + "geo_area_code": null + }, + { + "id": "6747", + "label": "non-ionising radiation", + "alt_labels": [ + "UV radiation", + "cell phone radiation", + "microwave radiation", + "portable telephone radiation", + "ultraviolet radiation" + ], + "related_ids": [ + "5287" + ], + "broader_ids": [ + "5319" + ], + "geo_area_code": null + }, + { + "id": "6748", + "label": "company growth", + "alt_labels": [ + "business growth" + ], + "related_ids": [], + "broader_ids": [ + "4703" + ], + "geo_area_code": null + }, + { + "id": "6749", + "label": "entrepreneurship", + "alt_labels": [ + "enterprise" + ], + "related_ids": [ + "3542", + "6755", + "c_e14565e5" + ], + "broader_ids": [ + "4703" + ], + "geo_area_code": null + }, + { + "id": "675", + "label": "education of foreigners", + "alt_labels": [], + "related_ids": [ + "4562" + ], + "broader_ids": [ + "668" + ], + "geo_area_code": null + }, + { + "id": "6750", + "label": "international merger", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1122" + ], + "geo_area_code": null + }, + { + "id": "6751", + "label": "corporate governance", + "alt_labels": [], + "related_ids": [ + "8416" + ], + "broader_ids": [ + "2469" + ], + "geo_area_code": null + }, + { + "id": "6752", + "label": "social labelling", + "alt_labels": [ + "social label" + ], + "related_ids": [ + "13", + "1425", + "5484", + "6105" + ], + "broader_ids": [ + "2469" + ], + "geo_area_code": null + }, + { + "id": "6753", + "label": "company buyout", + "alt_labels": [ + "LBO", + "MBI", + "MBO", + "institutional buy-out", + "leverage buy-out", + "management buy-in", + "management buy-out" + ], + "related_ids": [], + "broader_ids": [ + "4703" + ], + "geo_area_code": null + }, + { + "id": "6754", + "label": "reintegration enterprise", + "alt_labels": [], + "related_ids": [ + "3007", + "372", + "4700" + ], + "broader_ids": [ + "813" + ], + "geo_area_code": null + }, + { + "id": "6755", + "label": "start-up", + "alt_labels": [ + "startup enterprise", + "unicorn" + ], + "related_ids": [ + "1439", + "5157", + "6088", + "6749", + "6756", + "6902" + ], + "broader_ids": [ + "5206" + ], + "geo_area_code": null + }, + { + "id": "6756", + "label": "micro-enterprise", + "alt_labels": [ + "micro-business" + ], + "related_ids": [ + "6755" + ], + "broader_ids": [ + "2358" + ], + "geo_area_code": null + }, + { + "id": "6757", + "label": "European cooperative", + "alt_labels": [ + "European cooperative society" + ], + "related_ids": [], + "broader_ids": [ + "227" + ], + "geo_area_code": null + }, + { + "id": "676", + "label": "non-formal education", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3683" + ], + "geo_area_code": null + }, + { + "id": "6763", + "label": "teaching quality", + "alt_labels": [ + "quality in education", + "quality of teaching" + ], + "related_ids": [], + "broader_ids": [ + "2467" + ], + "geo_area_code": null + }, + { + "id": "6764", + "label": "parliamentary library", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4865" + ], + "geo_area_code": null + }, + { + "id": "6765", + "label": "quote", + "alt_labels": [ + "citation" + ], + "related_ids": [], + "broader_ids": [ + "486" + ], + "geo_area_code": null + }, + { + "id": "6766", + "label": "commentary on a law", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "486" + ], + "geo_area_code": null + }, + { + "id": "6767", + "label": "electronic document", + "alt_labels": [], + "related_ids": [ + "4488", + "6110", + "8453" + ], + "broader_ids": [ + "486" + ], + "geo_area_code": null + }, + { + "id": "6768", + "label": "tourist guide", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5311" + ], + "geo_area_code": null + }, + { + "id": "6769", + "label": "media library", + "alt_labels": [ + "audio-visual library", + "audiovisual library", + "multimedia library" + ], + "related_ids": [ + "3278", + "3855" + ], + "broader_ids": [ + "4366" + ], + "geo_area_code": null + }, + { + "id": "677", + "label": "continuing education", + "alt_labels": [ + "learning organisation", + "learning organization", + "lifelong education", + "lifelong learning" + ], + "related_ids": [ + "437655" + ], + "broader_ids": [ + "668" + ], + "geo_area_code": null + }, + { + "id": "6770", + "label": "disinformation", + "alt_labels": [ + "fake news", + "hoax", + "mal-information", + "misinformation" + ], + "related_ids": [ + "2808", + "7385" + ], + "broader_ids": [ + "175" + ], + "geo_area_code": null + }, + { + "id": "6771", + "label": "Internet access provider", + "alt_labels": [ + "access provider", + "internet provider", + "internet service provider", + "provider", + "service provider" + ], + "related_ids": [], + "broader_ids": [ + "6088" + ], + "geo_area_code": null + }, + { + "id": "6772", + "label": "web surfer", + "alt_labels": [ + "cybernaut", + "internet surfer", + "net surfer" + ], + "related_ids": [], + "broader_ids": [ + "6088" + ], + "geo_area_code": null + }, + { + "id": "6773", + "label": "search engine", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "6088" + ], + "geo_area_code": null + }, + { + "id": "6774", + "label": "telecommunications policy", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4424" + ], + "geo_area_code": null + }, + { + "id": "6775", + "label": "Internet site", + "alt_labels": [ + "list of websites", + "web page", + "webpage", + "website" + ], + "related_ids": [], + "broader_ids": [ + "6088" + ], + "geo_area_code": null + }, + { + "id": "6776", + "label": "mobile phone", + "alt_labels": [ + "GSM", + "cell phone", + "cellular phone", + "mobile telephone" + ], + "related_ids": [ + "7947", + "c_8ce6dcec" + ], + "broader_ids": [ + "4431" + ], + "geo_area_code": null + }, + { + "id": "6777", + "label": "video surveillance", + "alt_labels": [ + "CCTV Source", + "camera surveillance", + "security camera surveillance" + ], + "related_ids": [ + "5888" + ], + "broader_ids": [ + "5190" + ], + "geo_area_code": null + }, + { + "id": "6778", + "label": "cryptography", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "6019" + ], + "geo_area_code": null + }, + { + "id": "6779", + "label": "computer virus", + "alt_labels": [], + "related_ids": [ + "c_04ae3ba8" + ], + "broader_ids": [ + "1696" + ], + "geo_area_code": null + }, + { + "id": "678", + "label": "physical education", + "alt_labels": [ + "physical exercise" + ], + "related_ids": [ + "4245" + ], + "broader_ids": [ + "784" + ], + "geo_area_code": null + }, + { + "id": "6781", + "label": "basic needs", + "alt_labels": [ + "basic requirements", + "essential needs" + ], + "related_ids": [ + "2870", + "4849", + "4850", + "4853", + "83" + ], + "broader_ids": [ + "427" + ], + "geo_area_code": null + }, + { + "id": "6782", + "label": "region-EU relationship", + "alt_labels": [ + "relationship between the regions and the EU" + ], + "related_ids": [ + "5508" + ], + "broader_ids": [ + "2515" + ], + "geo_area_code": null + }, + { + "id": "6783", + "label": "non-commercial sector", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4006" + ], + "geo_area_code": null + }, + { + "id": "6784", + "label": "mendicity", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2281" + ], + "geo_area_code": null + }, + { + "id": "6785", + "label": "social transfers", + "alt_labels": [ + "social income", + "transfer income", + "transfer revenues" + ], + "related_ids": [ + "4050" + ], + "broader_ids": [ + "3659" + ], + "geo_area_code": null + }, + { + "id": "6786", + "label": "economic value", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1800" + ], + "geo_area_code": null + }, + { + "id": "6787", + "label": "gelatine", + "alt_labels": [], + "related_ids": [ + "1204", + "2737", + "2963" + ], + "broader_ids": [ + "2736" + ], + "geo_area_code": null + }, + { + "id": "6788", + "label": "essential oil", + "alt_labels": [], + "related_ids": [ + "2948" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "6789", + "label": "food supplement", + "alt_labels": [ + "nutritional supplement" + ], + "related_ids": [ + "1268", + "2133", + "4733", + "6052" + ], + "broader_ids": [ + "2736" + ], + "geo_area_code": null + }, + { + "id": "679", + "label": "pre-school education", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2059" + ], + "geo_area_code": null + }, + { + "id": "6790", + "label": "organic product", + "alt_labels": [], + "related_ids": [ + "2753", + "568" + ], + "broader_ids": [ + "2735" + ], + "geo_area_code": null + }, + { + "id": "68", + "label": "68 INDUSTRY", + "alt_labels": [], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "680", + "label": "health education", + "alt_labels": [], + "related_ids": [ + "1855", + "2479" + ], + "broader_ids": [ + "784" + ], + "geo_area_code": null + }, + { + "id": "681", + "label": "sex education", + "alt_labels": [], + "related_ids": [ + "7135", + "7389" + ], + "broader_ids": [ + "784" + ], + "geo_area_code": null + }, + { + "id": "682", + "label": "special education", + "alt_labels": [ + "compensatory education", + "education for highly gifted children", + "school for handicapped children", + "school for the blind", + "school for the deaf", + "special teaching", + "special-needs education" + ], + "related_ids": [ + "1231", + "3177", + "c_b8e8e06e" + ], + "broader_ids": [ + "784" + ], + "geo_area_code": null + }, + { + "id": "6821", + "label": "brick", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1826" + ], + "geo_area_code": null + }, + { + "id": "6822", + "label": "stone", + "alt_labels": [], + "related_ids": [ + "3757" + ], + "broader_ids": [ + "1826" + ], + "geo_area_code": null + }, + { + "id": "6823", + "label": "special metal", + "alt_labels": [ + "gallium", + "germanium", + "indium" + ], + "related_ids": [], + "broader_ids": [ + "1882" + ], + "geo_area_code": null + }, + { + "id": "6824", + "label": "diesel engine", + "alt_labels": [], + "related_ids": [ + "3772" + ], + "broader_ids": [ + "1994" + ], + "geo_area_code": null + }, + { + "id": "6825", + "label": "sawmill", + "alt_labels": [ + "sawing industry" + ], + "related_ids": [], + "broader_ids": [ + "1386" + ], + "geo_area_code": null + }, + { + "id": "683", + "label": "sweetener", + "alt_labels": [], + "related_ids": [ + "4311", + "4314" + ], + "broader_ids": [ + "6052" + ], + "geo_area_code": null + }, + { + "id": "684", + "label": "number of pupils", + "alt_labels": [], + "related_ids": [ + "384" + ], + "broader_ids": [ + "2175" + ], + "geo_area_code": null + }, + { + "id": "6848", + "label": "navigation aid", + "alt_labels": [], + "related_ids": [ + "4033" + ], + "broader_ids": [ + "2181" + ], + "geo_area_code": null + }, + { + "id": "6849", + "label": "town traffic", + "alt_labels": [ + "traffic in cities", + "traffic in towns", + "urban traffic" + ], + "related_ids": [ + "3131", + "3159", + "4809" + ], + "broader_ids": [ + "4541" + ], + "geo_area_code": null + }, + { + "id": "685", + "label": "agronomy", + "alt_labels": [], + "related_ids": [ + "2915", + "4363", + "4412", + "4630", + "780" + ], + "broader_ids": [ + "3949" + ], + "geo_area_code": null + }, + { + "id": "6850", + "label": "sustainable mobility", + "alt_labels": [ + "sustainable transport" + ], + "related_ids": [ + "5585", + "c_2ad19da5" + ], + "broader_ids": [ + "2494" + ], + "geo_area_code": null + }, + { + "id": "6851", + "label": "intelligent transport system", + "alt_labels": [ + "integrated transport system" + ], + "related_ids": [ + "4430", + "c_b12a760a" + ], + "broader_ids": [ + "2181" + ], + "geo_area_code": null + }, + { + "id": "6852", + "label": "satellite navigation", + "alt_labels": [ + "European Satellite Navigation System", + "GNSS", + "GPS", + "Galileo", + "Global Navigation Satellite System", + "global positioning system", + "navigation by satellite" + ], + "related_ids": [ + "30", + "447660" + ], + "broader_ids": [ + "6851" + ], + "geo_area_code": null + }, + { + "id": "6854", + "label": "pedestrian", + "alt_labels": [], + "related_ids": [ + "4799" + ], + "broader_ids": [ + "3438" + ], + "geo_area_code": null + }, + { + "id": "6855", + "label": "ground handling", + "alt_labels": [ + "ground handling services", + "ramp handling" + ], + "related_ids": [ + "2602" + ], + "broader_ids": [ + "195" + ], + "geo_area_code": null + }, + { + "id": "686", + "label": "radioactive effluent", + "alt_labels": [ + "discharge of radioactive effluent" + ], + "related_ids": [ + "1840", + "2539", + "4042", + "753", + "921" + ], + "broader_ids": [ + "347" + ], + "geo_area_code": null + }, + { + "id": "6862", + "label": "secularity", + "alt_labels": [], + "related_ids": [ + "3257", + "5625", + "787" + ], + "broader_ids": [ + "1282" + ], + "geo_area_code": null + }, + { + "id": "687", + "label": "equal pay", + "alt_labels": [ + "difference in pay", + "equal wage", + "wage gap" + ], + "related_ids": [ + "1740", + "3913", + "455", + "4562", + "688" + ], + "broader_ids": [ + "2491" + ], + "geo_area_code": null + }, + { + "id": "688", + "label": "equal treatment", + "alt_labels": [ + "equal opportunity", + "equal rights", + "mainstreaming", + "positive discrimination", + "principle of equality", + "principle of non-discrimination", + "unequal treatment" + ], + "related_ids": [ + "1231", + "1942", + "280", + "372", + "3908", + "4003", + "4562", + "585", + "6253", + "6347", + "687" + ], + "broader_ids": [ + "3899" + ], + "geo_area_code": null + }, + { + "id": "6881", + "label": "confederal State", + "alt_labels": [ + "Confederation of States" + ], + "related_ids": [], + "broader_ids": [ + "883" + ], + "geo_area_code": null + }, + { + "id": "6882", + "label": "regional State", + "alt_labels": [], + "related_ids": [ + "2245", + "3096" + ], + "broader_ids": [ + "883" + ], + "geo_area_code": null + }, + { + "id": "6883", + "label": "oligarchy", + "alt_labels": [], + "related_ids": [ + "5997" + ], + "broader_ids": [ + "3025" + ], + "geo_area_code": null + }, + { + "id": "6884", + "label": "protocol", + "alt_labels": [ + "order of precedence", + "order of protocol" + ], + "related_ids": [ + "4031", + "7935" + ], + "broader_ids": [ + "1453" + ], + "geo_area_code": null + }, + { + "id": "6885", + "label": "symbol of State", + "alt_labels": [], + "related_ids": [ + "4102", + "4103", + "5312", + "c_104476d7" + ], + "broader_ids": [ + "883" + ], + "geo_area_code": null + }, + { + "id": "6886", + "label": "nationalist party", + "alt_labels": [], + "related_ids": [ + "2033" + ], + "broader_ids": [ + "2258" + ], + "geo_area_code": null + }, + { + "id": "6887", + "label": "autonomist party", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "6886" + ], + "geo_area_code": null + }, + { + "id": "6888", + "label": "extremist party", + "alt_labels": [], + "related_ids": [ + "954", + "955" + ], + "broader_ids": [ + "2258" + ], + "geo_area_code": null + }, + { + "id": "689", + "label": "equality before the law", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3899" + ], + "geo_area_code": null + }, + { + "id": "6890", + "label": "electoral reform", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4367" + ], + "geo_area_code": null + }, + { + "id": "6891", + "label": "parliamentary inquiry", + "alt_labels": [ + "parliamentary investigation" + ], + "related_ids": [ + "15" + ], + "broader_ids": [ + "190" + ], + "geo_area_code": null + }, + { + "id": "6892", + "label": "legislative drafting", + "alt_labels": [ + "drafting of a bill", + "drafting of a law", + "legislative quality of a law", + "linguistic quality of a law" + ], + "related_ids": [], + "broader_ids": [ + "2702" + ], + "geo_area_code": null + }, + { + "id": "6893", + "label": "status of the person elected", + "alt_labels": [], + "related_ids": [ + "1303", + "3049" + ], + "broader_ids": [ + "4704" + ], + "geo_area_code": null + }, + { + "id": "6894", + "label": "electronic government", + "alt_labels": [ + "digital public service", + "e-administration", + "e-government", + "electronic administration", + "online administration" + ], + "related_ids": [ + "6088", + "6897", + "c_34465dac" + ], + "broader_ids": [ + "77" + ], + "geo_area_code": null + }, + { + "id": "6896", + "label": "government statement", + "alt_labels": [ + "government declaration" + ], + "related_ids": [], + "broader_ids": [ + "1172" + ], + "geo_area_code": null + }, + { + "id": "6897", + "label": "governance", + "alt_labels": [ + "e-governance" + ], + "related_ids": [ + "5812", + "5936", + "6894", + "8423", + "8428", + "c_2212c2c4", + "c_c5f984c3" + ], + "broader_ids": [ + "3062" + ], + "geo_area_code": null + }, + { + "id": "6898", + "label": "parliamentary diplomacy", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3206" + ], + "geo_area_code": null + }, + { + "id": "6899", + "label": "periodic penalty payment", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1549" + ], + "geo_area_code": null + }, + { + "id": "69", + "label": "economic concentration", + "alt_labels": [ + "concentration between undertakings", + "concentration of companies" + ], + "related_ids": [ + "183", + "1984", + "2474", + "4574", + "70", + "802", + "816", + "828" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "690", + "label": "Egypt", + "alt_labels": [ + "Arab Republic of Egypt" + ], + "related_ids": [ + "1727", + "5103" + ], + "broader_ids": [ + "1658", + "1794", + "311", + "5780", + "8369", + "c_6e703074" + ], + "geo_area_code": "EGY" + }, + { + "id": "6900", + "label": "expulsion from housing", + "alt_labels": [ + "dispossession", + "eviction" + ], + "related_ids": [ + "1690" + ], + "broader_ids": [ + "930" + ], + "geo_area_code": null + }, + { + "id": "6901", + "label": "automatic vending machine", + "alt_labels": [ + "vending machine" + ], + "related_ids": [ + "3248" + ], + "broader_ids": [ + "5" + ], + "geo_area_code": null + }, + { + "id": "6902", + "label": "early-stage capital", + "alt_labels": [ + "early-stage investment", + "seed capital", + "seed financing", + "seed money", + "start-up capital" + ], + "related_ids": [ + "5205", + "6755" + ], + "broader_ids": [ + "3240" + ], + "geo_area_code": null + }, + { + "id": "6903", + "label": "aesthetic surgery", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5970" + ], + "geo_area_code": null + }, + { + "id": "6904", + "label": "medical report", + "alt_labels": [ + "medical opinion" + ], + "related_ids": [ + "2891", + "3151" + ], + "broader_ids": [ + "1852" + ], + "geo_area_code": null + }, + { + "id": "6905", + "label": "dropout", + "alt_labels": [ + "dropping out", + "early school leaver", + "early school leaving", + "educational dropout", + "school dropout", + "student dropout", + "university dropout" + ], + "related_ids": [], + "broader_ids": [ + "590" + ], + "geo_area_code": null + }, + { + "id": "6906", + "label": "parabolic aerial", + "alt_labels": [ + "dish aerial", + "dish antenna", + "parabolic antenna" + ], + "related_ids": [], + "broader_ids": [ + "3860" + ], + "geo_area_code": null + }, + { + "id": "6907", + "label": "forum", + "alt_labels": [ + "discussion forum" + ], + "related_ids": [ + "8418" + ], + "broader_ids": [ + "c_324b44f1" + ], + "geo_area_code": null + }, + { + "id": "6908", + "label": "interactivity", + "alt_labels": [], + "related_ids": [ + "4432" + ], + "broader_ids": [ + "1426" + ], + "geo_area_code": null + }, + { + "id": "6909", + "label": "popularising science", + "alt_labels": [ + "popularising science and technology" + ], + "related_ids": [ + "5808" + ], + "broader_ids": [ + "4486" + ], + "geo_area_code": null + }, + { + "id": "691", + "label": "El Salvador", + "alt_labels": [ + "Republic of El Salvador" + ], + "related_ids": [], + "broader_ids": [ + "1606", + "1844", + "2117", + "2119", + "4069" + ], + "geo_area_code": "SLV" + }, + { + "id": "6910", + "label": "knowledge management", + "alt_labels": [ + "capitalising on knowledge", + "enhancement of knowledge" + ], + "related_ids": [ + "6120", + "7948", + "7951" + ], + "broader_ids": [ + "1154" + ], + "geo_area_code": null + }, + { + "id": "6911", + "label": "port administration", + "alt_labels": [ + "port authority" + ], + "related_ids": [], + "broader_ids": [ + "2512" + ], + "geo_area_code": null + }, + { + "id": "6912", + "label": "tunnel", + "alt_labels": [ + "railway tunnel", + "road tunnel" + ], + "related_ids": [], + "broader_ids": [ + "2206" + ], + "geo_area_code": null + }, + { + "id": "6913", + "label": "outsourcing", + "alt_labels": [ + "externalisation" + ], + "related_ids": [ + "2469" + ], + "broader_ids": [ + "4232" + ], + "geo_area_code": null + }, + { + "id": "6914", + "label": "chemical accident", + "alt_labels": [], + "related_ids": [ + "2528", + "3164", + "451069", + "6413" + ], + "broader_ids": [ + "1362" + ], + "geo_area_code": null + }, + { + "id": "6915", + "label": "cosmetics industry", + "alt_labels": [], + "related_ids": [ + "5245" + ], + "broader_ids": [ + "3798" + ], + "geo_area_code": null + }, + { + "id": "6916", + "label": "building technique", + "alt_labels": [ + "brickwork", + "construction technique", + "earthworks", + "painting in buildings", + "plastering", + "tiling" + ], + "related_ids": [], + "broader_ids": [ + "3879" + ], + "geo_area_code": null + }, + { + "id": "6917", + "label": "cooperation on agriculture", + "alt_labels": [ + "agricultural cooperation" + ], + "related_ids": [ + "2442" + ], + "broader_ids": [ + "3489" + ], + "geo_area_code": null + }, + { + "id": "6918", + "label": "cervidae", + "alt_labels": [ + "deer", + "elk", + "moose" + ], + "related_ids": [], + "broader_ids": [ + "5962" + ], + "geo_area_code": null + }, + { + "id": "6919", + "label": "weapons' destruction", + "alt_labels": [ + "destruction of weapons" + ], + "related_ids": [], + "broader_ids": [ + "411" + ], + "geo_area_code": null + }, + { + "id": "692", + "label": "market enlargement", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2449" + ], + "geo_area_code": null + }, + { + "id": "6920", + "label": "cooperation in the field of education", + "alt_labels": [ + "educational cooperation" + ], + "related_ids": [ + "2467" + ], + "broader_ids": [ + "3489" + ], + "geo_area_code": null + }, + { + "id": "6921", + "label": "gas industry", + "alt_labels": [], + "related_ids": [ + "3737", + "4886", + "c_097751fd" + ], + "broader_ids": [ + "1141" + ], + "geo_area_code": null + }, + { + "id": "6922", + "label": "international labour law", + "alt_labels": [], + "related_ids": [ + "557" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "6923", + "label": "international trade law", + "alt_labels": [], + "related_ids": [ + "11", + "524" + ], + "broader_ids": [ + "4010" + ], + "geo_area_code": null + }, + { + "id": "6924", + "label": "paternity leave", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "108" + ], + "geo_area_code": null + }, + { + "id": "6925", + "label": "prisoner work", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3955" + ], + "geo_area_code": null + }, + { + "id": "6926", + "label": "regional market", + "alt_labels": [ + "local market" + ], + "related_ids": [], + "broader_ids": [ + "1806" + ], + "geo_area_code": null + }, + { + "id": "6927", + "label": "regional security", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3450" + ], + "geo_area_code": null + }, + { + "id": "6928", + "label": "reindeer", + "alt_labels": [ + "caribou" + ], + "related_ids": [], + "broader_ids": [ + "6918" + ], + "geo_area_code": null + }, + { + "id": "6929", + "label": "telemedicine", + "alt_labels": [ + "distance medicine", + "long-distance medicine" + ], + "related_ids": [ + "1852", + "4430", + "c_4ee83dea" + ], + "broader_ids": [ + "c_31da5694" + ], + "geo_area_code": null + }, + { + "id": "693", + "label": "citrus fruit", + "alt_labels": [ + "citron", + "clementine", + "grapefruit", + "lemon", + "mandarin orange", + "orange", + "pomelo", + "tangerine" + ], + "related_ids": [], + "broader_ids": [ + "1115" + ], + "geo_area_code": null + }, + { + "id": "6930", + "label": "territorial dispute", + "alt_labels": [ + "territorial claim" + ], + "related_ids": [ + "581" + ], + "broader_ids": [ + "440" + ], + "geo_area_code": null + }, + { + "id": "694", + "label": "registration of voters", + "alt_labels": [ + "inclusion on the electoral register" + ], + "related_ids": [], + "broader_ids": [ + "706" + ], + "geo_area_code": null + }, + { + "id": "695", + "label": "election", + "alt_labels": [], + "related_ids": [ + "1601", + "1778", + "4704", + "8424" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "696", + "label": "early election", + "alt_labels": [], + "related_ids": [ + "309" + ], + "broader_ids": [ + "695" + ], + "geo_area_code": null + }, + { + "id": "697", + "label": "European election", + "alt_labels": [], + "related_ids": [ + "2243", + "4368" + ], + "broader_ids": [ + "695" + ], + "geo_area_code": null + }, + { + "id": "698", + "label": "indirect election", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4367" + ], + "geo_area_code": null + }, + { + "id": "699", + "label": "local election", + "alt_labels": [ + "council election", + "municipal election" + ], + "related_ids": [ + "5118", + "5501", + "6034", + "68" + ], + "broader_ids": [ + "695" + ], + "geo_area_code": null + }, + { + "id": "7", + "label": "arms trade", + "alt_labels": [ + "arms sales", + "arms trafficking" + ], + "related_ids": [ + "3169", + "5542", + "5753" + ], + "broader_ids": [ + "3451" + ], + "geo_area_code": null + }, + { + "id": "70", + "label": "industrial concentration", + "alt_labels": [], + "related_ids": [ + "4800", + "69" + ], + "broader_ids": [ + "3624" + ], + "geo_area_code": null + }, + { + "id": "700", + "label": "national election", + "alt_labels": [ + "general election" + ], + "related_ids": [], + "broader_ids": [ + "695" + ], + "geo_area_code": null + }, + { + "id": "701", + "label": "parliamentary election", + "alt_labels": [ + "senatorial election" + ], + "related_ids": [ + "2242" + ], + "broader_ids": [ + "695" + ], + "geo_area_code": null + }, + { + "id": "702", + "label": "by-election", + "alt_labels": [], + "related_ids": [ + "4159" + ], + "broader_ids": [ + "4367" + ], + "geo_area_code": null + }, + { + "id": "703", + "label": "International Development Association", + "alt_labels": [ + "IDA" + ], + "related_ids": [], + "broader_ids": [ + "4812" + ], + "geo_area_code": null + }, + { + "id": "704", + "label": "presidential election", + "alt_labels": [], + "related_ids": [ + "5805", + "7386" + ], + "broader_ids": [ + "695" + ], + "geo_area_code": null + }, + { + "id": "705", + "label": "primary election", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "698" + ], + "geo_area_code": null + }, + { + "id": "706", + "label": "electorate", + "alt_labels": [ + "elector", + "electoral body" + ], + "related_ids": [], + "broader_ids": [ + "2186" + ], + "geo_area_code": null + }, + { + "id": "707", + "label": "electrochemistry", + "alt_labels": [], + "related_ids": [ + "1362", + "2382", + "2692", + "747" + ], + "broader_ids": [ + "5966" + ], + "geo_area_code": null + }, + { + "id": "708", + "label": "electrometallurgy", + "alt_labels": [], + "related_ids": [ + "2693" + ], + "broader_ids": [ + "3820" + ], + "geo_area_code": null + }, + { + "id": "709", + "label": "electronics", + "alt_labels": [], + "related_ids": [ + "1400", + "1405", + "2192", + "3876", + "50", + "849" + ], + "broader_ids": [ + "3946" + ], + "geo_area_code": null + }, + { + "id": "71", + "label": "product design", + "alt_labels": [ + "product development", + "product evolution" + ], + "related_ids": [ + "2770", + "2914", + "5520" + ], + "broader_ids": [ + "3632" + ], + "geo_area_code": null + }, + { + "id": "710", + "label": "electrotechnology", + "alt_labels": [], + "related_ids": [ + "1401", + "6094" + ], + "broader_ids": [ + "3949" + ], + "geo_area_code": null + }, + { + "id": "711", + "label": "livestock farming", + "alt_labels": [ + "animal husbandry", + "stockrearing" + ], + "related_ids": [ + "1857", + "4338", + "5962", + "939" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "712", + "label": "economic support", + "alt_labels": [ + "aid", + "granting of aid", + "subvention" + ], + "related_ids": [ + "2483", + "899" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "7126", + "label": "European Food Safety Authority", + "alt_labels": [ + "EFSA" + ], + "related_ids": [ + "6569" + ], + "broader_ids": [ + "5769" + ], + "geo_area_code": null + }, + { + "id": "7127", + "label": "European Constitution", + "alt_labels": [ + "Constitution for Europe", + "Constitutional Treaty", + "EU Constitution", + "Treaty establishing a Constitution for Europe" + ], + "related_ids": [], + "broader_ids": [ + "4479" + ], + "geo_area_code": null + }, + { + "id": "7128", + "label": "corpus juris (EU)", + "alt_labels": [ + "Community corpus juris" + ], + "related_ids": [], + "broader_ids": [ + "5498" + ], + "geo_area_code": null + }, + { + "id": "7129", + "label": "artist's resale right", + "alt_labels": [], + "related_ids": [ + "4105" + ], + "broader_ids": [ + "529" + ], + "geo_area_code": null + }, + { + "id": "713", + "label": "free-range farming", + "alt_labels": [ + "free-range poultry keeping" + ], + "related_ids": [], + "broader_ids": [ + "711" + ], + "geo_area_code": null + }, + { + "id": "7130", + "label": "scientific report", + "alt_labels": [ + "scientific analysis", + "scientific assessment", + "scientific evaluation", + "scientific opinion" + ], + "related_ids": [ + "2924" + ], + "broader_ids": [ + "2891" + ], + "geo_area_code": null + }, + { + "id": "7131", + "label": "social impact", + "alt_labels": [ + "societal impact" + ], + "related_ids": [], + "broader_ids": [ + "1820" + ], + "geo_area_code": null + }, + { + "id": "7132", + "label": "pre-accession aid", + "alt_labels": [ + "IPA", + "ISPA", + "Instrument for Pre-Accession Assistance", + "Instrument for Structural Policies for Pre-Accession", + "Phare", + "Pre-Accession Instrument", + "Sapard", + "pre-accession assistance" + ], + "related_ids": [], + "broader_ids": [ + "6710" + ], + "geo_area_code": null + }, + { + "id": "7133", + "label": "plant variety right", + "alt_labels": [], + "related_ids": [ + "1475", + "2817", + "4081", + "6076", + "6296" + ], + "broader_ids": [ + "2723" + ], + "geo_area_code": null + }, + { + "id": "7134", + "label": "post-communism", + "alt_labels": [], + "related_ids": [ + "32" + ], + "broader_ids": [ + "6108" + ], + "geo_area_code": null + }, + { + "id": "7135", + "label": "reproductive health", + "alt_labels": [], + "related_ids": [ + "2398", + "3353", + "5104", + "5159", + "5721", + "681", + "7389" + ], + "broader_ids": [ + "3885" + ], + "geo_area_code": null + }, + { + "id": "7136", + "label": "universal service", + "alt_labels": [], + "related_ids": [ + "1979", + "4133" + ], + "broader_ids": [ + "4099" + ], + "geo_area_code": null + }, + { + "id": "7137", + "label": "International Criminal Tribunal", + "alt_labels": [ + "ICT", + "ICTR", + "ICTY", + "International Criminal Tribunal for Rwanda", + "International Criminal Tribunal for the former Yugoslavia" + ], + "related_ids": [ + "3986", + "575", + "7193" + ], + "broader_ids": [ + "123" + ], + "geo_area_code": null + }, + { + "id": "7138", + "label": "vision of Europe", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5826" + ], + "geo_area_code": null + }, + { + "id": "714", + "label": "crustacean farming", + "alt_labels": [], + "related_ids": [ + "313" + ], + "broader_ids": [ + "2320" + ], + "geo_area_code": null + }, + { + "id": "715", + "label": "intensive livestock farming", + "alt_labels": [ + "battery farming" + ], + "related_ids": [ + "636" + ], + "broader_ids": [ + "711" + ], + "geo_area_code": null + }, + { + "id": "716", + "label": "pupil", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1927" + ], + "geo_area_code": null + }, + { + "id": "717", + "label": "right to stand for election", + "alt_labels": [ + "eligibility", + "ineligibility" + ], + "related_ids": [ + "5491", + "558" + ], + "broader_ids": [ + "583" + ], + "geo_area_code": null + }, + { + "id": "718", + "label": "waste disposal", + "alt_labels": [ + "discharge of waste", + "garbage disposal", + "waste removal" + ], + "related_ids": [ + "4891" + ], + "broader_ids": [ + "1158" + ], + "geo_area_code": null + }, + { + "id": "7184", + "label": "institutional agreement", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4179" + ], + "geo_area_code": null + }, + { + "id": "7185", + "label": "CEFTA", + "alt_labels": [ + "Central European Free Trade Agreement" + ], + "related_ids": [ + "2275", + "4789", + "8278" + ], + "broader_ids": [ + "2187" + ], + "geo_area_code": null + }, + { + "id": "7186", + "label": "Central Commission for Navigation on the Rhine", + "alt_labels": [ + "CCNR" + ], + "related_ids": [ + "2040", + "5457" + ], + "broader_ids": [ + "2187" + ], + "geo_area_code": null + }, + { + "id": "7187", + "label": "public office", + "alt_labels": [ + "public responsibility" + ], + "related_ids": [ + "8416" + ], + "broader_ids": [ + "4704" + ], + "geo_area_code": null + }, + { + "id": "7188", + "label": "conscience clause", + "alt_labels": [ + "conscientious objection clause" + ], + "related_ids": [], + "broader_ids": [ + "3566" + ], + "geo_area_code": null + }, + { + "id": "7189", + "label": "political cohabitation", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4704" + ], + "geo_area_code": null + }, + { + "id": "719", + "label": "emancipation", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "540" + ], + "geo_area_code": null + }, + { + "id": "7190", + "label": "composition of a parliamentary committee", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "18" + ], + "geo_area_code": null + }, + { + "id": "7191", + "label": "conduct of meetings", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1074" + ], + "geo_area_code": null + }, + { + "id": "7192", + "label": "Inter-American Court of Human Rights", + "alt_labels": [], + "related_ids": [ + "584" + ], + "broader_ids": [ + "2118" + ], + "geo_area_code": null + }, + { + "id": "7193", + "label": "International Criminal Court", + "alt_labels": [ + "ICC" + ], + "related_ids": [ + "3986", + "575", + "7137" + ], + "broader_ids": [ + "2188" + ], + "geo_area_code": null + }, + { + "id": "7195", + "label": "personal development", + "alt_labels": [ + "self-improvement" + ], + "related_ids": [ + "1074", + "1700", + "3928", + "443048", + "c_e14565e5" + ], + "broader_ids": [ + "4706" + ], + "geo_area_code": null + }, + { + "id": "7197", + "label": "multiracial State", + "alt_labels": [ + "multiracial country", + "multiracial nation" + ], + "related_ids": [ + "1202" + ], + "broader_ids": [ + "883" + ], + "geo_area_code": null + }, + { + "id": "7198", + "label": "Federated States of Micronesia", + "alt_labels": [ + "Chuuk", + "Kosrae", + "Pohnpei", + "Ponape", + "Yap" + ], + "related_ids": [], + "broader_ids": [ + "1292", + "5083", + "8366", + "c_b2c019c8" + ], + "geo_area_code": null + }, + { + "id": "7199", + "label": "evacuation of the population", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3057" + ], + "geo_area_code": null + }, + { + "id": "72", + "label": "72 GEOGRAPHY", + "alt_labels": [], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "720", + "label": "packaging", + "alt_labels": [], + "related_ids": [ + "1398", + "2862", + "4891" + ], + "broader_ids": [ + "87" + ], + "geo_area_code": null + }, + { + "id": "7200", + "label": "local access to the law", + "alt_labels": [], + "related_ids": [ + "6727", + "6740" + ], + "broader_ids": [ + "5400" + ], + "geo_area_code": null + }, + { + "id": "7201", + "label": "business ethics", + "alt_labels": [ + "morals in business" + ], + "related_ids": [ + "1092" + ], + "broader_ids": [ + "4703" + ], + "geo_area_code": null + }, + { + "id": "7202", + "label": "Organisation for the Prohibition of Chemical Weapons", + "alt_labels": [ + "OPCW" + ], + "related_ids": [ + "1455", + "3420" + ], + "broader_ids": [ + "2188" + ], + "geo_area_code": null + }, + { + "id": "7203", + "label": "World Tourism Organisation", + "alt_labels": [ + "UNWTO", + "WTO (tourism)", + "World Tourism Organization" + ], + "related_ids": [ + "4470" + ], + "broader_ids": [ + "1455" + ], + "geo_area_code": null + }, + { + "id": "7204", + "label": "agricultural sector representative body", + "alt_labels": [], + "related_ids": [ + "613" + ], + "broader_ids": [ + "2442" + ], + "geo_area_code": null + }, + { + "id": "7205", + "label": "Andean Parliament", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1190" + ], + "geo_area_code": null + }, + { + "id": "7206", + "label": "Central American Parliament", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2116" + ], + "geo_area_code": null + }, + { + "id": "7207", + "label": "NAFTA countries", + "alt_labels": [ + "North American Free Trade Agreement countries" + ], + "related_ids": [ + "5430" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "7208", + "label": "Caucasus countries", + "alt_labels": [], + "related_ids": [ + "8355" + ], + "broader_ids": [ + "914" + ], + "geo_area_code": null + }, + { + "id": "7209", + "label": "communication skills", + "alt_labels": [ + "communication practices" + ], + "related_ids": [ + "c_e14565e5" + ], + "broader_ids": [ + "1074" + ], + "geo_area_code": null + }, + { + "id": "721", + "label": "pasture fattening", + "alt_labels": [], + "related_ids": [ + "1277", + "4338", + "4854" + ], + "broader_ids": [ + "711" + ], + "geo_area_code": null + }, + { + "id": "7210", + "label": "negotiation skills", + "alt_labels": [ + "negotiation practices" + ], + "related_ids": [ + "c_e14565e5" + ], + "broader_ids": [ + "1074" + ], + "geo_area_code": null + }, + { + "id": "7211", + "label": "Latin American Parliament", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2190" + ], + "geo_area_code": null + }, + { + "id": "7212", + "label": "writing skills", + "alt_labels": [ + "drafting skills", + "writing practices" + ], + "related_ids": [], + "broader_ids": [ + "1074" + ], + "geo_area_code": null + }, + { + "id": "7213", + "label": "First World War", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1210" + ], + "geo_area_code": null + }, + { + "id": "7214", + "label": "Second World War", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1210" + ], + "geo_area_code": null + }, + { + "id": "7215", + "label": "result of the vote", + "alt_labels": [], + "related_ids": [ + "4762" + ], + "broader_ids": [ + "4750" + ], + "geo_area_code": null + }, + { + "id": "7216", + "label": "social democracy", + "alt_labels": [], + "related_ids": [ + "2260" + ], + "broader_ids": [ + "1282" + ], + "geo_area_code": null + }, + { + "id": "7217", + "label": "Statute for Members of the Parliament", + "alt_labels": [ + "Statute for Members", + "statute for senators" + ], + "related_ids": [], + "broader_ids": [ + "2246" + ], + "geo_area_code": null + }, + { + "id": "7218", + "label": "geographical information system", + "alt_labels": [ + "GIS" + ], + "related_ids": [ + "4359" + ], + "broader_ids": [ + "1148" + ], + "geo_area_code": null + }, + { + "id": "7219", + "label": "digital technology", + "alt_labels": [], + "related_ids": [ + "437655", + "5188", + "7951", + "8470", + "c_692dd83f", + "c_6f7bbe63", + "c_715c08c0", + "c_d59e7560", + "c_f53bfc88" + ], + "broader_ids": [ + "4415" + ], + "geo_area_code": null + }, + { + "id": "722", + "label": "bottling", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "87" + ], + "geo_area_code": null + }, + { + "id": "7220", + "label": "Free Trade Area of the Americas", + "alt_labels": [ + "FTAA" + ], + "related_ids": [ + "2275", + "4789" + ], + "broader_ids": [ + "2170" + ], + "geo_area_code": null + }, + { + "id": "7221", + "label": "European Agency for Reconstruction", + "alt_labels": [ + "EAR" + ], + "related_ids": [], + "broader_ids": [ + "5769" + ], + "geo_area_code": null + }, + { + "id": "7222", + "label": "Food and Veterinary Office", + "alt_labels": [ + "FVO" + ], + "related_ids": [ + "1595", + "1856", + "4038", + "5877", + "6569" + ], + "broader_ids": [ + "5769" + ], + "geo_area_code": null + }, + { + "id": "7223", + "label": "neighbourhood police", + "alt_labels": [], + "related_ids": [ + "6740" + ], + "broader_ids": [ + "2440" + ], + "geo_area_code": null + }, + { + "id": "723", + "label": "employment aid", + "alt_labels": [ + "employment premium", + "employment subsidy" + ], + "related_ids": [ + "1742", + "3518", + "8549" + ], + "broader_ids": [ + "712" + ], + "geo_area_code": null + }, + { + "id": "724", + "label": "emigration", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1909" + ], + "geo_area_code": null + }, + { + "id": "725", + "label": "Emilia-Romagna", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1520" + ], + "geo_area_code": null + }, + { + "id": "726", + "label": "United Arab Emirates", + "alt_labels": [ + "United Arab Emirates countries" + ], + "related_ids": [], + "broader_ids": [ + "5777", + "c_6e703074" + ], + "geo_area_code": "ARE" + }, + { + "id": "728", + "label": "issue of securities", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1804" + ], + "geo_area_code": null + }, + { + "id": "729", + "label": "issuing of currency", + "alt_labels": [], + "related_ids": [ + "204", + "4569" + ], + "broader_ids": [ + "2510" + ], + "geo_area_code": null + }, + { + "id": "73", + "label": "balance of payments assistance", + "alt_labels": [ + "BOP assistance", + "balance of payments facility", + "balance of payments support", + "medium-term financial assistance" + ], + "related_ids": [ + "4671" + ], + "broader_ids": [ + "1851" + ], + "geo_area_code": null + }, + { + "id": "730", + "label": "transport accident", + "alt_labels": [], + "related_ids": [ + "3222", + "3288", + "3706", + "5810", + "c_f7430876" + ], + "broader_ids": [ + "4033" + ], + "geo_area_code": null + }, + { + "id": "731", + "label": "designated employment", + "alt_labels": [ + "protected job" + ], + "related_ids": [ + "4559" + ], + "broader_ids": [ + "2468" + ], + "geo_area_code": null + }, + { + "id": "732", + "label": "white-collar worker", + "alt_labels": [ + "non-manual worker" + ], + "related_ids": [ + "733", + "734" + ], + "broader_ids": [ + "5275" + ], + "geo_area_code": null + }, + { + "id": "733", + "label": "office worker", + "alt_labels": [ + "clerical staff" + ], + "related_ids": [ + "732" + ], + "broader_ids": [ + "3582" + ], + "geo_area_code": null + }, + { + "id": "7337", + "label": "interparliamentary delegation", + "alt_labels": [ + "interparliamentary committee" + ], + "related_ids": [ + "3040" + ], + "broader_ids": [ + "3232" + ], + "geo_area_code": null + }, + { + "id": "7339", + "label": "Buddhist", + "alt_labels": [], + "related_ids": [ + "5030" + ], + "broader_ids": [ + "3486" + ], + "geo_area_code": null + }, + { + "id": "734", + "label": "public service employee", + "alt_labels": [ + "public servant" + ], + "related_ids": [ + "732" + ], + "broader_ids": [ + "1046" + ], + "geo_area_code": null + }, + { + "id": "7340", + "label": "military science", + "alt_labels": [ + "art of war" + ], + "related_ids": [ + "3671" + ], + "broader_ids": [ + "2464" + ], + "geo_area_code": null + }, + { + "id": "7341", + "label": "school canteen", + "alt_labels": [], + "related_ids": [ + "3563" + ], + "broader_ids": [ + "4705" + ], + "geo_area_code": null + }, + { + "id": "7342", + "label": "ecclesiastical council", + "alt_labels": [ + "synod" + ], + "related_ids": [], + "broader_ids": [ + "4101" + ], + "geo_area_code": null + }, + { + "id": "7343", + "label": "party congress", + "alt_labels": [ + "party conference" + ], + "related_ids": [ + "5277" + ], + "broader_ids": [ + "2180" + ], + "geo_area_code": null + }, + { + "id": "7346", + "label": "Congress of Local and Regional Authorities of Europe", + "alt_labels": [ + "CLRAE" + ], + "related_ids": [], + "broader_ids": [ + "121" + ], + "geo_area_code": null + }, + { + "id": "7347", + "label": "citizen's duties", + "alt_labels": [], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "7348", + "label": "right to physical integrity", + "alt_labels": [ + "right to respect for the human body" + ], + "related_ids": [ + "6171", + "6744" + ], + "broader_ids": [ + "538" + ], + "geo_area_code": null + }, + { + "id": "7349", + "label": "military criminal law", + "alt_labels": [ + "military criminal justice" + ], + "related_ids": [ + "7809" + ], + "broader_ids": [ + "573" + ], + "geo_area_code": null + }, + { + "id": "735", + "label": "employer", + "alt_labels": [], + "related_ids": [ + "2279" + ], + "broader_ids": [ + "1802" + ], + "geo_area_code": null + }, + { + "id": "7350", + "label": "Roman law", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3935" + ], + "geo_area_code": null + }, + { + "id": "7351", + "label": "tax rebate", + "alt_labels": [ + "tax refund" + ], + "related_ids": [], + "broader_ids": [ + "5566" + ], + "geo_area_code": null + }, + { + "id": "7352", + "label": "rights of access", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "540" + ], + "geo_area_code": null + }, + { + "id": "7353", + "label": "territorial enclave", + "alt_labels": [], + "related_ids": [ + "6282", + "6283", + "8354" + ], + "broader_ids": [ + "6034" + ], + "geo_area_code": null + }, + { + "id": "7354", + "label": "kidney disease", + "alt_labels": [ + "renal disease" + ], + "related_ids": [], + "broader_ids": [ + "1754" + ], + "geo_area_code": null + }, + { + "id": "7355", + "label": "pharmacy", + "alt_labels": [ + "chemist", + "dispensing chemist" + ], + "related_ids": [ + "2367", + "c_c4afa011" + ], + "broader_ids": [ + "5764" + ], + "geo_area_code": null + }, + { + "id": "7358", + "label": "railway station", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3430" + ], + "geo_area_code": null + }, + { + "id": "7359", + "label": "bus station", + "alt_labels": [ + "coach station" + ], + "related_ids": [ + "4197" + ], + "broader_ids": [ + "847" + ], + "geo_area_code": null + }, + { + "id": "736", + "label": "borrowing", + "alt_labels": [ + "fixed-interest loan", + "floating-rate loan" + ], + "related_ids": [ + "1281", + "1476", + "738", + "739", + "740" + ], + "broader_ids": [ + "285" + ], + "geo_area_code": null + }, + { + "id": "7360", + "label": "historical geography", + "alt_labels": [], + "related_ids": [ + "1245" + ], + "broader_ids": [ + "1148" + ], + "geo_area_code": null + }, + { + "id": "7361", + "label": "Hindu", + "alt_labels": [], + "related_ids": [ + "1244" + ], + "broader_ids": [ + "3486" + ], + "geo_area_code": null + }, + { + "id": "7362", + "label": "world history", + "alt_labels": [], + "related_ids": [ + "c_789ead37" + ], + "broader_ids": [ + "1245" + ], + "geo_area_code": null + }, + { + "id": "7363", + "label": "graphic illustration", + "alt_labels": [ + "graphic representation" + ], + "related_ids": [], + "broader_ids": [ + "486" + ], + "geo_area_code": null + }, + { + "id": "7364", + "label": "incunabula", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "486" + ], + "geo_area_code": null + }, + { + "id": "7365", + "label": "administrative offence", + "alt_labels": [], + "related_ids": [ + "1092", + "1432" + ], + "broader_ids": [ + "517" + ], + "geo_area_code": null + }, + { + "id": "7366", + "label": "harmonisation law", + "alt_labels": [], + "related_ids": [ + "2897" + ], + "broader_ids": [ + "1697" + ], + "geo_area_code": null + }, + { + "id": "7368", + "label": "manifesto", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "486" + ], + "geo_area_code": null + }, + { + "id": "7369", + "label": "manuscript", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "486" + ], + "geo_area_code": null + }, + { + "id": "737", + "label": "foreign aid", + "alt_labels": [], + "related_ids": [ + "2300" + ], + "broader_ids": [ + "2460" + ], + "geo_area_code": null + }, + { + "id": "7370", + "label": "legal methodology", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3935" + ], + "geo_area_code": null + }, + { + "id": "7371", + "label": "mythology", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3257" + ], + "geo_area_code": null + }, + { + "id": "7373", + "label": "antiglobalisation movement", + "alt_labels": [ + "World Social Forum", + "antiglobalization movement" + ], + "related_ids": [ + "6125" + ], + "broader_ids": [ + "2001" + ], + "geo_area_code": null + }, + { + "id": "7374", + "label": "cultural movement", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "317" + ], + "geo_area_code": null + }, + { + "id": "7375", + "label": "hinge party", + "alt_labels": [ + "party holding the balance of power" + ], + "related_ids": [], + "broader_ids": [ + "3054" + ], + "geo_area_code": null + }, + { + "id": "7376", + "label": "extra-parliamentary party", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2258" + ], + "geo_area_code": null + }, + { + "id": "7377", + "label": "monarchist party", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2258" + ], + "geo_area_code": null + }, + { + "id": "7378", + "label": "regionalist party", + "alt_labels": [], + "related_ids": [ + "3096" + ], + "broader_ids": [ + "2258" + ], + "geo_area_code": null + }, + { + "id": "7379", + "label": "plan", + "alt_labels": [ + "geographical plan" + ], + "related_ids": [ + "4619", + "5269" + ], + "broader_ids": [ + "486" + ], + "geo_area_code": null + }, + { + "id": "738", + "label": "EU borrowing", + "alt_labels": [ + "Community borrowing", + "European Union borrowing" + ], + "related_ids": [ + "736", + "739" + ], + "broader_ids": [ + "1460" + ], + "geo_area_code": null + }, + { + "id": "7380", + "label": "regional police", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2440" + ], + "geo_area_code": null + }, + { + "id": "7381", + "label": "municipal police", + "alt_labels": [ + "local police", + "town police" + ], + "related_ids": [], + "broader_ids": [ + "2440" + ], + "geo_area_code": null + }, + { + "id": "7382", + "label": "non-contributory benefit", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2605" + ], + "geo_area_code": null + }, + { + "id": "7383", + "label": "local budget", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1017" + ], + "geo_area_code": null + }, + { + "id": "7384", + "label": "regional budget", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3256" + ], + "geo_area_code": null + }, + { + "id": "7385", + "label": "political propaganda", + "alt_labels": [], + "related_ids": [ + "2808", + "6770" + ], + "broader_ids": [ + "4704" + ], + "geo_area_code": null + }, + { + "id": "7386", + "label": "presidential r\u00e9gime", + "alt_labels": [], + "related_ids": [ + "5805", + "704" + ], + "broader_ids": [ + "3025" + ], + "geo_area_code": null + }, + { + "id": "7387", + "label": "primitive religion", + "alt_labels": [ + "animism", + "fetishism", + "totemism", + "voodoo" + ], + "related_ids": [], + "broader_ids": [ + "3257" + ], + "geo_area_code": null + }, + { + "id": "7388", + "label": "student residence", + "alt_labels": [ + "hall of residence", + "university residence" + ], + "related_ids": [], + "broader_ids": [ + "4705" + ], + "geo_area_code": null + }, + { + "id": "7389", + "label": "sexuality", + "alt_labels": [ + "eroticism", + "sex" + ], + "related_ids": [ + "3911", + "454", + "681", + "7135" + ], + "broader_ids": [ + "2856" + ], + "geo_area_code": null + }, + { + "id": "739", + "label": "international loan", + "alt_labels": [], + "related_ids": [ + "736", + "738" + ], + "broader_ids": [ + "1016" + ], + "geo_area_code": null + }, + { + "id": "7390", + "label": "sociology of law", + "alt_labels": [ + "legal sociology" + ], + "related_ids": [ + "4205" + ], + "broader_ids": [ + "3935" + ], + "geo_area_code": null + }, + { + "id": "7391", + "label": "rural sociology", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4205" + ], + "geo_area_code": null + }, + { + "id": "7392", + "label": "urban sociology", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4205" + ], + "geo_area_code": null + }, + { + "id": "7393", + "label": "sociology of education", + "alt_labels": [ + "educational sociology" + ], + "related_ids": [], + "broader_ids": [ + "4205" + ], + "geo_area_code": null + }, + { + "id": "7394", + "label": "political sociology", + "alt_labels": [ + "sociology of politics" + ], + "related_ids": [ + "8419" + ], + "broader_ids": [ + "4205" + ], + "geo_area_code": null + }, + { + "id": "7395", + "label": "gas supply", + "alt_labels": [ + "gas distribution" + ], + "related_ids": [ + "1139", + "475" + ], + "broader_ids": [ + "3377" + ], + "geo_area_code": null + }, + { + "id": "7396", + "label": "living will", + "alt_labels": [ + "advance declaration", + "advance directive", + "health care directive" + ], + "related_ids": [ + "6277" + ], + "broader_ids": [ + "3370" + ], + "geo_area_code": null + }, + { + "id": "7397", + "label": "sacred text", + "alt_labels": [ + "Bible", + "Koran", + "Torah", + "sacred writings" + ], + "related_ids": [], + "broader_ids": [ + "3257" + ], + "geo_area_code": null + }, + { + "id": "7398", + "label": "video library", + "alt_labels": [ + "videotape library" + ], + "related_ids": [ + "3867", + "3868" + ], + "broader_ids": [ + "4366" + ], + "geo_area_code": null + }, + { + "id": "7399", + "label": "natural law", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3935" + ], + "geo_area_code": null + }, + { + "id": "74", + "label": "cohabitation", + "alt_labels": [ + "common-law husband", + "common-law wife", + "non-marital union", + "non-matrimonial union" + ], + "related_ids": [], + "broader_ids": [ + "4184" + ], + "geo_area_code": null + }, + { + "id": "740", + "label": "public borrowing", + "alt_labels": [ + "government securities", + "public-sector borrowing requirement" + ], + "related_ids": [ + "1496", + "736" + ], + "broader_ids": [ + "424" + ], + "geo_area_code": null + }, + { + "id": "741", + "label": "food emulsifier", + "alt_labels": [ + "emulsifier", + "emulsifying agent" + ], + "related_ids": [], + "broader_ids": [ + "6052" + ], + "geo_area_code": null + }, + { + "id": "7410", + "label": "biometrics", + "alt_labels": [ + "biometry", + "fingerprint" + ], + "related_ids": [ + "2272", + "488", + "4921", + "5595", + "6260" + ], + "broader_ids": [ + "1835" + ], + "geo_area_code": null + }, + { + "id": "7411", + "label": "right to housing", + "alt_labels": [], + "related_ids": [ + "3352", + "4850" + ], + "broader_ids": [ + "3899" + ], + "geo_area_code": null + }, + { + "id": "7412", + "label": "rapid reaction force", + "alt_labels": [], + "related_ids": [ + "218", + "2628", + "5557" + ], + "broader_ids": [ + "2499" + ], + "geo_area_code": null + }, + { + "id": "7413", + "label": "populism", + "alt_labels": [], + "related_ids": [ + "1192", + "2152" + ], + "broader_ids": [ + "1282" + ], + "geo_area_code": null + }, + { + "id": "7414", + "label": "civil union", + "alt_labels": [ + "civil solidarity pact" + ], + "related_ids": [ + "1942" + ], + "broader_ids": [ + "540" + ], + "geo_area_code": null + }, + { + "id": "7415", + "label": "Association of Caribbean States", + "alt_labels": [ + "ACS" + ], + "related_ids": [], + "broader_ids": [ + "2170" + ], + "geo_area_code": null + }, + { + "id": "7416", + "label": "patriotic movement", + "alt_labels": [ + "patriotism" + ], + "related_ids": [], + "broader_ids": [ + "2001" + ], + "geo_area_code": null + }, + { + "id": "7417", + "label": "permanent representation to the EU", + "alt_labels": [], + "related_ids": [ + "237" + ], + "broader_ids": [ + "3367" + ], + "geo_area_code": null + }, + { + "id": "742", + "label": "indebtedness", + "alt_labels": [], + "related_ids": [ + "143", + "3942", + "5582" + ], + "broader_ids": [ + "736" + ], + "geo_area_code": null + }, + { + "id": "743", + "label": "wave energy", + "alt_labels": [], + "related_ids": [ + "2114", + "3531" + ], + "broader_ids": [ + "c_eb46b396" + ], + "geo_area_code": null + }, + { + "id": "744", + "label": "soft energy", + "alt_labels": [ + "alternative energy", + "alternative energy source", + "new energy", + "substitute energy" + ], + "related_ids": [ + "1707", + "203", + "2498", + "4419", + "4420", + "746" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "745", + "label": "export aid", + "alt_labels": [], + "related_ids": [ + "287", + "3568", + "4310" + ], + "broader_ids": [ + "712" + ], + "geo_area_code": null + }, + { + "id": "746", + "label": "hard energy", + "alt_labels": [], + "related_ids": [ + "744" + ], + "broader_ids": [ + "3737" + ], + "geo_area_code": null + }, + { + "id": "747", + "label": "electrical energy", + "alt_labels": [ + "electricity" + ], + "related_ids": [ + "2693", + "3741", + "3859", + "477", + "4886", + "707" + ], + "broader_ids": [ + "3783" + ], + "geo_area_code": null + }, + { + "id": "748", + "label": "wind energy", + "alt_labels": [ + "wind power" + ], + "related_ids": [], + "broader_ids": [ + "744" + ], + "geo_area_code": null + }, + { + "id": "749", + "label": "geothermal energy", + "alt_labels": [ + "geothermics" + ], + "related_ids": [], + "broader_ids": [ + "744" + ], + "geo_area_code": null + }, + { + "id": "75", + "label": "competition", + "alt_labels": [], + "related_ids": [ + "1010", + "1072", + "2218", + "2678", + "4219", + "45", + "6134" + ], + "broader_ids": [ + "2474" + ], + "geo_area_code": null + }, + { + "id": "750", + "label": "hydraulic energy", + "alt_labels": [], + "related_ids": [ + "1723", + "597", + "751" + ], + "broader_ids": [ + "744" + ], + "geo_area_code": null + }, + { + "id": "751", + "label": "hydroelectric power", + "alt_labels": [], + "related_ids": [ + "750" + ], + "broader_ids": [ + "3783" + ], + "geo_area_code": null + }, + { + "id": "752", + "label": "tidal energy", + "alt_labels": [ + "tidal power" + ], + "related_ids": [ + "2114", + "3531" + ], + "broader_ids": [ + "c_eb46b396" + ], + "geo_area_code": null + }, + { + "id": "753", + "label": "nuclear energy", + "alt_labels": [ + "atomic energy" + ], + "related_ids": [ + "1023", + "1123", + "2376", + "347", + "3715", + "428", + "4631", + "686" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "754", + "label": "renewable energy", + "alt_labels": [ + "low-carbon energy", + "non-renewable energy", + "renewable energy source" + ], + "related_ids": [ + "2945", + "3551", + "3638", + "c_7bf10a38", + "c_86d7db98", + "c_c9724a74" + ], + "broader_ids": [ + "744" + ], + "geo_area_code": null + }, + { + "id": "755", + "label": "aid per hectare", + "alt_labels": [ + "per hectare aid" + ], + "related_ids": [], + "broader_ids": [ + "2173" + ], + "geo_area_code": null + }, + { + "id": "756", + "label": "solar energy", + "alt_labels": [ + "solar radiation" + ], + "related_ids": [], + "broader_ids": [ + "744" + ], + "geo_area_code": null + }, + { + "id": "757", + "label": "thermal energy", + "alt_labels": [], + "related_ids": [ + "1516", + "3188", + "4108", + "5503", + "5615" + ], + "broader_ids": [ + "744" + ], + "geo_area_code": null + }, + { + "id": "758", + "label": "child", + "alt_labels": [ + "childhood", + "children" + ], + "related_ids": [ + "1022", + "1133", + "1992", + "4552", + "7946" + ], + "broader_ids": [ + "3327" + ], + "geo_area_code": null + }, + { + "id": "759", + "label": "abandoned child", + "alt_labels": [], + "related_ids": [ + "3919", + "6738" + ], + "broader_ids": [ + "2239" + ], + "geo_area_code": null + }, + { + "id": "76", + "label": "international competition", + "alt_labels": [], + "related_ids": [ + "11" + ], + "broader_ids": [ + "75" + ], + "geo_area_code": null + }, + { + "id": "760", + "label": "child of migrant", + "alt_labels": [ + "second generation migrant", + "third generation migrant" + ], + "related_ids": [ + "439" + ], + "broader_ids": [ + "1912" + ], + "geo_area_code": null + }, + { + "id": "761", + "label": "natural child", + "alt_labels": [ + "illegitimate child" + ], + "related_ids": [], + "broader_ids": [ + "2239" + ], + "geo_area_code": null + }, + { + "id": "762", + "label": "only child", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2239" + ], + "geo_area_code": null + }, + { + "id": "763", + "label": "commitment of expenditure", + "alt_labels": [ + "commitment appropriation", + "commitment authorisation" + ], + "related_ids": [ + "394" + ], + "broader_ids": [ + "929" + ], + "geo_area_code": null + }, + { + "id": "764", + "label": "fertiliser", + "alt_labels": [ + "fertilizer" + ], + "related_ids": [ + "1382", + "1577", + "2530", + "2534", + "3761", + "832" + ], + "broader_ids": [ + "2014" + ], + "geo_area_code": null + }, + { + "id": "765", + "label": "chemical fertiliser", + "alt_labels": [ + "chemical fertilizer", + "inorganic fertiliser", + "nitrogenous fertiliser", + "phosphoric fertiliser", + "potassium fertiliser", + "urea" + ], + "related_ids": [ + "2538" + ], + "broader_ids": [ + "764" + ], + "geo_area_code": null + }, + { + "id": "766", + "label": "investment aid", + "alt_labels": [], + "related_ids": [ + "2463" + ], + "broader_ids": [ + "712" + ], + "geo_area_code": null + }, + { + "id": "767", + "label": "organic fertiliser", + "alt_labels": [ + "compost", + "dung", + "liquid manure", + "manure", + "organic fertilizer" + ], + "related_ids": [ + "344", + "6408" + ], + "broader_ids": [ + "764" + ], + "geo_area_code": null + }, + { + "id": "768", + "label": "fattening", + "alt_labels": [ + "cramming" + ], + "related_ids": [ + "1277" + ], + "broader_ids": [ + "711" + ], + "geo_area_code": null + }, + { + "id": "769", + "label": "political kidnapping", + "alt_labels": [], + "related_ids": [ + "3945" + ], + "broader_ids": [ + "4730" + ], + "geo_area_code": null + }, + { + "id": "77", + "label": "public administration", + "alt_labels": [ + "general government" + ], + "related_ids": [ + "2583", + "2588", + "3923", + "4834" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "770", + "label": "economic survey", + "alt_labels": [ + "survey of the economic situation" + ], + "related_ids": [ + "4256", + "771", + "772" + ], + "broader_ids": [ + "1800" + ], + "geo_area_code": null + }, + { + "id": "771", + "label": "consumer survey", + "alt_labels": [], + "related_ids": [ + "1226", + "1996", + "377", + "396", + "770" + ], + "broader_ids": [ + "895" + ], + "geo_area_code": null + }, + { + "id": "772", + "label": "social survey", + "alt_labels": [], + "related_ids": [ + "4262", + "770" + ], + "broader_ids": [ + "1820" + ], + "geo_area_code": null + }, + { + "id": "773", + "label": "data recording", + "alt_labels": [ + "data acquisition", + "data capture", + "recording of data" + ], + "related_ids": [ + "774" + ], + "broader_ids": [ + "4488" + ], + "geo_area_code": null + }, + { + "id": "774", + "label": "documentary reference recording", + "alt_labels": [], + "related_ids": [ + "773" + ], + "broader_ids": [ + "494" + ], + "geo_area_code": null + }, + { + "id": "775", + "label": "building subsidy", + "alt_labels": [ + "building grant" + ], + "related_ids": [ + "298", + "5093" + ], + "broader_ids": [ + "2475" + ], + "geo_area_code": null + }, + { + "id": "776", + "label": "fuel enrichment", + "alt_labels": [], + "related_ids": [ + "6047" + ], + "broader_ids": [ + "4422" + ], + "geo_area_code": null + }, + { + "id": "777", + "label": "teacher", + "alt_labels": [ + "professor", + "teaching staff" + ], + "related_ids": [ + "1071" + ], + "broader_ids": [ + "1927" + ], + "geo_area_code": null + }, + { + "id": "778", + "label": "teaching", + "alt_labels": [ + "tuition" + ], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "779", + "label": "distance learning", + "alt_labels": [ + "e-learning", + "education by correspondence course", + "educational broadcast", + "educational radio", + "educational television", + "learning by correspondence course", + "schools broadcast", + "television teaching" + ], + "related_ids": [ + "2013" + ], + "broader_ids": [ + "3683" + ], + "geo_area_code": null + }, + { + "id": "78", + "label": "summarising", + "alt_labels": [ + "abstracting", + "summarizing", + "summary", + "synopsis" + ], + "related_ids": [], + "broader_ids": [ + "1752" + ], + "geo_area_code": null + }, + { + "id": "780", + "label": "agricultural education", + "alt_labels": [ + "agricultural training" + ], + "related_ids": [ + "1073", + "4771", + "685" + ], + "broader_ids": [ + "795" + ], + "geo_area_code": null + }, + { + "id": "7809", + "label": "military law", + "alt_labels": [ + "martial law" + ], + "related_ids": [ + "1544", + "7349" + ], + "broader_ids": [ + "2628" + ], + "geo_area_code": null + }, + { + "id": "781", + "label": "programmed learning", + "alt_labels": [ + "computer-aided learning", + "computer-assisted learning", + "computerised teaching", + "teaching by computer" + ], + "related_ids": [ + "1426", + "3279" + ], + "broader_ids": [ + "3683" + ], + "geo_area_code": null + }, + { + "id": "7810", + "label": "learning technique", + "alt_labels": [], + "related_ids": [ + "3683", + "5102" + ], + "broader_ids": [ + "6345" + ], + "geo_area_code": null + }, + { + "id": "7811", + "label": "mnemonics", + "alt_labels": [ + "memorisation technique" + ], + "related_ids": [], + "broader_ids": [ + "7810" + ], + "geo_area_code": null + }, + { + "id": "7812", + "label": "psychometric test", + "alt_labels": [ + "personality test" + ], + "related_ids": [ + "2943" + ], + "broader_ids": [ + "2856" + ], + "geo_area_code": null + }, + { + "id": "7813", + "label": "Cotonou Agreement", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4049" + ], + "geo_area_code": null + }, + { + "id": "7814", + "label": "regions of Poland", + "alt_labels": [], + "related_ids": [ + "2543" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "7815", + "label": "regions of Slovenia", + "alt_labels": [], + "related_ids": [ + "5898" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "7816", + "label": "regions of the Czech Republic", + "alt_labels": [], + "related_ids": [ + "5860" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "7817", + "label": "regions of Slovakia", + "alt_labels": [], + "related_ids": [ + "5859" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "7818", + "label": "Gorenjska", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "7815" + ], + "geo_area_code": null + }, + { + "id": "7819", + "label": "Gori\u0161ka", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "7815" + ], + "geo_area_code": null + }, + { + "id": "782", + "label": "denominational education", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "778" + ], + "geo_area_code": null + }, + { + "id": "7820", + "label": "South-east Slovenia", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "7815" + ], + "geo_area_code": null + }, + { + "id": "7821", + "label": "Koro\u0161ka", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "7815" + ], + "geo_area_code": null + }, + { + "id": "7822", + "label": "Notranjsko-kra\u0161ka", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "7815" + ], + "geo_area_code": null + }, + { + "id": "7823", + "label": "Obalno-kra\u0161ka", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "7815" + ], + "geo_area_code": null + }, + { + "id": "7824", + "label": "Podravska", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "7815" + ], + "geo_area_code": null + }, + { + "id": "7825", + "label": "Pomurska", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "7815" + ], + "geo_area_code": null + }, + { + "id": "7826", + "label": "Savinjska", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "7815" + ], + "geo_area_code": null + }, + { + "id": "7827", + "label": "Spodnjeposavska", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "7815" + ], + "geo_area_code": null + }, + { + "id": "7828", + "label": "Zasavska", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "7815" + ], + "geo_area_code": null + }, + { + "id": "7829", + "label": "Central Slovenia", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "7815" + ], + "geo_area_code": null + }, + { + "id": "783", + "label": "language teaching", + "alt_labels": [ + "linguistic training" + ], + "related_ids": [ + "1670", + "2019", + "4888", + "c_090e8e94" + ], + "broader_ids": [ + "784" + ], + "geo_area_code": null + }, + { + "id": "7830", + "label": "Bratislava region", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "7817" + ], + "geo_area_code": null + }, + { + "id": "7834", + "label": "Trnava region", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "7817" + ], + "geo_area_code": null + }, + { + "id": "7835", + "label": "Tren\u010d\u00edn region", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "7817" + ], + "geo_area_code": null + }, + { + "id": "7836", + "label": "Nitra region", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "7817" + ], + "geo_area_code": null + }, + { + "id": "7837", + "label": "Bansk\u00e1 Bystrica region", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "7817" + ], + "geo_area_code": null + }, + { + "id": "7838", + "label": "Pre\u0161ov region", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "7817" + ], + "geo_area_code": null + }, + { + "id": "7839", + "label": "Ko\u0161ice region", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "7817" + ], + "geo_area_code": null + }, + { + "id": "784", + "label": "general education", + "alt_labels": [], + "related_ids": [ + "2794" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "7840", + "label": "South Bohemian Region", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "7816" + ], + "geo_area_code": null + }, + { + "id": "7841", + "label": "Hradec Kr\u00e1lov\u00e9 Region", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "7816" + ], + "geo_area_code": null + }, + { + "id": "7842", + "label": "Karlovy Vary Region", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "7816" + ], + "geo_area_code": null + }, + { + "id": "7843", + "label": "Liberec Region", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "7816" + ], + "geo_area_code": null + }, + { + "id": "7844", + "label": "South Moravian Region", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "7816" + ], + "geo_area_code": null + }, + { + "id": "7845", + "label": "Moravian-Silesian Region", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "7816" + ], + "geo_area_code": null + }, + { + "id": "7846", + "label": "Olomouc Region", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "7816" + ], + "geo_area_code": null + }, + { + "id": "7847", + "label": "Pardubice Region", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "7816" + ], + "geo_area_code": null + }, + { + "id": "7848", + "label": "Plze\u0148 Region", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "7816" + ], + "geo_area_code": null + }, + { + "id": "7849", + "label": "Prague", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "7816" + ], + "geo_area_code": null + }, + { + "id": "785", + "label": "free education", + "alt_labels": [], + "related_ids": [ + "269", + "384" + ], + "broader_ids": [ + "778" + ], + "geo_area_code": null + }, + { + "id": "7850", + "label": "\u00dast\u00ed nad Labem region", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "7816" + ], + "geo_area_code": null + }, + { + "id": "7851", + "label": "Vyso\u010dina Region", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "7816" + ], + "geo_area_code": null + }, + { + "id": "7852", + "label": "Zl\u00edn Region", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "7816" + ], + "geo_area_code": null + }, + { + "id": "7853", + "label": "Central Bohemian Region", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "7816" + ], + "geo_area_code": null + }, + { + "id": "7854", + "label": "\u017dilina region", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "7817" + ], + "geo_area_code": null + }, + { + "id": "7855", + "label": "regions of Estonia", + "alt_labels": [], + "related_ids": [ + "5619" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "7856", + "label": "Northern Estonia", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "7855" + ], + "geo_area_code": null + }, + { + "id": "7857", + "label": "Western Estonia", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "7855" + ], + "geo_area_code": null + }, + { + "id": "7858", + "label": "Central Estonia", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "7855" + ], + "geo_area_code": null + }, + { + "id": "7859", + "label": "North-eastern Estonia", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "7855" + ], + "geo_area_code": null + }, + { + "id": "786", + "label": "modernisation aid", + "alt_labels": [ + "modernisation grant", + "modernization aid" + ], + "related_ids": [ + "1957", + "1958", + "2965" + ], + "broader_ids": [ + "712" + ], + "geo_area_code": null + }, + { + "id": "7860", + "label": "Southern Estonia", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "7855" + ], + "geo_area_code": null + }, + { + "id": "7861", + "label": "regions of Latvia", + "alt_labels": [], + "related_ids": [ + "5706" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "7862", + "label": "Latgale", + "alt_labels": [ + "East Latvia" + ], + "related_ids": [], + "broader_ids": [ + "7861" + ], + "geo_area_code": null + }, + { + "id": "7864", + "label": "Riga", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "7861" + ], + "geo_area_code": null + }, + { + "id": "7865", + "label": "Vidzeme", + "alt_labels": [ + "North Latvia" + ], + "related_ids": [], + "broader_ids": [ + "7861" + ], + "geo_area_code": null + }, + { + "id": "7866", + "label": "Kurzeme", + "alt_labels": [ + "West Latvia" + ], + "related_ids": [], + "broader_ids": [ + "7861" + ], + "geo_area_code": null + }, + { + "id": "7867", + "label": "Zemgale", + "alt_labels": [ + "South Latvia" + ], + "related_ids": [], + "broader_ids": [ + "7861" + ], + "geo_area_code": null + }, + { + "id": "7868", + "label": "regions of Lithuania", + "alt_labels": [], + "related_ids": [ + "5709" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "7869", + "label": "Alytus county", + "alt_labels": [ + "Alytaus apskritis" + ], + "related_ids": [], + "broader_ids": [ + "7868" + ], + "geo_area_code": null + }, + { + "id": "787", + "label": "secular education", + "alt_labels": [], + "related_ids": [ + "6862" + ], + "broader_ids": [ + "778" + ], + "geo_area_code": null + }, + { + "id": "7870", + "label": "Kaunas county", + "alt_labels": [ + "Kauno apskritis" + ], + "related_ids": [], + "broader_ids": [ + "7868" + ], + "geo_area_code": null + }, + { + "id": "7871", + "label": "Klaipeda county", + "alt_labels": [ + "Klaipedos apskritis" + ], + "related_ids": [], + "broader_ids": [ + "7868" + ], + "geo_area_code": null + }, + { + "id": "7872", + "label": "Marijampol\u0117 county", + "alt_labels": [ + "Marijampoles apskritis" + ], + "related_ids": [], + "broader_ids": [ + "7868" + ], + "geo_area_code": null + }, + { + "id": "7873", + "label": "Panev\u0117\u017eys county", + "alt_labels": [ + "Panevezio apskritis" + ], + "related_ids": [], + "broader_ids": [ + "7868" + ], + "geo_area_code": null + }, + { + "id": "7874", + "label": "\u0160iauliai county", + "alt_labels": [ + "Siauliu apskritis" + ], + "related_ids": [], + "broader_ids": [ + "7868" + ], + "geo_area_code": null + }, + { + "id": "7875", + "label": "Taurag\u0117 county", + "alt_labels": [ + "Taurages apskritis" + ], + "related_ids": [], + "broader_ids": [ + "7868" + ], + "geo_area_code": null + }, + { + "id": "7876", + "label": "Tel\u0161iai county", + "alt_labels": [ + "Telsiu apskritis" + ], + "related_ids": [], + "broader_ids": [ + "7868" + ], + "geo_area_code": null + }, + { + "id": "7877", + "label": "Utena county", + "alt_labels": [ + "Utenos apskritis" + ], + "related_ids": [], + "broader_ids": [ + "7868" + ], + "geo_area_code": null + }, + { + "id": "7878", + "label": "Vilnius county", + "alt_labels": [ + "Vilniaus apskritis" + ], + "related_ids": [], + "broader_ids": [ + "7868" + ], + "geo_area_code": null + }, + { + "id": "7879", + "label": "regions of Hungary", + "alt_labels": [], + "related_ids": [ + "1255" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "788", + "label": "medical training", + "alt_labels": [ + "medical education", + "training of doctors" + ], + "related_ids": [ + "1852", + "2789" + ], + "broader_ids": [ + "795" + ], + "geo_area_code": null + }, + { + "id": "7880", + "label": "Oulu", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "6135" + ], + "geo_area_code": null + }, + { + "id": "7881", + "label": "Western Finland", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "6135" + ], + "geo_area_code": null + }, + { + "id": "7889", + "label": "Attica", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1184" + ], + "geo_area_code": null + }, + { + "id": "789", + "label": "compulsory education", + "alt_labels": [ + "compulsory school attendance", + "compulsory schooling" + ], + "related_ids": [ + "1419", + "1597", + "3968", + "590" + ], + "broader_ids": [ + "778" + ], + "geo_area_code": null + }, + { + "id": "7890", + "label": "Western Greece", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1184" + ], + "geo_area_code": null + }, + { + "id": "7891", + "label": "Central Macedonia", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1717" + ], + "geo_area_code": null + }, + { + "id": "7892", + "label": "Eastern Macedonia and Thrace", + "alt_labels": [ + "Western Thrace" + ], + "related_ids": [], + "broader_ids": [ + "1717" + ], + "geo_area_code": null + }, + { + "id": "7893", + "label": "Western Macedonia", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1717" + ], + "geo_area_code": null + }, + { + "id": "7895", + "label": "Northern Aegean", + "alt_labels": [ + "North Aegean" + ], + "related_ids": [], + "broader_ids": [ + "4171" + ], + "geo_area_code": null + }, + { + "id": "7896", + "label": "Southern Aegean", + "alt_labels": [ + "Cyclades", + "Dodecanese", + "South Aegean island" + ], + "related_ids": [], + "broader_ids": [ + "4171" + ], + "geo_area_code": null + }, + { + "id": "7899", + "label": "Southern Alf\u00f6ld", + "alt_labels": [ + "Southern Great Plain" + ], + "related_ids": [], + "broader_ids": [ + "7879" + ], + "geo_area_code": null + }, + { + "id": "79", + "label": "condiment", + "alt_labels": [ + "mustard" + ], + "related_ids": [ + "2948" + ], + "broader_ids": [ + "2736" + ], + "geo_area_code": null + }, + { + "id": "790", + "label": "paramedical training", + "alt_labels": [ + "paramedical education" + ], + "related_ids": [ + "2790" + ], + "broader_ids": [ + "795" + ], + "geo_area_code": null + }, + { + "id": "7900", + "label": "Northern Alf\u00f6ld", + "alt_labels": [ + "Northern Great Plain" + ], + "related_ids": [], + "broader_ids": [ + "7879" + ], + "geo_area_code": null + }, + { + "id": "7901", + "label": "Central Hungary", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "7879" + ], + "geo_area_code": null + }, + { + "id": "7902", + "label": "Northern Hungary", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "7879" + ], + "geo_area_code": null + }, + { + "id": "7903", + "label": "Central Transdanubia", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "7879" + ], + "geo_area_code": null + }, + { + "id": "7904", + "label": "Southern Transdanubia", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "7879" + ], + "geo_area_code": null + }, + { + "id": "7905", + "label": "Western Transdanubia", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "7879" + ], + "geo_area_code": null + }, + { + "id": "791", + "label": "multidisciplinary education", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "784" + ], + "geo_area_code": null + }, + { + "id": "792", + "label": "postgraduate education", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2059" + ], + "geo_area_code": null + }, + { + "id": "7926", + "label": "intellectual capital", + "alt_labels": [ + "knowledge capital", + "skills capital" + ], + "related_ids": [ + "1055", + "1163", + "2817", + "7951", + "c_fa8f51b0" + ], + "broader_ids": [ + "1154" + ], + "geo_area_code": null + }, + { + "id": "7927", + "label": "European Data Protection Supervisor", + "alt_labels": [ + "EDPS", + "European Supervisor" + ], + "related_ids": [ + "5181", + "5595" + ], + "broader_ids": [ + "2163" + ], + "geo_area_code": null + }, + { + "id": "7928", + "label": "EPSO", + "alt_labels": [ + "European Communities Personnel Selection Office", + "European Personnel Selection Office" + ], + "related_ids": [ + "5130" + ], + "broader_ids": [ + "5769" + ], + "geo_area_code": null + }, + { + "id": "7929", + "label": "judicial review", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2701" + ], + "geo_area_code": null + }, + { + "id": "793", + "label": "primary education", + "alt_labels": [ + "elementary education", + "primary school" + ], + "related_ids": [], + "broader_ids": [ + "2059" + ], + "geo_area_code": null + }, + { + "id": "7930", + "label": "open method of coordination", + "alt_labels": [ + "OMC" + ], + "related_ids": [ + "3346", + "6609" + ], + "broader_ids": [ + "4017" + ], + "geo_area_code": null + }, + { + "id": "7931", + "label": "nanotechnology", + "alt_labels": [ + "nanobiotechnology", + "nanoelectronics", + "nanomaterials", + "nanoscience" + ], + "related_ids": [ + "3689", + "3876" + ], + "broader_ids": [ + "4415" + ], + "geo_area_code": null + }, + { + "id": "7932", + "label": "European neighbourhood policy", + "alt_labels": [ + "ENP" + ], + "related_ids": [ + "226", + "437422", + "6373", + "c_4d5b6dbd" + ], + "broader_ids": [ + "4040" + ], + "geo_area_code": null + }, + { + "id": "7933", + "label": "UN International Drug Control Programme", + "alt_labels": [ + "UNDCP", + "United Nations International Drug Control Programme" + ], + "related_ids": [], + "broader_ids": [ + "4365" + ], + "geo_area_code": null + }, + { + "id": "7934", + "label": "public-private partnership", + "alt_labels": [ + "PPP" + ], + "related_ids": [ + "1810", + "2588", + "829" + ], + "broader_ids": [ + "77" + ], + "geo_area_code": null + }, + { + "id": "7935", + "label": "diplomatic protocol", + "alt_labels": [], + "related_ids": [ + "6884" + ], + "broader_ids": [ + "3206" + ], + "geo_area_code": null + }, + { + "id": "7936", + "label": "European Maritime Safety Agency", + "alt_labels": [ + "EMSA" + ], + "related_ids": [ + "5889" + ], + "broader_ids": [ + "5769" + ], + "geo_area_code": null + }, + { + "id": "7937", + "label": "European Aviation Safety Agency", + "alt_labels": [ + "EASA" + ], + "related_ids": [ + "5887" + ], + "broader_ids": [ + "5769" + ], + "geo_area_code": null + }, + { + "id": "7938", + "label": "European Union Agency for Cybersecurity", + "alt_labels": [ + "ENISA", + "European Network and Information Security Agency" + ], + "related_ids": [ + "5181", + "c_04ae3ba8" + ], + "broader_ids": [ + "5769" + ], + "geo_area_code": null + }, + { + "id": "7939", + "label": "digital divide", + "alt_labels": [ + "electronic divide" + ], + "related_ids": [ + "1420", + "5383" + ], + "broader_ids": [ + "453" + ], + "geo_area_code": null + }, + { + "id": "794", + "label": "private education", + "alt_labels": [ + "independent school", + "private school" + ], + "related_ids": [ + "3914" + ], + "broader_ids": [ + "778" + ], + "geo_area_code": null + }, + { + "id": "7941", + "label": "language policy", + "alt_labels": [], + "related_ids": [ + "1205", + "4097", + "5171" + ], + "broader_ids": [ + "1670" + ], + "geo_area_code": null + }, + { + "id": "7942", + "label": "corporate social responsibility", + "alt_labels": [ + "CSR", + "company environmental policy", + "corporate environmental responsibility" + ], + "related_ids": [ + "1156", + "5585" + ], + "broader_ids": [ + "2469" + ], + "geo_area_code": null + }, + { + "id": "7943", + "label": "speed reading", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "7810" + ], + "geo_area_code": null + }, + { + "id": "7944", + "label": "traffic offence", + "alt_labels": [ + "driving offence", + "road traffic offence" + ], + "related_ids": [ + "3862", + "4047", + "6020" + ], + "broader_ids": [ + "1432" + ], + "geo_area_code": null + }, + { + "id": "7945", + "label": "icebreaker", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4827" + ], + "geo_area_code": null + }, + { + "id": "7946", + "label": "care allowance", + "alt_labels": [], + "related_ids": [ + "1231", + "2333", + "758" + ], + "broader_ids": [ + "2605" + ], + "geo_area_code": null + }, + { + "id": "7947", + "label": "unsolicited electronic advertising", + "alt_labels": [ + "junk e-mail", + "spam", + "unsolicited commercial communication", + "unsolicited e-mail advertising" + ], + "related_ids": [ + "3010", + "6089", + "6776" + ], + "broader_ids": [ + "2862" + ], + "geo_area_code": null + }, + { + "id": "7948", + "label": "organisational culture", + "alt_labels": [ + "corporate culture" + ], + "related_ids": [ + "1156", + "1163", + "6910", + "82" + ], + "broader_ids": [ + "2469" + ], + "geo_area_code": null + }, + { + "id": "7949", + "label": "outplacement", + "alt_labels": [], + "related_ids": [ + "1742", + "6356" + ], + "broader_ids": [ + "1646" + ], + "geo_area_code": null + }, + { + "id": "795", + "label": "vocational education", + "alt_labels": [ + "commercial school", + "technical school", + "vocational school" + ], + "related_ids": [ + "1074" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "7950", + "label": "Internet address", + "alt_labels": [ + "Internet domain name", + "URL", + "web address" + ], + "related_ids": [], + "broader_ids": [ + "6088" + ], + "geo_area_code": null + }, + { + "id": "7951", + "label": "knowledge economy", + "alt_labels": [ + "knowledge-based economy", + "knowledge-driven economy" + ], + "related_ids": [ + "2087", + "2478", + "310", + "6140", + "6910", + "7219", + "7926" + ], + "broader_ids": [ + "637" + ], + "geo_area_code": null + }, + { + "id": "7952", + "label": "conference of presidents", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "53" + ], + "geo_area_code": null + }, + { + "id": "7953", + "label": "European Union Institute for Security Studies", + "alt_labels": [ + "EUISS", + "ISS" + ], + "related_ids": [ + "5769" + ], + "broader_ids": [ + "6709" + ], + "geo_area_code": null + }, + { + "id": "7954", + "label": "European Union Satellite Centre", + "alt_labels": [ + "EUSC" + ], + "related_ids": [ + "5769" + ], + "broader_ids": [ + "6709" + ], + "geo_area_code": null + }, + { + "id": "7955", + "label": "stem cell", + "alt_labels": [ + "undifferentiated cell" + ], + "related_ids": [ + "4111", + "435098", + "5169" + ], + "broader_ids": [ + "4921" + ], + "geo_area_code": null + }, + { + "id": "7956", + "label": "offshoring", + "alt_labels": [ + "delocalisation", + "industrial delocalisation", + "relocation of firm" + ], + "related_ids": [ + "2936", + "6105", + "828" + ], + "broader_ids": [ + "2469" + ], + "geo_area_code": null + }, + { + "id": "7959", + "label": "military cemetery", + "alt_labels": [ + "war grave" + ], + "related_ids": [ + "2628" + ], + "broader_ids": [ + "5488" + ], + "geo_area_code": null + }, + { + "id": "796", + "label": "public education", + "alt_labels": [ + "State education" + ], + "related_ids": [ + "384", + "3914" + ], + "broader_ids": [ + "778" + ], + "geo_area_code": null + }, + { + "id": "7965", + "label": "Mazovia province", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "7814" + ], + "geo_area_code": null + }, + { + "id": "7966", + "label": "Little Poland province", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "7814" + ], + "geo_area_code": null + }, + { + "id": "7967", + "label": "Silesia province", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "7814" + ], + "geo_area_code": null + }, + { + "id": "7968", + "label": "Lublin province", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "7814" + ], + "geo_area_code": null + }, + { + "id": "7969", + "label": "Lower Carpathians province", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "7814" + ], + "geo_area_code": null + }, + { + "id": "797", + "label": "production aid", + "alt_labels": [ + "aid to producers" + ], + "related_ids": [ + "2481" + ], + "broader_ids": [ + "712" + ], + "geo_area_code": null + }, + { + "id": "7970", + "label": "Western Pomerania province", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "7814" + ], + "geo_area_code": null + }, + { + "id": "7971", + "label": "Holy Cross province", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "7814" + ], + "geo_area_code": null + }, + { + "id": "7972", + "label": "Lodz province", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "7814" + ], + "geo_area_code": null + }, + { + "id": "7973", + "label": "Lubus province", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "7814" + ], + "geo_area_code": null + }, + { + "id": "7974", + "label": "Lower Silesia province", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "7814" + ], + "geo_area_code": null + }, + { + "id": "7975", + "label": "Podlachia province", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "7814" + ], + "geo_area_code": null + }, + { + "id": "7976", + "label": "Greater Poland province", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "7814" + ], + "geo_area_code": null + }, + { + "id": "7977", + "label": "Pomerania", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "7814" + ], + "geo_area_code": null + }, + { + "id": "7978", + "label": "Opole province", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "7814" + ], + "geo_area_code": null + }, + { + "id": "7979", + "label": "Kuyavia-Pomerania province", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "7814" + ], + "geo_area_code": null + }, + { + "id": "798", + "label": "scientific education", + "alt_labels": [ + "scientific training" + ], + "related_ids": [], + "broader_ids": [ + "784" + ], + "geo_area_code": null + }, + { + "id": "7980", + "label": "Varmia-Mazuria province", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "7814" + ], + "geo_area_code": null + }, + { + "id": "7981", + "label": "parental allowance", + "alt_labels": [ + "parental leave allowance" + ], + "related_ids": [ + "105", + "2501" + ], + "broader_ids": [ + "2605" + ], + "geo_area_code": null + }, + { + "id": "7982", + "label": "European Defence Agency", + "alt_labels": [ + "EDA" + ], + "related_ids": [ + "5769" + ], + "broader_ids": [ + "6709" + ], + "geo_area_code": null + }, + { + "id": "7983", + "label": "European Centre for Disease Prevention and Control", + "alt_labels": [ + "ECDC" + ], + "related_ids": [ + "1854", + "c_814bb9e4" + ], + "broader_ids": [ + "5769" + ], + "geo_area_code": null + }, + { + "id": "7984", + "label": "European Chemicals Agency", + "alt_labels": [ + "ECHA" + ], + "related_ids": [ + "c_e5d85c14" + ], + "broader_ids": [ + "5769" + ], + "geo_area_code": null + }, + { + "id": "7985", + "label": "European Union Agency for Railways", + "alt_labels": [ + "ERA", + "European Railway Agency", + "European Railway Agency for Safety and Interoperability" + ], + "related_ids": [ + "4514" + ], + "broader_ids": [ + "5769" + ], + "geo_area_code": null + }, + { + "id": "7986", + "label": "CEPOL", + "alt_labels": [ + "European Police College", + "European Union Agency for Law Enforcement Training" + ], + "related_ids": [ + "2440" + ], + "broader_ids": [ + "5552" + ], + "geo_area_code": null + }, + { + "id": "7987", + "label": "prohibited weapon", + "alt_labels": [ + "banned weapon" + ], + "related_ids": [], + "broader_ids": [ + "2647" + ], + "geo_area_code": null + }, + { + "id": "7988", + "label": "V\u00e4sternorrland county", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "6241" + ], + "geo_area_code": null + }, + { + "id": "7989", + "label": "J\u00e4mtland county", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "6241" + ], + "geo_area_code": null + }, + { + "id": "799", + "label": "secondary education", + "alt_labels": [ + "secondary school" + ], + "related_ids": [], + "broader_ids": [ + "2059" + ], + "geo_area_code": null + }, + { + "id": "7990", + "label": "V\u00e4rmland county", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "6240" + ], + "geo_area_code": null + }, + { + "id": "7991", + "label": "Dalarna county", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "6240" + ], + "geo_area_code": null + }, + { + "id": "7992", + "label": "G\u00e4vleborg county", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "6240" + ], + "geo_area_code": null + }, + { + "id": "7993", + "label": "J\u00f6nk\u00f6ping county", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "6245" + ], + "geo_area_code": null + }, + { + "id": "7994", + "label": "Kronoberg county", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "6245" + ], + "geo_area_code": null + }, + { + "id": "7995", + "label": "Kalmar county", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "6245" + ], + "geo_area_code": null + }, + { + "id": "7996", + "label": "Gotland county", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "6245" + ], + "geo_area_code": null + }, + { + "id": "7998", + "label": "Blekinge county", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "6239" + ], + "geo_area_code": null + }, + { + "id": "7999", + "label": "Sk\u00e5ne county", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "6239" + ], + "geo_area_code": null + }, + { + "id": "8", + "label": "East-West trade", + "alt_labels": [], + "related_ids": [ + "3223" + ], + "broader_ids": [ + "11" + ], + "geo_area_code": null + }, + { + "id": "80", + "label": "terms for aid", + "alt_labels": [ + "aid procedure", + "counterpart funds" + ], + "related_ids": [ + "5561", + "5926" + ], + "broader_ids": [ + "3003" + ], + "geo_area_code": null + }, + { + "id": "800", + "label": "higher education", + "alt_labels": [ + "grande \u00e9cole", + "institute of technology", + "tertiary education" + ], + "related_ids": [ + "3718", + "4072", + "4456", + "4870", + "c_3bd33e24" + ], + "broader_ids": [ + "2059" + ], + "geo_area_code": null + }, + { + "id": "8000", + "label": "Halland county", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "6246" + ], + "geo_area_code": null + }, + { + "id": "8001", + "label": "V\u00e4stra G\u00f6taland county", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "6246" + ], + "geo_area_code": null + }, + { + "id": "8002", + "label": "Uppsala county", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "6238" + ], + "geo_area_code": null + }, + { + "id": "8003", + "label": "S\u00f6dermanland county", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "6238" + ], + "geo_area_code": null + }, + { + "id": "8004", + "label": "\u00d6sterg\u00f6tland county", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "6238" + ], + "geo_area_code": null + }, + { + "id": "8005", + "label": "\u00d6rebro county", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "6238" + ], + "geo_area_code": null + }, + { + "id": "8006", + "label": "V\u00e4stmanland county", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "6238" + ], + "geo_area_code": null + }, + { + "id": "8007", + "label": "V\u00e4sterbotten county", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "6242" + ], + "geo_area_code": null + }, + { + "id": "8008", + "label": "Norrbotten county", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "6242" + ], + "geo_area_code": null + }, + { + "id": "801", + "label": "technical education", + "alt_labels": [ + "industrial training", + "technical training" + ], + "related_ids": [ + "3587" + ], + "broader_ids": [ + "795" + ], + "geo_area_code": null + }, + { + "id": "802", + "label": "restrictive trade practice", + "alt_labels": [], + "related_ids": [ + "1193", + "2666", + "3060", + "3145", + "69" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "803", + "label": "horizontal agreement", + "alt_labels": [], + "related_ids": [ + "1025", + "1201", + "2839", + "4663" + ], + "broader_ids": [ + "802" + ], + "geo_area_code": null + }, + { + "id": "804", + "label": "unlawful agreement", + "alt_labels": [], + "related_ids": [ + "4309" + ], + "broader_ids": [ + "802" + ], + "geo_area_code": null + }, + { + "id": "805", + "label": "international cartel", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "802" + ], + "geo_area_code": null + }, + { + "id": "806", + "label": "vertical agreement", + "alt_labels": [], + "related_ids": [ + "4663" + ], + "broader_ids": [ + "802" + ], + "geo_area_code": null + }, + { + "id": "807", + "label": "food aid", + "alt_labels": [], + "related_ids": [ + "2317", + "2791", + "926", + "961" + ], + "broader_ids": [ + "2460" + ], + "geo_area_code": null + }, + { + "id": "808", + "label": "mutual assistance among farmers", + "alt_labels": [], + "related_ids": [ + "1738", + "846" + ], + "broader_ids": [ + "2983" + ], + "geo_area_code": null + }, + { + "id": "809", + "label": "non-tariff barrier", + "alt_labels": [ + "non-tariff restriction" + ], + "related_ids": [ + "1810", + "5811", + "889" + ], + "broader_ids": [ + "3584" + ], + "geo_area_code": null + }, + { + "id": "81", + "label": "position of women", + "alt_labels": [ + "situation of women", + "women's position" + ], + "related_ids": [ + "2003", + "3913", + "454", + "585", + "c_a1497409" + ], + "broader_ids": [ + "2517" + ], + "geo_area_code": null + }, + { + "id": "810", + "label": "tariff barrier", + "alt_labels": [ + "tariff obstacle", + "tariff protection", + "tariff restriction" + ], + "related_ids": [ + "2520", + "4380" + ], + "broader_ids": [ + "3584" + ], + "geo_area_code": null + }, + { + "id": "811", + "label": "technical barrier", + "alt_labels": [ + "administrative barrier" + ], + "related_ids": [ + "1595", + "1596", + "1598", + "2076", + "2080", + "2081" + ], + "broader_ids": [ + "809" + ], + "geo_area_code": null + }, + { + "id": "812", + "label": "customs warehouse", + "alt_labels": [ + "bonded warehouse", + "bonding", + "open warehouse", + "warehouse under customs control" + ], + "related_ids": [ + "4291" + ], + "broader_ids": [ + "3174" + ], + "geo_area_code": null + }, + { + "id": "813", + "label": "type of business", + "alt_labels": [ + "firm" + ], + "related_ids": [ + "1156", + "1901", + "2469", + "4189", + "4300", + "4303", + "4703", + "5161" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "814", + "label": "craft business", + "alt_labels": [], + "related_ids": [ + "1867", + "2712", + "2784", + "3619" + ], + "broader_ids": [ + "813" + ], + "geo_area_code": null + }, + { + "id": "815", + "label": "distribution business", + "alt_labels": [ + "commercial undertaking", + "distribution enterprise" + ], + "related_ids": [ + "13", + "474" + ], + "broader_ids": [ + "5985" + ], + "geo_area_code": null + }, + { + "id": "816", + "label": "joint venture", + "alt_labels": [ + "joint enterprise", + "joint undertaking" + ], + "related_ids": [ + "3060", + "539", + "69" + ], + "broader_ids": [ + "813" + ], + "geo_area_code": null + }, + { + "id": "817", + "label": "rental business", + "alt_labels": [], + "related_ids": [ + "3097" + ], + "broader_ids": [ + "5985" + ], + "geo_area_code": null + }, + { + "id": "818", + "label": "transport company", + "alt_labels": [ + "transport undertaking" + ], + "related_ids": [ + "5927", + "5985" + ], + "broader_ids": [ + "2181" + ], + "geo_area_code": null + }, + { + "id": "8189", + "label": "regions of Romania", + "alt_labels": [], + "related_ids": [ + "3763" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "819", + "label": "foreign enterprise", + "alt_labels": [ + "foreign business", + "foreign undertaking" + ], + "related_ids": [ + "1492", + "2035", + "380", + "5240" + ], + "broader_ids": [ + "813" + ], + "geo_area_code": null + }, + { + "id": "82", + "label": "working conditions", + "alt_labels": [], + "related_ids": [ + "1443", + "2082", + "2824", + "6395", + "7948" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "820", + "label": "European undertaking", + "alt_labels": [ + "Community undertaking", + "European High-Performance Computing Joint Undertaking" + ], + "related_ids": [ + "4202", + "6148" + ], + "broader_ids": [ + "813" + ], + "geo_area_code": null + }, + { + "id": "821", + "label": "family business", + "alt_labels": [], + "related_ids": [ + "1739", + "2712", + "3214", + "4552", + "942" + ], + "broader_ids": [ + "813" + ], + "geo_area_code": null + }, + { + "id": "822", + "label": "trust company", + "alt_labels": [ + "fiduciary" + ], + "related_ids": [ + "1155", + "54" + ], + "broader_ids": [ + "5985" + ], + "geo_area_code": null + }, + { + "id": "823", + "label": "real estate business", + "alt_labels": [ + "estate agent", + "real estate undertaking" + ], + "related_ids": [ + "2815" + ], + "broader_ids": [ + "5985" + ], + "geo_area_code": null + }, + { + "id": "824", + "label": "sole proprietorship", + "alt_labels": [ + "one-man business" + ], + "related_ids": [ + "2712", + "3592", + "5" + ], + "broader_ids": [ + "813" + ], + "geo_area_code": null + }, + { + "id": "825", + "label": "occupational accident", + "alt_labels": [ + "accident at the workplace", + "accident at work", + "work accident" + ], + "related_ids": [ + "1231", + "1993", + "3249", + "5810" + ], + "broader_ids": [ + "4039" + ], + "geo_area_code": null + }, + { + "id": "826", + "label": "aid to disadvantaged groups", + "alt_labels": [ + "aid to low-income groups", + "charity", + "income support", + "supplementary benefit" + ], + "related_ids": [ + "2281", + "2873", + "4229", + "6713", + "959", + "c_aa454f82" + ], + "broader_ids": [ + "1004" + ], + "geo_area_code": null + }, + { + "id": "827", + "label": "industrial enterprise", + "alt_labels": [ + "industrial business", + "industrial company", + "industrial undertaking" + ], + "related_ids": [ + "2720", + "3632", + "4303" + ], + "broader_ids": [ + "5985" + ], + "geo_area_code": null + }, + { + "id": "8278", + "label": "CEFTA countries", + "alt_labels": [], + "related_ids": [ + "7185" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "8279", + "label": "Hovedstaden (region)", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "337" + ], + "geo_area_code": null + }, + { + "id": "828", + "label": "multinational enterprise", + "alt_labels": [ + "multinational", + "multinational company", + "multinational corporation" + ], + "related_ids": [ + "1492", + "2035", + "3236", + "3540", + "4010", + "5218", + "539", + "554", + "69", + "7956", + "998" + ], + "broader_ids": [ + "813" + ], + "geo_area_code": null + }, + { + "id": "8280", + "label": "Central Jutland region", + "alt_labels": [ + "Central Jutland" + ], + "related_ids": [], + "broader_ids": [ + "337" + ], + "geo_area_code": null + }, + { + "id": "8281", + "label": "Nordjylland (region)", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "337" + ], + "geo_area_code": null + }, + { + "id": "8282", + "label": "Sj\u00e6lland (region)", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "337" + ], + "geo_area_code": null + }, + { + "id": "8283", + "label": "Syddanmark (region)", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "337" + ], + "geo_area_code": null + }, + { + "id": "8284", + "label": "European Fisheries Control Agency", + "alt_labels": [ + "CFCA", + "Community Fisheries Control Agency", + "EFCA" + ], + "related_ids": [ + "2455" + ], + "broader_ids": [ + "5769" + ], + "geo_area_code": null + }, + { + "id": "8285", + "label": "stabilisation and association agreement", + "alt_labels": [ + "SAA", + "stabilization and association agreement" + ], + "related_ids": [ + "1464", + "4250", + "4690" + ], + "broader_ids": [ + "4048" + ], + "geo_area_code": null + }, + { + "id": "829", + "label": "private sector", + "alt_labels": [ + "private enterprise", + "private undertaking" + ], + "related_ids": [ + "7934" + ], + "broader_ids": [ + "813" + ], + "geo_area_code": null + }, + { + "id": "83", + "label": "living conditions", + "alt_labels": [ + "improvement of living conditions", + "lifestyle", + "pace of life", + "way of life" + ], + "related_ids": [ + "2062", + "274", + "6781" + ], + "broader_ids": [ + "86" + ], + "geo_area_code": null + }, + { + "id": "830", + "label": "public sector", + "alt_labels": [ + "State undertaking", + "nationalised industry", + "public corporation", + "public enterprise", + "public undertaking", + "state sector" + ], + "related_ids": [ + "2031", + "3932", + "4012", + "4136", + "4194", + "6207", + "659", + "878" + ], + "broader_ids": [ + "813" + ], + "geo_area_code": null + }, + { + "id": "8300", + "label": "Arab Maghreb Union", + "alt_labels": [ + "AMU" + ], + "related_ids": [ + "3407" + ], + "broader_ids": [ + "2167", + "2171" + ], + "geo_area_code": null + }, + { + "id": "8301", + "label": "regions of Bulgaria", + "alt_labels": [], + "related_ids": [ + "5063" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "8303", + "label": "dolphin", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1775" + ], + "geo_area_code": null + }, + { + "id": "8304", + "label": "Yuzhen tsentralen (Bulgaria)", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "8301" + ], + "geo_area_code": null + }, + { + "id": "8305", + "label": "Haskovo region", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "8304" + ], + "geo_area_code": null + }, + { + "id": "8306", + "label": "Kardzhali region", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "8304" + ], + "geo_area_code": null + }, + { + "id": "8307", + "label": "Pazardzhik region", + "alt_labels": [ + "Pazardjik region" + ], + "related_ids": [], + "broader_ids": [ + "8304" + ], + "geo_area_code": null + }, + { + "id": "8308", + "label": "Plovdiv region", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "8304" + ], + "geo_area_code": null + }, + { + "id": "8309", + "label": "Smolyan region", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "8304" + ], + "geo_area_code": null + }, + { + "id": "831", + "label": "maintenance", + "alt_labels": [ + "maintenance and repair", + "repair", + "reparability", + "reusability", + "upkeep" + ], + "related_ids": [ + "c_1138d9d2" + ], + "broader_ids": [ + "2177" + ], + "geo_area_code": null + }, + { + "id": "8310", + "label": "Stara Zagora region", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "8328" + ], + "geo_area_code": null + }, + { + "id": "8311", + "label": "Severen tsentralen (Bulgaria)", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "8301" + ], + "geo_area_code": null + }, + { + "id": "8312", + "label": "Gabrovo region", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "8311" + ], + "geo_area_code": null + }, + { + "id": "8313", + "label": "Lovech region", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "8324" + ], + "geo_area_code": null + }, + { + "id": "8314", + "label": "Pleven region", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "8324" + ], + "geo_area_code": null + }, + { + "id": "8315", + "label": "Ruse region", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "8311" + ], + "geo_area_code": null + }, + { + "id": "8316", + "label": "Veliko Tarnovo region", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "8311" + ], + "geo_area_code": null + }, + { + "id": "8317", + "label": "Severoiztochen (Bulgaria)", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "8301" + ], + "geo_area_code": null + }, + { + "id": "8318", + "label": "Dobrich region", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "8317" + ], + "geo_area_code": null + }, + { + "id": "8319", + "label": "Razgrad region", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "8311" + ], + "geo_area_code": null + }, + { + "id": "832", + "label": "crop maintenance", + "alt_labels": [ + "hoeing", + "pruning", + "tending of crops", + "thinning" + ], + "related_ids": [ + "2357", + "764" + ], + "broader_ids": [ + "4412" + ], + "geo_area_code": null + }, + { + "id": "8320", + "label": "Shumen region", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "8317" + ], + "geo_area_code": null + }, + { + "id": "8321", + "label": "Silistra region", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "8311" + ], + "geo_area_code": null + }, + { + "id": "8322", + "label": "Targovishte region", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "8317" + ], + "geo_area_code": null + }, + { + "id": "8323", + "label": "Varna region", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "8317" + ], + "geo_area_code": null + }, + { + "id": "8324", + "label": "Severozapaden (Bulgaria)", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "8301" + ], + "geo_area_code": null + }, + { + "id": "8325", + "label": "Montana region", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "8324" + ], + "geo_area_code": null + }, + { + "id": "8326", + "label": "Vidin region", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "8324" + ], + "geo_area_code": null + }, + { + "id": "8327", + "label": "Vratza region", + "alt_labels": [ + "Vratsa" + ], + "related_ids": [], + "broader_ids": [ + "8324" + ], + "geo_area_code": null + }, + { + "id": "8328", + "label": "Yugoiztochen (Bulgaria)", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "8301" + ], + "geo_area_code": null + }, + { + "id": "8329", + "label": "Burgas region", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "8328" + ], + "geo_area_code": null + }, + { + "id": "833", + "label": "physical environment", + "alt_labels": [], + "related_ids": [ + "2470", + "3952", + "c_a935cf3f" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "8330", + "label": "Sliven region", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "8328" + ], + "geo_area_code": null + }, + { + "id": "8331", + "label": "Yambol region", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "8328" + ], + "geo_area_code": null + }, + { + "id": "8332", + "label": "Yugozapaden (Bulgaria)", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "8301" + ], + "geo_area_code": null + }, + { + "id": "8333", + "label": "Blagoevgrad region", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "8332" + ], + "geo_area_code": null + }, + { + "id": "8334", + "label": "Kyustendil region", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "8332" + ], + "geo_area_code": null + }, + { + "id": "8335", + "label": "Pernik region", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "8332" + ], + "geo_area_code": null + }, + { + "id": "8336", + "label": "Sofia District region", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "8332" + ], + "geo_area_code": null + }, + { + "id": "8337", + "label": "Sofia City region", + "alt_labels": [ + "Sofia Grad region" + ], + "related_ids": [], + "broader_ids": [ + "8332" + ], + "geo_area_code": null + }, + { + "id": "834", + "label": "savings", + "alt_labels": [], + "related_ids": [ + "1476", + "1488", + "47" + ], + "broader_ids": [ + "3659" + ], + "geo_area_code": null + }, + { + "id": "835", + "label": "aid to undertakings", + "alt_labels": [ + "salvage grant", + "subsidy for undertakings", + "support grant" + ], + "related_ids": [ + "2469", + "2474", + "2507", + "3240", + "3600", + "6174" + ], + "broader_ids": [ + "712" + ], + "geo_area_code": null + }, + { + "id": "8354", + "label": "Kaliningrad question", + "alt_labels": [ + "Kaliningrad enclave", + "Kaliningrad issue", + "Kaliningrad oblast", + "Kaliningrad problem" + ], + "related_ids": [ + "5876", + "7353" + ], + "broader_ids": [ + "3476" + ], + "geo_area_code": null + }, + { + "id": "8355", + "label": "Chechen question", + "alt_labels": [ + "Chechen conflict", + "Chechen issue", + "Chechen problem", + "Russo-Chechen conflict" + ], + "related_ids": [ + "5876", + "7208" + ], + "broader_ids": [ + "3476" + ], + "geo_area_code": null + }, + { + "id": "8356", + "label": "Kashmir question", + "alt_labels": [ + "India-Pakistan conflict", + "India-Pakistan dispute", + "India-Pakistan question", + "Kashmir conflict", + "Kashmir dispute", + "Kashmir issue", + "war in Kashmir" + ], + "related_ids": [ + "1338", + "2222" + ], + "broader_ids": [ + "3476" + ], + "geo_area_code": null + }, + { + "id": "8357", + "label": "Kosovo question", + "alt_labels": [ + "Kosovo conflict", + "Kosovo dispute", + "Kosovo issue", + "Kosovo situation", + "Kosovo war", + "war in Kosovo" + ], + "related_ids": [ + "5695", + "5892" + ], + "broader_ids": [ + "3476" + ], + "geo_area_code": null + }, + { + "id": "836", + "label": "compulsory saving", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3659" + ], + "geo_area_code": null + }, + { + "id": "8365", + "label": "EAC countries", + "alt_labels": [], + "related_ids": [ + "5107" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "8366", + "label": "countries of the Pacific Community", + "alt_labels": [], + "related_ids": [ + "5279" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "8367", + "label": "SAARC countries", + "alt_labels": [], + "related_ids": [ + "5446" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "8369", + "label": "CAEU countries", + "alt_labels": [], + "related_ids": [ + "8370" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "837", + "label": "epidemic", + "alt_labels": [ + "disease outbreak", + "epidemic outbreak", + "outbreak of a disease", + "pandemic" + ], + "related_ids": [ + "192", + "5951", + "838", + "c_814bb9e4" + ], + "broader_ids": [ + "1754" + ], + "geo_area_code": null + }, + { + "id": "8370", + "label": "Council of Arab Economic Unity", + "alt_labels": [ + "CAEU" + ], + "related_ids": [ + "8369" + ], + "broader_ids": [ + "2171" + ], + "geo_area_code": null + }, + { + "id": "8371", + "label": "British Antarctic Territory", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3778" + ], + "geo_area_code": "ATB" + }, + { + "id": "8373", + "label": "British Indian Ocean Territory", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2848", + "3778" + ], + "geo_area_code": "IOT" + }, + { + "id": "8374", + "label": "French Southern and Antarctic Territories", + "alt_labels": [ + "Amsterdam Island", + "Crozet Archipelago", + "French Southern Territories", + "Kergu\u00e9len Islands", + "Saint-Paul Island" + ], + "related_ids": [], + "broader_ids": [ + "1087" + ], + "geo_area_code": "ATF" + }, + { + "id": "8375", + "label": "Multilateral Investment Guarantee Agency", + "alt_labels": [ + "MIGA" + ], + "related_ids": [], + "broader_ids": [ + "4812" + ], + "geo_area_code": null + }, + { + "id": "8377", + "label": "International Bank for Reconstruction and Development", + "alt_labels": [ + "IBRD" + ], + "related_ids": [], + "broader_ids": [ + "4812" + ], + "geo_area_code": null + }, + { + "id": "8378", + "label": "International Centre for Settlement of Investment Disputes", + "alt_labels": [ + "ICSID" + ], + "related_ids": [], + "broader_ids": [ + "4812" + ], + "geo_area_code": null + }, + { + "id": "838", + "label": "epidemiology", + "alt_labels": [], + "related_ids": [ + "1758", + "3371", + "837" + ], + "broader_ids": [ + "5881" + ], + "geo_area_code": null + }, + { + "id": "8380", + "label": "UN research and training institutes", + "alt_labels": [ + "UN institutes for research and training", + "United Nations institutes for research and training", + "United Nations research and training institutes" + ], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "8381", + "label": "UN Institute for Disarmament Research", + "alt_labels": [ + "UNIDIR", + "United Nations Institute for Disarmament Research" + ], + "related_ids": [ + "411" + ], + "broader_ids": [ + "8380" + ], + "geo_area_code": null + }, + { + "id": "8382", + "label": "UN International Research and Training Institute for the Advancement of Women", + "alt_labels": [ + "INSTRAW", + "UN-INSTRAW", + "UNINSTRAW", + "United Nations International Research and Training Institute for the Advancement of Women" + ], + "related_ids": [ + "2265" + ], + "broader_ids": [ + "8380" + ], + "geo_area_code": null + }, + { + "id": "8383", + "label": "UN Interregional Crime and Justice Research Institute", + "alt_labels": [ + "UNICRI", + "United Nations Interregional Crime and Justice Research Institute" + ], + "related_ids": [ + "3348" + ], + "broader_ids": [ + "8380" + ], + "geo_area_code": null + }, + { + "id": "8384", + "label": "UN subsidiary body", + "alt_labels": [ + "United Nations subsidiary body" + ], + "related_ids": [], + "broader_ids": [ + "2179" + ], + "geo_area_code": null + }, + { + "id": "8385", + "label": "UN High Commissioner for Human Rights", + "alt_labels": [ + "HCHR", + "OHCHR", + "Office of the High Commissioner for Human Rights", + "UNHCHR", + "United Nations High Commissioner for Human Rights" + ], + "related_ids": [ + "584" + ], + "broader_ids": [ + "4002" + ], + "geo_area_code": null + }, + { + "id": "8386", + "label": "UN regional commission", + "alt_labels": [ + "ECA", + "ECE", + "ECLAC", + "ESCAP", + "ESCWA", + "Economic Commission for Africa", + "Economic Commission for Europe", + "Economic Commission for Latin America and the Caribbean", + "Economic and Social Commission for Asia and the Pacific", + "Economic and Social Commission for Western Asia", + "United Nations regional commission" + ], + "related_ids": [], + "broader_ids": [ + "3709" + ], + "geo_area_code": null + }, + { + "id": "8387", + "label": "UN Secretary-General", + "alt_labels": [ + "Secretary-General of the United Nations", + "United Nations Secretary-General" + ], + "related_ids": [], + "broader_ids": [ + "4002" + ], + "geo_area_code": null + }, + { + "id": "839", + "label": "Epirus", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1184" + ], + "geo_area_code": null + }, + { + "id": "8393", + "label": "UNAIDS", + "alt_labels": [ + "Joint United Nations Programme on HIV/AIDS", + "UN Programme on HIV/AIDS", + "United Nations Programme on HIV/AIDS" + ], + "related_ids": [ + "5172" + ], + "broader_ids": [ + "4365" + ], + "geo_area_code": null + }, + { + "id": "8395", + "label": "European Centre for Parliamentary Research and Documentation", + "alt_labels": [ + "ECPRD" + ], + "related_ids": [ + "2242", + "494" + ], + "broader_ids": [ + "121" + ], + "geo_area_code": null + }, + { + "id": "8396", + "label": "Council of the Baltic Sea States", + "alt_labels": [ + "Baltic Sea States Council", + "CBSS" + ], + "related_ids": [ + "1871", + "5774" + ], + "broader_ids": [ + "2187" + ], + "geo_area_code": null + }, + { + "id": "8398", + "label": "Community of Sahel-Saharan States", + "alt_labels": [ + "CEN-SAD", + "Comessa", + "Community of Sahel and Saharan States" + ], + "related_ids": [], + "broader_ids": [ + "2167" + ], + "geo_area_code": null + }, + { + "id": "8399", + "label": "Southern African Development Community", + "alt_labels": [ + "SADC", + "Southern Africa Development Community" + ], + "related_ids": [], + "broader_ids": [ + "2167" + ], + "geo_area_code": null + }, + { + "id": "84", + "label": "economic conditions", + "alt_labels": [ + "economic aspect" + ], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "840", + "label": "exhaustion of resources", + "alt_labels": [], + "related_ids": [ + "1411", + "3551", + "4142", + "636" + ], + "broader_ids": [ + "941" + ], + "geo_area_code": null + }, + { + "id": "8400", + "label": "Common Market for Eastern and Southern Africa", + "alt_labels": [ + "COMESA" + ], + "related_ids": [ + "1792" + ], + "broader_ids": [ + "2167" + ], + "geo_area_code": null + }, + { + "id": "8402", + "label": "Pacific Islands Forum", + "alt_labels": [ + "PIFS", + "Pacific Islands Forum Secretariat", + "South Pacific Forum" + ], + "related_ids": [], + "broader_ids": [ + "2172" + ], + "geo_area_code": null + }, + { + "id": "8403", + "label": "Southern African Customs Union", + "alt_labels": [ + "SACU" + ], + "related_ids": [], + "broader_ids": [ + "2167" + ], + "geo_area_code": null + }, + { + "id": "8404", + "label": "International Trade Union Confederation", + "alt_labels": [ + "ICFTU", + "ITUC", + "International Confederation of Free Trade Unions", + "WCL", + "World Confederation of Labour" + ], + "related_ids": [ + "5522" + ], + "broader_ids": [ + "2191" + ], + "geo_area_code": null + }, + { + "id": "8407", + "label": "assistant", + "alt_labels": [ + "AST function group", + "assistants' function group" + ], + "related_ids": [], + "broader_ids": [ + "1048" + ], + "geo_area_code": null + }, + { + "id": "8409", + "label": "euroscepticism", + "alt_labels": [ + "europhobia", + "eurosceptic" + ], + "related_ids": [], + "broader_ids": [ + "1464" + ], + "geo_area_code": null + }, + { + "id": "841", + "label": "Ecuador", + "alt_labels": [ + "Republic of Ecuador" + ], + "related_ids": [], + "broader_ids": [ + "1105", + "1191", + "1624", + "2119", + "4069" + ], + "geo_area_code": "ECU" + }, + { + "id": "8410", + "label": "mine action", + "alt_labels": [ + "demining", + "demining assistance", + "humanitarian demining", + "mine clearance", + "mine clearing", + "mine disposal" + ], + "related_ids": [ + "4697", + "6377" + ], + "broader_ids": [ + "411" + ], + "geo_area_code": null + }, + { + "id": "8411", + "label": "mutual assistance", + "alt_labels": [ + "duty of mutual assistance", + "mutual defence clause", + "mutual solidarity clause" + ], + "related_ids": [ + "6709" + ], + "broader_ids": [ + "567" + ], + "geo_area_code": null + }, + { + "id": "8412", + "label": "biofuel", + "alt_labels": [ + "biodiesel", + "bioethanol", + "biomass fuel", + "green fuel" + ], + "related_ids": [ + "4892", + "4900", + "5013", + "6320" + ], + "broader_ids": [ + "6044" + ], + "geo_area_code": null + }, + { + "id": "8413", + "label": "blog", + "alt_labels": [ + "web diary", + "web journal", + "web log", + "weblog" + ], + "related_ids": [], + "broader_ids": [ + "c_324b44f1" + ], + "geo_area_code": null + }, + { + "id": "8414", + "label": "official seal", + "alt_labels": [ + "official stamp", + "stamp" + ], + "related_ids": [ + "4401" + ], + "broader_ids": [ + "492" + ], + "geo_area_code": null + }, + { + "id": "8415", + "label": "concentration camp", + "alt_labels": [ + "death camp", + "extermination camp" + ], + "related_ids": [ + "2030", + "3920", + "4697", + "6376", + "857" + ], + "broader_ids": [ + "4730" + ], + "geo_area_code": null + }, + { + "id": "8416", + "label": "conflict of interest", + "alt_labels": [ + "conflict of interests", + "declaration of a conflict of interest", + "declaration of a conflict of interests", + "declaration of conflict of interest", + "declaration of conflict of interests", + "potential conflict of interest", + "potential conflict of interests" + ], + "related_ids": [ + "1047", + "6751", + "7187", + "c_2f00dd5a" + ], + "broader_ids": [ + "3566" + ], + "geo_area_code": null + }, + { + "id": "8417", + "label": "complicity", + "alt_labels": [ + "accomplice", + "accomplice to a crime" + ], + "related_ids": [ + "3513" + ], + "broader_ids": [ + "1432" + ], + "geo_area_code": null + }, + { + "id": "8418", + "label": "public consultation", + "alt_labels": [ + "open consultation", + "open debate", + "open discussion", + "public debate", + "public discussion" + ], + "related_ids": [ + "2152", + "338", + "6907", + "8421", + "8423", + "8428", + "c_4254375b" + ], + "broader_ids": [ + "2473" + ], + "geo_area_code": null + }, + { + "id": "8419", + "label": "political culture", + "alt_labels": [], + "related_ids": [ + "7394" + ], + "broader_ids": [ + "4704" + ], + "geo_area_code": null + }, + { + "id": "842", + "label": "equidae", + "alt_labels": [ + "ass", + "colt", + "donkey", + "equine species", + "foal", + "horse", + "mare", + "mule" + ], + "related_ids": [ + "4684" + ], + "broader_ids": [ + "5962" + ], + "geo_area_code": null + }, + { + "id": "8420", + "label": "hit-and-run", + "alt_labels": [ + "hit-and-run driving", + "hit-and-run offence", + "leaving the scene of an accident" + ], + "related_ids": [], + "broader_ids": [ + "1432" + ], + "geo_area_code": null + }, + { + "id": "8421", + "label": "deliberative democracy", + "alt_labels": [ + "democratic deliberation", + "discursive democracy" + ], + "related_ids": [ + "8418" + ], + "broader_ids": [ + "381" + ], + "geo_area_code": null + }, + { + "id": "8422", + "label": "direct democracy", + "alt_labels": [], + "related_ids": [ + "2966", + "3044" + ], + "broader_ids": [ + "381" + ], + "geo_area_code": null + }, + { + "id": "8423", + "label": "participatory democracy", + "alt_labels": [ + "democratic participation", + "participative democracy" + ], + "related_ids": [ + "2363", + "6897", + "8418", + "c_c4c48e5c" + ], + "broader_ids": [ + "381" + ], + "geo_area_code": null + }, + { + "id": "8424", + "label": "representative democracy", + "alt_labels": [ + "indirect democracy", + "parliamentary democracy" + ], + "related_ids": [ + "2242", + "3020", + "695" + ], + "broader_ids": [ + "381" + ], + "geo_area_code": null + }, + { + "id": "8425", + "label": "commercial code", + "alt_labels": [], + "related_ids": [ + "524" + ], + "broader_ids": [ + "6023" + ], + "geo_area_code": null + }, + { + "id": "8426", + "label": "right of personal portrayal", + "alt_labels": [], + "related_ids": [ + "2817", + "2862", + "529", + "5669" + ], + "broader_ids": [ + "2828" + ], + "geo_area_code": null + }, + { + "id": "8427", + "label": "European private law", + "alt_labels": [ + "European private international law" + ], + "related_ids": [ + "437483" + ], + "broader_ids": [ + "576" + ], + "geo_area_code": null + }, + { + "id": "8428", + "label": "civil society", + "alt_labels": [ + "CSO", + "civil society organisation", + "civil society organization", + "organised civil society", + "organized civil society" + ], + "related_ids": [ + "2191", + "2270", + "3575", + "6897", + "8418" + ], + "broader_ids": [ + "2001" + ], + "geo_area_code": null + }, + { + "id": "8429", + "label": "Eurogroup (euro area)", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "6151" + ], + "geo_area_code": null + }, + { + "id": "843", + "label": "budgetary equilibrium", + "alt_labels": [ + "budget imbalance" + ], + "related_ids": [ + "5562" + ], + "broader_ids": [ + "2448" + ], + "geo_area_code": null + }, + { + "id": "8430", + "label": "europeanisation", + "alt_labels": [ + "europeanization" + ], + "related_ids": [ + "5127" + ], + "broader_ids": [ + "6218" + ], + "geo_area_code": null + }, + { + "id": "8432", + "label": "civil bankruptcy", + "alt_labels": [ + "personal bankruptcy", + "private bankruptcy" + ], + "related_ids": [ + "143", + "1672", + "3942", + "5582", + "960" + ], + "broader_ids": [ + "285" + ], + "geo_area_code": null + }, + { + "id": "8433", + "label": "forgery of documents", + "alt_labels": [ + "document forgery", + "falsification of documents" + ], + "related_ids": [], + "broader_ids": [ + "3944" + ], + "geo_area_code": null + }, + { + "id": "8434", + "label": "counterfeiting", + "alt_labels": [ + "counterfeit currency", + "counterfeit money", + "counterfeiting of currency", + "counterfeiting of means of payment", + "counterfeiting of money", + "counterfeiting of the euro", + "falsification of means of payment", + "forgery of currency", + "forgery of means of payment", + "forgery of money", + "forgery of the euro" + ], + "related_ids": [ + "167", + "665" + ], + "broader_ids": [ + "574" + ], + "geo_area_code": null + }, + { + "id": "8435", + "label": "fireworks", + "alt_labels": [ + "firework", + "firework display", + "fireworks display" + ], + "related_ids": [ + "5234" + ], + "broader_ids": [ + "945" + ], + "geo_area_code": null + }, + { + "id": "8437", + "label": "mountain forest", + "alt_labels": [], + "related_ids": [ + "1987" + ], + "broader_ids": [ + "1063" + ], + "geo_area_code": null + }, + { + "id": "8438", + "label": "geodesy", + "alt_labels": [ + "earth measurement", + "geodetic measurement", + "geodetics", + "measurement of the earth", + "measuring the earth" + ], + "related_ids": [], + "broader_ids": [ + "1152" + ], + "geo_area_code": null + }, + { + "id": "8439", + "label": "Frontex", + "alt_labels": [ + "European Agency for the Management of Operational Cooperation at the External Borders of the Member States of the European Union", + "European Border and Coast Guard Agency" + ], + "related_ids": [ + "5649", + "c_f7430876" + ], + "broader_ids": [ + "5769" + ], + "geo_area_code": null + }, + { + "id": "844", + "label": "ecological balance", + "alt_labels": [], + "related_ids": [ + "2825", + "632" + ], + "broader_ids": [ + "833" + ], + "geo_area_code": null + }, + { + "id": "8441", + "label": "asymmetric warfare", + "alt_labels": [ + "asymmetric conflict", + "asymmetric war" + ], + "related_ids": [ + "4452" + ], + "broader_ids": [ + "1210" + ], + "geo_area_code": null + }, + { + "id": "8442", + "label": "national identity", + "alt_labels": [ + "nation state", + "nation-state", + "national consciousness", + "national culture" + ], + "related_ids": [ + "2033", + "435136" + ], + "broader_ids": [ + "5667" + ], + "geo_area_code": null + }, + { + "id": "8443", + "label": "restorative justice", + "alt_labels": [], + "related_ids": [ + "1339", + "499", + "6727" + ], + "broader_ids": [ + "2704" + ], + "geo_area_code": null + }, + { + "id": "8444", + "label": "wolf", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5722" + ], + "geo_area_code": null + }, + { + "id": "8445", + "label": "bear", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5722" + ], + "geo_area_code": null + }, + { + "id": "8446", + "label": "lynx", + "alt_labels": [ + "Canada lynx", + "Canadian lynx", + "Eurasian lynx", + "Iberian lynx", + "bobcat" + ], + "related_ids": [], + "broader_ids": [ + "5722" + ], + "geo_area_code": null + }, + { + "id": "8447", + "label": "eye disease", + "alt_labels": [ + "defective vision", + "eye ailment", + "eye condition", + "eye defect", + "eye disorder", + "ophthalmopathy", + "visual defect", + "visual disturbance" + ], + "related_ids": [], + "broader_ids": [ + "1754" + ], + "geo_area_code": null + }, + { + "id": "8448", + "label": "forced marriage", + "alt_labels": [ + "child marriage", + "premature marriage" + ], + "related_ids": [ + "3916", + "454", + "585" + ], + "broader_ids": [ + "1818" + ], + "geo_area_code": null + }, + { + "id": "8449", + "label": "criminal negligence", + "alt_labels": [ + "crime of omission", + "culpable negligence" + ], + "related_ids": [ + "2941", + "3348" + ], + "broader_ids": [ + "1432" + ], + "geo_area_code": null + }, + { + "id": "845", + "label": "bilateral aid", + "alt_labels": [], + "related_ids": [ + "3196" + ], + "broader_ids": [ + "2460" + ], + "geo_area_code": null + }, + { + "id": "8450", + "label": "business park", + "alt_labels": [ + "business estate", + "commercial estate", + "commercial park", + "industrial estate", + "industrial park", + "office park" + ], + "related_ids": [ + "1307" + ], + "broader_ids": [ + "2507" + ], + "geo_area_code": null + }, + { + "id": "8451", + "label": "national city park", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2235" + ], + "geo_area_code": null + }, + { + "id": "8452", + "label": "bridge", + "alt_labels": [ + "viaduct" + ], + "related_ids": [], + "broader_ids": [ + "2206" + ], + "geo_area_code": null + }, + { + "id": "8453", + "label": "digital evidence", + "alt_labels": [ + "computer forensics", + "digital forensics", + "electronic evidence" + ], + "related_ids": [ + "3027", + "6767" + ], + "broader_ids": [ + "5809" + ], + "geo_area_code": null + }, + { + "id": "8454", + "label": "Framework Programme for Research and Development", + "alt_labels": [ + "FRDP", + "Framework Programme for Research and Technological Development", + "Framework Programme on Research and Development", + "R&TD Framework Programme", + "RDFP", + "RTD Framework Programme", + "Research and Development Framework Programme" + ], + "related_ids": [], + "broader_ids": [ + "2795" + ], + "geo_area_code": null + }, + { + "id": "8455", + "label": "witness protection", + "alt_labels": [ + "witness protection programme", + "witness protection scheme" + ], + "related_ids": [ + "217", + "4452", + "5560" + ], + "broader_ids": [ + "2704" + ], + "geo_area_code": null + }, + { + "id": "8456", + "label": "succession of states", + "alt_labels": [ + "state succession" + ], + "related_ids": [], + "broader_ids": [ + "567" + ], + "geo_area_code": null + }, + { + "id": "8457", + "label": "recognition of a state", + "alt_labels": [ + "de facto recognition", + "de jure recognition" + ], + "related_ids": [ + "3206" + ], + "broader_ids": [ + "567" + ], + "geo_area_code": null + }, + { + "id": "8458", + "label": "challenge", + "alt_labels": [ + "challenge to a judge", + "challenge to a juror", + "challenge to a lay magistrate", + "challenge to a referee", + "challenge to a witness", + "challenge to an arbitrator", + "challenge to evidence", + "challenge to jurors", + "challenge to testimony", + "jury challenge", + "recusal of a judge", + "recusation of a judge" + ], + "related_ids": [ + "1537", + "3990", + "5616" + ], + "broader_ids": [ + "2701" + ], + "geo_area_code": null + }, + { + "id": "8459", + "label": "single payment scheme", + "alt_labels": [ + "SAPS", + "SFPS", + "SPS", + "single area payment scheme", + "single farm payment", + "single farm payment scheme", + "single payment" + ], + "related_ids": [ + "3003", + "3679" + ], + "broader_ids": [ + "2443" + ], + "geo_area_code": null + }, + { + "id": "846", + "label": "agricultural equipment", + "alt_labels": [ + "deadstock", + "farm equipment" + ], + "related_ids": [ + "2596", + "3197", + "4655", + "808" + ], + "broader_ids": [ + "2014" + ], + "geo_area_code": null + }, + { + "id": "8460", + "label": "reimbursement of aid", + "alt_labels": [ + "reimbursement of Community aid", + "reimbursement of Community support", + "reimbursement of a grant", + "reimbursement of financial assistance", + "reimbursement of financial support", + "reimbursement of funding" + ], + "related_ids": [], + "broader_ids": [ + "712" + ], + "geo_area_code": null + }, + { + "id": "8461", + "label": "river tourism", + "alt_labels": [ + "inland waterway cruise", + "inland waterway excursion", + "inland waterway tourism", + "inland waterway trip", + "inland waterways cruise", + "inland waterways excursion", + "inland waterways tourism", + "inland waterways trip", + "river cruise", + "river excursion", + "river trip" + ], + "related_ids": [ + "2040", + "4832" + ], + "broader_ids": [ + "4470" + ], + "geo_area_code": null + }, + { + "id": "8463", + "label": "low cost airline", + "alt_labels": [ + "budget airline", + "budget carrier", + "discount airline", + "discount carrier", + "low cost carrier", + "low fare airline", + "low fare carrier", + "no frills airline", + "no frills carrier" + ], + "related_ids": [ + "5707" + ], + "broader_ids": [ + "3125" + ], + "geo_area_code": null + }, + { + "id": "8464", + "label": "avian influenza", + "alt_labels": [ + "Asian flu", + "China flu", + "H5N1", + "avian flu", + "avian influenza virus", + "bird flu", + "bird flu virus", + "chicken flu", + "fowl pest", + "fowl plague" + ], + "related_ids": [ + "4743", + "5760" + ], + "broader_ids": [ + "1755" + ], + "geo_area_code": null + }, + { + "id": "8465", + "label": "appointment of members", + "alt_labels": [ + "designation of members", + "resignation of members", + "term of office of members" + ], + "related_ids": [ + "1451", + "2163", + "2248", + "3559", + "4043", + "447442", + "5308", + "5769" + ], + "broader_ids": [ + "5640" + ], + "geo_area_code": null + }, + { + "id": "8466", + "label": "public policy", + "alt_labels": [], + "related_ids": [ + "2506" + ], + "broader_ids": [ + "77" + ], + "geo_area_code": null + }, + { + "id": "8468", + "label": "principle of legal certainty", + "alt_labels": [ + "certainty of law", + "legal certainty", + "legal security", + "principle of equality and legal certainty" + ], + "related_ids": [ + "6257" + ], + "broader_ids": [ + "36" + ], + "geo_area_code": null + }, + { + "id": "8469", + "label": "financial services", + "alt_labels": [], + "related_ids": [ + "1452", + "2149", + "34", + "4021", + "4646", + "c_79e507c2" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "847", + "label": "community facilities", + "alt_labels": [ + "collective facilities", + "community equipment", + "public facilities" + ], + "related_ids": [ + "3358" + ], + "broader_ids": [ + "4619" + ], + "geo_area_code": null + }, + { + "id": "8470", + "label": "digital archiving", + "alt_labels": [ + "digital preservation", + "electronic archiving" + ], + "related_ids": [ + "2492", + "6067", + "7219" + ], + "broader_ids": [ + "494" + ], + "geo_area_code": null + }, + { + "id": "8471", + "label": "ecological tourism", + "alt_labels": [ + "eco-friendly tourism", + "ecotourism", + "environmentally friendly tourism", + "green tourism", + "soft tourism" + ], + "related_ids": [ + "2825" + ], + "broader_ids": [ + "4470" + ], + "geo_area_code": null + }, + { + "id": "8472", + "label": "equitable tourism", + "alt_labels": [ + "alternative tourism", + "ethical tourism", + "fair tourism", + "humanitarian tourism" + ], + "related_ids": [ + "5585" + ], + "broader_ids": [ + "4470" + ], + "geo_area_code": null + }, + { + "id": "8473", + "label": "intergovernmental legal instrument", + "alt_labels": [], + "related_ids": [ + "3461", + "5547", + "8479" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "8475", + "label": "EU Military Committee", + "alt_labels": [ + "EUMC", + "European Union Military Committee", + "Military Committee of the European Union" + ], + "related_ids": [ + "218", + "2628" + ], + "broader_ids": [ + "6709" + ], + "geo_area_code": null + }, + { + "id": "8476", + "label": "EU-NATO cooperation", + "alt_labels": [ + "NATO-EU cooperation" + ], + "related_ids": [ + "2199", + "2628", + "5335" + ], + "broader_ids": [ + "6709" + ], + "geo_area_code": null + }, + { + "id": "8477", + "label": "EU Military Staff", + "alt_labels": [ + "EUMS", + "European Union Military Staff" + ], + "related_ids": [], + "broader_ids": [ + "6709" + ], + "geo_area_code": null + }, + { + "id": "8478", + "label": "Political and Security Committee", + "alt_labels": [ + "PSC" + ], + "related_ids": [], + "broader_ids": [ + "5788" + ], + "geo_area_code": null + }, + { + "id": "8479", + "label": "European Union method", + "alt_labels": [ + "Community method", + "European Union mechanism" + ], + "related_ids": [ + "5258", + "8473" + ], + "broader_ids": [ + "5343" + ], + "geo_area_code": null + }, + { + "id": "848", + "label": "vehicle parts", + "alt_labels": [ + "automobile accessory" + ], + "related_ids": [ + "2430", + "4047" + ], + "broader_ids": [ + "4651" + ], + "geo_area_code": null + }, + { + "id": "8480", + "label": "judicial cooperation in civil matters in the EU", + "alt_labels": [ + "European Judicial Network in civil and commercial matters" + ], + "related_ids": [ + "1633", + "164", + "217", + "2451", + "3316", + "3969", + "5414", + "5811", + "6727" + ], + "broader_ids": [ + "6222" + ], + "geo_area_code": null + }, + { + "id": "8481", + "label": "EU police mission", + "alt_labels": [ + "EU police operation", + "EUPM", + "EUPOL", + "European Union police mission", + "European Union police operation" + ], + "related_ids": [ + "1743", + "2440", + "6375" + ], + "broader_ids": [ + "6709" + ], + "geo_area_code": null + }, + { + "id": "8482", + "label": "EU military mission", + "alt_labels": [ + "EU military operation", + "European Union military mission", + "European Union military operation" + ], + "related_ids": [ + "5335", + "6375" + ], + "broader_ids": [ + "6709" + ], + "geo_area_code": null + }, + { + "id": "8488", + "label": "European Barge Union", + "alt_labels": [ + "EBU (European Barge Union)", + "IUIN", + "International Union for Inland Navigation", + "Rhine International Navigation Consortium" + ], + "related_ids": [ + "2040" + ], + "broader_ids": [ + "2187" + ], + "geo_area_code": null + }, + { + "id": "8489", + "label": "CoR opinion", + "alt_labels": [ + "opinion of the Committee of the Regions" + ], + "related_ids": [ + "5508" + ], + "broader_ids": [ + "6284" + ], + "geo_area_code": null + }, + { + "id": "849", + "label": "electronic equipment", + "alt_labels": [], + "related_ids": [ + "1370", + "4486", + "709" + ], + "broader_ids": [ + "1400" + ], + "geo_area_code": null + }, + { + "id": "8490", + "label": "Bucharest \u2014 Ilfov", + "alt_labels": [ + "Bucarest" + ], + "related_ids": [], + "broader_ids": [ + "8189" + ], + "geo_area_code": null + }, + { + "id": "8491", + "label": "Centru (Romania)", + "alt_labels": [ + "Center (Romania)" + ], + "related_ids": [], + "broader_ids": [ + "8189" + ], + "geo_area_code": null + }, + { + "id": "8492", + "label": "Nord-Est (Romania)", + "alt_labels": [ + "North-East (Romania)" + ], + "related_ids": [], + "broader_ids": [ + "8189" + ], + "geo_area_code": null + }, + { + "id": "8493", + "label": "Nord-Vest (Romania)", + "alt_labels": [ + "North-West (Romania)" + ], + "related_ids": [], + "broader_ids": [ + "8189" + ], + "geo_area_code": null + }, + { + "id": "8494", + "label": "Vest (Romania)", + "alt_labels": [ + "West (Romania)" + ], + "related_ids": [], + "broader_ids": [ + "8189" + ], + "geo_area_code": null + }, + { + "id": "8495", + "label": "Sud \u2014 Muntenia (Romania)", + "alt_labels": [ + "South \u2014 Muntenia (Romania)" + ], + "related_ids": [], + "broader_ids": [ + "8189" + ], + "geo_area_code": null + }, + { + "id": "8496", + "label": "Sud-Est (Romania)", + "alt_labels": [ + "South-East (Romania)" + ], + "related_ids": [], + "broader_ids": [ + "8189" + ], + "geo_area_code": null + }, + { + "id": "8497", + "label": "Sud-Vest Oltenia (Romania)", + "alt_labels": [ + "South-West Oltenia (Romania)" + ], + "related_ids": [], + "broader_ids": [ + "8189" + ], + "geo_area_code": null + }, + { + "id": "8498", + "label": "London", + "alt_labels": [ + "Greater London", + "Inner London", + "Outer London" + ], + "related_ids": [], + "broader_ids": [ + "5438" + ], + "geo_area_code": null + }, + { + "id": "8499", + "label": "Alba", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "8491" + ], + "geo_area_code": null + }, + { + "id": "85", + "label": "social situation", + "alt_labels": [ + "social aspect" + ], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "850", + "label": "industrial equipment", + "alt_labels": [], + "related_ids": [ + "1830", + "1832", + "1833", + "1834", + "3197", + "3831", + "3863", + "5615" + ], + "broader_ids": [ + "1434" + ], + "geo_area_code": null + }, + { + "id": "8500", + "label": "Brasov", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "8491" + ], + "geo_area_code": null + }, + { + "id": "8501", + "label": "Covasna", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "8491" + ], + "geo_area_code": null + }, + { + "id": "8502", + "label": "Harghita", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "8491" + ], + "geo_area_code": null + }, + { + "id": "8503", + "label": "Mures", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "8491" + ], + "geo_area_code": null + }, + { + "id": "8504", + "label": "Sibiu", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "8491" + ], + "geo_area_code": null + }, + { + "id": "8505", + "label": "Botosani", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "8492" + ], + "geo_area_code": null + }, + { + "id": "8506", + "label": "Bacau", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "8492" + ], + "geo_area_code": null + }, + { + "id": "8507", + "label": "Iasi", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "8492" + ], + "geo_area_code": null + }, + { + "id": "8508", + "label": "Neamt", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "8492" + ], + "geo_area_code": null + }, + { + "id": "8509", + "label": "Suceava", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "8492" + ], + "geo_area_code": null + }, + { + "id": "851", + "label": "sociocultural facilities", + "alt_labels": [ + "socio-cultural facilities" + ], + "related_ids": [ + "2459", + "3358" + ], + "broader_ids": [ + "847" + ], + "geo_area_code": null + }, + { + "id": "8510", + "label": "Vaslui", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "8492" + ], + "geo_area_code": null + }, + { + "id": "8511", + "label": "Bihor", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "8493" + ], + "geo_area_code": null + }, + { + "id": "8512", + "label": "Bistrita-Nasaud", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "8493" + ], + "geo_area_code": null + }, + { + "id": "8513", + "label": "Cluj", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "8493" + ], + "geo_area_code": null + }, + { + "id": "8514", + "label": "Maramures", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "8493" + ], + "geo_area_code": null + }, + { + "id": "8515", + "label": "Satu Mare", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "8493" + ], + "geo_area_code": null + }, + { + "id": "8516", + "label": "Salaj", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "8493" + ], + "geo_area_code": null + }, + { + "id": "8517", + "label": "Arad", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "8494" + ], + "geo_area_code": null + }, + { + "id": "8518", + "label": "Caras-Severin", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "8494" + ], + "geo_area_code": null + }, + { + "id": "8519", + "label": "Hunedoara", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "8494" + ], + "geo_area_code": null + }, + { + "id": "852", + "label": "ECSC aid", + "alt_labels": [], + "related_ids": [ + "2608" + ], + "broader_ids": [ + "862" + ], + "geo_area_code": null + }, + { + "id": "8520", + "label": "Timis", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "8494" + ], + "geo_area_code": null + }, + { + "id": "8521", + "label": "Arges", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "8495" + ], + "geo_area_code": null + }, + { + "id": "8522", + "label": "Calarasi", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "8495" + ], + "geo_area_code": null + }, + { + "id": "8523", + "label": "D\u00e2mbovita", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "8495" + ], + "geo_area_code": null + }, + { + "id": "8524", + "label": "Giurgiu", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "8495" + ], + "geo_area_code": null + }, + { + "id": "8525", + "label": "Ialomita", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "8495" + ], + "geo_area_code": null + }, + { + "id": "8526", + "label": "Prahova", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "8495" + ], + "geo_area_code": null + }, + { + "id": "8527", + "label": "Teleorman", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "8495" + ], + "geo_area_code": null + }, + { + "id": "8528", + "label": "Braila", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "8496" + ], + "geo_area_code": null + }, + { + "id": "8529", + "label": "Buzau", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "8496" + ], + "geo_area_code": null + }, + { + "id": "853", + "label": "sports facilities", + "alt_labels": [ + "gymnasium", + "stadium", + "swimming pool" + ], + "related_ids": [ + "2745" + ], + "broader_ids": [ + "4245" + ], + "geo_area_code": null + }, + { + "id": "8530", + "label": "Constanta", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "8496" + ], + "geo_area_code": null + }, + { + "id": "8531", + "label": "Galati", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "8496" + ], + "geo_area_code": null + }, + { + "id": "8532", + "label": "Tulcea", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "8496" + ], + "geo_area_code": null + }, + { + "id": "8533", + "label": "Vrancea", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "8496" + ], + "geo_area_code": null + }, + { + "id": "8534", + "label": "Dolj", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "8497" + ], + "geo_area_code": null + }, + { + "id": "8535", + "label": "Gorj", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "8497" + ], + "geo_area_code": null + }, + { + "id": "8536", + "label": "Mehedinti", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "8497" + ], + "geo_area_code": null + }, + { + "id": "8537", + "label": "Olt", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "8497" + ], + "geo_area_code": null + }, + { + "id": "8538", + "label": "V\u00e2lcea", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "8497" + ], + "geo_area_code": null + }, + { + "id": "854", + "label": "equivalence of diplomas", + "alt_labels": [], + "related_ids": [ + "446" + ], + "broader_ids": [ + "2467" + ], + "geo_area_code": null + }, + { + "id": "8542", + "label": "administrator", + "alt_labels": [ + "AD function group", + "EC language service", + "EC staff in category LA", + "administrators' function group" + ], + "related_ids": [], + "broader_ids": [ + "1048" + ], + "geo_area_code": null + }, + { + "id": "8547", + "label": "Saint Barth\u00e9lemy", + "alt_labels": [ + "Collectivity of Saint Barth\u00e9lemy", + "Saint Barth\u00e9l\u00e9my" + ], + "related_ids": [], + "broader_ids": [ + "1087", + "2032" + ], + "geo_area_code": "BLM" + }, + { + "id": "8549", + "label": "European Globalisation Adjustment Fund", + "alt_labels": [ + "EGF" + ], + "related_ids": [ + "1052", + "6125", + "723" + ], + "broader_ids": [ + "2468" + ], + "geo_area_code": null + }, + { + "id": "855", + "label": "ergonomics", + "alt_labels": [ + "adaptation of work to man" + ], + "related_ids": [], + "broader_ids": [ + "82" + ], + "geo_area_code": null + }, + { + "id": "8550", + "label": "environmental indicator", + "alt_labels": [ + "agri-environmental indicator" + ], + "related_ids": [], + "broader_ids": [ + "2470" + ], + "geo_area_code": null + }, + { + "id": "8552", + "label": "Doha Round", + "alt_labels": [ + "Doha development Round", + "Doha development agenda" + ], + "related_ids": [], + "broader_ids": [ + "2050" + ], + "geo_area_code": null + }, + { + "id": "8553", + "label": "Treaty of Lisbon", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4479" + ], + "geo_area_code": null + }, + { + "id": "856", + "label": "volcanic eruption", + "alt_labels": [], + "related_ids": [ + "4770" + ], + "broader_ids": [ + "413" + ], + "geo_area_code": null + }, + { + "id": "857", + "label": "slavery", + "alt_labels": [ + "forced labour" + ], + "related_ids": [ + "5933", + "6081", + "8415" + ], + "broader_ids": [ + "538" + ], + "geo_area_code": null + }, + { + "id": "858", + "label": "discounting", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2495" + ], + "geo_area_code": null + }, + { + "id": "859", + "label": "air space", + "alt_labels": [], + "related_ids": [ + "4505" + ], + "broader_ids": [ + "518" + ], + "geo_area_code": null + }, + { + "id": "86", + "label": "socioeconomic conditions", + "alt_labels": [ + "socio-economic aspect", + "socio-economic conditions", + "socio-economic situation" + ], + "related_ids": [ + "c_058697c2" + ], + "broader_ids": [ + "85" + ], + "geo_area_code": null + }, + { + "id": "860", + "label": "European judicial area", + "alt_labels": [], + "related_ids": [ + "6222" + ], + "broader_ids": [ + "217" + ], + "geo_area_code": null + }, + { + "id": "861", + "label": "green area", + "alt_labels": [ + "park", + "public gardens" + ], + "related_ids": [ + "1157", + "2841" + ], + "broader_ids": [ + "4619" + ], + "geo_area_code": null + }, + { + "id": "862", + "label": "EU aid", + "alt_labels": [ + "Community aid", + "Community support", + "European Union aid", + "aid from the EU", + "aid from the European Union" + ], + "related_ids": [ + "1005", + "1052", + "1460", + "2965", + "441716" + ], + "broader_ids": [ + "712" + ], + "geo_area_code": null + }, + { + "id": "863", + "label": "Spain", + "alt_labels": [ + "Kingdom of Spain" + ], + "related_ids": [ + "864" + ], + "broader_ids": [ + "122", + "2106", + "2200", + "5283", + "912" + ], + "geo_area_code": "ESP" + }, + { + "id": "864", + "label": "regions of Spain", + "alt_labels": [ + "Autonomous Communities of Spain", + "Spanish regions" + ], + "related_ids": [ + "863" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "865", + "label": "protected species", + "alt_labels": [ + "endangered species" + ], + "related_ids": [ + "2826", + "2827", + "4801", + "4810", + "5463", + "6121" + ], + "broader_ids": [ + "3150" + ], + "geo_area_code": null + }, + { + "id": "866", + "label": "industrial espionage", + "alt_labels": [], + "related_ids": [ + "3033", + "6378" + ], + "broader_ids": [ + "3632" + ], + "geo_area_code": null + }, + { + "id": "867", + "label": "testing", + "alt_labels": [ + "experiment", + "industrial testing", + "pilot experiment", + "test" + ], + "related_ids": [ + "c_8c634c9b" + ], + "broader_ids": [ + "71" + ], + "geo_area_code": null + }, + { + "id": "868", + "label": "nuclear test", + "alt_labels": [], + "related_ids": [ + "2595" + ], + "broader_ids": [ + "4422" + ], + "geo_area_code": null + }, + { + "id": "869", + "label": "Extremadura", + "alt_labels": [ + "Autonomous Community of Extremadura" + ], + "related_ids": [], + "broader_ids": [ + "864" + ], + "geo_area_code": null + }, + { + "id": "87", + "label": "preparation for market", + "alt_labels": [], + "related_ids": [ + "4416" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "870", + "label": "supplementary aid for products", + "alt_labels": [], + "related_ids": [ + "2734", + "4389" + ], + "broader_ids": [ + "2173" + ], + "geo_area_code": null + }, + { + "id": "871", + "label": "establishment", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4300" + ], + "geo_area_code": null + }, + { + "id": "872", + "label": "special-status institution", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1452" + ], + "geo_area_code": null + }, + { + "id": "873", + "label": "educational institution", + "alt_labels": [ + "school", + "teaching institution" + ], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "874", + "label": "institution of public utility", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4189" + ], + "geo_area_code": null + }, + { + "id": "875", + "label": "drawing up of the budget", + "alt_labels": [], + "related_ids": [ + "5620" + ], + "broader_ids": [ + "2698" + ], + "geo_area_code": null + }, + { + "id": "876", + "label": "medical institution", + "alt_labels": [ + "clinic", + "hospital", + "outpatients' clinic" + ], + "related_ids": [], + "broader_ids": [ + "4116" + ], + "geo_area_code": null + }, + { + "id": "877", + "label": "penal institution", + "alt_labels": [ + "correctional facility", + "correctional institution", + "gaol", + "jail", + "maximum security prison", + "maximum security wing", + "open prison", + "penitentiary", + "prison", + "reform school", + "reformatory", + "remand centre", + "remand prison" + ], + "related_ids": [], + "broader_ids": [ + "3954" + ], + "geo_area_code": null + }, + { + "id": "878", + "label": "public institution", + "alt_labels": [ + "NDPB", + "Quango", + "body under public law", + "non-departmental public body", + "public body", + "quasi-autonomous non-governmental organisation", + "quasi-autonomous non-governmental organization" + ], + "related_ids": [ + "4012", + "830" + ], + "broader_ids": [ + "77" + ], + "geo_area_code": null + }, + { + "id": "879", + "label": "tin", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1885" + ], + "geo_area_code": null + }, + { + "id": "88", + "label": "admission to examinations", + "alt_labels": [ + "conditions of admission to examinations" + ], + "related_ids": [], + "broader_ids": [ + "925" + ], + "geo_area_code": null + }, + { + "id": "880", + "label": "gold-exchange standard", + "alt_labels": [ + "gold-currency standard", + "gold-dollar standard" + ], + "related_ids": [ + "204", + "902" + ], + "broader_ids": [ + "4371" + ], + "geo_area_code": null + }, + { + "id": "881", + "label": "emergency aid", + "alt_labels": [], + "related_ids": [ + "c_e548b67f", + "c_f7430876" + ], + "broader_ids": [ + "2460" + ], + "geo_area_code": null + }, + { + "id": "882", + "label": "gold standard", + "alt_labels": [ + "gold ingot standard" + ], + "related_ids": [], + "broader_ids": [ + "4371" + ], + "geo_area_code": null + }, + { + "id": "883", + "label": "State", + "alt_labels": [], + "related_ids": [ + "c_959c23de" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "884", + "label": "civil status", + "alt_labels": [], + "related_ids": [ + "4184" + ], + "broader_ids": [ + "4274" + ], + "geo_area_code": null + }, + { + "id": "885", + "label": "rule under emergency powers", + "alt_labels": [], + "related_ids": [ + "1541" + ], + "broader_ids": [ + "2162" + ], + "geo_area_code": null + }, + { + "id": "886", + "label": "state of emergency", + "alt_labels": [ + "curfew", + "state of siege" + ], + "related_ids": [], + "broader_ids": [ + "885" + ], + "geo_area_code": null + }, + { + "id": "887", + "label": "Welfare State", + "alt_labels": [], + "related_ids": [ + "2462", + "4881" + ], + "broader_ids": [ + "883" + ], + "geo_area_code": null + }, + { + "id": "888", + "label": "United States", + "alt_labels": [ + "USA", + "United States of America" + ], + "related_ids": [ + "1289", + "1296", + "2562", + "3406", + "3411", + "451462", + "c_39046afb" + ], + "broader_ids": [ + "1615", + "2079", + "2106", + "2119", + "2200", + "6205", + "7207" + ], + "geo_area_code": "USA" + }, + { + "id": "889", + "label": "State aid", + "alt_labels": [ + "national aid", + "national subsidy", + "public aid" + ], + "related_ids": [ + "2462", + "2474", + "287", + "2965", + "4126", + "5541", + "5554", + "588", + "809" + ], + "broader_ids": [ + "712" + ], + "geo_area_code": null + }, + { + "id": "89", + "label": "atmospheric conditions", + "alt_labels": [ + "artificial precipitation", + "precipitation", + "rain", + "sunshine", + "wind" + ], + "related_ids": [ + "3967", + "413" + ], + "broader_ids": [ + "6011" + ], + "geo_area_code": null + }, + { + "id": "890", + "label": "ethanol", + "alt_labels": [ + "ethyl alcohol" + ], + "related_ids": [ + "1143" + ], + "broader_ids": [ + "3739" + ], + "geo_area_code": null + }, + { + "id": "891", + "label": "Ethiopia", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5083", + "5556" + ], + "geo_area_code": "ETH" + }, + { + "id": "892", + "label": "social and cultural anthropology", + "alt_labels": [ + "cultural anthropology", + "ethnology", + "social anthropology", + "socio-cultural anthropology", + "sociocultural anthropology" + ], + "related_ids": [ + "1202", + "317", + "4098" + ], + "broader_ids": [ + "3956" + ], + "geo_area_code": null + }, + { + "id": "893", + "label": "labelling", + "alt_labels": [], + "related_ids": [ + "1425", + "1821", + "2076", + "5573", + "6307", + "c_50fb9d42", + "c_aaa8331c" + ], + "broader_ids": [ + "87" + ], + "geo_area_code": null + }, + { + "id": "894", + "label": "feasibility study", + "alt_labels": [], + "related_ids": [ + "1894" + ], + "broader_ids": [ + "2792" + ], + "geo_area_code": null + }, + { + "id": "895", + "label": "market research", + "alt_labels": [ + "market analysis" + ], + "related_ids": [ + "47" + ], + "broader_ids": [ + "13" + ], + "geo_area_code": null + }, + { + "id": "896", + "label": "work study", + "alt_labels": [ + "time study" + ], + "related_ids": [ + "1154", + "2177" + ], + "broader_ids": [ + "2184" + ], + "geo_area_code": null + }, + { + "id": "897", + "label": "student", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1927" + ], + "geo_area_code": null + }, + { + "id": "898", + "label": "foreign student", + "alt_labels": [], + "related_ids": [ + "3200", + "4004" + ], + "broader_ids": [ + "897" + ], + "geo_area_code": null + }, + { + "id": "899", + "label": "economic aid", + "alt_labels": [], + "related_ids": [ + "209", + "712", + "c_b0536152" + ], + "broader_ids": [ + "2460" + ], + "geo_area_code": null + }, + { + "id": "9", + "label": "foreign trade", + "alt_labels": [ + "external trade" + ], + "related_ids": [ + "1803" + ], + "broader_ids": [ + "2449" + ], + "geo_area_code": null + }, + { + "id": "900", + "label": "Eurocredit", + "alt_labels": [ + "Eurocurrency credit" + ], + "related_ids": [ + "285" + ], + "broader_ids": [ + "904" + ], + "geo_area_code": null + }, + { + "id": "901", + "label": "Eurocurrency", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "904" + ], + "geo_area_code": null + }, + { + "id": "902", + "label": "Eurodollar", + "alt_labels": [], + "related_ids": [ + "880" + ], + "broader_ids": [ + "904" + ], + "geo_area_code": null + }, + { + "id": "903", + "label": "Eurobond", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "904" + ], + "geo_area_code": null + }, + { + "id": "904", + "label": "Euromarket", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1809" + ], + "geo_area_code": null + }, + { + "id": "905", + "label": "Eurocommunism", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1282" + ], + "geo_area_code": null + }, + { + "id": "906", + "label": "Eurocontrol", + "alt_labels": [ + "European Organisation for the Safety of Air Navigation", + "European Organization for the Safety of Air Navigation" + ], + "related_ids": [ + "172", + "5887" + ], + "broader_ids": [ + "2187" + ], + "geo_area_code": null + }, + { + "id": "907", + "label": "Euroright", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1282" + ], + "geo_area_code": null + }, + { + "id": "908", + "label": "Eurogroup (NATO)", + "alt_labels": [], + "related_ids": [ + "2499" + ], + "broader_ids": [ + "2199" + ], + "geo_area_code": null + }, + { + "id": "909", + "label": "Europe", + "alt_labels": [ + "European countries" + ], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "91", + "label": "UN Conference", + "alt_labels": [ + "United Nations Conference" + ], + "related_ids": [ + "2179", + "6083" + ], + "broader_ids": [ + "5525" + ], + "geo_area_code": null + }, + { + "id": "910", + "label": "aid in kind", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2460" + ], + "geo_area_code": null + }, + { + "id": "911", + "label": "Northern Europe", + "alt_labels": [ + "Nordic country", + "Scandinavia", + "Scandinavian country" + ], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "912", + "label": "Southern Europe", + "alt_labels": [], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "913", + "label": "Western Europe", + "alt_labels": [ + "Western countries" + ], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "914", + "label": "Central and Eastern Europe", + "alt_labels": [ + "CEE", + "Central Europe", + "Eastern Europe" + ], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "915", + "label": "Community fisheries", + "alt_labels": [ + "Community fishing", + "blue Europe" + ], + "related_ids": [], + "broader_ids": [ + "2455" + ], + "geo_area_code": null + }, + { + "id": "916", + "label": "eutrophication", + "alt_labels": [], + "related_ids": [ + "1204", + "5741", + "612" + ], + "broader_ids": [ + "2530" + ], + "geo_area_code": null + }, + { + "id": "917", + "label": "budgetary assessment", + "alt_labels": [], + "related_ids": [ + "3558" + ], + "broader_ids": [ + "2698" + ], + "geo_area_code": null + }, + { + "id": "918", + "label": "project evaluation", + "alt_labels": [ + "project appraisal" + ], + "related_ids": [ + "2393", + "2801", + "2802", + "6263", + "6374", + "923" + ], + "broader_ids": [ + "2792" + ], + "geo_area_code": null + }, + { + "id": "919", + "label": "evaluation of resources", + "alt_labels": [ + "estimate of resources", + "inventory of resources", + "prospecting for resources", + "search for resources" + ], + "related_ids": [], + "broader_ids": [ + "1160" + ], + "geo_area_code": null + }, + { + "id": "92", + "label": "confidentiality", + "alt_labels": [ + "confidential information" + ], + "related_ids": [ + "2832", + "5334", + "5348" + ], + "broader_ids": [ + "453" + ], + "geo_area_code": null + }, + { + "id": "920", + "label": "offal", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4681" + ], + "geo_area_code": null + }, + { + "id": "921", + "label": "nuclear accident", + "alt_labels": [ + "nuclear damage", + "nuclear risk", + "radioactive accident", + "radioactive risk" + ], + "related_ids": [ + "2539", + "4074", + "451069", + "6413", + "686", + "c_be0de7b7" + ], + "broader_ids": [ + "4042" + ], + "geo_area_code": null + }, + { + "id": "922", + "label": "financial aid", + "alt_labels": [ + "capital grant", + "financial grant" + ], + "related_ids": [ + "211", + "4806", + "6713" + ], + "broader_ids": [ + "2460" + ], + "geo_area_code": null + }, + { + "id": "923", + "label": "technology assessment", + "alt_labels": [ + "European Parliament Office for Scientific and Technological Options Assessment", + "STOA", + "Scientific and Technical Options Assessment", + "technological evaluation" + ], + "related_ids": [ + "6263", + "6306", + "918", + "c_4254375b" + ], + "broader_ids": [ + "4415" + ], + "geo_area_code": null + }, + { + "id": "924", + "label": "tax avoidance", + "alt_labels": [ + "tax haven" + ], + "related_ids": [ + "1095", + "3235", + "3236", + "3951", + "3994" + ], + "broader_ids": [ + "1021" + ], + "geo_area_code": null + }, + { + "id": "925", + "label": "examination", + "alt_labels": [ + "entrance examination" + ], + "related_ids": [], + "broader_ids": [ + "4554" + ], + "geo_area_code": null + }, + { + "id": "926", + "label": "agricultural surplus", + "alt_labels": [ + "agricultural over-production", + "agricultural trade surplus", + "farm surplus", + "surplus of agricultural products" + ], + "related_ids": [ + "3568", + "3628", + "4280", + "4281", + "4285", + "807" + ], + "broader_ids": [ + "2972" + ], + "geo_area_code": null + }, + { + "id": "927", + "label": "exclusion from treatment (EU)", + "alt_labels": [ + "exclusion from EC treatment" + ], + "related_ids": [], + "broader_ids": [ + "2450" + ], + "geo_area_code": null + }, + { + "id": "928", + "label": "project management", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2792" + ], + "geo_area_code": null + }, + { + "id": "929", + "label": "implementation of the budget", + "alt_labels": [], + "related_ids": [ + "2448", + "5050" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "93", + "label": "confectionery", + "alt_labels": [ + "chocolate factory" + ], + "related_ids": [ + "2749" + ], + "broader_ids": [ + "1360" + ], + "geo_area_code": null + }, + { + "id": "930", + "label": "enforcement of ruling", + "alt_labels": [ + "effect of ruling", + "force of res judicata", + "mode of enforcement" + ], + "related_ids": [], + "broader_ids": [ + "1538" + ], + "geo_area_code": null + }, + { + "id": "931", + "label": "exemption from restrictive-practice authorisation", + "alt_labels": [ + "exemption from restrictive-practice authorization" + ], + "related_ids": [], + "broader_ids": [ + "3145" + ], + "geo_area_code": null + }, + { + "id": "932", + "label": "tariff exemption", + "alt_labels": [ + "exoneration from customs duty", + "zero duty" + ], + "related_ids": [], + "broader_ids": [ + "2519" + ], + "geo_area_code": null + }, + { + "id": "933", + "label": "financial year", + "alt_labels": [ + "budget year", + "budgetary year", + "fiscal year" + ], + "related_ids": [ + "54" + ], + "broader_ids": [ + "929" + ], + "geo_area_code": null + }, + { + "id": "934", + "label": "brain drain", + "alt_labels": [ + "emigration of qualified persons" + ], + "related_ids": [], + "broader_ids": [ + "724" + ], + "geo_area_code": null + }, + { + "id": "935", + "label": "tax exemption", + "alt_labels": [], + "related_ids": [ + "3625" + ], + "broader_ids": [ + "2504" + ], + "geo_area_code": null + }, + { + "id": "936", + "label": "farmer", + "alt_labels": [ + "cultivator", + "holder of a farm", + "horticulturist", + "share-cropper", + "stock breeder", + "stock owner", + "winegrower" + ], + "related_ids": [ + "3679" + ], + "broader_ids": [ + "2551" + ], + "geo_area_code": null + }, + { + "id": "937", + "label": "agricultural holding", + "alt_labels": [ + "farm" + ], + "related_ids": [ + "1898", + "1958", + "3341", + "3682", + "4298", + "4312", + "984" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "938", + "label": "State farm", + "alt_labels": [ + "sovkhoz" + ], + "related_ids": [ + "2812" + ], + "broader_ids": [ + "937" + ], + "geo_area_code": null + }, + { + "id": "939", + "label": "mixed farm", + "alt_labels": [], + "related_ids": [ + "2711", + "711" + ], + "broader_ids": [ + "4358" + ], + "geo_area_code": null + }, + { + "id": "94", + "label": "conflict of jurisdiction", + "alt_labels": [ + "conflict of prerogatives" + ], + "related_ids": [ + "95" + ], + "broader_ids": [ + "42" + ], + "geo_area_code": null + }, + { + "id": "940", + "label": "exploitation of the seas", + "alt_labels": [], + "related_ids": [ + "1050", + "3531", + "4791", + "542" + ], + "broader_ids": [ + "941" + ], + "geo_area_code": null + }, + { + "id": "941", + "label": "exploitation of resources", + "alt_labels": [], + "related_ids": [ + "1685", + "3765" + ], + "broader_ids": [ + "1160" + ], + "geo_area_code": null + }, + { + "id": "942", + "label": "family farming", + "alt_labels": [], + "related_ids": [ + "1739", + "4312", + "650", + "821" + ], + "broader_ids": [ + "4358" + ], + "geo_area_code": null + }, + { + "id": "943", + "label": "forestry holding", + "alt_labels": [], + "related_ids": [ + "1386" + ], + "broader_ids": [ + "651" + ], + "geo_area_code": null + }, + { + "id": "944", + "label": "dairy farm", + "alt_labels": [ + "milk collection" + ], + "related_ids": [ + "1406", + "228", + "2763", + "2989" + ], + "broader_ids": [ + "937" + ], + "geo_area_code": null + }, + { + "id": "945", + "label": "explosive", + "alt_labels": [ + "detonating material", + "propellant" + ], + "related_ids": [ + "4308" + ], + "broader_ids": [ + "3798" + ], + "geo_area_code": null + }, + { + "id": "946", + "label": "export", + "alt_labels": [ + "export sale" + ], + "related_ids": [ + "2452", + "2487", + "3187", + "4399" + ], + "broader_ids": [ + "614" + ], + "geo_area_code": null + }, + { + "id": "947", + "label": "export of capital", + "alt_labels": [], + "related_ids": [ + "1489" + ], + "broader_ids": [ + "2002" + ], + "geo_area_code": null + }, + { + "id": "948", + "label": "expropriation", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3929" + ], + "geo_area_code": null + }, + { + "id": "949", + "label": "multilateral aid", + "alt_labels": [], + "related_ids": [ + "3241" + ], + "broader_ids": [ + "2460" + ], + "geo_area_code": null + }, + { + "id": "95", + "label": "conflict of powers", + "alt_labels": [], + "related_ids": [ + "94" + ], + "broader_ids": [ + "5855" + ], + "geo_area_code": null + }, + { + "id": "950", + "label": "removal", + "alt_labels": [ + "deportation", + "entry refusal for EU citizens", + "expulsion", + "refoulement", + "refusal of entry", + "removal order", + "return decision" + ], + "related_ids": [ + "4003", + "552" + ], + "broader_ids": [ + "575" + ], + "geo_area_code": null + }, + { + "id": "951", + "label": "extra-territoriality", + "alt_labels": [ + "ex-territoriality" + ], + "related_ids": [ + "2835", + "5670" + ], + "broader_ids": [ + "581" + ], + "geo_area_code": null + }, + { + "id": "952", + "label": "mining extraction", + "alt_labels": [ + "mineral extraction industry", + "mining extraction technique" + ], + "related_ids": [], + "broader_ids": [ + "3753" + ], + "geo_area_code": null + }, + { + "id": "953", + "label": "extradition", + "alt_labels": [], + "related_ids": [ + "4452", + "6724" + ], + "broader_ids": [ + "575" + ], + "geo_area_code": null + }, + { + "id": "954", + "label": "extreme right", + "alt_labels": [], + "related_ids": [ + "2030", + "6888", + "971" + ], + "broader_ids": [ + "4436" + ], + "geo_area_code": null + }, + { + "id": "955", + "label": "extreme left", + "alt_labels": [], + "related_ids": [ + "1138", + "6888" + ], + "broader_ids": [ + "4436" + ], + "geo_area_code": null + }, + { + "id": "956", + "label": "Far East", + "alt_labels": [ + "East Asia", + "Eastern Asia", + "Far Eastern countries" + ], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "957", + "label": "invoicing", + "alt_labels": [ + "factoring", + "invoice" + ], + "related_ids": [], + "broader_ids": [ + "1155" + ], + "geo_area_code": null + }, + { + "id": "958", + "label": "non-refundable aid", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3003" + ], + "geo_area_code": null + }, + { + "id": "959", + "label": "low income", + "alt_labels": [], + "related_ids": [ + "4820", + "6745", + "826" + ], + "broader_ids": [ + "3319" + ], + "geo_area_code": null + }, + { + "id": "96", + "label": "misuse of a right", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "523" + ], + "geo_area_code": null + }, + { + "id": "960", + "label": "bankruptcy", + "alt_labels": [ + "criminal bankruptcy" + ], + "related_ids": [ + "2355", + "367", + "524", + "574", + "8432" + ], + "broader_ids": [ + "1672" + ], + "geo_area_code": null + }, + { + "id": "961", + "label": "hunger", + "alt_labels": [ + "famine", + "fight against hunger" + ], + "related_ids": [ + "807" + ], + "broader_ids": [ + "2318" + ], + "geo_area_code": null + }, + { + "id": "962", + "label": "type of tenure", + "alt_labels": [], + "related_ids": [ + "2814", + "3009", + "4298", + "579", + "6311" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "963", + "label": "owner farming", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "962" + ], + "geo_area_code": null + }, + { + "id": "964", + "label": "mixed tenure", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "962" + ], + "geo_area_code": null + }, + { + "id": "965", + "label": "family", + "alt_labels": [ + "family environment", + "nuclear family" + ], + "related_ids": [ + "1864", + "c_2c8a75b1" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "966", + "label": "large family", + "alt_labels": [], + "related_ids": [ + "2480", + "3361" + ], + "broader_ids": [ + "965" + ], + "geo_area_code": null + }, + { + "id": "967", + "label": "family by marriage", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "965" + ], + "geo_area_code": null + }, + { + "id": "968", + "label": "FAO", + "alt_labels": [ + "UN Food and Agriculture Organisation", + "United Nations Food and Agriculture Organisation" + ], + "related_ids": [ + "1268", + "2791" + ], + "broader_ids": [ + "1455" + ], + "geo_area_code": null + }, + { + "id": "969", + "label": "private aid", + "alt_labels": [], + "related_ids": [ + "3331" + ], + "broader_ids": [ + "2460" + ], + "geo_area_code": null + }, + { + "id": "97", + "label": "temporary admission", + "alt_labels": [ + "temporary export", + "temporary import" + ], + "related_ids": [ + "2961" + ], + "broader_ids": [ + "3174" + ], + "geo_area_code": null + }, + { + "id": "970", + "label": "cereal flour", + "alt_labels": [], + "related_ids": [ + "1943", + "5360" + ], + "broader_ids": [ + "2729" + ], + "geo_area_code": null + }, + { + "id": "971", + "label": "Fascism", + "alt_labels": [ + "neo-Fascism" + ], + "related_ids": [ + "954" + ], + "broader_ids": [ + "1282" + ], + "geo_area_code": null + }, + { + "id": "972", + "label": "animal life", + "alt_labels": [ + "wild animal" + ], + "related_ids": [ + "2826", + "3528", + "4810" + ], + "broader_ids": [ + "3150" + ], + "geo_area_code": null + }, + { + "id": "973", + "label": "European Monetary Cooperation Fund", + "alt_labels": [ + "EC Monetary Cooperation Fund", + "EMCF" + ], + "related_ids": [ + "1052" + ], + "broader_ids": [ + "4370" + ], + "geo_area_code": null + }, + { + "id": "974", + "label": "fertility", + "alt_labels": [ + "fertility rate", + "infertility" + ], + "related_ids": [], + "broader_ids": [ + "2029" + ], + "geo_area_code": null + }, + { + "id": "975", + "label": "housewife", + "alt_labels": [], + "related_ids": [ + "650" + ], + "broader_ids": [ + "1864" + ], + "geo_area_code": null + }, + { + "id": "976", + "label": "regional aid", + "alt_labels": [ + "aid for regional development", + "aid to less-favoured regions" + ], + "related_ids": [ + "1056", + "221", + "2515", + "3052", + "431" + ], + "broader_ids": [ + "712" + ], + "geo_area_code": null + }, + { + "id": "977", + "label": "female migrant", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1909" + ], + "geo_area_code": null + }, + { + "id": "978", + "label": "EAGGF", + "alt_labels": [ + "EC agricultural fund", + "European Agricultural Guidance and Guarantee Fund" + ], + "related_ids": [ + "2443", + "2455", + "5373" + ], + "broader_ids": [ + "1052" + ], + "geo_area_code": null + }, + { + "id": "98", + "label": "labour dispute", + "alt_labels": [ + "industrial action", + "industrial dispute" + ], + "related_ids": [ + "5139", + "5982" + ], + "broader_ids": [ + "3209" + ], + "geo_area_code": null + }, + { + "id": "981", + "label": "iron", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1883" + ], + "geo_area_code": null + }, + { + "id": "982", + "label": "tenant farming", + "alt_labels": [], + "related_ids": [ + "5710" + ], + "broader_ids": [ + "962" + ], + "geo_area_code": null + }, + { + "id": "983", + "label": "collective farm", + "alt_labels": [ + "kibbutz", + "kolkhoz" + ], + "related_ids": [ + "228", + "6032" + ], + "broader_ids": [ + "937" + ], + "geo_area_code": null + }, + { + "id": "984", + "label": "model farm", + "alt_labels": [ + "pilot farm" + ], + "related_ids": [ + "937" + ], + "broader_ids": [ + "2915" + ], + "geo_area_code": null + }, + { + "id": "985", + "label": "ferryboat", + "alt_labels": [ + "car-ferry" + ], + "related_ids": [], + "broader_ids": [ + "4827" + ], + "geo_area_code": null + }, + { + "id": "986", + "label": "health aid", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2460" + ], + "geo_area_code": null + }, + { + "id": "987", + "label": "IFLA", + "alt_labels": [ + "International Federation of Library Associations and Institutions" + ], + "related_ids": [ + "494" + ], + "broader_ids": [ + "2191" + ], + "geo_area_code": null + }, + { + "id": "988", + "label": "wood fibre", + "alt_labels": [ + "fibre building board" + ], + "related_ids": [ + "3881" + ], + "broader_ids": [ + "2754" + ], + "geo_area_code": null + }, + { + "id": "989", + "label": "glass fibre", + "alt_labels": [], + "related_ids": [ + "3693" + ], + "broader_ids": [ + "1396" + ], + "geo_area_code": null + }, + { + "id": "99", + "label": "international conflict", + "alt_labels": [ + "international crisis" + ], + "related_ids": [ + "2053", + "567", + "c_2e08d60f", + "c_5b447e3a" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "990", + "label": "textile fibre", + "alt_labels": [ + "textile thread" + ], + "related_ids": [ + "2417" + ], + "broader_ids": [ + "2783" + ], + "geo_area_code": null + }, + { + "id": "991", + "label": "International Federation for Documentation", + "alt_labels": [ + "FID", + "International Federation for Information and Documentation" + ], + "related_ids": [ + "494" + ], + "broader_ids": [ + "2191" + ], + "geo_area_code": null + }, + { + "id": "992", + "label": "International Fund for Agricultural Development", + "alt_labels": [ + "IFAD" + ], + "related_ids": [ + "2442", + "3077" + ], + "broader_ids": [ + "1455" + ], + "geo_area_code": null + }, + { + "id": "993", + "label": "Fiji", + "alt_labels": [ + "Republic of the Fiji Islands" + ], + "related_ids": [], + "broader_ids": [ + "1862", + "5083", + "8366", + "c_b2c019c8" + ], + "geo_area_code": "FJI" + }, + { + "id": "994", + "label": "foot-and-mouth disease", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1755" + ], + "geo_area_code": null + }, + { + "id": "995", + "label": "sectoral aid", + "alt_labels": [], + "related_ids": [ + "2518" + ], + "broader_ids": [ + "712" + ], + "geo_area_code": null + }, + { + "id": "996", + "label": "wire", + "alt_labels": [ + "drawn product", + "wire drawing" + ], + "related_ids": [], + "broader_ids": [ + "3800" + ], + "geo_area_code": null + }, + { + "id": "997", + "label": "fishing net", + "alt_labels": [ + "drag-net", + "mesh of fishing nets", + "trawl" + ], + "related_ids": [], + "broader_ids": [ + "5228" + ], + "geo_area_code": null + }, + { + "id": "998", + "label": "subsidiary", + "alt_labels": [ + "subsidiary company" + ], + "related_ids": [ + "828", + "999" + ], + "broader_ids": [ + "871" + ], + "geo_area_code": null + }, + { + "id": "999", + "label": "joint subsidiary", + "alt_labels": [], + "related_ids": [ + "998" + ], + "broader_ids": [ + "2264" + ], + "geo_area_code": null + }, + { + "id": "c_03f9a8ac", + "label": "performance measurement", + "alt_labels": [ + "KPI", + "key performance indicator" + ], + "related_ids": [], + "broader_ids": [ + "4413" + ], + "geo_area_code": null + }, + { + "id": "c_047e5912", + "label": "European Banking Authority", + "alt_labels": [ + "EBA" + ], + "related_ids": [ + "3251", + "c_8f89faac" + ], + "broader_ids": [ + "5769" + ], + "geo_area_code": null + }, + { + "id": "c_049691c5", + "label": "County of Sisak-Moslavina", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "c_d4ca9a6c" + ], + "geo_area_code": null + }, + { + "id": "c_04ae3ba8", + "label": "information security", + "alt_labels": [ + "Internet safety", + "Internet security", + "breach of information security", + "cyber-safety", + "cyber-security", + "cybersafety", + "cybersecurity", + "digital safety", + "information assurance", + "information security incident", + "infosec", + "network and Internet security" + ], + "related_ids": [ + "5181", + "6779", + "7938", + "c_4e75f061" + ], + "broader_ids": [ + "5922" + ], + "geo_area_code": null + }, + { + "id": "c_05303ddd", + "label": "autonomous vehicle", + "alt_labels": [ + "AV", + "driverless car", + "highly automated driving", + "robotic car", + "self-driving car", + "self-driving vehicle" + ], + "related_ids": [], + "broader_ids": [ + "4651" + ], + "geo_area_code": null + }, + { + "id": "c_058697c2", + "label": "health determinant", + "alt_labels": [ + "determinant of health", + "determinant of health indicator" + ], + "related_ids": [ + "1162", + "1353", + "140", + "4245", + "4374", + "4475", + "86" + ], + "broader_ids": [ + "2479" + ], + "geo_area_code": null + }, + { + "id": "c_05f9c614", + "label": "public data", + "alt_labels": [], + "related_ids": [ + "441" + ], + "broader_ids": [ + "2472" + ], + "geo_area_code": null + }, + { + "id": "c_062f6587", + "label": "European Stability Mechanism", + "alt_labels": [ + "ESM" + ], + "related_ids": [ + "1728", + "1851" + ], + "broader_ids": [ + "6151" + ], + "geo_area_code": null + }, + { + "id": "c_070e15e7", + "label": "County of Brod-Posavina", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "c_d4ca9a6c" + ], + "geo_area_code": null + }, + { + "id": "c_0894af6b", + "label": "internally displaced person", + "alt_labels": [ + "IDP", + "internally displaced people" + ], + "related_ids": [], + "broader_ids": [ + "3074" + ], + "geo_area_code": null + }, + { + "id": "c_090e8e94", + "label": "language skills", + "alt_labels": [ + "CEFR", + "Common European Framework of Reference for Languages", + "foreign language competence", + "language competence", + "language proficiency", + "language qualifications" + ], + "related_ids": [ + "1580", + "783" + ], + "broader_ids": [ + "1074" + ], + "geo_area_code": null + }, + { + "id": "c_095c8a84", + "label": "County of Po\u017eega-Slavonia", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "c_d4ca9a6c" + ], + "geo_area_code": null + }, + { + "id": "c_097751fd", + "label": "fracking", + "alt_labels": [ + "fracing", + "hydraulic fracturing", + "hydrofracking" + ], + "related_ids": [ + "6921" + ], + "broader_ids": [ + "3765" + ], + "geo_area_code": null + }, + { + "id": "c_0a700c19", + "label": "Auvergne-Rh\u00f4ne-Alpes", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1088" + ], + "geo_area_code": null + }, + { + "id": "c_0b6b83e1", + "label": "foresight", + "alt_labels": [ + "strategic foresight" + ], + "related_ids": [ + "2616", + "6300", + "c_9829e6b7" + ], + "broader_ids": [ + "2914" + ], + "geo_area_code": null + }, + { + "id": "c_0e092eaf", + "label": "aquatic ecosystem", + "alt_labels": [ + "wetland" + ], + "related_ids": [], + "broader_ids": [ + "664" + ], + "geo_area_code": null + }, + { + "id": "c_0e4239f5", + "label": "financial audit", + "alt_labels": [ + "financial auditing", + "regularity audit", + "regularity auditing" + ], + "related_ids": [], + "broader_ids": [ + "4675" + ], + "geo_area_code": null + }, + { + "id": "c_0f3b8370", + "label": "collective redress", + "alt_labels": [ + "class action", + "collective action", + "collective claim", + "collective redress mechanism", + "group action", + "group litigation", + "representative action" + ], + "related_ids": [ + "2836", + "4695" + ], + "broader_ids": [ + "2701" + ], + "geo_area_code": null + }, + { + "id": "c_1000336b", + "label": "long-term care", + "alt_labels": [ + "LTC" + ], + "related_ids": [], + "broader_ids": [ + "5899" + ], + "geo_area_code": null + }, + { + "id": "c_104476d7", + "label": "national language", + "alt_labels": [], + "related_ids": [ + "6885" + ], + "broader_ids": [ + "1580" + ], + "geo_area_code": null + }, + { + "id": "c_108551b1", + "label": "conspiracy theory", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "6770" + ], + "geo_area_code": null + }, + { + "id": "c_10aa91c7", + "label": "Islamic finance", + "alt_labels": [ + "Islamic bank", + "Islamic banking", + "Islamic financial system" + ], + "related_ids": [ + "6735" + ], + "broader_ids": [ + "1000" + ], + "geo_area_code": null + }, + { + "id": "c_1137acd8", + "label": "human development", + "alt_labels": [ + "HDI", + "human development index" + ], + "related_ids": [ + "3915", + "427", + "4881" + ], + "broader_ids": [ + "2465" + ], + "geo_area_code": null + }, + { + "id": "c_1138d9d2", + "label": "circular economy", + "alt_labels": [ + "circular economy action plan", + "circular economy package" + ], + "related_ids": [ + "2507", + "2947", + "5585", + "5794", + "831", + "c_18802d13", + "c_749f2ce9", + "c_a4590937" + ], + "broader_ids": [ + "2497" + ], + "geo_area_code": null + }, + { + "id": "c_12742da8", + "label": "Baltic Sea region", + "alt_labels": [], + "related_ids": [ + "1871", + "5774", + "c_f05a3667" + ], + "broader_ids": [ + "5848" + ], + "geo_area_code": null + }, + { + "id": "c_12e208c8", + "label": "wifi", + "alt_labels": [], + "related_ids": [ + "2192", + "3422", + "5862" + ], + "broader_ids": [ + "3017" + ], + "geo_area_code": null + }, + { + "id": "c_14d71455", + "label": "private equity", + "alt_labels": [ + "private equity investment fund" + ], + "related_ids": [ + "1495", + "5157" + ], + "broader_ids": [ + "4195" + ], + "geo_area_code": null + }, + { + "id": "c_14e0ae65", + "label": "County of Split-Dalmatia", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "c_46e54685" + ], + "geo_area_code": null + }, + { + "id": "c_163e1e96", + "label": "green public procurement", + "alt_labels": [ + "GPP", + "environmental friendly procurement", + "sustainable public procurement" + ], + "related_ids": [ + "5585", + "5696", + "c_749f2ce9" + ], + "broader_ids": [ + "c_4c7717f3" + ], + "geo_area_code": null + }, + { + "id": "c_165899a6", + "label": "environmental industry", + "alt_labels": [ + "EGSS", + "eco-industry", + "environment industry", + "environmental goods and services industry", + "environmental goods and services sector" + ], + "related_ids": [], + "broader_ids": [ + "2470" + ], + "geo_area_code": null + }, + { + "id": "c_16b63d4f", + "label": "functional food", + "alt_labels": [ + "FOSHU", + "food for specified health uses", + "neutraceutical", + "prebiotics", + "probiotics" + ], + "related_ids": [], + "broader_ids": [ + "1258" + ], + "geo_area_code": null + }, + { + "id": "c_16e35fe6", + "label": "foster parent", + "alt_labels": [ + "foster family" + ], + "related_ids": [ + "3919", + "6541" + ], + "broader_ids": [ + "1004" + ], + "geo_area_code": null + }, + { + "id": "c_18180cde", + "label": "option contract", + "alt_labels": [ + "call option", + "option market", + "put option", + "traded option" + ], + "related_ids": [], + "broader_ids": [ + "c_a18525ab" + ], + "geo_area_code": null + }, + { + "id": "c_18802d13", + "label": "ecodesign", + "alt_labels": [], + "related_ids": [ + "5696", + "6700", + "c_1138d9d2", + "c_87617344" + ], + "broader_ids": [ + "71" + ], + "geo_area_code": null + }, + { + "id": "c_18ac5876", + "label": "citizen science", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "c_99a79cea" + ], + "geo_area_code": null + }, + { + "id": "c_18cee978", + "label": "3G", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "c_25fe24f4" + ], + "geo_area_code": null + }, + { + "id": "c_1af36ac9", + "label": "food fraud", + "alt_labels": [], + "related_ids": [ + "2836", + "6569" + ], + "broader_ids": [ + "1590" + ], + "geo_area_code": null + }, + { + "id": "c_1bedfedb", + "label": "alcohol consumption", + "alt_labels": [ + "consumption of alcoholic beverages" + ], + "related_ids": [ + "1162", + "1378", + "5018" + ], + "broader_ids": [ + "c_5a59a5d2" + ], + "geo_area_code": null + }, + { + "id": "c_1c2d26cf", + "label": "Barents Sea", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2109" + ], + "geo_area_code": null + }, + { + "id": "c_1c478aa5", + "label": "EU restrictive measure", + "alt_labels": [ + "EU sanction or restrictive measure", + "restrictive measure of the European Union", + "sanction or restrictive measure of the European Union" + ], + "related_ids": [ + "3483", + "c_c3185a19" + ], + "broader_ids": [ + "5788" + ], + "geo_area_code": null + }, + { + "id": "c_1c7d7d1e", + "label": "care economy", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1004" + ], + "geo_area_code": null + }, + { + "id": "c_1e7f033d", + "label": "e-invoicing", + "alt_labels": [ + "electronic billing", + "electronic invoice", + "electronic invoicing" + ], + "related_ids": [ + "1155" + ], + "broader_ids": [ + "5268" + ], + "geo_area_code": null + }, + { + "id": "c_20f6ad03", + "label": "open innovation", + "alt_labels": [ + "distributed innovation" + ], + "related_ids": [ + "652", + "c_6f7bbe63" + ], + "broader_ids": [ + "1439" + ], + "geo_area_code": null + }, + { + "id": "c_20fde7af", + "label": "interbank market", + "alt_labels": [ + "inter-bank market", + "interbank money market" + ], + "related_ids": [ + "1804" + ], + "broader_ids": [ + "1809" + ], + "geo_area_code": null + }, + { + "id": "c_2212c2c4", + "label": "multi-level governance", + "alt_labels": [ + "multilevel governance", + "multilevel policy" + ], + "related_ids": [ + "6034", + "6897" + ], + "broader_ids": [ + "5413" + ], + "geo_area_code": null + }, + { + "id": "c_22f8c0e6", + "label": "energy statistics", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2498" + ], + "geo_area_code": null + }, + { + "id": "c_23635024", + "label": "County of Zagreb", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "c_d4ca9a6c" + ], + "geo_area_code": null + }, + { + "id": "c_23740d84", + "label": "food chain", + "alt_labels": [ + "food web" + ], + "related_ids": [], + "broader_ids": [ + "632" + ], + "geo_area_code": null + }, + { + "id": "c_243b7be2", + "label": "open educational resources", + "alt_labels": [ + "OER" + ], + "related_ids": [ + "2313", + "2817" + ], + "broader_ids": [ + "3278" + ], + "geo_area_code": null + }, + { + "id": "c_25d12753", + "label": "rainbow family", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "965" + ], + "geo_area_code": null + }, + { + "id": "c_25ddd844", + "label": "comic book", + "alt_labels": [ + "comic strip" + ], + "related_ids": [], + "broader_ids": [ + "486" + ], + "geo_area_code": null + }, + { + "id": "c_25e0bb6d", + "label": "thermal water", + "alt_labels": [ + "thermal spring" + ], + "related_ids": [ + "4455", + "c_67699417" + ], + "broader_ids": [ + "597" + ], + "geo_area_code": null + }, + { + "id": "c_25fe24f4", + "label": "mobile communication", + "alt_labels": [ + "mobile communications network", + "mobile communications system", + "mobile network", + "mobile network operator", + "mobile phone operator", + "mobile telephone network", + "mobile telephony" + ], + "related_ids": [], + "broader_ids": [ + "4502" + ], + "geo_area_code": null + }, + { + "id": "c_28750470", + "label": "food-borne disease", + "alt_labels": [ + "E.coli infection", + "Escherichia coli infection", + "campylobacteriosis", + "food-borne zoonose", + "food-borne zoonotic disease", + "listeriosis", + "salmonellosis" + ], + "related_ids": [ + "6569" + ], + "broader_ids": [ + "1754" + ], + "geo_area_code": null + }, + { + "id": "c_28c51c2a", + "label": "rail safety", + "alt_labels": [], + "related_ids": [ + "2400", + "3430", + "3641" + ], + "broader_ids": [ + "4033" + ], + "geo_area_code": null + }, + { + "id": "c_2a1a9fdc", + "label": "European territorial cooperation", + "alt_labels": [ + "ETC", + "European cross-border cooperation", + "European interregional cooperation", + "European territorial co-operation", + "European trans-national cooperation", + "European transnational cooperation", + "Interreg" + ], + "related_ids": [ + "1056", + "221", + "226" + ], + "broader_ids": [ + "2516" + ], + "geo_area_code": null + }, + { + "id": "c_2ad19da5", + "label": "non-motorised transport", + "alt_labels": [ + "cycling" + ], + "related_ids": [ + "6850" + ], + "broader_ids": [ + "2015" + ], + "geo_area_code": null + }, + { + "id": "c_2b2e17b1", + "label": "EU candidate countries", + "alt_labels": [], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "c_2b70515a", + "label": "plastic waste", + "alt_labels": [], + "related_ids": [ + "1383" + ], + "broader_ids": [ + "343" + ], + "geo_area_code": null + }, + { + "id": "c_2c5a05a0", + "label": "genetic database", + "alt_labels": [ + "DNA library", + "gene bank", + "gene library", + "genetic catalogue", + "genetic data bank", + "genetic data base", + "genetic databank", + "genetic information database", + "genomic library" + ], + "related_ids": [ + "4821" + ], + "broader_ids": [ + "5651" + ], + "geo_area_code": null + }, + { + "id": "c_2c8a75b1", + "label": "family reunification", + "alt_labels": [], + "related_ids": [ + "3305", + "965" + ], + "broader_ids": [ + "1909" + ], + "geo_area_code": null + }, + { + "id": "c_2d0e694e", + "label": "Economic and Financial Committee", + "alt_labels": [ + "EFC" + ], + "related_ids": [], + "broader_ids": [ + "4602" + ], + "geo_area_code": null + }, + { + "id": "c_2d0e82e0", + "label": "maintenance staff", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "831" + ], + "geo_area_code": null + }, + { + "id": "c_2df9b142", + "label": "data science", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4488" + ], + "geo_area_code": null + }, + { + "id": "c_2e08d60f", + "label": "EU civilian mission", + "alt_labels": [ + "CPCC", + "Civilian Planning and Conduct Capability", + "EU civilian operation", + "civilian mission of the EU", + "civilian mission of the European Union" + ], + "related_ids": [ + "1743", + "99", + "c_5b447e3a" + ], + "broader_ids": [ + "5788" + ], + "geo_area_code": null + }, + { + "id": "c_2e7c1ac5", + "label": "Southern neighbourhood", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "7932" + ], + "geo_area_code": null + }, + { + "id": "c_2efea99f", + "label": "work-life balance", + "alt_labels": [ + "WLB", + "balance between work and private life", + "balancing work and family life", + "balancing work and private life", + "reconciliation of personal and working life", + "work-family balance", + "work-life integration" + ], + "related_ids": [], + "broader_ids": [ + "82" + ], + "geo_area_code": null + }, + { + "id": "c_2f00dd5a", + "label": "whistleblowing", + "alt_labels": [ + "whistle blowing", + "whistleblower" + ], + "related_ids": [ + "1990", + "245", + "5334", + "5748", + "8416" + ], + "broader_ids": [ + "4045" + ], + "geo_area_code": null + }, + { + "id": "c_2f3d274d", + "label": "Health Emergency Preparedness and Response Authority", + "alt_labels": [ + "HERA" + ], + "related_ids": [], + "broader_ids": [ + "5769" + ], + "geo_area_code": null + }, + { + "id": "c_2f64fd66", + "label": "World Anti-Doping Agency", + "alt_labels": [ + "WADA" + ], + "related_ids": [ + "5325" + ], + "broader_ids": [ + "2191" + ], + "geo_area_code": null + }, + { + "id": "c_2ffe4574", + "label": "virtual currency", + "alt_labels": [ + "VC", + "VCS", + "bitcoin", + "cryptocurrency", + "cyber currency", + "virtual currency scheme" + ], + "related_ids": [ + "c_ab84e157" + ], + "broader_ids": [ + "1969" + ], + "geo_area_code": null + }, + { + "id": "c_315af034", + "label": "marine fuel", + "alt_labels": [ + "MGO", + "marine diesel fuel", + "marine distillate fuel", + "marine gas oil", + "marine residual fuel" + ], + "related_ids": [ + "4522" + ], + "broader_ids": [ + "5262" + ], + "geo_area_code": null + }, + { + "id": "c_31da5694", + "label": "e-Health", + "alt_labels": [ + "eHealth", + "on-line health", + "online health" + ], + "related_ids": [ + "c_4ee83dea", + "c_b12a760a" + ], + "broader_ids": [ + "2479" + ], + "geo_area_code": null + }, + { + "id": "c_3212cc75", + "label": "invasive species", + "alt_labels": [ + "IAS", + "expanding species", + "invasive alien species", + "invasive exotic plants", + "invasive non-native species" + ], + "related_ids": [ + "4074", + "5225" + ], + "broader_ids": [ + "4940" + ], + "geo_area_code": null + }, + { + "id": "c_324b44f1", + "label": "social media", + "alt_labels": [ + "social medium", + "social network" + ], + "related_ids": [ + "c_433922a6", + "c_6926daf8" + ], + "broader_ids": [ + "6088" + ], + "geo_area_code": null + }, + { + "id": "c_32e52346", + "label": "geo-blocking", + "alt_labels": [], + "related_ids": [ + "6089", + "c_6f7bbe63" + ], + "broader_ids": [ + "4502" + ], + "geo_area_code": null + }, + { + "id": "c_34242feb", + "label": "online game", + "alt_labels": [ + "Internet game", + "cyber-game", + "interactive gaming" + ], + "related_ids": [], + "broader_ids": [ + "c_e2de1ffd" + ], + "geo_area_code": null + }, + { + "id": "c_34465dac", + "label": "e-procurement", + "alt_labels": [ + "procurement digitalisation" + ], + "related_ids": [ + "6894" + ], + "broader_ids": [ + "c_4c7717f3" + ], + "geo_area_code": null + }, + { + "id": "c_34746c6e", + "label": "financial transparency", + "alt_labels": [ + "public finance transparency", + "transparency in public finance" + ], + "related_ids": [ + "1018", + "5937" + ], + "broader_ids": [ + "1005" + ], + "geo_area_code": null + }, + { + "id": "c_348000be", + "label": "body mass index", + "alt_labels": [ + "BMI", + "height and weight", + "obesity", + "overweight", + "underweight" + ], + "related_ids": [ + "5715" + ], + "broader_ids": [ + "c_058697c2" + ], + "geo_area_code": null + }, + { + "id": "c_3508a934", + "label": "thorium", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1840" + ], + "geo_area_code": null + }, + { + "id": "c_3897ba70", + "label": "freshwater ecosystem", + "alt_labels": [ + "freshwater ecology" + ], + "related_ids": [], + "broader_ids": [ + "c_0e092eaf" + ], + "geo_area_code": null + }, + { + "id": "c_39046afb", + "label": "transatlantic relations", + "alt_labels": [ + "transatlantic dialogue", + "transatlantic partnership", + "transatlantic relationships" + ], + "related_ids": [ + "5100", + "888" + ], + "broader_ids": [ + "3474" + ], + "geo_area_code": null + }, + { + "id": "c_39cda9ba", + "label": "biocide", + "alt_labels": [], + "related_ids": [ + "c_e5d85c14" + ], + "broader_ids": [ + "2014" + ], + "geo_area_code": null + }, + { + "id": "c_39d242fc", + "label": "crowdfunding", + "alt_labels": [ + "crowd financing", + "participatory financing" + ], + "related_ids": [ + "c_68ddcc11" + ], + "broader_ids": [ + "1000" + ], + "geo_area_code": null + }, + { + "id": "c_3a2df4eb", + "label": "political Islam", + "alt_labels": [ + "Muslim politics" + ], + "related_ids": [ + "1508" + ], + "broader_ids": [ + "1282" + ], + "geo_area_code": null + }, + { + "id": "c_3a9ccfe3", + "label": "radicalisation", + "alt_labels": [], + "related_ids": [ + "4452" + ], + "broader_ids": [ + "5634" + ], + "geo_area_code": null + }, + { + "id": "c_3bcff3bb", + "label": "municipal waste", + "alt_labels": [ + "municipal solid waste", + "residential waste", + "urban waste" + ], + "related_ids": [], + "broader_ids": [ + "343" + ], + "geo_area_code": null + }, + { + "id": "c_3bd33e24", + "label": "Bologna Process", + "alt_labels": [], + "related_ids": [ + "2932", + "800" + ], + "broader_ids": [ + "6920" + ], + "geo_area_code": null + }, + { + "id": "c_3cd258a4", + "label": "intimidation lawsuit", + "alt_labels": [], + "related_ids": [ + "1620" + ], + "broader_ids": [ + "5414" + ], + "geo_area_code": null + }, + { + "id": "c_3dfe52ca", + "label": "machine learning", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3030" + ], + "geo_area_code": null + }, + { + "id": "c_3e6af2e7", + "label": "financial stability", + "alt_labels": [ + "financial instability", + "stability of the financial system" + ], + "related_ids": [ + "c_c565cff5", + "c_d6e0eb67" + ], + "broader_ids": [ + "1804" + ], + "geo_area_code": null + }, + { + "id": "c_3f9a7b14", + "label": "landslide", + "alt_labels": [ + "landslip", + "rock slide" + ], + "related_ids": [], + "broader_ids": [ + "413" + ], + "geo_area_code": null + }, + { + "id": "c_406ad4cc", + "label": "risk management", + "alt_labels": [ + "ERM", + "enterprise risk management", + "risk analysis", + "risk assessment" + ], + "related_ids": [ + "4074", + "6715", + "c_4b8a95a7", + "c_57f3c49f", + "c_8c634c9b", + "c_d6e0eb67", + "c_dcf3f7c0" + ], + "broader_ids": [ + "1154" + ], + "geo_area_code": null + }, + { + "id": "c_40f54e0c", + "label": "metadata", + "alt_labels": [ + "data about data", + "meta-information", + "metadata registry", + "metadata repository", + "metainformation" + ], + "related_ids": [ + "c_a17a2156" + ], + "broader_ids": [ + "494" + ], + "geo_area_code": null + }, + { + "id": "c_412ed48a", + "label": "County of Karlovac", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "c_d4ca9a6c" + ], + "geo_area_code": null + }, + { + "id": "c_415bab24", + "label": "language industry", + "alt_labels": [], + "related_ids": [ + "1405", + "4486" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "c_41ef4cb8", + "label": "pricing of medicines", + "alt_labels": [ + "P&R policy", + "pharmaceutical pricing and reimbursement", + "pharmaceutical pricing policy", + "pharmaceutical reimbursement and pricing policy", + "pricing and reimbursement of medicinal products" + ], + "related_ids": [ + "2773", + "3512", + "5451" + ], + "broader_ids": [ + "5921" + ], + "geo_area_code": null + }, + { + "id": "c_4254375b", + "label": "think tank", + "alt_labels": [ + "brain tank", + "think factory", + "think-tank" + ], + "related_ids": [ + "1192", + "1820", + "4704", + "8418", + "923" + ], + "broader_ids": [ + "3660" + ], + "geo_area_code": null + }, + { + "id": "c_427566b7", + "label": "strategic partnership (EU)", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4040" + ], + "geo_area_code": null + }, + { + "id": "c_42832883", + "label": "cash changeover", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3239" + ], + "geo_area_code": null + }, + { + "id": "c_433922a6", + "label": "cloud computing", + "alt_labels": [ + "ASP", + "HaaS", + "IaaS", + "PaaS", + "SaaS", + "application service provider", + "cloud service", + "hardware as a service", + "infrastructure as a service", + "platform as a service", + "software as a service" + ], + "related_ids": [ + "1428", + "c_324b44f1" + ], + "broader_ids": [ + "5862" + ], + "geo_area_code": null + }, + { + "id": "c_441fb0c4", + "label": "compliance audit", + "alt_labels": [ + "compliance auditing" + ], + "related_ids": [], + "broader_ids": [ + "4675" + ], + "geo_area_code": null + }, + { + "id": "c_4523e1dd", + "label": "food security", + "alt_labels": [ + "access to food", + "food availability", + "food insecurity", + "food utilisation", + "stability of food supply" + ], + "related_ids": [], + "broader_ids": [ + "1268" + ], + "geo_area_code": null + }, + { + "id": "c_46c93760", + "label": "food systems", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2446" + ], + "geo_area_code": null + }, + { + "id": "c_46e54685", + "label": "Adriatic Croatia", + "alt_labels": [ + "Jadranska Hrvatska" + ], + "related_ids": [], + "broader_ids": [ + "c_6acbfd25" + ], + "geo_area_code": null + }, + { + "id": "c_46f6aaeb", + "label": "policymaking", + "alt_labels": [ + "IPM", + "evidence-based policymaking", + "interactive policymaking", + "policy development", + "policy formulation" + ], + "related_ids": [ + "2451", + "2629", + "5682", + "c_59f9c651", + "c_b19d7503", + "c_cef8ea9d" + ], + "broader_ids": [ + "77" + ], + "geo_area_code": null + }, + { + "id": "c_471a61cf", + "label": "digital contract", + "alt_labels": [ + "e-contract", + "eContract", + "electronic contract", + "electronic contracting", + "online contract" + ], + "related_ids": [ + "6089" + ], + "broader_ids": [ + "164" + ], + "geo_area_code": null + }, + { + "id": "c_4768a12e", + "label": "Body of European Regulators for Electronic Communications", + "alt_labels": [ + "Agency for Support for BEREC (Body of European Regulators for Electronic Communications)", + "BEREC" + ], + "related_ids": [ + "4361" + ], + "broader_ids": [ + "5769" + ], + "geo_area_code": null + }, + { + "id": "c_47ea173d", + "label": "post-Cold War", + "alt_labels": [ + "post-Cold War era", + "post-Cold War world" + ], + "related_ids": [], + "broader_ids": [ + "99" + ], + "geo_area_code": null + }, + { + "id": "c_496cee2d", + "label": "County of Virovitica-Podravina", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "c_d4ca9a6c" + ], + "geo_area_code": null + }, + { + "id": "c_4b33c289", + "label": "Southern Croatian Littoral", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "c_6acbfd25" + ], + "geo_area_code": null + }, + { + "id": "c_4b8a95a7", + "label": "business continuity", + "alt_labels": [ + "BCM", + "BCP", + "business continuity management", + "business continuity planning" + ], + "related_ids": [ + "1156", + "c_406ad4cc" + ], + "broader_ids": [ + "c_5b447e3a" + ], + "geo_area_code": null + }, + { + "id": "c_4c441ea0", + "label": "cash-in-transit", + "alt_labels": [ + "CIT company", + "CIT industry", + "cash transport", + "cash-in-transit company", + "cash-in-transit industry", + "transport of funds and securities" + ], + "related_ids": [ + "1972", + "4540", + "5888" + ], + "broader_ids": [ + "2181" + ], + "geo_area_code": null + }, + { + "id": "c_4c7717f3", + "label": "public procurement", + "alt_labels": [], + "related_ids": [ + "403", + "c_8150867f" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "c_4cd2a8f4", + "label": "water quality", + "alt_labels": [ + "water quality monitoring" + ], + "related_ids": [ + "2530", + "5233" + ], + "broader_ids": [ + "3144" + ], + "geo_area_code": null + }, + { + "id": "c_4cd4362b", + "label": "adequacy decision (EU)", + "alt_labels": [], + "related_ids": [ + "4502", + "c_6f7bbe63" + ], + "broader_ids": [ + "5181" + ], + "geo_area_code": null + }, + { + "id": "c_4d5b6dbd", + "label": "macro-financial assistance", + "alt_labels": [ + "EU macro-financial assistance", + "MFA", + "macro-financial assistance to non-EU countries", + "macrofinancial assistance" + ], + "related_ids": [ + "1043", + "7932" + ], + "broader_ids": [ + "1851" + ], + "geo_area_code": null + }, + { + "id": "c_4e3beee2", + "label": "European Maritime and Fisheries Fund", + "alt_labels": [ + "EMFF" + ], + "related_ids": [], + "broader_ids": [ + "1052" + ], + "geo_area_code": null + }, + { + "id": "c_4e75f061", + "label": "information warfare", + "alt_labels": [ + "IW", + "cyber aggression", + "cyber attack", + "cyber terrorism", + "cyber war", + "cyber warfare", + "cyberaggression", + "cyberattack", + "cyberterrorism", + "cyberwar", + "cyberwarfare", + "information war" + ], + "related_ids": [ + "3422", + "5188", + "5922", + "c_04ae3ba8" + ], + "broader_ids": [ + "1210" + ], + "geo_area_code": null + }, + { + "id": "c_4ee83dea", + "label": "health technology", + "alt_labels": [], + "related_ids": [ + "3844", + "6929", + "c_31da5694" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "c_505c95bd", + "label": "community resilience", + "alt_labels": [ + "social resilience" + ], + "related_ids": [ + "1210", + "413", + "4452", + "c_9a62e4bf" + ], + "broader_ids": [ + "c_5b447e3a" + ], + "geo_area_code": null + }, + { + "id": "c_50620749", + "label": "European voluntary service", + "alt_labels": [ + "EVS", + "European Voluntary Service for young people" + ], + "related_ids": [ + "3330", + "6215" + ], + "broader_ids": [ + "3074" + ], + "geo_area_code": null + }, + { + "id": "c_50fb9d42", + "label": "radio frequency identification", + "alt_labels": [ + "RFID", + "RFID systems", + "Radio Frequency IDentification", + "radio frequency identification system" + ], + "related_ids": [ + "893" + ], + "broader_ids": [ + "7219" + ], + "geo_area_code": null + }, + { + "id": "c_5214cfc9", + "label": "gastronomy", + "alt_labels": [], + "related_ids": [ + "2735" + ], + "broader_ids": [ + "2278" + ], + "geo_area_code": null + }, + { + "id": "c_525f45d9", + "label": "energy poverty", + "alt_labels": [ + "energy poor", + "fuel poor", + "vulnerable energy consumer" + ], + "related_ids": [], + "broader_ids": [ + "2062" + ], + "geo_area_code": null + }, + { + "id": "c_52792cef", + "label": "Single European Sky", + "alt_labels": [ + "SES" + ], + "related_ids": [ + "2457" + ], + "broader_ids": [ + "2039" + ], + "geo_area_code": null + }, + { + "id": "c_537931f1", + "label": "sustainable finance", + "alt_labels": [], + "related_ids": [ + "5585" + ], + "broader_ids": [ + "1000" + ], + "geo_area_code": null + }, + { + "id": "c_54f7dd1f", + "label": "international humanitarian law", + "alt_labels": [ + "IHL", + "jus in bello", + "law in war" + ], + "related_ids": [ + "3074", + "584" + ], + "broader_ids": [ + "99" + ], + "geo_area_code": null + }, + { + "id": "c_558c1e00", + "label": "gender identity", + "alt_labels": [ + "transgender" + ], + "related_ids": [ + "c_ba4acdb2" + ], + "broader_ids": [ + "3913" + ], + "geo_area_code": null + }, + { + "id": "c_5673e35a", + "label": "monetary income", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3239" + ], + "geo_area_code": null + }, + { + "id": "c_57946f1a", + "label": "religious symbol", + "alt_labels": [ + "religious clothing", + "religious sign" + ], + "related_ids": [], + "broader_ids": [ + "3257" + ], + "geo_area_code": null + }, + { + "id": "c_57f3c49f", + "label": "critical infrastructure security", + "alt_labels": [ + "critical infrastructure protection" + ], + "related_ids": [ + "3453", + "c_406ad4cc" + ], + "broader_ids": [ + "4045" + ], + "geo_area_code": null + }, + { + "id": "c_58d943b0", + "label": "age-sensitive aid", + "alt_labels": [], + "related_ids": [ + "2333", + "3919", + "6230" + ], + "broader_ids": [ + "2460" + ], + "geo_area_code": null + }, + { + "id": "c_590e8349", + "label": "photonics", + "alt_labels": [], + "related_ids": [ + "4424" + ], + "broader_ids": [ + "3946" + ], + "geo_area_code": null + }, + { + "id": "c_59f9c651", + "label": "EU strategy", + "alt_labels": [ + "political agenda of the EU", + "political agenda of the European Union", + "political priority of the EU", + "political priority of the European Union", + "strategic agenda for the EU", + "strategic agenda of the European Union", + "strategy of the EU", + "strategy of the European Union" + ], + "related_ids": [ + "525", + "c_46f6aaeb", + "c_cef8ea9d", + "c_d8d35f08" + ], + "broader_ids": [ + "5442" + ], + "geo_area_code": null + }, + { + "id": "c_5a195ffd", + "label": "smart technology", + "alt_labels": [ + "Self-Monitoring Analysis And Reporting Technology", + "connected device" + ], + "related_ids": [ + "3030", + "c_b12a760a" + ], + "broader_ids": [ + "7219" + ], + "geo_area_code": null + }, + { + "id": "c_5a59a5d2", + "label": "drink consumption", + "alt_labels": [], + "related_ids": [ + "1268" + ], + "broader_ids": [ + "139" + ], + "geo_area_code": null + }, + { + "id": "c_5a7a0d82", + "label": "business model", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2469" + ], + "geo_area_code": null + }, + { + "id": "c_5b447e3a", + "label": "crisis management", + "alt_labels": [ + "emergency management", + "emergency response" + ], + "related_ids": [ + "3074", + "309", + "4074", + "4117", + "413", + "6375", + "99", + "c_2e08d60f", + "c_d6e0eb67", + "c_e548b67f", + "c_f7430876" + ], + "broader_ids": [ + "1154" + ], + "geo_area_code": null + }, + { + "id": "c_5bad9438", + "label": "Pacific Alliance", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2190" + ], + "geo_area_code": null + }, + { + "id": "c_5cec7cfa", + "label": "member of the Committee of the Regions", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5508" + ], + "geo_area_code": null + }, + { + "id": "c_5db9ac34", + "label": "substance of human origin", + "alt_labels": [ + "SoHO" + ], + "related_ids": [ + "3307", + "5292", + "5293" + ], + "broader_ids": [ + "4921" + ], + "geo_area_code": null + }, + { + "id": "c_5ea6e5c4", + "label": "open data", + "alt_labels": [ + "open government data", + "public open data" + ], + "related_ids": [ + "441" + ], + "broader_ids": [ + "2472" + ], + "geo_area_code": null + }, + { + "id": "c_5f90006e", + "label": "social enterprise", + "alt_labels": [], + "related_ids": [ + "1000", + "3082" + ], + "broader_ids": [ + "2469" + ], + "geo_area_code": null + }, + { + "id": "c_60d3928d", + "label": "patient safety", + "alt_labels": [], + "related_ids": [ + "3370", + "c_9b88f778" + ], + "broader_ids": [ + "2479" + ], + "geo_area_code": null + }, + { + "id": "c_60d786af", + "label": "novel food", + "alt_labels": [ + "novel food (EU)" + ], + "related_ids": [ + "1590", + "6569" + ], + "broader_ids": [ + "2735" + ], + "geo_area_code": null + }, + { + "id": "c_61b6fae1", + "label": "urban statistics", + "alt_labels": [ + "city statistics", + "urban audit" + ], + "related_ids": [], + "broader_ids": [ + "5433" + ], + "geo_area_code": null + }, + { + "id": "c_623f2583", + "label": "bivalve mollusc", + "alt_labels": [ + "bivalvia", + "clam", + "lamellibranch", + "mussel", + "oyster", + "scallop" + ], + "related_ids": [ + "2999" + ], + "broader_ids": [ + "1961" + ], + "geo_area_code": null + }, + { + "id": "c_63446d6e", + "label": "unaccompanied child", + "alt_labels": [ + "migrant child", + "separated child", + "unaccompanied migrant minor" + ], + "related_ids": [], + "broader_ids": [ + "1912" + ], + "geo_area_code": null + }, + { + "id": "c_63c1308e", + "label": "visit to EU institutions", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5640" + ], + "geo_area_code": null + }, + { + "id": "c_6496f5ea", + "label": "transitional justice", + "alt_labels": [ + "lustration", + "transitional personnel reform" + ], + "related_ids": [ + "584" + ], + "broader_ids": [ + "2701" + ], + "geo_area_code": null + }, + { + "id": "c_65366e84", + "label": "EU study report", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2891" + ], + "geo_area_code": null + }, + { + "id": "c_65467c72", + "label": "illegal logging", + "alt_labels": [], + "related_ids": [ + "1432", + "3169" + ], + "broader_ids": [ + "2505" + ], + "geo_area_code": null + }, + { + "id": "c_6547ccb7", + "label": "Eastern Partnership", + "alt_labels": [ + "EaP" + ], + "related_ids": [ + "5445", + "5454", + "5458", + "5652", + "5858", + "5946" + ], + "broader_ids": [ + "7932" + ], + "geo_area_code": null + }, + { + "id": "c_658ff033", + "label": "digital transformation", + "alt_labels": [ + "digital transition" + ], + "related_ids": [ + "5383", + "6191" + ], + "broader_ids": [ + "7219" + ], + "geo_area_code": null + }, + { + "id": "c_65b9cd79", + "label": "artificial neural network", + "alt_labels": [ + "ANN", + "neural network", + "neural network architecture" + ], + "related_ids": [], + "broader_ids": [ + "3030" + ], + "geo_area_code": null + }, + { + "id": "c_6659516b", + "label": "micro-credential", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1074" + ], + "geo_area_code": null + }, + { + "id": "c_667f2c16", + "label": "endocrine disruptor", + "alt_labels": [ + "EDC", + "endocrine disrupting chemicals", + "endocrine toxicant" + ], + "related_ids": [ + "5720", + "c_e5d85c14" + ], + "broader_ids": [ + "4308" + ], + "geo_area_code": null + }, + { + "id": "c_67092197", + "label": "natural language processing", + "alt_labels": [ + "NLP" + ], + "related_ids": [], + "broader_ids": [ + "3030" + ], + "geo_area_code": null + }, + { + "id": "c_6741b0ee", + "label": "musculoskeletal disorder", + "alt_labels": [ + "MSD", + "back pain", + "carpal tunnel syndrome", + "epicondylitis", + "musculoskeletal conditions", + "musculoskeletal disease", + "osteoarthritis", + "osteoporosis", + "sarcopenia", + "tendinitis" + ], + "related_ids": [ + "1280" + ], + "broader_ids": [ + "1754" + ], + "geo_area_code": null + }, + { + "id": "c_67699417", + "label": "medical tourism", + "alt_labels": [ + "health tourism", + "medical travel" + ], + "related_ids": [ + "4116", + "c_25e0bb6d" + ], + "broader_ids": [ + "4470" + ], + "geo_area_code": null + }, + { + "id": "c_681e6d24", + "label": "drone", + "alt_labels": [ + "RPA", + "UA", + "UAV", + "UCAV", + "drone aircraft", + "pilotless aircraft", + "remotely piloted aircraft", + "unmanned aerial vehicle", + "unmanned aircraft", + "unmanned combat aerial vehicle" + ], + "related_ids": [], + "broader_ids": [ + "4438" + ], + "geo_area_code": null + }, + { + "id": "c_68ddcc11", + "label": "collaborative economy", + "alt_labels": [ + "collaborative consumption", + "on-demand economy", + "peer-to-peer economy", + "sharing economy" + ], + "related_ids": [ + "3193", + "6089", + "c_39d242fc", + "c_6f7bbe63", + "c_95b02746" + ], + "broader_ids": [ + "3013" + ], + "geo_area_code": null + }, + { + "id": "c_6926daf8", + "label": "cyber-bullying", + "alt_labels": [ + "cyber harassment", + "cyber violence" + ], + "related_ids": [ + "c_324b44f1" + ], + "broader_ids": [ + "6613" + ], + "geo_area_code": null + }, + { + "id": "c_692dd83f", + "label": "augmented reality", + "alt_labels": [], + "related_ids": [ + "7219" + ], + "broader_ids": [ + "1426" + ], + "geo_area_code": null + }, + { + "id": "c_6a85e862", + "label": "high-performance computing", + "alt_labels": [ + "HPC", + "supercomputing" + ], + "related_ids": [], + "broader_ids": [ + "5188" + ], + "geo_area_code": null + }, + { + "id": "c_6acbfd25", + "label": "regions of Croatia", + "alt_labels": [ + "regions of the Republic of Croatia" + ], + "related_ids": [ + "5563" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "c_6c4d5118", + "label": "social statistics", + "alt_labels": [], + "related_ids": [ + "4256" + ], + "broader_ids": [ + "1820" + ], + "geo_area_code": null + }, + { + "id": "c_6c8b04b9", + "label": "energy audit", + "alt_labels": [ + "energy auditing" + ], + "related_ids": [ + "3134" + ], + "broader_ids": [ + "142" + ], + "geo_area_code": null + }, + { + "id": "c_6cfce4be", + "label": "economic governance (EU)", + "alt_labels": [ + "economic governance of the EU", + "economic governance of the European Union", + "fiscal governance of the EU", + "fiscal governance of the European Union" + ], + "related_ids": [ + "c_777eba81", + "c_8f89faac" + ], + "broader_ids": [ + "4602" + ], + "geo_area_code": null + }, + { + "id": "c_6dcd8600", + "label": "International Accounting Standards", + "alt_labels": [ + "IAS", + "IFRS", + "accounting standard" + ], + "related_ids": [], + "broader_ids": [ + "54" + ], + "geo_area_code": null + }, + { + "id": "c_6e3cbbca", + "label": "maritime tourism", + "alt_labels": [], + "related_ids": [ + "3043", + "c_d978c1fc" + ], + "broader_ids": [ + "4470" + ], + "geo_area_code": null + }, + { + "id": "c_6e703074", + "label": "Arab world", + "alt_labels": [ + "Arab countries", + "Arab region", + "Arab states", + "MENA", + "Middle East and North Africa region" + ], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "c_6eb6fb87", + "label": "Danube region", + "alt_labels": [], + "related_ids": [ + "c_f05a3667" + ], + "broader_ids": [ + "5848" + ], + "geo_area_code": null + }, + { + "id": "c_6f563894", + "label": "orphan drug", + "alt_labels": [ + "orphan medicinal product", + "orphan medicine" + ], + "related_ids": [ + "c_cbdf29ef" + ], + "broader_ids": [ + "3813" + ], + "geo_area_code": null + }, + { + "id": "c_6f7bbe63", + "label": "digital single market", + "alt_labels": [ + "DSM", + "digital agenda", + "e-single market", + "online single market", + "single market for digital content" + ], + "related_ids": [ + "7219", + "c_20f6ad03", + "c_32e52346", + "c_4cd4362b", + "c_68ddcc11", + "c_79e507c2", + "c_83235c0f", + "c_8bf65f26", + "c_bf1e2c81", + "c_c586f36c", + "c_c8363c09", + "c_d6e5f3ab" + ], + "broader_ids": [ + "3299" + ], + "geo_area_code": null + }, + { + "id": "c_6f9a80e0", + "label": "smart specialisation", + "alt_labels": [], + "related_ids": [ + "3656", + "5499" + ], + "broader_ids": [ + "2515" + ], + "geo_area_code": null + }, + { + "id": "c_6fb74d78", + "label": "financial stress test", + "alt_labels": [ + "stress test", + "stress testing" + ], + "related_ids": [ + "1452", + "2149", + "3151" + ], + "broader_ids": [ + "1804" + ], + "geo_area_code": null + }, + { + "id": "c_70c441cc", + "label": "transposition deficit", + "alt_labels": [ + "deadline for transposition", + "implementation deficit", + "late transposition", + "time limit for transposition" + ], + "related_ids": [ + "449", + "c_ccc9fea1" + ], + "broader_ids": [ + "5739" + ], + "geo_area_code": null + }, + { + "id": "c_715c08c0", + "label": "3D printing", + "alt_labels": [ + "3DP", + "additive layer manufacturing", + "additive manufacturing", + "three-dimensional printing" + ], + "related_ids": [ + "1332", + "7219", + "c_b12a760a" + ], + "broader_ids": [ + "1429" + ], + "geo_area_code": null + }, + { + "id": "c_71b063b1", + "label": "national competent authority", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "77" + ], + "geo_area_code": null + }, + { + "id": "c_71f767f4", + "label": "web analytics", + "alt_labels": [ + "app analytics" + ], + "related_ids": [], + "broader_ids": [ + "4488" + ], + "geo_area_code": null + }, + { + "id": "c_749f2ce9", + "label": "green economy", + "alt_labels": [ + "ecological economy", + "ecologically sustainable growth", + "environmentally sustainable growth", + "green economy strategy", + "green economy transition", + "green growth" + ], + "related_ids": [ + "310", + "3638", + "4881", + "5585", + "5675", + "637", + "c_1138d9d2", + "c_163e1e96", + "c_86d7db98", + "c_8de0648a" + ], + "broader_ids": [ + "2470" + ], + "geo_area_code": null + }, + { + "id": "c_74b0823c", + "label": "cognitive skills", + "alt_labels": [ + "listening skills", + "reading skills", + "skills development", + "speaking skills", + "time-management" + ], + "related_ids": [ + "1074" + ], + "broader_ids": [ + "668" + ], + "geo_area_code": null + }, + { + "id": "c_7546272f", + "label": "identity theft", + "alt_labels": [ + "identity fraud", + "phishing", + "spoofing" + ], + "related_ids": [ + "3027" + ], + "broader_ids": [ + "3943" + ], + "geo_area_code": null + }, + { + "id": "c_764bcd4e", + "label": "Arctic Council", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2188" + ], + "geo_area_code": null + }, + { + "id": "c_777eba81", + "label": "Treaty on Stability, Coordination and Governance", + "alt_labels": [ + " Coordination and Governance in the EMU", + " Coordination and Governance in the Economic and Monetary Union", + "TSCG", + "Treaty on Stability", + "fiscal compact (EU)" + ], + "related_ids": [ + "5555", + "5590", + "6151", + "c_6cfce4be" + ], + "broader_ids": [ + "4479" + ], + "geo_area_code": null + }, + { + "id": "c_789ead37", + "label": "world", + "alt_labels": [], + "related_ids": [ + "2554", + "435265", + "7362" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "c_791e9f27", + "label": "Occitanie", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1088" + ], + "geo_area_code": null + }, + { + "id": "c_7951978e", + "label": "drug residue", + "alt_labels": [ + "MRL", + "maximum residue level", + "maximum residue limit", + "veterinary drug residue" + ], + "related_ids": [ + "2735" + ], + "broader_ids": [ + "1594" + ], + "geo_area_code": null + }, + { + "id": "c_79e507c2", + "label": "financial technology", + "alt_labels": [ + "FinTech" + ], + "related_ids": [ + "8469", + "c_6f7bbe63" + ], + "broader_ids": [ + "7219" + ], + "geo_area_code": null + }, + { + "id": "c_7a080afd", + "label": "County of Istra", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "c_46e54685" + ], + "geo_area_code": null + }, + { + "id": "c_7a168de0", + "label": "spatial data", + "alt_labels": [ + "geospatial data", + "location data" + ], + "related_ids": [ + "1148" + ], + "broader_ids": [ + "4488" + ], + "geo_area_code": null + }, + { + "id": "c_7a2f7820", + "label": "personal mobility device", + "alt_labels": [ + "PLEV", + "electric rideable", + "electric scooter", + "personal light electric vehicle", + "personal transporter", + "powered transporter", + "push scooter", + "skateboard" + ], + "related_ids": [], + "broader_ids": [ + "4533" + ], + "geo_area_code": null + }, + { + "id": "c_7afb6cd4", + "label": "common law", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4222" + ], + "geo_area_code": null + }, + { + "id": "c_7bb1a021", + "label": "anonymisation", + "alt_labels": [ + "de-anonymisation", + "de-identification", + "pseudonymisation" + ], + "related_ids": [ + "2828" + ], + "broader_ids": [ + "5595" + ], + "geo_area_code": null + }, + { + "id": "c_7bc27da2", + "label": "research infrastructure", + "alt_labels": [], + "related_ids": [ + "5578" + ], + "broader_ids": [ + "2478" + ], + "geo_area_code": null + }, + { + "id": "c_7bf10a38", + "label": "International Renewable Energy Agency", + "alt_labels": [ + "IRENA" + ], + "related_ids": [ + "754" + ], + "broader_ids": [ + "2188" + ], + "geo_area_code": null + }, + { + "id": "c_7cbc24fd", + "label": "post-war period", + "alt_labels": [ + "post war", + "postwar" + ], + "related_ids": [ + "2933", + "5460" + ], + "broader_ids": [ + "99" + ], + "geo_area_code": null + }, + { + "id": "c_7d7608fa", + "label": "South China Sea question", + "alt_labels": [ + "South China Sea dispute" + ], + "related_ids": [ + "1355", + "1767", + "2368", + "4375", + "4707", + "5049" + ], + "broader_ids": [ + "3476" + ], + "geo_area_code": null + }, + { + "id": "c_7d7c383b", + "label": "County of \u0160ibenik-Knin", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "c_46e54685" + ], + "geo_area_code": null + }, + { + "id": "c_7dda56e2", + "label": "antimicrobial resistance", + "alt_labels": [ + "AMR", + "anti-microbial drug resistance", + "antibiotic resistance", + "resistance to antibiotics" + ], + "related_ids": [ + "1759", + "1997" + ], + "broader_ids": [ + "4455" + ], + "geo_area_code": null + }, + { + "id": "c_7f2d2214", + "label": "UCITS fund", + "alt_labels": [ + "UCITS", + "undertaking for collective investment in transferable securities" + ], + "related_ids": [], + "broader_ids": [ + "4195" + ], + "geo_area_code": null + }, + { + "id": "c_804a9afe", + "label": "industrial operating licence", + "alt_labels": [ + "industrial business licence" + ], + "related_ids": [ + "3782", + "5350" + ], + "broader_ids": [ + "2507" + ], + "geo_area_code": null + }, + { + "id": "c_8051840b", + "label": "Indo-Pacific region", + "alt_labels": [], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "c_814bb9e4", + "label": "coronavirus disease", + "alt_labels": [ + "COVID-19", + "MERS-CoV", + "Middle-East Respiratory Syndrome", + "SARS", + "SARS-CoV-1", + "SARS-CoV-2", + "Severe Acute Respiratory Syndrome", + "coronavirus disease 2019", + "coronavirus pandemic 2019-2020" + ], + "related_ids": [ + "1854", + "3371", + "7983", + "837", + "c_abfaf2ea" + ], + "broader_ids": [ + "c_ece0a719" + ], + "geo_area_code": null + }, + { + "id": "c_8150867f", + "label": "agreement on government procurement", + "alt_labels": [ + "AGP", + "international public procurement" + ], + "related_ids": [ + "1807", + "c_4c7717f3" + ], + "broader_ids": [ + "1567" + ], + "geo_area_code": null + }, + { + "id": "c_82778b62", + "label": "County of Vara\u017edin", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "c_d4ca9a6c" + ], + "geo_area_code": null + }, + { + "id": "c_827bea7d", + "label": "collective memory", + "alt_labels": [ + "common memory", + "cultural memory", + "historical memory", + "national memory", + "public memory", + "social memory" + ], + "related_ids": [ + "1245", + "2278", + "5322" + ], + "broader_ids": [ + "317" + ], + "geo_area_code": null + }, + { + "id": "c_82916123", + "label": "ecological\u00a0footprint", + "alt_labels": [ + "carbon footprint" + ], + "related_ids": [ + "3551" + ], + "broader_ids": [ + "919" + ], + "geo_area_code": null + }, + { + "id": "c_83235c0f", + "label": "5G", + "alt_labels": [ + "5-G", + "fifth generation", + "fifth generation mobile technologies" + ], + "related_ids": [ + "c_6f7bbe63" + ], + "broader_ids": [ + "c_25fe24f4" + ], + "geo_area_code": null + }, + { + "id": "c_8331ae25", + "label": "Normandie", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1088" + ], + "geo_area_code": null + }, + { + "id": "c_834b57c4", + "label": "shadow banking", + "alt_labels": [ + "non-bank credit activity", + "shadow banking system", + "shadow financial system" + ], + "related_ids": [ + "4356" + ], + "broader_ids": [ + "1804" + ], + "geo_area_code": null + }, + { + "id": "c_838aa925", + "label": "nature-based solution", + "alt_labels": [ + "NBS" + ], + "related_ids": [ + "5585" + ], + "broader_ids": [ + "2470" + ], + "geo_area_code": null + }, + { + "id": "c_847fc9f2", + "label": "interreligious dialogue", + "alt_labels": [ + "inter-faith dialogue", + "inter-religious dialogue", + "interfaith dialogue" + ], + "related_ids": [ + "1628", + "3486" + ], + "broader_ids": [ + "3257" + ], + "geo_area_code": null + }, + { + "id": "c_859ae4e1", + "label": "financial literacy", + "alt_labels": [], + "related_ids": [ + "1074" + ], + "broader_ids": [ + "1000" + ], + "geo_area_code": null + }, + { + "id": "c_86d7db98", + "label": "energy transition", + "alt_labels": [], + "related_ids": [ + "754", + "c_749f2ce9" + ], + "broader_ids": [ + "2498" + ], + "geo_area_code": null + }, + { + "id": "c_8702d5f7", + "label": "sustainable fisheries", + "alt_labels": [ + "fishing sustainability", + "sustainable fisheries partnership", + "sustainable fishing", + "sustainable seafood" + ], + "related_ids": [ + "5585" + ], + "broader_ids": [ + "2476" + ], + "geo_area_code": null + }, + { + "id": "c_871b5612", + "label": "staff regulations (EU)", + "alt_labels": [ + "personnel regulations (EU)", + "staff regulations for EU officials", + "staff regulations for officials of the European Union" + ], + "related_ids": [ + "4271", + "4273" + ], + "broader_ids": [ + "5130" + ], + "geo_area_code": null + }, + { + "id": "c_87617344", + "label": "EU energy label", + "alt_labels": [], + "related_ids": [ + "5696", + "c_18802d13" + ], + "broader_ids": [ + "6700" + ], + "geo_area_code": null + }, + { + "id": "c_87ccc7c3", + "label": "economics profession", + "alt_labels": [ + "business economist", + "economics analyst", + "economics science researcher", + "economist" + ], + "related_ids": [ + "1800", + "2616", + "3933" + ], + "broader_ids": [ + "637" + ], + "geo_area_code": null + }, + { + "id": "c_896e199b", + "label": "credit rating", + "alt_labels": [ + "CRA", + "credit agency", + "credit assessment", + "credit rating agency", + "international rating agency", + "mercantile agency" + ], + "related_ids": [ + "1804", + "424", + "c_8f89faac" + ], + "broader_ids": [ + "285" + ], + "geo_area_code": null + }, + { + "id": "c_8a658bb0", + "label": "European Agency for the Operational Management of Large-Scale IT Systems in the Area of Freedom, Security and Justice", + "alt_labels": [ + "EU Agency for Large-Scale IT Systems", + "eu-LISA" + ], + "related_ids": [ + "5188", + "5922", + "6222" + ], + "broader_ids": [ + "5769" + ], + "geo_area_code": null + }, + { + "id": "c_8a6f744c", + "label": "withdrawal from the EU", + "alt_labels": [ + "Brexit", + "exit from the European Union", + "leaving the EU", + "right of withdrawal from the EU", + "right of withdrawal from the European Union", + "withdrawal from the European Union", + "withdrawal of a Member State from the EU", + "withdrawing EU Member State", + "withdrawing EU country" + ], + "related_ids": [], + "broader_ids": [ + "4057" + ], + "geo_area_code": null + }, + { + "id": "c_8b0ac3e2", + "label": "EU direct payments", + "alt_labels": [ + "direct payments system", + "direct payments to farmers" + ], + "related_ids": [ + "3679" + ], + "broader_ids": [ + "2443" + ], + "geo_area_code": null + }, + { + "id": "c_8b2bae70", + "label": "sea level rise", + "alt_labels": [], + "related_ids": [ + "5482" + ], + "broader_ids": [ + "371" + ], + "geo_area_code": null + }, + { + "id": "c_8b887373", + "label": "conditionality mechanism", + "alt_labels": [ + "conditionality regulation\n" + ], + "related_ids": [ + "5622" + ], + "broader_ids": [ + "5561" + ], + "geo_area_code": null + }, + { + "id": "c_8bf65f26", + "label": "digital economy", + "alt_labels": [], + "related_ids": [ + "c_6f7bbe63", + "c_d6e5f3ab" + ], + "broader_ids": [ + "3013" + ], + "geo_area_code": null + }, + { + "id": "c_8c5cfba6", + "label": "quantum technology", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5188" + ], + "geo_area_code": null + }, + { + "id": "c_8c634c9b", + "label": "EU reference laboratory", + "alt_labels": [ + "EURL", + "European Union reference laboratory" + ], + "related_ids": [ + "3660", + "5877", + "6322", + "6569", + "867", + "c_406ad4cc" + ], + "broader_ids": [ + "192" + ], + "geo_area_code": null + }, + { + "id": "c_8ce6dcec", + "label": "mobile application", + "alt_labels": [ + "mobile app" + ], + "related_ids": [ + "6776" + ], + "broader_ids": [ + "1696" + ], + "geo_area_code": null + }, + { + "id": "c_8d31aed6", + "label": "integrated maritime policy", + "alt_labels": [ + "EU blue growth strategy", + "EU maritime policy", + "IMP" + ], + "related_ids": [ + "2455", + "4522", + "5794", + "c_d978c1fc" + ], + "broader_ids": [ + "c_59f9c651" + ], + "geo_area_code": null + }, + { + "id": "c_8de0648a", + "label": "green marketing", + "alt_labels": [ + "environmental auditing", + "sustainable marketing" + ], + "related_ids": [ + "5585", + "c_749f2ce9" + ], + "broader_ids": [ + "13" + ], + "geo_area_code": null + }, + { + "id": "c_8f1cd55b", + "label": "decentralised cooperation", + "alt_labels": [ + "decentralized cooperation", + "local government external action", + "municipal international cooperation" + ], + "related_ids": [ + "2460", + "2465", + "6034" + ], + "broader_ids": [ + "3489" + ], + "geo_area_code": null + }, + { + "id": "c_8f56da2a", + "label": "digital distribution", + "alt_labels": [ + "content distributed online" + ], + "related_ids": [ + "1364", + "c_d6e5f3ab" + ], + "broader_ids": [ + "6089" + ], + "geo_area_code": null + }, + { + "id": "c_8f89faac", + "label": "financial supervision", + "alt_labels": [ + "ESFS", + "EU Supervisory Framework", + "European Supervisory Framework", + "European System of Financial Supervision", + "financial market supervision", + "financial surveillance", + "prudential control", + "prudential supervision", + "supervision of financial institutions" + ], + "related_ids": [ + "3251", + "c_047e5912", + "c_6cfce4be", + "c_896e199b", + "c_96124aaf", + "c_c565cff5", + "c_f5ed5adb" + ], + "broader_ids": [ + "1804" + ], + "geo_area_code": null + }, + { + "id": "c_9055e9e1", + "label": "underground ecosystem", + "alt_labels": [ + "karst ecosystem" + ], + "related_ids": [], + "broader_ids": [ + "664" + ], + "geo_area_code": null + }, + { + "id": "c_90ad7755", + "label": "Unified Patent Court", + "alt_labels": [ + "UPC" + ], + "related_ids": [ + "5043" + ], + "broader_ids": [ + "2187" + ], + "geo_area_code": null + }, + { + "id": "c_90dfa6c7", + "label": "cash and voucher assistance", + "alt_labels": [ + "CVA", + "cash transfers and vouchers" + ], + "related_ids": [ + "3074" + ], + "broader_ids": [ + "3003" + ], + "geo_area_code": null + }, + { + "id": "c_9104c45f", + "label": "small arms", + "alt_labels": [ + "SALW", + "light weapons", + "small arms and light weapons" + ], + "related_ids": [], + "broader_ids": [ + "2647" + ], + "geo_area_code": null + }, + { + "id": "c_93670e37", + "label": "karst area", + "alt_labels": [ + "karst" + ], + "related_ids": [], + "broader_ids": [ + "3146" + ], + "geo_area_code": null + }, + { + "id": "c_959c23de", + "label": "state-building", + "alt_labels": [ + "nation-building" + ], + "related_ids": [ + "1453", + "883", + "c_c5f984c3" + ], + "broader_ids": [ + "6722" + ], + "geo_area_code": null + }, + { + "id": "c_95b02746", + "label": "online platform worker", + "alt_labels": [ + "clic worker", + "crowdworker", + "online worker" + ], + "related_ids": [ + "c_68ddcc11" + ], + "broader_ids": [ + "1737" + ], + "geo_area_code": null + }, + { + "id": "c_95f58142", + "label": "digital infrastructure supply", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3377" + ], + "geo_area_code": null + }, + { + "id": "c_96124aaf", + "label": "European Securities and Markets Authority", + "alt_labels": [ + "ESMA" + ], + "related_ids": [ + "1804", + "c_8f89faac" + ], + "broader_ids": [ + "5769" + ], + "geo_area_code": null + }, + { + "id": "c_964c9649", + "label": "BRICS countries", + "alt_labels": [ + " China and South Africa", + " India", + " Russia", + "BRICS", + "Brazil" + ], + "related_ids": [ + "3080" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "c_96af33df", + "label": "hate speech", + "alt_labels": [ + "cyberhate", + "hate discourse", + "online hate speech" + ], + "related_ids": [], + "broader_ids": [ + "3908" + ], + "geo_area_code": null + }, + { + "id": "c_977a9fe5", + "label": "circular migration", + "alt_labels": [ + "circular migrant" + ], + "related_ids": [], + "broader_ids": [ + "1909" + ], + "geo_area_code": null + }, + { + "id": "c_9829e6b7", + "label": "policy analysis", + "alt_labels": [], + "related_ids": [ + "c_0b6b83e1" + ], + "broader_ids": [ + "77" + ], + "geo_area_code": null + }, + { + "id": "c_98d1408a", + "label": "water policy", + "alt_labels": [], + "related_ids": [ + "597" + ], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "c_99a79cea", + "label": "open science", + "alt_labels": [ + "open knowledge", + "open research" + ], + "related_ids": [ + "2896" + ], + "broader_ids": [ + "2478" + ], + "geo_area_code": null + }, + { + "id": "c_99e6dc30", + "label": "Cyprus question", + "alt_labels": [ + "Cyprus conflict", + "Cyprus dispute" + ], + "related_ids": [ + "4580", + "5989" + ], + "broader_ids": [ + "3476" + ], + "geo_area_code": null + }, + { + "id": "c_9a1bc51d", + "label": "European Semester", + "alt_labels": [ + "European Semester for economic policy coordination" + ], + "related_ids": [ + "202", + "2448", + "2518", + "5675" + ], + "broader_ids": [ + "5555" + ], + "geo_area_code": null + }, + { + "id": "c_9a27a573", + "label": "marine pilotage", + "alt_labels": [ + "coastal pilotage", + "deep sea pilotage", + "harbour pilotage", + "shore-based pilotage" + ], + "related_ids": [ + "2041" + ], + "broader_ids": [ + "5889" + ], + "geo_area_code": null + }, + { + "id": "c_9a62e4bf", + "label": "psychological resilience", + "alt_labels": [], + "related_ids": [ + "c_505c95bd" + ], + "broader_ids": [ + "2856" + ], + "geo_area_code": null + }, + { + "id": "c_9a9e5627", + "label": "monitoring report", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2891" + ], + "geo_area_code": null + }, + { + "id": "c_9b88f778", + "label": "hospital infection", + "alt_labels": [ + "health care-associated infection", + "hospital-acquired infection", + "nosocomial infection" + ], + "related_ids": [ + "c_60d3928d" + ], + "broader_ids": [ + "1754" + ], + "geo_area_code": null + }, + { + "id": "c_9d09fbc3", + "label": "terrorism financing\u00a0", + "alt_labels": [ + "financing of terrorism", + "\u00a0terrorist funding" + ], + "related_ids": [ + "1708" + ], + "broader_ids": [ + "4452" + ], + "geo_area_code": null + }, + { + "id": "c_9eb9cbaa", + "label": "posted worker", + "alt_labels": [ + "posting of workers" + ], + "related_ids": [ + "2602", + "3359", + "3540" + ], + "broader_ids": [ + "1737" + ], + "geo_area_code": null + }, + { + "id": "c_9eea2203", + "label": "political communication", + "alt_labels": [], + "related_ids": [ + "1282", + "2600" + ], + "broader_ids": [ + "4704" + ], + "geo_area_code": null + }, + { + "id": "c_9f458445", + "label": "hybrid warfare", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1210" + ], + "geo_area_code": null + }, + { + "id": "c_9fe65404", + "label": "International Anti-Corruption Academy", + "alt_labels": [ + "IACA" + ], + "related_ids": [ + "245" + ], + "broader_ids": [ + "2188" + ], + "geo_area_code": null + }, + { + "id": "c_9ffd3927", + "label": "2G", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "c_25fe24f4" + ], + "geo_area_code": null + }, + { + "id": "c_9ffe3bdc", + "label": "hedge funds", + "alt_labels": [], + "related_ids": [ + "5153" + ], + "broader_ids": [ + "4195" + ], + "geo_area_code": null + }, + { + "id": "c_a02c420c", + "label": "passenger rights", + "alt_labels": [ + "air passenger rights", + "maritime passenger rights", + "rail passenger rights", + "road passenger rights" + ], + "related_ids": [ + "2836", + "4511" + ], + "broader_ids": [ + "555" + ], + "geo_area_code": null + }, + { + "id": "c_a02d5941", + "label": "G20", + "alt_labels": [ + "G-20", + "Group of 20", + "Group of Twenty" + ], + "related_ids": [], + "broader_ids": [ + "2188" + ], + "geo_area_code": null + }, + { + "id": "c_a1497409", + "label": "gender-sensitive aid", + "alt_labels": [ + "gender in humanitarian assistance", + "gender-sensitive assistance" + ], + "related_ids": [ + "3913", + "585", + "81" + ], + "broader_ids": [ + "2460" + ], + "geo_area_code": null + }, + { + "id": "c_a17a2156", + "label": "semantic web", + "alt_labels": [ + "LOD", + "linked data", + "linked open data", + "web of data" + ], + "related_ids": [ + "c_40f54e0c" + ], + "broader_ids": [ + "6088" + ], + "geo_area_code": null + }, + { + "id": "c_a18525ab", + "label": "financial derivative", + "alt_labels": [ + "derivative financial instrument", + "derivatives market" + ], + "related_ids": [], + "broader_ids": [ + "1459" + ], + "geo_area_code": null + }, + { + "id": "c_a2a3268e", + "label": "refugee facility", + "alt_labels": [ + "refugee camp" + ], + "related_ids": [], + "broader_ids": [ + "2986" + ], + "geo_area_code": null + }, + { + "id": "c_a2e1def8", + "label": "amphibian", + "alt_labels": [ + "frog", + "salamander", + "toad" + ], + "related_ids": [], + "broader_ids": [ + "972" + ], + "geo_area_code": null + }, + { + "id": "c_a3b85311", + "label": "European Systemic Risk Board", + "alt_labels": [ + "ESRB" + ], + "related_ids": [], + "broader_ids": [ + "c_8f89faac" + ], + "geo_area_code": null + }, + { + "id": "c_a3ed5037", + "label": "femicide", + "alt_labels": [], + "related_ids": [ + "c_e0543dcb" + ], + "broader_ids": [ + "1251" + ], + "geo_area_code": null + }, + { + "id": "c_a4094c9b", + "label": "Paris Agreement on Climate Change", + "alt_labels": [ + "Paris Agreement" + ], + "related_ids": [ + "201" + ], + "broader_ids": [ + "434056" + ], + "geo_area_code": null + }, + { + "id": "c_a4590937", + "label": "extended producer responsibility", + "alt_labels": [ + "EPR", + "extended producer responsibility scheme", + "producer responsibility scheme" + ], + "related_ids": [ + "3635", + "c_1138d9d2" + ], + "broader_ids": [ + "1158" + ], + "geo_area_code": null + }, + { + "id": "c_a5c15adc", + "label": "County of Vukovar-Srije", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "c_d4ca9a6c" + ], + "geo_area_code": null + }, + { + "id": "c_a62dbeba", + "label": "public goods", + "alt_labels": [ + "collective goods", + "public goods and services" + ], + "related_ids": [ + "2443", + "2812" + ], + "broader_ids": [ + "3193" + ], + "geo_area_code": null + }, + { + "id": "c_a6b5bad0", + "label": "Adriatic and Ionian region", + "alt_labels": [], + "related_ids": [ + "1879", + "5221", + "c_f05a3667" + ], + "broader_ids": [ + "5848" + ], + "geo_area_code": null + }, + { + "id": "c_a935cf3f", + "label": "earth observation", + "alt_labels": [], + "related_ids": [ + "4426", + "833" + ], + "broader_ids": [ + "3952" + ], + "geo_area_code": null + }, + { + "id": "c_a9a17fe5", + "label": "labour economics", + "alt_labels": [ + "labor economics", + "labour market theory" + ], + "related_ids": [ + "3933", + "5675" + ], + "broader_ids": [ + "1802" + ], + "geo_area_code": null + }, + { + "id": "c_aa454f82", + "label": "Fund for European Aid to the Most Deprived", + "alt_labels": [ + "FEAD" + ], + "related_ids": [ + "1469", + "2281", + "826" + ], + "broader_ids": [ + "1052" + ], + "geo_area_code": null + }, + { + "id": "c_aaa778de", + "label": "deindustrialisation", + "alt_labels": [ + "de-industrialization", + "deindustrialization" + ], + "related_ids": [], + "broader_ids": [ + "2507" + ], + "geo_area_code": null + }, + { + "id": "c_aaa8331c", + "label": "falsified medicine", + "alt_labels": [ + "falsified medicinal product" + ], + "related_ids": [ + "2836", + "893" + ], + "broader_ids": [ + "3813" + ], + "geo_area_code": null + }, + { + "id": "c_ab46334d", + "label": "value chain", + "alt_labels": [ + "global value chain", + "value creation" + ], + "related_ids": [ + "2724" + ], + "broader_ids": [ + "2481" + ], + "geo_area_code": null + }, + { + "id": "c_ab84e157", + "label": "blockchain", + "alt_labels": [], + "related_ids": [ + "1804", + "3248", + "c_2ffe4574" + ], + "broader_ids": [ + "7219" + ], + "geo_area_code": null + }, + { + "id": "c_abfaf2ea", + "label": "disease surveillance", + "alt_labels": [], + "related_ids": [ + "3371", + "c_814bb9e4" + ], + "broader_ids": [ + "5764" + ], + "geo_area_code": null + }, + { + "id": "c_acf7832d", + "label": "Cariforum", + "alt_labels": [ + " Caribbean and Pacific States", + "Caribbean Forum", + "Caribbean Forum of African", + "Cariforum States", + "Cariforum countries" + ], + "related_ids": [ + "314", + "5083" + ], + "broader_ids": [ + "2170" + ], + "geo_area_code": null + }, + { + "id": "c_ad1c90d4", + "label": "4G", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "c_25fe24f4" + ], + "geo_area_code": null + }, + { + "id": "c_ad50a3c0", + "label": "persecution", + "alt_labels": [], + "related_ids": [ + "538" + ], + "broader_ids": [ + "564" + ], + "geo_area_code": null + }, + { + "id": "c_adf49204", + "label": "European Public Prosecutor's Office", + "alt_labels": [ + "EPPO" + ], + "related_ids": [ + "5550" + ], + "broader_ids": [ + "2163" + ], + "geo_area_code": null + }, + { + "id": "c_af37e15d", + "label": "humanitarian crisis", + "alt_labels": [ + "humanitarian emergency", + "humanitarian situation" + ], + "related_ids": [], + "broader_ids": [ + "3074" + ], + "geo_area_code": null + }, + { + "id": "c_af502da0", + "label": "EU alert system", + "alt_labels": [ + "EU rapid alert system" + ], + "related_ids": [ + "2836" + ], + "broader_ids": [ + "4045" + ], + "geo_area_code": null + }, + { + "id": "c_b007a1dc", + "label": "civic engagement", + "alt_labels": [ + "civic participation" + ], + "related_ids": [], + "broader_ids": [ + "8423" + ], + "geo_area_code": null + }, + { + "id": "c_b0536152", + "label": "economic migration", + "alt_labels": [ + "economic migrant" + ], + "related_ids": [ + "5146", + "899" + ], + "broader_ids": [ + "1909" + ], + "geo_area_code": null + }, + { + "id": "c_b0c14f45", + "label": "resettlement of persons", + "alt_labels": [ + "population relocation", + "population resettlement", + "relocation of people", + "relocation of persons", + "resettlement of people" + ], + "related_ids": [ + "2867", + "2986", + "5597" + ], + "broader_ids": [ + "2509" + ], + "geo_area_code": null + }, + { + "id": "c_b0d2dfd4", + "label": "quinoa", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5360" + ], + "geo_area_code": null + }, + { + "id": "c_b12a760a", + "label": "Internet of Things", + "alt_labels": [ + "IoT" + ], + "related_ids": [ + "5684", + "6140", + "6851", + "c_31da5694", + "c_5a195ffd", + "c_715c08c0", + "c_dea47e63" + ], + "broader_ids": [ + "4361" + ], + "geo_area_code": null + }, + { + "id": "c_b18ab65c", + "label": "supply chain", + "alt_labels": [ + "supply chain management" + ], + "related_ids": [], + "broader_ids": [ + "2481" + ], + "geo_area_code": null + }, + { + "id": "c_b19d7503", + "label": "gender mainstreaming", + "alt_labels": [], + "related_ids": [ + "c_46f6aaeb" + ], + "broader_ids": [ + "3913" + ], + "geo_area_code": null + }, + { + "id": "c_b1ac7db6", + "label": "web development", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "6088" + ], + "geo_area_code": null + }, + { + "id": "c_b2c019c8", + "label": "small state", + "alt_labels": [ + "microstate", + "small countries", + "small nations", + "small states and territories" + ], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "c_b35395c8", + "label": "knowledge transfer", + "alt_labels": [ + "KTE", + "knowledge sharing" + ], + "related_ids": [ + "4496" + ], + "broader_ids": [ + "2478" + ], + "geo_area_code": null + }, + { + "id": "c_b3d1a308", + "label": "performance audit", + "alt_labels": [ + "VFM", + "performance auditing", + "sound financial management audit", + "value for money audit", + "value-for-money audit" + ], + "related_ids": [], + "broader_ids": [ + "4675" + ], + "geo_area_code": null + }, + { + "id": "c_b3e9d826", + "label": "light-duty vehicle", + "alt_labels": [ + "delivery car", + "light lorry", + "light truck", + "light van", + "utility car" + ], + "related_ids": [], + "broader_ids": [ + "2233" + ], + "geo_area_code": null + }, + { + "id": "c_b46c2b62", + "label": "sustainable product", + "alt_labels": [ + "eco-friendly product", + "environmentally friendly product", + "green brand", + "green product" + ], + "related_ids": [ + "5696" + ], + "broader_ids": [ + "5585" + ], + "geo_area_code": null + }, + { + "id": "c_b499ede2", + "label": "market abuse", + "alt_labels": [ + "MAD", + "MAR", + "abuse of market", + "financial market manipulation", + "market abuse directive", + "market abuse regulation" + ], + "related_ids": [ + "1804", + "560" + ], + "broader_ids": [ + "574" + ], + "geo_area_code": null + }, + { + "id": "c_b4cffbee", + "label": "County of Primorje-Gorski Kotar", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "c_46e54685" + ], + "geo_area_code": null + }, + { + "id": "c_b54dc55a", + "label": "European Structural and Investment Funds", + "alt_labels": [ + "ESI Funds", + "ESIF", + "ESIF financial instruments" + ], + "related_ids": [ + "1490" + ], + "broader_ids": [ + "1052" + ], + "geo_area_code": null + }, + { + "id": "c_b605a1d4", + "label": "UN Human Rights Council", + "alt_labels": [ + "HRC", + "Human Rights Council", + "UN Commission on Human Rights", + "UN Human Rights Commission", + "UNCHR", + "United Nations Commission on Human Rights", + "United Nations Human Rights Commission", + "United Nations Human Rights Council" + ], + "related_ids": [ + "584" + ], + "broader_ids": [ + "8384" + ], + "geo_area_code": null + }, + { + "id": "c_b680e7cc", + "label": "strategic intelligence", + "alt_labels": [ + "intelligence", + "tactical intelligence" + ], + "related_ids": [], + "broader_ids": [ + "4486" + ], + "geo_area_code": null + }, + { + "id": "c_b6ebf216", + "label": "strategic autonomy", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3228" + ], + "geo_area_code": null + }, + { + "id": "c_b71ca500", + "label": "public sanitation", + "alt_labels": [ + "canalisation", + "sewerage system" + ], + "related_ids": [ + "1158", + "4485" + ], + "broader_ids": [ + "3885" + ], + "geo_area_code": null + }, + { + "id": "c_b8e8e06e", + "label": "sign language", + "alt_labels": [], + "related_ids": [ + "3349", + "5636", + "682" + ], + "broader_ids": [ + "1580" + ], + "geo_area_code": null + }, + { + "id": "c_b9c60592", + "label": "rare earth", + "alt_labels": [ + "REE", + "lanthanide", + "rare earth element", + "rare earth metal", + "scandium", + "yttrium" + ], + "related_ids": [], + "broader_ids": [ + "3809" + ], + "geo_area_code": null + }, + { + "id": "c_ba4acdb2", + "label": "gender reassignment", + "alt_labels": [ + "GRS", + "gender reassignment surgery", + "gender-confirming treatment", + "sex change", + "transsexual" + ], + "related_ids": [ + "5970", + "c_558c1e00" + ], + "broader_ids": [ + "538" + ], + "geo_area_code": null + }, + { + "id": "c_bb1a60eb", + "label": "environmental cost", + "alt_labels": [ + "EPE", + "environmental appraisal cost", + "environmental prevention cost", + "environmental protection cost", + "environmental protection expenditure" + ], + "related_ids": [ + "371", + "5571" + ], + "broader_ids": [ + "2470" + ], + "geo_area_code": null + }, + { + "id": "c_bbc13d07", + "label": "expert group (EU)", + "alt_labels": [ + "Commission expert group" + ], + "related_ids": [], + "broader_ids": [ + "5769" + ], + "geo_area_code": null + }, + { + "id": "c_bbd07d89", + "label": "Hauts-de-France", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1088" + ], + "geo_area_code": null + }, + { + "id": "c_be0de7b7", + "label": "radiation exposure", + "alt_labels": [ + "exposure to radiation", + "radiation dose", + "radioresistance", + "radiosensitivity" + ], + "related_ids": [ + "1840", + "2539", + "921" + ], + "broader_ids": [ + "2090" + ], + "geo_area_code": null + }, + { + "id": "c_be8fda35", + "label": "Nouvelle-Aquitaine", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1088" + ], + "geo_area_code": null + }, + { + "id": "c_bf1e2c81", + "label": "big data", + "alt_labels": [ + "big data analytics", + "big data technology", + "large data set", + "mass data" + ], + "related_ids": [ + "2629", + "c_6f7bbe63", + "c_c586f36c" + ], + "broader_ids": [ + "4488" + ], + "geo_area_code": null + }, + { + "id": "c_c10e7d2a", + "label": "European Interoperability Framework", + "alt_labels": [ + "EIF" + ], + "related_ids": [ + "4486", + "4488" + ], + "broader_ids": [ + "5684" + ], + "geo_area_code": null + }, + { + "id": "c_c2e62947", + "label": "business plan", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2469" + ], + "geo_area_code": null + }, + { + "id": "c_c3185a19", + "label": "freezing of assets", + "alt_labels": [ + "asset freeze", + "asset freezing" + ], + "related_ids": [ + "3870", + "c_1c478aa5" + ], + "broader_ids": [ + "573" + ], + "geo_area_code": null + }, + { + "id": "c_c385cfb4", + "label": "EU acceding countries", + "alt_labels": [], + "related_ids": [], + "broader_ids": [], + "geo_area_code": null + }, + { + "id": "c_c44f1704", + "label": "Grand Est", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1088" + ], + "geo_area_code": null + }, + { + "id": "c_c4afa011", + "label": "healthcare industry", + "alt_labels": [], + "related_ids": [ + "4050", + "4116", + "7355" + ], + "broader_ids": [ + "2479" + ], + "geo_area_code": null + }, + { + "id": "c_c4c48e5c", + "label": "European citizens' initiative", + "alt_labels": [ + "ECI", + "citizens' initiative (EU)" + ], + "related_ids": [ + "2363", + "8423" + ], + "broader_ids": [ + "5491" + ], + "geo_area_code": null + }, + { + "id": "c_c565cff5", + "label": "EU banking union", + "alt_labels": [ + "EDIS", + "European deposit insurance scheme", + "SRM", + "SSM", + "Single resolution mechanism", + "Single supervisory mechanism" + ], + "related_ids": [ + "3251", + "c_3e6af2e7", + "c_8f89faac" + ], + "broader_ids": [ + "4602" + ], + "geo_area_code": null + }, + { + "id": "c_c586f36c", + "label": "digital economy taxation", + "alt_labels": [ + "taxation of the digital economy\u00a0" + ], + "related_ids": [ + "c_6f7bbe63", + "c_bf1e2c81" + ], + "broader_ids": [ + "2504" + ], + "geo_area_code": null + }, + { + "id": "c_c5c9cfc7", + "label": "Northern Croatian Littoral", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "c_6acbfd25" + ], + "geo_area_code": null + }, + { + "id": "c_c5f984c3", + "label": "fragile region or state", + "alt_labels": [ + "fragile region", + "fragile state" + ], + "related_ids": [ + "6897", + "c_959c23de" + ], + "broader_ids": [ + "3450" + ], + "geo_area_code": null + }, + { + "id": "c_c6be3d6d", + "label": "silver economy", + "alt_labels": [ + "ageing market place", + "senior economy", + "senior market" + ], + "related_ids": [ + "2333", + "3324", + "4555" + ], + "broader_ids": [ + "2402" + ], + "geo_area_code": null + }, + { + "id": "c_c825b20c", + "label": "migration statistics", + "alt_labels": [ + "asylum statistics", + "managed migration statistics" + ], + "related_ids": [], + "broader_ids": [ + "4259" + ], + "geo_area_code": null + }, + { + "id": "c_c8363c09", + "label": "cross-border dimension", + "alt_labels": [ + "cross-border activity", + "cross-border issue", + "cross-border perspective", + "transnational dimension", + "transnational perspective" + ], + "related_ids": [ + "226", + "4558", + "6089", + "c_6f7bbe63" + ], + "broader_ids": [ + "2515" + ], + "geo_area_code": null + }, + { + "id": "c_c8c80a5b", + "label": "aviation security", + "alt_labels": [ + "air security", + "air transport security", + "civil aviation security" + ], + "related_ids": [ + "4045", + "5887" + ], + "broader_ids": [ + "4505" + ], + "geo_area_code": null + }, + { + "id": "c_c95f62c1", + "label": "copyright exception", + "alt_labels": [ + "copyright limitation" + ], + "related_ids": [], + "broader_ids": [ + "529" + ], + "geo_area_code": null + }, + { + "id": "c_c9724a74", + "label": "carbon neutrality", + "alt_labels": [ + "CO2 neutrality", + "carbon dioxide neutrality", + "climate neutrality", + "greenhouse gas neutrality", + "net zero carbon dioxide emissions", + "net zero carbon foot print" + ], + "related_ids": [ + "3638", + "5482", + "5585", + "5605", + "5650", + "754" + ], + "broader_ids": [ + "6400" + ], + "geo_area_code": null + }, + { + "id": "c_cb1ce6ff", + "label": "fishing revenue", + "alt_labels": [ + "fishing income", + "income for fisherman" + ], + "related_ids": [ + "3682" + ], + "broader_ids": [ + "1372" + ], + "geo_area_code": null + }, + { + "id": "c_cbdf29ef", + "label": "orphan disease", + "alt_labels": [ + "rare disease" + ], + "related_ids": [ + "c_6f563894" + ], + "broader_ids": [ + "1754" + ], + "geo_area_code": null + }, + { + "id": "c_ccac12ef", + "label": "roaming", + "alt_labels": [ + "data roaming", + "mobile roaming", + "roaming charge", + "roaming rate", + "roaming service" + ], + "related_ids": [ + "5195" + ], + "broader_ids": [ + "c_25fe24f4" + ], + "geo_area_code": null + }, + { + "id": "c_ccc9fea1", + "label": "conformity deficit", + "alt_labels": [], + "related_ids": [ + "449", + "5814", + "c_70c441cc" + ], + "broader_ids": [ + "5739" + ], + "geo_area_code": null + }, + { + "id": "c_cd74cde9", + "label": "economic coercion", + "alt_labels": [], + "related_ids": [ + "11" + ], + "broader_ids": [ + "3474" + ], + "geo_area_code": null + }, + { + "id": "c_cdec6719", + "label": "photograph", + "alt_labels": [ + "photographic document" + ], + "related_ids": [ + "1416", + "4096" + ], + "broader_ids": [ + "486" + ], + "geo_area_code": null + }, + { + "id": "c_ce38fff4", + "label": "Union of South American Nations", + "alt_labels": [ + "UNASUR" + ], + "related_ids": [], + "broader_ids": [ + "2190" + ], + "geo_area_code": null + }, + { + "id": "c_cef8ea9d", + "label": "regulatory policy", + "alt_labels": [ + "REFIT", + "Regulatory Fitness and Performance Programme", + "better law-making", + "better lawmaking", + "better regulation", + "good regulatory practice", + "outcome-based regulation", + "performance-based regulation", + "regulatory fitness", + "regulatory governance", + "regulatory improvement", + "regulatory quality", + "regulatory reform", + "smart regulation" + ], + "related_ids": [ + "5070", + "525", + "6257", + "c_46f6aaeb", + "c_59f9c651" + ], + "broader_ids": [ + "39" + ], + "geo_area_code": null + }, + { + "id": "c_cf9e250b", + "label": "County of Osijek-Baranja", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "c_d4ca9a6c" + ], + "geo_area_code": null + }, + { + "id": "c_d02647e2", + "label": "right to reuse information", + "alt_labels": [ + "Directive on the re-use of public sector information", + "PSI directive", + "re-use of public sector information", + "reuse of public sector information", + "right to re-use information" + ], + "related_ids": [], + "broader_ids": [ + "5196" + ], + "geo_area_code": null + }, + { + "id": "c_d08207d1", + "label": "European Fund for Strategic Investments", + "alt_labels": [ + "EFSI" + ], + "related_ids": [ + "1490", + "310" + ], + "broader_ids": [ + "1052" + ], + "geo_area_code": null + }, + { + "id": "c_d0e30aa9", + "label": "European Statistical System", + "alt_labels": [ + "ESS" + ], + "related_ids": [ + "2198" + ], + "broader_ids": [ + "4267" + ], + "geo_area_code": null + }, + { + "id": "c_d1c21de0", + "label": "lithium", + "alt_labels": [], + "related_ids": [ + "5410" + ], + "broader_ids": [ + "1885" + ], + "geo_area_code": null + }, + { + "id": "c_d1f03d01", + "label": "Eurosystem", + "alt_labels": [], + "related_ids": [ + "665" + ], + "broader_ids": [ + "5883" + ], + "geo_area_code": null + }, + { + "id": "c_d3334ae3", + "label": "Energy Community", + "alt_labels": [], + "related_ids": [ + "435164", + "c_d8d35f08" + ], + "broader_ids": [ + "2188" + ], + "geo_area_code": null + }, + { + "id": "c_d3974887", + "label": "Central Croatia", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "c_6acbfd25" + ], + "geo_area_code": null + }, + { + "id": "c_d3db05e6", + "label": "City of Zagreb", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "c_d4ca9a6c" + ], + "geo_area_code": null + }, + { + "id": "c_d4ca9a6c", + "label": "Continental Croatia", + "alt_labels": [ + "Kontinentalna Hrvatska" + ], + "related_ids": [], + "broader_ids": [ + "c_6acbfd25" + ], + "geo_area_code": null + }, + { + "id": "c_d59d3160", + "label": "coral", + "alt_labels": [ + "coral reef" + ], + "related_ids": [ + "2825", + "6404" + ], + "broader_ids": [ + "3149" + ], + "geo_area_code": null + }, + { + "id": "c_d59e7560", + "label": "smart city", + "alt_labels": [], + "related_ids": [ + "3377", + "3422", + "5585", + "7219" + ], + "broader_ids": [ + "4619" + ], + "geo_area_code": null + }, + { + "id": "c_d6e0eb67", + "label": "bank resolution", + "alt_labels": [ + "bank recovery" + ], + "related_ids": [ + "3942", + "4738", + "c_3e6af2e7", + "c_406ad4cc", + "c_5b447e3a" + ], + "broader_ids": [ + "3251" + ], + "geo_area_code": null + }, + { + "id": "c_d6e5f3ab", + "label": "digital content", + "alt_labels": [], + "related_ids": [ + "c_6f7bbe63", + "c_8bf65f26", + "c_8f56da2a" + ], + "broader_ids": [ + "7219" + ], + "geo_area_code": null + }, + { + "id": "c_d6ede0c7", + "label": "EU sport policy", + "alt_labels": [ + "European Union sport policy" + ], + "related_ids": [ + "2451" + ], + "broader_ids": [ + "4245" + ], + "geo_area_code": null + }, + { + "id": "c_d701b19c", + "label": "pest", + "alt_labels": [ + "animal pest", + "harmful organism", + "vermin" + ], + "related_ids": [], + "broader_ids": [ + "4940" + ], + "geo_area_code": null + }, + { + "id": "c_d8ba2fe4", + "label": "political ecology", + "alt_labels": [], + "related_ids": [ + "3947", + "632" + ], + "broader_ids": [ + "2470" + ], + "geo_area_code": null + }, + { + "id": "c_d8d35f08", + "label": "EU energy policy", + "alt_labels": [ + "EU energy strategy", + "European Union energy policy", + "European Union energy strategy", + "energy union" + ], + "related_ids": [ + "2451", + "4886", + "c_59f9c651", + "c_d3334ae3" + ], + "broader_ids": [ + "2498" + ], + "geo_area_code": null + }, + { + "id": "c_d978c1fc", + "label": "maritime economy", + "alt_labels": [ + "blue economy", + "marine economy", + "ocean economy" + ], + "related_ids": [ + "1372", + "3043", + "4522", + "c_6e3cbbca", + "c_8d31aed6" + ], + "broader_ids": [ + "940" + ], + "geo_area_code": null + }, + { + "id": "c_d9e3506f", + "label": "precision agriculture", + "alt_labels": [ + "precision farming", + "smart farming" + ], + "related_ids": [], + "broader_ids": [ + "2014" + ], + "geo_area_code": null + }, + { + "id": "c_db56b1e0", + "label": "illegal fishing", + "alt_labels": [ + " unreported and unregulated fishing", + "IUU", + "illegal", + "overfishing", + "unreported fishing" + ], + "related_ids": [ + "1432", + "3169" + ], + "broader_ids": [ + "2476" + ], + "geo_area_code": null + }, + { + "id": "c_dcc650ef", + "label": "alternative investment", + "alt_labels": [ + "AIF", + "AIFM", + "alternative asset", + "alternative investment fund", + "alternative investment fund manager" + ], + "related_ids": [ + "5153" + ], + "broader_ids": [ + "4195" + ], + "geo_area_code": null + }, + { + "id": "c_dcf3f7c0", + "label": "financial risk", + "alt_labels": [ + "credit risk", + "default risk", + "exchange risk", + "foreign exchange rate risk", + "interest rate risk", + "liquidity risk", + "loan risk", + "macroprudential risk", + "market risk", + "sovereign risk", + "systematic risk", + "systemic risk" + ], + "related_ids": [ + "c_406ad4cc" + ], + "broader_ids": [ + "1804" + ], + "geo_area_code": null + }, + { + "id": "c_dd52c1e9", + "label": "pension fund", + "alt_labels": [], + "related_ids": [ + "3362" + ], + "broader_ids": [ + "4195" + ], + "geo_area_code": null + }, + { + "id": "c_de4d6f2f", + "label": "business cluster", + "alt_labels": [ + "cluster of firms", + "competitive cluster", + "competitiveness cluster", + "industrial cluster", + "innovation cluster" + ], + "related_ids": [ + "3627", + "4496" + ], + "broader_ids": [ + "2914" + ], + "geo_area_code": null + }, + { + "id": "c_de77a2c0", + "label": "Eastern Croatia", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "c_6acbfd25" + ], + "geo_area_code": null + }, + { + "id": "c_dea47e63", + "label": "mechatronics", + "alt_labels": [ + "biomechatronics" + ], + "related_ids": [ + "c_b12a760a" + ], + "broader_ids": [ + "1429" + ], + "geo_area_code": null + }, + { + "id": "c_df93fd35", + "label": "text and data mining", + "alt_labels": [ + "TDM", + "data mining", + "text mining" + ], + "related_ids": [], + "broader_ids": [ + "3030" + ], + "geo_area_code": null + }, + { + "id": "c_dffba30e", + "label": "County of Krapina-Zagorje", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "c_d4ca9a6c" + ], + "geo_area_code": null + }, + { + "id": "c_e0543dcb", + "label": "gender-based violence", + "alt_labels": [ + "GBV" + ], + "related_ids": [ + "c_a3ed5037" + ], + "broader_ids": [ + "4728" + ], + "geo_area_code": null + }, + { + "id": "c_e0911140", + "label": "urban access regulation", + "alt_labels": [ + "LTZ", + "limited traffic zone", + "limited vehicle traffic zone" + ], + "related_ids": [], + "broader_ids": [ + "3131" + ], + "geo_area_code": null + }, + { + "id": "c_e0e4608a", + "label": "nuclear security", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1412" + ], + "geo_area_code": null + }, + { + "id": "c_e14565e5", + "label": "non cognitive skills", + "alt_labels": [ + "adaptability", + "creativity", + "critical thinking", + "emotional intelligence", + "readiness to learn", + "resilience", + "soft skills" + ], + "related_ids": [ + "6749", + "7195", + "7209", + "7210" + ], + "broader_ids": [ + "443048" + ], + "geo_area_code": null + }, + { + "id": "c_e2de1ffd", + "label": "electronic game", + "alt_labels": [ + "computer game", + "digital game", + "e-game", + "game console", + "video game", + "video game console" + ], + "related_ids": [], + "broader_ids": [ + "3334" + ], + "geo_area_code": null + }, + { + "id": "c_e300778f", + "label": "County of Dubrovnik-Neretva", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "c_46e54685" + ], + "geo_area_code": null + }, + { + "id": "c_e307d2a8", + "label": "clinical trial", + "alt_labels": [ + "therapeutic trial" + ], + "related_ids": [ + "2773", + "3668", + "3813", + "4455" + ], + "broader_ids": [ + "5764" + ], + "geo_area_code": null + }, + { + "id": "c_e4bfb3bb", + "label": "County of Me\u0111imurje", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "c_d4ca9a6c" + ], + "geo_area_code": null + }, + { + "id": "c_e4f135ba", + "label": "harassment at work", + "alt_labels": [ + "abuse in the workplace", + "bullying at work", + "violence in workplace", + "work-related abuse", + "workplace abuse", + "workplace harassment" + ], + "related_ids": [ + "4728", + "6613" + ], + "broader_ids": [ + "82" + ], + "geo_area_code": null + }, + { + "id": "c_e548b67f", + "label": "European Union Solidarity Fund", + "alt_labels": [ + "EUSF" + ], + "related_ids": [ + "413", + "4802", + "881", + "c_5b447e3a" + ], + "broader_ids": [ + "1052" + ], + "geo_area_code": null + }, + { + "id": "c_e5d85c14", + "label": "chemicals legislation", + "alt_labels": [ + " Authorisation and Restriction of Chemicals", + " Evaluation", + "REACH", + "Registration", + "chemicals regulation", + "legislation on chemical products", + "regulation on chemical products" + ], + "related_ids": [ + "1596", + "2739", + "4308", + "535", + "7984", + "c_39cda9ba", + "c_667f2c16" + ], + "broader_ids": [ + "1362" + ], + "geo_area_code": null + }, + { + "id": "c_e5dbcb63", + "label": "consumer law", + "alt_labels": [ + "consumer legislation" + ], + "related_ids": [ + "164", + "524", + "5598" + ], + "broader_ids": [ + "2836" + ], + "geo_area_code": null + }, + { + "id": "c_e6d358a0", + "label": "Highland Croatia", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "c_6acbfd25" + ], + "geo_area_code": null + }, + { + "id": "c_e749c083", + "label": "payment system", + "alt_labels": [ + "EFTS", + "FTS", + "IFTS", + "clearing and settlement system", + "electronic funds transfer system", + "funds transfer system", + "interbank funds transfer system", + "payment and settlement system", + "securities settlement system" + ], + "related_ids": [ + "1971" + ], + "broader_ids": [ + "4491" + ], + "geo_area_code": null + }, + { + "id": "c_e78f03db", + "label": "Russo-Ukrainian issue", + "alt_labels": [ + "Crimea question", + "Crimean conflict", + "Crimean crisis", + "Crimean situation", + "Russo-Ukrainian conflict", + "Russo-Ukrainian dispute" + ], + "related_ids": [ + "5876", + "5946" + ], + "broader_ids": [ + "3476" + ], + "geo_area_code": null + }, + { + "id": "c_e8e1003b", + "label": "offshore wind energy production", + "alt_labels": [ + "OWT", + "offshore wind turbine" + ], + "related_ids": [], + "broader_ids": [ + "748" + ], + "geo_area_code": null + }, + { + "id": "c_e9845504", + "label": "European School of Administration", + "alt_labels": [ + "EUSA" + ], + "related_ids": [ + "1048", + "1074" + ], + "broader_ids": [ + "7928" + ], + "geo_area_code": null + }, + { + "id": "c_e9ccc5a7", + "label": "heraldry", + "alt_labels": [ + "coat of arms" + ], + "related_ids": [ + "5663" + ], + "broader_ids": [ + "2278" + ], + "geo_area_code": null + }, + { + "id": "c_ea3f5ed2", + "label": "aerostat", + "alt_labels": [ + "airship", + "hot-air balloon", + "lighter-than-air aircraft" + ], + "related_ids": [ + "1700", + "1892" + ], + "broader_ids": [ + "4505" + ], + "geo_area_code": null + }, + { + "id": "c_ea7e9390", + "label": "greenwashing", + "alt_labels": [ + "green sheen", + "green wash" + ], + "related_ids": [], + "broader_ids": [ + "13" + ], + "geo_area_code": null + }, + { + "id": "c_ea7ea83c", + "label": "European Labour Authority", + "alt_labels": [ + "ELA" + ], + "related_ids": [], + "broader_ids": [ + "5769" + ], + "geo_area_code": null + }, + { + "id": "c_eaccd9f4", + "label": "data sharing", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1422" + ], + "geo_area_code": null + }, + { + "id": "c_eb0b5431", + "label": "non-state actors", + "alt_labels": [ + "NSA" + ], + "related_ids": [ + "2001", + "2191" + ], + "broader_ids": [ + "3228" + ], + "geo_area_code": null + }, + { + "id": "c_eb3ada47", + "label": "County of Lika-Senj", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "c_46e54685" + ], + "geo_area_code": null + }, + { + "id": "c_eb46b396", + "label": "marine energy", + "alt_labels": [ + "ocean energy" + ], + "related_ids": [], + "broader_ids": [ + "744" + ], + "geo_area_code": null + }, + { + "id": "c_ec0f4970", + "label": "County of Bjelovar-Bilogora", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "c_d4ca9a6c" + ], + "geo_area_code": null + }, + { + "id": "c_ece0a719", + "label": "viral disease", + "alt_labels": [ + "viral diseases" + ], + "related_ids": [], + "broader_ids": [ + "1759" + ], + "geo_area_code": null + }, + { + "id": "c_ece9dd5b", + "label": "shale gas", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1141" + ], + "geo_area_code": null + }, + { + "id": "c_edee9606", + "label": "European Data Protection Board", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "5769" + ], + "geo_area_code": null + }, + { + "id": "c_ee45cd99", + "label": "sovereign wealth fund", + "alt_labels": [ + "SWF" + ], + "related_ids": [ + "1496" + ], + "broader_ids": [ + "4195" + ], + "geo_area_code": null + }, + { + "id": "c_ee706406", + "label": "food contact material", + "alt_labels": [ + "FCM" + ], + "related_ids": [], + "broader_ids": [ + "2710" + ], + "geo_area_code": null + }, + { + "id": "c_ef31184b", + "label": "disaster risk reduction", + "alt_labels": [ + "DDR", + "DRM", + "disaster management", + "disaster preparedness", + "disaster prevention", + "disaster reduction and recovery", + "disaster risk", + "disaster risk management", + "integrative risk management" + ], + "related_ids": [ + "4074", + "412", + "413" + ], + "broader_ids": [ + "4045" + ], + "geo_area_code": null + }, + { + "id": "c_efec98c3", + "label": "oncology", + "alt_labels": [], + "related_ids": [ + "5104" + ], + "broader_ids": [ + "5902" + ], + "geo_area_code": null + }, + { + "id": "c_f007e95f", + "label": "capital markets union", + "alt_labels": [ + "CMU" + ], + "related_ids": [ + "2466" + ], + "broader_ids": [ + "5156" + ], + "geo_area_code": null + }, + { + "id": "c_f05a3667", + "label": "EU macroregional policy", + "alt_labels": [ + "EU macro-regional policy", + "EU macroregional strategy" + ], + "related_ids": [ + "5675", + "c_12742da8", + "c_6eb6fb87", + "c_a6b5bad0" + ], + "broader_ids": [ + "2516" + ], + "geo_area_code": null + }, + { + "id": "c_f0a7cb51", + "label": "bioinformatics", + "alt_labels": [ + "computational biology" + ], + "related_ids": [ + "4488" + ], + "broader_ids": [ + "4921" + ], + "geo_area_code": null + }, + { + "id": "c_f2c7a2f7", + "label": "organic certification", + "alt_labels": [ + "bio-label", + "labelling of organic products" + ], + "related_ids": [ + "568" + ], + "broader_ids": [ + "1562" + ], + "geo_area_code": null + }, + { + "id": "c_f2f1fb47", + "label": "Bourgogne-Franche-Comt\u00e9", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "1088" + ], + "geo_area_code": null + }, + { + "id": "c_f40562e9", + "label": "capacity building", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2465" + ], + "geo_area_code": null + }, + { + "id": "c_f53bfc88", + "label": "digital rights management", + "alt_labels": [ + "DRM", + "digital rights management technology" + ], + "related_ids": [ + "529", + "7219" + ], + "broader_ids": [ + "5441" + ], + "geo_area_code": null + }, + { + "id": "c_f5622f5f", + "label": "active and assisted living", + "alt_labels": [ + "AAL", + "assisted living" + ], + "related_ids": [], + "broader_ids": [ + "1004" + ], + "geo_area_code": null + }, + { + "id": "c_f5d6dbf6", + "label": "international protection", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "552" + ], + "geo_area_code": null + }, + { + "id": "c_f5ed5adb", + "label": "European Insurance and Occupational Pensions Authority", + "alt_labels": [ + "EIOPA" + ], + "related_ids": [ + "3151", + "3751", + "c_8f89faac" + ], + "broader_ids": [ + "5769" + ], + "geo_area_code": null + }, + { + "id": "c_f7430876", + "label": "search and rescue", + "alt_labels": [ + "CSAR", + "MSAR", + "SAR operation", + "USAR", + "air-sea rescue", + "combat search and rescue", + "ground search and rescue", + "maritime search and rescue", + "mountain rescue", + "search and rescue mission", + "search and rescue operation", + "search-and-rescue operation", + "urban search and rescue" + ], + "related_ids": [ + "1210", + "3320", + "413", + "730", + "8439", + "881", + "c_5b447e3a" + ], + "broader_ids": [ + "3074" + ], + "geo_area_code": null + }, + { + "id": "c_f831f088", + "label": "public space", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "4809" + ], + "geo_area_code": null + }, + { + "id": "c_f9143718", + "label": "County of Koprivnica-Kri\u017eevci", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "c_d4ca9a6c" + ], + "geo_area_code": null + }, + { + "id": "c_f9c004eb", + "label": "project funding", + "alt_labels": [ + "research funding", + "research grant" + ], + "related_ids": [ + "2801" + ], + "broader_ids": [ + "1000" + ], + "geo_area_code": null + }, + { + "id": "c_fa0acac6", + "label": "food waste", + "alt_labels": [ + "food loss" + ], + "related_ids": [ + "1135", + "140", + "1709" + ], + "broader_ids": [ + "343" + ], + "geo_area_code": null + }, + { + "id": "c_fa8f51b0", + "label": "intangible asset", + "alt_labels": [ + "intangible good", + "intangible property", + "invisible asset" + ], + "related_ids": [ + "1055", + "2817", + "7926" + ], + "broader_ids": [ + "55" + ], + "geo_area_code": null + }, + { + "id": "c_fb3022d5", + "label": "EU international partnership", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2451" + ], + "geo_area_code": null + }, + { + "id": "c_fc586505", + "label": "environmental auditing", + "alt_labels": [ + "EMAS", + "EU Eco-Management and Audit Scheme", + "eco-audit", + "green auditing", + "internal environmental auditing" + ], + "related_ids": [], + "broader_ids": [ + "3140" + ], + "geo_area_code": null + }, + { + "id": "c_fd5273d6", + "label": "call for proposals", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "c_f9c004eb" + ], + "geo_area_code": null + }, + { + "id": "c_fd56c432", + "label": "nepotism", + "alt_labels": [], + "related_ids": [ + "3566", + "5748" + ], + "broader_ids": [ + "186" + ], + "geo_area_code": null + }, + { + "id": "c_fd848a9f", + "label": "Franco-German relationship", + "alt_labels": [ + "Franco-German relations" + ], + "related_ids": [ + "1085", + "3196" + ], + "broader_ids": [ + "3234" + ], + "geo_area_code": null + }, + { + "id": "c_fea6771b", + "label": "research integrity", + "alt_labels": [ + "research ethics" + ], + "related_ids": [ + "3566" + ], + "broader_ids": [ + "2478" + ], + "geo_area_code": null + }, + { + "id": "c_fee7acae", + "label": "County of Zadar", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "c_46e54685" + ], + "geo_area_code": null + }, + { + "id": "c_ff1a6c36", + "label": "European Health Union", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "2479" + ], + "geo_area_code": null + }, + { + "id": "c_ff4dd793", + "label": "molecular biology", + "alt_labels": [], + "related_ids": [ + "4889", + "5651" + ], + "broader_ids": [ + "4921" + ], + "geo_area_code": null + }, + { + "id": "c_ff638149", + "label": "asylum seeker", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "3476" + ], + "geo_area_code": null + }, + { + "id": "c_ff983fb3", + "label": "user authorisation", + "alt_labels": [], + "related_ids": [], + "broader_ids": [ + "c_04ae3ba8" + ], + "geo_area_code": null + } +] \ No newline at end of file diff --git a/backend/howtheyvote/data/groups.json b/backend/howtheyvote/data/groups.json new file mode 100644 index 000000000..191d6346c --- /dev/null +++ b/backend/howtheyvote/data/groups.json @@ -0,0 +1,438 @@ +[ + { + "code": "ECR", + "official_label": "European Conservatives and Reformists Group", + "label": "European Conservatives and Reformists", + "short_label": "ECR", + "alt_labels": [], + "start_date": "2009-07-14", + "end_date": null + }, + { + "code": "EPP", + "official_label": "Group of the European People\u2019s Party", + "label": "European People\u2019s Party", + "short_label": "EPP", + "alt_labels": [ + "Group of the European People\u2019s Party (Christian Democrats)", + "Group of the European People\u2019s Party (Christian-Democratic Group)", + "Group of the European People\u2019s Party (Christian Democrats) and European Democrats" + ], + "start_date": "1979-07-17", + "end_date": null + }, + { + "code": "GREEN_EFA", + "official_label": "Group of the Greens/European Free Alliance", + "label": "Greens/European Free Alliance", + "short_label": "Greens/EFA", + "alt_labels": [ + "Verts/ALE" + ], + "start_date": "1999-07-20", + "end_date": null + }, + { + "code": "GUE_NGL", + "official_label": "The Left group in the European Parliament \u2013 GUE/NGL", + "label": "The Left in the European Parliament \u2013 GUE/NGL", + "short_label": "GUE/NGL", + "alt_labels": [ + "Confederal Group of the European United Left \u2013 Nordic Green Left", + "European United Left \u2013 Nordic Green Left" + ], + "start_date": "1995-01-06", + "end_date": null + }, + { + "code": "ID", + "official_label": "Identity and Democracy Group", + "label": "Identity and Democracy", + "short_label": "ID", + "alt_labels": [], + "start_date": "2019-07-02", + "end_date": null + }, + { + "code": "NI", + "official_label": "Non-attached Members", + "label": "Non-attached Members", + "short_label": "Non-attached", + "alt_labels": [ + "NI" + ], + "start_date": "1953-06-23", + "end_date": null + }, + { + "code": "RENEW", + "official_label": "Renew Europe Group", + "label": "Renew Europe", + "short_label": "Renew", + "alt_labels": [], + "start_date": "2019-06-12", + "end_date": null + }, + { + "code": "SD", + "official_label": "Group of the Progressive Alliance of Socialists and Democrats in the European Parliament", + "label": "Progressive Alliance of Socialists and Democrats", + "short_label": "S&D", + "alt_labels": [], + "start_date": "2009-07-14", + "end_date": null + }, + { + "code": "SEC", + "official_label": "Political groups\u2019 secretariats", + "label": "Political groups\u2019 secretariats", + "short_label": "Political groups\u2019 secretariats", + "alt_labels": [], + "start_date": "1958-03-19", + "end_date": null + }, + { + "code": "ALDE", + "official_label": "Group of the Alliance of Liberals and Democrats for Europe", + "label": "Alliance of Liberals and Democrats for Europe", + "short_label": "ALDE", + "alt_labels": [], + "start_date": "2004-07-20", + "end_date": "2019-06-11" + }, + { + "code": "ARC", + "official_label": "Rainbow Group in the European Parliament", + "label": "Rainbow Group in the European Parliament", + "short_label": "Rainbow Group in the European Parliament", + "alt_labels": [ + "Rainbow", + "Rainbow in the European Parliament", + "Rainbow Group: Federation of the Green-Alternative European Links, Agelev-Ecolo, the Danish People\u2019s Movement against Membership of the European Community and the European Free Alliance in the European Parliament" + ], + "start_date": "1984-07-24", + "end_date": "1994-07-18" + }, + { + "code": "ARE", + "official_label": "Group of the European Radical Alliance", + "label": "European Radical Alliance", + "short_label": "European Radical Alliance", + "alt_labels": [], + "start_date": "1994-07-19", + "end_date": "1999-07-19" + }, + { + "code": "CDI", + "official_label": "Group for the Technical Coordination and Defence of Independent Groups and Members", + "label": "Group for the Technical Coordination and Defence of Independent Groups and Members", + "short_label": "Group for the Technical Coordination and Defence of Independent Groups and Members", + "alt_labels": [ + "Technical Coordination and Defence of Independent" + ], + "start_date": "1979-07-17", + "end_date": "1984-07-23" + }, + { + "code": "CHD", + "official_label": "Christian-Democratic Group (Group of the European People\u2019s Party)", + "label": "Christian-Democratic Group (Group of the European People\u2019s Party)", + "short_label": "Christian-Democratic Group (Group of the European People\u2019s Party)", + "alt_labels": [ + "Christian-Democratics", + "Christian-Democratic Group" + ], + "start_date": "1953-06-23", + "end_date": "1979-07-16" + }, + { + "code": "COM", + "official_label": "Communist and Allies Group", + "label": "Communist and Allies", + "short_label": "Communist and Allies", + "alt_labels": [ + "Communists and Allies", + "Communists and Allies (SF, Ind. Sin.)", + "Communist and Allies Group (SF, Ind. Sin.)" + ], + "start_date": "1973-10-16", + "end_date": "1989-07-24" + }, + { + "code": "CTDI", + "official_label": "Technical Coordination and Defence of Independent Groups and Members", + "label": "Technical Coordination and Defence of Independent Groups and Members", + "short_label": "Technical Coordination and Defence of Independent Groups and Members", + "alt_labels": [ + "Technical Coordination and Defence of Independent" + ], + "start_date": "1987-09-17", + "end_date": "1987-11-17" + }, + { + "code": "DE", + "official_label": "European Democratic Union Group", + "label": "European Democratic Union", + "short_label": "European Democratic Union", + "alt_labels": [], + "start_date": "1965-01-20", + "end_date": "1973-07-01" + }, + { + "code": "DEP", + "official_label": "Group of European Progressive Democrats", + "label": "Group of European Progressive Democrats", + "short_label": "Group of European Progressive Democrats", + "alt_labels": [ + "European Progressive Democrats" + ], + "start_date": "1973-07-02", + "end_date": "1984-07-23" + }, + { + "code": "DR", + "official_label": "Technical Group of the European Right", + "label": "Technical Group of the European Right", + "short_label": "Technical Group of the European Right", + "alt_labels": [ + "Group of the European Right", + "European Right" + ], + "start_date": "1984-07-24", + "end_date": "1994-07-18" + }, + { + "code": "ECNS", + "official_label": "European Conservative Group", + "label": "European Conservative", + "short_label": "European Conservative", + "alt_labels": [ + "European Conservatives" + ], + "start_date": "1973-01-16", + "end_date": "1979-07-16" + }, + { + "code": "ED", + "official_label": "European Democratic Group", + "label": "European Democratic", + "short_label": "European Democratic", + "alt_labels": [ + "European Democratics" + ], + "start_date": "1979-07-17", + "end_date": "1992-04-30" + }, + { + "code": "EDD", + "official_label": "Group for a Europe of Democracies and Diversities", + "label": "Group for a Europe of Democracies and Diversities", + "short_label": "Group for a Europe of Democracies and Diversities", + "alt_labels": [ + "Europe of Democracies and Diversities" + ], + "start_date": "1999-07-20", + "end_date": "2004-07-19" + }, + { + "code": "EDN", + "official_label": "Europe of Nations Group (Coordination Group)", + "label": "Europe of Nations Group (Coordination Group)", + "short_label": "Europe of Nations Group (Coordination Group)", + "alt_labels": [ + "Europe of Nations" + ], + "start_date": "1994-07-19", + "end_date": "1996-11-10" + }, + { + "code": "EFD", + "official_label": "Europe of freedom and direct democracy Group", + "label": "Europe of freedom and direct democracy", + "short_label": "EFDD", + "alt_labels": [ + "Europe of freedom and democracy Group" + ], + "start_date": "2009-07-14", + "end_date": "2019-07-01" + }, + { + "code": "ELDR", + "official_label": "Group of the European Liberal, Democrat and Reform Party", + "label": "European Liberal, Democrat and Reform Party", + "short_label": "European Liberal, Democrat and Reform Party", + "alt_labels": [ + "Liberal, Democrat and Reform Party" + ], + "start_date": "1994-07-19", + "end_date": "2004-07-19" + }, + { + "code": "ENF", + "official_label": "Europe of Nations and Freedom", + "label": "Europe of Nations and Freedom", + "short_label": "ENF", + "alt_labels": [], + "start_date": "2015-06-15", + "end_date": "2019-07-01" + }, + { + "code": "EUL", + "official_label": "Group for the European United Left", + "label": "Group for the European United Left", + "short_label": "Group for the European United Left", + "alt_labels": [ + "European United Left" + ], + "start_date": "1989-07-20", + "end_date": "1993-01-11" + }, + { + "code": "FE", + "official_label": "Forza Europa Group", + "label": "Forza Europa", + "short_label": "Forza Europa", + "alt_labels": [], + "start_date": "1994-07-19", + "end_date": "1995-07-04" + }, + { + "code": "GREEN", + "official_label": "The Green Group in the European Parliament", + "label": "The Green Group in the European Parliament", + "short_label": "The Green Group in the European Parliament", + "alt_labels": [ + "The Greens in the European Parliament" + ], + "start_date": "1989-07-19", + "end_date": "1999-07-19" + }, + { + "code": "GUE", + "official_label": "Confederal Group of the European United Left", + "label": "Confederal Group of the European United Left", + "short_label": "Confederal Group of the European United Left", + "alt_labels": [ + "European United Left" + ], + "start_date": "1994-07-19", + "end_date": "1995-01-05" + }, + { + "code": "IEDN", + "official_label": "Group of Independents for a Europe of Nations", + "label": "Group of Independents for a Europe of Nations", + "short_label": "Group of Independents for a Europe of Nations", + "alt_labels": [ + "Independents/Europe of Nations" + ], + "start_date": "1997-01-13", + "end_date": "1999-07-19" + }, + { + "code": "IND_DEM", + "official_label": "Independence/Democracy Group", + "label": "Independence/Democracy", + "short_label": "Independence/Democracy", + "alt_labels": [], + "start_date": "2004-07-20", + "end_date": "2009-07-13" + }, + { + "code": "ITS", + "official_label": "Identity, Tradition and Sovereignty Group", + "label": "Identity, Tradition and Sovereignty", + "short_label": "Identity, Tradition and Sovereignty", + "alt_labels": [ + "Identity, Tradition, Sovereignty" + ], + "start_date": "2007-01-15", + "end_date": "2007-11-13" + }, + { + "code": "LD", + "official_label": "Liberal and Democratic Group", + "label": "Liberal and Democratic", + "short_label": "Liberal and Democratic", + "alt_labels": [ + "Liberals and Democratics" + ], + "start_date": "1953-06-20", + "end_date": "1985-12-12" + }, + { + "code": "LDR", + "official_label": "Liberal and Democratic Reformist Group", + "label": "Liberal and Democratic Reformist", + "short_label": "Liberal and Democratic Reformist", + "alt_labels": [ + "Liberals and Democratic Reformists" + ], + "start_date": "1985-12-13", + "end_date": "1994-07-18" + }, + { + "code": "LEFT", + "official_label": "Left Unity", + "label": "Left Unity", + "short_label": "Left Unity", + "alt_labels": [], + "start_date": "1989-07-20", + "end_date": "1994-07-18" + }, + { + "code": "PSE", + "official_label": "Socialist Group in the European Parliament", + "label": "Socialist Group in the European Parliament", + "short_label": "Socialist Group in the European Parliament", + "alt_labels": [ + "Socialists", + "Group of the Party of European Socialists", + "Party of European Socialists", + "Socialist", + "Socialist Group" + ], + "start_date": "1953-06-23", + "end_date": "2009-07-13" + }, + { + "code": "RDE", + "official_label": "Group of the European Democratic Alliance", + "label": "European Democratic Alliance", + "short_label": "European Democratic Alliance", + "alt_labels": [], + "start_date": "1984-07-23", + "end_date": "1995-07-04" + }, + { + "code": "TDI", + "official_label": "Technical Group of Independent Members \u2013 mixed group", + "label": "Technical Group of Independent Members \u2013 mixed group", + "short_label": "Technical Group of Independent Members \u2013 mixed group", + "alt_labels": [ + "Technical Group of Independent Members" + ], + "start_date": "1999-07-20", + "end_date": "2001-10-02" + }, + { + "code": "UEN", + "official_label": "Union for Europe of the Nations Group", + "label": "Union for Europe of the Nations", + "short_label": "Union for Europe of the Nations", + "alt_labels": [], + "start_date": "1999-07-20", + "end_date": "2009-07-13" + }, + { + "code": "UPE", + "official_label": "Group Union for Europe", + "label": "Group Union for Europe", + "short_label": "Group Union for Europe", + "alt_labels": [ + "Union for Europe" + ], + "start_date": "1995-07-05", + "end_date": "1999-07-19" + } +] diff --git a/backend/howtheyvote/db.py b/backend/howtheyvote/db.py new file mode 100644 index 000000000..73d17d1a8 --- /dev/null +++ b/backend/howtheyvote/db.py @@ -0,0 +1,47 @@ +from typing import Any + +from alembic import command as alembic_command +from alembic.config import Config +from sqlalchemy import create_engine, event +from sqlalchemy.engine.interfaces import DBAPIConnection +from sqlalchemy.orm import scoped_session, sessionmaker +from structlog import get_logger + +from . import __path__, config +from .json import json_dumps, json_loads + +log = get_logger(__name__) + + +engine = create_engine( + config.DATABASE_URI, + # We use a custom JSON serializer/deserializer to handle enums, + # custom serialization of dataclasses (e.g. `Country`) etc. + json_serializer=json_dumps, + json_deserializer=json_loads, +) + +session_factory = sessionmaker(engine) +Session = scoped_session(session_factory) + + +@event.listens_for(engine, "connect") +def on_connect(connection: DBAPIConnection, _: Any) -> None: + cursor = connection.cursor() + + # Set up Write-Ahead Log to ensure that reads do not block writes and + # writes do not block reads + cursor.execute("PRAGMA journal_mode=WAL;") + + cursor.close() + + +def migrate() -> None: + """Run Alembic database migrations.""" + with engine.connect() as connection: + alembic_config = Config() + root = list(__path__)[0] + alembic_config.set_main_option("script_location", f"{root}/alembic") + alembic_config.attributes["connection"] = connection + log.info("Running database migrations.") + alembic_command.upgrade(alembic_config, "head") diff --git a/backend/howtheyvote/files.py b/backend/howtheyvote/files.py new file mode 100644 index 000000000..ffcc64c59 --- /dev/null +++ b/backend/howtheyvote/files.py @@ -0,0 +1,71 @@ +from pathlib import Path + +import requests +from PIL import Image +from structlog import get_logger + +from . import config + +log = get_logger(__name__) + + +def file_path(path: str | Path) -> Path: + absolute_path = config.FILES_DIR / Path(path) + relative_path = absolute_path.relative_to(config.FILES_DIR) + return config.FILES_DIR / relative_path + + +def member_photo_path(member_id: int, size: int | None = None) -> Path: + if size: + return file_path(f"members/{member_id}-{size}.jpg") + + return file_path(f"members/{member_id}.jpg") + + +def vote_sharepic_path(vote_id: int) -> Path: + return file_path(f"votes/sharepic-{vote_id}.png") + + +def download_file(url: str, path: str | Path) -> Path | None: + # Ensure that the download path is inside the files directory + path = file_path(path) + ensure_parent(path) + + with requests.get(url, stream=True, timeout=config.REQUEST_TIMEOUT) as res: + res.raise_for_status() + + with open(path, "wb") as f: + for chunk in res.iter_content(): + f.write(chunk) + + return path + + +def ensure_parent(path: str | Path) -> None: + path = file_path(path) + parent_dir = Path(path).parent + + if not parent_dir.exists(): + parent_dir.mkdir(parents=True) + + +def image_thumb( + input_path: str | Path, + output_path: str | Path, + format: str | None = None, + size: int | None = None, +) -> Path: + output_path = file_path(output_path) + + with Image.open(input_path) as image: + thumb = image.copy() + + if size: + thumb.thumbnail((104, 104)) + + if not format: + format = image.format + + thumb.save(output_path, format=format, optimize=True) + + return output_path diff --git a/backend/howtheyvote/helpers.py b/backend/howtheyvote/helpers.py new file mode 100644 index 000000000..7984f2f01 --- /dev/null +++ b/backend/howtheyvote/helpers.py @@ -0,0 +1,113 @@ +import hashlib +import itertools +import re +from collections.abc import Iterable, Iterator, Mapping +from typing import Any, TypedDict, TypeVar, cast +from urllib.parse import urljoin + +from . import config + +REFERENCE_REGEX = re.compile( + r"(?PA|B|C|RC-B)" + + r"(?P\d+)-" + + r"(?P\d{4})\/" + + r"(?P\d{4})" + + r"(?:\/rev\d*)?", + flags=re.IGNORECASE, +) + +PROCEDURE_REFERENCE_REGEX = re.compile( + r"(?P\d{4})\/" + r"(?P\d{4}[A-Z]?)" + r"\((?P[A-Z]{3})\)", + flags=re.IGNORECASE, +) + + +class Reference(TypedDict): + type: str + term: int + number: int + year: int + + +class ProcedureReference(TypedDict): + type: str + number: str + year: int + + +def parse_reference(reference: str) -> Reference: + match = re.fullmatch(REFERENCE_REGEX, reference.upper()) + + if not match: + raise ValueError(f"Invalid reference: {reference}") + + type_ = cast(str, match.group("type")) + + if type_ == "RC-B": + type_ = "RC" + + term = int(match.group("term")) + number = int(match.group("number")) + year = int(match.group("year")) + + return Reference(type=type_, term=term, number=number, year=year) + + +def parse_procedure_reference(procedure_reference: str) -> ProcedureReference: + match = re.fullmatch(PROCEDURE_REFERENCE_REGEX, procedure_reference.upper()) + + if not match: + raise ValueError(f"Invalid procedure reference: {procedure_reference}") + + type_ = cast(str, match.group("type")) + number = cast(str, match.group("number")) + year = int(match.group("year")) + + return ProcedureReference(type=type_, number=number, year=year) + + +def make_key(*parts: str) -> str: + digest = hashlib.sha1() + + for part in parts: + digest.update(part.encode("utf-8")) + + return digest.hexdigest() + + +T = TypeVar("T") + + +def chunks(iterable: Iterable[T], size: int) -> Iterator[Iterator[T]]: + iterator = iter(iterable) + + for first in iterator: + yield itertools.chain([first], itertools.islice(iterator, size - 1)) + + +def frontend_url(path: str) -> str: + return urljoin(config.FRONTEND_PUBLIC_URL, path) + + +def flatten_dict(data: Mapping[Any, Any], key_prefix: str = "") -> dict[Any, Any]: + # Using `Mapping` type due to https://github.com/python/mypy/issues/4976 + + flattened: dict[Any, Any] = {} + + for key, value in data.items(): + if key_prefix: + key = f"{key_prefix}.{key}" + + if isinstance(value, Mapping): + flattened.update(**flatten_dict(value, key_prefix=key)) + else: + flattened[key] = value + + return flattened + + +def subset_dict(data: Mapping[Any, Any], keys: Iterable[Any]) -> Mapping[Any, Any]: + if not isinstance(keys, set): + keys = set(keys) + + return {k: v for k, v in data.items() if k in keys} diff --git a/backend/howtheyvote/json.py b/backend/howtheyvote/json.py new file mode 100644 index 000000000..d7064a59c --- /dev/null +++ b/backend/howtheyvote/json.py @@ -0,0 +1,42 @@ +import dataclasses +import datetime +import enum +import json +from typing import Any + +from flask.json.provider import DefaultJSONProvider + + +class JSONEncoder(json.JSONEncoder): + """A JSON encoder that handles additional built-in types such as dates, sets, enums.""" + + def default(self, o: Any) -> Any: + if isinstance(o, datetime.date): + return o.isoformat() + + if isinstance(o, datetime.datetime): + return o.isoformat() + + if isinstance(o, enum.Enum): + return o.value + + if isinstance(o, set): + return sorted(o) + + if dataclasses.is_dataclass(o): + return dataclasses.asdict(o) + + return json.JSONEncoder.default(self, o) + + +def json_loads(string: str | bytes) -> Any: + return json.loads(string) + + +def json_dumps(obj: Any, indent: int | None = None) -> Any: + return JSONEncoder(indent=indent).encode(obj) + + +class JSONProvider(DefaultJSONProvider): + def dumps(self, obj: Any, **kwargs: Any) -> Any: + return json_dumps(obj) diff --git a/backend/howtheyvote/meili.py b/backend/howtheyvote/meili.py new file mode 100644 index 000000000..22047bdb7 --- /dev/null +++ b/backend/howtheyvote/meili.py @@ -0,0 +1,88 @@ +import meilisearch +from meilisearch.index import Index +from structlog import get_logger + +from . import config +from .models import BaseWithId, Vote + +log = get_logger(__name__) + +meili = meilisearch.Client(config.MEILI_URL or "", config.MEILI_MASTER_KEY) + + +def index_name(name: str) -> str: + prefix = config.SEARCH_INDEX_PREFIX + + if not prefix: + return name + + return f"{prefix}-{name}" + + +def get_index(model_cls: type[BaseWithId]) -> Index: + name = index_name(model_cls.__table__.name) # type: ignore + + if model_cls != Vote: + raise ValueError(f'Cannot get index "{name}" for model "{model_cls.__name__}"') + + return meili.index(name) + + +votes_index = get_index(Vote) + + +def configure_indexes() -> None: + uid = votes_index.uid + + """Configure Meilisearch indexes.""" + log.info("Creating index.", uid=uid) + meili.create_index(uid, {"primaryKey": "id"}) + + log.info("Updating index settings.", uid=uid) + votes_index.update_displayed_attributes( + [ + "id", + "display_title", + "timestamp", + "reference", + "procedure_reference", + "description", + "is_featured", + "geo_areas", + ] + ) + votes_index.update_searchable_attributes( + [ + "display_title", + "reference", + "procedure_reference", + "geo_areas", + "keywords", + ] + ) + votes_index.update_sortable_attributes(["id", "timestamp"]) + votes_index.update_filterable_attributes(["is_featured"]) + votes_index.update_typo_tolerance( + { + "disableOnAttributes": ["reference", "procedure_reference"], + } + ) + votes_index.update_ranking_rules( + [ + "words", + "typo", + "proximity", + "attribute", + "sort", + "exactness", + # Promote featured and recent votes by default + "timestamp:desc", + "is_featured:desc", + ] + ) + + +def delete_indexes() -> None: + """Delete all Meilisearch indexes.""" + log.info("Deleting index", uid=votes_index.uid) + votes_index.delete() diff --git a/backend/howtheyvote/metrics.py b/backend/howtheyvote/metrics.py new file mode 100644 index 000000000..8cea02dad --- /dev/null +++ b/backend/howtheyvote/metrics.py @@ -0,0 +1,98 @@ +import datetime +from collections.abc import Iterator + +from prometheus_client import Metric +from prometheus_client.core import GaugeMetricFamily +from prometheus_client.registry import Collector +from sqlalchemy import case, func, select + +from .db import Session +from .models import Fragment, Member, Vote, VoteGroup +from .query import member_active_at + + +class DataCollector(Collector): + def collect(self) -> Iterator[Metric]: + yield self.fragments() + yield self.votes() + yield self.members() + yield self.data_issues() + + def fragments(self) -> GaugeMetricFamily: + gauge = GaugeMetricFamily( + "htv_fragments", + "Total number of fragments", + labels=["model", "source_name"], + ) + query = select(Fragment.model, Fragment.source_name, func.count()).group_by( + Fragment.model, Fragment.source_name + ) + + for model, source_name, count in Session.execute(query): + gauge.add_metric(value=count, labels=[model, source_name]) + + return gauge + + def votes(self) -> GaugeMetricFamily: + gauge = GaugeMetricFamily( + "htv_votes", + "Total number of votes", + labels=["year", "is_main", "is_featured"], + ) + year = func.strftime("%Y", Vote.timestamp) + query = select(Vote.is_main, Vote.is_featured, year, func.count()).group_by( + Vote.is_main, Vote.is_featured, year + ) + + for is_main, is_featured, year, count in Session.execute(query): + gauge.add_metric(value=count, labels=[str(year), str(is_main), str(is_featured)]) + + return gauge + + def members(self) -> GaugeMetricFamily: + gauge = GaugeMetricFamily( + "htv_members", "Total number of members", labels=["country", "active"] + ) + active = case( + (member_active_at(datetime.date.today()), True), + else_=False, + ) + query = select( + Member.country, + active, + func.count(), + ).group_by(Member.country, active) + + for country, active, count in Session.execute(query): + gauge.add_metric(value=count, labels=[country.code, str(active)]) + + return gauge + + def data_issues(self) -> GaugeMetricFamily: + gauge = GaugeMetricFamily( + "htv_data_issues", "Number of data issues", labels=["type", "month"] + ) + + vote_month = func.strftime("%Y-%m", Vote.timestamp) + vote_exp = func.json_each(Vote.issues).table_valued("value") # type: ignore[no-untyped-call] + vote_query = ( + select(vote_exp.c.value, vote_month, func.count()) + .select_from(Vote, vote_exp) + .group_by(vote_exp.c.value, vote_month) + ) + + vote_group_month = func.strftime("%Y-%m", VoteGroup.date) + vote_group_exp = func.json_each(VoteGroup.issues).table_valued("value") # type: ignore[no-untyped-call] + vote_group_query = ( + select(vote_group_exp.c.value, vote_group_month, func.count()) + .select_from(VoteGroup, vote_group_exp) + .group_by(vote_group_exp.c.value, vote_group_month) + ) + + for type_, month, count in Session.execute(vote_query): + gauge.add_metric(value=count, labels=[type_, month]) + + for type_, month, count in Session.execute(vote_group_query): + gauge.add_metric(value=count, labels=[type_, month]) + + return gauge diff --git a/backend/howtheyvote/models/__init__.py b/backend/howtheyvote/models/__init__.py new file mode 100644 index 000000000..0aa3a2d89 --- /dev/null +++ b/backend/howtheyvote/models/__init__.py @@ -0,0 +1,48 @@ +from .common import Base, BaseWithId, DataIssue, Fragment, PipelineRun, PipelineRunResult +from .country import Country, CountryType +from .eurovoc import EurovocConcept, EurovocConceptType +from .group import Group +from .member import ( + GroupMembership, + Member, + deserialize_group_membership, + serialize_group_membership, +) +from .press_release import PressRelease +from .session import PlenarySession, PlenarySessionLocation, PlenarySessionStatus +from .vote import ( + MemberVote, + Vote, + VoteGroup, + VotePosition, + deserialize_member_vote, + serialize_member_vote, +) + +__all__ = [ + "Base", + "BaseWithId", + "Fragment", + "PipelineRun", + "PipelineRunResult", + "DataIssue", + "Country", + "CountryType", + "Group", + "EurovocConcept", + "EurovocConceptType", + "PlenarySession", + "PlenarySessionLocation", + "PlenarySessionStatus", + "GroupMembership", + "Member", + "VotePosition", + "MemberVote", + "Vote", + "VoteGroup", + "PressRelease", + "serialize_group_membership", + "deserialize_group_membership", + "serialize_member_vote", + "deserialize_member_vote", +] diff --git a/backend/howtheyvote/models/common.py b/backend/howtheyvote/models/common.py new file mode 100644 index 000000000..ef084442d --- /dev/null +++ b/backend/howtheyvote/models/common.py @@ -0,0 +1,52 @@ +import datetime +from enum import Enum +from typing import Any + +import sqlalchemy as sa +from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column + + +class Base(DeclarativeBase): + pass + + +class BaseWithId(Base): + __abstract__ = True + + id: Mapped[str | int] + + +class Fragment(Base): + __tablename__ = "fragments" + + model: Mapped[str] = mapped_column(sa.Unicode, primary_key=True) + source_name: Mapped[str] = mapped_column(sa.Unicode, primary_key=True) + source_id: Mapped[str] = mapped_column(sa.Unicode, primary_key=True) + source_url: Mapped[str | None] = mapped_column(sa.Unicode) + timestamp: Mapped[datetime.datetime] = mapped_column( + sa.DateTime, default=datetime.datetime.now, onupdate=datetime.datetime.now + ) + group_key: Mapped[str] = mapped_column(sa.Unicode) + data: Mapped[dict[Any, Any]] = mapped_column(sa.JSON) + + +class DataIssue(Enum): + MEMBER_VOTES_COUNT_MISMATCH = "MEMBER_VOTES_COUNT_MISMATCH" + EMPTY_TITLES = "EMPTY_TITLES" + VOTE_GROUP_NO_MAIN_VOTE = "VOTE_GROUP_NO_MAIN_VOTE" + + +class PipelineRunResult(Enum): + SUCCESS = "SUCCESS" + FAILURE = "FAILURE" + DATA_UNAVAILABLE = "DATA_UNAVAILABLE" + + +class PipelineRun(Base): + __tablename__ = "pipeline_runs" + + id: Mapped[int] = mapped_column(sa.Integer, primary_key=True, autoincrement=True) + started_at: Mapped[sa.DateTime] = mapped_column(sa.DateTime) + finished_at: Mapped[sa.DateTime] = mapped_column(sa.DateTime) + pipeline: Mapped[str] = mapped_column(sa.Unicode) + result: Mapped[PipelineRunResult] = mapped_column(sa.Enum(PipelineRunResult)) diff --git a/backend/howtheyvote/models/country.py b/backend/howtheyvote/models/country.py new file mode 100644 index 000000000..116f7366c --- /dev/null +++ b/backend/howtheyvote/models/country.py @@ -0,0 +1,88 @@ +import dataclasses +import re + +import sqlalchemy as sa +from sqlalchemy.engine import Dialect +from sqlalchemy.types import TypeDecorator + +from ..data import DATA_DIR, DataclassContainer, DeserializableDataclass + + +class CountryMeta(type): + def __getitem__(cls, key: str) -> "Country": + country = countries.get(key) + + if not country: + raise KeyError() + + return country + + +@dataclasses.dataclass(frozen=True) +class Country(DeserializableDataclass, metaclass=CountryMeta): + code: str + label: str + alt_label: str | None + iso_alpha_2: str | None + + @classmethod + def get(cls, key: str) -> "Country | None": + try: + return cls[key] + except KeyError: + return None + + @classmethod + def from_label(cls, label: str, fuzzy: bool = False) -> "Country | None": + fuzzy_matches = [] + normalized = _normalize_label(label) + + for country in countries: + if country.label == label: + return country + if country.alt_label == label: + return country + if _normalize_label(country.label).startswith(normalized): + fuzzy_matches.append(country) + if normalized.startswith(_normalize_label(country.label)): + fuzzy_matches.append(country) + + if fuzzy and fuzzy_matches: + return fuzzy_matches[0] + + return None + + def __hash__(self) -> int: + return hash(self.code) + + +countries = DataclassContainer( + dataclass=Country, + file_path=DATA_DIR.joinpath("countries.json"), + key_attr="code", +) +countries.load() + + +def _normalize_label(label: str) -> str: + normalized = label.lower() + normalized = re.sub(r"[^a-z\s\-]", "", normalized) + + return normalized + + +class CountryType(TypeDecorator[Country]): + impl = sa.Unicode + cache_ok = True + + def process_bind_param(self, value: Country | None, dialect: Dialect) -> str | None: + if not value: + return None + + return value.code + + def process_result_value(self, value: str | None, dialect: Dialect) -> Country | None: + if not value: + return None + + return Country[value] diff --git a/backend/howtheyvote/models/eurovoc.py b/backend/howtheyvote/models/eurovoc.py new file mode 100644 index 000000000..8c0b3b94c --- /dev/null +++ b/backend/howtheyvote/models/eurovoc.py @@ -0,0 +1,80 @@ +import dataclasses + +import sqlalchemy as sa +from sqlalchemy.engine import Dialect +from sqlalchemy.types import TypeDecorator + +from ..data import DATA_DIR, DataclassContainer, DeserializableDataclass +from .country import Country + + +class EurovocConceptMeta(type): + def __getitem__(cls, key: str) -> "EurovocConcept": + concept = eurovoc_concepts.get(key) + + if not concept: + raise KeyError() + + return concept + + +@dataclasses.dataclass(frozen=True) +class EurovocConcept(DeserializableDataclass, metaclass=EurovocConceptMeta): + id: str + label: str + alt_labels: set[str] + related_ids: set[str] + broader_ids: set[str] + geo_area_code: str | None + + def __hash__(self) -> int: + return hash(self.id) + + @classmethod + def get(cls, key: str) -> "EurovocConcept | None": + try: + return cls[key] + except KeyError: + return None + + @property + def related(self) -> set["EurovocConcept"]: + return {EurovocConcept[id_] for id_ in self.related_ids} + + @property + def broader(self) -> set["EurovocConcept"]: + return {EurovocConcept[id_] for id_ in self.broader_ids} + + @property + def geo_area(self) -> Country | None: + if not self.geo_area_code: + return None + + return Country.get(self.geo_area_code) + + +eurovoc_concepts = DataclassContainer( + dataclass=EurovocConcept, + file_path=DATA_DIR.joinpath("eurovoc.json"), + key_attr="id", +) +eurovoc_concepts.load() + + +class EurovocConceptType(TypeDecorator[EurovocConcept]): + impl = sa.Unicode + cache_ok = True + + def process_bind_param(self, value: EurovocConcept | None, dialect: Dialect) -> str | None: + if not value: + return None + + return value.id + + def process_result_value( + self, value: str | None, dialect: Dialect + ) -> EurovocConcept | None: + if not value: + return None + + return eurovoc_concepts.get(value) diff --git a/backend/howtheyvote/models/group.py b/backend/howtheyvote/models/group.py new file mode 100644 index 000000000..4470528d3 --- /dev/null +++ b/backend/howtheyvote/models/group.py @@ -0,0 +1,83 @@ +import dataclasses +import datetime +from typing import Any + +from unidecode import unidecode + +from ..data import DATA_DIR, DataclassContainer, DeserializableDataclass + + +class GroupMeta(type): + def __getitem__(cls, key: str) -> "Group": + country = groups.get(key) + + if not country: + raise KeyError() + + return country + + +@dataclasses.dataclass(frozen=True) +class Group(DeserializableDataclass, metaclass=GroupMeta): + code: str + official_label: str + label: str + short_label: str + alt_labels: list[str] + start_date: datetime.date + end_date: datetime.date | None + + @classmethod + def get(cls, key: str) -> "Group | None": + try: + return cls[key] + except KeyError: + return None + + @classmethod + def from_label(cls, label: str) -> "Group | None": + normalized = _normalize_label(label) + + for group in groups: + all_labels = [ + group.label, + group.official_label, + group.short_label, + *group.alt_labels, + ] + all_normalized = set(_normalize_label(label) for label in all_labels if label) + + if normalized in all_normalized: + return group + + return None + + @classmethod + def from_dict(cls, data: dict[Any, Any]) -> "Group": + data = { + **data, + "start_date": datetime.date.fromisoformat(data["start_date"]), + "end_date": datetime.date.fromisoformat(data["end_date"]) + if data.get("end_date") + else None, + } + + return cls(**data) + + def __hash__(self) -> int: + return hash(self.code) + + +groups = DataclassContainer( + dataclass=Group, + file_path=DATA_DIR.joinpath("groups.json"), + key_attr="code", +) +groups.load() + + +def _normalize_label(label: str) -> str: + normalized = unidecode(label.lower()) + normalized = normalized.removeprefix("group of the ") + normalized = normalized.removesuffix(" group") + return normalized diff --git a/backend/howtheyvote/models/member.py b/backend/howtheyvote/models/member.py new file mode 100644 index 000000000..c42ecb4c4 --- /dev/null +++ b/backend/howtheyvote/models/member.py @@ -0,0 +1,109 @@ +import datetime +from dataclasses import dataclass +from typing import TypedDict + +import sqlalchemy as sa +from flask import url_for +from sqlalchemy.engine import Dialect +from sqlalchemy.orm import Mapped, mapped_column +from sqlalchemy.types import TypeDecorator +from structlog import get_logger + +from .common import BaseWithId +from .country import Country, CountryType +from .group import Group +from .types import ListType + +log = get_logger(__name__) + + +@dataclass +class GroupMembership: + term: int + group: Group + start_date: datetime.date + end_date: datetime.date | None + + +class SerializedGroupMembership(TypedDict): + term: int + group: str + start_date: str + end_date: str | None + + +def serialize_group_membership(group_membership: GroupMembership) -> SerializedGroupMembership: + return { + "term": group_membership.term, + "start_date": group_membership.start_date.isoformat(), + "end_date": group_membership.end_date.isoformat() + if group_membership.end_date + else None, + "group": group_membership.group.code, + } + + +def deserialize_group_membership( + group_membership: SerializedGroupMembership, +) -> GroupMembership: + end_date = group_membership.get("end_date") + + return GroupMembership( + term=group_membership["term"], + start_date=datetime.date.fromisoformat(group_membership["start_date"]), + end_date=datetime.date.fromisoformat(end_date) if end_date else None, + group=Group[group_membership["group"]], + ) + + +class GroupMembershipType(TypeDecorator[GroupMembership]): + impl = sa.JSON + cache_ok = True + + def process_bind_param( + self, value: GroupMembership | None, dialect: Dialect + ) -> SerializedGroupMembership | None: + if not value: + return None + + return serialize_group_membership(value) + + def process_result_value( + self, value: SerializedGroupMembership | None, dialect: Dialect + ) -> GroupMembership | None: + if not value: + return None + + return deserialize_group_membership(value) + + +class Member(BaseWithId): + __tablename__ = "members" + + id: Mapped[int] = mapped_column(sa.Integer, primary_key=True) + first_name: Mapped[str] = mapped_column(sa.Unicode) + last_name: Mapped[str] = mapped_column(sa.Unicode) + country: Mapped[Country] = mapped_column(CountryType) + group_memberships: Mapped[list[GroupMembership]] = mapped_column( + ListType(GroupMembershipType()) + ) + date_of_birth: Mapped[datetime.date | None] = mapped_column(sa.Date) + terms: Mapped[list[int]] = mapped_column(sa.JSON, default=[]) + email: Mapped[str | None] = mapped_column(sa.Unicode) + facebook: Mapped[str | None] = mapped_column(sa.Unicode) + twitter: Mapped[str | None] = mapped_column(sa.Unicode) + + def group_at(self, date: datetime.date | datetime.datetime) -> Group | None: + if isinstance(date, datetime.datetime): + date = date.date() + + for group_membership in self.group_memberships: + if group_membership.start_date <= date and ( + not group_membership.end_date or group_membership.end_date >= date + ): + return group_membership.group + + return None + + def photo_url(self, size: str | int | None = None) -> str: + return url_for("api.static_api.member_photo", member_id=self.id, size=size) diff --git a/backend/howtheyvote/models/press_release.py b/backend/howtheyvote/models/press_release.py new file mode 100644 index 000000000..e4e7a7738 --- /dev/null +++ b/backend/howtheyvote/models/press_release.py @@ -0,0 +1,18 @@ +import datetime + +import sqlalchemy as sa +from sqlalchemy.orm import Mapped, mapped_column + +from .common import BaseWithId + + +class PressRelease(BaseWithId): + __tablename__ = "press_releases" + + id: Mapped[str] = mapped_column(sa.Unicode, primary_key=True) + published_at: Mapped[datetime.datetime] = mapped_column(sa.DateTime) + title: Mapped[str] = mapped_column(sa.Unicode) + term: Mapped[int] = mapped_column(sa.Integer) + references: Mapped[list[str]] = mapped_column(sa.JSON) + procedure_references: Mapped[list[str]] = mapped_column(sa.JSON) + facts: Mapped[str] = mapped_column(sa.Unicode) diff --git a/backend/howtheyvote/models/session.py b/backend/howtheyvote/models/session.py new file mode 100644 index 000000000..257aaeb8a --- /dev/null +++ b/backend/howtheyvote/models/session.py @@ -0,0 +1,46 @@ +import datetime +from enum import Enum + +import sqlalchemy as sa +from sqlalchemy.orm import Mapped, mapped_column + +from .common import BaseWithId + + +class PlenarySessionLocation(Enum): + """ + Locality of a plenary session + """ + + SXB = "SXB" + BRU = "BRU" + + +class PlenarySessionStatus(Enum): + CURRENT = "CURRENT" + UPCOMING = "UPCOMING" + PAST = "PAST" + + +class PlenarySession(BaseWithId): + __tablename__ = "plenary_sessions" + + id: Mapped[str] = mapped_column(sa.Unicode, primary_key=True) + term: Mapped[int] = mapped_column(sa.Integer) + start_date: Mapped[datetime.date] = mapped_column(sa.Date) + end_date: Mapped[datetime.date] = mapped_column(sa.Date) + location: Mapped[PlenarySessionLocation | None] = mapped_column( + sa.Enum(PlenarySessionLocation) + ) + + @property + def status(self) -> PlenarySessionStatus: + today = datetime.date.today() + + if self.start_date > today: + return PlenarySessionStatus.UPCOMING + + if self.end_date < today: + return PlenarySessionStatus.PAST + + return PlenarySessionStatus.CURRENT diff --git a/backend/howtheyvote/models/types.py b/backend/howtheyvote/models/types.py new file mode 100644 index 000000000..96ac6f543 --- /dev/null +++ b/backend/howtheyvote/models/types.py @@ -0,0 +1,80 @@ +from typing import Any, TypeVar + +import sqlalchemy as sa +from sqlalchemy.engine import Dialect +from sqlalchemy.types import TypeDecorator, TypeEngine + +ItemType = TypeVar("ItemType", bound=TypeEngine[Any]) + + +class ListType(TypeDecorator[list[ItemType]]): + """A column type that uses the built-in JSON column type to store list data, but + automatically (de-)serializes values according to the item type. For example, + `ListType(sa.Enum(MyEnum))` represents a list of `MyEnum` instances.""" + + impl = sa.JSON + cache_ok = True + + def __init__(self, item_type: ItemType): + super().__init__() + + if isinstance(item_type, type): + item_type = item_type() + + self.item_type = item_type + + def process_bind_param(self, value: list[Any] | None, dialect: Dialect) -> list[ItemType]: + if not value: + return [] + + item_type = self.item_type + processor = item_type.dialect_impl(dialect).bind_processor(dialect) + + if isinstance(item_type, TypeDecorator) and isinstance( + item_type.impl_instance, sa.JSON + ): + + def processor(value: Any) -> Any: + return item_type.process_bind_param(value, dialect) + + if not processor: + return value + + serialized = [] + + for item in value: + serialized_item = processor(item) + + if serialized_item is not None: + serialized.append(serialized_item) + + return serialized + + def process_result_value( + self, value: list[ItemType] | None, dialect: Dialect + ) -> list[Any]: + if not value: + return [] + + item_type = self.item_type + processor = item_type.dialect_impl(dialect).result_processor(dialect, None) + + if isinstance(item_type, TypeDecorator) and isinstance( + item_type.impl_instance, sa.JSON + ): + + def processor(value: Any) -> Any: + return item_type.process_result_value(value, dialect) + + if not processor: + return value + + deserialized = [] + + for item in value: + deserialized_item = processor(item) + + if deserialized_item is not None: + deserialized.append(deserialized_item) + + return deserialized diff --git a/backend/howtheyvote/models/vote.py b/backend/howtheyvote/models/vote.py new file mode 100644 index 000000000..ccac9151d --- /dev/null +++ b/backend/howtheyvote/models/vote.py @@ -0,0 +1,118 @@ +import dataclasses +import datetime +from enum import Enum +from typing import TypedDict + +import sqlalchemy as sa +from flask import url_for +from sqlalchemy.engine import Dialect +from sqlalchemy.orm import Mapped, mapped_column +from sqlalchemy.types import TypeDecorator + +from .common import BaseWithId, DataIssue +from .country import Country, CountryType +from .eurovoc import EurovocConcept, EurovocConceptType +from .types import ListType + + +class VotePosition(Enum): + FOR = "FOR" + AGAINST = "AGAINST" + ABSTENTION = "ABSTENTION" + DID_NOT_VOTE = "DID_NOT_VOTE" + + +@dataclasses.dataclass +class MemberVote: + web_id: int + position: VotePosition + + +class SerializedMemberVote(TypedDict): + web_id: int + position: str + + +def serialize_member_vote(member_vote: MemberVote | None) -> SerializedMemberVote | None: + if not member_vote: + return None + + return { + "web_id": member_vote.web_id, + "position": member_vote.position.value, + } + + +def deserialize_member_vote(member_vote: SerializedMemberVote | None) -> MemberVote | None: + if not member_vote: + return None + + return MemberVote( + web_id=member_vote["web_id"], + position=VotePosition[member_vote["position"]], + ) + + +class MemberVoteType(TypeDecorator[MemberVote]): + impl = sa.JSON + cache_ok = True + + def process_bind_param( + self, value: MemberVote | None, dialect: Dialect + ) -> SerializedMemberVote | None: + return serialize_member_vote(value) + + def process_result_value( + self, value: SerializedMemberVote | None, dialect: Dialect + ) -> MemberVote | None: + return deserialize_member_vote(value) + + +class Vote(BaseWithId): + __tablename__ = "votes" + + id: Mapped[int] = mapped_column(sa.Integer, primary_key=True) + timestamp: Mapped[datetime.datetime] = mapped_column(sa.DateTime) + order: Mapped[int] = mapped_column(sa.Integer) + title: Mapped[str | None] = mapped_column(sa.Unicode) + procedure_title: Mapped[str | None] = mapped_column(sa.Unicode) + procedure_reference: Mapped[str | None] = mapped_column(sa.Unicode) + rapporteur: Mapped[str | None] = mapped_column(sa.Unicode) + reference: Mapped[str | None] = mapped_column(sa.Unicode) + description: Mapped[str | None] = mapped_column(sa.Unicode) + is_main: Mapped[bool] = mapped_column(sa.Boolean, default=False) + is_featured: Mapped[bool] = mapped_column(sa.Boolean, default=False) + group_key: Mapped[str | None] = mapped_column(sa.Unicode) + member_votes: Mapped[list[MemberVote]] = mapped_column(ListType(MemberVoteType())) + geo_areas: Mapped[list[Country]] = mapped_column(ListType(CountryType())) + eurovoc_concepts: Mapped[list[EurovocConcept]] = mapped_column( + ListType(EurovocConceptType()) + ) + issues: Mapped[list[DataIssue]] = mapped_column(ListType(sa.Enum(DataIssue))) + + @property + def display_title(self) -> str | None: + if ( + self.title + and self.procedure_title + and len(self.title) > 125 + and len(self.procedure_title) < len(self.title) + ): + return self.procedure_title + + return self.title or self.procedure_title + + @property + def sharepic_url(self) -> str | None: + if not self.is_main: + return None + + return url_for("api.static_api.vote_sharepic", vote_id=self.id) + + +class VoteGroup(BaseWithId): + __tablename__ = "vote_groups" + + id: Mapped[str] = mapped_column(sa.Unicode, primary_key=True) + date: Mapped[datetime.date] = mapped_column(sa.Date) + issues: Mapped[list[DataIssue]] = mapped_column(ListType(sa.Enum(DataIssue))) diff --git a/backend/howtheyvote/pipelines/__init__.py b/backend/howtheyvote/pipelines/__init__.py new file mode 100644 index 000000000..f4d6566c4 --- /dev/null +++ b/backend/howtheyvote/pipelines/__init__.py @@ -0,0 +1,14 @@ +from .common import DataUnavailableError, PipelineError +from .members import MembersPipeline +from .press import PressPipeline +from .rcv_list import RCVListPipeline +from .sessions import SessionsPipeline + +__all__ = [ + "PipelineError", + "DataUnavailableError", + "RCVListPipeline", + "PressPipeline", + "MembersPipeline", + "SessionsPipeline", +] diff --git a/backend/howtheyvote/pipelines/common.py b/backend/howtheyvote/pipelines/common.py new file mode 100644 index 000000000..26cf91486 --- /dev/null +++ b/backend/howtheyvote/pipelines/common.py @@ -0,0 +1,6 @@ +class PipelineError(Exception): + pass + + +class DataUnavailableError(PipelineError): + pass diff --git a/backend/howtheyvote/pipelines/members.py b/backend/howtheyvote/pipelines/members.py new file mode 100644 index 000000000..e1c4d6f4d --- /dev/null +++ b/backend/howtheyvote/pipelines/members.py @@ -0,0 +1,114 @@ +import time +from collections.abc import Iterator + +from structlog import get_logger + +from .. import config +from ..files import download_file, image_thumb, member_photo_path +from ..models import Member +from ..scrapers import ( + MemberGroupsScraper, + MemberInfoScraper, + MembersScraper, + ScrapingError, +) +from ..store import Aggregator, BulkWriter, index_records, map_member + +log = get_logger(__name__) + + +class MembersPipeline: + def __init__(self, term: int): + self.term = term + self._member_ids: set[str] = set() + + def run(self) -> None: + log.info( + "Running pipeline", + name=type(self).__name__, + term=self.term, + ) + + try: + self._scrape_members() + self._scrape_member_groups() + self._scrape_member_infos() + self._download_member_photos() + self._index_members() + except ScrapingError: + log.exception( + "Failed running pipeline", + name=type(self).__name__, + term=self.term, + ) + + def _scrape_members(self) -> None: + log.info("Scraping RCV lists", term=self.term) + + writer = BulkWriter() + scraper = MembersScraper(term=self.term) + writer.add(scraper.run()) + writer.flush() + + self._member_ids = writer.get_touched() + + def _scrape_member_groups(self) -> None: + writer = BulkWriter() + + for member in self._members(): + log.info("Scraping member groups", term=self.term, member_id=member.id) + + try: + scraper = MemberGroupsScraper(web_id=member.id, term=self.term) + writer.add(scraper.run()) + except ScrapingError: + log.exception( + "Failed scraping member groups", member_id=member.id, term=self.term + ) + + writer.flush() + + def _scrape_member_infos(self) -> None: + writer = BulkWriter() + + for member in self._members(): + log.info("Scraping member info", term=self.term, member_id=member.id) + + try: + scraper = MemberInfoScraper(web_id=member.id) + writer.add(scraper.run()) + except ScrapingError: + log.exception( + "Failed scraping member info", member_id=member.id, term=self.term + ) + + writer.flush() + + def _download_member_photos(self) -> None: + for member in self._members(): + url = f"https://www.europarl.europa.eu/mepphoto/{member.id}.jpg" + + log.info("Downloading member photo.", member_id=member.id) + + try: + path = download_file(url, member_photo_path(member.id)) + except Exception: + log.exception("Failed download member photo.", member_id=member.id) + continue + + if not path: + log.error("Failed downloading member photo.", member_id=member.id) + continue + + log.info("Creating member photo thumbnail.", web_id=member.id) + image_thumb(path, member_photo_path(member.id, size=104), format="jpeg", size=104) + + time.sleep(config.REQUEST_SLEEP) + + def _index_members(self) -> None: + log.info("Indexing members", term=self.term) + index_records(Member, self._members()) + + def _members(self) -> Iterator[Member]: + aggregator = Aggregator(Member) + return aggregator.mapped_records(map_func=map_member, group_keys=self._member_ids) diff --git a/backend/howtheyvote/pipelines/press.py b/backend/howtheyvote/pipelines/press.py new file mode 100644 index 000000000..e1f1dccea --- /dev/null +++ b/backend/howtheyvote/pipelines/press.py @@ -0,0 +1,178 @@ +import datetime +from collections.abc import Iterator + +from sqlalchemy import func, select +from structlog import get_logger + +from ..analysis import FeaturedVotesAnalyzer +from ..db import Session +from ..models import PlenarySession, PressRelease, Vote +from ..query import session_is_current_at +from ..scrapers import ( + PressReleaseScraper, + PressReleasesIndexScraper, + PressReleasesRSSScraper, + ScrapingError, +) +from ..store import Aggregator, BulkWriter, index_records, map_press_release, map_vote + +log = get_logger(__name__) + + +class PressPipeline: + # At the time we introduced this constant, the value covered roughly one term. However, + # this obviously depends on the amount of press releases published and might need to be + # adjusted or made configurable in the future. + MAX_PAGES = 175 + + def __init__( + self, + date: datetime.date | None = None, + with_rss: bool | None = False, + ): + self.date = date + self.with_rss = with_rss + self._release_ids: set[str] = set() + self._vote_ids: set[str] = set() + + def run(self) -> None: + log.info( + "Running pipeline", + name=type(self).__name__, + date=self.date, + with_rss=self.with_rss, + ) + + try: + if self.with_rss: + self._scrape_press_releases_rss() + + self._scrape_press_releases_index() + self._scrape_press_releases() + self._analyze_featured_votes() + self._index_press_releases() + self._index_votes() + except ScrapingError: + log.exception( + "Failed running pipeline", + name=type(self).__name__, + date=self.date, + with_rss=self.with_rss, + ) + + def _scrape_press_releases_rss(self) -> None: + log.info("Fetching press releases from RSS", date=self.date) + writer = BulkWriter() + scraper = PressReleasesRSSScraper() + writer.add(scraper.run()) + writer.flush() + self._release_ids.update(writer.get_touched()) + + def _scrape_press_releases_index(self) -> None: + # There are two ways of running this pipeline, with or without a date. When passing + # a date, we use the filtering options of the EP Press Room. Without a date, we simply + # iterate over all press releases (up to a maximum number of pages). + + if self.date: + # The filtering feature of the EP Press Room often doesn't return all press + # releases for the given date. Sometimes the index in one language doesn't include + # all press releases (even if individual releases are translated), so we scrape + # both languages. However, even this likely misses a few press releases. + self._scrape_press_releases_index_by_date(language="fr", date=self.date) + self._scrape_press_releases_index_by_date(language="en", date=self.date) + else: + for page in range(self.MAX_PAGES): + self._scrape_press_releases_index_by_page(language="en", page=page) + + def _scrape_press_releases_index_by_page(self, language: str, page: int) -> None: + writer = BulkWriter() + log.info("Scraping press releases by page", page=page) + scraper = PressReleasesIndexScraper(language=language, page=page) + writer.add(scraper.run()) + writer.flush() + + self._release_ids.update(writer.get_touched()) + + def _scrape_press_releases_index_by_date(self, language: str, date: datetime.date) -> None: + log.info("Fetching plenary session information", date=date) + query = select(PlenarySession).where(session_is_current_at(date)) + plenary_session = Session.execute(query).scalar() + + if not plenary_session: + log.error("No plenary session found for the given day.", date=self.date) + return + + writer = BulkWriter() + + log.info("Scraping press releases by date", date=self.date) + scraper = PressReleasesIndexScraper( + session_start_date=plenary_session.start_date, + language=language, + ) + writer.add(scraper.run()) + writer.flush() + + self._release_ids.update(writer.get_touched()) + + def _scrape_press_releases(self) -> None: + writer = BulkWriter(auto_flush=1000) + + for release_id in self._release_ids: + log.info("Scraping press release contents", release_id=release_id, date=self.date) + + try: + scraper = PressReleaseScraper(release_id=release_id) + writer.add(scraper.run()) + except ScrapingError: + log.exception( + "Failed scraping press release contents", + release_id=release_id, + date=self.date, + ) + + writer.flush() + + def _analyze_featured_votes(self) -> None: + dates = set(pr.published_at.date() for pr in self._press_releases() if pr.published_at) + log.info("Analyzing featured votes for dates", count=len(dates)) + + for date in dates: + self._analyze_featured_votes_by_date(date) + + def _analyze_featured_votes_by_date(self, date: datetime.date) -> None: + log.info("Fetching votes", date=date) + query = select(Vote).where(func.date(Vote.timestamp) == date) + votes = Session.execute(query).scalars() + + if not votes: + log.error( + "No votes found for given date, skipping featured votes analysis", + dates=date, + ) + return + + log.info("Running featured votes analysis", date=date) + writer = BulkWriter() + analyzer = FeaturedVotesAnalyzer(votes=votes, press_releases=self._press_releases()) + writer.add(analyzer.run()) + writer.flush() + + self._vote_ids.update(writer.get_touched()) + + def _index_press_releases(self) -> None: + log.info("Indexing press releases", date=self.date) + index_records(PressRelease, self._press_releases()) + + def _index_votes(self) -> None: + log.info("Indexing votes", date=self.date) + index_records(Vote, self._votes()) + + def _press_releases(self) -> Iterator[PressRelease]: + aggregator = Aggregator(PressRelease) + return aggregator.mapped_records( + map_func=map_press_release, group_keys=self._release_ids + ) + + def _votes(self) -> Iterator[Vote]: + aggregator = Aggregator(Vote) + return aggregator.mapped_records(map_func=map_vote, group_keys=self._vote_ids) diff --git a/backend/howtheyvote/pipelines/rcv_list.py b/backend/howtheyvote/pipelines/rcv_list.py new file mode 100644 index 000000000..b463d4c05 --- /dev/null +++ b/backend/howtheyvote/pipelines/rcv_list.py @@ -0,0 +1,311 @@ +import datetime +from collections.abc import Iterator + +from cachetools import LRUCache +from sqlalchemy import select +from structlog import get_logger + +from ..analysis import ( + MainVoteAnalyzer, + VoteDataIssuesAnalyzer, + VoteGroupsAnalyzer, + VoteGroupsDataIssuesAnalyzer, +) +from ..db import Session +from ..files import ensure_parent, vote_sharepic_path +from ..models import Member, Vote, VoteGroup +from ..query import member_active_at +from ..scrapers import ( + DocumentScraper, + EurlexDocumentScraper, + EurlexProcedureScraper, + NoWorkingUrlError, + ProcedureScraper, + RCVListScraper, + RequestCache, + ScrapingError, +) +from ..sharepics import generate_vote_sharepic +from ..store import Aggregator, BulkWriter, index_records, map_vote, map_vote_group +from .common import DataUnavailableError, PipelineError + +log = get_logger(__name__) + + +class RCVListPipeline: + """Scrapes the RCV vote results for a single day, then runs analysis on the + extracted votes and scrapes additional information such as data about legislative + procedures.""" + + def __init__(self, term: int, date: datetime.date): + self.term = term + self.date = date + self._vote_ids: set[str] = set() + self._vote_group_ids: set[str] = set() + self._request_cache: RequestCache = LRUCache(maxsize=25) + + def run(self) -> None: + log.info( + "Running pipeline", + name=type(self).__name__, + term=self.term, + date=self.date, + ) + + try: + self._scrape_rcv_list() + self._scrape_documents() + self._scrape_eurlex_documents() + self._scrape_procedures() + self._scrape_eurlex_procedures() + self._analyze_main_votes() + self._analyze_vote_groups() + self._analyze_vote_data_issues() + self._index_votes() + + # Share pictures have to be generated after the votes are indexed. Otherwise, + # rendering the share pictures fails as data about new votes hasn’t yet been + # written to the database. + self._generate_vote_sharepics() + + self._analyze_vote_groups_data_issues() + self._index_vote_groups() + except NoWorkingUrlError as exc: + log.exception( + "Failed running pipeline", + name=type(self).__name__, + term=self.term, + date=self.date, + ) + raise DataUnavailableError("Pipeline data source is not available") from exc + except ScrapingError as exc: + log.exception( + "Failed running pipeline", + name=type(self).__name__, + term=self.term, + date=self.date, + ) + raise PipelineError("Failed running pipeline") from exc + + def _scrape_rcv_list(self) -> None: + log.info("Fetching active members", date=self.date) + query = ( + select(Member) + .where(member_active_at(self.date)) + .with_only_columns( + Member.id, + Member.first_name, + Member.last_name, + ) + ) + active_members = [tuple(row) for row in Session.execute(query).all()] + + log.info("Scraping RCV lists", date=self.date, term=self.term) + scraper = RCVListScraper( + term=self.term, + date=self.date, + active_members=active_members, + ) + + writer = BulkWriter() + writer.add(scraper.run()) + writer.flush() + + self._vote_ids = writer.get_touched() + + def _scrape_documents(self) -> None: + log.info("Scraping documents", date=self.date, term=self.term) + writer = BulkWriter() + + for vote in self._votes(): + if not vote.reference: + log.info( + "Skipping document scraper as vote has no reference", + vote_id=vote.id, + ) + continue + + scraper = DocumentScraper( + vote_id=vote.id, + reference=vote.reference, + request_cache=self._request_cache, + ) + + try: + writer.add(scraper.run()) + except ScrapingError: + log.exception( + "Failed scraping document", + vote_id=vote.id, + reference=vote.reference, + ) + + writer.flush() + + def _scrape_eurlex_documents(self) -> None: + log.info("Scraping EUR-Lex documents", date=self.date, term=self.term) + writer = BulkWriter() + + for vote in self._votes(): + if not vote.reference: + log.info( + "Skipping EUR-Lex document scraper as vote has no reference", + vote_id=vote.id, + ) + continue + + scraper = EurlexDocumentScraper( + vote_id=vote.id, + reference=vote.reference, + request_cache=self._request_cache, + ) + + try: + writer.add(scraper.run()) + except ScrapingError: + log.exception( + "Failed scraping EUR-Lex document", + vote_id=vote.id, + procedure_reference=vote.reference, + ) + + writer.flush() + + def _scrape_procedures(self) -> None: + log.info("Scraping procedures", date=self.date, term=self.term) + writer = BulkWriter() + + for vote in self._votes(): + if not vote.procedure_reference: + log.info( + "Skipping procedure scraper as vote has no procedure reference", + vote_id=vote.id, + ) + continue + + scraper = ProcedureScraper( + vote_id=vote.id, + procedure_reference=vote.procedure_reference, + request_cache=self._request_cache, + ) + + try: + writer.add(scraper.run()) + except ScrapingError: + log.exception( + "Failed scraping procedure", + vote_id=vote.id, + procedure_reference=vote.procedure_reference, + ) + + writer.flush() + + def _scrape_eurlex_procedures(self) -> None: + log.info("Scraping EUR-Lex procedures", date=self.date, term=self.term) + writer = BulkWriter() + + for vote in self._votes(): + if not vote.procedure_reference: + log.info( + "Skipping EUR-Lex procedure scraper as vote has no procedure reference", + vote_id=vote.id, + ) + continue + + scraper = EurlexProcedureScraper( + vote_id=vote.id, + procedure_reference=vote.procedure_reference, + request_cache=self._request_cache, + ) + + try: + writer.add(scraper.run()) + except ScrapingError: + log.exception( + "Failed scraping EUR-Lex procedure", + vote_id=vote.id, + procedure_reference=vote.procedure_reference, + ) + + writer.flush() + + def _analyze_main_votes(self) -> None: + log.info("Running main votes analysis", date=self.date, term=self.term) + writer = BulkWriter() + + for vote in self._votes(): + analyzer = MainVoteAnalyzer(vote.id, vote.description) + writer.add(analyzer.run()) + + writer.flush() + + def _analyze_vote_groups(self) -> None: + log.info("Running vote groups analysis", date=self.date, term=self.term) + writer = BulkWriter() + analyzer = VoteGroupsAnalyzer(date=self.date, votes=self._votes()) + writer.add(analyzer.run()) + writer.flush() + + def _generate_vote_sharepics(self) -> None: + for vote in self._votes(): + if not vote.is_main: + log.info( + "Skipping sharepic generation because vote is not main.", vote_id=vote.id + ) + continue + + log.info("Generating vote sharepic.", vote_id=vote.id) + + try: + image = generate_vote_sharepic(vote.id) + path = vote_sharepic_path(vote.id) + ensure_parent(path) + path.write_bytes(image) + except Exception: + log.exception("Failed generating vote sharepic.", vote_id=vote.id) + continue + + def _analyze_vote_data_issues(self) -> None: + log.info( + "Running data issues analysis for individual votes", + date=self.date, + term=self.term, + ) + writer = BulkWriter() + + for vote in self._votes(): + analyzer = VoteDataIssuesAnalyzer(vote) + writer.add(analyzer.run()) + + writer.flush() + + def _analyze_vote_groups_data_issues(self) -> None: + log.info( + "Running data issues analysis for vote groups", + date=self.date, + term=self.term, + ) + writer = BulkWriter() + analyzer = VoteGroupsDataIssuesAnalyzer(votes=self._votes()) + writer.add(analyzer.run()) + writer.flush() + + self._vote_group_ids = writer.get_touched() + + def _index_votes(self) -> None: + log.info("Indexing votes", date=self.date, term=self.term) + index_records(Vote, self._votes()) + + def _index_vote_groups(self) -> None: + log.info("Indexing vote groups", date=self.date, term=self.term) + index_records(VoteGroup, self._vote_groups()) + + def _votes(self) -> Iterator[Vote]: + aggregator = Aggregator(Vote) + return aggregator.mapped_records(map_func=map_vote, group_keys=self._vote_ids) + + def _vote_groups(self) -> Iterator[VoteGroup]: + aggregator = Aggregator(VoteGroup) + return aggregator.mapped_records( + map_func=map_vote_group, group_keys=self._vote_group_ids + ) diff --git a/backend/howtheyvote/pipelines/sessions.py b/backend/howtheyvote/pipelines/sessions.py new file mode 100644 index 000000000..32459267f --- /dev/null +++ b/backend/howtheyvote/pipelines/sessions.py @@ -0,0 +1,70 @@ +from collections.abc import Iterator + +from structlog import get_logger + +from ..models import PlenarySession +from ..scrapers import CalendarSessionsScraper, ODPSessionScraper, ScrapingError +from ..store import Aggregator, BulkWriter, index_records, map_plenary_session + +log = get_logger(__name__) + + +class SessionsPipeline: + def __init__(self, term: int): + self.term = term + self._session_ids: set[str] = set() + + def run(self) -> None: + log.info("Running pipeline", name=type(self).__name__, term=self.term) + + try: + self._scrape_sessions() + self._scrape_session_locations() + self._index_sessions() + except ScrapingError: + log.exception("Failed running pipeline", name=type(self).__name__, term=self.term) + + def _scrape_sessions(self) -> None: + log.info("Scrapping plenary sessions", term=self.term) + writer = BulkWriter() + scraper = CalendarSessionsScraper(term=self.term) + writer.add(scraper.run()) + writer.flush() + self._session_ids = writer.get_touched() + + def _scrape_session_locations(self) -> None: + log.info("Scraping locations of plenary sessions", term=self.term) + writer = BulkWriter() + + for plenary_session in self._sessions(): + if plenary_session.location: + # Do not bother to re-scrape the location of sessions if they are + # already in the database. Locations are unlikely to change even for + # upcoming sessions. + log.info( + "Skipping session as location already in database", + session_id=plenary_session.id, + location=plenary_session.location, + ) + continue + + try: + scraper = ODPSessionScraper(start_date=plenary_session.start_date) + writer.add(scraper.run()) + except ScrapingError: + log.exception( + "Failed scraping location of plenary session", + session_id=plenary_session.id, + ) + + writer.flush() + + def _index_sessions(self) -> None: + log.info("Indexing plenary sessions", term=self.term) + index_records(PlenarySession, self._sessions()) + + def _sessions(self) -> Iterator[PlenarySession]: + aggregator = Aggregator(PlenarySession) + return aggregator.mapped_records( + map_func=map_plenary_session, group_keys=self._session_ids + ) diff --git a/backend/howtheyvote/query.py b/backend/howtheyvote/query.py new file mode 100644 index 000000000..bc171f703 --- /dev/null +++ b/backend/howtheyvote/query.py @@ -0,0 +1,77 @@ +import datetime +from collections.abc import Iterable + +import sqlalchemy as sa +from sqlalchemy import ColumnElement, Exists, exists, func + +from .models import BaseWithId, Fragment, Member, PlenarySession, PressRelease, Vote + + +def member_has_term(term: int) -> Exists: + """Returns an expression that can be used to select only members for the given term.""" + exp = func.json_each(Member.terms).table_valued("value") # type: ignore[no-untyped-call] + return exists().select_from(exp).where(exp.c.value == term) + + +def member_active_at(date: datetime.date) -> Exists: + """Returns an expression that can be used to select only members with an active group + membership on the given date.""" + exp = func.json_each(Member.group_memberships).table_valued("value") # type: ignore[no-untyped-call] + start_date = func.date(func.json_extract(exp.c.value, "$.start_date")) + end_date = func.date(func.json_extract(exp.c.value, "$.end_date")) + + return ( + exists() + .select_from(exp) + .where( + sa.and_( + start_date <= date, + sa.or_(end_date == None, end_date >= date), # noqa: E711 + ) + ) + ) + + +def session_is_current_at(date: datetime.date) -> ColumnElement[bool]: + """Returns an expression that can be used to select the plenary session for + the given date.""" + return sa.and_( + func.date(PlenarySession.start_date) <= func.date(date), + func.date(PlenarySession.end_date) >= func.date(date), + ) + + +def press_release_references_vote(vote: Vote) -> ColumnElement[bool]: + """Returns an expression that can be used to select press releases for a given vote, + i.e. press releases published on the same date that reference the same procedure or + report/resolution.""" + ref_exp = func.json_each(PressRelease.references).table_valued("value") # type: ignore[no-untyped-call] + proc_ref_exp = func.json_each(PressRelease.procedure_references).table_valued("value") # type: ignore[no-untyped-call] + + return sa.and_( + func.date(PressRelease.published_at) == vote.timestamp.date(), + sa.or_( + exists().select_from(ref_exp).where(ref_exp.c.value == vote.reference), + exists() + .select_from(proc_ref_exp) + .where(proc_ref_exp.c.value == vote.procedure_reference), + ), + ) + + +def fragments_for_records(records: Iterable[BaseWithId | None]) -> ColumnElement[bool]: + """Returns an expression that can be used to select fragments for the given records.""" + filters: list[ColumnElement[bool]] = [] + + for record in records: + if not record: + continue + + filters.append( + sa.and_( + Fragment.model == record.__class__.__name__, + Fragment.group_key == record.id, + ), + ) + + return sa.or_(*filters) diff --git a/backend/howtheyvote/scrapers/__init__.py b/backend/howtheyvote/scrapers/__init__.py new file mode 100644 index 000000000..a96f7bcec --- /dev/null +++ b/backend/howtheyvote/scrapers/__init__.py @@ -0,0 +1,36 @@ +from .common import NoWorkingUrlError, RequestCache, ScrapingError +from .members import MemberGroupsScraper, MemberInfoScraper, MembersScraper +from .press_releases import ( + PressReleaseScraper, + PressReleasesIndexScraper, + PressReleasesRSSScraper, +) +from .sessions import CalendarSessionsScraper, ODPSessionScraper +from .votes import ( + DocumentScraper, + EurlexDocumentScraper, + EurlexProcedureScraper, + ProcedureScraper, + RCVListEnglishScraper, + RCVListScraper, +) + +__all__ = [ + "ScrapingError", + "NoWorkingUrlError", + "RequestCache", + "MembersScraper", + "MemberGroupsScraper", + "MemberInfoScraper", + "CalendarSessionsScraper", + "ODPSessionScraper", + "ProcedureScraper", + "RCVListScraper", + "RCVListEnglishScraper", + "DocumentScraper", + "EurlexDocumentScraper", + "EurlexProcedureScraper", + "PressReleasesIndexScraper", + "PressReleasesRSSScraper", + "PressReleaseScraper", +] diff --git a/backend/howtheyvote/scrapers/common.py b/backend/howtheyvote/scrapers/common.py new file mode 100644 index 000000000..3b9e9db92 --- /dev/null +++ b/backend/howtheyvote/scrapers/common.py @@ -0,0 +1,191 @@ +import html +import random +import time +from abc import ABC, abstractmethod +from typing import Any, Generic, TypeVar + +import requests +from bs4 import BeautifulSoup +from cachetools import Cache +from requests import RequestException, Response +from structlog import get_logger + +from .. import config +from ..models import BaseWithId, Fragment + +log = get_logger(__name__) + +USER_AGENTS = [ + "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36", # noqa: E501 + "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.1 Safari/605.1.15", # noqa: E501 + "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:67.0) Gecko/20100101 Firefox/67.0", # noqa: E501 +] + + +class ScrapingError(Exception): + pass + + +class NoWorkingUrlError(ScrapingError): + pass + + +RequestCache = Cache[str, Response | None] + + +def get_url( + url: str, + headers: dict[str, str], + request_cache: RequestCache | None = None, + max_retries: int = 0, +) -> requests.Response | None: + if isinstance(request_cache, Cache): + if url in request_cache: + log.info("Request cache hit", url=url) + return request_cache[url] + else: + log.info("Request cache miss", url=url) + + response = None + + for retry in range(0, max_retries + 1): + try: + response = requests.get(url, headers=headers, timeout=config.REQUEST_TIMEOUT) + + # Very basic request throttling with exponential backoff for retries + time.sleep(config.REQUEST_SLEEP * (2**retry)) + + if response.ok: + log.info( + "URL request succeeded", + url=url, + retry=retry, + max_retries=max_retries, + status=response.status_code, + took=response.elapsed.total_seconds(), + ) + break + + log.warning( + "URL request failed", + url=url, + retry=retry, + max_retries=max_retries, + status=response.status_code, + took=response.elapsed.total_seconds(), + ) + except RequestException: + log.warning( + "URL request failed", + url=url, + retry=retry, + max_retries=max_retries, + ) + + if isinstance(request_cache, Cache): + log.info("Caching response", url=url) + request_cache[url] = response + + return response + + +ResourceType = TypeVar("ResourceType") + + +class BaseScraper(ABC, Generic[ResourceType]): + REQUEST_MAX_RETRIES: int = 0 + + def __init__(self, request_cache: RequestCache | None = None, **kwargs: Any) -> None: + self._request_cache = request_cache + self._log = log.bind(scraper=type(self).__name__, **kwargs) + + def run(self) -> Any: + self._log.info("Running scraper") + self._response = self._fetch() + doc = self._parse(self._response) + return self._extract_data(doc) + + @abstractmethod + def _extract_data(self, doc: ResourceType) -> Any: + raise NotImplementedError + + @abstractmethod + def _url(self) -> str | list[str]: + raise NotImplementedError + + @abstractmethod + def _parse(self, response: Response) -> ResourceType: + raise NotImplementedError + + def _fragment( + self, + model: type[BaseWithId], + source_id: str | int, + group_key: str | int, + data: Any, + ) -> Fragment: + return Fragment( + model=model.__name__, + source_id=source_id, + source_name=type(self).__name__, + source_url=self._response.request.url, + group_key=group_key, + data=data, + ) + + def _fetch(self) -> Response: + urls = self._url() + headers = self._headers() + + if isinstance(urls, str): + urls = [urls] + + for url in urls: + self._log.info("Loading source", url=url, user_agent=headers["user-agent"]) + response = get_url( + url=url, + headers=headers, + request_cache=self._request_cache, + max_retries=self.REQUEST_MAX_RETRIES, + ) + + if not response or not response.ok: + continue + + return response + + self._log.error("No working URL found.", urls=urls) + raise NoWorkingUrlError("No working URL found.") + + def _headers(self) -> dict[str, str]: + return { + "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", + "accept-language": "en-us", + "user-agent": random.choice(USER_AGENTS), + } + + +class BeautifulSoupScraper(BaseScraper[BeautifulSoup]): + BS_PARSER: str = "lxml" + RESPONSE_ENCODING: str | None = None + + def _parse(self, response: Response) -> BeautifulSoup: + # Some sources do not return the correct character encoding in the + # HTTP headers which confuses request when trying to decode the + # response. In those cases, we need to force the correct encoding. + if self.RESPONSE_ENCODING: + raw = response.content.decode(self.RESPONSE_ENCODING) + else: + raw = response.text + + # Handle HTML-encoded special-characters, as BeautifulSoup + # seems to decode them to incorrect Unicode characters + if self.BS_PARSER != "lxml-xml": + raw = html.unescape(raw) + + return BeautifulSoup(raw, self.BS_PARSER) + + +class JSONScraper(BaseScraper[Any]): + def _parse(self, response: Response) -> Any: + return response.json() diff --git a/backend/howtheyvote/scrapers/helpers.py b/backend/howtheyvote/scrapers/helpers.py new file mode 100644 index 000000000..4865c87a0 --- /dev/null +++ b/backend/howtheyvote/scrapers/helpers.py @@ -0,0 +1,149 @@ +import re + +from structlog import get_logger +from unidecode import unidecode + +from ..helpers import REFERENCE_REGEX +from ..models import Fragment + +log = get_logger(__name__) + +NAME_AFFIXES = [ + "de", + "del", + "della", + "di", + "du", + "d'", + "M'", + "Mac", + "Mc", + "van", + "von", + "der", + "zu", + "und", + "in 't", +] + + +def parse_full_name(name: str) -> tuple[str | None, str | None]: + # Last names are indicated on the parliament with upper case letters. + # If we find two upper case letters following each other we found the + # end of the first name. There are also parts like "de" that can be + # part of the first or the last name. If we find two capitalized letters + # after such a word, it belongs to the last name. Otherwise it belongs to + # the first name. Affixes of last names can also contain special characters + # and have multiple parts (see NAME_AFFIXES). + # Brackets are always an indicator for the end of the first name. + # e.g. William -- (The Earl of) DARTMOUTH + first = r"(?P^(?:(?!\s((?:[\(A-Z]){2}|['a-z\s]*(?:[A-Z]){2})).)+)" + + affix = r"(?:\s|" + "|".join(NAME_AFFIXES) + r")*" + aristocratic_title = r"(?:\(.*\)\s)?" + last = r"(?P" + aristocratic_title + affix + r"[A-Za-z\-\'\s]+)" + + regex = r"^" + first + r"\s" + last + r"$" + match = re.search(regex, unidecode(name)) + + if match is None: + return (None, None) + + # In order to keep special characters, use the + # start/end indices of match groups with the + # original name + return name[: match.end("first")], name[match.start("last") :] + + +def normalize_whitespace(string: str) -> str: + return re.sub(r"\s+", " ", string).strip() + + +def normalize_name(name: str) -> str: + return unidecode(name.lower()).replace("-", " ") + + +def parse_rcv_text( + text: str, extract_english: bool = False +) -> tuple[str | None, str | None, str | None, str | None]: + delimiter = " - " + + # Replace different types of dashes with standard dashes + text = re.sub(r"\s[-–—]\s", " - ", text) + + parts = [part.strip() for part in text.split(delimiter)] + before_reference = [] + after_reference = [] + + reference = None + description = None + rapporteur = None + title = None + + while parts: + part = parts.pop(0) + match = re.fullmatch(REFERENCE_REGEX, part) + + if match: + reference = match.group(0) + break + else: + before_reference.append(part) + + after_reference = parts + + # In many cases, the RCV description contains the actual title + # in 3 languages (French, English, and German). If the number of + # parts (seperated by dashes) is a multiple of 3, this is likely + # the case. If not, we don’t know for sure. + if extract_english: + if before_reference and len(before_reference) % 3 == 0: + # Extract the English translation of the title + multiplier = len(before_reference) // 3 + start = 1 * multiplier + end = 2 * multiplier + title = delimiter.join(before_reference[start:end]) + elif before_reference and not reference: + title = delimiter.join(before_reference) + else: + if before_reference: + title = delimiter.join(before_reference) + else: + title = None + + # If the vote is related to a report (reference starts with "A"), the + # part after the reference contains the name of the rapporteur + if reference and reference.startswith("A"): + rapporteur = after_reference.pop(0) + + if after_reference: + description = delimiter.join(after_reference) + else: + description = None + + return (title, rapporteur, reference, description) + + +def fill_missing_by_reference(fragments: list[Fragment], key: str) -> list[Fragment]: + # If the list contains multiple votes on the same topic, usually the first has + # a full title, the remaining votes only contain the (same) reference. We loop + # through and try to populate missing titles based on references. + by_reference = {} + + for fragment in fragments: + data = fragment.data + ref = data.get("reference") + value = data.get(key) + + if ref and value: + by_reference[ref] = value + + for fragment in fragments: + data = fragment.data + ref = data.get("reference") + if not data.get(key) and ref: + value = by_reference.get(ref) + if value: + data[key] = value + + return fragments diff --git a/backend/howtheyvote/scrapers/members.py b/backend/howtheyvote/scrapers/members.py new file mode 100644 index 000000000..a38edc745 --- /dev/null +++ b/backend/howtheyvote/scrapers/members.py @@ -0,0 +1,231 @@ +from datetime import date, datetime +from typing import Any, cast + +from bs4 import BeautifulSoup, Tag +from structlog import get_logger + +from ..models import Country, Fragment, Group, Member +from .common import BeautifulSoupScraper, RequestCache, ScrapingError +from .helpers import parse_full_name + +log = get_logger(__name__) + + +class MembersScraper(BeautifulSoupScraper): + """Scrapes member IDs from the XML version of the official MEP directory. The + directory includes outgoing and ingoing members.""" + + BASE_URL = "https://www.europarl.europa.eu/meps/en/directory/xml" + BS_PARSER = "lxml-xml" + + def __init__(self, term: int, request_cache: RequestCache | None = None): + super().__init__(term=term, request_cache=request_cache) + self.term = term + + def _url(self) -> str: + return f"{self.BASE_URL}/?leg={self.term}" + + def _extract_data(self, doc: BeautifulSoup) -> list[Fragment]: + tags = doc.find_all("mep") + fragments = [self._member(tag) for tag in tags] + self._log.info("Extracted members", count=len(fragments)) + return fragments + + def _member(self, tag: Tag) -> Fragment: + identifier = self._identifier(tag) + + return self._fragment( + model=Member, + source_id=f"{identifier}:{self.term}", + group_key=identifier, + data={"term": self.term}, + ) + + def _identifier(self, tag: Tag) -> int: + element = tag.select_one("id") + + if not element: + raise ScrapingError("Could not find `id` element.") + + return int(element.text) + + +class MemberInfoScraper(BeautifulSoupScraper): + """Scrapes basic biographical information for a given member (for example + first and last names, nationality, social media profiles).""" + + BASE_URL = "https://www.europarl.europa.eu/meps/en" + + def __init__(self, web_id: int, request_cache: RequestCache | None = None): + super().__init__(web_id=web_id, request_cache=request_cache) + self.web_id = web_id + + def _url(self) -> str: + return f"{self.BASE_URL}/{self.web_id}/NAME/home" + + def _extract_data(self, doc: BeautifulSoup) -> Fragment: + first, last = self._name(doc) + + return self._fragment( + model=Member, + source_id=self.web_id, + group_key=self.web_id, + data={ + "first_name": first, + "last_name": last, + "date_of_birth": self._date_of_birth(doc), + "facebook": self._facebook(doc), + "twitter": self._twitter(doc), + "email": self._email(doc), + "country": self._country(doc), + }, + ) + + def _facebook(self, doc: BeautifulSoup) -> str | None: + tag = doc.select_one("#presentationmep a.link_fb") + if tag is None: + return None + + # https://github.com/python/typeshed/issues/8755 + return cast(str, tag["href"]) + + def _twitter(self, doc: BeautifulSoup) -> str | None: + tag = doc.select_one("#presentationmep a.link_twitt") + if tag is None: + return None + + # https://github.com/python/typeshed/issues/8755 + return cast(str, tag["href"]) + + def _email(self, doc: BeautifulSoup) -> str | None: + # The e-mail addresses are reversed in the page-source for spam detection + # reasons. The reversal is undone using JavaScript on page-load. + tag = doc.select_one(".link_email[href*='aporue.lraporue']") + if tag is None: + return None + + # https://github.com/python/typeshed/issues/8755 + href = cast(str, tag["href"]) + + address = href.replace("mailto:", "").replace("[dot]", ".").replace("[at]", "@") + address = address[::-1] + + return address + + def _name(self, doc: BeautifulSoup) -> tuple[str | None, str | None]: + tag = doc.select_one("#presentationmep div.erpl_title-h1") + + if not tag: + raise ScrapingError("Could not find element containing member name.") + + full = tag.text.strip() + return parse_full_name(full) + + def _date_of_birth(self, doc: BeautifulSoup) -> date | None: + tag = doc.select_one(".sln-birth-date") + + if not tag: + return None + + raw = tag.text.strip() + return datetime.strptime(raw, "%d-%m-%Y").date() + + def _country(self, doc: BeautifulSoup) -> str: + tag = doc.select_one("#presentationmep div.erpl_title-h3") + + if not tag: + raise ScrapingError("Could not find element containing member country.") + + label = tag.text.split("-")[0].strip() + country = Country.from_label(label) + + if not country: + raise ScrapingError(f"Could not find country {label}") + + return country.code + + +class MemberGroupsScraper(BeautifulSoupScraper): + """Scrapes group memberships for a given member and term. This includes current and past + group memberships with start and end dates.""" + + BASE_URL = "https://www.europarl.europa.eu/meps/en" + + def __init__(self, web_id: int, term: int, request_cache: RequestCache | None = None): + super().__init__(web_id=web_id, term=term, request_cache=request_cache) + self.web_id = web_id + self.term = term + + def _url(self) -> str: + return f"{self.BASE_URL}/{self.web_id}/NAME/history/{self.term}" + + def _extract_data(self, doc: BeautifulSoup) -> Fragment: + tags = doc.select("#status .erpl_meps-status:first-child ul li") + group_memberships = [self._group_membership(tag) for tag in tags] + self._log.info("Extracted group memberships", count=len(group_memberships)) + + return self._fragment( + model=Member, + source_id=f"{self.web_id}:{self.term}", + group_key=self.web_id, + data={"group_memberships": group_memberships}, + ) + + def _group_membership(self, tag: Tag) -> dict[str, Any]: + start, end = self._date_range(tag) + group = self._group(tag) + + return { + "group": group, + "term": self.term, + "start_date": start, + "end_date": end, + } + + def _group(self, tag: Tag) -> str: + text = "".join(tag.find_all(string=True, recursive=False)) + text = text.removeprefix(" : ") + + positions = [ + "President", + "Co-President", + "Vice-President", + "Chair", + "Co-Chair", + "Vice-Chair", + "First Vice-Chair", + "Chair of the Bureau", + "Member of the Bureau", + "Treasurer", + "Co-treasurer", + "Member", + ] + + for pos in positions: + text = text.removesuffix(f" - {pos}") + + group = Group.from_label(text) + + if not group: + raise ScrapingError(f"Could not find group named {text}") + + return group.code + + def _date_range(self, tag: Tag) -> tuple[date, date | None]: + strong = cast(Tag | None, tag.find("strong")) + + if not strong: + raise ScrapingError("Could not find elmenet containing date range.") + + text = strong.text + + if "..." in text: + iso_str = text.split(" ...")[0] + start_date = datetime.strptime(iso_str, "%d-%m-%Y").date() + + return start_date, None + + parts = text.split(" / ") + start, end = (datetime.strptime(part, "%d-%m-%Y") for part in parts) + + return start.date(), end.date() diff --git a/backend/howtheyvote/scrapers/press_releases.py b/backend/howtheyvote/scrapers/press_releases.py new file mode 100644 index 000000000..8faa1e78a --- /dev/null +++ b/backend/howtheyvote/scrapers/press_releases.py @@ -0,0 +1,261 @@ +import datetime +import re +from collections.abc import Iterator +from typing import cast +from urllib.parse import parse_qs, urlencode, urlparse + +from bs4 import BeautifulSoup +from structlog import get_logger + +from ..models import Fragment, PressRelease +from .common import BeautifulSoupScraper, RequestCache + +log = get_logger(__name__) + + +class PressReleasesIndexScraper(BeautifulSoupScraper): + BASE_URL = "https://www.europarl.europa.eu/news/{language}/page/{page}" + ITEM_URL = "https://www.europarl.europa.eu/news/en/press-room/" + + def __init__( + self, + language: str, + session_start_date: datetime.date | None = None, + page: int = 0, + request_cache: RequestCache | None = None, + ): + super().__init__( + session_start_date=session_start_date, + language=language, + page=page, + request_cache=request_cache, + ) + self.session_start_date = session_start_date + self.language = language + self.page = page + self.base_url = self.BASE_URL.format(language=self.language, page=self.page) + + def _url(self) -> str: + query_string = {} + + if self.session_start_date: + query_string = { + "contentType": "plenary", + "keywordValue": self.session_start_date.strftime("%d-%m-%Y"), + } + + return f"{self.base_url}?{urlencode(query_string)}" + + def _extract_data(self, doc: BeautifulSoup) -> list[Fragment]: + items = doc.select("article.ep-m_product") + fragments: list[Fragment] = [] + + for item in items: + # When scraping unfiltered index pages, the list will also contain press releases + # that are not related to a plenary session. We keep only press releases related to + # plenary sessions. + content_type = item.select_one(".ep-layout_contenttype.ep-layout_plenary") + + if not content_type: + continue + + if not content_type.get_text(strip=True).lower() == "plenary session": + continue + + link = item.select_one("a") + href = link["href"] if link else None + + if not isinstance(href, str): + continue + + if not href.startswith(self.ITEM_URL): + continue + + regex = re.escape(self.ITEM_URL) + r"(.*)/" + match = re.match(regex, href) + + if not match: + log.warning("Could not extract ID, skipping press release", url=href) + continue + + release_id = match.group(1) + + if not release_id: + log.warning("Could not extract ID, skipping press release", url=href) + continue + + fragment = self._fragment( + model=PressRelease, + source_id=release_id, + group_key=release_id, + data={}, + ) + + fragments.append(fragment) + + return fragments + + +class PressReleasesRSSScraper(BeautifulSoupScraper): + URL = "https://www.europarl.europa.eu/rss/doc/press-releases-plenary/en.xml" + BS_PARSER = "lxml-xml" + + def _url(self) -> str: + return self.URL + + def _extract_data(self, doc: BeautifulSoup) -> list[Fragment]: + fragments = [] + + for item in doc.select("item"): + link_tag = item.select_one("link") + + if not link_tag: + continue + + release_id = self._id_from_url(link_tag.text.strip()) + + if not release_id: + continue + + fragment = self._fragment( + model=PressRelease, + source_id=release_id, + group_key=release_id, + data={}, + ) + + fragments.append(fragment) + + return fragments + + def _id_from_url(self, url: str) -> str | None: + # https://www.europarl.europa.eu/news/en/press-room/20230911IPR04931/ + pattern = r"\d{4}\d{2}\d{2}IPR\d+" + match = re.search(pattern, url) + + if not match: + return None + + return match.group(0) + + +class PressReleaseScraper(BeautifulSoupScraper): + BASE_URL = "https://www.europarl.europa.eu/news/en/press-room/" + + def __init__( + self, + release_id: str, + request_cache: RequestCache | None = None, + ): + super().__init__(release_id=release_id, request_cache=request_cache) + self.release_id = release_id + + def _url(self) -> str: + return f"{self.BASE_URL}{self.release_id}" + + def _extract_data(self, doc: BeautifulSoup) -> Fragment | None: + return self._fragment( + model=PressRelease, + source_id=self.release_id, + group_key=self.release_id, + data={ + "title": self._title(doc), + "published_at": self._published_at(doc), + "reference": self._references(doc), + "procedure_reference": self._procedure_references(doc), + "facts": self._facts(doc), + }, + ) + + def _title(self, doc: BeautifulSoup) -> str | None: + title = doc.select_one("#website-body h1.ep_title") + + if not title: + return None + + return title.text.strip() + + def _facts(self, doc: BeautifulSoup) -> str | None: + list_ = doc.select_one("#website-body .ep-a_facts ul") + + if not list_: + # Some press releases use a standard lists at the beginning of the article body + list_ = doc.select_one("#website-body .ep-a_text ul") + + if not list_: + return None + + items = [item.text.strip() for item in list_.select("li")] + items = [f"
  • {item}
  • " for item in items] + return "
      " + "".join(items) + "
    " + + def _published_at(self, doc: BeautifulSoup) -> datetime.datetime | None: + element = doc.select_one('.ep_subtitle time[itemprop="datePublished"]') + + if not element: + return None + + # https://github.com/python/typeshed/issues/8755 + iso_str = cast(str | None, element.get("datetime")) + + if not iso_str: + return None + + return datetime.datetime.fromisoformat(iso_str) + + def _references(self, doc: BeautifulSoup) -> list[str] | None: + references: list[str] = [] + + for link in self._links(doc): + url = urlparse(link) + + if not url.path.startswith("/doceo/document"): + continue + + filename = url.path.rsplit("/", 1)[-1] + pattern = r"(A|B|RC)-(\d+)-(\d{4})-(\d{4})_EN\.html" + match = re.match(pattern, filename) + + if not match: + continue + + type_ = match.group(1) + term = match.group(2) + year = match.group(3) + number = match.group(4) + + if type_ == "RC": + type_ = "RC-B" + + references.append(f"{type_}{term}-{number}/{year}") + + return references + + def _procedure_references(self, doc: BeautifulSoup) -> list[str] | None: + references: list[str] = [] + + for link in self._links(doc): + if not link.startswith( + "https://oeil.secure.europarl.europa.eu/oeil/popups/ficheprocedure.do" + ): + continue + + url = urlparse(link) + args = parse_qs(url.query) + ref = args.get("reference") + + if ref: + # Some press releases link to two or more (related) procedures. We're + # ignoring this case for the sake of simplicity. + references.append(ref[0].strip()) + + return references + + def _links(self, doc: BeautifulSoup) -> Iterator[str]: + links = doc.select(".ep-a_links ul li a") + + for link in links: + href = link.get("href") + + if isinstance(href, str): + yield href diff --git a/backend/howtheyvote/scrapers/sessions.py b/backend/howtheyvote/scrapers/sessions.py new file mode 100644 index 000000000..aa8ed5713 --- /dev/null +++ b/backend/howtheyvote/scrapers/sessions.py @@ -0,0 +1,124 @@ +from datetime import date, datetime +from typing import Any + +from bs4 import BeautifulSoup + +from ..models import Fragment, PlenarySession, PlenarySessionLocation +from .common import BeautifulSoupScraper, JSONScraper, RequestCache, ScrapingError + + +class CalendarSessionsScraper(JSONScraper): + BASE_URL = ( + "https://www.europarl.europa.eu/plenary/en/ajax/" + "getSessionCalendar.html?family=PV&termId=" + ) + + def __init__( + self, + term: int, + request_cache: RequestCache | None = None, + ): + super().__init__(term=term, request_cache=request_cache) + self.term = term + + def _url(self) -> str: + return f"{self.BASE_URL}{self.term}" + + def _extract_data(self, doc: dict[Any, Any]) -> list[Fragment]: + start_date_attr = doc.get("startDate") + end_date_attr = doc.get("endDate") + + if not isinstance(start_date_attr, str): + raise ScrapingError("Could not find `startDate` property.") + + if not isinstance(end_date_attr, str): + raise ScrapingError("Could not find `endDate` property.") + + start_date = datetime.strptime(start_date_attr, "%d/%m/%Y").date() + end_date = datetime.strptime(end_date_attr, "%d/%m/%Y").date() + sessions = doc.get("sessionCalendar", []) + + # The data source has a separate item for every day of a plenary session. Using + # the start date as dict keys automatically de-duplicates the items. The result + # is one item per plenary session. + fragments = {} + + for session in sessions: + fragment = self._session(session) + if start_date <= fragment.data["start_date"] <= end_date: + fragments[fragment.data["start_date"]] = fragment + + return list(fragments.values()) + + def _session(self, session: dict[Any, Any]) -> Fragment: + start_date = self._date( + session["year"], + session["monthStartDateSession"], + session["dayStartDateSession"], + ) + + end_date = self._date( + session["year"], + session["monthEndDateSession"], + session["dayEndDateSession"], + ) + + return self._fragment( + model=PlenarySession, + source_id=start_date.isoformat(), + group_key=start_date.isoformat(), + data={ + "start_date": start_date, + "end_date": end_date, + "term": self.term, + }, + ) + + def _date(self, year: str, month: str, day: str) -> date: + return date(int(year), int(month), int(day)) + + +class ODPSessionScraper(BeautifulSoupScraper): + BASE_URL = "https://data.europarl.europa.eu/api/v1/meetings" + BS_PARSER = "lxml-xml" + + def __init__( + self, + start_date: date, + request_cache: RequestCache | None = None, + ): + super().__init__(start_date=date, request_cache=request_cache) + self.start_date = start_date + + def _url(self) -> str: + return f"{self.BASE_URL}/MTG-PL-{self.start_date.isoformat()}" + + def _extract_data(self, doc: BeautifulSoup) -> Fragment | None: + locality = doc.select_one( + "rdf|RDF > eli-dl|Activity > eli-dl|consists_of > eli-dl|Activity > vcard|hasLocality" # noqa: E501 + ) + + if not locality: + return None + + locality_url = locality["rdf:resource"] + location = None + + if not locality_url or not isinstance(locality_url, str): + return None + + if locality_url.endswith("/FRA_SXB"): + location = PlenarySessionLocation.SXB + + if locality_url.endswith("/BEL_BRU"): + location = PlenarySessionLocation.BRU + + if not location: + return None + + return self._fragment( + model=PlenarySession, + source_id=self.start_date.isoformat(), + group_key=self.start_date.isoformat(), + data={"location": location}, + ) diff --git a/backend/howtheyvote/scrapers/votes.py b/backend/howtheyvote/scrapers/votes.py new file mode 100644 index 000000000..9964c12a4 --- /dev/null +++ b/backend/howtheyvote/scrapers/votes.py @@ -0,0 +1,616 @@ +import re +from datetime import date, datetime +from typing import cast +from urllib.parse import parse_qs, urlparse + +from bs4 import BeautifulSoup, Tag +from structlog import get_logger + +from ..helpers import parse_procedure_reference, parse_reference +from ..models import Country, EurovocConcept, Fragment, MemberVote, Vote, VotePosition +from .common import BeautifulSoupScraper, RequestCache, ScrapingError +from .helpers import ( + fill_missing_by_reference, + normalize_name, + normalize_whitespace, + parse_rcv_text, +) + +log = get_logger(__name__) + + +class RCVListScraper(BeautifulSoupScraper): + BASE_URL_EP = "https://www.europarl.europa.eu/doceo/document" + BASE_URL_DR = "https://www.europarl.europa.eu/RegData/seance_pleniere/proces_verbal" + BS_PARSER = "lxml-xml" + RESPONSE_ENCODING = "utf-8" + + # We observed timeouts or even random, intermittent 404 responses for this data + # source in the past. Retrying a few times usually resolves these issues. + REQUEST_MAX_RETRIES: int = 2 + + # Sometimes alternate names (e.g. compound names) or different spellings + # are used in voting lists. We use this dict to replace alternate names with the + # names listed in the MEP profiles on the official website of the Parliament. + ALTERNATE_NAMES = { + "Pagazaurtundúa Ruiz": "Pagazaurtundúa", + "Lechevalier": "Letard-Lechevalier", + "Gambús": "Gambus Millet", + "Kozłowska-Rajewicz": "Kozłowska", + "Aguilera García": "Aguilera", + "Rodríguez-Piñero Fernández": "Rodríguez-Piñero", + "Papadakis Konstantinos": "Papadakis", + "Tomaševski": "Tomaszewski", + "Figueiredo Nobre De Gusmão": "Gusmão", + "Benjumea": "Benjumea Benjumea", + "Zarzalejos Nieto": "Zarzalejos", + "Maldeikienė": "Seibutytė", + } + + def __init__( + self, + date: date, + term: int, + active_members: list[tuple[int, str, str]], + request_cache: RequestCache | None = None, + ): + super().__init__( + date=date, + term=term, + active_members_count=len(active_members), + request_cache=request_cache, + ) + + self.date = date + self.term = term + self.active_member_ids = [] + self.member_ids_by_last_name: dict[str, int] = {} + self.member_ids_by_full_name: dict[str, int] = {} + self.member_ids: set[int] = set() + + for member_id, first_name, last_name in active_members: + last_name = normalize_name(last_name) + full_name = normalize_name(f"{last_name.lower()} {first_name.lower()}") + + self.active_member_ids.append(member_id) + self.member_ids_by_last_name[last_name] = member_id + self.member_ids_by_full_name[full_name] = member_id + self.member_ids.add(member_id) + + def _url(self) -> list[str]: + date = self.date.strftime("%Y-%m-%d") + doceo_url = f"{self.BASE_URL_EP}/PV-{self.term}-{date}-RCV_FR.xml" + + year = self.date.strftime("%Y") + month = self.date.strftime("%m") + day = self.date.strftime("%d") + document_register_url = ( + f"{self.BASE_URL_DR}/{year}/{month}-{day}/liste_presence/" + f"P{self.term}_PV({year}){month}-{day}(RCV)_XC.xml" + ) + + return [doceo_url, document_register_url] + + def _extract_data(self, doc: BeautifulSoup) -> list[Fragment]: + tags = doc.find_all("RollCallVote.Result") + fragments = [] + + i = 0 + + for tag in tags: + i += 1 + fragment = self._vote(tag) + fragment.data["order"] = i + fragments.append(fragment) + + fragments = fill_missing_by_reference(fragments, key="title") + self._log.info("Extracted RCV votes", count=len(fragments)) + + return fragments + + def _vote(self, tag: Tag) -> Fragment: + identifier = self._identifier(tag) + timestamp = self._timestamp(tag) + text = self._text(tag) + (title, rapporteur, reference, description) = parse_rcv_text( + text, + # Lists before this date do not contain translated titles + extract_english=(timestamp.date() >= date(2020, 2, 1)), + ) + + return self._fragment( + model=Vote, + source_id=identifier, + group_key=identifier, + data={ + "title": title, + "rapporteur": rapporteur, + "description": description, + "reference": reference, + "timestamp": timestamp, + "member_votes": self._member_votes(tag), + }, + ) + + def _identifier(self, tag: Tag) -> int: + # https://github.com/python/typeshed/issues/8755 + attr = cast(str, tag["Identifier"]) + return int(attr) + + def _member_votes(self, tag: Tag) -> list[MemberVote]: + member_votes: dict[int, MemberVote] = {} + + for member_id in self.active_member_ids: + member_votes[member_id] = MemberVote( + web_id=member_id, position=VotePosition.DID_NOT_VOTE + ) + + results = { + VotePosition.FOR: tag.find("Result.For"), + VotePosition.AGAINST: tag.find("Result.Against"), + VotePosition.ABSTENTION: tag.find("Result.Abstention"), + } + + for position, child in results.items(): + if not isinstance(child, Tag): + continue + + expected_total = int(cast(str, child["Number"])) + total = 0 + + for member_vote in self._member_votes_by_position(child, position): + member_votes[member_vote.web_id] = member_vote + total += 1 + + # Sanity check: In addition to the individual members and their vote position, + # the source RCV lists also contain the total number of members by position. We + # raise an error if this number doesn’t match the number of extracted members. + if total != expected_total: + raise ScrapingError( + f"Total number of {total} extracted {position.value} votes " + + f"does not match expected {expected_total}" + ) + + return list(member_votes.values()) + + def _member_votes_by_position(self, tag: Tag, position: VotePosition) -> list[MemberVote]: + tags = tag.find_all("PoliticalGroup.Member.Name") + tag.find_all("Member.Name") + member_votes = [] + + for tag in tags: + member_id = self._member_id_from_tag(tag) + member_votes.append(MemberVote(web_id=member_id, position=position)) + + return member_votes + + def _member_id_from_tag(self, tag: Tag) -> int: + name = normalize_name(self.ALTERNATE_NAMES.get(tag.text, tag.text)) + + id_attribute = tag.get("PersId") + if isinstance(id_attribute, str): + # Sanity check to ensure that a record for an active member exists in our + # database for the referenced ID. + if int(id_attribute) not in self.member_ids: + raise ScrapingError(f"Could not find member with ID {id_attribute}") + + return int(id_attribute) + + member_id = self.member_ids_by_last_name.get(name) + if member_id is not None: + return member_id + + member_id = self.member_ids_by_full_name.get(name) + if member_id is not None: + return member_id + + raise ScrapingError(f"Could not find member ID for name {name}") + + def _timestamp(self, tag: Tag) -> datetime: + strategies = [ + self._timestamp_from_attribute, + self._timestamp_from_text, + self._date_from_attribute, + ] + + for strategy in strategies: + try: + return strategy(tag) + except ValueError: + pass + + raise ScrapingError("Could not extract timestamp for vote") + + def _timestamp_from_attribute(self, tag: Tag) -> datetime: + # https://github.com/python/typeshed/issues/8755 + attr = cast(str, tag["Date"]) + return datetime.strptime(attr, "%Y-%m-%d %H:%M:%S") + + def _timestamp_from_text(self, tag: Tag) -> datetime: + text_tag = cast(Tag | None, tag.find("RollCallVote.Description.Text")) + + if not text_tag: + raise ScrapingError("Could not find `RollCallVote.Description.Text` tag.") + + text = text_tag.text.strip() + match = re.search(self._timestamp_regex(), text) + + if not match: + raise ScrapingError("Could not extract timestamp from text.") + + return datetime.strptime(match.group(0), "%d/%m/%Y %H:%M:%S.%f") + + def _date_from_attribute(self, tag: Tag) -> datetime: + # https://github.com/python/typeshed/issues/8755 + attr = cast(str, tag["Date"]) + return datetime.strptime(attr, "%Y-%m-%d") + + def _timestamp_regex(self) -> str: + # Some older RCV lists contain the full formatted date and time + # of the vote in the description tag. Newer RCV lists store this + # information in a separate attribute. + date = r"{}".format(self.date.strftime("%d/%m/%Y")) + time = r"\d{2}:\d{2}:\d{2}\.\d{3}" + return r"" + re.escape(date) + r"\s" + time + r"$" + + def _text(self, tag: Tag) -> str: + text_tag = cast(Tag | None, tag.find("RollCallVote.Description.Text")) + + if not text_tag: + raise ScrapingError("Could not find `RollCallVote.Description.Text` tag.") + + text = text_tag.text.strip().removeprefix("- ") + + timestamp_regex = self._timestamp_regex() + text = re.sub(timestamp_regex, "", text).strip() + + return normalize_whitespace(text) + + +class RCVListEnglishScraper(BeautifulSoupScraper): + BS_PARSER = "lxml-xml" + BASE_URL = "https://www.europarl.europa.eu/doceo/document" + + def __init__(self, date: date, term: int, request_cache: RequestCache | None = None): + super().__init__(date=date, term=term, request_cache=request_cache) + self.date = date + self.term = term + + def _url(self) -> str: + date = self.date.strftime("%Y-%m-%d") + url = f"{self.BASE_URL}/PV-{self.term}-{date}-RCV_EN.xml" + + return url + + def _extract_data(self, doc: BeautifulSoup) -> list[Fragment]: + tags = doc.find_all("RollCallVote.Result") + fragments = [] + + for tag in tags: + doceo_vote_id = int(tag["Identifier"]) + + text = tag.find("RollCallVote.Description.Text") + text = text.text.strip().removeprefix("- ") + # timestamp_regex = self._timestamp_regex() + # text = re.sub(timestamp_regex, "", text).strip() + text = normalize_whitespace(text) + + title, _, reference, description = parse_rcv_text( + text, + # The english XML files contain English titles only + extract_english=False, + ) + + fragment = self._fragment( + model=Vote, + source_id=doceo_vote_id, + group_key=doceo_vote_id, + data={ + "title_en": title, + "reference": reference, + "description_en": description, + }, + ) + + fragments.append(fragment) + + fragments = fill_missing_by_reference(fragments, key="title_en") + + for fragment in fragments: + # Reference is only needed temporarily to fill missing titles by reference, + # but storing it would be redundant as it is the same in the French lists. + fragment.data.pop("reference") + + self._log.info("Extracted English RCV votes", count=len(fragments)) + + return fragments + + +class DocumentScraper(BeautifulSoupScraper): + BS_PARSER = "lxml" + BASE_URL = "https://www.europarl.europa.eu/doceo/document" + PROCEDURE_URL_REGEX = re.compile( + r"^https://oeil.secure.europarl.europa.eu/oeil/popups/ficheprocedure.do" + ) + + def __init__( + self, + vote_id: int, + reference: str, + request_cache: RequestCache | None = None, + ): + super().__init__(vote_id=vote_id, reference=reference, request_cache=request_cache) + self.vote_id = vote_id + self.reference = reference + + def _url(self) -> str: + ref = parse_reference(self.reference) + number = str(ref["number"]).rjust(4, "0") + formatted_ref = f"{ref['type']}-{ref['term']}-{ref['year']}-{number}" + return f"{self.BASE_URL}/{formatted_ref}_EN.html" + + def _extract_data(self, doc: BeautifulSoup) -> Fragment: + procedure_reference = self._procedure_reference(doc) + + self._log.info( + "Extracted document information", + procedure_reference=procedure_reference, + ) + + return self._fragment( + model=Vote, + source_id=self.vote_id, + group_key=self.vote_id, + data={"procedure_reference": procedure_reference}, + ) + + def _procedure_reference(self, doc: BeautifulSoup) -> str | None: + container = doc.select_one(".doceo-ring") + + if not container: + return None + + procedure_link = container.find("a", href=self.PROCEDURE_URL_REGEX) + + if not procedure_link: + return None + + return procedure_link.get_text(strip=True) + + +class ProcedureScraper(BeautifulSoupScraper): + BS_PARSER = "lxml" + BASE_URL = ( + "https://oeil.secure.europarl.europa.eu/" + "oeil/popups/ficheprocedure.do?lang=en&reference=" + ) + + TITLE_PREFIXES = ["Resolution on", "Motion"] + + def __init__( + self, + vote_id: int, + procedure_reference: str, + request_cache: RequestCache | None = None, + ): + super().__init__( + vote_id=vote_id, + procedure_reference=procedure_reference, + request_cache=request_cache, + ) + self.vote_id = vote_id + self.procedure_reference = procedure_reference + + def _url(self) -> str: + return f"{self.BASE_URL}{self.procedure_reference}" + + def _extract_data(self, doc: BeautifulSoup) -> Fragment: + title = self._title(doc) + geo_areas = self._geo_areas(doc) + self._log.info( + "Extracted procedure information", + title=title, + geo_areas=geo_areas, + ) + + return self._fragment( + model=Vote, + source_id=self.vote_id, + group_key=self.vote_id, + data={ + "procedure_title": title, + "geo_areas": geo_areas, + }, + ) + + def _title(self, doc: BeautifulSoup) -> str | None: + title = doc.select_one("#procedure-file-header .ep-layout_underline") + + if not title: + return None + + normalized_title = title.text + + for prefix in self.TITLE_PREFIXES: + normalized_title = normalized_title.removeprefix(prefix).strip() + + return normalized_title[:1].upper() + normalized_title[1:] + + def _geo_areas(self, doc: BeautifulSoup) -> list[str]: + start = doc.select_one( + '#basic-information-data strong:-soup-contains("Geographical area")' + ) + + if not start: + return [] + + geo_areas = [] + + for sibling in start.next_siblings: + if isinstance(sibling, Tag) and sibling.name == "strong": + break + + if not sibling.get_text(strip=True): + continue + + country_name = sibling.get_text(strip=True) + country = Country.from_label(country_name, fuzzy=True) + + if not country: + log.warning("Geographical area not found", name=country_name) + continue + + geo_areas.append(country.code) + + return geo_areas + + +class EurlexProcedureScraper(BeautifulSoupScraper): + """Scrapes EuroVoc concepts from the procedure page on EUR-Lex. EuroVoc is thesaurus + maintained by the EU Publications Office. Most interinstitutional procedures are assigned + multiple EuroVoc concepts (i.e. tags) that we can use to improve search recall or to + fetch related votes. In theory, it should also be possible to fetch these via a SPARQL + endpoint. However, I wasn’t able to come up with a query that reliably returned EuroVoc + concepts that were consitent with what’s displayed on EUR-Lex.""" + + BS_PARSER = "lxml" + BASE_URL = "https://eur-lex.europa.eu/procedure/EN" + EUROVOC_URL_REGEX = re.compile(r"LP_DC_CODED=") + + def __init__( + self, + vote_id: int, + procedure_reference: str, + request_cache: RequestCache | None = None, + ): + super().__init__( + vote_id=vote_id, + procedure_reference=procedure_reference, + request_cache=request_cache, + ) + self.vote_id = vote_id + self.procedure_reference = procedure_reference + + def _url(self) -> str: + ref = parse_procedure_reference(self.procedure_reference) + + # EUR-Lex URLs have the format `https://eur-lex.europa.eu/procedure/2021_160` whereas + # the procedure reference is usually formatted with leading zeros: `2021/0160(COD)`. + number = ref["number"].lstrip("0") + + return f"{self.BASE_URL}/{ref['year']}_{number}" + + def _extract_data(self, doc: BeautifulSoup) -> Fragment | None: + container = doc.select_one("#eurovocProc") + + if not container: + return None + + eurovoc_concepts: set[str] = set() + geo_areas: set[str] = set() + links = container.find_all("a", href=self.EUROVOC_URL_REGEX) + + for link in links: + url = urlparse(link["href"]) + query = parse_qs(url.query) + eurovoc_id = query.get("LP_DC_CODED") + + if not eurovoc_id: + continue + + eurovoc_concept = EurovocConcept.get(eurovoc_id[0]) + + if not eurovoc_concept: + continue + + if eurovoc_concept.geo_area: + geo_areas.add(eurovoc_concept.geo_area.code) + else: + eurovoc_concepts.add(eurovoc_concept.id) + + self._log.info( + "Extracted EurLex procedure information", + eurovoc_terms=eurovoc_concepts, + geo_areas=geo_areas, + ) + + return self._fragment( + model=Vote, + source_id=self.vote_id, + group_key=self.vote_id, + data={ + "eurovoc_concepts": eurovoc_concepts, + "geo_areas": geo_areas, + }, + ) + + +class EurlexDocumentScraper(BeautifulSoupScraper): + """Scrapes EuroVoc concepts from the document page on EUR-Lex. This scraper is very + similar to and complements the `EurlexDocumentScraper`. In some cases, the procedure + page on EUR-Lex doesn’t include any EuroVoc concepts, but the document page does.""" + + BS_PARSER = "lxml" + BASE_URL = "https://eur-lex.europa.eu/legal-content/EN/ALL/?uri=EP:" + EUROVOC_URL_REGEX = re.compile(r"DC_CODED=") + + def __init__( + self, + vote_id: int, + reference: str, + request_cache: RequestCache | None = None, + ): + super().__init__(vote_id=vote_id, reference=reference, request_cache=request_cache) + self.vote_id = vote_id + self.reference = reference + + def _url(self) -> str: + ref = parse_reference(self.reference) + number = str(ref["number"]).rjust(4, "0") + + # EUR-Lex URLs have the format `https://eur-lex.europa.eu/legal-content/EN/ALL/?uri=EP:P9_A(2021)0270` + # whereas the reference is usually formatted like this: `A9-0270/2021`. + return f"{self.BASE_URL}P{ref['term']}_{ref['type']}({ref['year']}){number}" + + def _extract_data(self, doc: BeautifulSoup) -> Fragment | None: + container = doc.select_one("#PPClass_Contents") + + if not container: + return None + + eurovoc_concepts: set[str] = set() + geo_areas: set[str] = set() + links = container.find_all("a", href=self.EUROVOC_URL_REGEX) + + for link in links: + url = urlparse(link["href"]) + query = parse_qs(url.query) + eurovoc_id = query.get("DC_CODED") + + if not eurovoc_id: + continue + + eurovoc_concept = EurovocConcept.get(eurovoc_id[0]) + + if not eurovoc_concept: + continue + + if eurovoc_concept.geo_area: + geo_areas.add(eurovoc_concept.geo_area.code) + else: + eurovoc_concepts.add(eurovoc_concept.id) + + self._log.info( + "Extracted EurLex document information", + eurovoc_terms=eurovoc_concepts, + geo_areas=geo_areas, + ) + + return self._fragment( + model=Vote, + source_id=self.vote_id, + group_key=self.vote_id, + data={ + "eurovoc_concepts": eurovoc_concepts, + "geo_areas": geo_areas, + }, + ) diff --git a/backend/howtheyvote/sharepics/__init__.py b/backend/howtheyvote/sharepics/__init__.py new file mode 100644 index 000000000..154df3d9d --- /dev/null +++ b/backend/howtheyvote/sharepics/__init__.py @@ -0,0 +1,40 @@ +import base64 +from urllib.parse import urljoin + +from structlog import get_logger + +from .. import config +from .cdp import Client + +log = get_logger(__name__) + + +def generate_vote_sharepic(vote_id: int) -> bytes: + """Generate a share picture for the given vote.""" + url = urljoin(config.FRONTEND_PRIVATE_URL, f"/votes/{vote_id}/sharepic") + return capture_screenshot(url) + + +def capture_screenshot(url: str) -> bytes: + """Uses a headless Chromium browser to take a screenshot of the given `url` + and writes the resulting PNG file to `path`.""" + log.info("Capturing screenshot", url=url) + + client = Client(host="chromium", port=9222, timeout=5) + + with client.connect() as session: + session.send( + "Emulation.setDeviceMetricsOverride", + { + "width": 600, + "height": 315, + "deviceScaleFactor": 2, + "mobile": False, + }, + ) + session.send("Page.enable") + session.send("Page.navigate", {"url": url, "format": "png"}) + session.wait_event("Page.loadEventFired") + res = session.send("Page.captureScreenshot") + + return base64.b64decode(res["data"]) diff --git a/backend/howtheyvote/sharepics/cdp.py b/backend/howtheyvote/sharepics/cdp.py new file mode 100644 index 000000000..b112fbfad --- /dev/null +++ b/backend/howtheyvote/sharepics/cdp.py @@ -0,0 +1,157 @@ +import json +import socket +import time +from collections.abc import Generator +from contextlib import contextmanager +from typing import Any, cast + +import requests +from websocket import WebSocket, WebSocketTimeoutException + + +class BrowserError(Exception): + def __init__(self, message: str, error: dict[Any, Any] | None = None): + super().__init__(message) + self.error = error + + +class TimeoutError(Exception): + pass + + +class Timeout: + def __init__(self, seconds: int | None): + self.seconds = seconds + self.start_time = time.time() + + def tick(self) -> None: + """Check if the timeout has been reached and, if yes, raise an exception.""" + if self.seconds is None: + return + + if time.time() >= self.start_time + self.seconds: + raise TimeoutError() + + +class Session: + def __init__(self, ws_url: str, timeout: int): + self._ws_url = ws_url + self._ws = WebSocket() + self._ws.settimeout(timeout) + self._timeout = timeout + self._message_counter = 0 + + def open(self) -> None: + self._ws.connect(self._ws_url) # type: ignore + + def close(self) -> None: + self._ws.close() + + def send(self, method: str, params: dict[Any, Any] | None = None) -> dict[Any, Any]: + message_id = self.generate_message_id() + + payload = { + "id": message_id, + "method": method, + "params": params, + } + + self._ws.send(json.dumps(payload)) + + # Timeouts between messages (i.e. we didn’t receive a message for n seconds) + # are handled by `websocket-client`, but we also need to handle cases were + # we do receive a message at least every n seconds, but none of the messages + # is the response to our outbound message. + timeout = Timeout(self._timeout) + + while True: + timeout.tick() + data = self.receive() + + if data.get("id") != message_id: + continue + + if "error" in data: + raise BrowserError("Received error response", data["error"]) + + result = cast(dict[Any, Any], data["result"]) + return result + + def wait_event(self, event: str) -> dict[Any, Any]: + # Timeouts between messages (i.e. we didn’t receive a message for n seconds) + # are handled by `websocket-client`, but we also need to handle cases were + # we do receive a message at least every n seconds, but none of the messages + # matches the given event. + timeout = Timeout(self._timeout) + + while True: + timeout.tick() + data = self.receive() + + if data.get("method") == event: + params = cast(dict[Any, Any], data["params"]) + return params + + def receive(self) -> dict[Any, Any]: + """Wait for any new incoming message.""" + try: + message = json.loads(self._ws.recv()) + return cast(dict[Any, Any], message) + except WebSocketTimeoutException: + raise TimeoutError() from None + + def generate_message_id(self) -> int: + message_id = self._message_counter + self._message_counter += 1 + return message_id + + +class Client: + # This is a pretty naive, synchroneous implementation of the Chrome DevTools Protocol + # (CDP), but it might be good enough for our limited use case and avoids pulling in a + # big dependency such as Playwright.""" + + DEFAULT_TIMEOUT = 30 + + def __init__(self, host: str, port: int, timeout: int | None = None): + # Chrome requires that the `Host` header is an IP address or `localhost`. However, in + # most cases we want to connect using a Docker hostname, so we need to resolve the + # hostname to the Docker IP address first. + self._host = socket.gethostbyname(host) + self._port = port + self._timeout = timeout or self.DEFAULT_TIMEOUT + + @contextmanager + def connect(self) -> Generator[Session, None, None]: + tab_id = self._open_tab() + session = Session(ws_url=self._ws_url(tab_id), timeout=self._timeout) + session.open() + + try: + yield session + finally: + session.close() + self._close_tab(tab_id) + + def _open_tab(self) -> str: + url = self._json_url("new") + res = requests.put(url) + data = res.json() + + if not res.ok: + raise BrowserError("Couldn't open new tab") + + return cast(str, data["id"]) + + def _close_tab(self, tab_id: str) -> None: + url = self._json_url(f"close/{tab_id}") + res = requests.get(url) + + if not res.ok: + raise BrowserError("Couldn’t close tab") + + def _json_url(self, path: str) -> str: + return f"http://{self._host}:{self._port}/json/{path}" + + def _ws_url(self, tab_id: str) -> str: + return f"ws://{self._host}:{self._port}/devtools/page/{tab_id}" diff --git a/backend/howtheyvote/store/__init__.py b/backend/howtheyvote/store/__init__.py new file mode 100644 index 000000000..962827430 --- /dev/null +++ b/backend/howtheyvote/store/__init__.py @@ -0,0 +1,23 @@ +from .aggregator import Aggregator, CompositeRecord, MapFunc +from .index import index_db, index_records, index_search +from .mappings import ( + map_member, + map_plenary_session, + map_press_release, + map_vote, + map_vote_group, +) +from .writer import BulkWriter + +__all__ = [ + "BulkWriter", + "Aggregator", + "CompositeRecord", + "MapFunc", + "index_records", + "map_member", + "map_plenary_session", + "map_vote", + "map_vote_group", + "map_press_release", +] diff --git a/backend/howtheyvote/store/aggregator.py b/backend/howtheyvote/store/aggregator.py new file mode 100644 index 000000000..7db7e06a0 --- /dev/null +++ b/backend/howtheyvote/store/aggregator.py @@ -0,0 +1,125 @@ +import itertools +from collections import defaultdict +from collections.abc import Callable, Collection, Iterator +from typing import Any, TypeVar + +from sqlalchemy import select +from structlog import get_logger + +from ..db import Session +from ..models import Fragment + +log = get_logger(__name__) + +GroupKey = str +GroupKeys = Collection[GroupKey] | None + + +class CompositeRecord: + """Represents a record merged from one or more `howtheyvote.models.Fragment`s. + + As multiple fragments can specify a value for the same property, property values + are inherently multi-valued. For example, if a MEP had a mandate for two terms, + there will be two `howtheyvote.models.Member` fragments specifying `group_memberships`, + one for each term. + + `CompositeRecord` provides helper methods to access merged record data. + """ + + def __init__(self, group_key: str, data: dict[str, list[Any]]): + self.group_key = group_key + """Common group key for the record.""" + self.data = data + """Merged data from all fragments.""" + + def all(self, key: str) -> list[Any]: + """Get a list of all values for the given key.""" + return self.data.get(key, []) + + def first(self, key: str) -> Any: + """Get the first value for the given key.""" + return next(iter(self.all(key)), None) + + def chain(self, key: str) -> list[Any]: + """Chain the values for the given key and return a single list.""" + iterables = self.all(key) + return list(itertools.chain.from_iterable(iterables)) + + +RecordType = TypeVar("RecordType") +MapFunc = Callable[[CompositeRecord], RecordType] + + +class Aggregator: + """Reads `howtheyvote.models.Fragment`s from the database and merges them into records.""" + + BUFFER_SIZE = 500 + + def __init__(self, model_cls: type): + self.model_cls = model_cls + + def mapped_records( + self, + map_func: MapFunc[RecordType], + group_keys: GroupKeys = None, + ) -> Iterator[RecordType]: + """Returns an iterator over mapped records composed from fragments. + + :param map_func: A function to map each record to a different type. This can + be used to map generic records to ORM objects. + + :param group_keys: If set, only records for the given group keys are returned. + """ + for record in self.records(group_keys): + yield map_func(record) + + def records(self, group_keys: GroupKeys = None) -> Iterator[CompositeRecord]: + """Returns an iterator over records composed from fragments. + + :param group_keys: If set, only records for the given group keys are returned. + """ + for group_key, fragments in self._grouped_fragments(group_keys): + data = defaultdict(list) + + for fragment in fragments: + for key, value in fragment.data.items(): + data[key].append(value) + + yield CompositeRecord(group_key, data) + + def _grouped_fragments( + self, group_keys: GroupKeys = None + ) -> Iterator[tuple[GroupKey, list[Fragment]]]: + curr_key: str | None = None + curr_group: list[Fragment] = [] + + for fragment in self._fragments(group_keys): + if curr_key is None: + curr_key = fragment.group_key + + if curr_key != fragment.group_key: + yield curr_key, curr_group + curr_key = fragment.group_key + curr_group = [] + + curr_group.append(fragment) + + if curr_key and curr_group: + yield curr_key, curr_group + + def _fragments(self, group_keys: GroupKeys = None) -> Iterator[Fragment]: + query = ( + select(Fragment) + .where(Fragment.model == self.model_cls.__name__) + .order_by(Fragment.group_key) + ) + + if group_keys is not None and len(group_keys) == 0: + log.warn("Empty list of group keys given") + return iter([]) + + if group_keys: + query = query.where(Fragment.group_key.in_(group_keys)) + + options = {"yield_per": self.BUFFER_SIZE} + return Session.execute(query, execution_options=options).scalars() diff --git a/backend/howtheyvote/store/index.py b/backend/howtheyvote/store/index.py new file mode 100644 index 000000000..e39f48380 --- /dev/null +++ b/backend/howtheyvote/store/index.py @@ -0,0 +1,123 @@ +from collections.abc import Iterable, Iterator +from typing import Literal, TypedDict, TypeVar, cast + +from sqlalchemy.dialects.sqlite import insert +from structlog import get_logger + +from ..db import Session +from ..helpers import chunks +from ..meili import votes_index +from ..models import BaseWithId, Vote + +log = get_logger(__name__) + +RecordType = TypeVar("RecordType", bound=BaseWithId) + + +def index_records( + model_cls: type[RecordType], + records: Iterator[RecordType], + chunk_size: int | None = None, +) -> None: + """Writes aggregated records to the database and search backend.""" + if chunk_size: + for i, chunk in enumerate(chunks(records, size=chunk_size), start=1): + log.info( + "Indexing records", + model=model_cls.__name__, + chunk=i, + chunk_size=chunk_size, + ) + chunk_records = list(chunk) + index_db(model_cls, chunk_records) + index_search(model_cls, chunk_records) + else: + all_records = list(records) + index_db(model_cls, all_records) + index_search(model_cls, all_records) + + +def index_db(model_cls: type[RecordType], records: Iterable[RecordType]) -> None: + values = [] + + for record in records: + values.append( + {column.name: getattr(record, column.name) for column in record.__table__.columns} + ) + + if not len(values): + log.warning("Skipping indexing to database as list of records is empty") + return + + log.info("Writing aggregated records to database.", count=len(values)) + + stmt = insert(model_cls).values(values) + stmt = stmt.on_conflict_do_update( + index_elements=[model_cls.id], + set_=dict(stmt.excluded), + ) + + Session.execute(stmt) + Session.commit() + + +def index_search( + model_cls: type[RecordType], + records: Iterable[RecordType], + sync: bool = False, +) -> None: + # At the moment, only votes are indexed in Meilisearch + if model_cls != Vote: + return + + votes = cast(Iterable[Vote], records) + formatted_records = [_serialize_vote(vote) for vote in votes if vote.is_main] + + if not len(formatted_records): + log.warning("Skipping indexing to search index as list of records is empty") + return + + log.info("Writing aggregated records to search index", count=len(formatted_records)) + + # `Index.add_documents` requires `list[dict[str, any]]` which is incompatible with + # the `SerializedVote` typed dict. See https://github.com/python/mypy/issues/4976 + documents = [dict(td) for td in formatted_records] + task = votes_index.add_documents(documents) + + if sync: + # This is primarily used in tests + votes_index.wait_for_task(task.task_uid) + + +class SerializedVote(TypedDict): + id: int + timestamp: float + display_title: str | None + reference: str | None + procedure_reference: str | None + description: str | None + is_featured: Literal[0, 1] + geo_areas: list[str] + keywords: list[str] + + +def _serialize_vote(vote: Vote) -> SerializedVote: + keywords = set() + + for concept in vote.eurovoc_concepts: + keywords.add(concept.label) + keywords.update(concept.alt_labels) + keywords.update(bc.label for bc in concept.broader) + + return { + "id": vote.id, + # Meilisearch requires dates to be indexed as a numeric timestamp + "timestamp": vote.timestamp.timestamp(), + "display_title": vote.display_title, + "reference": vote.reference, + "procedure_reference": vote.procedure_reference, + "description": vote.description, + "is_featured": 1 if vote.is_featured else 0, + "geo_areas": [country.label for country in vote.geo_areas], + "keywords": list(keywords), + } diff --git a/backend/howtheyvote/store/mappings.py b/backend/howtheyvote/store/mappings.py new file mode 100644 index 000000000..87c88c84e --- /dev/null +++ b/backend/howtheyvote/store/mappings.py @@ -0,0 +1,110 @@ +import datetime + +from ..models import ( + Country, + Member, + PlenarySession, + PressRelease, + Vote, + VoteGroup, + deserialize_group_membership, + deserialize_member_vote, +) +from ..models.eurovoc import EurovocConcept +from .aggregator import CompositeRecord + + +def map_member(record: CompositeRecord) -> Member: + """Maps a `howtheyvote.store.CompositeRecord` to a `howtheyvote.models.Member` object.""" + country = record.first("country") + country = Country[country] if country else None + + date_of_birth = record.first("date_of_birth") + if date_of_birth: + date_of_birth = datetime.date.fromisoformat(date_of_birth) + + group_memberships = [ + deserialize_group_membership(gm) for gm in record.chain("group_memberships") + ] + + return Member( + id=record.group_key, + first_name=record.first("first_name"), + last_name=record.first("last_name"), + country=country, + date_of_birth=date_of_birth, + terms=record.all("term"), + group_memberships=group_memberships, + email=record.first("email"), + facebook=record.first("facebook"), + twitter=record.first("twitter"), + ) + + +def map_plenary_session(record: CompositeRecord) -> PlenarySession: + """Maps a `howtheyvote.store.CompositeRecord` to a `howtheyvote.models.PlenarySession` + object.""" + + return PlenarySession( + id=record.group_key, + term=record.first("term"), + start_date=datetime.date.fromisoformat(record.first("start_date")), + end_date=datetime.date.fromisoformat(record.first("end_date")), + location=record.first("location"), + ) + + +def map_vote(record: CompositeRecord) -> Vote: + """Maps a `howtheyvote.store.CompositeRecord` to a `howtheyvote.models.Vote` object.""" + member_votes = [deserialize_member_vote(mv) for mv in record.first("member_votes")] + geo_areas = {Country[code] for code in record.chain("geo_areas")} + eurovoc_concepts = {EurovocConcept[id_] for id_ in record.chain("eurovoc_concepts")} + + return Vote( + id=record.group_key, + timestamp=datetime.datetime.fromisoformat(record.first("timestamp")), + order=record.first("order"), + title=record.first("title_en") or record.first("title"), + description=record.first("description_en") or record.first("description"), + reference=record.first("reference"), + rapporteur=record.first("rapporteur"), + procedure_title=record.first("procedure_title"), + procedure_reference=record.first("procedure_reference"), + is_main=record.first("is_main") or False, + is_featured=record.first("is_featured") or False, + group_key=record.first("group_key"), + member_votes=member_votes, + geo_areas=geo_areas, + eurovoc_concepts=eurovoc_concepts, + issues=record.chain("issues"), + ) + + +def map_vote_group(record: CompositeRecord) -> VoteGroup: + date = record.first("date") + + if date: + date = datetime.date.fromisoformat(date) + + return VoteGroup( + id=record.group_key, + date=date, + issues=record.chain("issues"), + ) + + +def map_press_release(record: CompositeRecord) -> PressRelease: + published_at = record.first("published_at") + + if published_at: + published_at = datetime.datetime.fromisoformat(published_at) + + return PressRelease( + id=record.group_key, + term=record.first("term"), + title=record.first("title"), + published_at=published_at, + references=record.chain("reference"), + procedure_references=record.chain("procedure_reference"), + facts=record.first("facts"), + ) diff --git a/backend/howtheyvote/store/writer.py b/backend/howtheyvote/store/writer.py new file mode 100644 index 000000000..12b34d5c6 --- /dev/null +++ b/backend/howtheyvote/store/writer.py @@ -0,0 +1,97 @@ +from collections.abc import Iterable + +from sqlalchemy.dialects.sqlite import insert +from structlog import get_logger + +from ..db import Session +from ..helpers import chunks +from ..models import Fragment + +log = get_logger(__name__) + + +class BulkWriter: + """Writes `howtheyvote.models.Fragment`s to the database in bulk.""" + + fragments: list[Fragment] + """Buffer of fragments to be written to the database.""" + + auto_flush: int | None + """Automatically flush the writer if the buffer contains at least `auto_flush` + fragments.""" + + def __init__(self, auto_flush: int | None = None): + self.fragments = [] + self.auto_flush = auto_flush + self._touched: set[str] = set() + + def add(self, fragments: Iterable[Fragment] | Fragment | None) -> None: + """Add a single fragment or a list of fragments to the bulk writer. Fragments are + not written to the database until the `flush` method is called.""" + if not fragments: + return + + if isinstance(fragments, Fragment): + fragments = [fragments] + + if not self.auto_flush: + self.fragments.extend(fragments) + self._flush_if_necessary() + else: + for chunk in chunks(fragments, size=self.auto_flush): + self.fragments.extend(chunk) + self._flush_if_necessary() + + def flush(self) -> None: + """Write all buffered fragments to the database in bulk.""" + upsert_fragments(self.fragments) + self._touched.update(str(fragment.group_key) for fragment in self.fragments) + + self.fragments = [] + + def get_touched(self) -> set[str]: + """Returns list of fragment group keys that were written/updated.""" + return self._touched + + def _flush_if_necessary(self) -> None: + if not self.auto_flush: + return + + if len(self.fragments) >= self.auto_flush: + log.info("Auto flushing fragments writer", count=len(self.fragments)) + self.flush() + + +def upsert_fragments(fragments: list[Fragment]) -> None: + """Create or update a list of `howtheyvote.models.Fragment`s in the database.""" + if not fragments: + log.info("Empty fragments list given, not inserting any fragments.") + return + + values = [] + + for fragment in fragments: + values.append( + { + "model": fragment.model, + "source_name": fragment.source_name, + "source_id": fragment.source_id, + "source_url": fragment.source_url, + "group_key": fragment.group_key, + "data": fragment.data, + } + ) + + log.info("Inserting fragments.", count=len(fragments)) + stmt = insert(Fragment).values(values) + stmt = stmt.on_conflict_do_update( + index_elements=[Fragment.model, Fragment.source_name, Fragment.source_id], + set_={ + "source_url": stmt.excluded.source_url, + "timestamp": stmt.excluded.timestamp, + "data": stmt.excluded.data, + }, + ) + + Session.execute(stmt) + Session.commit() diff --git a/backend/howtheyvote/worker/__init__.py b/backend/howtheyvote/worker/__init__.py new file mode 100644 index 000000000..f884180c0 --- /dev/null +++ b/backend/howtheyvote/worker/__init__.py @@ -0,0 +1,113 @@ +import datetime + +from sqlalchemy import exists, func, select +from structlog import get_logger + +from .. import config +from ..db import Session +from ..models import PipelineRun, PipelineRunResult, PlenarySession +from ..pipelines import MembersPipeline, PressPipeline, RCVListPipeline, SessionsPipeline +from ..query import session_is_current_at +from .worker import SkipPipelineError, Weekday, Worker + +log = get_logger(__name__) + + +def op_rcv() -> None: + """Checks if there is a current plenary session and, if yes, fetches the latest roll-call + vote results.""" + today = datetime.date.today() + + if not _is_session_day(today): + raise SkipPipelineError() + + if _ran_successfully(RCVListPipeline, today): + raise SkipPipelineError() + + pipeline = RCVListPipeline(term=config.CURRENT_TERM, date=today) + pipeline.run() + + +def op_press() -> None: + """Checks if there is a current plenary session and, if yes, fetches the latest press + releases from the Parliament’s news hub.""" + today = datetime.date.today() + + if not _is_session_day(today): + raise SkipPipelineError() + + pipeline = PressPipeline(date=today, with_rss=True) + pipeline.run() + + +def op_sessions() -> None: + """Fetches plenary session dates.""" + pipeline = SessionsPipeline(term=config.CURRENT_TERM) + pipeline.run() + + +def op_members() -> None: + """Fetches information about all members of the current term.""" + pipeline = MembersPipeline(term=config.CURRENT_TERM) + pipeline.run() + + +def _is_session_day(date: datetime.date) -> bool: + """Check if there is a session on the given day.""" + query = select(PlenarySession.id).where(session_is_current_at(date)) + session = Session.execute(query).scalar() + return session is not None + + +def _ran_successfully(pipeline: type[object], date: datetime.date) -> bool: + """Check if a given pipeline has been run successfully on a given day.""" + query = ( + exists() + .where(PipelineRun.pipeline == pipeline.__name__) + .where(func.date(PipelineRun.started_at) == func.date(date)) + .where(PipelineRun.result == PipelineRunResult.SUCCESS) + .select() + ) + + return bool(Session.execute(query).scalar()) + + +worker = Worker() + +# Mon at 04:00 +worker.schedule( + op_sessions, + name=SessionsPipeline.__name__, + weekdays={Weekday.MON}, + hours={4}, + tz=config.TIMEZONE, +) + +# Mon at 05:00 +worker.schedule( + op_members, + name=MembersPipeline.__name__, + weekdays={Weekday.MON}, + hours={5}, + tz=config.TIMEZONE, +) + +# Mon-Thu between 12:00 and 15:00, every 10 mins +worker.schedule( + op_rcv, + name=RCVListPipeline.__name__, + weekdays={Weekday.MON, Weekday.TUE, Weekday.WED, Weekday.THU}, + hours=range(12, 15), + minutes=range(0, 60, 10), + tz=config.TIMEZONE, +) + +# Mon-Thu, between 13:00 and 20:00, every 30 mins +worker.schedule( + op_press, + name=PressPipeline.__name__, + weekdays={Weekday.MON, Weekday.TUE, Weekday.WED, Weekday.THU}, + hours=range(13, 20), + minutes={0, 30}, + tz=config.TIMEZONE, +) diff --git a/backend/howtheyvote/worker/worker.py b/backend/howtheyvote/worker/worker.py new file mode 100644 index 000000000..199dcb28c --- /dev/null +++ b/backend/howtheyvote/worker/worker.py @@ -0,0 +1,186 @@ +import datetime +import enum +import signal +import time +from collections.abc import Callable, Iterable +from typing import Any + +import prometheus_client +from prometheus_client import Counter, Gauge, Histogram +from prometheus_client import start_http_server as start_metrics_server +from schedule import Scheduler +from structlog import get_logger + +from .. import config +from ..db import Session +from ..models import PipelineRun, PipelineRunResult +from ..pipelines import DataUnavailableError + +log = get_logger(__name__) + +prometheus_client.REGISTRY.unregister(prometheus_client.GC_COLLECTOR) +prometheus_client.REGISTRY.unregister(prometheus_client.PLATFORM_COLLECTOR) +prometheus_client.REGISTRY.unregister(prometheus_client.PROCESS_COLLECTOR) + +PIPELINE_RUN_DURATION = Histogram( + "htv_worker_pipeline_run_duration_seconds", + "Duration of pipeline runs executed by the worker", + ["pipeline", "result"], +) + +PIPELINE_RUNS = Counter( + "htv_worker_pipeline_runs_total", + "Total number of pipeline runs executed by the worker", + ["pipeline", "result"], +) + +PIPELINE_NEXT_RUN = Gauge( + "htv_worker_pipeline_next_run_timestamp_seconds", + "Timestamp of the next scheduled run of the pipeline", + ["pipeline"], +) + + +class SkipPipelineError(Exception): + pass + + +class Weekday(enum.Enum): + SUN = "sunday" + MON = "monday" + TUE = "tuesday" + WED = "wednesday" + THU = "thursday" + FRI = "friday" + SAT = "saturday" + + +Handler = Callable[..., Any] + + +class Worker: + """Running a worker starts a long-running process that executes data pipelines in regular + intervals and stores the result of the pipeline runs in the database.""" + + def __init__(self) -> None: + self._scheduler = Scheduler() + self._stopped = False + self._scheduled: set[str] = set() + + def run(self) -> None: + """Start an endless loop executing scheduled pipelines.""" + log.info("Starting worker") + self._stopped = False + + # Expose Prometheus metrics + start_metrics_server(config.WORKER_PROMETHEUS_PORT) + log.info("Started Prometheus metrics server") + + signal.signal(signal.SIGTERM, self.stop) + + while not self._stopped: + self.run_pending() + time.sleep(1) + self._update_next_run_metrics() + + self._stopped = False + + def stop(self, *_: Any) -> None: + """Gracefully stop the worker. If a pipeline is currently being executes this will + complete the pipeline run before stopping the worker.""" + log.info("Shutting down worker") + + def run_pending(self) -> None: + """Run pending tasks but do not start an endless loop. This is useful in unit tests.""" + self._scheduler.run_pending() + + def schedule( + self, + handler: Handler, + name: str, + weekdays: Iterable[Weekday] = set(Weekday), + hours: Iterable[int] = {0}, + minutes: Iterable[int] = {0}, + tz: str | None = None, + ) -> None: + """Schedule a pipeline to be executed at the given weekdays, hours, minutes. + Optionally passing a timezone string via the `tz` parameter indicates that the + pipeline should be executed at the given time in the respective timezone. For + example, `schedule(my_handler, hours={6}, tz="Europe/Berlin")` executes the + handler at 6am Berlin time.""" + + self._scheduled.add(name) + wrapped_handler = self._wrap_handler(name, handler) + + # `schedule` doesn’t support some use cases, for example: + # "Run job every 10 minutes on Monday between 3 and pm". + # This is a very naive wrapper around `schedule` that schedules every combination + # of weekdays, hours, and minutes as a separate job. This is good enough for us. + for weekday in weekdays: + for hour in hours: + for minute in minutes: + formatted_hour = str(hour).rjust(2, "0") + formatted_minute = str(minute).rjust(2, "0") + formatted_time = f"{formatted_hour}:{formatted_minute}" + + # This is equivalent to something like `every().monday.at("12:30")` + job = self._scheduler.every() + job = getattr(job, weekday.value) + job = job.at(formatted_time, tz) + job = job.tag(name) + job = job.do(wrapped_handler) + + def _wrap_handler(self, name: str, handler: Handler) -> Handler: + # Wraps the actual handler function to add exception handling and result logging. + + def wrapped() -> None: + start_time = time.time() + started_at = datetime.datetime.now(datetime.UTC) + + try: + handler() + result = PipelineRunResult.SUCCESS + except SkipPipelineError: + # Do not log skipped pipeline runs + return + except DataUnavailableError: + result = PipelineRunResult.DATA_UNAVAILABLE + except Exception: + result = PipelineRunResult.FAILURE + + duration = time.time() - start_time + finished_at = datetime.datetime.now(datetime.UTC) + + labels = {"pipeline": name, "result": result.value} + PIPELINE_RUNS.labels(**labels).inc() + PIPELINE_RUN_DURATION.labels(**labels).observe(duration) + + run = PipelineRun( + pipeline=name, + started_at=started_at, + finished_at=finished_at, + result=result.value, + ) + + Session.add(run) + Session.commit() + + log.info( + "Pipeline run completed", + name=name, + run_id=run.id, + started_at=started_at.isoformat(), + finished_at=finished_at.isoformat(), + duration=duration, + result=result.value, + ) + + Session.remove() + + return wrapped + + def _update_next_run_metrics(self) -> None: + for name in self._scheduled: + next_run = self._scheduler.get_next_run(name) + next_run_ts = next_run.timestamp() if next_run else -1 + PIPELINE_NEXT_RUN.labels(pipeline=name).set(next_run_ts) diff --git a/backend/howtheyvote/wsgi.py b/backend/howtheyvote/wsgi.py new file mode 100644 index 000000000..7dd2c32d9 --- /dev/null +++ b/backend/howtheyvote/wsgi.py @@ -0,0 +1,57 @@ +from typing import Any + +from flask import Flask, Response, jsonify +from flask.typing import ResponseReturnValue +from prometheus_client import PLATFORM_COLLECTOR, CollectorRegistry, make_wsgi_app +from werkzeug.exceptions import HTTPException +from werkzeug.middleware.dispatcher import DispatcherMiddleware +from werkzeug.middleware.proxy_fix import ProxyFix + +from .api import bp as api_bp +from .db import Session +from .json import JSONProvider +from .metrics import DataCollector + +app = Flask(__name__, static_folder=None) +app.register_blueprint(api_bp, url_prefix="/api") +app.json = JSONProvider(app) + + +# Erro handling +def json_error_handler(error: HTTPException) -> ResponseReturnValue: + code = error.code or 500 + return jsonify(error=str(error)), code + + +app.register_error_handler(HTTPException, json_error_handler) + +# Prometheus metrics +prometheus_registry = CollectorRegistry() +prometheus_registry.register(PLATFORM_COLLECTOR) +prometheus_registry.register(DataCollector()) + +prometheus_app = make_wsgi_app(registry=prometheus_registry) +app.wsgi_app = DispatcherMiddleware( # type: ignore + app.wsgi_app, + { + "/metrics": prometheus_app, + }, +) + +# We run the application behind Caddy both in dev and production environments. +# https://caddyserver.com/docs/caddyfile/directives/reverse_proxy#defaults +# mypy complains due to monkey-patching: https://github.com/python/mypy/issues/7347 +app.wsgi_app = ProxyFix(app.wsgi_app, x_for=1, x_proto=1, x_host=1) # type: ignore + + +# SQLAlchemy sessions +@app.teardown_appcontext +def teardown_session(_: Any) -> None: + Session.remove() + + +# CORS +@app.after_request +def add_cors_header(response: Response) -> Response: + response.headers["Access-Control-Allow-Origin"] = "*" + return response diff --git a/backend/poetry.lock b/backend/poetry.lock new file mode 100644 index 000000000..fc6b6f4fd --- /dev/null +++ b/backend/poetry.lock @@ -0,0 +1,1565 @@ +# This file is automatically @generated by Poetry 1.8.2 and should not be changed by hand. + +[[package]] +name = "alembic" +version = "1.13.0" +description = "A database migration tool for SQLAlchemy." +optional = false +python-versions = ">=3.8" +files = [ + {file = "alembic-1.13.0-py3-none-any.whl", hash = "sha256:a23974ea301c3ee52705db809c7413cecd165290c6679b9998dd6c74342ca23a"}, + {file = "alembic-1.13.0.tar.gz", hash = "sha256:ab4b3b94d2e1e5f81e34be8a9b7b7575fc9dd5398fccb0bef351ec9b14872623"}, +] + +[package.dependencies] +Mako = "*" +SQLAlchemy = ">=1.3.0" +typing-extensions = ">=4" + +[package.extras] +tz = ["backports.zoneinfo"] + +[[package]] +name = "annotated-types" +version = "0.6.0" +description = "Reusable constraint types to use with typing.Annotated" +optional = false +python-versions = ">=3.8" +files = [ + {file = "annotated_types-0.6.0-py3-none-any.whl", hash = "sha256:0641064de18ba7a25dee8f96403ebc39113d0cb953a01429249d5c7564666a43"}, + {file = "annotated_types-0.6.0.tar.gz", hash = "sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d"}, +] + +[[package]] +name = "apispec" +version = "6.3.0" +description = "A pluggable API specification generator. Currently supports the OpenAPI Specification (f.k.a. the Swagger specification)." +optional = false +python-versions = ">=3.7" +files = [ + {file = "apispec-6.3.0-py3-none-any.whl", hash = "sha256:95a0b9355785df998bb0e9b939237a30ee4c7428fd6ef97305eae3da06b9b339"}, + {file = "apispec-6.3.0.tar.gz", hash = "sha256:6cb08d92ce73ff0b3bf46cb2ea5c00d57289b0f279fb0256a3df468182ba5344"}, +] + +[package.dependencies] +packaging = ">=21.3" +PyYAML = {version = ">=3.10", optional = true, markers = "extra == \"yaml\""} + +[package.extras] +dev = ["PyYAML (>=3.10)", "flake8 (==5.0.4)", "flake8-bugbear (==22.9.23)", "marshmallow (>=3.13.0)", "mypy (==0.982)", "openapi-spec-validator (<0.5)", "prance[osv] (>=0.11)", "pre-commit (>=2.4,<3.0)", "pytest", "tox", "types-PyYAML"] +docs = ["marshmallow (>=3.13.0)", "pyyaml (==6.0)", "sphinx (==5.2.3)", "sphinx-issues (==3.0.1)", "sphinx-rtd-theme (==1.0.0)"] +lint = ["flake8 (==5.0.4)", "flake8-bugbear (==22.9.23)", "mypy (==0.982)", "pre-commit (>=2.4,<3.0)", "types-PyYAML"] +marshmallow = ["marshmallow (>=3.18.0)"] +tests = ["PyYAML (>=3.10)", "marshmallow (>=3.13.0)", "openapi-spec-validator (<0.5)", "prance[osv] (>=0.11)", "pytest"] +validation = ["openapi-spec-validator (<0.5)", "prance[osv] (>=0.11)"] +yaml = ["PyYAML (>=3.10)"] + +[[package]] +name = "apispec-webframeworks" +version = "0.5.2" +description = "Web framework plugins for apispec." +optional = false +python-versions = ">=3.6" +files = [ + {file = "apispec-webframeworks-0.5.2.tar.gz", hash = "sha256:0db35b267914b3f8c562aca0261957dbcb4176f255eacc22520277010818dcf3"}, + {file = "apispec_webframeworks-0.5.2-py2.py3-none-any.whl", hash = "sha256:482c563abbcc2a261439476cb3f1a7c7284cc997c322c574d48c111643e9c04e"}, +] + +[package.dependencies] +apispec = {version = ">=2.0.0", extras = ["yaml"]} + +[package.extras] +dev = ["Flask (==1.1.1)", "bottle (==0.12.17)", "flake8 (==3.7.9)", "flake8-bugbear (==19.8.0)", "mock", "pre-commit (>=1.18,<2.0)", "pytest", "tornado", "tox"] +lint = ["flake8 (==3.7.9)", "flake8-bugbear (==19.8.0)", "pre-commit (>=1.18,<2.0)"] +tests = ["Flask (==1.1.1)", "bottle (==0.12.17)", "mock", "pytest", "tornado"] + +[[package]] +name = "beautifulsoup4" +version = "4.12.2" +description = "Screen-scraping library" +optional = false +python-versions = ">=3.6.0" +files = [ + {file = "beautifulsoup4-4.12.2-py3-none-any.whl", hash = "sha256:bd2520ca0d9d7d12694a53d44ac482d181b4ec1888909b035a3dbf40d0f57d4a"}, + {file = "beautifulsoup4-4.12.2.tar.gz", hash = "sha256:492bbc69dca35d12daac71c4db1bfff0c876c00ef4a2ffacce226d4638eb72da"}, +] + +[package.dependencies] +soupsieve = ">1.2" + +[package.extras] +html5lib = ["html5lib"] +lxml = ["lxml"] + +[[package]] +name = "blinker" +version = "1.7.0" +description = "Fast, simple object-to-object and broadcast signaling" +optional = false +python-versions = ">=3.8" +files = [ + {file = "blinker-1.7.0-py3-none-any.whl", hash = "sha256:c3f865d4d54db7abc53758a01601cf343fe55b84c1de4e3fa910e420b438d5b9"}, + {file = "blinker-1.7.0.tar.gz", hash = "sha256:e6820ff6fa4e4d1d8e2747c2283749c3f547e4fee112b98555cdcdae32996182"}, +] + +[[package]] +name = "cachetools" +version = "5.3.2" +description = "Extensible memoizing collections and decorators" +optional = false +python-versions = ">=3.7" +files = [ + {file = "cachetools-5.3.2-py3-none-any.whl", hash = "sha256:861f35a13a451f94e301ce2bec7cac63e881232ccce7ed67fab9b5df4d3beaa1"}, + {file = "cachetools-5.3.2.tar.gz", hash = "sha256:086ee420196f7b2ab9ca2db2520aca326318b68fe5ba8bc4d49cca91add450f2"}, +] + +[[package]] +name = "camel-converter" +version = "3.1.1" +description = "Converts a string from snake case to camel case or camel case to snake case" +optional = false +python-versions = ">=3.8,<4.0" +files = [ + {file = "camel_converter-3.1.1-py3-none-any.whl", hash = "sha256:f9f4ad446e46cc317d612a435b653bcb8c3572f1fb2252b0620c5e4fd3b50ebf"}, + {file = "camel_converter-3.1.1.tar.gz", hash = "sha256:73c1e31801d0f7baf08fe2a44e6a712e685496e490cab3cd9ce7222845502ef7"}, +] + +[package.dependencies] +pydantic = {version = ">=1.8.2", optional = true, markers = "extra == \"pydantic\""} + +[package.extras] +pydantic = ["pydantic (>=1.8.2)"] + +[[package]] +name = "certifi" +version = "2023.11.17" +description = "Python package for providing Mozilla's CA Bundle." +optional = false +python-versions = ">=3.6" +files = [ + {file = "certifi-2023.11.17-py3-none-any.whl", hash = "sha256:e036ab49d5b79556f99cfc2d9320b34cfbe5be05c5871b51de9329f0603b0474"}, + {file = "certifi-2023.11.17.tar.gz", hash = "sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1"}, +] + +[[package]] +name = "charset-normalizer" +version = "3.3.2" +description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." +optional = false +python-versions = ">=3.7.0" +files = [ + {file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-win32.whl", hash = "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-win32.whl", hash = "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-win32.whl", hash = "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-win32.whl", hash = "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-win32.whl", hash = "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"}, + {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"}, +] + +[[package]] +name = "click" +version = "8.1.7" +description = "Composable command line interface toolkit" +optional = false +python-versions = ">=3.7" +files = [ + {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"}, + {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} + +[[package]] +name = "colorama" +version = "0.4.6" +description = "Cross-platform colored terminal text." +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +files = [ + {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, + {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, +] + +[[package]] +name = "coverage" +version = "6.5.0" +description = "Code coverage measurement for Python" +optional = false +python-versions = ">=3.7" +files = [ + {file = "coverage-6.5.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ef8674b0ee8cc11e2d574e3e2998aea5df5ab242e012286824ea3c6970580e53"}, + {file = "coverage-6.5.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:784f53ebc9f3fd0e2a3f6a78b2be1bd1f5575d7863e10c6e12504f240fd06660"}, + {file = "coverage-6.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b4a5be1748d538a710f87542f22c2cad22f80545a847ad91ce45e77417293eb4"}, + {file = "coverage-6.5.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:83516205e254a0cb77d2d7bb3632ee019d93d9f4005de31dca0a8c3667d5bc04"}, + {file = "coverage-6.5.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af4fffaffc4067232253715065e30c5a7ec6faac36f8fc8d6f64263b15f74db0"}, + {file = "coverage-6.5.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:97117225cdd992a9c2a5515db1f66b59db634f59d0679ca1fa3fe8da32749cae"}, + {file = "coverage-6.5.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:a1170fa54185845505fbfa672f1c1ab175446c887cce8212c44149581cf2d466"}, + {file = "coverage-6.5.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:11b990d520ea75e7ee8dcab5bc908072aaada194a794db9f6d7d5cfd19661e5a"}, + {file = "coverage-6.5.0-cp310-cp310-win32.whl", hash = "sha256:5dbec3b9095749390c09ab7c89d314727f18800060d8d24e87f01fb9cfb40b32"}, + {file = "coverage-6.5.0-cp310-cp310-win_amd64.whl", hash = "sha256:59f53f1dc5b656cafb1badd0feb428c1e7bc19b867479ff72f7a9dd9b479f10e"}, + {file = "coverage-6.5.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4a5375e28c5191ac38cca59b38edd33ef4cc914732c916f2929029b4bfb50795"}, + {file = "coverage-6.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4ed2820d919351f4167e52425e096af41bfabacb1857186c1ea32ff9983ed75"}, + {file = "coverage-6.5.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:33a7da4376d5977fbf0a8ed91c4dffaaa8dbf0ddbf4c8eea500a2486d8bc4d7b"}, + {file = "coverage-6.5.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a8fb6cf131ac4070c9c5a3e21de0f7dc5a0fbe8bc77c9456ced896c12fcdad91"}, + {file = "coverage-6.5.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a6b7d95969b8845250586f269e81e5dfdd8ff828ddeb8567a4a2eaa7313460c4"}, + {file = "coverage-6.5.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:1ef221513e6f68b69ee9e159506d583d31aa3567e0ae84eaad9d6ec1107dddaa"}, + {file = "coverage-6.5.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:cca4435eebea7962a52bdb216dec27215d0df64cf27fc1dd538415f5d2b9da6b"}, + {file = "coverage-6.5.0-cp311-cp311-win32.whl", hash = "sha256:98e8a10b7a314f454d9eff4216a9a94d143a7ee65018dd12442e898ee2310578"}, + {file = "coverage-6.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:bc8ef5e043a2af066fa8cbfc6e708d58017024dc4345a1f9757b329a249f041b"}, + {file = "coverage-6.5.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:4433b90fae13f86fafff0b326453dd42fc9a639a0d9e4eec4d366436d1a41b6d"}, + {file = "coverage-6.5.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f4f05d88d9a80ad3cac6244d36dd89a3c00abc16371769f1340101d3cb899fc3"}, + {file = "coverage-6.5.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:94e2565443291bd778421856bc975d351738963071e9b8839ca1fc08b42d4bef"}, + {file = "coverage-6.5.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:027018943386e7b942fa832372ebc120155fd970837489896099f5cfa2890f79"}, + {file = "coverage-6.5.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:255758a1e3b61db372ec2736c8e2a1fdfaf563977eedbdf131de003ca5779b7d"}, + {file = "coverage-6.5.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:851cf4ff24062c6aec510a454b2584f6e998cada52d4cb58c5e233d07172e50c"}, + {file = "coverage-6.5.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:12adf310e4aafddc58afdb04d686795f33f4d7a6fa67a7a9d4ce7d6ae24d949f"}, + {file = "coverage-6.5.0-cp37-cp37m-win32.whl", hash = "sha256:b5604380f3415ba69de87a289a2b56687faa4fe04dbee0754bfcae433489316b"}, + {file = "coverage-6.5.0-cp37-cp37m-win_amd64.whl", hash = "sha256:4a8dbc1f0fbb2ae3de73eb0bdbb914180c7abfbf258e90b311dcd4f585d44bd2"}, + {file = "coverage-6.5.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d900bb429fdfd7f511f868cedd03a6bbb142f3f9118c09b99ef8dc9bf9643c3c"}, + {file = "coverage-6.5.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2198ea6fc548de52adc826f62cb18554caedfb1d26548c1b7c88d8f7faa8f6ba"}, + {file = "coverage-6.5.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c4459b3de97b75e3bd6b7d4b7f0db13f17f504f3d13e2a7c623786289dd670e"}, + {file = "coverage-6.5.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:20c8ac5386253717e5ccc827caad43ed66fea0efe255727b1053a8154d952398"}, + {file = "coverage-6.5.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b07130585d54fe8dff3d97b93b0e20290de974dc8177c320aeaf23459219c0b"}, + {file = "coverage-6.5.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:dbdb91cd8c048c2b09eb17713b0c12a54fbd587d79adcebad543bc0cd9a3410b"}, + {file = "coverage-6.5.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:de3001a203182842a4630e7b8d1a2c7c07ec1b45d3084a83d5d227a3806f530f"}, + {file = "coverage-6.5.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:e07f4a4a9b41583d6eabec04f8b68076ab3cd44c20bd29332c6572dda36f372e"}, + {file = "coverage-6.5.0-cp38-cp38-win32.whl", hash = "sha256:6d4817234349a80dbf03640cec6109cd90cba068330703fa65ddf56b60223a6d"}, + {file = "coverage-6.5.0-cp38-cp38-win_amd64.whl", hash = "sha256:7ccf362abd726b0410bf8911c31fbf97f09f8f1061f8c1cf03dfc4b6372848f6"}, + {file = "coverage-6.5.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:633713d70ad6bfc49b34ead4060531658dc6dfc9b3eb7d8a716d5873377ab745"}, + {file = "coverage-6.5.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:95203854f974e07af96358c0b261f1048d8e1083f2de9b1c565e1be4a3a48cfc"}, + {file = "coverage-6.5.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b9023e237f4c02ff739581ef35969c3739445fb059b060ca51771e69101efffe"}, + {file = "coverage-6.5.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:265de0fa6778d07de30bcf4d9dc471c3dc4314a23a3c6603d356a3c9abc2dfcf"}, + {file = "coverage-6.5.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f830ed581b45b82451a40faabb89c84e1a998124ee4212d440e9c6cf70083e5"}, + {file = "coverage-6.5.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:7b6be138d61e458e18d8e6ddcddd36dd96215edfe5f1168de0b1b32635839b62"}, + {file = "coverage-6.5.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:42eafe6778551cf006a7c43153af1211c3aaab658d4d66fa5fcc021613d02518"}, + {file = "coverage-6.5.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:723e8130d4ecc8f56e9a611e73b31219595baa3bb252d539206f7bbbab6ffc1f"}, + {file = "coverage-6.5.0-cp39-cp39-win32.whl", hash = "sha256:d9ecf0829c6a62b9b573c7bb6d4dcd6ba8b6f80be9ba4fc7ed50bf4ac9aecd72"}, + {file = "coverage-6.5.0-cp39-cp39-win_amd64.whl", hash = "sha256:fc2af30ed0d5ae0b1abdb4ebdce598eafd5b35397d4d75deb341a614d333d987"}, + {file = "coverage-6.5.0-pp36.pp37.pp38-none-any.whl", hash = "sha256:1431986dac3923c5945271f169f59c45b8802a114c8f548d611f2015133df77a"}, + {file = "coverage-6.5.0.tar.gz", hash = "sha256:f642e90754ee3e06b0e7e51bce3379590e76b7f76b708e1a71ff043f87025c84"}, +] + +[package.extras] +toml = ["tomli"] + +[[package]] +name = "flask" +version = "2.3.3" +description = "A simple framework for building complex web applications." +optional = false +python-versions = ">=3.8" +files = [ + {file = "flask-2.3.3-py3-none-any.whl", hash = "sha256:f69fcd559dc907ed196ab9df0e48471709175e696d6e698dd4dbe940f96ce66b"}, + {file = "flask-2.3.3.tar.gz", hash = "sha256:09c347a92aa7ff4a8e7f3206795f30d826654baf38b873d0744cd571ca609efc"}, +] + +[package.dependencies] +blinker = ">=1.6.2" +click = ">=8.1.3" +itsdangerous = ">=2.1.2" +Jinja2 = ">=3.1.2" +Werkzeug = ">=2.3.7" + +[package.extras] +async = ["asgiref (>=3.2)"] +dotenv = ["python-dotenv"] + +[[package]] +name = "greenlet" +version = "3.0.2" +description = "Lightweight in-process concurrent programming" +optional = false +python-versions = ">=3.7" +files = [ + {file = "greenlet-3.0.2-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:9acd8fd67c248b8537953cb3af8787c18a87c33d4dcf6830e410ee1f95a63fd4"}, + {file = "greenlet-3.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:339c0272a62fac7e602e4e6ec32a64ff9abadc638b72f17f6713556ed011d493"}, + {file = "greenlet-3.0.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:38878744926cec29b5cc3654ef47f3003f14bfbba7230e3c8492393fe29cc28b"}, + {file = "greenlet-3.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b3f0497db77cfd034f829678b28267eeeeaf2fc21b3f5041600f7617139e6773"}, + {file = "greenlet-3.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ed1a8a08de7f68506a38f9a2ddb26bbd1480689e66d788fcd4b5f77e2d9ecfcc"}, + {file = "greenlet-3.0.2-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:89a6f6ddcbef4000cda7e205c4c20d319488ff03db961d72d4e73519d2465309"}, + {file = "greenlet-3.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:c1f647fe5b94b51488b314c82fdda10a8756d650cee8d3cd29f657c6031bdf73"}, + {file = "greenlet-3.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:9560c580c896030ff9c311c603aaf2282234643c90d1dec738a1d93e3e53cd51"}, + {file = "greenlet-3.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:2e9c5423046eec21f6651268cb674dfba97280701e04ef23d312776377313206"}, + {file = "greenlet-3.0.2-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:b1fd25dfc5879a82103b3d9e43fa952e3026c221996ff4d32a9c72052544835d"}, + {file = "greenlet-3.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cecfdc950dd25f25d6582952e58521bca749cf3eeb7a9bad69237024308c8196"}, + {file = "greenlet-3.0.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:edf7a1daba1f7c54326291a8cde58da86ab115b78c91d502be8744f0aa8e3ffa"}, + {file = "greenlet-3.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f4cf532bf3c58a862196b06947b1b5cc55503884f9b63bf18582a75228d9950e"}, + {file = "greenlet-3.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e79fb5a9fb2d0bd3b6573784f5e5adabc0b0566ad3180a028af99523ce8f6138"}, + {file = "greenlet-3.0.2-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:006c1028ac0cfcc4e772980cfe73f5476041c8c91d15d64f52482fc571149d46"}, + {file = "greenlet-3.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:fefd5eb2c0b1adffdf2802ff7df45bfe65988b15f6b972706a0e55d451bffaea"}, + {file = "greenlet-3.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0c0fdb8142742ee68e97c106eb81e7d3e883cc739d9c5f2b28bc38a7bafeb6d1"}, + {file = "greenlet-3.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:8f8d14a0a4e8c670fbce633d8b9a1ee175673a695475acd838e372966845f764"}, + {file = "greenlet-3.0.2-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:654b84c9527182036747938b81938f1d03fb8321377510bc1854a9370418ab66"}, + {file = "greenlet-3.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cd5bc4fde0842ff2b9cf33382ad0b4db91c2582db836793d58d174c569637144"}, + {file = "greenlet-3.0.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c27b142a9080bdd5869a2fa7ebf407b3c0b24bd812db925de90e9afe3c417fd6"}, + {file = "greenlet-3.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0df7eed98ea23b20e9db64d46eb05671ba33147df9405330695bcd81a73bb0c9"}, + {file = "greenlet-3.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fb5d60805057d8948065338be6320d35e26b0a72f45db392eb32b70dd6dc9227"}, + {file = "greenlet-3.0.2-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e0e28f5233d64c693382f66d47c362b72089ebf8ac77df7e12ac705c9fa1163d"}, + {file = "greenlet-3.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3e4bfa752b3688d74ab1186e2159779ff4867644d2b1ebf16db14281f0445377"}, + {file = "greenlet-3.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:c42bb589e6e9f9d8bdd79f02f044dff020d30c1afa6e84c0b56d1ce8a324553c"}, + {file = "greenlet-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:b2cedf279ca38ef3f4ed0d013a6a84a7fc3d9495a716b84a5fc5ff448965f251"}, + {file = "greenlet-3.0.2-cp37-cp37m-macosx_11_0_universal2.whl", hash = "sha256:6d65bec56a7bc352bcf11b275b838df618651109074d455a772d3afe25390b7d"}, + {file = "greenlet-3.0.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0acadbc3f72cb0ee85070e8d36bd2a4673d2abd10731ee73c10222cf2dd4713c"}, + {file = "greenlet-3.0.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:14b5d999aefe9ffd2049ad19079f733c3aaa426190ffecadb1d5feacef8fe397"}, + {file = "greenlet-3.0.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f27aa32466993c92d326df982c4acccd9530fe354e938d9e9deada563e71ce76"}, + {file = "greenlet-3.0.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f34a765c5170c0673eb747213a0275ecc749ab3652bdbec324621ed5b2edaef"}, + {file = "greenlet-3.0.2-cp37-cp37m-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:520fcb53a39ef90f5021c77606952dbbc1da75d77114d69b8d7bded4a8e1a813"}, + {file = "greenlet-3.0.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d1fceb5351ab1601903e714c3028b37f6ea722be6873f46e349a960156c05650"}, + {file = "greenlet-3.0.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:7363756cc439a503505b67983237d1cc19139b66488263eb19f5719a32597836"}, + {file = "greenlet-3.0.2-cp37-cp37m-win32.whl", hash = "sha256:d5547b462b8099b84746461e882a3eb8a6e3f80be46cb6afb8524eeb191d1a30"}, + {file = "greenlet-3.0.2-cp37-cp37m-win_amd64.whl", hash = "sha256:950e21562818f9c771989b5b65f990e76f4ac27af66e1bb34634ae67886ede2a"}, + {file = "greenlet-3.0.2-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:d64643317e76b4b41fdba659e7eca29634e5739b8bc394eda3a9127f697ed4b0"}, + {file = "greenlet-3.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f9ea7c2c9795549653b6f7569f6bc75d2c7d1f6b2854eb8ce0bc6ec3cb2dd88"}, + {file = "greenlet-3.0.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:db4233358d3438369051a2f290f1311a360d25c49f255a6c5d10b5bcb3aa2b49"}, + {file = "greenlet-3.0.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ed9bf77b41798e8417657245b9f3649314218a4a17aefb02bb3992862df32495"}, + {file = "greenlet-3.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d4d0df07a38e41a10dfb62c6fc75ede196572b580f48ee49b9282c65639f3965"}, + {file = "greenlet-3.0.2-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:10d247260db20887ae8857c0cbc750b9170f0b067dd7d38fb68a3f2334393bd3"}, + {file = "greenlet-3.0.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:a37ae53cca36823597fd5f65341b6f7bac2dd69ecd6ca01334bb795460ab150b"}, + {file = "greenlet-3.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:80d068e4b6e2499847d916ef64176811ead6bf210a610859220d537d935ec6fd"}, + {file = "greenlet-3.0.2-cp38-cp38-win32.whl", hash = "sha256:b1405614692ac986490d10d3e1a05e9734f473750d4bee3cf7d1286ef7af7da6"}, + {file = "greenlet-3.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:8756a94ed8f293450b0e91119eca2a36332deba69feb2f9ca410d35e74eae1e4"}, + {file = "greenlet-3.0.2-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:2c93cd03acb1499ee4de675e1a4ed8eaaa7227f7949dc55b37182047b006a7aa"}, + {file = "greenlet-3.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1dac09e3c0b78265d2e6d3cbac2d7c48bd1aa4b04a8ffeda3adde9f1688df2c3"}, + {file = "greenlet-3.0.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2ee59c4627c8c4bb3e15949fbcd499abd6b7f4ad9e0bfcb62c65c5e2cabe0ec4"}, + {file = "greenlet-3.0.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:18fe39d70d482b22f0014e84947c5aaa7211fb8e13dc4cc1c43ed2aa1db06d9a"}, + {file = "greenlet-3.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e84bef3cfb6b6bfe258c98c519811c240dbc5b33a523a14933a252e486797c90"}, + {file = "greenlet-3.0.2-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:aecea0442975741e7d69daff9b13c83caff8c13eeb17485afa65f6360a045765"}, + {file = "greenlet-3.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f260e6c2337871a52161824058923df2bbddb38bc11a5cbe71f3474d877c5bd9"}, + {file = "greenlet-3.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:fc14dd9554f88c9c1fe04771589ae24db76cd56c8f1104e4381b383d6b71aff8"}, + {file = "greenlet-3.0.2-cp39-cp39-win32.whl", hash = "sha256:bfcecc984d60b20ffe30173b03bfe9ba6cb671b0be1e95c3e2056d4fe7006590"}, + {file = "greenlet-3.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:c235131bf59d2546bb3ebaa8d436126267392f2e51b85ff45ac60f3a26549af0"}, + {file = "greenlet-3.0.2.tar.gz", hash = "sha256:1c1129bc47266d83444c85a8e990ae22688cf05fb20d7951fd2866007c2ba9bc"}, +] + +[package.extras] +docs = ["Sphinx"] +test = ["objgraph", "psutil"] + +[[package]] +name = "gunicorn" +version = "21.2.0" +description = "WSGI HTTP Server for UNIX" +optional = false +python-versions = ">=3.5" +files = [ + {file = "gunicorn-21.2.0-py3-none-any.whl", hash = "sha256:3213aa5e8c24949e792bcacfc176fef362e7aac80b76c56f6b5122bf350722f0"}, + {file = "gunicorn-21.2.0.tar.gz", hash = "sha256:88ec8bff1d634f98e61b9f65bc4bf3cd918a90806c6f5c48bc5603849ec81033"}, +] + +[package.dependencies] +packaging = "*" + +[package.extras] +eventlet = ["eventlet (>=0.24.1)"] +gevent = ["gevent (>=1.4.0)"] +setproctitle = ["setproctitle"] +tornado = ["tornado (>=0.2)"] + +[[package]] +name = "idna" +version = "3.6" +description = "Internationalized Domain Names in Applications (IDNA)" +optional = false +python-versions = ">=3.5" +files = [ + {file = "idna-3.6-py3-none-any.whl", hash = "sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f"}, + {file = "idna-3.6.tar.gz", hash = "sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca"}, +] + +[[package]] +name = "iniconfig" +version = "2.0.0" +description = "brain-dead simple config-ini parsing" +optional = false +python-versions = ">=3.7" +files = [ + {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, + {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, +] + +[[package]] +name = "itsdangerous" +version = "2.1.2" +description = "Safely pass data to untrusted environments and back." +optional = false +python-versions = ">=3.7" +files = [ + {file = "itsdangerous-2.1.2-py3-none-any.whl", hash = "sha256:2c2349112351b88699d8d4b6b075022c0808887cb7ad10069318a8b0bc88db44"}, + {file = "itsdangerous-2.1.2.tar.gz", hash = "sha256:5dbbc68b317e5e42f327f9021763545dc3fc3bfe22e6deb96aaf1fc38874156a"}, +] + +[[package]] +name = "jinja2" +version = "3.1.2" +description = "A very fast and expressive template engine." +optional = false +python-versions = ">=3.7" +files = [ + {file = "Jinja2-3.1.2-py3-none-any.whl", hash = "sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61"}, + {file = "Jinja2-3.1.2.tar.gz", hash = "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852"}, +] + +[package.dependencies] +MarkupSafe = ">=2.0" + +[package.extras] +i18n = ["Babel (>=2.7)"] + +[[package]] +name = "lxml" +version = "4.9.3" +description = "Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API." +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, != 3.4.*" +files = [ + {file = "lxml-4.9.3-cp27-cp27m-macosx_11_0_x86_64.whl", hash = "sha256:b0a545b46b526d418eb91754565ba5b63b1c0b12f9bd2f808c852d9b4b2f9b5c"}, + {file = "lxml-4.9.3-cp27-cp27m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:075b731ddd9e7f68ad24c635374211376aa05a281673ede86cbe1d1b3455279d"}, + {file = "lxml-4.9.3-cp27-cp27m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:1e224d5755dba2f4a9498e150c43792392ac9b5380aa1b845f98a1618c94eeef"}, + {file = "lxml-4.9.3-cp27-cp27m-win32.whl", hash = "sha256:2c74524e179f2ad6d2a4f7caf70e2d96639c0954c943ad601a9e146c76408ed7"}, + {file = "lxml-4.9.3-cp27-cp27m-win_amd64.whl", hash = "sha256:4f1026bc732b6a7f96369f7bfe1a4f2290fb34dce00d8644bc3036fb351a4ca1"}, + {file = "lxml-4.9.3-cp27-cp27mu-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c0781a98ff5e6586926293e59480b64ddd46282953203c76ae15dbbbf302e8bb"}, + {file = "lxml-4.9.3-cp27-cp27mu-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:cef2502e7e8a96fe5ad686d60b49e1ab03e438bd9123987994528febd569868e"}, + {file = "lxml-4.9.3-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:b86164d2cff4d3aaa1f04a14685cbc072efd0b4f99ca5708b2ad1b9b5988a991"}, + {file = "lxml-4.9.3-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:42871176e7896d5d45138f6d28751053c711ed4d48d8e30b498da155af39aebd"}, + {file = "lxml-4.9.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:ae8b9c6deb1e634ba4f1930eb67ef6e6bf6a44b6eb5ad605642b2d6d5ed9ce3c"}, + {file = "lxml-4.9.3-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:411007c0d88188d9f621b11d252cce90c4a2d1a49db6c068e3c16422f306eab8"}, + {file = "lxml-4.9.3-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:cd47b4a0d41d2afa3e58e5bf1f62069255aa2fd6ff5ee41604418ca925911d76"}, + {file = "lxml-4.9.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0e2cb47860da1f7e9a5256254b74ae331687b9672dfa780eed355c4c9c3dbd23"}, + {file = "lxml-4.9.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:1247694b26342a7bf47c02e513d32225ededd18045264d40758abeb3c838a51f"}, + {file = "lxml-4.9.3-cp310-cp310-win32.whl", hash = "sha256:cdb650fc86227eba20de1a29d4b2c1bfe139dc75a0669270033cb2ea3d391b85"}, + {file = "lxml-4.9.3-cp310-cp310-win_amd64.whl", hash = "sha256:97047f0d25cd4bcae81f9ec9dc290ca3e15927c192df17331b53bebe0e3ff96d"}, + {file = "lxml-4.9.3-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:1f447ea5429b54f9582d4b955f5f1985f278ce5cf169f72eea8afd9502973dd5"}, + {file = "lxml-4.9.3-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:57d6ba0ca2b0c462f339640d22882acc711de224d769edf29962b09f77129cbf"}, + {file = "lxml-4.9.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:9767e79108424fb6c3edf8f81e6730666a50feb01a328f4a016464a5893f835a"}, + {file = "lxml-4.9.3-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:71c52db65e4b56b8ddc5bb89fb2e66c558ed9d1a74a45ceb7dcb20c191c3df2f"}, + {file = "lxml-4.9.3-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:d73d8ecf8ecf10a3bd007f2192725a34bd62898e8da27eb9d32a58084f93962b"}, + {file = "lxml-4.9.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0a3d3487f07c1d7f150894c238299934a2a074ef590b583103a45002035be120"}, + {file = "lxml-4.9.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9e28c51fa0ce5674be9f560c6761c1b441631901993f76700b1b30ca6c8378d6"}, + {file = "lxml-4.9.3-cp311-cp311-win32.whl", hash = "sha256:0bfd0767c5c1de2551a120673b72e5d4b628737cb05414f03c3277bf9bed3305"}, + {file = "lxml-4.9.3-cp311-cp311-win_amd64.whl", hash = "sha256:25f32acefac14ef7bd53e4218fe93b804ef6f6b92ffdb4322bb6d49d94cad2bc"}, + {file = "lxml-4.9.3-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:d3ff32724f98fbbbfa9f49d82852b159e9784d6094983d9a8b7f2ddaebb063d4"}, + {file = "lxml-4.9.3-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:48d6ed886b343d11493129e019da91d4039826794a3e3027321c56d9e71505be"}, + {file = "lxml-4.9.3-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:9a92d3faef50658dd2c5470af249985782bf754c4e18e15afb67d3ab06233f13"}, + {file = "lxml-4.9.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b4e4bc18382088514ebde9328da057775055940a1f2e18f6ad2d78aa0f3ec5b9"}, + {file = "lxml-4.9.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:fc9b106a1bf918db68619fdcd6d5ad4f972fdd19c01d19bdb6bf63f3589a9ec5"}, + {file = "lxml-4.9.3-cp312-cp312-win_amd64.whl", hash = "sha256:d37017287a7adb6ab77e1c5bee9bcf9660f90ff445042b790402a654d2ad81d8"}, + {file = "lxml-4.9.3-cp35-cp35m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:56dc1f1ebccc656d1b3ed288f11e27172a01503fc016bcabdcbc0978b19352b7"}, + {file = "lxml-4.9.3-cp35-cp35m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:578695735c5a3f51569810dfebd05dd6f888147a34f0f98d4bb27e92b76e05c2"}, + {file = "lxml-4.9.3-cp35-cp35m-win32.whl", hash = "sha256:704f61ba8c1283c71b16135caf697557f5ecf3e74d9e453233e4771d68a1f42d"}, + {file = "lxml-4.9.3-cp35-cp35m-win_amd64.whl", hash = "sha256:c41bfca0bd3532d53d16fd34d20806d5c2b1ace22a2f2e4c0008570bf2c58833"}, + {file = "lxml-4.9.3-cp36-cp36m-macosx_11_0_x86_64.whl", hash = "sha256:64f479d719dc9f4c813ad9bb6b28f8390360660b73b2e4beb4cb0ae7104f1c12"}, + {file = "lxml-4.9.3-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:dd708cf4ee4408cf46a48b108fb9427bfa00b9b85812a9262b5c668af2533ea5"}, + {file = "lxml-4.9.3-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c31c7462abdf8f2ac0577d9f05279727e698f97ecbb02f17939ea99ae8daa98"}, + {file = "lxml-4.9.3-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:e3cd95e10c2610c360154afdc2f1480aea394f4a4f1ea0a5eacce49640c9b190"}, + {file = "lxml-4.9.3-cp36-cp36m-manylinux_2_28_x86_64.whl", hash = "sha256:4930be26af26ac545c3dffb662521d4e6268352866956672231887d18f0eaab2"}, + {file = "lxml-4.9.3-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4aec80cde9197340bc353d2768e2a75f5f60bacda2bab72ab1dc499589b3878c"}, + {file = "lxml-4.9.3-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:14e019fd83b831b2e61baed40cab76222139926b1fb5ed0e79225bc0cae14584"}, + {file = "lxml-4.9.3-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:0c0850c8b02c298d3c7006b23e98249515ac57430e16a166873fc47a5d549287"}, + {file = "lxml-4.9.3-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:aca086dc5f9ef98c512bac8efea4483eb84abbf926eaeedf7b91479feb092458"}, + {file = "lxml-4.9.3-cp36-cp36m-win32.whl", hash = "sha256:50baa9c1c47efcaef189f31e3d00d697c6d4afda5c3cde0302d063492ff9b477"}, + {file = "lxml-4.9.3-cp36-cp36m-win_amd64.whl", hash = "sha256:bef4e656f7d98aaa3486d2627e7d2df1157d7e88e7efd43a65aa5dd4714916cf"}, + {file = "lxml-4.9.3-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:46f409a2d60f634fe550f7133ed30ad5321ae2e6630f13657fb9479506b00601"}, + {file = "lxml-4.9.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:4c28a9144688aef80d6ea666c809b4b0e50010a2aca784c97f5e6bf143d9f129"}, + {file = "lxml-4.9.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:141f1d1a9b663c679dc524af3ea1773e618907e96075262726c7612c02b149a4"}, + {file = "lxml-4.9.3-cp37-cp37m-manylinux_2_28_x86_64.whl", hash = "sha256:53ace1c1fd5a74ef662f844a0413446c0629d151055340e9893da958a374f70d"}, + {file = "lxml-4.9.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:17a753023436a18e27dd7769e798ce302963c236bc4114ceee5b25c18c52c693"}, + {file = "lxml-4.9.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:7d298a1bd60c067ea75d9f684f5f3992c9d6766fadbc0bcedd39750bf344c2f4"}, + {file = "lxml-4.9.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:081d32421db5df44c41b7f08a334a090a545c54ba977e47fd7cc2deece78809a"}, + {file = "lxml-4.9.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:23eed6d7b1a3336ad92d8e39d4bfe09073c31bfe502f20ca5116b2a334f8ec02"}, + {file = "lxml-4.9.3-cp37-cp37m-win32.whl", hash = "sha256:1509dd12b773c02acd154582088820893109f6ca27ef7291b003d0e81666109f"}, + {file = "lxml-4.9.3-cp37-cp37m-win_amd64.whl", hash = "sha256:120fa9349a24c7043854c53cae8cec227e1f79195a7493e09e0c12e29f918e52"}, + {file = "lxml-4.9.3-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:4d2d1edbca80b510443f51afd8496be95529db04a509bc8faee49c7b0fb6d2cc"}, + {file = "lxml-4.9.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:8d7e43bd40f65f7d97ad8ef5c9b1778943d02f04febef12def25f7583d19baac"}, + {file = "lxml-4.9.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:71d66ee82e7417828af6ecd7db817913cb0cf9d4e61aa0ac1fde0583d84358db"}, + {file = "lxml-4.9.3-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:6fc3c450eaa0b56f815c7b62f2b7fba7266c4779adcf1cece9e6deb1de7305ce"}, + {file = "lxml-4.9.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:65299ea57d82fb91c7f019300d24050c4ddeb7c5a190e076b5f48a2b43d19c42"}, + {file = "lxml-4.9.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:eadfbbbfb41b44034a4c757fd5d70baccd43296fb894dba0295606a7cf3124aa"}, + {file = "lxml-4.9.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:3e9bdd30efde2b9ccfa9cb5768ba04fe71b018a25ea093379c857c9dad262c40"}, + {file = "lxml-4.9.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:fcdd00edfd0a3001e0181eab3e63bd5c74ad3e67152c84f93f13769a40e073a7"}, + {file = "lxml-4.9.3-cp38-cp38-win32.whl", hash = "sha256:57aba1bbdf450b726d58b2aea5fe47c7875f5afb2c4a23784ed78f19a0462574"}, + {file = "lxml-4.9.3-cp38-cp38-win_amd64.whl", hash = "sha256:92af161ecbdb2883c4593d5ed4815ea71b31fafd7fd05789b23100d081ecac96"}, + {file = "lxml-4.9.3-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:9bb6ad405121241e99a86efff22d3ef469024ce22875a7ae045896ad23ba2340"}, + {file = "lxml-4.9.3-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:8ed74706b26ad100433da4b9d807eae371efaa266ffc3e9191ea436087a9d6a7"}, + {file = "lxml-4.9.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:fbf521479bcac1e25a663df882c46a641a9bff6b56dc8b0fafaebd2f66fb231b"}, + {file = "lxml-4.9.3-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:303bf1edce6ced16bf67a18a1cf8339d0db79577eec5d9a6d4a80f0fb10aa2da"}, + {file = "lxml-4.9.3-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:5515edd2a6d1a5a70bfcdee23b42ec33425e405c5b351478ab7dc9347228f96e"}, + {file = "lxml-4.9.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:690dafd0b187ed38583a648076865d8c229661ed20e48f2335d68e2cf7dc829d"}, + {file = "lxml-4.9.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:b6420a005548ad52154c8ceab4a1290ff78d757f9e5cbc68f8c77089acd3c432"}, + {file = "lxml-4.9.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bb3bb49c7a6ad9d981d734ef7c7193bc349ac338776a0360cc671eaee89bcf69"}, + {file = "lxml-4.9.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d27be7405547d1f958b60837dc4c1007da90b8b23f54ba1f8b728c78fdb19d50"}, + {file = "lxml-4.9.3-cp39-cp39-win32.whl", hash = "sha256:8df133a2ea5e74eef5e8fc6f19b9e085f758768a16e9877a60aec455ed2609b2"}, + {file = "lxml-4.9.3-cp39-cp39-win_amd64.whl", hash = "sha256:4dd9a263e845a72eacb60d12401e37c616438ea2e5442885f65082c276dfb2b2"}, + {file = "lxml-4.9.3-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:6689a3d7fd13dc687e9102a27e98ef33730ac4fe37795d5036d18b4d527abd35"}, + {file = "lxml-4.9.3-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:f6bdac493b949141b733c5345b6ba8f87a226029cbabc7e9e121a413e49441e0"}, + {file = "lxml-4.9.3-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:05186a0f1346ae12553d66df1cfce6f251589fea3ad3da4f3ef4e34b2d58c6a3"}, + {file = "lxml-4.9.3-pp37-pypy37_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:c2006f5c8d28dee289f7020f721354362fa304acbaaf9745751ac4006650254b"}, + {file = "lxml-4.9.3-pp38-pypy38_pp73-macosx_11_0_x86_64.whl", hash = "sha256:5c245b783db29c4e4fbbbfc9c5a78be496c9fea25517f90606aa1f6b2b3d5f7b"}, + {file = "lxml-4.9.3-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:4fb960a632a49f2f089d522f70496640fdf1218f1243889da3822e0a9f5f3ba7"}, + {file = "lxml-4.9.3-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:50670615eaf97227d5dc60de2dc99fb134a7130d310d783314e7724bf163f75d"}, + {file = "lxml-4.9.3-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:9719fe17307a9e814580af1f5c6e05ca593b12fb7e44fe62450a5384dbf61b4b"}, + {file = "lxml-4.9.3-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:3331bece23c9ee066e0fb3f96c61322b9e0f54d775fccefff4c38ca488de283a"}, + {file = "lxml-4.9.3-pp39-pypy39_pp73-macosx_11_0_x86_64.whl", hash = "sha256:ed667f49b11360951e201453fc3967344d0d0263aa415e1619e85ae7fd17b4e0"}, + {file = "lxml-4.9.3-pp39-pypy39_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:8b77946fd508cbf0fccd8e400a7f71d4ac0e1595812e66025bac475a8e811694"}, + {file = "lxml-4.9.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:e4da8ca0c0c0aea88fd46be8e44bd49716772358d648cce45fe387f7b92374a7"}, + {file = "lxml-4.9.3-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:fe4bda6bd4340caa6e5cf95e73f8fea5c4bfc55763dd42f1b50a94c1b4a2fbd4"}, + {file = "lxml-4.9.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:f3df3db1d336b9356dd3112eae5f5c2b8b377f3bc826848567f10bfddfee77e9"}, + {file = "lxml-4.9.3.tar.gz", hash = "sha256:48628bd53a426c9eb9bc066a923acaa0878d1e86129fd5359aee99285f4eed9c"}, +] + +[package.extras] +cssselect = ["cssselect (>=0.7)"] +html5 = ["html5lib"] +htmlsoup = ["BeautifulSoup4"] +source = ["Cython (>=0.29.35)"] + +[[package]] +name = "mako" +version = "1.3.0" +description = "A super-fast templating language that borrows the best ideas from the existing templating languages." +optional = false +python-versions = ">=3.8" +files = [ + {file = "Mako-1.3.0-py3-none-any.whl", hash = "sha256:57d4e997349f1a92035aa25c17ace371a4213f2ca42f99bee9a602500cfd54d9"}, + {file = "Mako-1.3.0.tar.gz", hash = "sha256:e3a9d388fd00e87043edbe8792f45880ac0114e9c4adc69f6e9bfb2c55e3b11b"}, +] + +[package.dependencies] +MarkupSafe = ">=0.9.2" + +[package.extras] +babel = ["Babel"] +lingua = ["lingua"] +testing = ["pytest"] + +[[package]] +name = "markupsafe" +version = "2.1.3" +description = "Safely add untrusted strings to HTML/XML markup." +optional = false +python-versions = ">=3.7" +files = [ + {file = "MarkupSafe-2.1.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:cd0f502fe016460680cd20aaa5a76d241d6f35a1c3350c474bac1273803893fa"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e09031c87a1e51556fdcb46e5bd4f59dfb743061cf93c4d6831bf894f125eb57"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:68e78619a61ecf91e76aa3e6e8e33fc4894a2bebe93410754bd28fce0a8a4f9f"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:65c1a9bcdadc6c28eecee2c119465aebff8f7a584dd719facdd9e825ec61ab52"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:525808b8019e36eb524b8c68acdd63a37e75714eac50e988180b169d64480a00"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:962f82a3086483f5e5f64dbad880d31038b698494799b097bc59c2edf392fce6"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:aa7bd130efab1c280bed0f45501b7c8795f9fdbeb02e965371bbef3523627779"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c9c804664ebe8f83a211cace637506669e7890fec1b4195b505c214e50dd4eb7"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-win32.whl", hash = "sha256:10bbfe99883db80bdbaff2dcf681dfc6533a614f700da1287707e8a5d78a8431"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-win_amd64.whl", hash = "sha256:1577735524cdad32f9f694208aa75e422adba74f1baee7551620e43a3141f559"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ad9e82fb8f09ade1c3e1b996a6337afac2b8b9e365f926f5a61aacc71adc5b3c"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3c0fae6c3be832a0a0473ac912810b2877c8cb9d76ca48de1ed31e1c68386575"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b076b6226fb84157e3f7c971a47ff3a679d837cf338547532ab866c57930dbee"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bfce63a9e7834b12b87c64d6b155fdd9b3b96191b6bd334bf37db7ff1fe457f2"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:338ae27d6b8745585f87218a3f23f1512dbf52c26c28e322dbe54bcede54ccb9"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e4dd52d80b8c83fdce44e12478ad2e85c64ea965e75d66dbeafb0a3e77308fcc"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:df0be2b576a7abbf737b1575f048c23fb1d769f267ec4358296f31c2479db8f9"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5bbe06f8eeafd38e5d0a4894ffec89378b6c6a625ff57e3028921f8ff59318ac"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-win32.whl", hash = "sha256:dd15ff04ffd7e05ffcb7fe79f1b98041b8ea30ae9234aed2a9168b5797c3effb"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-win_amd64.whl", hash = "sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686"}, + {file = "MarkupSafe-2.1.3-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:f698de3fd0c4e6972b92290a45bd9b1536bffe8c6759c62471efaa8acb4c37bc"}, + {file = "MarkupSafe-2.1.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:aa57bd9cf8ae831a362185ee444e15a93ecb2e344c8e52e4d721ea3ab6ef1823"}, + {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ffcc3f7c66b5f5b7931a5aa68fc9cecc51e685ef90282f4a82f0f5e9b704ad11"}, + {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47d4f1c5f80fc62fdd7777d0d40a2e9dda0a05883ab11374334f6c4de38adffd"}, + {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1f67c7038d560d92149c060157d623c542173016c4babc0c1913cca0564b9939"}, + {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:9aad3c1755095ce347e26488214ef77e0485a3c34a50c5a5e2471dff60b9dd9c"}, + {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:14ff806850827afd6b07a5f32bd917fb7f45b046ba40c57abdb636674a8b559c"}, + {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8f9293864fe09b8149f0cc42ce56e3f0e54de883a9de90cd427f191c346eb2e1"}, + {file = "MarkupSafe-2.1.3-cp312-cp312-win32.whl", hash = "sha256:715d3562f79d540f251b99ebd6d8baa547118974341db04f5ad06d5ea3eb8007"}, + {file = "MarkupSafe-2.1.3-cp312-cp312-win_amd64.whl", hash = "sha256:1b8dd8c3fd14349433c79fa8abeb573a55fc0fdd769133baac1f5e07abf54aeb"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb0932dc158471523c9637e807d9bfb93e06a95cbf010f1a38b98623b929ef2b"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca379055a47383d02a5400cb0d110cef0a776fc644cda797db0c5696cfd7e18e"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:b7ff0f54cb4ff66dd38bebd335a38e2c22c41a8ee45aa608efc890ac3e3931bc"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c011a4149cfbcf9f03994ec2edffcb8b1dc2d2aede7ca243746df97a5d41ce48"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:56d9f2ecac662ca1611d183feb03a3fa4406469dafe241673d521dd5ae92a155"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-win32.whl", hash = "sha256:8758846a7e80910096950b67071243da3e5a20ed2546e6392603c096778d48e0"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-win_amd64.whl", hash = "sha256:787003c0ddb00500e49a10f2844fac87aa6ce977b90b0feaaf9de23c22508b24"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:2ef12179d3a291be237280175b542c07a36e7f60718296278d8593d21ca937d4"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2c1b19b3aaacc6e57b7e25710ff571c24d6c3613a45e905b1fde04d691b98ee0"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8afafd99945ead6e075b973fefa56379c5b5c53fd8937dad92c662da5d8fd5ee"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c41976a29d078bb235fea9b2ecd3da465df42a562910f9022f1a03107bd02be"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d080e0a5eb2529460b30190fcfcc4199bd7f827663f858a226a81bc27beaa97e"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:69c0f17e9f5a7afdf2cc9fb2d1ce6aabdb3bafb7f38017c0b77862bcec2bbad8"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:504b320cd4b7eff6f968eddf81127112db685e81f7e36e75f9f84f0df46041c3"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:42de32b22b6b804f42c5d98be4f7e5e977ecdd9ee9b660fda1a3edf03b11792d"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-win32.whl", hash = "sha256:ceb01949af7121f9fc39f7d27f91be8546f3fb112c608bc4029aef0bab86a2a5"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-win_amd64.whl", hash = "sha256:1b40069d487e7edb2676d3fbdb2b0829ffa2cd63a2ec26c4938b2d34391b4ecc"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:8023faf4e01efadfa183e863fefde0046de576c6f14659e8782065bcece22198"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6b2b56950d93e41f33b4223ead100ea0fe11f8e6ee5f641eb753ce4b77a7042b"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9dcdfd0eaf283af041973bff14a2e143b8bd64e069f4c383416ecd79a81aab58"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:05fb21170423db021895e1ea1e1f3ab3adb85d1c2333cbc2310f2a26bc77272e"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:282c2cb35b5b673bbcadb33a585408104df04f14b2d9b01d4c345a3b92861c2c"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ab4a0df41e7c16a1392727727e7998a467472d0ad65f3ad5e6e765015df08636"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7ef3cb2ebbf91e330e3bb937efada0edd9003683db6b57bb108c4001f37a02ea"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0a4e4a1aff6c7ac4cd55792abf96c915634c2b97e3cc1c7129578aa68ebd754e"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-win32.whl", hash = "sha256:fec21693218efe39aa7f8599346e90c705afa52c5b31ae019b2e57e8f6542bb2"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-win_amd64.whl", hash = "sha256:3fd4abcb888d15a94f32b75d8fd18ee162ca0c064f35b11134be77050296d6ba"}, + {file = "MarkupSafe-2.1.3.tar.gz", hash = "sha256:af598ed32d6ae86f1b747b82783958b1a4ab8f617b06fe68795c7f026abbdcad"}, +] + +[[package]] +name = "meilisearch" +version = "0.28.4" +description = "The python client for Meilisearch API." +optional = false +python-versions = ">=3.8" +files = [ + {file = "meilisearch-0.28.4-py3-none-any.whl", hash = "sha256:279706671fc5a1bc1e98e066c216f85a8f72bbb26de388aafefe3062b22cbaf9"}, + {file = "meilisearch-0.28.4.tar.gz", hash = "sha256:db915654b14ed230fc7ca4285e4eae643e7673aee15d79c9cf287ef446f5c2cf"}, +] + +[package.dependencies] +camel-converter = {version = "*", extras = ["pydantic"]} +requests = "*" + +[[package]] +name = "mypy" +version = "1.7.1" +description = "Optional static typing for Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "mypy-1.7.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:12cce78e329838d70a204293e7b29af9faa3ab14899aec397798a4b41be7f340"}, + {file = "mypy-1.7.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1484b8fa2c10adf4474f016e09d7a159602f3239075c7bf9f1627f5acf40ad49"}, + {file = "mypy-1.7.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:31902408f4bf54108bbfb2e35369877c01c95adc6192958684473658c322c8a5"}, + {file = "mypy-1.7.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f2c2521a8e4d6d769e3234350ba7b65ff5d527137cdcde13ff4d99114b0c8e7d"}, + {file = "mypy-1.7.1-cp310-cp310-win_amd64.whl", hash = "sha256:fcd2572dd4519e8a6642b733cd3a8cfc1ef94bafd0c1ceed9c94fe736cb65b6a"}, + {file = "mypy-1.7.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4b901927f16224d0d143b925ce9a4e6b3a758010673eeded9b748f250cf4e8f7"}, + {file = "mypy-1.7.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2f7f6985d05a4e3ce8255396df363046c28bea790e40617654e91ed580ca7c51"}, + {file = "mypy-1.7.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:944bdc21ebd620eafefc090cdf83158393ec2b1391578359776c00de00e8907a"}, + {file = "mypy-1.7.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9c7ac372232c928fff0645d85f273a726970c014749b924ce5710d7d89763a28"}, + {file = "mypy-1.7.1-cp311-cp311-win_amd64.whl", hash = "sha256:f6efc9bd72258f89a3816e3a98c09d36f079c223aa345c659622f056b760ab42"}, + {file = "mypy-1.7.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:6dbdec441c60699288adf051f51a5d512b0d818526d1dcfff5a41f8cd8b4aaf1"}, + {file = "mypy-1.7.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4fc3d14ee80cd22367caaaf6e014494415bf440980a3045bf5045b525680ac33"}, + {file = "mypy-1.7.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c6e4464ed5f01dc44dc9821caf67b60a4e5c3b04278286a85c067010653a0eb"}, + {file = "mypy-1.7.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:d9b338c19fa2412f76e17525c1b4f2c687a55b156320acb588df79f2e6fa9fea"}, + {file = "mypy-1.7.1-cp312-cp312-win_amd64.whl", hash = "sha256:204e0d6de5fd2317394a4eff62065614c4892d5a4d1a7ee55b765d7a3d9e3f82"}, + {file = "mypy-1.7.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:84860e06ba363d9c0eeabd45ac0fde4b903ad7aa4f93cd8b648385a888e23200"}, + {file = "mypy-1.7.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:8c5091ebd294f7628eb25ea554852a52058ac81472c921150e3a61cdd68f75a7"}, + {file = "mypy-1.7.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40716d1f821b89838589e5b3106ebbc23636ffdef5abc31f7cd0266db936067e"}, + {file = "mypy-1.7.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5cf3f0c5ac72139797953bd50bc6c95ac13075e62dbfcc923571180bebb662e9"}, + {file = "mypy-1.7.1-cp38-cp38-win_amd64.whl", hash = "sha256:78e25b2fd6cbb55ddfb8058417df193f0129cad5f4ee75d1502248e588d9e0d7"}, + {file = "mypy-1.7.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:75c4d2a6effd015786c87774e04331b6da863fc3fc4e8adfc3b40aa55ab516fe"}, + {file = "mypy-1.7.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2643d145af5292ee956aa0a83c2ce1038a3bdb26e033dadeb2f7066fb0c9abce"}, + {file = "mypy-1.7.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75aa828610b67462ffe3057d4d8a4112105ed211596b750b53cbfe182f44777a"}, + {file = "mypy-1.7.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ee5d62d28b854eb61889cde4e1dbc10fbaa5560cb39780c3995f6737f7e82120"}, + {file = "mypy-1.7.1-cp39-cp39-win_amd64.whl", hash = "sha256:72cf32ce7dd3562373f78bd751f73c96cfb441de147cc2448a92c1a308bd0ca6"}, + {file = "mypy-1.7.1-py3-none-any.whl", hash = "sha256:f7c5d642db47376a0cc130f0de6d055056e010debdaf0707cd2b0fc7e7ef30ea"}, + {file = "mypy-1.7.1.tar.gz", hash = "sha256:fcb6d9afb1b6208b4c712af0dafdc650f518836065df0d4fb1d800f5d6773db2"}, +] + +[package.dependencies] +mypy-extensions = ">=1.0.0" +typing-extensions = ">=4.1.0" + +[package.extras] +dmypy = ["psutil (>=4.0)"] +install-types = ["pip"] +mypyc = ["setuptools (>=50)"] +reports = ["lxml"] + +[[package]] +name = "mypy-extensions" +version = "1.0.0" +description = "Type system extensions for programs checked with the mypy type checker." +optional = false +python-versions = ">=3.5" +files = [ + {file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"}, + {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"}, +] + +[[package]] +name = "packaging" +version = "23.2" +description = "Core utilities for Python packages" +optional = false +python-versions = ">=3.7" +files = [ + {file = "packaging-23.2-py3-none-any.whl", hash = "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7"}, + {file = "packaging-23.2.tar.gz", hash = "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5"}, +] + +[[package]] +name = "pillow" +version = "10.1.0" +description = "Python Imaging Library (Fork)" +optional = false +python-versions = ">=3.8" +files = [ + {file = "Pillow-10.1.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:1ab05f3db77e98f93964697c8efc49c7954b08dd61cff526b7f2531a22410106"}, + {file = "Pillow-10.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6932a7652464746fcb484f7fc3618e6503d2066d853f68a4bd97193a3996e273"}, + {file = "Pillow-10.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5f63b5a68daedc54c7c3464508d8c12075e56dcfbd42f8c1bf40169061ae666"}, + {file = "Pillow-10.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0949b55eb607898e28eaccb525ab104b2d86542a85c74baf3a6dc24002edec2"}, + {file = "Pillow-10.1.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:ae88931f93214777c7a3aa0a8f92a683f83ecde27f65a45f95f22d289a69e593"}, + {file = "Pillow-10.1.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:b0eb01ca85b2361b09480784a7931fc648ed8b7836f01fb9241141b968feb1db"}, + {file = "Pillow-10.1.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d27b5997bdd2eb9fb199982bb7eb6164db0426904020dc38c10203187ae2ff2f"}, + {file = "Pillow-10.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7df5608bc38bd37ef585ae9c38c9cd46d7c81498f086915b0f97255ea60c2818"}, + {file = "Pillow-10.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:41f67248d92a5e0a2076d3517d8d4b1e41a97e2df10eb8f93106c89107f38b57"}, + {file = "Pillow-10.1.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:1fb29c07478e6c06a46b867e43b0bcdb241b44cc52be9bc25ce5944eed4648e7"}, + {file = "Pillow-10.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2cdc65a46e74514ce742c2013cd4a2d12e8553e3a2563c64879f7c7e4d28bce7"}, + {file = "Pillow-10.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50d08cd0a2ecd2a8657bd3d82c71efd5a58edb04d9308185d66c3a5a5bed9610"}, + {file = "Pillow-10.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:062a1610e3bc258bff2328ec43f34244fcec972ee0717200cb1425214fe5b839"}, + {file = "Pillow-10.1.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:61f1a9d247317fa08a308daaa8ee7b3f760ab1809ca2da14ecc88ae4257d6172"}, + {file = "Pillow-10.1.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:a646e48de237d860c36e0db37ecaecaa3619e6f3e9d5319e527ccbc8151df061"}, + {file = "Pillow-10.1.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:47e5bf85b80abc03be7455c95b6d6e4896a62f6541c1f2ce77a7d2bb832af262"}, + {file = "Pillow-10.1.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:a92386125e9ee90381c3369f57a2a50fa9e6aa8b1cf1d9c4b200d41a7dd8e992"}, + {file = "Pillow-10.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:0f7c276c05a9767e877a0b4c5050c8bee6a6d960d7f0c11ebda6b99746068c2a"}, + {file = "Pillow-10.1.0-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:a89b8312d51715b510a4fe9fc13686283f376cfd5abca8cd1c65e4c76e21081b"}, + {file = "Pillow-10.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:00f438bb841382b15d7deb9a05cc946ee0f2c352653c7aa659e75e592f6fa17d"}, + {file = "Pillow-10.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3d929a19f5469b3f4df33a3df2983db070ebb2088a1e145e18facbc28cae5b27"}, + {file = "Pillow-10.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9a92109192b360634a4489c0c756364c0c3a2992906752165ecb50544c251312"}, + {file = "Pillow-10.1.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:0248f86b3ea061e67817c47ecbe82c23f9dd5d5226200eb9090b3873d3ca32de"}, + {file = "Pillow-10.1.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:9882a7451c680c12f232a422730f986a1fcd808da0fd428f08b671237237d651"}, + {file = "Pillow-10.1.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:1c3ac5423c8c1da5928aa12c6e258921956757d976405e9467c5f39d1d577a4b"}, + {file = "Pillow-10.1.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:806abdd8249ba3953c33742506fe414880bad78ac25cc9a9b1c6ae97bedd573f"}, + {file = "Pillow-10.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:eaed6977fa73408b7b8a24e8b14e59e1668cfc0f4c40193ea7ced8e210adf996"}, + {file = "Pillow-10.1.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:fe1e26e1ffc38be097f0ba1d0d07fcade2bcfd1d023cda5b29935ae8052bd793"}, + {file = "Pillow-10.1.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7a7e3daa202beb61821c06d2517428e8e7c1aab08943e92ec9e5755c2fc9ba5e"}, + {file = "Pillow-10.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:24fadc71218ad2b8ffe437b54876c9382b4a29e030a05a9879f615091f42ffc2"}, + {file = "Pillow-10.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa1d323703cfdac2036af05191b969b910d8f115cf53093125e4058f62012c9a"}, + {file = "Pillow-10.1.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:912e3812a1dbbc834da2b32299b124b5ddcb664ed354916fd1ed6f193f0e2d01"}, + {file = "Pillow-10.1.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:7dbaa3c7de82ef37e7708521be41db5565004258ca76945ad74a8e998c30af8d"}, + {file = "Pillow-10.1.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:9d7bc666bd8c5a4225e7ac71f2f9d12466ec555e89092728ea0f5c0c2422ea80"}, + {file = "Pillow-10.1.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:baada14941c83079bf84c037e2d8b7506ce201e92e3d2fa0d1303507a8538212"}, + {file = "Pillow-10.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:2ef6721c97894a7aa77723740a09547197533146fba8355e86d6d9a4a1056b14"}, + {file = "Pillow-10.1.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:0a026c188be3b443916179f5d04548092e253beb0c3e2ee0a4e2cdad72f66099"}, + {file = "Pillow-10.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:04f6f6149f266a100374ca3cc368b67fb27c4af9f1cc8cb6306d849dcdf12616"}, + {file = "Pillow-10.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb40c011447712d2e19cc261c82655f75f32cb724788df315ed992a4d65696bb"}, + {file = "Pillow-10.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1a8413794b4ad9719346cd9306118450b7b00d9a15846451549314a58ac42219"}, + {file = "Pillow-10.1.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:c9aeea7b63edb7884b031a35305629a7593272b54f429a9869a4f63a1bf04c34"}, + {file = "Pillow-10.1.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:b4005fee46ed9be0b8fb42be0c20e79411533d1fd58edabebc0dd24626882cfd"}, + {file = "Pillow-10.1.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:4d0152565c6aa6ebbfb1e5d8624140a440f2b99bf7afaafbdbf6430426497f28"}, + {file = "Pillow-10.1.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d921bc90b1defa55c9917ca6b6b71430e4286fc9e44c55ead78ca1a9f9eba5f2"}, + {file = "Pillow-10.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:cfe96560c6ce2f4c07d6647af2d0f3c54cc33289894ebd88cfbb3bcd5391e256"}, + {file = "Pillow-10.1.0-pp310-pypy310_pp73-macosx_10_10_x86_64.whl", hash = "sha256:937bdc5a7f5343d1c97dc98149a0be7eb9704e937fe3dc7140e229ae4fc572a7"}, + {file = "Pillow-10.1.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b1c25762197144e211efb5f4e8ad656f36c8d214d390585d1d21281f46d556ba"}, + {file = "Pillow-10.1.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:afc8eef765d948543a4775f00b7b8c079b3321d6b675dde0d02afa2ee23000b4"}, + {file = "Pillow-10.1.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:883f216eac8712b83a63f41b76ddfb7b2afab1b74abbb413c5df6680f071a6b9"}, + {file = "Pillow-10.1.0-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:b920e4d028f6442bea9a75b7491c063f0b9a3972520731ed26c83e254302eb1e"}, + {file = "Pillow-10.1.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1c41d960babf951e01a49c9746f92c5a7e0d939d1652d7ba30f6b3090f27e412"}, + {file = "Pillow-10.1.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:1fafabe50a6977ac70dfe829b2d5735fd54e190ab55259ec8aea4aaea412fa0b"}, + {file = "Pillow-10.1.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:3b834f4b16173e5b92ab6566f0473bfb09f939ba14b23b8da1f54fa63e4b623f"}, + {file = "Pillow-10.1.0.tar.gz", hash = "sha256:e6bf8de6c36ed96c86ea3b6e1d5273c53f46ef518a062464cd7ef5dd2cf92e38"}, +] + +[package.extras] +docs = ["furo", "olefile", "sphinx (>=2.4)", "sphinx-copybutton", "sphinx-inline-tabs", "sphinx-removed-in", "sphinxext-opengraph"] +tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout"] + +[[package]] +name = "pluggy" +version = "1.3.0" +description = "plugin and hook calling mechanisms for python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pluggy-1.3.0-py3-none-any.whl", hash = "sha256:d89c696a773f8bd377d18e5ecda92b7a3793cbe66c87060a6fb58c7b6e1061f7"}, + {file = "pluggy-1.3.0.tar.gz", hash = "sha256:cf61ae8f126ac6f7c451172cf30e3e43d3ca77615509771b3a984a0730651e12"}, +] + +[package.extras] +dev = ["pre-commit", "tox"] +testing = ["pytest", "pytest-benchmark"] + +[[package]] +name = "prometheus-client" +version = "0.17.1" +description = "Python client for the Prometheus monitoring system." +optional = false +python-versions = ">=3.6" +files = [ + {file = "prometheus_client-0.17.1-py3-none-any.whl", hash = "sha256:e537f37160f6807b8202a6fc4764cdd19bac5480ddd3e0d463c3002b34462101"}, + {file = "prometheus_client-0.17.1.tar.gz", hash = "sha256:21e674f39831ae3f8acde238afd9a27a37d0d2fb5a28ea094f0ce25d2cbf2091"}, +] + +[package.extras] +twisted = ["twisted"] + +[[package]] +name = "pydantic" +version = "2.5.2" +description = "Data validation using Python type hints" +optional = false +python-versions = ">=3.7" +files = [ + {file = "pydantic-2.5.2-py3-none-any.whl", hash = "sha256:80c50fb8e3dcecfddae1adbcc00ec5822918490c99ab31f6cf6140ca1c1429f0"}, + {file = "pydantic-2.5.2.tar.gz", hash = "sha256:ff177ba64c6faf73d7afa2e8cad38fd456c0dbe01c9954e71038001cd15a6edd"}, +] + +[package.dependencies] +annotated-types = ">=0.4.0" +pydantic-core = "2.14.5" +typing-extensions = ">=4.6.1" + +[package.extras] +email = ["email-validator (>=2.0.0)"] + +[[package]] +name = "pydantic-core" +version = "2.14.5" +description = "" +optional = false +python-versions = ">=3.7" +files = [ + {file = "pydantic_core-2.14.5-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:7e88f5696153dc516ba6e79f82cc4747e87027205f0e02390c21f7cb3bd8abfd"}, + {file = "pydantic_core-2.14.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4641e8ad4efb697f38a9b64ca0523b557c7931c5f84e0fd377a9a3b05121f0de"}, + {file = "pydantic_core-2.14.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:774de879d212db5ce02dfbf5b0da9a0ea386aeba12b0b95674a4ce0593df3d07"}, + {file = "pydantic_core-2.14.5-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ebb4e035e28f49b6f1a7032920bb9a0c064aedbbabe52c543343d39341a5b2a3"}, + {file = "pydantic_core-2.14.5-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b53e9ad053cd064f7e473a5f29b37fc4cc9dc6d35f341e6afc0155ea257fc911"}, + {file = "pydantic_core-2.14.5-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8aa1768c151cf562a9992462239dfc356b3d1037cc5a3ac829bb7f3bda7cc1f9"}, + {file = "pydantic_core-2.14.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eac5c82fc632c599f4639a5886f96867ffced74458c7db61bc9a66ccb8ee3113"}, + {file = "pydantic_core-2.14.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d2ae91f50ccc5810b2f1b6b858257c9ad2e08da70bf890dee02de1775a387c66"}, + {file = "pydantic_core-2.14.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:6b9ff467ffbab9110e80e8c8de3bcfce8e8b0fd5661ac44a09ae5901668ba997"}, + {file = "pydantic_core-2.14.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:61ea96a78378e3bd5a0be99b0e5ed00057b71f66115f5404d0dae4819f495093"}, + {file = "pydantic_core-2.14.5-cp310-none-win32.whl", hash = "sha256:bb4c2eda937a5e74c38a41b33d8c77220380a388d689bcdb9b187cf6224c9720"}, + {file = "pydantic_core-2.14.5-cp310-none-win_amd64.whl", hash = "sha256:b7851992faf25eac90bfcb7bfd19e1f5ffa00afd57daec8a0042e63c74a4551b"}, + {file = "pydantic_core-2.14.5-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:4e40f2bd0d57dac3feb3a3aed50f17d83436c9e6b09b16af271b6230a2915459"}, + {file = "pydantic_core-2.14.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ab1cdb0f14dc161ebc268c09db04d2c9e6f70027f3b42446fa11c153521c0e88"}, + {file = "pydantic_core-2.14.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aae7ea3a1c5bb40c93cad361b3e869b180ac174656120c42b9fadebf685d121b"}, + {file = "pydantic_core-2.14.5-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:60b7607753ba62cf0739177913b858140f11b8af72f22860c28eabb2f0a61937"}, + {file = "pydantic_core-2.14.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2248485b0322c75aee7565d95ad0e16f1c67403a470d02f94da7344184be770f"}, + {file = "pydantic_core-2.14.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:823fcc638f67035137a5cd3f1584a4542d35a951c3cc68c6ead1df7dac825c26"}, + {file = "pydantic_core-2.14.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:96581cfefa9123accc465a5fd0cc833ac4d75d55cc30b633b402e00e7ced00a6"}, + {file = "pydantic_core-2.14.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a33324437018bf6ba1bb0f921788788641439e0ed654b233285b9c69704c27b4"}, + {file = "pydantic_core-2.14.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:9bd18fee0923ca10f9a3ff67d4851c9d3e22b7bc63d1eddc12f439f436f2aada"}, + {file = "pydantic_core-2.14.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:853a2295c00f1d4429db4c0fb9475958543ee80cfd310814b5c0ef502de24dda"}, + {file = "pydantic_core-2.14.5-cp311-none-win32.whl", hash = "sha256:cb774298da62aea5c80a89bd58c40205ab4c2abf4834453b5de207d59d2e1651"}, + {file = "pydantic_core-2.14.5-cp311-none-win_amd64.whl", hash = "sha256:e87fc540c6cac7f29ede02e0f989d4233f88ad439c5cdee56f693cc9c1c78077"}, + {file = "pydantic_core-2.14.5-cp311-none-win_arm64.whl", hash = "sha256:57d52fa717ff445cb0a5ab5237db502e6be50809b43a596fb569630c665abddf"}, + {file = "pydantic_core-2.14.5-cp312-cp312-macosx_10_7_x86_64.whl", hash = "sha256:e60f112ac88db9261ad3a52032ea46388378034f3279c643499edb982536a093"}, + {file = "pydantic_core-2.14.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6e227c40c02fd873c2a73a98c1280c10315cbebe26734c196ef4514776120aeb"}, + {file = "pydantic_core-2.14.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f0cbc7fff06a90bbd875cc201f94ef0ee3929dfbd5c55a06674b60857b8b85ed"}, + {file = "pydantic_core-2.14.5-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:103ef8d5b58596a731b690112819501ba1db7a36f4ee99f7892c40da02c3e189"}, + {file = "pydantic_core-2.14.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c949f04ecad823f81b1ba94e7d189d9dfb81edbb94ed3f8acfce41e682e48cef"}, + {file = "pydantic_core-2.14.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c1452a1acdf914d194159439eb21e56b89aa903f2e1c65c60b9d874f9b950e5d"}, + {file = "pydantic_core-2.14.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cb4679d4c2b089e5ef89756bc73e1926745e995d76e11925e3e96a76d5fa51fc"}, + {file = "pydantic_core-2.14.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:cf9d3fe53b1ee360e2421be95e62ca9b3296bf3f2fb2d3b83ca49ad3f925835e"}, + {file = "pydantic_core-2.14.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:70f4b4851dbb500129681d04cc955be2a90b2248d69273a787dda120d5cf1f69"}, + {file = "pydantic_core-2.14.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:59986de5710ad9613ff61dd9b02bdd2f615f1a7052304b79cc8fa2eb4e336d2d"}, + {file = "pydantic_core-2.14.5-cp312-none-win32.whl", hash = "sha256:699156034181e2ce106c89ddb4b6504c30db8caa86e0c30de47b3e0654543260"}, + {file = "pydantic_core-2.14.5-cp312-none-win_amd64.whl", hash = "sha256:5baab5455c7a538ac7e8bf1feec4278a66436197592a9bed538160a2e7d11e36"}, + {file = "pydantic_core-2.14.5-cp312-none-win_arm64.whl", hash = "sha256:e47e9a08bcc04d20975b6434cc50bf82665fbc751bcce739d04a3120428f3e27"}, + {file = "pydantic_core-2.14.5-cp37-cp37m-macosx_10_7_x86_64.whl", hash = "sha256:af36f36538418f3806048f3b242a1777e2540ff9efaa667c27da63d2749dbce0"}, + {file = "pydantic_core-2.14.5-cp37-cp37m-macosx_11_0_arm64.whl", hash = "sha256:45e95333b8418ded64745f14574aa9bfc212cb4fbeed7a687b0c6e53b5e188cd"}, + {file = "pydantic_core-2.14.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e47a76848f92529879ecfc417ff88a2806438f57be4a6a8bf2961e8f9ca9ec7"}, + {file = "pydantic_core-2.14.5-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d81e6987b27bc7d101c8597e1cd2bcaa2fee5e8e0f356735c7ed34368c471550"}, + {file = "pydantic_core-2.14.5-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:34708cc82c330e303f4ce87758828ef6e457681b58ce0e921b6e97937dd1e2a3"}, + {file = "pydantic_core-2.14.5-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:652c1988019752138b974c28f43751528116bcceadad85f33a258869e641d753"}, + {file = "pydantic_core-2.14.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6e4d090e73e0725b2904fdbdd8d73b8802ddd691ef9254577b708d413bf3006e"}, + {file = "pydantic_core-2.14.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5c7d5b5005f177764e96bd584d7bf28d6e26e96f2a541fdddb934c486e36fd59"}, + {file = "pydantic_core-2.14.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:a71891847f0a73b1b9eb86d089baee301477abef45f7eaf303495cd1473613e4"}, + {file = "pydantic_core-2.14.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:a717aef6971208f0851a2420b075338e33083111d92041157bbe0e2713b37325"}, + {file = "pydantic_core-2.14.5-cp37-none-win32.whl", hash = "sha256:de790a3b5aa2124b8b78ae5faa033937a72da8efe74b9231698b5a1dd9be3405"}, + {file = "pydantic_core-2.14.5-cp37-none-win_amd64.whl", hash = "sha256:6c327e9cd849b564b234da821236e6bcbe4f359a42ee05050dc79d8ed2a91588"}, + {file = "pydantic_core-2.14.5-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:ef98ca7d5995a82f43ec0ab39c4caf6a9b994cb0b53648ff61716370eadc43cf"}, + {file = "pydantic_core-2.14.5-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c6eae413494a1c3f89055da7a5515f32e05ebc1a234c27674a6956755fb2236f"}, + {file = "pydantic_core-2.14.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dcf4e6d85614f7a4956c2de5a56531f44efb973d2fe4a444d7251df5d5c4dcfd"}, + {file = "pydantic_core-2.14.5-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6637560562134b0e17de333d18e69e312e0458ee4455bdad12c37100b7cad706"}, + {file = "pydantic_core-2.14.5-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:77fa384d8e118b3077cccfcaf91bf83c31fe4dc850b5e6ee3dc14dc3d61bdba1"}, + {file = "pydantic_core-2.14.5-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:16e29bad40bcf97aac682a58861249ca9dcc57c3f6be22f506501833ddb8939c"}, + {file = "pydantic_core-2.14.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:531f4b4252fac6ca476fbe0e6f60f16f5b65d3e6b583bc4d87645e4e5ddde331"}, + {file = "pydantic_core-2.14.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:074f3d86f081ce61414d2dc44901f4f83617329c6f3ab49d2bc6c96948b2c26b"}, + {file = "pydantic_core-2.14.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:c2adbe22ab4babbca99c75c5d07aaf74f43c3195384ec07ccbd2f9e3bddaecec"}, + {file = "pydantic_core-2.14.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:0f6116a558fd06d1b7c2902d1c4cf64a5bd49d67c3540e61eccca93f41418124"}, + {file = "pydantic_core-2.14.5-cp38-none-win32.whl", hash = "sha256:fe0a5a1025eb797752136ac8b4fa21aa891e3d74fd340f864ff982d649691867"}, + {file = "pydantic_core-2.14.5-cp38-none-win_amd64.whl", hash = "sha256:079206491c435b60778cf2b0ee5fd645e61ffd6e70c47806c9ed51fc75af078d"}, + {file = "pydantic_core-2.14.5-cp39-cp39-macosx_10_7_x86_64.whl", hash = "sha256:a6a16f4a527aae4f49c875da3cdc9508ac7eef26e7977952608610104244e1b7"}, + {file = "pydantic_core-2.14.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:abf058be9517dc877227ec3223f0300034bd0e9f53aebd63cf4456c8cb1e0863"}, + {file = "pydantic_core-2.14.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:49b08aae5013640a3bfa25a8eebbd95638ec3f4b2eaf6ed82cf0c7047133f03b"}, + {file = "pydantic_core-2.14.5-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c2d97e906b4ff36eb464d52a3bc7d720bd6261f64bc4bcdbcd2c557c02081ed2"}, + {file = "pydantic_core-2.14.5-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3128e0bbc8c091ec4375a1828d6118bc20404883169ac95ffa8d983b293611e6"}, + {file = "pydantic_core-2.14.5-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:88e74ab0cdd84ad0614e2750f903bb0d610cc8af2cc17f72c28163acfcf372a4"}, + {file = "pydantic_core-2.14.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c339dabd8ee15f8259ee0f202679b6324926e5bc9e9a40bf981ce77c038553db"}, + {file = "pydantic_core-2.14.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3387277f1bf659caf1724e1afe8ee7dbc9952a82d90f858ebb931880216ea955"}, + {file = "pydantic_core-2.14.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ba6b6b3846cfc10fdb4c971980a954e49d447cd215ed5a77ec8190bc93dd7bc5"}, + {file = "pydantic_core-2.14.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ca61d858e4107ce5e1330a74724fe757fc7135190eb5ce5c9d0191729f033209"}, + {file = "pydantic_core-2.14.5-cp39-none-win32.whl", hash = "sha256:ec1e72d6412f7126eb7b2e3bfca42b15e6e389e1bc88ea0069d0cc1742f477c6"}, + {file = "pydantic_core-2.14.5-cp39-none-win_amd64.whl", hash = "sha256:c0b97ec434041827935044bbbe52b03d6018c2897349670ff8fe11ed24d1d4ab"}, + {file = "pydantic_core-2.14.5-pp310-pypy310_pp73-macosx_10_7_x86_64.whl", hash = "sha256:79e0a2cdbdc7af3f4aee3210b1172ab53d7ddb6a2d8c24119b5706e622b346d0"}, + {file = "pydantic_core-2.14.5-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:678265f7b14e138d9a541ddabbe033012a2953315739f8cfa6d754cc8063e8ca"}, + {file = "pydantic_core-2.14.5-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:95b15e855ae44f0c6341ceb74df61b606e11f1087e87dcb7482377374aac6abe"}, + {file = "pydantic_core-2.14.5-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:09b0e985fbaf13e6b06a56d21694d12ebca6ce5414b9211edf6f17738d82b0f8"}, + {file = "pydantic_core-2.14.5-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3ad873900297bb36e4b6b3f7029d88ff9829ecdc15d5cf20161775ce12306f8a"}, + {file = "pydantic_core-2.14.5-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:2d0ae0d8670164e10accbeb31d5ad45adb71292032d0fdb9079912907f0085f4"}, + {file = "pydantic_core-2.14.5-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:d37f8ec982ead9ba0a22a996129594938138a1503237b87318392a48882d50b7"}, + {file = "pydantic_core-2.14.5-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:35613015f0ba7e14c29ac6c2483a657ec740e5ac5758d993fdd5870b07a61d8b"}, + {file = "pydantic_core-2.14.5-pp37-pypy37_pp73-macosx_10_7_x86_64.whl", hash = "sha256:ab4ea451082e684198636565224bbb179575efc1658c48281b2c866bfd4ddf04"}, + {file = "pydantic_core-2.14.5-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ce601907e99ea5b4adb807ded3570ea62186b17f88e271569144e8cca4409c7"}, + {file = "pydantic_core-2.14.5-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fb2ed8b3fe4bf4506d6dab3b93b83bbc22237e230cba03866d561c3577517d18"}, + {file = "pydantic_core-2.14.5-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:70f947628e074bb2526ba1b151cee10e4c3b9670af4dbb4d73bc8a89445916b5"}, + {file = "pydantic_core-2.14.5-pp37-pypy37_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:4bc536201426451f06f044dfbf341c09f540b4ebdb9fd8d2c6164d733de5e634"}, + {file = "pydantic_core-2.14.5-pp37-pypy37_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f4791cf0f8c3104ac668797d8c514afb3431bc3305f5638add0ba1a5a37e0d88"}, + {file = "pydantic_core-2.14.5-pp38-pypy38_pp73-macosx_10_7_x86_64.whl", hash = "sha256:038c9f763e650712b899f983076ce783175397c848da04985658e7628cbe873b"}, + {file = "pydantic_core-2.14.5-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:27548e16c79702f1e03f5628589c6057c9ae17c95b4c449de3c66b589ead0520"}, + {file = "pydantic_core-2.14.5-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c97bee68898f3f4344eb02fec316db93d9700fb1e6a5b760ffa20d71d9a46ce3"}, + {file = "pydantic_core-2.14.5-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b9b759b77f5337b4ea024f03abc6464c9f35d9718de01cfe6bae9f2e139c397e"}, + {file = "pydantic_core-2.14.5-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:439c9afe34638ace43a49bf72d201e0ffc1a800295bed8420c2a9ca8d5e3dbb3"}, + {file = "pydantic_core-2.14.5-pp38-pypy38_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:ba39688799094c75ea8a16a6b544eb57b5b0f3328697084f3f2790892510d144"}, + {file = "pydantic_core-2.14.5-pp38-pypy38_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:ccd4d5702bb90b84df13bd491be8d900b92016c5a455b7e14630ad7449eb03f8"}, + {file = "pydantic_core-2.14.5-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:81982d78a45d1e5396819bbb4ece1fadfe5f079335dd28c4ab3427cd95389944"}, + {file = "pydantic_core-2.14.5-pp39-pypy39_pp73-macosx_10_7_x86_64.whl", hash = "sha256:7f8210297b04e53bc3da35db08b7302a6a1f4889c79173af69b72ec9754796b8"}, + {file = "pydantic_core-2.14.5-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:8c8a8812fe6f43a3a5b054af6ac2d7b8605c7bcab2804a8a7d68b53f3cd86e00"}, + {file = "pydantic_core-2.14.5-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:206ed23aecd67c71daf5c02c3cd19c0501b01ef3cbf7782db9e4e051426b3d0d"}, + {file = "pydantic_core-2.14.5-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c2027d05c8aebe61d898d4cffd774840a9cb82ed356ba47a90d99ad768f39789"}, + {file = "pydantic_core-2.14.5-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:40180930807ce806aa71eda5a5a5447abb6b6a3c0b4b3b1b1962651906484d68"}, + {file = "pydantic_core-2.14.5-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:615a0a4bff11c45eb3c1996ceed5bdaa2f7b432425253a7c2eed33bb86d80abc"}, + {file = "pydantic_core-2.14.5-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f5e412d717366e0677ef767eac93566582518fe8be923361a5c204c1a62eaafe"}, + {file = "pydantic_core-2.14.5-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:513b07e99c0a267b1d954243845d8a833758a6726a3b5d8948306e3fe14675e3"}, + {file = "pydantic_core-2.14.5.tar.gz", hash = "sha256:6d30226dfc816dd0fdf120cae611dd2215117e4f9b124af8c60ab9093b6e8e71"}, +] + +[package.dependencies] +typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0" + +[[package]] +name = "pytest" +version = "7.4.3" +description = "pytest: simple powerful testing with Python" +optional = false +python-versions = ">=3.7" +files = [ + {file = "pytest-7.4.3-py3-none-any.whl", hash = "sha256:0d009c083ea859a71b76adf7c1d502e4bc170b80a8ef002da5806527b9591fac"}, + {file = "pytest-7.4.3.tar.gz", hash = "sha256:d989d136982de4e3b29dabcc838ad581c64e8ed52c11fbe86ddebd9da0818cd5"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "sys_platform == \"win32\""} +iniconfig = "*" +packaging = "*" +pluggy = ">=0.12,<2.0" + +[package.extras] +testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] + +[[package]] +name = "pytest-cov" +version = "4.1.0" +description = "Pytest plugin for measuring coverage." +optional = false +python-versions = ">=3.7" +files = [ + {file = "pytest-cov-4.1.0.tar.gz", hash = "sha256:3904b13dfbfec47f003b8e77fd5b589cd11904a21ddf1ab38a64f204d6a10ef6"}, + {file = "pytest_cov-4.1.0-py3-none-any.whl", hash = "sha256:6ba70b9e97e69fcc3fb45bfeab2d0a138fb65c4d0d6a41ef33983ad114be8c3a"}, +] + +[package.dependencies] +coverage = {version = ">=5.2.1", extras = ["toml"]} +pytest = ">=4.6" + +[package.extras] +testing = ["fields", "hunter", "process-tests", "pytest-xdist", "six", "virtualenv"] + +[[package]] +name = "pytest-env" +version = "1.1.3" +description = "pytest plugin that allows you to add environment variables." +optional = false +python-versions = ">=3.8" +files = [ + {file = "pytest_env-1.1.3-py3-none-any.whl", hash = "sha256:aada77e6d09fcfb04540a6e462c58533c37df35fa853da78707b17ec04d17dfc"}, + {file = "pytest_env-1.1.3.tar.gz", hash = "sha256:fcd7dc23bb71efd3d35632bde1bbe5ee8c8dc4489d6617fb010674880d96216b"}, +] + +[package.dependencies] +pytest = ">=7.4.3" + +[package.extras] +test = ["covdefaults (>=2.3)", "coverage (>=7.3.2)", "pytest-mock (>=3.12)"] + +[[package]] +name = "python-dateutil" +version = "2.8.2" +description = "Extensions to the standard Python datetime module" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" +files = [ + {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"}, + {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"}, +] + +[package.dependencies] +six = ">=1.5" + +[[package]] +name = "pytz" +version = "2024.1" +description = "World timezone definitions, modern and historical" +optional = false +python-versions = "*" +files = [ + {file = "pytz-2024.1-py2.py3-none-any.whl", hash = "sha256:328171f4e3623139da4983451950b28e95ac706e13f3f2630a879749e7a8b319"}, + {file = "pytz-2024.1.tar.gz", hash = "sha256:2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812"}, +] + +[[package]] +name = "pyyaml" +version = "6.0.1" +description = "YAML parser and emitter for Python" +optional = false +python-versions = ">=3.6" +files = [ + {file = "PyYAML-6.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a"}, + {file = "PyYAML-6.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f"}, + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938"}, + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d"}, + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515"}, + {file = "PyYAML-6.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290"}, + {file = "PyYAML-6.0.1-cp310-cp310-win32.whl", hash = "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924"}, + {file = "PyYAML-6.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d"}, + {file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"}, + {file = "PyYAML-6.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"}, + {file = "PyYAML-6.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b"}, + {file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"}, + {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, + {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, + {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, + {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef"}, + {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, + {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, + {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, + {file = "PyYAML-6.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df"}, + {file = "PyYAML-6.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47"}, + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98"}, + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c"}, + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:afd7e57eddb1a54f0f1a974bc4391af8bcce0b444685d936840f125cf046d5bd"}, + {file = "PyYAML-6.0.1-cp36-cp36m-win32.whl", hash = "sha256:fca0e3a251908a499833aa292323f32437106001d436eca0e6e7833256674585"}, + {file = "PyYAML-6.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:f22ac1c3cac4dbc50079e965eba2c1058622631e526bd9afd45fedd49ba781fa"}, + {file = "PyYAML-6.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b1275ad35a5d18c62a7220633c913e1b42d44b46ee12554e5fd39c70a243d6a3"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18aeb1bf9a78867dc38b259769503436b7c72f7a1f1f4c93ff9a17de54319b27"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:596106435fa6ad000c2991a98fa58eeb8656ef2325d7e158344fb33864ed87e3"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:baa90d3f661d43131ca170712d903e6295d1f7a0f595074f151c0aed377c9b9c"}, + {file = "PyYAML-6.0.1-cp37-cp37m-win32.whl", hash = "sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba"}, + {file = "PyYAML-6.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:4fb147e7a67ef577a588a0e2c17b6db51dda102c71de36f8549b6816a96e1867"}, + {file = "PyYAML-6.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1d4c7e777c441b20e32f52bd377e0c409713e8bb1386e1099c2415f26e479595"}, + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5"}, + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696"}, + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735"}, + {file = "PyYAML-6.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6"}, + {file = "PyYAML-6.0.1-cp38-cp38-win32.whl", hash = "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206"}, + {file = "PyYAML-6.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62"}, + {file = "PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8"}, + {file = "PyYAML-6.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859"}, + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6"}, + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0"}, + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c"}, + {file = "PyYAML-6.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5"}, + {file = "PyYAML-6.0.1-cp39-cp39-win32.whl", hash = "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c"}, + {file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"}, + {file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"}, +] + +[[package]] +name = "requests" +version = "2.31.0" +description = "Python HTTP for Humans." +optional = false +python-versions = ">=3.7" +files = [ + {file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"}, + {file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"}, +] + +[package.dependencies] +certifi = ">=2017.4.17" +charset-normalizer = ">=2,<4" +idna = ">=2.5,<4" +urllib3 = ">=1.21.1,<3" + +[package.extras] +socks = ["PySocks (>=1.5.6,!=1.5.7)"] +use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] + +[[package]] +name = "responses" +version = "0.24.1" +description = "A utility library for mocking out the `requests` Python library." +optional = false +python-versions = ">=3.8" +files = [ + {file = "responses-0.24.1-py3-none-any.whl", hash = "sha256:a2b43f4c08bfb9c9bd242568328c65a34b318741d3fab884ac843c5ceeb543f9"}, + {file = "responses-0.24.1.tar.gz", hash = "sha256:b127c6ca3f8df0eb9cc82fd93109a3007a86acb24871834c47b77765152ecf8c"}, +] + +[package.dependencies] +pyyaml = "*" +requests = ">=2.30.0,<3.0" +urllib3 = ">=1.25.10,<3.0" + +[package.extras] +tests = ["coverage (>=6.0.0)", "flake8", "mypy", "pytest (>=7.0.0)", "pytest-asyncio", "pytest-cov", "pytest-httpserver", "tomli", "tomli-w", "types-PyYAML", "types-requests"] + +[[package]] +name = "ruff" +version = "0.1.8" +description = "An extremely fast Python linter and code formatter, written in Rust." +optional = false +python-versions = ">=3.7" +files = [ + {file = "ruff-0.1.8-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:7de792582f6e490ae6aef36a58d85df9f7a0cfd1b0d4fe6b4fb51803a3ac96fa"}, + {file = "ruff-0.1.8-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:c8e3255afd186c142eef4ec400d7826134f028a85da2146102a1172ecc7c3696"}, + {file = "ruff-0.1.8-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ff78a7583020da124dd0deb835ece1d87bb91762d40c514ee9b67a087940528b"}, + {file = "ruff-0.1.8-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bd8ee69b02e7bdefe1e5da2d5b6eaaddcf4f90859f00281b2333c0e3a0cc9cd6"}, + {file = "ruff-0.1.8-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a05b0ddd7ea25495e4115a43125e8a7ebed0aa043c3d432de7e7d6e8e8cd6448"}, + {file = "ruff-0.1.8-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:e6f08ca730f4dc1b76b473bdf30b1b37d42da379202a059eae54ec7fc1fbcfed"}, + {file = "ruff-0.1.8-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f35960b02df6b827c1b903091bb14f4b003f6cf102705efc4ce78132a0aa5af3"}, + {file = "ruff-0.1.8-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7d076717c67b34c162da7c1a5bda16ffc205e0e0072c03745275e7eab888719f"}, + {file = "ruff-0.1.8-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b6a21ab023124eafb7cef6d038f835cb1155cd5ea798edd8d9eb2f8b84be07d9"}, + {file = "ruff-0.1.8-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:ce697c463458555027dfb194cb96d26608abab920fa85213deb5edf26e026664"}, + {file = "ruff-0.1.8-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:db6cedd9ffed55548ab313ad718bc34582d394e27a7875b4b952c2d29c001b26"}, + {file = "ruff-0.1.8-py3-none-musllinux_1_2_i686.whl", hash = "sha256:05ffe9dbd278965271252704eddb97b4384bf58b971054d517decfbf8c523f05"}, + {file = "ruff-0.1.8-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:5daaeaf00ae3c1efec9742ff294b06c3a2a9db8d3db51ee4851c12ad385cda30"}, + {file = "ruff-0.1.8-py3-none-win32.whl", hash = "sha256:e49fbdfe257fa41e5c9e13c79b9e79a23a79bd0e40b9314bc53840f520c2c0b3"}, + {file = "ruff-0.1.8-py3-none-win_amd64.whl", hash = "sha256:f41f692f1691ad87f51708b823af4bb2c5c87c9248ddd3191c8f088e66ce590a"}, + {file = "ruff-0.1.8-py3-none-win_arm64.whl", hash = "sha256:aa8ee4f8440023b0a6c3707f76cadce8657553655dcbb5fc9b2f9bb9bee389f6"}, + {file = "ruff-0.1.8.tar.gz", hash = "sha256:f7ee467677467526cfe135eab86a40a0e8db43117936ac4f9b469ce9cdb3fb62"}, +] + +[[package]] +name = "schedule" +version = "1.2.1" +description = "Job scheduling for humans." +optional = false +python-versions = ">=3.7" +files = [ + {file = "schedule-1.2.1-py2.py3-none-any.whl", hash = "sha256:14cdeb083a596aa1de6dc77639a1b2ac8bf6eaafa82b1c9279d3612823063d01"}, + {file = "schedule-1.2.1.tar.gz", hash = "sha256:843bc0538b99c93f02b8b50e3e39886c06f2d003b24f48e1aa4cadfa3f341279"}, +] + +[[package]] +name = "setuptools" +version = "69.0.2" +description = "Easily download, build, install, upgrade, and uninstall Python packages" +optional = false +python-versions = ">=3.8" +files = [ + {file = "setuptools-69.0.2-py3-none-any.whl", hash = "sha256:1e8fdff6797d3865f37397be788a4e3cba233608e9b509382a2777d25ebde7f2"}, + {file = "setuptools-69.0.2.tar.gz", hash = "sha256:735896e78a4742605974de002ac60562d286fa8051a7e2299445e8e8fbb01aa6"}, +] + +[package.extras] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] +testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] +testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.1)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] + +[[package]] +name = "six" +version = "1.16.0" +description = "Python 2 and 3 compatibility utilities" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" +files = [ + {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, + {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, +] + +[[package]] +name = "soupsieve" +version = "2.5" +description = "A modern CSS selector implementation for Beautiful Soup." +optional = false +python-versions = ">=3.8" +files = [ + {file = "soupsieve-2.5-py3-none-any.whl", hash = "sha256:eaa337ff55a1579b6549dc679565eac1e3d000563bcb1c8ab0d0fefbc0c2cdc7"}, + {file = "soupsieve-2.5.tar.gz", hash = "sha256:5663d5a7b3bfaeee0bc4372e7fc48f9cff4940b3eec54a6451cc5299f1097690"}, +] + +[[package]] +name = "sqlalchemy" +version = "2.0.23" +description = "Database Abstraction Library" +optional = false +python-versions = ">=3.7" +files = [ + {file = "SQLAlchemy-2.0.23-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:638c2c0b6b4661a4fd264f6fb804eccd392745c5887f9317feb64bb7cb03b3ea"}, + {file = "SQLAlchemy-2.0.23-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e3b5036aa326dc2df50cba3c958e29b291a80f604b1afa4c8ce73e78e1c9f01d"}, + {file = "SQLAlchemy-2.0.23-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:787af80107fb691934a01889ca8f82a44adedbf5ef3d6ad7d0f0b9ac557e0c34"}, + {file = "SQLAlchemy-2.0.23-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c14eba45983d2f48f7546bb32b47937ee2cafae353646295f0e99f35b14286ab"}, + {file = "SQLAlchemy-2.0.23-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0666031df46b9badba9bed00092a1ffa3aa063a5e68fa244acd9f08070e936d3"}, + {file = "SQLAlchemy-2.0.23-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:89a01238fcb9a8af118eaad3ffcc5dedaacbd429dc6fdc43fe430d3a941ff965"}, + {file = "SQLAlchemy-2.0.23-cp310-cp310-win32.whl", hash = "sha256:cabafc7837b6cec61c0e1e5c6d14ef250b675fa9c3060ed8a7e38653bd732ff8"}, + {file = "SQLAlchemy-2.0.23-cp310-cp310-win_amd64.whl", hash = "sha256:87a3d6b53c39cd173990de2f5f4b83431d534a74f0e2f88bd16eabb5667e65c6"}, + {file = "SQLAlchemy-2.0.23-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d5578e6863eeb998980c212a39106ea139bdc0b3f73291b96e27c929c90cd8e1"}, + {file = "SQLAlchemy-2.0.23-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:62d9e964870ea5ade4bc870ac4004c456efe75fb50404c03c5fd61f8bc669a72"}, + {file = "SQLAlchemy-2.0.23-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c80c38bd2ea35b97cbf7c21aeb129dcbebbf344ee01a7141016ab7b851464f8e"}, + {file = "SQLAlchemy-2.0.23-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75eefe09e98043cff2fb8af9796e20747ae870c903dc61d41b0c2e55128f958d"}, + {file = "SQLAlchemy-2.0.23-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:bd45a5b6c68357578263d74daab6ff9439517f87da63442d244f9f23df56138d"}, + {file = "SQLAlchemy-2.0.23-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:a86cb7063e2c9fb8e774f77fbf8475516d270a3e989da55fa05d08089d77f8c4"}, + {file = "SQLAlchemy-2.0.23-cp311-cp311-win32.whl", hash = "sha256:b41f5d65b54cdf4934ecede2f41b9c60c9f785620416e8e6c48349ab18643855"}, + {file = "SQLAlchemy-2.0.23-cp311-cp311-win_amd64.whl", hash = "sha256:9ca922f305d67605668e93991aaf2c12239c78207bca3b891cd51a4515c72e22"}, + {file = "SQLAlchemy-2.0.23-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:d0f7fb0c7527c41fa6fcae2be537ac137f636a41b4c5a4c58914541e2f436b45"}, + {file = "SQLAlchemy-2.0.23-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7c424983ab447dab126c39d3ce3be5bee95700783204a72549c3dceffe0fc8f4"}, + {file = "SQLAlchemy-2.0.23-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f508ba8f89e0a5ecdfd3761f82dda2a3d7b678a626967608f4273e0dba8f07ac"}, + {file = "SQLAlchemy-2.0.23-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6463aa765cf02b9247e38b35853923edbf2f6fd1963df88706bc1d02410a5577"}, + {file = "SQLAlchemy-2.0.23-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:e599a51acf3cc4d31d1a0cf248d8f8d863b6386d2b6782c5074427ebb7803bda"}, + {file = "SQLAlchemy-2.0.23-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:fd54601ef9cc455a0c61e5245f690c8a3ad67ddb03d3b91c361d076def0b4c60"}, + {file = "SQLAlchemy-2.0.23-cp312-cp312-win32.whl", hash = "sha256:42d0b0290a8fb0165ea2c2781ae66e95cca6e27a2fbe1016ff8db3112ac1e846"}, + {file = "SQLAlchemy-2.0.23-cp312-cp312-win_amd64.whl", hash = "sha256:227135ef1e48165f37590b8bfc44ed7ff4c074bf04dc8d6f8e7f1c14a94aa6ca"}, + {file = "SQLAlchemy-2.0.23-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:14aebfe28b99f24f8a4c1346c48bc3d63705b1f919a24c27471136d2f219f02d"}, + {file = "SQLAlchemy-2.0.23-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e983fa42164577d073778d06d2cc5d020322425a509a08119bdcee70ad856bf"}, + {file = "SQLAlchemy-2.0.23-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e0dc9031baa46ad0dd5a269cb7a92a73284d1309228be1d5935dac8fb3cae24"}, + {file = "SQLAlchemy-2.0.23-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:5f94aeb99f43729960638e7468d4688f6efccb837a858b34574e01143cf11f89"}, + {file = "SQLAlchemy-2.0.23-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:63bfc3acc970776036f6d1d0e65faa7473be9f3135d37a463c5eba5efcdb24c8"}, + {file = "SQLAlchemy-2.0.23-cp37-cp37m-win32.whl", hash = "sha256:f48ed89dd11c3c586f45e9eec1e437b355b3b6f6884ea4a4c3111a3358fd0c18"}, + {file = "SQLAlchemy-2.0.23-cp37-cp37m-win_amd64.whl", hash = "sha256:1e018aba8363adb0599e745af245306cb8c46b9ad0a6fc0a86745b6ff7d940fc"}, + {file = "SQLAlchemy-2.0.23-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:64ac935a90bc479fee77f9463f298943b0e60005fe5de2aa654d9cdef46c54df"}, + {file = "SQLAlchemy-2.0.23-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c4722f3bc3c1c2fcc3702dbe0016ba31148dd6efcd2a2fd33c1b4897c6a19693"}, + {file = "SQLAlchemy-2.0.23-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4af79c06825e2836de21439cb2a6ce22b2ca129bad74f359bddd173f39582bf5"}, + {file = "SQLAlchemy-2.0.23-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:683ef58ca8eea4747737a1c35c11372ffeb84578d3aab8f3e10b1d13d66f2bc4"}, + {file = "SQLAlchemy-2.0.23-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:d4041ad05b35f1f4da481f6b811b4af2f29e83af253bf37c3c4582b2c68934ab"}, + {file = "SQLAlchemy-2.0.23-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:aeb397de65a0a62f14c257f36a726945a7f7bb60253462e8602d9b97b5cbe204"}, + {file = "SQLAlchemy-2.0.23-cp38-cp38-win32.whl", hash = "sha256:42ede90148b73fe4ab4a089f3126b2cfae8cfefc955c8174d697bb46210c8306"}, + {file = "SQLAlchemy-2.0.23-cp38-cp38-win_amd64.whl", hash = "sha256:964971b52daab357d2c0875825e36584d58f536e920f2968df8d581054eada4b"}, + {file = "SQLAlchemy-2.0.23-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:616fe7bcff0a05098f64b4478b78ec2dfa03225c23734d83d6c169eb41a93e55"}, + {file = "SQLAlchemy-2.0.23-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0e680527245895aba86afbd5bef6c316831c02aa988d1aad83c47ffe92655e74"}, + {file = "SQLAlchemy-2.0.23-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9585b646ffb048c0250acc7dad92536591ffe35dba624bb8fd9b471e25212a35"}, + {file = "SQLAlchemy-2.0.23-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4895a63e2c271ffc7a81ea424b94060f7b3b03b4ea0cd58ab5bb676ed02f4221"}, + {file = "SQLAlchemy-2.0.23-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:cc1d21576f958c42d9aec68eba5c1a7d715e5fc07825a629015fe8e3b0657fb0"}, + {file = "SQLAlchemy-2.0.23-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:967c0b71156f793e6662dd839da54f884631755275ed71f1539c95bbada9aaab"}, + {file = "SQLAlchemy-2.0.23-cp39-cp39-win32.whl", hash = "sha256:0a8c6aa506893e25a04233bc721c6b6cf844bafd7250535abb56cb6cc1368884"}, + {file = "SQLAlchemy-2.0.23-cp39-cp39-win_amd64.whl", hash = "sha256:f3420d00d2cb42432c1d0e44540ae83185ccbbc67a6054dcc8ab5387add6620b"}, + {file = "SQLAlchemy-2.0.23-py3-none-any.whl", hash = "sha256:31952bbc527d633b9479f5f81e8b9dfada00b91d6baba021a869095f1a97006d"}, + {file = "SQLAlchemy-2.0.23.tar.gz", hash = "sha256:c1bda93cbbe4aa2aa0aa8655c5aeda505cd219ff3e8da91d1d329e143e4aff69"}, +] + +[package.dependencies] +greenlet = {version = "!=0.4.17", markers = "platform_machine == \"aarch64\" or platform_machine == \"ppc64le\" or platform_machine == \"x86_64\" or platform_machine == \"amd64\" or platform_machine == \"AMD64\" or platform_machine == \"win32\" or platform_machine == \"WIN32\""} +typing-extensions = ">=4.2.0" + +[package.extras] +aiomysql = ["aiomysql (>=0.2.0)", "greenlet (!=0.4.17)"] +aioodbc = ["aioodbc", "greenlet (!=0.4.17)"] +aiosqlite = ["aiosqlite", "greenlet (!=0.4.17)", "typing-extensions (!=3.10.0.1)"] +asyncio = ["greenlet (!=0.4.17)"] +asyncmy = ["asyncmy (>=0.2.3,!=0.2.4,!=0.2.6)", "greenlet (!=0.4.17)"] +mariadb-connector = ["mariadb (>=1.0.1,!=1.1.2,!=1.1.5)"] +mssql = ["pyodbc"] +mssql-pymssql = ["pymssql"] +mssql-pyodbc = ["pyodbc"] +mypy = ["mypy (>=0.910)"] +mysql = ["mysqlclient (>=1.4.0)"] +mysql-connector = ["mysql-connector-python"] +oracle = ["cx-oracle (>=8)"] +oracle-oracledb = ["oracledb (>=1.0.1)"] +postgresql = ["psycopg2 (>=2.7)"] +postgresql-asyncpg = ["asyncpg", "greenlet (!=0.4.17)"] +postgresql-pg8000 = ["pg8000 (>=1.29.1)"] +postgresql-psycopg = ["psycopg (>=3.0.7)"] +postgresql-psycopg2binary = ["psycopg2-binary"] +postgresql-psycopg2cffi = ["psycopg2cffi"] +postgresql-psycopgbinary = ["psycopg[binary] (>=3.0.7)"] +pymysql = ["pymysql"] +sqlcipher = ["sqlcipher3-binary"] + +[[package]] +name = "structlog" +version = "22.3.0" +description = "Structured Logging for Python" +optional = false +python-versions = ">=3.7" +files = [ + {file = "structlog-22.3.0-py3-none-any.whl", hash = "sha256:b403f344f902b220648fa9f286a23c0cc5439a5844d271fec40562dbadbc70ad"}, + {file = "structlog-22.3.0.tar.gz", hash = "sha256:e7509391f215e4afb88b1b80fa3ea074be57a5a17d794bd436a5c949da023333"}, +] + +[package.extras] +dev = ["structlog[docs,tests,typing]"] +docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-mermaid", "twisted"] +tests = ["coverage[toml]", "freezegun (>=0.2.8)", "pretend", "pytest (>=6.0)", "pytest-asyncio (>=0.17)", "simplejson"] +typing = ["mypy", "rich", "twisted"] + +[[package]] +name = "time-machine" +version = "2.13.0" +description = "Travel through time in your tests." +optional = false +python-versions = ">=3.8" +files = [ + {file = "time_machine-2.13.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:685d98593f13649ad5e7ce3e58efe689feca1badcf618ba397d3ab877ee59326"}, + {file = "time_machine-2.13.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ccbce292380ebf63fb9a52e6b03d91677f6a003e0c11f77473efe3913a75f289"}, + {file = "time_machine-2.13.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:679cbf9b15bfde1654cf48124128d3fbe52f821fa158a98fcee5fe7e05db1917"}, + {file = "time_machine-2.13.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a26bdf3462d5f12a4c1009fdbe54366c6ef22c7b6f6808705b51dedaaeba8296"}, + {file = "time_machine-2.13.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dabb3b155819811b4602f7e9be936e2024e20dc99a90f103e36b45768badf9c3"}, + {file = "time_machine-2.13.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0db97f92be3efe0ac62fd3f933c91a78438cef13f283b6dfc2ee11123bfd7d8a"}, + {file = "time_machine-2.13.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:12eed2e9171c85b703d75c985dab2ecad4fe7025b7d2f842596fce1576238ece"}, + {file = "time_machine-2.13.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bdfe4a7f033e6783c3e9a7f8d8fc0b115367330762e00a03ff35fedf663994f3"}, + {file = "time_machine-2.13.0-cp310-cp310-win32.whl", hash = "sha256:3a7a0a49ce50d9c306c4343a7d6a3baa11092d4399a4af4355c615ccc321a9d3"}, + {file = "time_machine-2.13.0-cp310-cp310-win_amd64.whl", hash = "sha256:1812e48c6c58707db9988445a219a908a710ea065b2cc808d9a50636291f27d4"}, + {file = "time_machine-2.13.0-cp310-cp310-win_arm64.whl", hash = "sha256:5aee23cd046abf9caeddc982113e81ba9097a01f3972e9560f5ed64e3495f66d"}, + {file = "time_machine-2.13.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:e9a9d150e098be3daee5c9f10859ab1bd14a61abebaed86e6d71f7f18c05b9d7"}, + {file = "time_machine-2.13.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2bd4169b808745d219a69094b3cb86006938d45e7293249694e6b7366225a186"}, + {file = "time_machine-2.13.0-cp311-cp311-macosx_13_0_arm64.whl", hash = "sha256:8d526cdcaca06a496877cfe61cc6608df2c3a6fce210e076761964ebac7f77cc"}, + {file = "time_machine-2.13.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cfef4ebfb4f055ce3ebc7b6c1c4d0dbfcffdca0e783ad8c6986c992915a57ed3"}, + {file = "time_machine-2.13.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9f128db8997c3339f04f7f3946dd9bb2a83d15e0a40d35529774da1e9e501511"}, + {file = "time_machine-2.13.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21bef5854d49b62e2c33848b5c3e8acf22a3b46af803ef6ff19529949cb7cf9f"}, + {file = "time_machine-2.13.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:32b71e50b07f86916ac04bd1eefc2bd2c93706b81393748b08394509ee6585dc"}, + {file = "time_machine-2.13.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:1ac8ff145c63cd0dcfd9590fe694b5269aacbc130298dc7209b095d101f8cdde"}, + {file = "time_machine-2.13.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:19a3b10161c91ca8e0fd79348665cca711fd2eac6ce336ff9e6b447783817f93"}, + {file = "time_machine-2.13.0-cp311-cp311-win32.whl", hash = "sha256:5f87787d562e42bf1006a87eb689814105b98c4d5545874a281280d0f8b9a2d9"}, + {file = "time_machine-2.13.0-cp311-cp311-win_amd64.whl", hash = "sha256:62fd14a80b8b71726e07018628daaee0a2e00937625083f96f69ed6b8e3304c0"}, + {file = "time_machine-2.13.0-cp311-cp311-win_arm64.whl", hash = "sha256:e9935aff447f5400a2665ab10ed2da972591713080e1befe1bb8954e7c0c7806"}, + {file = "time_machine-2.13.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:34dcdbbd25c1e124e17fe58050452960fd16a11f9d3476aaa87260e28ecca0fd"}, + {file = "time_machine-2.13.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:e58d82fe0e59d6e096ada3281d647a2e7420f7da5453b433b43880e1c2e8e0c5"}, + {file = "time_machine-2.13.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71acbc1febbe87532c7355eca3308c073d6e502ee4ce272b5028967847c8e063"}, + {file = "time_machine-2.13.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dec0ec2135a4e2a59623e40c31d6e8a8ae73305ade2634380e4263d815855750"}, + {file = "time_machine-2.13.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e3a2611f8788608ebbcb060a5e36b45911bc3b8adc421b1dc29d2c81786ce4d"}, + {file = "time_machine-2.13.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:42ef5349135626ad6cd889a0a81400137e5c6928502b0817ea9e90bb10702000"}, + {file = "time_machine-2.13.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:6c16d90a597a8c2d3ce22d6be2eb3e3f14786974c11b01886e51b3cf0d5edaf7"}, + {file = "time_machine-2.13.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4f2ae8d0e359b216b695f1e7e7256f208c390db0480601a439c5dd1e1e4e16ce"}, + {file = "time_machine-2.13.0-cp312-cp312-win32.whl", hash = "sha256:f5fa9610f7e73fff42806a2ed8b06d862aa59ce4d178a52181771d6939c3e237"}, + {file = "time_machine-2.13.0-cp312-cp312-win_amd64.whl", hash = "sha256:02b33a8c19768c94f7ffd6aa6f9f64818e88afce23250016b28583929d20fb12"}, + {file = "time_machine-2.13.0-cp312-cp312-win_arm64.whl", hash = "sha256:0cc116056a8a2a917a4eec85661dfadd411e0d8faae604ef6a0e19fe5cd57ef1"}, + {file = "time_machine-2.13.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:de01f33aa53da37530ad97dcd17e9affa25a8df4ab822506bb08101bab0c2673"}, + {file = "time_machine-2.13.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:67fa45cd813821e4f5bec0ac0820869e8e37430b15509d3f5fad74ba34b53852"}, + {file = "time_machine-2.13.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4a2d3db2c3b8e519d5ef436cd405abd33542a7b7761fb05ef5a5f782a8ce0b1"}, + {file = "time_machine-2.13.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7558622a62243be866a7e7c41da48eacd82c874b015ecf67d18ebf65ca3f7436"}, + {file = "time_machine-2.13.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ab04cf4e56e1ee65bee2adaa26a04695e92eb1ed1ccc65fbdafd0d114399595a"}, + {file = "time_machine-2.13.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b0c8f24ae611a58782773af34dd356f1f26756272c04be2be7ea73b47e5da37d"}, + {file = "time_machine-2.13.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:4ca20f85a973a4ca8b00cf466cd72c27ccc72372549b138fd48d7e70e5a190ab"}, + {file = "time_machine-2.13.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:9fad549521c4c13bdb1e889b2855a86ec835780d534ffd8f091c2647863243be"}, + {file = "time_machine-2.13.0-cp38-cp38-win32.whl", hash = "sha256:20205422fcf2caf9a7488394587df86e5b54fdb315c1152094fbb63eec4e9304"}, + {file = "time_machine-2.13.0-cp38-cp38-win_amd64.whl", hash = "sha256:2dc76ee55a7d915a55960a726ceaca7b9097f67e4b4e681ef89871bcf98f00be"}, + {file = "time_machine-2.13.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7693704c0f2f6b9beed912ff609781edf5fcf5d63aff30c92be4093e09d94b8e"}, + {file = "time_machine-2.13.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:918f8389de29b4f41317d121f1150176fae2cdb5fa41f68b2aee0b9dc88df5c3"}, + {file = "time_machine-2.13.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5fe3fda5fa73fec74278912e438fce1612a79c36fd0cc323ea3dc2d5ce629f31"}, + {file = "time_machine-2.13.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5c6245db573863b335d9ca64b3230f623caf0988594ae554c0c794e7f80e3e66"}, + {file = "time_machine-2.13.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e433827eccd6700a34a2ab28fd9361ff6e4d4923f718d2d1dac6d1dcd9d54da6"}, + {file = "time_machine-2.13.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:924377d398b1c48e519ad86a71903f9f36117f69e68242c99fb762a2465f5ad2"}, + {file = "time_machine-2.13.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:66fb3877014dca0b9286b0f06fa74062357bd23f2d9d102d10e31e0f8fa9b324"}, + {file = "time_machine-2.13.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0c9829b2edfcf6b5d72a6ff330d4380f36a937088314c675531b43d3423dd8af"}, + {file = "time_machine-2.13.0-cp39-cp39-win32.whl", hash = "sha256:1a22be4df364f49a507af4ac9ea38108a0105f39da3f9c60dce62d6c6ea4ccdc"}, + {file = "time_machine-2.13.0-cp39-cp39-win_amd64.whl", hash = "sha256:88601de1da06c7cab3d5ed3d5c3801ef683366e769e829e96383fdab6ae2fe42"}, + {file = "time_machine-2.13.0-cp39-cp39-win_arm64.whl", hash = "sha256:3c87856105dcb25b5bbff031d99f06ef4d1c8380d096222e1bc63b496b5258e6"}, + {file = "time_machine-2.13.0.tar.gz", hash = "sha256:c23b2408e3adcedec84ea1131e238f0124a5bc0e491f60d1137ad7239b37c01a"}, +] + +[package.dependencies] +python-dateutil = "*" + +[[package]] +name = "types-beautifulsoup4" +version = "4.12.0.7" +description = "Typing stubs for beautifulsoup4" +optional = false +python-versions = ">=3.7" +files = [ + {file = "types-beautifulsoup4-4.12.0.7.tar.gz", hash = "sha256:59980028d29bf55d0db359efa305b75bacf0cb92e3f3f6b3fd408f2531df274c"}, + {file = "types_beautifulsoup4-4.12.0.7-py3-none-any.whl", hash = "sha256:8b03b054cb2e62abf82bbbeda57a07257026f4ed9010ef17d8f8eff43bb1f9b7"}, +] + +[package.dependencies] +types-html5lib = "*" + +[[package]] +name = "types-cachetools" +version = "5.3.0.7" +description = "Typing stubs for cachetools" +optional = false +python-versions = ">=3.7" +files = [ + {file = "types-cachetools-5.3.0.7.tar.gz", hash = "sha256:27c982cdb9cf3fead8b0089ee6b895715ecc99dac90ec29e2cab56eb1aaf4199"}, + {file = "types_cachetools-5.3.0.7-py3-none-any.whl", hash = "sha256:98c069dc7fc087b1b061703369c80751b0a0fc561f6fb072b554e5eee23773a0"}, +] + +[[package]] +name = "types-html5lib" +version = "1.1.11.15" +description = "Typing stubs for html5lib" +optional = false +python-versions = "*" +files = [ + {file = "types-html5lib-1.1.11.15.tar.gz", hash = "sha256:80e1a2062d22a3affe5c28d97da30bffbf3a076d393c80fc6f1671216c1bd492"}, + {file = "types_html5lib-1.1.11.15-py3-none-any.whl", hash = "sha256:16fe936d99b9f7fc210e2e21a2aed1b6bbbc554ad8242a6ef75f6f2bddb27e58"}, +] + +[[package]] +name = "types-pillow" +version = "10.1.0.2" +description = "Typing stubs for Pillow" +optional = false +python-versions = ">=3.7" +files = [ + {file = "types-Pillow-10.1.0.2.tar.gz", hash = "sha256:525c1c5ee67b0ac1721c40d2bc618226ef2123c347e527e14e05b920721a13b9"}, + {file = "types_Pillow-10.1.0.2-py3-none-any.whl", hash = "sha256:131078ffa547bf9a201d39ffcdc65633e108148085f4f1b07d4647fcfec6e923"}, +] + +[[package]] +name = "types-requests" +version = "2.31.0.10" +description = "Typing stubs for requests" +optional = false +python-versions = ">=3.7" +files = [ + {file = "types-requests-2.31.0.10.tar.gz", hash = "sha256:dc5852a76f1eaf60eafa81a2e50aefa3d1f015c34cf0cba130930866b1b22a92"}, + {file = "types_requests-2.31.0.10-py3-none-any.whl", hash = "sha256:b32b9a86beffa876c0c3ac99a4cd3b8b51e973fb8e3bd4e0a6bb32c7efad80fc"}, +] + +[package.dependencies] +urllib3 = ">=2" + +[[package]] +name = "typing-extensions" +version = "4.9.0" +description = "Backported and Experimental Type Hints for Python 3.8+" +optional = false +python-versions = ">=3.8" +files = [ + {file = "typing_extensions-4.9.0-py3-none-any.whl", hash = "sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd"}, + {file = "typing_extensions-4.9.0.tar.gz", hash = "sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783"}, +] + +[[package]] +name = "unidecode" +version = "1.3.7" +description = "ASCII transliterations of Unicode text" +optional = false +python-versions = ">=3.5" +files = [ + {file = "Unidecode-1.3.7-py3-none-any.whl", hash = "sha256:663a537f506834ed836af26a81b210d90cbde044c47bfbdc0fbbc9f94c86a6e4"}, + {file = "Unidecode-1.3.7.tar.gz", hash = "sha256:3c90b4662aa0de0cb591884b934ead8d2225f1800d8da675a7750cbc3bd94610"}, +] + +[[package]] +name = "urllib3" +version = "2.1.0" +description = "HTTP library with thread-safe connection pooling, file post, and more." +optional = false +python-versions = ">=3.8" +files = [ + {file = "urllib3-2.1.0-py3-none-any.whl", hash = "sha256:55901e917a5896a349ff771be919f8bd99aff50b79fe58fec595eb37bbc56bb3"}, + {file = "urllib3-2.1.0.tar.gz", hash = "sha256:df7aa8afb0148fa78488e7899b2c59b5f4ffcfa82e6c54ccb9dd37c1d7b52d54"}, +] + +[package.extras] +brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] +socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] +zstd = ["zstandard (>=0.18.0)"] + +[[package]] +name = "websocket-client" +version = "1.7.0" +description = "WebSocket client for Python with low level API options" +optional = false +python-versions = ">=3.8" +files = [ + {file = "websocket-client-1.7.0.tar.gz", hash = "sha256:10e511ea3a8c744631d3bd77e61eb17ed09304c413ad42cf6ddfa4c7787e8fe6"}, + {file = "websocket_client-1.7.0-py3-none-any.whl", hash = "sha256:f4c3d22fec12a2461427a29957ff07d35098ee2d976d3ba244e688b8b4057588"}, +] + +[package.extras] +docs = ["Sphinx (>=6.0)", "sphinx-rtd-theme (>=1.1.0)"] +optional = ["python-socks", "wsaccel"] +test = ["websockets"] + +[[package]] +name = "werkzeug" +version = "3.0.1" +description = "The comprehensive WSGI web application library." +optional = false +python-versions = ">=3.8" +files = [ + {file = "werkzeug-3.0.1-py3-none-any.whl", hash = "sha256:90a285dc0e42ad56b34e696398b8122ee4c681833fb35b8334a095d82c56da10"}, + {file = "werkzeug-3.0.1.tar.gz", hash = "sha256:507e811ecea72b18a404947aded4b3390e1db8f826b494d76550ef45bb3b1dcc"}, +] + +[package.dependencies] +MarkupSafe = ">=2.1.1" + +[package.extras] +watchdog = ["watchdog (>=2.3)"] + +[metadata] +lock-version = "2.0" +python-versions = ">=3.12,<4.0" +content-hash = "73d5d92046b69967295e0125e2e7eaeb85f6d45cb2fd46ec45f96ccd780cb02a" diff --git a/backend/poetry.toml b/backend/poetry.toml new file mode 100644 index 000000000..ab1033bd3 --- /dev/null +++ b/backend/poetry.toml @@ -0,0 +1,2 @@ +[virtualenvs] +in-project = true diff --git a/backend/pyproject.toml b/backend/pyproject.toml new file mode 100644 index 000000000..da7369004 --- /dev/null +++ b/backend/pyproject.toml @@ -0,0 +1,74 @@ +[project] +requires-python = ">=3.12" + +[build-system] +requires = ["poetry-core>=1.0.0"] +build-backend = "poetry.core.masonry.api" + +[tool.poetry] +name = "howtheyvote" +version = "0.1.0" +description = "" +authors = ["Till Prochaska "] + +[tool.poetry.scripts] +htv = "howtheyvote.cli:cli" + +[tool.poetry.dependencies] +python = ">=3.12,<4.0" +requests = "^2.28.1" +unidecode = "^1.3.4" +beautifulsoup4 = "^4.11.1" +lxml = "^4.9.1" +alembic = "^1.9.3" +click = "^8.1.3" +structlog = "^22.3.0" +flask = "^2.2.3" +cachetools = "^5.3.0" +meilisearch = "^0.28.2" +pillow = "^10.0.0" +gunicorn = "^21.2.0" +apispec = "^6.3.0" +apispec-webframeworks = "^0.5.2" +prometheus-client = "^0.17.1" +sqlalchemy = "^2.0.23" +schedule = "^1.2.1" +pytz = "^2024.1" +websocket-client = "^1.7.0" + +[tool.poetry.group.dev.dependencies] +coverage = "^6.4" +pytest = "^7.1.3" +pytest-cov = "^4.0.0" +mypy = "^1.7.1" +ruff = "^0.1.8" +types-pillow = "^10.1.0.2" +types-requests = "^2.31.0.10" +types-beautifulsoup4 = "^4.12.0.7" +types-cachetools = "^5.3.0.7" +setuptools = "^69.0.2" +pytest-env = "^1.1.3" +responses = "^0.24.1" +time-machine = "^2.13.0" + +[tool.ruff] +select = ["E", "F", "W", "I", "N", "B", "UP", "UP006"] +line-length = 95 + +[tool.ruff.per-file-ignores] +"tests/*" = ["E501"] +"__init__.py" = ["F401"] + +[tool.mypy] +exclude = ["alembic", ".venv"] + +[tool.pytest.ini_options] +env = [ + "D:HTV_BACKEND_DATABASE_URI=sqlite:////howtheyvote/database/database.test.sqlite3", + "D:HTV_BACKEND_USERS_DATABASE_URI=sqlite:////howtheyvote/database/users.test.sqlite3", + "HTV_BACKEND_PUBLIC_URL=https://example.org/api", + "HTV_SEARCH_INDEX_PREFIX=test", +] +addopts = [ + "--import-mode=importlib", +] diff --git a/backend/tests/api/test_openapi_helpers.py b/backend/tests/api/test_openapi_helpers.py new file mode 100644 index 000000000..360a33198 --- /dev/null +++ b/backend/tests/api/test_openapi_helpers.py @@ -0,0 +1,224 @@ +import datetime +from enum import Enum +from typing import Annotated, TypedDict + +from howtheyvote.api.openapi_helpers import get_schema + + +def test_schema_description(): + class TestDict(TypedDict): + """This is a test schema.""" + + expected = { + "type": "object", + "description": "This is a test schema.", + "properties": {}, + } + + assert get_schema(TestDict) == expected + + +def test_primitive_types(): + class TestDict(TypedDict): + string: str + integer: int + float: float + boolean: bool + + expected = { + "type": "object", + "properties": { + "string": { + "type": "string", + }, + "integer": { + "type": "integer", + }, + "float": { + "type": "number", + }, + "boolean": { + "type": "boolean", + }, + }, + "required": ["string", "integer", "float", "boolean"], + } + + assert get_schema(TestDict) == expected + + +def test_datetime_types(): + class TestDict(TypedDict): + date: datetime.date + datetime: datetime.datetime + + expected = { + "type": "object", + "properties": { + "date": { + "type": "string", + "format": "date", + }, + "datetime": { + "type": "string", + "format": "date-time", + }, + }, + "required": ["date", "datetime"], + } + + assert get_schema(TestDict) == expected + + +def test_enum_types(): + class TestEnum(Enum): + ONE = "ONE" + TWO = "TWO" + THREE = "THREE" + + class TestDict(TypedDict): + enum: TestEnum + + expected = { + "type": "object", + "properties": { + "enum": { + "type": "string", + "enum": ["ONE", "TWO", "THREE"], + }, + }, + "required": ["enum"], + } + + assert get_schema(TestDict) == expected + + +def test_optional_types(): + class TestDict(TypedDict): + optional: str | None + required: str + + expected = { + "type": "object", + "properties": { + "optional": { + "type": "string", + }, + "required": { + "type": "string", + }, + }, + "required": ["required"], + } + + assert get_schema(TestDict) == expected + + +def test_list_types(): + class TestDict(TypedDict): + numbers: list[int] + + expected = { + "type": "object", + "properties": { + "numbers": { + "type": "array", + "items": { + "type": "integer", + }, + }, + }, + "required": ["numbers"], + } + + assert get_schema(TestDict) == expected + + +def test_nested_types(): + class UserDict(TypedDict): + name: str + + class OrderDict(TypedDict): + buyer: UserDict + + expected = { + "type": "object", + "properties": { + "buyer": { + "$ref": "#/components/schemas/User", + }, + }, + "required": ["buyer"], + } + + assert get_schema(OrderDict) == expected + + +def test_property_descriptions(): + class UserDict(TypedDict): + """Represents a user.""" + + id: str + """User ID""" + + name: str + """The user’s real first and last name""" + + expected = { + "type": "object", + "description": "Represents a user.", + "properties": { + "id": { + "type": "string", + "description": "User ID", + }, + "name": { + "type": "string", + "description": "The user’s real first and last name", + }, + }, + "required": ["id", "name"], + } + + assert get_schema(UserDict) == expected + + +def test_examples(): + class UserDict(TypedDict): + name: Annotated[str, "John Doe"] + + expected = { + "type": "object", + "properties": { + "name": { + "type": "string", + "example": "John Doe", + }, + }, + "required": ["name"], + } + + assert get_schema(UserDict) == expected + + +def test_inheritance(): + class AnimalDict(TypedDict): + name: str + + class DogDict(AnimalDict): + color: str + + expected = { + "type": "object", + "allOf": [ + {"$ref": "#/components/schemas/Animal"}, + ], + "properties": { + "color": { + "type": "string", + }, + }, + "required": ["color"], + } + + assert get_schema(DogDict) == expected diff --git a/backend/tests/api/test_query.py b/backend/tests/api/test_query.py new file mode 100644 index 000000000..fc410e3ab --- /dev/null +++ b/backend/tests/api/test_query.py @@ -0,0 +1,218 @@ +import datetime + +import pytest + +from howtheyvote.api.query import DatabaseQuery, Order, SearchQuery +from howtheyvote.models import Vote +from howtheyvote.store import index_search + + +@pytest.fixture(autouse=True) +def votes(db_session, search_index): + votes = [ + Vote( + id=1, + is_main=True, + is_featured=False, + title="Vote One", + timestamp=datetime.datetime(2024, 1, 1), + ), + Vote( + id=2, + is_main=True, + is_featured=True, + title="Vote Two", + timestamp=datetime.datetime(2024, 1, 2), + ), + Vote( + id=3, + is_main=True, + is_featured=False, + title="Vote Three", + timestamp=datetime.datetime(2024, 1, 3), + ), + ] + + db_session.add_all(votes) + db_session.commit() + index_search(Vote, votes, sync=True) + + yield + + +def test_database_query_handle(): + response = DatabaseQuery(Vote).handle() + results = response["results"] + assert response["total"] == 3 + assert len(results) == 3 + assert [r.id for r in results] == [1, 2, 3] + + +def test_database_query_handle_sort(): + response = DatabaseQuery(Vote).sort("timestamp").handle() + results = response["results"] + assert len(results) == 3 + assert [r.timestamp for r in results] == [ + datetime.datetime(2024, 1, 1), + datetime.datetime(2024, 1, 2), + datetime.datetime(2024, 1, 3), + ] + + response = DatabaseQuery(Vote).sort("timestamp", Order.DESC).handle() + results = response["results"] + assert len(results) == 3 + assert [r.timestamp for r in results] == [ + datetime.datetime(2024, 1, 3), + datetime.datetime(2024, 1, 2), + datetime.datetime(2024, 1, 1), + ] + + +def test_database_query_handle_pagination(): + response = DatabaseQuery(Vote).page(1).handle() + assert response["page"] == 1 + assert response["has_prev"] is False + assert response["has_next"] is False + assert len(response["results"]) == 3 + + response = DatabaseQuery(Vote).page(1).page_size(1).handle() + assert response["page"] == 1 + assert response["has_prev"] is False + assert response["has_next"] is True + assert response["results"][0].id == 1 + + response = DatabaseQuery(Vote).page(2).page_size(1).handle() + assert response["page"] == 2 + assert response["has_prev"] is True + assert response["has_next"] is True + assert response["results"][0].id == 2 + + response = DatabaseQuery(Vote).page(3).page_size(1).handle() + assert response["page"] == 3 + assert response["has_prev"] is True + assert response["has_next"] is False + assert response["results"][0].id == 3 + + +def test_database_query_handle_filters(): + response = DatabaseQuery(Vote).handle() + assert response["total"] == 3 + + response = DatabaseQuery(Vote).filter("is_featured", True).handle() + assert response["total"] == 1 + assert len(response["results"]) == 1 + assert response["results"][0].id == 2 + assert response["results"][0].display_title == "Vote Two" + + response = DatabaseQuery(Vote).filter("is_featured", False).handle() + assert response["total"] == 2 + assert len(response["results"]) == 2 + assert response["results"][0].id == 1 + assert response["results"][0].display_title == "Vote One" + assert response["results"][1].id == 3 + assert response["results"][1].display_title == "Vote Three" + + +def test_database_query_sql_where(): + response = DatabaseQuery(Vote).handle() + assert response["total"] == 3 + + response = DatabaseQuery(Vote).where(Vote.timestamp >= "2024-01-02").handle() + assert response["total"] == 2 + assert response["results"][0].id == 2 + assert response["results"][0].display_title == "Vote Two" + assert response["results"][1].id == 3 + assert response["results"][1].display_title == "Vote Three" + + +def test_search_query_handle(): + response = SearchQuery(Vote).handle() + assert response["page"] == 1 + assert response["page_size"] == 20 + assert response["total"] == 3 + + results = response["results"] + assert len(results) == 3 + assert [r.id for r in results] == [1, 2, 3] + + +def test_search_query_handle_sort(): + response = SearchQuery(Vote).sort("timestamp").handle() + results = response["results"] + assert len(results) == 3 + assert [r.timestamp for r in results] == [ + datetime.datetime(2024, 1, 1), + datetime.datetime(2024, 1, 2), + datetime.datetime(2024, 1, 3), + ] + + response = SearchQuery(Vote).sort("timestamp", Order.DESC).handle() + results = response["results"] + assert len(results) == 3 + assert [r.timestamp for r in results] == [ + datetime.datetime(2024, 1, 3), + datetime.datetime(2024, 1, 2), + datetime.datetime(2024, 1, 1), + ] + + +def test_search_query_handle_query(): + response = SearchQuery(Vote).query("vote").handle() + assert response["total"] == 3 + + results = response["results"] + assert {r.id for r in response["results"]} == {1, 2, 3} + + response = SearchQuery(Vote).query("two").handle() + assert response["total"] == 1 + + results = response["results"] + assert results[0].id == 2 + + +def test_search_query_handle_pagination(): + response = SearchQuery(Vote).page(1).handle() + assert response["total"] == 3 + assert response["page"] == 1 + assert response["has_prev"] is False + assert response["has_next"] is False + + response = SearchQuery(Vote).page(1).page_size(1).handle() + assert response["total"] == 3 + assert response["page"] == 1 + assert response["has_prev"] is False + assert response["has_next"] is True + assert response["results"][0].id == 1 + + response = SearchQuery(Vote).page(2).page_size(1).handle() + assert response["total"] == 3 + assert response["page"] == 2 + assert response["has_prev"] is True + assert response["has_next"] is True + assert response["results"][0].id == 2 + + response = SearchQuery(Vote).page(3).page_size(1).handle() + assert response["total"] == 3 + assert response["page"] == 3 + assert response["has_prev"] is True + assert response["has_next"] is False + assert response["results"][0].id == 3 + + +def test_search_query_handle_filters(): + response = SearchQuery(Vote).handle() + assert response["total"] == 3 + + response = SearchQuery(Vote).filter("is_featured", True).handle() + assert response["total"] == 1 + assert len(response["results"]) == 1 + assert response["results"][0].id == 2 + assert response["results"][0].display_title == "Vote Two" + + response = SearchQuery(Vote).filter("is_featured", False).handle() + assert response["total"] == 2 + assert len(response["results"]) == 2 + assert response["results"][0].id == 1 + assert response["results"][0].display_title == "Vote One" + assert response["results"][1].id == 3 + assert response["results"][1].display_title == "Vote Three" diff --git a/backend/tests/api/test_sessions_api.py b/backend/tests/api/test_sessions_api.py new file mode 100644 index 000000000..490d90d9e --- /dev/null +++ b/backend/tests/api/test_sessions_api.py @@ -0,0 +1,128 @@ +import datetime + +import time_machine + +from howtheyvote.models import PlenarySession, PlenarySessionLocation + + +def test_sessions_api(api, db_session): + past = PlenarySession( + id="1", + start_date=datetime.date(2022, 12, 30), + end_date=datetime.date(2022, 12, 31), + term=9, + location=PlenarySessionLocation.SXB, + ) + + current_1 = PlenarySession( + id="2", + start_date=datetime.date(2023, 1, 1), + end_date=datetime.date(2023, 1, 4), + term=9, + location=PlenarySessionLocation.SXB, + ) + + current_2 = PlenarySession( + id="3", + start_date=datetime.date(2023, 1, 1), + end_date=datetime.date(2023, 1, 1), + term=9, + location=PlenarySessionLocation.SXB, + ) + + upcoming = PlenarySession( + id="4", + start_date=datetime.date(2023, 1, 2), + end_date=datetime.date(2023, 1, 4), + term=9, + location=PlenarySessionLocation.SXB, + ) + + db_session.add_all([past, current_1, current_2, upcoming]) + db_session.commit() + + with time_machine.travel(datetime.date(2023, 1, 1)): + response_all = api.get("/api/sessions") + response_past = api.get("/api/sessions?status=past") + response_current = api.get("/api/sessions?status=current") + response_upcoming = api.get("/api/sessions?status=upcoming") + + expected_all = [ + { + "id": "1", + "start_date": "2022-12-30", + "end_date": "2022-12-31", + "status": "PAST", + "location": "SXB", + }, + { + "id": "2", + "start_date": "2023-01-01", + "end_date": "2023-01-04", + "status": "CURRENT", + "location": "SXB", + }, + { + "id": "3", + "start_date": "2023-01-01", + "end_date": "2023-01-01", + "status": "CURRENT", + "location": "SXB", + }, + { + "id": "4", + "start_date": "2023-01-02", + "end_date": "2023-01-04", + "status": "UPCOMING", + "location": "SXB", + }, + ] + + expected_past = [ + { + "id": "1", + "start_date": "2022-12-30", + "end_date": "2022-12-31", + "status": "PAST", + "location": "SXB", + }, + ] + + expected_current = [ + { + "id": "2", + "start_date": "2023-01-01", + "end_date": "2023-01-04", + "status": "CURRENT", + "location": "SXB", + }, + { + "id": "3", + "start_date": "2023-01-01", + "end_date": "2023-01-01", + "status": "CURRENT", + "location": "SXB", + }, + ] + + expected_upcoming = [ + { + "id": "4", + "start_date": "2023-01-02", + "end_date": "2023-01-04", + "status": "UPCOMING", + "location": "SXB", + }, + ] + + assert response_all.json["total"] == 4 + assert response_all.json["results"] == expected_all + + assert response_past.json["total"] == 1 + assert response_past.json["results"] == expected_past + + assert response_current.json["total"] == 2 + assert response_current.json["results"] == expected_current + + assert response_upcoming.json["total"] == 1 + assert response_upcoming.json["results"] == expected_upcoming diff --git a/backend/tests/api/test_votes_api.py b/backend/tests/api/test_votes_api.py new file mode 100644 index 000000000..4973be9a3 --- /dev/null +++ b/backend/tests/api/test_votes_api.py @@ -0,0 +1,458 @@ +import datetime + +import pytest + +from howtheyvote.models import ( + Country, + Fragment, + Group, + GroupMembership, + Member, + MemberVote, + Vote, + VotePosition, +) +from howtheyvote.store import index_search + + +@pytest.fixture() +def records(db_session): + john = Member( + id=1, + first_name="John", + last_name="Doe", + country=Country["FRA"], + terms=[9], + group_memberships=[ + GroupMembership( + term=9, + start_date=datetime.date(2022, 1, 1), + end_date=datetime.date(2022, 12, 31), + group=Group["NI"], + ), + GroupMembership( + term=9, + start_date=datetime.date(2023, 1, 1), + end_date=None, + group=Group["GUE_NGL"], + ), + ], + ) + + jane = Member( + id=2, + first_name="Jane", + last_name="Smith", + country=Country["DEU"], + terms=[9], + group_memberships=[ + GroupMembership( + term=9, + start_date=datetime.date(2023, 1, 1), + end_date=datetime.date(2023, 12, 31), + group=Group["EPP"], + ), + ], + ) + + vote = Vote( + id=1, + timestamp=datetime.datetime(2023, 1, 1, 0, 0, 0), + order=1, + title="Should we have pizza for lunch?", + description="Am 123", + member_votes=[ + MemberVote( + web_id=1, + position=VotePosition.FOR, + ), + MemberVote( + web_id=2, + position=VotePosition.AGAINST, + ), + ], + ) + + db_session.add_all([john, jane, vote]) + db_session.commit() + + +def test_votes_api_index(db_session, api): + one = Vote( + id=1, + timestamp=datetime.datetime(2024, 1, 1, 9, 0, 0), + title="Vote One", + is_main=True, + ) + + two = Vote( + id=2, + timestamp=datetime.datetime(2024, 1, 1, 10, 0, 0), + title="Vote Two", + is_main=True, + ) + + amendment = Vote( + id=3, + timestamp=datetime.datetime(2024, 1, 1, 10, 0, 0), + title="Vote Two", + description="Am 123", + is_main=False, + ) + + db_session.add_all([one, two, amendment]) + db_session.commit() + + res = api.get("/api/votes") + assert res.json["total"] + assert res.json["page"] == 1 + assert res.json["page_size"] == 20 + assert res.json["has_prev"] is False + assert res.json["has_next"] is False + + assert len(res.json["results"]) == 2 + assert res.json["results"][0]["id"] == 2 + assert res.json["results"][0]["display_title"] == "Vote Two" + assert res.json["results"][1]["id"] == 1 + assert res.json["results"][1]["display_title"] == "Vote One" + + res = api.get("/api/votes", query_string={"page": 1, "page_size": 1}) + assert res.json["total"] == 2 + assert res.json["page"] == 1 + assert res.json["page_size"] == 1 + assert res.json["has_prev"] is False + assert res.json["has_next"] is True + + assert len(res.json["results"]) == 1 + assert res.json["results"][0]["id"] == 2 + assert res.json["results"][0]["display_title"] == "Vote Two" + + res = api.get("/api/votes", query_string={"page": 2, "page_size": 1}) + assert res.json["total"] == 2 + assert res.json["page"] == 2 + assert res.json["page_size"] == 1 + assert res.json["has_prev"] is True + assert res.json["has_next"] is False + + assert len(res.json["results"]) == 1 + assert res.json["results"][0]["id"] == 1 + assert res.json["results"][0]["display_title"] == "Vote One" + + +def test_votes_api_search(db_session, search_index, api): + one = Vote( + id=1, + timestamp=datetime.datetime(2024, 1, 1, 9, 0, 0), + title="Vote One", + is_main=True, + ) + + two = Vote( + id=2, + timestamp=datetime.datetime(2024, 1, 1, 10, 0, 0), + title="Vote Two", + is_main=True, + ) + + db_session.add_all([one, two]) + db_session.commit() + index_search(Vote, [one, two], sync=True) + + res = api.get("/api/votes/search") + assert res.json["total"] == 2 + assert len(res.json["results"]) == 2 + assert res.json["results"][0]["id"] == 2 + assert res.json["results"][0]["display_title"] == "Vote Two" + assert res.json["results"][1]["id"] == 1 + assert res.json["results"][1]["display_title"] == "Vote One" + + res = api.get("/api/votes/search", query_string={"q": "vote"}) + assert res.json["total"] == 2 + assert len(res.json["results"]) == 2 + assert res.json["results"][0]["id"] == 2 + assert res.json["results"][0]["display_title"] == "Vote Two" + assert res.json["results"][1]["id"] == 1 + assert res.json["results"][1]["display_title"] == "Vote One" + + res = api.get("/api/votes/search", query_string={"q": "two"}) + assert res.json["total"] == 1 + assert len(res.json["results"]) == 1 + assert res.json["results"][0]["id"] == 2 + assert res.json["results"][0]["display_title"] == "Vote Two" + + +def test_votes_api_search_references(db_session, search_index, api): + one = Vote( + id=1, + timestamp=datetime.datetime(2024, 1, 1, 9, 0, 0), + title="Vote One", + reference="A9-0043/2024", + procedure_reference="2022/0362(NLE)", + is_main=True, + ) + + two = Vote( + id=2, + timestamp=datetime.datetime(2024, 1, 1, 10, 0, 0), + title="Vote Two", + reference="A9-0282/2023", + procedure_reference="2022/2148(INI)", + is_main=True, + ) + + db_session.add_all([one, two]) + db_session.commit() + index_search(Vote, [one, two], sync=True) + + res = api.get("/api/votes/search", query_string={"q": "A9-0043/2024"}) + assert res.json["total"] == 1 + assert res.json["results"][0]["id"] == 1 + + res = api.get("/api/votes/search", query_string={"q": "2022/2148(INI)"}) + assert res.json["total"] == 1 + assert res.json["results"][0]["id"] == 2 + + +def test_votes_api_show(records, db_session, api): + fragment = Fragment( + model="Vote", + group_key="1", + source_name="RCVListScraper", + source_id="1", + source_url="https://europarl.europa.eu/vote-results.xml", + timestamp=datetime.datetime(2023, 1, 1, 12, 0, 0), + data={}, + ) + + db_session.add(fragment) + db_session.commit() + + res = api.get("/api/votes/1") + + expected = { + "id": 1, + "display_title": "Should we have pizza for lunch?", + "timestamp": "2023-01-01T00:00:00", + "reference": None, + "description": "Am 123", + "is_featured": False, + "procedure": None, + "facts": None, + "sharepic_url": None, + "stats": { + "total": { + "FOR": 1, + "AGAINST": 1, + "ABSTENTION": 0, + "DID_NOT_VOTE": 0, + }, + "by_group": [ + { + "group": { + "code": "GUE_NGL", + "label": "The Left in the European Parliament – GUE/NGL", + "short_label": "GUE/NGL", + }, + "stats": { + "FOR": 1, + "AGAINST": 0, + "ABSTENTION": 0, + "DID_NOT_VOTE": 0, + }, + }, + { + "group": { + "code": "EPP", + "label": "European People’s Party", + "short_label": "EPP", + }, + "stats": { + "FOR": 0, + "AGAINST": 1, + "ABSTENTION": 0, + "DID_NOT_VOTE": 0, + }, + }, + ], + "by_country": [ + { + "country": { + "code": "FRA", + "iso_alpha_2": "FR", + "label": "France", + }, + "stats": { + "FOR": 1, + "AGAINST": 0, + "ABSTENTION": 0, + "DID_NOT_VOTE": 0, + }, + }, + { + "country": { + "code": "DEU", + "iso_alpha_2": "DE", + "label": "Germany", + }, + "stats": { + "FOR": 0, + "AGAINST": 1, + "ABSTENTION": 0, + "DID_NOT_VOTE": 0, + }, + }, + ], + }, + "member_votes": [ + { + "position": "FOR", + "member": { + "id": 1, + "first_name": "John", + "last_name": "Doe", + "terms": [9], + "country": { + "code": "FRA", + "iso_alpha_2": "FR", + "label": "France", + }, + "group": { + "code": "GUE_NGL", + "label": "The Left in the European Parliament – GUE/NGL", + "short_label": "GUE/NGL", + }, + "photo_url": "/api/static/members/1.jpg", + "thumb_url": "/api/static/members/1-104.jpg", + "date_of_birth": None, + "email": None, + "facebook": None, + "twitter": None, + }, + }, + { + "position": "AGAINST", + "member": { + "id": 2, + "first_name": "Jane", + "last_name": "Smith", + "terms": [9], + "country": { + "code": "DEU", + "iso_alpha_2": "DE", + "label": "Germany", + }, + "group": { + "code": "EPP", + "label": "European People’s Party", + "short_label": "EPP", + }, + "photo_url": "/api/static/members/2.jpg", + "thumb_url": "/api/static/members/2-104.jpg", + "date_of_birth": None, + "email": None, + "facebook": None, + "twitter": None, + }, + }, + ], + "geo_areas": [], + "eurovoc_concepts": [], + "related": [], + "sources": [ + { + "accessed_at": "2023-01-01T12:00:00", + "name": "Results of roll-call votes (XML)", + "url": "https://europarl.europa.eu/vote-results.xml", + }, + ], + } + + assert res.json == expected + + +def test_votes_api_csv(records, api): + res = api.get("/api/votes/1.csv") + assert res.headers["Content-Type"] == "text/csv" + + expected = ( + "position,member.id,member.first_name,member.last_name,member.country.code,member.country.label,member.country.iso_alpha_2,member.group.code,member.group.label,member.group.short_label\r\n" + "VotePosition.FOR,1,John,Doe,FRA,France,FR,GUE_NGL,The Left in the European Parliament – GUE/NGL,GUE/NGL\r\n" + "VotePosition.AGAINST,2,Jane,Smith,DEU,Germany,DE,EPP,European People’s Party,EPP\r\n" + ) + + assert res.text == expected + + +def test_votes_api_related_votes(db_session, api): + member = Member( + id=1, + first_name="Jane", + last_name="Smith", + country=Country["DEU"], + terms=[9], + group_memberships=[ + GroupMembership( + term=9, + start_date=datetime.date(2023, 1, 1), + end_date=datetime.date(2023, 12, 31), + group=Group["EPP"], + ), + ], + ) + + amendment = Vote( + id=1, + timestamp=datetime.datetime(2023, 1, 1, 0, 0, 0), + order=1, + title="Should we have pizza for lunch?", + description="Am 1", + group_key="abc123", + member_votes=[ + MemberVote( + web_id=1, + position=VotePosition.FOR, + ), + ], + ) + + main_vote = Vote( + id=2, + timestamp=datetime.datetime(2023, 1, 1, 0, 0, 0), + order=2, + title="Should we have pizza for lunch?", + description="Resolution (text as a whole)", + group_key="abc123", + member_votes=[ + MemberVote( + web_id=1, + position=VotePosition.FOR, + ), + ], + ) + + db_session.add_all([member, amendment, main_vote]) + db_session.commit() + + res = api.get("/api/votes/1") + + expected = [ + { + "id": 1, + "timestamp": "2023-01-01T00:00:00", + "description": "Am 1", + }, + { + "id": 2, + "timestamp": "2023-01-01T00:00:00", + "description": "Resolution (text as a whole)", + }, + ] + + assert res.json["related"] == expected + + +def test_votes_api_not_found(api): + res = api.get("/api/votes/123") + + assert res.status_code == 404 + assert res.json["error"].startswith("404 Not Found") diff --git a/backend/tests/conftest.py b/backend/tests/conftest.py new file mode 100644 index 000000000..26bd85e14 --- /dev/null +++ b/backend/tests/conftest.py @@ -0,0 +1,62 @@ +"""The database configuration relies on module globals and as such is a bit fragile, but +it works and hopefully doesn't need to be adjusted too often. We use the pytest-env plugin +to set the `HTV_BACKEND_DATABASE_URI` environment variables to a separate SQLite file when +running tests and use pytest hooks to start a transaction before individual tests are +executed and rollback any changes after execution. In order to test API routes, we make use +of Flask’s built-in test client.""" + +import pytest +import responses as responses_lib + +from howtheyvote.db import Session, engine, migrate, session_factory +from howtheyvote.meili import configure_indexes, delete_indexes +from howtheyvote.wsgi import app as flask_app + + +@pytest.fixture(scope="session") +def migrations(): + """Runs database migrations once before all tests.""" + migrate() + yield None + + +@pytest.fixture() +def db_session(migrations): + """Starts a transaction before individual tests are executed and rolls back all changes + after execution.""" + connection = engine.connect() + transaction = connection.begin() + + session_factory.configure(bind=connection) + yield Session + Session.remove() + + transaction.rollback() + connection.close() + + +@pytest.fixture() +def search_index(): + """Deletes and recreates search indexes before the test runs.""" + delete_indexes() + configure_indexes() + yield + + +@pytest.fixture() +def app(db_session): + """Providdes an instance of the Flask app.""" + yield flask_app + + +@pytest.fixture() +def api(app): + """Provides a Flask test client that allows simulating HTTP requests.""" + yield app.test_client() + + +@pytest.fixture +def responses(): + """Allows mocking HTTP requests made with requests.""" + with responses_lib.RequestsMock() as r: + yield r diff --git a/backend/tests/models/test_country.py b/backend/tests/models/test_country.py new file mode 100644 index 000000000..38e743a5f --- /dev/null +++ b/backend/tests/models/test_country.py @@ -0,0 +1,68 @@ +import pytest +from sqlalchemy import Column, MetaData, Table, create_engine, select, text + +from howtheyvote.models import Country, CountryType + + +def test_country_getitem(): + austria = Country["AUT"] + assert isinstance(austria, Country) + assert austria.code == "AUT" + + with pytest.raises(KeyError): + Country["invalid"] + + +def test_country_get(): + austria = Country.get("AUT") + assert isinstance(austria, Country) + assert austria.code == "AUT" + + invalid = Country.get("invalid") + assert invalid is None + + +def test_country_from_label(): + assert Country.from_label("Austria") == Country["AUT"] + + +def test_country_from_label_alternates(): + assert Country.from_label("Czechia") == Country["CZE"] + assert Country.from_label("Czech Republic") == Country["CZE"] + + +def test_country_from_label_fuzzy(): + # Sanity check: exact match + assert Country.from_label("Kosovo*") == Country["XKX"] + + # Sanity check: By default, only exact matches are returned + assert Country.from_label("Kosovo") is None + assert Country.from_label("Kosovo under UNSCR 1244/1999") is None + + # If fuzzy=True, countries that start with the same substring are matched, too. + assert Country.from_label("Kosovo under UNSCR 1244/1999", fuzzy=True) == Country["XKX"] + assert Country.from_label("Kosovo", fuzzy=True) == Country["XKX"] + + +def test_country_type(): + engine = create_engine("sqlite://") + metadata = MetaData() + + table = Table( + "countries", + metadata, + Column("country", CountryType()), + ) + + with engine.connect() as connection: + metadata.create_all(connection) + stmt = table.insert().values(country=Country["FRA"]) + connection.execute(stmt) + connection.commit() + + unprocessed = connection.execute(text("SELECT country from countries")).scalar() + assert unprocessed == "FRA" + + processed = connection.execute(select(table)).scalar() + assert isinstance(processed, Country) + assert processed.code == "FRA" diff --git a/backend/tests/models/test_eurovoc.py b/backend/tests/models/test_eurovoc.py new file mode 100644 index 000000000..77f7a9183 --- /dev/null +++ b/backend/tests/models/test_eurovoc.py @@ -0,0 +1,25 @@ +from howtheyvote.models.country import Country +from howtheyvote.models.eurovoc import EurovocConcept + + +def test_eurovoc_concept_related(): + concept = EurovocConcept["3030"] + related = concept.related + + expected = {EurovocConcept["3740"], EurovocConcept["3293"], EurovocConcept["c_5a195ffd"]} + assert related == expected + + +def test_eurovoc_concept_broader(): + concept = EurovocConcept["c_f7430876"] + assert concept.broader == {EurovocConcept["3074"]} + + +def test_eurovoc_concept_geo_area(): + concept = EurovocConcept["245"] + assert concept.geo_area_code is None + assert concept.geo_area is None + + concept = EurovocConcept["3774"] + assert concept.geo_area_code == "GBR" + assert concept.geo_area == Country["GBR"] diff --git a/backend/tests/models/test_group.py b/backend/tests/models/test_group.py new file mode 100644 index 000000000..4374c9bac --- /dev/null +++ b/backend/tests/models/test_group.py @@ -0,0 +1,42 @@ +import pytest + +from howtheyvote.models import Group + + +def test_group_getitem(): + greens = Group["GREEN_EFA"] + assert isinstance(greens, Group) + assert greens.code == "GREEN_EFA" + + with pytest.raises(KeyError): + Group["invalid"] + + +def test_group_get(): + greens = Group.get("GREEN_EFA") + assert isinstance(greens, Group) + assert greens.code == "GREEN_EFA" + + invalid = Group.get("invalid") + assert invalid is None + + +def test_group_from_label(): + assert Group.from_label("Group of the Greens/European Free Alliance") == Group["GREEN_EFA"] + + +def test_group_from_label_short(): + assert Group.from_label("Greens/European Free Alliance") == Group["GREEN_EFA"] + + +def test_group_from_label_case_insensitive(): + assert Group.from_label("greens/european free alliance") == Group["GREEN_EFA"] + + +def test_group_from_label_normalized(): + # Note that this doesn't use a proper apostrophe in "People's" + epp = Group.from_label("Group of the European People's Party (Christian Democrats)") + assert epp == Group["EPP"] + + guengl = Group.from_label("Group of the European United Left - Nordic Green Left") + assert guengl == Group["GUE_NGL"] diff --git a/backend/tests/models/test_member.py b/backend/tests/models/test_member.py new file mode 100644 index 000000000..710e34bf2 --- /dev/null +++ b/backend/tests/models/test_member.py @@ -0,0 +1,44 @@ +import datetime + +from sqlalchemy import Column, MetaData, Table, create_engine, select, text + +from howtheyvote.models import Group, GroupMembership +from howtheyvote.models.member import GroupMembershipType +from howtheyvote.models.types import ListType + + +def test_group_membership_type(): + engine = create_engine("sqlite://") + metadata = MetaData() + + table = Table( + "members", + metadata, + Column("group_memberships", ListType(GroupMembershipType)), + ) + + group_memberships = [ + GroupMembership( + term=9, + group=Group["EPP"], + start_date=datetime.date(2023, 1, 1), + end_date=None, + ) + ] + + with engine.connect() as connection: + metadata.create_all(connection) + stmt = table.insert().values(group_memberships=group_memberships) + connection.execute(stmt) + connection.commit() + + stmt = text("SELECT group_memberships from members") + unprocessed = connection.execute(stmt).scalar() + assert ( + unprocessed + == '[{"term": 9, "start_date": "2023-01-01", "end_date": null, "group": "EPP"}]' + ) + + stmt = select(table) + processed = connection.execute(stmt).scalar() + assert processed == group_memberships diff --git a/backend/tests/models/test_types.py b/backend/tests/models/test_types.py new file mode 100644 index 000000000..1c9d1f056 --- /dev/null +++ b/backend/tests/models/test_types.py @@ -0,0 +1,182 @@ +import dataclasses +import datetime +from enum import Enum +from typing import Any + +import sqlalchemy as sa +from sqlalchemy import Column, MetaData, Table, create_engine, select, text +from sqlalchemy.engine import Dialect +from sqlalchemy.types import TypeDecorator + +from howtheyvote.json import json_dumps, json_loads +from howtheyvote.models.types import ListType + + +class Committee(Enum): + """Example enum""" + + BUDG = "BUDG" + ECON = "ECON" + ITRE = "ITRE" + JURI = "JURI" + + +@dataclasses.dataclass +class Country: + """Example dataclass""" + + code: str + + +class CountryType(TypeDecorator[Country]): + """Example type decorator that serializes `Country` instances to strings""" + + impl = sa.Unicode + cache_ok = True + + def process_bind_param(self, value: Country | None, dialect: Dialect) -> str | None: + if not value: + return None + + return value.code + + def process_result_value(self, value: str | None, dialect: Dialect) -> Country | None: + if not value: + return None + + return Country(code=value) + + +@dataclasses.dataclass +class MemberVote: + """Example dataclass""" + + position: str + member_id: int + + +class MemberVoteType(TypeDecorator[MemberVote]): + """Example type decorator that serializes `MemberVote` instances to JSON strings.""" + + impl = sa.JSON + cache_ok = True + + def process_bind_param(self, value: MemberVote | None, dialect: Dialect) -> Any | None: + if not value: + return None + + return dataclasses.asdict(value) + + def process_result_value(self, value: Any | None, dialect: Dialect) -> MemberVote | None: + if not value or not isinstance(value, dict): + return None + + return MemberVote(**value) + + +def test_list_type_enum(): + engine = create_engine("sqlite://") + metadata = MetaData() + + table = Table( + "votes", + metadata, + Column("committees", ListType(sa.Enum(Committee))), + ) + + with engine.connect() as connection: + metadata.create_all(connection) + stmt = table.insert().values(committees=[Committee.ITRE, Committee.ECON]) + connection.execute(stmt) + connection.commit() + + unprocessed = connection.execute(text("SELECT committees from votes")).scalar() + assert unprocessed == '["ITRE", "ECON"]' + + processed = connection.execute(select(table)).scalar() + assert processed == [Committee.ITRE, Committee.ECON] + + +def test_list_type_date(): + engine = create_engine( + "sqlite://", + json_serializer=json_dumps, + json_deserializer=json_loads, + ) + metadata = MetaData() + + table = Table( + "procedures", + metadata, + Column("dates", ListType(sa.Date)), + ) + + with engine.connect() as connection: + metadata.create_all(connection) + stmt = table.insert().values( + dates=[datetime.date(2023, 1, 1), datetime.date(2022, 1, 1)] + ) + connection.execute(stmt) + connection.commit() + + unprocessed = connection.execute(text("SELECT dates from procedures")).scalar() + assert unprocessed == '["2023-01-01", "2022-01-01"]' + + processed = connection.execute(select(table)).scalar() + assert processed == [datetime.date(2023, 1, 1), datetime.date(2022, 1, 1)] + + +def test_list_type_type_decorator(): + engine = create_engine( + "sqlite://", + json_serializer=json_dumps, + json_deserializer=json_loads, + ) + metadata = MetaData() + + table = Table( + "votes", + metadata, + Column("countries", ListType(CountryType)), + ) + + with engine.connect() as connection: + metadata.create_all(connection) + stmt = table.insert().values(countries=[Country(code="FRA"), Country(code="DEU")]) + connection.execute(stmt) + connection.commit() + + unprocessed = connection.execute(text("SELECT countries from votes")).scalar() + assert unprocessed == '["FRA", "DEU"]' + + processed = connection.execute(select(table)).scalar() + assert processed == [Country(code="FRA"), Country(code="DEU")] + + +def test_list_type_type_decorator_json(): + engine = create_engine( + "sqlite://", + json_serializer=json_dumps, + json_deserializer=json_loads, + ) + metadata = MetaData() + + table = Table( + "votes", + metadata, + Column("member_votes", ListType(MemberVoteType)), + ) + + member_votes = [MemberVote(position="FOR", member_id=12345)] + + with engine.connect() as connection: + metadata.create_all(connection) + stmt = table.insert().values(member_votes=member_votes) + connection.execute(stmt) + connection.commit() + + unprocessed = connection.execute(text("SELECT member_votes from votes")).scalar() + assert unprocessed == '[{"position": "FOR", "member_id": 12345}]' + + processed = connection.execute(select(table)).scalar() + assert processed == member_votes diff --git a/backend/tests/models/test_vote.py b/backend/tests/models/test_vote.py new file mode 100644 index 000000000..5657b7485 --- /dev/null +++ b/backend/tests/models/test_vote.py @@ -0,0 +1,32 @@ +from howtheyvote.models import Vote + + +def test_vote_display_title(): + # Only RCV title present + vote = Vote(title="Title from RCV list", procedure_title=None) + assert vote.display_title == "Title from RCV list" + + # Only procedure title present + vote = Vote(title=None, procedure_title="Title from procedure file") + assert vote.display_title == "Title from procedure file" + + # RCV title and procedure title present + vote = Vote(title="Title from RCV list", procedure_title="Title from procedure file") + assert vote.display_title == "Title from RCV list" + + # If the RCV title is very long, prefer the procedure title if it is shorter + vote = Vote( + title="Establishment of 'Eurodac' for the comparison of fingerprints for the effective application of Regulation (EU) No 604/2013, for identifying an illegally staying third-country national or stateless person and on requests for the comparison with Eurodac data by Member States' law enforcement authorities and Europol for law enforcement purposes (recast)", + procedure_title="Eurodac Regulation", + ) + assert vote.display_title == "Eurodac Regulation" + + # If the RCV title is very long, but the procedure title is even longer, prefer the RCV title + vote = Vote( + title="Setting up a special committee on foreign interference in all democratic processes in the European Union, including disinformation", + procedure_title="Decision on setting up a special committee on foreign interference in all democratic processes in the European Union, including disinformation (INGE 2), and defining its responsibilities, numerical strength and term of office", + ) + assert ( + vote.display_title + == "Setting up a special committee on foreign interference in all democratic processes in the European Union, including disinformation" + ) diff --git a/backend/tests/pipelines/test_rcv_list.py b/backend/tests/pipelines/test_rcv_list.py new file mode 100644 index 000000000..4cbc363ca --- /dev/null +++ b/backend/tests/pipelines/test_rcv_list.py @@ -0,0 +1,11 @@ +import datetime + +import pytest + +from howtheyvote.pipelines import DataUnavailableError, RCVListPipeline + + +def test_run_source_not_available(responses, db_session): + with pytest.raises(DataUnavailableError): + pipe = RCVListPipeline(term=9, date=datetime.date(2024, 4, 10)) + pipe.run() diff --git a/scrapers/ep_votes/__init__.py b/backend/tests/scrapers/__init__.py similarity index 100% rename from scrapers/ep_votes/__init__.py rename to backend/tests/scrapers/__init__.py diff --git a/scrapers/tests/data/member_groups_adinolfi_term_9.html b/backend/tests/scrapers/data/members/member_groups_adinolfi_term_8.html similarity index 80% rename from scrapers/tests/data/member_groups_adinolfi_term_9.html rename to backend/tests/scrapers/data/members/member_groups_adinolfi_term_8.html index 9e4bc2402..408aba5f0 100644 --- a/scrapers/tests/data/member_groups_adinolfi_term_9.html +++ b/backend/tests/scrapers/data/members/member_groups_adinolfi_term_8.html @@ -267,7 +267,7 @@
  • Plenary
  • Committees
  • Delegations
  • -
  • +
  • + @@ -919,72 +919,72 @@

    Political groups

    • 01-07-2014 / 15-10-2014 : Europe of Freedom and Direct Democracy Group - Member
    • - +
    • 16-10-2014 / 19-10-2014 : Non-attached Members
    • - +
    • 20-10-2014 / 01-07-2019 : Europe of Freedom and Direct Democracy Group - Member
    • - +
    - - - + + +

    National parties

      - +
    • 01-07-2014 / 01-07-2019 : Movimento 5 Stelle (Italy)
    • - +
    - - - + + +

    Member

      - +
    • 01-07-2014 / 18-01-2017 : Committee on Culture and Education
    • - +
    • 14-07-2014 / 01-07-2019 : Delegation to the ACP-EU Joint Parliamentary Assembly
    • - +
    • 19-01-2017 / 01-07-2019 : Committee on Culture and Education
    • - +
    • 28-11-2018 / 01-07-2019 : Committee on Women's Rights and Gender Equality
    • - +
    - - - + + +

    Substitute

      - +
    • 01-07-2014 / 18-01-2017 : Committee on Regional Development
    • - +
    • 01-07-2014 / 18-01-2017 : Committee on Constitutional Affairs
    • - +
    • 14-07-2014 / 01-07-2019 : Delegation for relations with the United States
    • - +
    • 11-02-2015 / 07-06-2016 : Committee on the Internal Market and Consumer Protection
    • - +
    • 08-06-2016 / 18-01-2017 : Committee on Legal Affairs
    • - +
    • 24-06-2016 / 24-01-2017 : Committee of Inquiry to investigate alleged contraventions and maladministration in the application of Union law in relation to money laundering, tax avoidance and tax evasion
    • - +
    • 19-01-2017 / 01-07-2019 : Committee on Regional Development
    • - +
    • 19-01-2017 / 01-07-2019 : Committee on Legal Affairs
    - + @@ -999,24 +999,12 @@

    Substitute

    - - - - + + + +

    Main parliamentary activities

    - - - - - - - - - - - - @@ -1030,41 +1018,13 @@

    Main parliamentary activities

    - - - - - -
    - - -

    Contributions to plenary debates

    - - -
    -

    Speeches made during the plenary session and written declarations relating to plenary debates. Rules Rule 204 and 171(11) -

    -
    - -
    - - - - - - - - - - - @@ -1076,124 +1036,52 @@

    Contributions to plenary debates

    -
    - - -
    - - +
    +

    Contributions to plenary debates

    +
    +

    Speeches made during the plenary session and written declarations relating to plenary debates. Rules Rule 204 and 171(11) +

    +
    -
    -
    - - -

    - - - - - Establishing the Creative Europe programme (2021 to 2027) (debate) - - - IT - - - - - -

    - - - - - -
    - - - - +
    -28-03-2019 - - - - -P8_CRE-REV(2019)03-28(4-018-0000) - - - - - -
    - - - - - - - - - - - - - -
    - -
    - - - - - - - - - - - -
    -
    - - - - -
    -
    - + +
    + +
    - - + + @@ -1203,109 +1091,40 @@

    - - -

    - - - - - Establishing the Creative Europe programme (2021 to 2027) (debate) - - - IT - - - - - -

    - - - - - -
    - - - - +

    + + Establishing the Creative Europe programme (2021 to 2027) (debate) -28-03-2019 + IT + - - - - +

    +
    + -P8_CRE-REV(2019)03-28(4-020-0000) - - - - - -
    - - - - - - - - - - - - - -
    - -
    - - - - - - - - - - - -
    -
    - - - - -
    -
    - -
    - - +28-03-2019 @@ -1313,143 +1132,42 @@

    -
    -
    - - -

    - - - - - 'Erasmus': the Union programme for education, training, youth and sport (debate) - - - IT - - - - - -

    - - - - - -
    - - - - -28-03-2019 +P8_CRE-REV(2019)03-28(4-018-0000) - - - - + -P8_CRE-REV(2019)03-28(4-048-0000) +
    - - - - - -
    - - - - - - - - - - - - - -
    - -
    - - - - - - - - - - - -
    -

    - - - - -
    -

    - - - - - -
    - See all -
    - -
    - - - - - - - - -
    - - - - - - - - - - - +
    +
    @@ -1457,145 +1175,97 @@

    - - - - - -
    - - -

    Reports - as shadow rapporteur

    - - -
    -

    Political groups designate a shadow rapporteur for each report in the responsible committee to follow progress and negotiate compromise texts with the rapporteur. Rule 215 -

    -
    - -
    - - - - - - - - - - +
    +

    - +
    +
    +
    -
    - - -
    - - +
    +
    +

    + + + + + Establishing the Creative Europe programme (2021 to 2027) (debate) + + + IT + -
    -
    - - -

    - - - - - REPORT on the proposal for a regulation of the European Parliament and of the Council establishing the Creative Europe programme (2021 to 2027) and repealing Regulation (EU) No 1295/2013 - - - - - +

    - - - - - + + + + +
    - - - -04-03-2019 - +28-03-2019 - - - - -A8-0156/2019 - - - - +P8_CRE-REV(2019)03-28(4-020-0000) -PE625.219v02-00 - - - - - - - - + +
    + + @@ -1605,82 +1275,37 @@

    -CULT - - - -

    - - - - - - - - - - - - - - -
    - - - Silvia COSTA - - -
    - -
    - +
    - - - - - - - - - - - -
    + + + + + + + + + + + +

    - - - - -
    -
    - + + + + +
    +
    +
    - - + + @@ -1690,85 +1315,67 @@

    - - - - - - - - - - - - - - -
    - - - Milan ZVER - - -
    - - -
    - -
    - - - - - - - - - - - -
    -

    - - - - - -
    -
    - -
    - - +
    + - - - - +
    -PE627.916v02-00 - - - - - - - - - @@ -1949,108 +1448,11 @@

    -CULT - - - - - - - - - - - - - - - - - - -
    - - - Michaela ŠOJDROVÁ - - -
    - - - - -
    - - - - - - - - - - - -
    - - - - - -
    - - - - - - -
    - See all -
    - - - - - - - - - - - - - - - - - - - - - - @@ -2062,43 +1464,34 @@

    +
    - - - - - +

    Reports - as shadow rapporteur

    -
    - - -

    Opinions - as rapporteur

    - -
    -

    Committees may draft an opinion to a report of the responsible committee covering the elements linked to their committee remit. Rapporteurs of such opinions are also responsible for the drafting of compromise amendments and negotiations with shadow rapporteurs of the opinion. Rule 56, Rule 57, Annex VI -

    +

    Political groups designate a shadow rapporteur for each report in the responsible committee to follow progress and negotiate compromise texts with the rapporteur. Rule 215 +

    - +
    - - - - - - - - - - - + + + + + + + + + + + @@ -2111,11 +1504,11 @@

    Opinions - as rapporteur

    - - + +
    - - + + @@ -2125,80 +1518,84 @@

    Opinions - as rapporteur

    - - -

    - - - OPINION on e-Democracy in the European Union: potential and challenges - - - - + + +

    + + + + + REPORT on the proposal for a regulation of the European Parliament and of the Council establishing the Creative Europe programme (2021 to 2027) and repealing Regulation (EU) No 1295/2013 + + + + + +

    - - - - - + + + + +
    - - - -14-10-2016 +04-03-2019 + - - - - -CULT_AD(2016)582133 - - - - + +A8-0156/2019 + -PE582.133v02-00 - - - + + + +PE625.219v02-00 + + + + + + + + - + - - + + @@ -2211,105 +1608,56 @@

    CULT - + - +

    - - - - - - - - - -
    - -
    - - PDF - - (147 KB) - - - - DOC - - (66 KB) - + + + + + + + + + + - - - - + + + +
    - - - Isabella ADINOLFI - - + + + Silvia COSTA + +
    - - + +
    - +
    - - - - - - - - - - - -
    -
    - - - - -
    -
    - - - - - -
    - See all -
    - -
    - - - - - - - - -
    - - - - - - - - - - - @@ -2318,146 +1666,108 @@

    +

    +
    - - - - - -
    +
    +
    - - -

    Opinions - as shadow rapporteur

    - - -
    -

    Political groups designate a shadow rapporteur for an opinion to follow progress and negotiate compromise texts with the rapporteur. Rule 215 -

    -
    - -
    - - - - - - - - - - +
    - +
    +
    +

    + + REPORT on the proposal for a regulation of the European Parliament and of the Council establishing ‘Erasmus’: the Union programme for education, training, youth and sport and repealing Regulation (EU) No 1288/2013 -

    + -
    -
    - - -

    - - - OPINION on the proposal for a regulation of the European Parliament and of the Council on preventing the dissemination of terrorist content online - - - - -

    - - - - -
    - - - -13-03-2019 +04-03-2019 - - - - -CULT_AD(2019)632087 - - - - +A8-0111/2019 -PE632.087v02-00 - - - + + + + + + +PE625.220v03-00 + + + + + + + + - + - - + + @@ -2470,330 +1780,166 @@

    CULT - + - -

    - - - - - - - - - - - - - - -
    - - - Julie WARD - - +
    - - -
    - -
    - - - - - - - - - - - -
    -
    - - - - -
    -
    - -
    - - +
    + +
    -
    -
    - - -

    - - - OPINION on discharge in respect of the implementation of the general budget of the European Union for the financial year 2017, Section III – Commission and executive agencies - - - - -

    - - - - - -
    - - - - + PDF + (574 KB) + + DOC + (263 KB) + -23-01-2019 +
    +
    +
    - - - - + Milan ZVER +
    +
    -CULT_AD(2019)628678 +
    - - - - -PE628.678v02-00 +
    +
    - - - - - - - - - +
    +
    +
    -CULT - - - -
    - - - - - - - - - - - - - - -
    - - - Bogdan Andrzej ZDROJEWSKI - - -
    - - -
    - -
    - - - - - - - - - - - -
    -
    +
    +
    - - - - -
    -
    - -
    - - +

    + + REPORT on the proposal for a regulation of the European Parliament and of the Council establishing the European Solidarity Corps programme and repealing [European Solidarity Corps Regulation] and Regulation (EU) No 375/2014 -
    -
    - - -

    - - - OPINION on discharge in respect of the implementation of the budget of the Translation Centre for the Bodies of the European Union for the financial year 2017 - - - - + +

    - - - - - + + + + +
    - - - -23-01-2019 +15-02-2019 + - - - - -CULT_AD(2019)628679 - - - - + +A8-0079/2019 + + + -PE628.679v02-00 - - - + +PE627.916v02-00 + + + + + + + + - + - - + + @@ -2806,105 +1952,56 @@

    CULT - + - +

    - - - - - - - - - + + + + + + + + + - - - - + + + +
    - - - Bogdan Andrzej ZDROJEWSKI - - + + + Michaela ŠOJDROVÁ + +
    - - + +
    - +
    - - - - - - - - - - - -
    -
    - - - - -
    -

    - - - - - -
    - See all -
    - -
    - - - - - - - - -
    - - - - - - - - - - - @@ -2913,47 +2010,27 @@

    +

    + - - - - - -
    +
    +
    - - -

    Motions for resolutions

    - - -
    -

    Motions for resolutions are tabled on topical issues, at the request of a committee, a political group or at least 5% of the Members, and voted on in plenary. Rule 132, Rule 136, Rule 139, Rule 144. -

    -
    - -
    - - - - - - - - - - - +
    + See all +
    + @@ -2962,14 +2039,9 @@

    Motions for resolutions

    + -
    - - -
    - - @@ -2977,257 +2049,73 @@

    Motions for resolutions

    -
    -
    - - -

    - - - - - JOINT MOTION FOR A RESOLUTION on the human rights situation in Kazakhstan - - - - - - -

    - - - - - -
    - - - - -13-03-2019 - - - - -RC-B8-0204/2019 - - - - - -
    - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - - - - -
    -
    - +
    - - - - -
    -
    - -
    - - +

    Opinions - as rapporteur

    +
    +

    Committees may draft an opinion to a report of the responsible committee covering the elements linked to their committee remit. Rapporteurs of such opinions are also responsible for the drafting of compromise amendments and negotiations with shadow rapporteurs of the opinion. Rule 56, Rule 57, Annex VI +

    +
    +
    -
    -
    - - -

    - - - - - JOINT MOTION FOR A RESOLUTION on Iran, notably the case of human rights defenders - - - - - - -

    - - - - - -
    - - - - -13-03-2019 - - - - -RC-B8-0186/2019 - - - - - -
    - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - - - - -
    -
    +
    - - - - -
    -
    -
    - - + + @@ -3237,152 +2125,51 @@

    - - -

    - - - - - JOINT MOTION FOR A RESOLUTION on the situation of human rights in Guatemala - - - - - - + + +

    + + + OPINION on e-Democracy in the European Union: potential and challenges + + + +

    - - - - - + + + + +
    - - - -13-03-2019 +14-10-2016 - - - - -RC-B8-0182/2019 - - - - - -
    - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - - - - -
    -
    +CULT_AD(2016)582133 - - - - -
    -

    - - - - - -
    - See all -
    - -
    - - - - - - - - -
    - - - - - - - - - - - @@ -3396,44 +2183,20 @@

    - - - - - +PE582.133v02-00 -
    - - -

    Oral questions

    - - -
    -

    Questions for oral answer with debate, addressed to the European Commission, the Council or the Vice-President of the Commission/High Representative of the Union can be tabled by a committee, a political group or at least 5% of Parliament’s members. Rule 136 -

    -
    - -
    - - - - - - - - - - - + + + @@ -3442,302 +2205,120 @@

    Oral questions

    -
    - - -
    - - +CULT + -
    -
    - - -

    - - - - - Corporate Social Responsibility - - - - - - -

    - - - - - -
    - - - - +
    -01-03-2018 + -O-000026/2018 +
    - - - - + Isabella ADINOLFI +
    +
    +
    -Commission - - - - - -
    - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - - - - -
    -
    - - - - -
    -
    - -
    - - +
    +
    -
    -
    - - -

    - - - - - Investigation in the wake of the Dieselgate 2.0 scandal - - - - - - -

    - - - - - -
    - - - - +
    +
    -02-02-2018 +
    + See all +
    +
    - - - - +
    -O-000013/2018 - - - - -Commission - - - - - -

    - - - - - - - - - - - - - - - - - -
    - - - - - - - - - - - -
    - - - - - -
    - - -
    - - @@ -3745,172 +2326,53 @@

    -
    -
    - - -

    - - - - - Major interpellation - Coordinated efforts at EU level to increase vaccination coverage - - - - - - -

    - - - - - -
    - - - - +
    -15-09-2017 +

    Opinions - as shadow rapporteur

    +
    +

    Political groups designate a shadow rapporteur for an opinion to follow progress and negotiate compromise texts with the rapporteur. Rule 215 +

    +
    +
    - - - - -O-000074/2017 - - - - -Commission - - - - - -
    - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - - - - -
    -
    - - - - -
    -
    - - - - - -
    - See all -
    - -

    - - - - - - - - - - - - - - - - - - - - +
    +
    @@ -3920,47 +2382,26 @@

    +
    +
    - - - - - +

    -
    + OPINION on the proposal for a regulation of the European Parliament and of the Council on preventing the dissemination of terrorist content online - - -

    Major interpellations

    - - -
    -

    Major interpellations for written answer with debate, addressed to the European Commission, the Council or the Vice-President of the Commission/High Representative of the Union, may be tabled by a committee, a political group or at least 5% of Parliament’s component Members. Rule 139, Annex III -

    -
    - -
    - - - - - - - - - - +

    - +
    + @@ -3968,157 +2409,54 @@

    Major interpellations

    -
    - - -
    - - +13-03-2019 -
    -
    - - -

    - - - - - Coordinated efforts at EU level to increase vaccination coverage - - - - - - -

    - - - - - -
    - - - - -15-09-2017 +CULT_AD(2019)632087 - - - - -G-000010/2017 - - - - +PE632.087v02-00 -Commission - - - - -
    - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - - - - -
    -
    - + + - - - - -
    -
    - -
    - - @@ -4126,181 +2464,63 @@

    -
    -
    - - -

    - - - - - The tragic situation of the Land of Fires and its inhabitants - - - - - - -

    - - - - - -
    - - - - +CULT -06-02-2017 + +
    - - - - +
    + + +
    +
    -Commission + Julie WARD +
    - - - - - -
    - - - - - - - - - - - - - - -
    - +
    - - - - - - - - - - - -
    -

    - - - - -
    -
    - - - - - -
    - See all -
    - -
    - - - - - - - - -
    - - - - - - - - -

    Other parliamentary activities

    - - - - - - - - - - - - @@ -4308,64 +2528,2516 @@

    Other parliamentary activities

    +
    +

    - - - - - +
    +
    -
    +
    - - -

    Written explanations of vote

    - - -
    -

    Members can submit a written explanation of their vote in plenary. Rule 194 -

    -
    - -
    - - - - - - - - - - - +
    +
    +

    + OPINION on discharge in respect of the implementation of the general budget of the European Union for the financial year 2017, Section III – Commission and executive agencies -
    - - + +

    + + + + + +
    + + + + + + + + + + +23-01-2019 + + + + + + + + + + + + + + + +CULT_AD(2019)628678 + + + + + + + + + + + + + + + +PE628.678v02-00 + + + + + + + + + + + + + + + + + + + + + + + +CULT + + + + + +
    + + + + + + + + + + + + + + +
    + + + Bogdan Andrzej ZDROJEWSKI + + +
    + + +
    + +
    + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    + +
    + + + + + + + + + +
    +
    + + +

    + + + OPINION on discharge in respect of the implementation of the budget of the Translation Centre for the Bodies of the European Union for the financial year 2017 + + + + +

    + + + + + +
    + + + + + + + + + + +23-01-2019 + + + + + + + + + + + + + + + +CULT_AD(2019)628679 + + + + + + + + + + + + + + + +PE628.679v02-00 + + + + + + + + + + + + + + + + + + + + + + + +CULT + + + + + +
    + + + + + + + + + + + + + + +
    + + + Bogdan Andrzej ZDROJEWSKI + + +
    + + +
    + +
    + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    + + + + + +
    + See all +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + +

    Motions for resolutions

    + + +
    +

    Motions for resolutions are tabled on topical issues, at the request of a committee, a political group or at least 5% of the Members, and voted on in plenary. Rule 132, Rule 136, Rule 139, Rule 144. +

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

    + + + + + JOINT MOTION FOR A RESOLUTION on the human rights situation in Kazakhstan + + + + + + +

    + + + + + +
    + + + + + + + + + + +13-03-2019 + + + + + + + + + + + + + + + +RC-B8-0204/2019 + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    + +
    + + + + + + + + + +
    +
    + + +

    + + + + + JOINT MOTION FOR A RESOLUTION on Iran, notably the case of human rights defenders + + + + + + +

    + + + + + +
    + + + + + + + + + + +13-03-2019 + + + + + + + + + + + + + + + +RC-B8-0186/2019 + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    + +
    + + + + + + + + + +
    +
    + + +

    + + + + + JOINT MOTION FOR A RESOLUTION on the situation of human rights in Guatemala + + + + + + +

    + + + + + +
    + + + + + + + + + + +13-03-2019 + + + + + + + + + + + + + + + +RC-B8-0182/2019 + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    + + + + + +
    + See all +
    + +
    + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + +

    Oral questions

    + + +
    +

    Questions for oral answer with debate, addressed to the European Commission, the Council or the Vice-President of the Commission/High Representative of the Union can be tabled by a committee, a political group or at least 5% of Parliament’s members. Rule 136 +

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

    + + + + + Corporate Social Responsibility + + + + + + +

    + + + + + +
    + + + + + + + + + + +01-03-2018 + + + + + + + + + + + + + + + +O-000026/2018 + + + + + + + + + + + + + + + +Commission + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    + +
    + + + + + + + + + +
    +
    + + +

    + + + + + Investigation in the wake of the Dieselgate 2.0 scandal + + + + + + +

    + + + + + +
    + + + + + + + + + + +02-02-2018 + + + + + + + + + + + + + + + +O-000013/2018 + + + + + + + + + + + + + + + +Commission + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    + +
    + + + + + + + + + +
    +
    + + +

    + + + + + Major interpellation - Coordinated efforts at EU level to increase vaccination coverage + + + + + + +

    + + + + + +
    + + + + + + + + + + +15-09-2017 + + + + + + + + + + + + + + + +O-000074/2017 + + + + + + + + + + + + + + + +Commission + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    + + + + + +
    + See all +
    + +
    + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + +

    Major interpellations

    + + +
    +

    Major interpellations for written answer with debate, addressed to the European Commission, the Council or the Vice-President of the Commission/High Representative of the Union, may be tabled by a committee, a political group or at least 5% of Parliament’s component Members. Rule 139, Annex III +

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

    + + + + + Coordinated efforts at EU level to increase vaccination coverage + + + + + + +

    + + + + + +
    + + + + + + + + + + +15-09-2017 + + + + + + + + + + + + + + + +G-000010/2017 + + + + + + + + + + + + + + + +Commission + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    + +
    + + + + + + + + + +
    +
    + + +

    + + + + + The tragic situation of the Land of Fires and its inhabitants + + + + + + +

    + + + + + +
    + + + + + + + + + + +06-02-2017 + + + + + + + + + + + + + + + +G-000002/2017 + + + + + + + + + + + + + + + +Commission + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    + + + + + +
    + See all +
    + +
    + + + + + + + + +
    + + + + + + + + + +

    Other parliamentary activities

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

    Written explanations of vote

    + + +
    +

    Members can submit a written explanation of their vote in plenary. Rule 194 +

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

    + + + Quality of water intended for human consumption (A8-0288/2018 - Michel Dantin) + + + IT + + + +

    + + + + + +
    + + + + + + + + + + +28-03-2019 + + + + + + + + + + +
    + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +

    Si trattava di un voto per fissare la posizione del Parlamento in vista dei futuri negoziati riguardanti questa assai importante direttiva. Poiché non si sono prese in considerazione in maniera soddisfacente le richieste dell'iniziativa dei cittadini europei Right2Water, né si è registrato alcun miglioramento sulle PFAS, ho votato contro. +

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

    + + + Increasing the efficiency of restructuring, insolvency and discharge procedures (A8-0269/2018 - Angelika Niebler) + + + IT + + + +

    + + + + + +
    + + + + + + + + + + +28-03-2019 + + + + + + + + + + +
    + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +

    Non avendo riscontrato particolari criticità in relazione a tale atto legislativo il mio voto è stato positivo. +

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

    + + + Exercise of copyright and related rights applicable to certain online transmissions and retransmissions of television and radio programmes (A8-0378/2017 - Pavel Svoboda) + + + IT + + + +

    + + + + + +
    + + + + + + + + + + +28-03-2019 + + + + + + + + + + +
    + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +

    Si trattava di un voto volto a confermare l'accordo raggiunto in trilogo. Pur non essendo totalmente soddisfatti dell'accordo, questo nondimeno rappresenta un piccolo miglioramento dello status quo e pertanto ho votato a favore. +

    +
    + +
    +
    + + + + + + + +
    +
    + + + + + +
    + See all +
    + +
    + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + +

    Written questions

    + + +
    +

    Members can submit a specific number of questions to the President of the European Council, the Council, the Commission and the Vice-President of the Commission/High Representative of the Union, for written answer. Rule 138, Annex III +

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

    + + + + + VP/HR - New penal code in Brunei Darussalam + + + + + + +

    + + + + + +
    + + + + + + + + + + +17-04-2019 + + + + + + + + + + + + + + + +E-001956/2019 + + + + + + + + + + + + + + + +Commission + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    + +
    + + + + + + + + + +
    +
    + + +

    + + + + + Amendment of Directive 91/676/EEC, better known as the Nitrates Directive + + + + + + +

    + + + + + +
    + + + + + + + + + + +10-04-2019 + + + + + + + + + + + + + + + +E-001765/2019 + + + + + + + + + + + + + + + +Commission + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    +
    - - + + @@ -4375,94 +5047,119 @@

    Written explanations of vote

    - - -

    - - - Quality of water intended for human consumption (A8-0288/2018 - Michel Dantin) - - - IT - - - + + +

    + + + + + Impact of conformity factors on air quality policies + + + + + +

    - - - - - + + + + +
    - - - -28-03-2019 + + + +08-04-2019 + + + + + + + + + + + + + + + +E-001713/2019 + + + + + + + + + + + + + + + +Commission + + + - - - - +
    - - - - - - - - - - - - - + + + + + + + + + + + + + + +
    - +
    - - - - - - - - - - - -
    -

    Si trattava di un voto per fissare la posizione del Parlamento in vista dei futuri negoziati riguardanti questa assai importante direttiva. Poiché non si sono prese in considerazione in maniera soddisfacente le richieste dell'iniziativa dei cittadini europei Right2Water, né si è registrato alcun miglioramento sulle PFAS, ho votato contro. -

    -
    - -
    -
    - - - - -
    -
    - -
    - - @@ -4470,96 +5167,28 @@

    -
    -
    - - -

    - - - Increasing the efficiency of restructuring, insolvency and discharge procedures (A8-0269/2018 - Angelika Niebler) - - - IT - - - -

    - - - - - -
    - - - - +
    +
    -28-03-2019 +
    +
    - - - - - -

    - - - - - - - - - - - - - -
    - -
    - - - - - - - - - - - -
    -

    Non avendo riscontrato particolari criticità in relazione a tale atto legislativo il mio voto è stato positivo. -

    -
    - -
    -
    +
    + See all +
    - - - - -
    - - -
    - - +
    @@ -4567,122 +5196,21 @@

    -
    -
    - - -

    - - - Exercise of copyright and related rights applicable to certain online transmissions and retransmissions of television and radio programmes (A8-0378/2017 - Pavel Svoboda) - - - IT - - - -

    - - - - - -
    - - - - +
    -28-03-2019 - - - - - -
    - - - - - - - - - - - - - -
    - -
    - - - - - - - - - - - -
    -

    Si trattava di un voto volto a confermare l'accordo raggiunto in trilogo. Pur non essendo totalmente soddisfatti dell'accordo, questo nondimeno rappresenta un piccolo miglioramento dello status quo e pertanto ho votato a favore. -

    -
    - -
    - - - - - -
    - - - - - - -
    - See all -
    - - - - - - - - - - - - - - - - - - - - - - @@ -4696,43 +5224,24 @@

    - - - - - -
    - - -

    Written questions

    - - -
    -

    Members can submit a specific number of questions to the President of the European Council, the Council, the Commission and the Vice-President of the Commission/High Representative of the Union, for written answer. Rule 138, Annex III -

    -
    - -
    - - - - - - - - - - +
    - +

    Questions to the ECB and concerning the SSM and the SRM

    + + +
    +

    Members can put questions for written reply to the ECB and questions concerning the Single Supervisory Mechanism and the Single Resolution Mechanism. Such questions are first submitted to the Chair of the responsible committee.Rule 140, Rule 141, Annex III +

    +
    +
    @@ -4742,157 +5251,67 @@

    Written questions

    -
    - - -
    - - + +
    -
    -
    - - -

    - - - - - VP/HR - New penal code in Brunei Darussalam - - - - - - -

    - - - - - -
    - - - - -17-04-2019 - - - - -E-001956/2019 - - - - -Commission +
    +

    Answers to questions to the ECB and concerning the SSM and the SRM

    - - - - - +
    +

    Reply to members’ questions to the ECB and questions concerning the Single Supervisory Mechanism and the Single Resolution Mechanism. Rule 140, Rule 141, Annex III +

    - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - - - - -
    -
    +
    - - - - -
    -
    - -
    - - @@ -4900,144 +5319,67 @@

    -
    -
    - - -

    - - - - - Amendment of Directive 91/676/EEC, better known as the Nitrates Directive - - - - - - -

    - - - - - -
    - - - - + + +
    -10-04-2019 - - - - -E-001765/2019 - - - - -Commission - - - - - + +
    + + + +

    Individual motions for resolutions

    + + +
    +

    Any Member may table a motion for resolution on a matter falling within the spheres of activity of the EU. Admissible motions are referred to the committee responsible, which shall decide what procedure is to be followed. Rule 143 +

    - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - - - - -
    -
    +
    - - - - -
    -
    - -
    - - @@ -5045,176 +5387,72 @@

    -
    -
    - - -

    - - - - - Impact of conformity factors on air quality policies - - - - - - -

    - - - - - -
    - - - - -08-04-2019 - - - - -E-001713/2019 +
    +
    - - - - -Commission + - -
    - - - - - - - - - - - -
    -
    + MOTION FOR A RESOLUTION on universal digital identity: a fundamental right for all European citizens - - - - -
    -
    - - - - - -
    - See all -
    - -
    - - - - - - - - -
    - - - - - - - - - - - + + +

    +
    + + + + + + + + + + +02-04-2019 + + @@ -5222,63 +5460,13 @@

    - - - - - -
    - - -

    Questions to the ECB and concerning the SSM and the SRM

    - - -
    -

    Members can put questions for written reply to the ECB and questions concerning the Single Supervisory Mechanism and the Single Resolution Mechanism. Such questions are first submitted to the Chair of the responsible committee.Rule 140, Rule 141, Annex III -

    -
    - -
    - - - - - - - - - - - -
    - - - - - - - - - - - - - +B8-0236/2019 @@ -5287,112 +5475,48 @@

    Questions to the ECB and concerning the SSM and the SR + +

    - - - - - -
    - - -

    Answers to questions to the ECB and concerning the SSM and the SRM

    - - -
    -

    Reply to members’ questions to the ECB and questions concerning the Single Supervisory Mechanism and the Single Resolution Mechanism. Rule 140, Rule 141, Annex III -

    -
    - -
    - - - - - - - - - - - -
    - - - - - - - - - - - - - + - - - - - -
    +
    - - -

    Individual motions for resolutions

    - - -
    -

    Any Member may table a motion for resolution on a matter falling within the spheres of activity of the EU. Admissible motions are referred to the committee responsible, which shall decide what procedure is to be followed. Rule 143 -

    -
    - -
    - - - - - - - - - - +
    - @@ -5400,16 +5524,21 @@

    Individual motions for resolutions

    +
    +
    -
    - - + + + +
    +
    +
    - - + + @@ -5419,126 +5548,126 @@

    Individual motions for resolutions

    - - -

    - - - - - MOTION FOR A RESOLUTION on universal digital identity: a fundamental right for all European citizens - - - - + + +

    + + + + + MOTION FOR A RESOLUTION on the Yulin festival + + + + - +

    - - - - - + + + + +
    - - - -02-04-2019 + + + +30-06-2017 + - - - - -B8-0236/2019 + + + +B8-0453/2017 + + + - - - - +
    - - - - - - - - - + + + + + + + + + - - - - - + + + + +

    - +
    - - - - - - - - - - - -
    + + + + + + + + + + + +
    - - - - -
    -

    - + + + + +
    +
    +
    - - + + @@ -5548,126 +5677,103 @@

    - - -

    - - - - - MOTION FOR A RESOLUTION on the Yulin festival - - - - + + +

    + + + + + MOTION FOR A RESOLUTION on the revision of the provisions concerning old-age pensions for Members of the European Parliament + + + + - +

    - - - - - + + + + +
    - - - -30-06-2017 + + + +01-06-2017 + + + + - - - - -B8-0453/2017 +B8-0394/2017 + + + - - - - +
    - - - - - - - - - + + + + + + + + + - - - - - + + + + +

    - +
    - - - - - - - - - - - -
    -
    - - - - -
    -

    - -
    - - @@ -5675,154 +5781,40 @@

    - - - - - +
    + See all +
    +

    -B8-0394/2017 - - - - - -
    - - - - - - - - - - - - - - - -
    - -
    - - - - - - - - - - - -
    - - - - -
    - - - - - - -
    - See all -
    - - - - - - - - - - - - - - - - - - - - - - @@ -5836,41 +5828,49 @@

    - - - - - + + + + + + + + + + + + +
    - - + +

    Written declarations (up to 16 January 2017)

    - - + +
    -

    **This instrument no longer exists since 16 January 2017**. A written declaration was an initiative on a matter falling within the EU’s competence. It could be co-signed by Members within a 3 month period. -

    +

    **This instrument no longer exists since 16 January 2017**. A written declaration was an initiative on a matter falling within the EU’s competence. It could be co-signed by Members within a 3 month period. +

    - +
    - - - - - - - - - - - + + + + + + + + + + + @@ -5883,11 +5883,11 @@

    Written declarations (up to 16 January 2017)

    - - + +
    - - + + @@ -5897,59 +5897,59 @@

    Written declarations (up to 16 January 2017)

    - - -

    - - - Written declaration on reconsidering whether to build the new Lyon-Turin high-speed rail line - - - - + + +

    + + + Written declaration on reconsidering whether to build the new Lyon-Turin high-speed rail line + + + +

    - - - - - + + + + +
    - - - -24-10-2016 + + + +24-10-2016 + + + + + + + + - - - - +P8_DCL(2016)0111 -P8_DCL(2016)0111 - - - - @@ -5962,146 +5962,146 @@

    - - - + + + - +

    - - - - - - - - - + + + + + + + + + - - - - + + + +
    - - + + Marco VALLI - - - + + + Daniela AIUTO - - - + + + Tiziana BEGHIN - - - + + + Eleonora EVI - - - + + + Curzio MALTESE - - - + + + Eleonora FORENZA - - - + + + Barbara SPINELLI - - - + + + Karima DELLI - - - + + + Michèle RIVASI - - - + + + Isabella ADINOLFI - - - + + + Marco AFFRONTE - - - + + + Laura AGEA - - - + + + David BORRELLI - - - + + + Fabio Massimo CASTALDO - - - + + + Ignazio CORRAO - - - + + + Rosa D'AMATO - - - + + + Laura FERRARA - - - + + + Giulia MOI - - - + + + Piernicola PEDICINI - - - + + + Dario TAMBURRANO - - - + + + Marco ZANNI - - - + + + Marco ZULLO - - + +
    - - + +
    - +
    - - - - - + + + + +
    - Date opened : + Date opened : @@ -6115,9 +6115,9 @@

    - +
    - Lapse date : + Lapse date : @@ -6131,9 +6131,9 @@

    - +
    - Number of signatories : + Number of signatories : @@ -6147,30 +6147,30 @@

    - - - - - - - - - -
    + + + + + + + + + +
    - - - - -
    -
    - + + + + +
    +
    +
    - - + + @@ -6180,27 +6180,27 @@

    - - -

    - - - Written declaration on promoting European culture - - - - + + +

    + + + Written declaration on promoting European culture + + + +

    - - - - - + + + + +
    - - - + + + @@ -6213,10 +6213,10 @@

    - - - - + + + + @@ -6229,10 +6229,10 @@

    - - - - + + + + @@ -6245,98 +6245,98 @@

    - - - + + + - +

    - - - - - - - - - + + + + + + + + + - - - - + + + +
    - - + + Maite PAGAZAURTUNDÚA - - - + + + María Teresa GIMÉNEZ BARBAT - - - + + + Esteban GONZÁLEZ PONS - - - + + + José BLANCO LÓPEZ - - - + + + Iratxe GARCÍA PÉREZ - - - + + + Santiago FISAS AYXELÀ - - - + + + Yana TOOM - - - + + + Eider GARDIAZABAL RUBIAL - - - + + + Fabio Massimo CASTALDO - - - + + + Isabella ADINOLFI - - + +
    - - + +
    - +
    - - - - - + + + + +
    - Date opened : + Date opened : @@ -6350,9 +6350,9 @@

    - +
    - Lapse date : + Lapse date : @@ -6366,9 +6366,9 @@

    - +
    - Number of signatories : + Number of signatories : @@ -6382,29 +6382,29 @@

    - - - - - - - - - -
    + + + + + + + + + +

    - - - - -
    - + + + + +
    +
    - + @@ -6415,27 +6415,27 @@

    - - -

    - - - Written declaration on the protection of European seas from chemical and conventional weapons - - - - + + +

    + + + Written declaration on the protection of European seas from chemical and conventional weapons + + + +

    - - - - - + + + + +
    - - - + + + @@ -6448,10 +6448,10 @@

    - - - - + + + + @@ -6464,10 +6464,10 @@

    - - - - + + + + @@ -6480,114 +6480,114 @@

    - - - + + + - +

    - - - - - - - - - + + + + + + + + + - - - - + + + +
    - - + + Ivan JAKOVČIĆ - - - + + + Jozo RADOŠ - - - + + + Ruža TOMAŠIĆ - - - + + + Antanas GUOGA - - - + + + Dario TAMBURRANO - - - + + + Rosa D'AMATO - - - + + + Fredrick FEDERLEY - - - + + + Isabella ADINOLFI - - - + + + Enrico GASBARRA - - - + + + Igor ŠOLTES - - - + + + Davor ŠKRLEC - - - + + + Kaja KALLAS - - - + + + Reinhard BÜTIKOFER - - - + + + Franc BOGOVIČ - - + +
    - - + +
    - +
    - - - - - + + + + +
    - Date opened : + Date opened : @@ -6601,9 +6601,9 @@

    - +
    - Lapse date : + Lapse date : @@ -6617,9 +6617,9 @@

    - +
    - Number of signatories : + Number of signatories : @@ -6633,52 +6633,52 @@

    - - - - - - - - + + + + + + + + -
    +

    - - -
    - - - - - - + + +
    + + + + + + - + - - - - - - - - + + + + + + + + - - - - - - - + + + + + + + @@ -6704,10 +6704,10 @@

    Declarations

    - + @@ -6764,7 +6764,7 @@

    Declaration of financial interests

    - + @@ -6824,7 +6824,7 @@

    Declaration of financial interests

  • - @@ -6888,7 +6888,7 @@

    Declaration of financial interests

  • - @@ -6973,7 +6973,7 @@

    Declaration of financial interests

  • - + History of parliamentary service @@ -7538,4 +7538,4 @@

    European Parliament

    -
    \ No newline at end of file +
    diff --git a/scrapers/tests/data/member_groups_adinolfi_term_8.html b/backend/tests/scrapers/data/members/member_groups_adinolfi_term_9.html similarity index 100% rename from scrapers/tests/data/member_groups_adinolfi_term_8.html rename to backend/tests/scrapers/data/members/member_groups_adinolfi_term_9.html diff --git a/scrapers/tests/data/member_groups_sonneborn_term_8.html b/backend/tests/scrapers/data/members/member_groups_sonneborn_term_8.html similarity index 100% rename from scrapers/tests/data/member_groups_sonneborn_term_8.html rename to backend/tests/scrapers/data/members/member_groups_sonneborn_term_8.html diff --git a/scrapers/tests/data/member_groups_sonneborn_term_9.html b/backend/tests/scrapers/data/members/member_groups_sonneborn_term_9.html similarity index 100% rename from scrapers/tests/data/member_groups_sonneborn_term_9.html rename to backend/tests/scrapers/data/members/member_groups_sonneborn_term_9.html diff --git a/scrapers/tests/data/member_info_adinolfi_home.html b/backend/tests/scrapers/data/members/member_info_adinolfi_home.html similarity index 100% rename from scrapers/tests/data/member_info_adinolfi_home.html rename to backend/tests/scrapers/data/members/member_info_adinolfi_home.html diff --git a/scrapers/tests/data/member_info_sonneborn_home.html b/backend/tests/scrapers/data/members/member_info_sonneborn_home.html similarity index 100% rename from scrapers/tests/data/member_info_sonneborn_home.html rename to backend/tests/scrapers/data/members/member_info_sonneborn_home.html diff --git a/scrapers/tests/data/member_info_weber_home.html b/backend/tests/scrapers/data/members/member_info_weber_home.html similarity index 100% rename from scrapers/tests/data/member_info_weber_home.html rename to backend/tests/scrapers/data/members/member_info_weber_home.html diff --git a/scrapers/tests/data/members_directory_term_8.xml b/backend/tests/scrapers/data/members/members_directory_term_8.xml similarity index 100% rename from scrapers/tests/data/members_directory_term_8.xml rename to backend/tests/scrapers/data/members/members_directory_term_8.xml diff --git a/scrapers/tests/data/members_directory_term_9.xml b/backend/tests/scrapers/data/members/members_directory_term_9.xml similarity index 100% rename from scrapers/tests/data/members_directory_term_9.xml rename to backend/tests/scrapers/data/members/members_directory_term_9.xml diff --git a/backend/tests/scrapers/data/votes/eurlex-document_p9-a-2021-0270.html b/backend/tests/scrapers/data/votes/eurlex-document_p9-a-2021-0270.html new file mode 100644 index 000000000..f8f93afb4 --- /dev/null +++ b/backend/tests/scrapers/data/votes/eurlex-document_p9-a-2021-0270.html @@ -0,0 +1,3446 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + EUR-Lex - P9_A(2021)0270 - EN - EUR-Lex + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Feedback +
    + +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Back to EUR-Lex homepage +
    + + + +

    EUR-Lex Access to European Union law

    + + + + + + + + + + + + +
    + +
    +
    + Back to EUR-Lex homepage +
    +
    +

    + This document is an excerpt from the EUR-Lex website +

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

    Document P9_A(2021)0270

    +
    + +
    +
    + + + + + + + + + + + + + + + +
      + + + +
    • + +
    • +
    + + +
    +
    + + + +
    + + + + + + + + + + + + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    +
    +
    + + +

    SECOND REPORT on discharge in respect of the implementation of the budget of the European Border and Coast Guard Agency for the financial year 2019 (2020/2167(DEC)) Committee on Budgetary Control Rapporteur: Ryszard Czarnecki

    + +

    A/2021/0270

    +
    +
    + + +
    +
    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    + +
    +
    + +
    +
    +
    + +
    + +
    +
    +
    +
    +
    + Language +
    + +
    + +
    +
    +
    +
    +
    + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + +
    +
    + + +
    + + +
    + + + +
    + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/tests/scrapers/data/votes/eurlex-document_p9-a-2023-0369.html b/backend/tests/scrapers/data/votes/eurlex-document_p9-a-2023-0369.html new file mode 100644 index 000000000..8194294d8 --- /dev/null +++ b/backend/tests/scrapers/data/votes/eurlex-document_p9-a-2023-0369.html @@ -0,0 +1,3464 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + EUR-Lex - P9_A(2023)0369 - EN - EUR-Lex + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Feedback +
    + +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Back to EUR-Lex homepage +
    + + + +

    EUR-Lex Access to European Union law

    + + + + + + + + + + + + +
    + +
    +
    + Back to EUR-Lex homepage +
    +
    +

    + This document is an excerpt from the EUR-Lex website +

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

    Document P9_A(2023)0369

    +
    + +
    +
    + + + + + + + + + + + + + + + +
      + + + +
    • + +
    • +
    + + +
    +
    + + + +
    + + + + + + + + + + + + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    +
    +
    + + +

    RECOMMENDATION on the draft Council decision on the conclusion of the Agreement between the European Union and Montenegro on operational activities carried out by the European Border and Coast Guard Agency in Montenegro (08353/2023 - C9-0177/2023 - 2023/0102(NLE)) Committee on Civil Liberties, Justice and Home Affairs Rapporteur: Lena Düpont

    + +

    A/2023/0369

    +
    +
    + + +
    +
    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    + +
    +
    + +
    +
    +
    + +
    + +
    +
    +
    +
    +
    + Language +
    + +
    + +
    +
    +
    +
    +
    + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + +
    +
    + + +
    + + +
    + + + +
    + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/tests/scrapers/data/votes/eurlex-procedure_2021-106.html b/backend/tests/scrapers/data/votes/eurlex-procedure_2021-106.html new file mode 100644 index 000000000..9b6857838 --- /dev/null +++ b/backend/tests/scrapers/data/votes/eurlex-procedure_2021-106.html @@ -0,0 +1,3219 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + EUR-Lex - 2021_106 - EN - EUR-Lex + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Back to EUR-Lex homepage +
    + + + +

    EUR-Lex Access to European Union law

    + + + + + + + + + + + + +
    + +
    +
    + Back to EUR-Lex homepage +
    +
    +

    + This document is an excerpt from the EUR-Lex website +

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

    2021/0106/COD

    +
    + +
    +
    + + + + + + + + + + + + + + + +
      + + + +
    • + +
    • +
    + + +
    +
    + + + +
    + + + + + + + + + + + + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + +
    + +
    +
    European Commission
    +
    +
    +
    +
    + +
    +
    Council of the European Union
    +
    +
    +
    +
    + +
    +
    Economic and Social Committee
    +
    +
    +
    +
    + +
    +
    European Committee of the Regions
    +
    +
    +
    +
    + +
    +
    European Central Bank
    +
    +
    +
    +
    + +
    +
    European Parliament
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +

    Follow the steps of procedure 2021/0106/COD

    +
    +
    +
    +
    +
    +
    +
    +
    +
    /
    +
    +
    +
    +
    +

    First reading

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    13/03/2024
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    18/03/2024
    +
    + +
    +
    + +
    06/12/2022
    +
    + +
    +
    + +
    22/04/2022
    +
    + +
    +
    + +
    18/10/2021
    +
    + +
    +
    + +
    12/10/2021
    +
    + +
    +
    + +
    13/08/2021
    +
    + +
    +
    + +
    15/06/2021
    +
    + +
    +
    + +
    14/06/2021
    +
    + +
    +
    + +
    23/04/2021
    +
    + +
    +
    +
    +
    +
    +
    +

    Opinions

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    02/12/2021
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    29/12/2021
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    22/09/2021
    +
    + +
    +
    +
    +
    +
    +
    +

    Proposal

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    22/04/2021
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + +
    + + +
    + + +
    + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/tests/scrapers/data/votes/eurlex-procedure_2023-102.html b/backend/tests/scrapers/data/votes/eurlex-procedure_2023-102.html new file mode 100644 index 000000000..13b4f23f0 --- /dev/null +++ b/backend/tests/scrapers/data/votes/eurlex-procedure_2023-102.html @@ -0,0 +1,2940 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + EUR-Lex - 2023_102 - EN - EUR-Lex + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Back to EUR-Lex homepage +
    + + + +

    EUR-Lex Access to European Union law

    + + + + + + + + + + + + +
    + +
    +
    + Back to EUR-Lex homepage +
    +
    +

    + This document is an excerpt from the EUR-Lex website +

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

    2023/0102/NLE

    +
    + +
    +
    + + + + + + + + + + + + + + + +
      + + + +
    • + +
    • +
    + + +
    +
    + + + +
    + + + + + + + + + + + + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + +
    + +
    +
    European Commission
    +
    +
    +
    +
    + +
    +
    Council of the European Union
    +
    +
    +
    +
    + +
    +
    European Parliament
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +

    Follow the steps of procedure 2023/0102/NLE

    +
    +
    +
    +
    +
    +
    +
    +
    /
    +
    + +
    +
    +
    +
    +

    Adoption

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    Adoption of the legislative act
    +
    + +
    04/12/2023
    +
    + +
    +
    +
    +
    +
    +
    +

    Negotiation

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    28/11/2023
    +
    + +
    +
    + +
    02/10/2023
    +
    + +
    +
    + +
    08/05/2023
    +
    + +
    +
    + +
    05/05/2023
    +
    + +
    +
    + +
    02/05/2023
    +
    + +
    +
    + +
    05/04/2023
    +
    + +
    +
    +
    +
    +
    +
    +

    Opinions

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    22/11/2023
    +
    + +
    +
    +
    +
    +
    +
    +

    Proposal

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    05/04/2023
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + +
    + + +
    + + +
    + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scrapers/tests/data/summary_id_ficheprocedure_a9-0115-2021.html b/backend/tests/scrapers/data/votes/procedure_ficheprocedure-2022-2201-ini.html similarity index 79% rename from scrapers/tests/data/summary_id_ficheprocedure_a9-0115-2021.html rename to backend/tests/scrapers/data/votes/procedure_ficheprocedure-2022-2201-ini.html index e72cd2c12..23eccd29e 100644 --- a/scrapers/tests/data/summary_id_ficheprocedure_a9-0115-2021.html +++ b/backend/tests/scrapers/data/votes/procedure_ficheprocedure-2022-2201-ini.html @@ -2,12 +2,12 @@ - Procedure File: 2020/2042(INI) | Legislative Observatory | European Parliament + Procedure File: 2022/2201(INI) | Legislative Observatory | European Parliament - + @@ -15,18 +15,19 @@ - - + + - + - + + @@ -63,10 +64,13 @@ - - - + + + + @@ -76,10 +80,10 @@ @@ -501,6 +508,9 @@
  • +
  • + Transparency  +
  • @@ -534,7 +544,7 @@

    Document reference

    - 2020/2042(INI) + 2022/2201(INI)  
    @@ -548,7 +558,7 @@

    Document reference

    @@ -699,7 +722,7 @@

    Document reference

    +
    + + + + + + + + + + +
    +
    + +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    + + + Transparency + +   +
    +
    +
    +
    +
    + +
    +
    + + Meetings with interest representatives published in line with the Rules of Procedure + +
    +
    +
    +
    + +
    + + +
    +
    +
    +
    + +
      +
    • +
      + Rapporteurs, Shadow Rapporteurs and Committee Chairs  +
      +
      +
      +
      - +
      - Committee opinion - + VON CRAMON-TAUBADEL Viola +
      - -
      -
      - - LIBE + +
      +
      + + Rapporteur -  
      -
      +
      - -
      - -
      +
      - 19/10/2020 + 20/03/2023
      - -
      + +
      - - EP - + + Platforma Civikos
      +
      - -
      -
      -
      -
      -   -
      -
      -
      -
      - -
      +
      - +
      - Committee report tabled for plenary, single reading - + SCHIEDER Andreas +
      - -
      -
      - -   - -   -
      -
      - - +
      - - - A9-0115/2021 - -   - - + + Shadow rapporteur + +
      + + +
      +
      + + +   +
      -
      +
      - 07/04/2021 + 18/01/2023
      - -
      + +
      - - EP - + + Cabinet to the First Deputy Prime Minister of the Republic of Kosovo
      +
      - -
      -
      -
      - -
      -
      -
      -
      +
      +
      +
    • +
    • +
      + Other Members 
      +
      +
      +
      + + +
      +
      + + STRIK Tineke + +
      +
      + + +
      +
      + 28/02/2023 +
      +
      + + +
      +
      + + representative of the government of Kosovo
      +
      +
      +
      +
      +
      +
    • - -
    +
    - - - - - - - - - @@ -2367,7 +2131,7 @@

  • @@ -2414,8 +2178,8 @@
  • Around plenary 
  • Questions and declarations 
  • -
  • Ordinary legislative procedure 
  • +
  • Legislative texts adopted 
  • Calendar 
  • @@ -2595,17 +2359,18 @@